Skip to content

Commit 7adb654

Browse files
authored
Merge pull request #2633 from plotly/master-2.13.0
Master 2.13.0
2 parents d131833 + f3324ce commit 7adb654

28 files changed

+190
-115
lines changed

CHANGELOG.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,15 @@
22
All notable changes to `dash` will be documented in this file.
33
This project adheres to [Semantic Versioning](https://semver.org/).
44

5+
## [2.13.0] 2023-08-28
6+
## Changed
7+
8+
- [#2610](https://github.com/plotly/dash/pull/2610) Load plotly.js bundle/version from plotly.py
9+
10+
## Added
11+
12+
- [#2630](https://github.com/plotly/dash/pull/2630) New layout hooks in the renderer
13+
514

615
## [2.12.1] - 2023-08-16
716

components/dash-core-components/dash_core_components_base/__init__.py

Lines changed: 1 addition & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import json
22
import os as _os
33
import sys as _sys
4+
45
import dash as _dash
56

67
from ._imports_ import * # noqa: F401, F403, E402
@@ -121,33 +122,6 @@
121122
"namespace": "dash",
122123
"dynamic": True,
123124
},
124-
{
125-
"relative_package_path": "dcc/plotly.min.js",
126-
"external_url": (
127-
"https://unpkg.com/dash-core-components@{}"
128-
"/dash_core_components/plotly.min.js"
129-
).format(__version__),
130-
"namespace": "dash",
131-
"async": "eager",
132-
},
133-
{
134-
"relative_package_path": "dcc/async-plotlyjs.js",
135-
"external_url": (
136-
"https://unpkg.com/dash-core-components@{}"
137-
"/dash_core_components/async-plotlyjs.js"
138-
).format(__version__),
139-
"namespace": "dash",
140-
"async": "lazy",
141-
},
142-
{
143-
"relative_package_path": "dcc/async-plotlyjs.js.map",
144-
"external_url": (
145-
"https://unpkg.com/dash-core-components@{}"
146-
"/dash_core_components/async-plotlyjs.js.map"
147-
).format(__version__),
148-
"namespace": "dash",
149-
"dynamic": True,
150-
},
151125
]
152126
)
153127

components/dash-core-components/package-lock.json

Lines changed: 2 additions & 13 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

components/dash-core-components/package.json

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "dash-core-components",
3-
"version": "2.11.1",
3+
"version": "2.12.0",
44
"description": "Core component suite for Dash",
55
"repository": {
66
"type": "git",
@@ -23,7 +23,6 @@
2323
"test": "run-s -c lint test:intg test:pyimport",
2424
"test:intg": "pytest --nopercyfinalize --headless tests/integration ",
2525
"test:pyimport": "python -m unittest tests/test_dash_import.py",
26-
"prebuild:js": "cp node_modules/plotly.js-dist-min/plotly.min.js dash_core_components_base/plotly.min.js",
2726
"build:js": "webpack --mode production",
2827
"build:backends": "dash-generate-components ./src/components dash_core_components -p package-info.json && cp dash_core_components_base/** dash_core_components/ && dash-generate-components ./src/components dash_core_components -p package-info.json -k RangeSlider,Slider,Dropdown,RadioItems,Checklist,DatePickerSingle,DatePickerRange,Input,Link --r-prefix 'dcc' --r-suggests 'dash,dashHtmlComponents,jsonlite,plotly' --jl-prefix 'dcc' && black dash_core_components",
2928
"build": "run-s prepublishOnly build:js build:backends",
@@ -49,7 +48,6 @@
4948
"mathjax": "^3.2.2",
5049
"moment": "^2.29.4",
5150
"node-polyfill-webpack-plugin": "^2.0.1",
52-
"plotly.js-dist-min": "2.25.2",
5351
"prop-types": "^15.8.1",
5452
"ramda": "^0.29.0",
5553
"rc-slider": "^9.7.5",
Lines changed: 24 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,25 @@
1-
export default () => Promise.resolve(window.Plotly ||
2-
import(/* webpackChunkName: "plotlyjs" */ 'plotly.js-dist-min').then(({ default: Plotly }) => {
3-
window.Plotly = Plotly;
4-
return Plotly;
5-
}));
1+
export default () => {
2+
return Promise.resolve(window.Plotly || new Promise((resolve, reject) => {
3+
/* eslint-disable prefer-const */
4+
let timeoutId;
5+
6+
const element = document.createElement('script');
7+
element.src = window._dashPlotlyJSURL;
8+
element.async = true;
9+
element.onload = () => {
10+
clearTimeout(timeoutId);
11+
resolve();
12+
};
13+
element.onerror = (error) => {
14+
clearTimeout(timeoutId);
15+
reject(error);
16+
};
617

18+
timeoutId = setTimeout(() => {
19+
element.src = '';
20+
reject(new Error(`plotly.js did not load after 30 seconds`));
21+
}, 3 * 10 * 1000);
22+
23+
document.querySelector('body').appendChild(element);
24+
}));
25+
}

components/dash-core-components/tests/integration/graph/test_graph_varia.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,8 @@ def show_relayout_data(data):
128128

129129
dash_dcc.start_server(app)
130130

131+
time.sleep(1)
132+
131133
# use this opportunity to test restyleData, since there are multiple
132134
# traces on this graph
133135
legendToggle = dash_dcc.find_element(

components/dash-core-components/tests/integration/tooltip/test_tooltip.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,8 @@ def update_tooltip_content(hoverData):
8080
assert 175 < coords[0] < 185, "x0 is about 200 minus half a marker size"
8181
assert 175 < coords[1] < 185, "y0 is about 200 minus half a marker size"
8282

83+
elem = dash_dcc.find_element("#graph .nsewdrag")
84+
8385
ActionChains(dash_dcc.driver).move_to_element_with_offset(
8486
elem, 5, elem.size["height"] - 5
8587
).perform()

dash/_dash_renderer.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import os
22

3-
__version__ = "1.15.5"
3+
__version__ = "1.16.0"
44

55
_available_react_versions = {"16.14.0", "18.2.0"}
66
_available_reactdom_versions = {"16.14.0", "18.2.0"}
@@ -64,7 +64,7 @@ def _set_react_version(v_react, v_reactdom=None):
6464
{
6565
"relative_package_path": "dash-renderer/build/dash_renderer.min.js",
6666
"dev_package_path": "dash-renderer/build/dash_renderer.dev.js",
67-
"external_url": "https://unpkg.com/dash-renderer@1.15.5"
67+
"external_url": "https://unpkg.com/dash-renderer@1.16.0"
6868
"/build/dash_renderer.min.js",
6969
"namespace": "dash",
7070
},

dash/_utils.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@
1212
import string
1313
from html import escape
1414
from functools import wraps
15+
from typing import Union
16+
from dash.types import RendererHooks
1517

1618
logger = logging.getLogger()
1719

@@ -267,3 +269,11 @@ def coerce_to_list(obj):
267269

268270
def clean_property_name(name: str):
269271
return name.split("@")[0]
272+
273+
274+
def hooks_to_js_object(hooks: Union[RendererHooks, None]) -> str:
275+
if hooks is None:
276+
return ""
277+
hook_str = ",".join(f"{key}: {val}" for key, val in hooks.items())
278+
279+
return f"{{{hook_str}}}"

dash/dash-renderer/build/dash_renderer.dev.js

Lines changed: 24 additions & 2 deletions
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)