From 77c967260de40a71f4f04165acf6430668e40d7c Mon Sep 17 00:00:00 2001 From: Zerline Date: Fri, 24 Jan 2020 21:52:00 +0100 Subject: [PATCH 001/101] New border attributes for layout. --- ipywidgets/widgets/widget_layout.py | 7 +- packages/base/src/widget_layout.ts | 7 +- .../schema/jupyterwidgetmodels.latest.json | 1808 ++++++++++++----- packages/schema/jupyterwidgetmodels.latest.md | 7 +- 4 files changed, 1327 insertions(+), 502 deletions(-) diff --git a/ipywidgets/widgets/widget_layout.py b/ipywidgets/widgets/widget_layout.py index 692bdbb3bb1..4644fd255ac 100644 --- a/ipywidgets/widgets/widget_layout.py +++ b/ipywidgets/widgets/widget_layout.py @@ -38,7 +38,12 @@ class Layout(Widget): align_self = CaselessStrEnum(['auto', 'flex-start', 'flex-end', 'center', 'baseline', 'stretch'] + CSS_PROPERTIES, allow_none=True, help="The align-self CSS attribute.").tag(sync=True) bottom = Unicode(None, allow_none=True, help="The bottom CSS attribute.").tag(sync=True) - border = Unicode(None, allow_none=True, help="The border CSS attribute.").tag(sync=True) + border_collapse = Unicode(None, allow_none=True, help="The border collapse CSS attribute.").tag(sync=True) + border_color = Unicode(None, allow_none=True, help="The border color CSS attribute.").tag(sync=True) + border_image = Unicode(None, allow_none=True, help="The border image CSS attribute.").tag(sync=True) + border_radius = Unicode(None, allow_none=True, help="The border radius CSS attribute.").tag(sync=True) + border_style = Unicode(None, allow_none=True, help="The border style CSS attribute.").tag(sync=True) + border_width = Unicode(None, allow_none=True, help="The border width CSS attribute.").tag(sync=True) display = Unicode(None, allow_none=True, help="The display CSS attribute.").tag(sync=True) flex = Unicode(None, allow_none=True, help="The flex CSS attribute.").tag(sync=True) flex_flow = Unicode(None, allow_none=True, help="The flex-flow CSS attribute.").tag(sync=True) diff --git a/packages/base/src/widget_layout.ts b/packages/base/src/widget_layout.ts index 3676a00865f..94709b42ee9 100644 --- a/packages/base/src/widget_layout.ts +++ b/packages/base/src/widget_layout.ts @@ -12,7 +12,12 @@ const css_properties: Dict = { align_content: null, align_items: null, align_self: null, - border: null, + border_collapse: null, + border_color: null, + border_image: null, + border_radius: null, + border_style: null, + border_width: null, bottom: null, display: null, flex: null, diff --git a/packages/schema/jupyterwidgetmodels.latest.json b/packages/schema/jupyterwidgetmodels.latest.json index d84d7c19f3a..7e9d08cf1fc 100644 --- a/packages/schema/jupyterwidgetmodels.latest.json +++ b/packages/schema/jupyterwidgetmodels.latest.json @@ -8,7 +8,7 @@ "type": "string" }, { - "default": "1.1.0", + "default": "1.2.0", "help": "A semver requirement for namespace version containing the model.", "name": "_model_module_version", "type": "string" @@ -26,7 +26,7 @@ "type": "string" }, { - "default": "1.1.0", + "default": "1.2.0", "help": "", "name": "_view_module_version", "type": "string" @@ -94,8 +94,43 @@ { "allow_none": true, "default": null, - "help": "The border CSS attribute.", - "name": "border", + "help": "The border collapse CSS attribute.", + "name": "border_collapse", + "type": "string" + }, + { + "allow_none": true, + "default": null, + "help": "The border color CSS attribute.", + "name": "border_color", + "type": "string" + }, + { + "allow_none": true, + "default": null, + "help": "The border image CSS attribute.", + "name": "border_image", + "type": "string" + }, + { + "allow_none": true, + "default": null, + "help": "The border radius CSS attribute.", + "name": "border_radius", + "type": "string" + }, + { + "allow_none": true, + "default": null, + "help": "The border style CSS attribute.", + "name": "border_style", + "type": "string" + }, + { + "allow_none": true, + "default": null, + "help": "The border width CSS attribute.", + "name": "border_width", "type": "string" }, { @@ -229,6 +264,21 @@ "name": "justify_content", "type": "string" }, + { + "allow_none": true, + "default": null, + "enum": [ + "flex-start", + "flex-end", + "center", + "inherit", + "initial", + "unset" + ], + "help": "The justify-items CSS attribute.", + "name": "justify_items", + "type": "string" + }, { "allow_none": true, "default": null, @@ -274,56 +324,30 @@ { "allow_none": true, "default": null, - "help": "The order CSS attribute.", - "name": "order", + "enum": ["contain", "cover", "fill", "scale-down", "none"], + "help": "The object-fit CSS attribute.", + "name": "object_fit", "type": "string" }, { "allow_none": true, "default": null, - "enum": [ - "visible", - "hidden", - "scroll", - "auto", - "inherit", - "initial", - "unset" - ], - "help": "The overflow CSS attribute.", - "name": "overflow", + "help": "The object-position CSS attribute.", + "name": "object_position", "type": "string" }, { "allow_none": true, "default": null, - "enum": [ - "visible", - "hidden", - "scroll", - "auto", - "inherit", - "initial", - "unset" - ], - "help": "The overflow-x CSS attribute.", - "name": "overflow_x", + "help": "The order CSS attribute.", + "name": "order", "type": "string" }, { "allow_none": true, "default": null, - "enum": [ - "visible", - "hidden", - "scroll", - "auto", - "inherit", - "initial", - "unset" - ], - "help": "The overflow-y CSS attribute.", - "name": "overflow_y", + "help": "The overflow CSS attribute.", + "name": "overflow", "type": "string" }, { @@ -366,12 +390,12 @@ "model": { "module": "@jupyter-widgets/base", "name": "LayoutModel", - "version": "1.1.0" + "version": "1.2.0" }, "view": { "module": "@jupyter-widgets/base", "name": "LayoutView", - "version": "1.1.0" + "version": "1.2.0" } }, { @@ -392,7 +416,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_model_module_version", "type": "string" @@ -416,7 +440,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_view_module_version", "type": "string" @@ -457,17 +481,31 @@ "help": "The index of the selected page. This is either an integer selecting a particular sub-widget, or None to have no widgets selected.", "name": "selected_index", "type": "int" + }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" } ], "model": { "module": "@jupyter-widgets/controls", "name": "AccordionModel", - "version": "1.4.0" + "version": "1.5.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "AccordionView", - "version": "1.4.0" + "version": "1.5.0" } }, { @@ -488,7 +526,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_model_module_version", "type": "string" @@ -506,7 +544,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_view_module_version", "type": "string" @@ -548,9 +586,23 @@ "name": "loop", "type": "bool" }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" + }, { "default": "b''", - "help": "The media data as a byte string.", + "help": "The media data as a memory view of bytes.", "name": "value", "type": "bytes" } @@ -558,12 +610,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "AudioModel", - "version": "1.4.0" + "version": "1.5.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "AudioView", - "version": "1.4.0" + "version": "1.5.0" } }, { @@ -584,7 +636,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_model_module_version", "type": "string" @@ -602,7 +654,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_view_module_version", "type": "string" @@ -625,13 +677,6 @@ "name": "description", "type": "string" }, - { - "allow_none": true, - "default": null, - "help": "Tooltip for the description (defaults to description).", - "name": "description_tooltip", - "type": "string" - }, { "default": false, "help": "Enable or disable user changes", @@ -671,6 +716,20 @@ "type": "reference", "widget": "DescriptionStyle" }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" + }, { "default": 0.0, "help": "Float value", @@ -681,12 +740,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "BoundedFloatTextModel", - "version": "1.4.0" + "version": "1.5.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "FloatTextView", - "version": "1.4.0" + "version": "1.5.0" } }, { @@ -707,7 +766,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_model_module_version", "type": "string" @@ -725,7 +784,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_view_module_version", "type": "string" @@ -748,13 +807,6 @@ "name": "description", "type": "string" }, - { - "allow_none": true, - "default": null, - "help": "Tooltip for the description (defaults to description).", - "name": "description_tooltip", - "type": "string" - }, { "default": false, "help": "Enable or disable user changes", @@ -793,6 +845,20 @@ "type": "reference", "widget": "DescriptionStyle" }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" + }, { "default": 0, "help": "Int value", @@ -803,12 +869,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "BoundedIntTextModel", - "version": "1.4.0" + "version": "1.5.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "IntTextView", - "version": "1.4.0" + "version": "1.5.0" } }, { @@ -829,7 +895,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_model_module_version", "type": "string" @@ -847,7 +913,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_view_module_version", "type": "string" @@ -881,17 +947,31 @@ "name": "layout", "type": "reference", "widget": "Layout" + }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" } ], "model": { "module": "@jupyter-widgets/controls", "name": "BoxModel", - "version": "1.4.0" + "version": "1.5.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "BoxView", - "version": "1.4.0" + "version": "1.5.0" } }, { @@ -912,7 +992,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_model_module_version", "type": "string" @@ -930,7 +1010,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_view_module_version", "type": "string" @@ -962,7 +1042,7 @@ }, { "default": "", - "help": "Font-awesome icon name, without the 'fa-' prefix.", + "help": "Font-awesome icon names, without the 'fa-' prefix.", "name": "icon", "type": "string" }, @@ -981,8 +1061,16 @@ "widget": "ButtonStyle" }, { - "default": "", - "help": "Tooltip caption of the button.", + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", "name": "tooltip", "type": "string" } @@ -990,12 +1078,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "ButtonModel", - "version": "1.4.0" + "version": "1.5.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "ButtonView", - "version": "1.4.0" + "version": "1.5.0" } }, { @@ -1007,7 +1095,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_model_module_version", "type": "string" @@ -1025,7 +1113,7 @@ "type": "string" }, { - "default": "1.1.0", + "default": "1.2.0", "help": "", "name": "_view_module_version", "type": "string" @@ -1053,12 +1141,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "ButtonStyleModel", - "version": "1.4.0" + "version": "1.5.0" }, "view": { "module": "@jupyter-widgets/base", "name": "StyleView", - "version": "1.1.0" + "version": "1.2.0" } }, { @@ -1079,7 +1167,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_model_module_version", "type": "string" @@ -1097,7 +1185,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_view_module_version", "type": "string" @@ -1114,13 +1202,6 @@ "name": "description", "type": "string" }, - { - "allow_none": true, - "default": null, - "help": "Tooltip for the description (defaults to description).", - "name": "description_tooltip", - "type": "string" - }, { "default": false, "help": "Enable or disable user changes.", @@ -1147,6 +1228,20 @@ "type": "reference", "widget": "DescriptionStyle" }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" + }, { "default": false, "help": "Bool value", @@ -1157,12 +1252,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "CheckboxModel", - "version": "1.4.0" + "version": "1.5.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "CheckboxView", - "version": "1.4.0" + "version": "1.5.0" } }, { @@ -1183,7 +1278,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_model_module_version", "type": "string" @@ -1201,7 +1296,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_view_module_version", "type": "string" @@ -1224,13 +1319,6 @@ "name": "description", "type": "string" }, - { - "allow_none": true, - "default": null, - "help": "Tooltip for the description (defaults to description).", - "name": "description_tooltip", - "type": "string" - }, { "default": false, "help": "Enable or disable user changes.", @@ -1251,6 +1339,20 @@ "type": "reference", "widget": "DescriptionStyle" }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" + }, { "default": "black", "help": "The color value.", @@ -1261,12 +1363,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "ColorPickerModel", - "version": "1.4.0" + "version": "1.5.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "ColorPickerView", - "version": "1.4.0" + "version": "1.5.0" } }, { @@ -1287,13 +1389,13 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_model_module_version", "type": "string" }, { - "default": "ControllerAxisModel", + "default": "ComboboxModel", "help": "", "name": "_model_name", "type": "string" @@ -1305,17 +1407,41 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_view_module_version", "type": "string" }, { - "default": "ControllerAxisView", + "default": "ComboboxView", "help": "", "name": "_view_name", "type": "string" }, + { + "default": true, + "help": "Update the value as the user types. If False, update on submission, e.g., pressing Enter or navigating away.", + "name": "continuous_update", + "type": "bool" + }, + { + "default": "", + "help": "Description of the control.", + "name": "description", + "type": "string" + }, + { + "default": false, + "help": "Enable or disable user changes", + "name": "disabled", + "type": "bool" + }, + { + "default": false, + "help": "If set, ensure value is in options. Implies continuous_update=False.", + "name": "ensure_option", + "type": "bool" + }, { "default": "reference to new instance", "help": "", @@ -1324,21 +1450,57 @@ "widget": "Layout" }, { - "default": 0.0, - "help": "The value of the axis.", + "default": [], + "help": "Dropdown options for the combobox", + "items": { + "type": "string" + }, + "name": "options", + "type": "array" + }, + { + "default": "\u200b", + "help": "Placeholder text to display when nothing has been typed", + "name": "placeholder", + "type": "string" + }, + { + "default": "reference to new instance", + "help": "Styling customizations", + "name": "style", + "type": "reference", + "widget": "DescriptionStyle" + }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" + }, + { + "default": "", + "help": "String value", "name": "value", - "type": "float" + "type": "string" } ], "model": { "module": "@jupyter-widgets/controls", - "name": "ControllerAxisModel", - "version": "1.4.0" + "name": "ComboboxModel", + "version": "1.5.0" }, "view": { "module": "@jupyter-widgets/controls", - "name": "ControllerAxisView", - "version": "1.4.0" + "name": "ComboboxView", + "version": "1.5.0" } }, { @@ -1359,13 +1521,13 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_model_module_version", "type": "string" }, { - "default": "ControllerButtonModel", + "default": "ControllerAxisModel", "help": "", "name": "_model_name", "type": "string" @@ -1377,13 +1539,13 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_view_module_version", "type": "string" }, { - "default": "ControllerButtonView", + "default": "ControllerAxisView", "help": "", "name": "_view_name", "type": "string" @@ -1396,27 +1558,35 @@ "widget": "Layout" }, { - "default": false, - "help": "Whether the button is pressed.", - "name": "pressed", + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", "type": "bool" }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" + }, { "default": 0.0, - "help": "The value of the button.", + "help": "The value of the axis.", "name": "value", "type": "float" } ], "model": { "module": "@jupyter-widgets/controls", - "name": "ControllerButtonModel", - "version": "1.4.0" + "name": "ControllerAxisModel", + "version": "1.5.0" }, "view": { "module": "@jupyter-widgets/controls", - "name": "ControllerButtonView", - "version": "1.4.0" + "name": "ControllerAxisView", + "version": "1.5.0" } }, { @@ -1437,13 +1607,13 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_model_module_version", "type": "string" }, { - "default": "ControllerModel", + "default": "ControllerButtonModel", "help": "", "name": "_model_name", "type": "string" @@ -1455,7 +1625,99 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", + "help": "", + "name": "_view_module_version", + "type": "string" + }, + { + "default": "ControllerButtonView", + "help": "", + "name": "_view_name", + "type": "string" + }, + { + "default": "reference to new instance", + "help": "", + "name": "layout", + "type": "reference", + "widget": "Layout" + }, + { + "default": false, + "help": "Whether the button is pressed.", + "name": "pressed", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" + }, + { + "default": 0.0, + "help": "The value of the button.", + "name": "value", + "type": "float" + } + ], + "model": { + "module": "@jupyter-widgets/controls", + "name": "ControllerButtonModel", + "version": "1.5.0" + }, + "view": { + "module": "@jupyter-widgets/controls", + "name": "ControllerButtonView", + "version": "1.5.0" + } + }, + { + "attributes": [ + { + "default": [], + "help": "CSS classes applied to widget DOM element", + "items": { + "type": "string" + }, + "name": "_dom_classes", + "type": "array" + }, + { + "default": "@jupyter-widgets/controls", + "help": "", + "name": "_model_module", + "type": "string" + }, + { + "default": "1.5.0", + "help": "", + "name": "_model_module_version", + "type": "string" + }, + { + "default": "ControllerModel", + "help": "", + "name": "_model_name", + "type": "string" + }, + { + "default": "@jupyter-widgets/controls", + "help": "", + "name": "_view_module", + "type": "string" + }, + { + "default": "1.5.0", "help": "", "name": "_view_module_version", "type": "string" @@ -1517,22 +1779,36 @@ "name": "name", "type": "string" }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, { "default": 0.0, "help": "The last time the data from this gamepad was updated.", "name": "timestamp", "type": "float" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" } ], "model": { "module": "@jupyter-widgets/controls", "name": "ControllerModel", - "version": "1.4.0" + "version": "1.5.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "ControllerView", - "version": "1.4.0" + "version": "1.5.0" } }, { @@ -1553,7 +1829,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_model_module_version", "type": "string" @@ -1571,7 +1847,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_view_module_version", "type": "string" @@ -1590,9 +1866,23 @@ "type": "reference", "widget": "Layout" }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" + }, { "default": "b''", - "help": "The media data as a byte string.", + "help": "The media data as a memory view of bytes.", "name": "value", "type": "bytes" } @@ -1600,12 +1890,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "DOMWidgetModel", - "version": "1.4.0" + "version": "1.5.0" }, "view": { "module": "@jupyter-widgets/controls", "name": null, - "version": "1.4.0" + "version": "1.5.0" } }, { @@ -1626,7 +1916,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_model_module_version", "type": "string" @@ -1644,7 +1934,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_view_module_version", "type": "string" @@ -1661,13 +1951,6 @@ "name": "description", "type": "string" }, - { - "allow_none": true, - "default": null, - "help": "Tooltip for the description (defaults to description).", - "name": "description_tooltip", - "type": "string" - }, { "default": false, "help": "Enable or disable user changes.", @@ -1688,6 +1971,20 @@ "type": "reference", "widget": "DescriptionStyle" }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" + }, { "allow_none": true, "default": null, @@ -1699,12 +1996,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "DatePickerModel", - "version": "1.4.0" + "version": "1.5.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "DatePickerView", - "version": "1.4.0" + "version": "1.5.0" } }, { @@ -1716,7 +2013,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_model_module_version", "type": "string" @@ -1734,7 +2031,7 @@ "type": "string" }, { - "default": "1.1.0", + "default": "1.2.0", "help": "", "name": "_view_module_version", "type": "string" @@ -1755,12 +2052,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "DescriptionStyleModel", - "version": "1.4.0" + "version": "1.5.0" }, "view": { "module": "@jupyter-widgets/base", "name": "StyleView", - "version": "1.1.0" + "version": "1.2.0" } }, { @@ -1772,7 +2069,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_model_module_version", "type": "string" @@ -1790,7 +2087,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_view_module_version", "type": "string" @@ -1818,12 +2115,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "DirectionalLinkModel", - "version": "1.4.0" + "version": "1.5.0" }, "view": { "module": "@jupyter-widgets/controls", "name": null, - "version": "1.4.0" + "version": "1.5.0" } }, { @@ -1844,7 +2141,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_model_module_version", "type": "string" @@ -1871,7 +2168,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_view_module_version", "type": "string" @@ -1888,13 +2185,6 @@ "name": "description", "type": "string" }, - { - "allow_none": true, - "default": null, - "help": "Tooltip for the description (defaults to description).", - "name": "description_tooltip", - "type": "string" - }, { "default": false, "help": "Enable or disable user changes", @@ -1921,17 +2211,167 @@ "name": "style", "type": "reference", "widget": "DescriptionStyle" + }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" } ], "model": { "module": "@jupyter-widgets/controls", "name": "DropdownModel", - "version": "1.4.0" + "version": "1.5.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "DropdownView", - "version": "1.4.0" + "version": "1.5.0" + } + }, + { + "attributes": [ + { + "default": [], + "help": "CSS classes applied to widget DOM element", + "items": { + "type": "string" + }, + "name": "_dom_classes", + "type": "array" + }, + { + "default": "@jupyter-widgets/controls", + "help": "", + "name": "_model_module", + "type": "string" + }, + { + "default": "1.5.0", + "help": "", + "name": "_model_module_version", + "type": "string" + }, + { + "default": "FileUploadModel", + "help": "", + "name": "_model_name", + "type": "string" + }, + { + "default": "@jupyter-widgets/controls", + "help": "", + "name": "_view_module", + "type": "string" + }, + { + "default": "1.5.0", + "help": "", + "name": "_view_module_version", + "type": "string" + }, + { + "default": "FileUploadView", + "help": "", + "name": "_view_name", + "type": "string" + }, + { + "default": "", + "help": "File types to accept, empty string for all", + "name": "accept", + "type": "string" + }, + { + "default": "", + "enum": ["primary", "success", "info", "warning", "danger", ""], + "help": "Use a predefined styling for the button.", + "name": "button_style", + "type": "string" + }, + { + "default": "", + "help": "Description of the control.", + "name": "description", + "type": "string" + }, + { + "default": false, + "help": "Enable or disable button", + "name": "disabled", + "type": "bool" + }, + { + "default": "", + "help": "Error message", + "name": "error", + "type": "string" + }, + { + "default": "upload", + "help": "Font-awesome icon name, without the 'fa-' prefix.", + "name": "icon", + "type": "string" + }, + { + "default": "reference to new instance", + "help": "", + "name": "layout", + "type": "reference", + "widget": "Layout" + }, + { + "default": false, + "help": "If True, allow for multiple files upload", + "name": "multiple", + "type": "bool" + }, + { + "default": "reference to new instance", + "help": "", + "name": "style", + "type": "reference", + "widget": "ButtonStyle" + }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" + }, + { + "default": [], + "help": "The file upload value", + "name": "value", + "type": "array" + } + ], + "model": { + "module": "@jupyter-widgets/controls", + "name": "FileUploadModel", + "version": "1.5.0" + }, + "view": { + "module": "@jupyter-widgets/controls", + "name": "FileUploadView", + "version": "1.5.0" } }, { @@ -1952,7 +2392,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_model_module_version", "type": "string" @@ -1970,7 +2410,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_view_module_version", "type": "string" @@ -1999,13 +2439,6 @@ "name": "description", "type": "string" }, - { - "allow_none": true, - "default": null, - "help": "Tooltip for the description (defaults to description).", - "name": "description_tooltip", - "type": "string" - }, { "default": false, "help": "Enable or disable user changes", @@ -2063,6 +2496,20 @@ "type": "reference", "widget": "SliderStyle" }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" + }, { "default": 1.0, "help": "Float value", @@ -2073,12 +2520,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "FloatLogSliderModel", - "version": "1.4.0" + "version": "1.5.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "FloatLogSliderView", - "version": "1.4.0" + "version": "1.5.0" } }, { @@ -2099,7 +2546,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_model_module_version", "type": "string" @@ -2117,7 +2564,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_view_module_version", "type": "string" @@ -2142,13 +2589,6 @@ "name": "description", "type": "string" }, - { - "allow_none": true, - "default": null, - "help": "Tooltip for the description (defaults to description).", - "name": "description_tooltip", - "type": "string" - }, { "default": "reference to new instance", "help": "", @@ -2182,6 +2622,20 @@ "type": "reference", "widget": "ProgressStyle" }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" + }, { "default": 0.0, "help": "Float value", @@ -2192,12 +2646,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "FloatProgressModel", - "version": "1.4.0" + "version": "1.5.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "ProgressView", - "version": "1.4.0" + "version": "1.5.0" } }, { @@ -2218,7 +2672,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_model_module_version", "type": "string" @@ -2236,7 +2690,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_view_module_version", "type": "string" @@ -2259,13 +2713,6 @@ "name": "description", "type": "string" }, - { - "allow_none": true, - "default": null, - "help": "Tooltip for the description (defaults to description).", - "name": "description_tooltip", - "type": "string" - }, { "default": false, "help": "Enable or disable user changes", @@ -2323,6 +2770,20 @@ "type": "reference", "widget": "SliderStyle" }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" + }, { "default": [0.0, 1.0], "help": "Tuple of (lower, upper) bounds", @@ -2333,12 +2794,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "FloatRangeSliderModel", - "version": "1.4.0" + "version": "1.5.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "FloatRangeSliderView", - "version": "1.4.0" + "version": "1.5.0" } }, { @@ -2359,7 +2820,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_model_module_version", "type": "string" @@ -2377,7 +2838,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_view_module_version", "type": "string" @@ -2400,13 +2861,6 @@ "name": "description", "type": "string" }, - { - "allow_none": true, - "default": null, - "help": "Tooltip for the description (defaults to description).", - "name": "description_tooltip", - "type": "string" - }, { "default": false, "help": "Enable or disable user changes", @@ -2464,6 +2918,20 @@ "type": "reference", "widget": "SliderStyle" }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" + }, { "default": 0.0, "help": "Float value", @@ -2474,12 +2942,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "FloatSliderModel", - "version": "1.4.0" + "version": "1.5.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "FloatSliderView", - "version": "1.4.0" + "version": "1.5.0" } }, { @@ -2500,7 +2968,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_model_module_version", "type": "string" @@ -2518,7 +2986,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_view_module_version", "type": "string" @@ -2535,17 +3003,10 @@ "name": "continuous_update", "type": "bool" }, - { - "default": "", - "help": "Description of the control.", - "name": "description", - "type": "string" - }, - { - "allow_none": true, - "default": null, - "help": "Tooltip for the description (defaults to description).", - "name": "description_tooltip", + { + "default": "", + "help": "Description of the control.", + "name": "description", "type": "string" }, { @@ -2575,6 +3036,20 @@ "type": "reference", "widget": "DescriptionStyle" }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" + }, { "default": 0.0, "help": "Float value", @@ -2585,12 +3060,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "FloatTextModel", - "version": "1.4.0" + "version": "1.5.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "FloatTextView", - "version": "1.4.0" + "version": "1.5.0" } }, { @@ -2611,7 +3086,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_model_module_version", "type": "string" @@ -2629,7 +3104,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_view_module_version", "type": "string" @@ -2663,17 +3138,31 @@ "name": "layout", "type": "reference", "widget": "Layout" + }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" } ], "model": { "module": "@jupyter-widgets/controls", "name": "GridBoxModel", - "version": "1.4.0" + "version": "1.5.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "GridBoxView", - "version": "1.4.0" + "version": "1.5.0" } }, { @@ -2694,7 +3183,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_model_module_version", "type": "string" @@ -2712,7 +3201,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_view_module_version", "type": "string" @@ -2746,17 +3235,31 @@ "name": "layout", "type": "reference", "widget": "Layout" + }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" } ], "model": { "module": "@jupyter-widgets/controls", "name": "HBoxModel", - "version": "1.4.0" + "version": "1.5.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "HBoxView", - "version": "1.4.0" + "version": "1.5.0" } }, { @@ -2777,7 +3280,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_model_module_version", "type": "string" @@ -2795,7 +3298,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_view_module_version", "type": "string" @@ -2812,13 +3315,6 @@ "name": "description", "type": "string" }, - { - "allow_none": true, - "default": null, - "help": "Tooltip for the description (defaults to description).", - "name": "description_tooltip", - "type": "string" - }, { "default": "reference to new instance", "help": "", @@ -2839,6 +3335,20 @@ "type": "reference", "widget": "DescriptionStyle" }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" + }, { "default": "", "help": "String value", @@ -2849,12 +3359,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "HTMLMathModel", - "version": "1.4.0" + "version": "1.5.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "HTMLMathView", - "version": "1.4.0" + "version": "1.5.0" } }, { @@ -2875,7 +3385,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_model_module_version", "type": "string" @@ -2893,7 +3403,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_view_module_version", "type": "string" @@ -2910,13 +3420,6 @@ "name": "description", "type": "string" }, - { - "allow_none": true, - "default": null, - "help": "Tooltip for the description (defaults to description).", - "name": "description_tooltip", - "type": "string" - }, { "default": "reference to new instance", "help": "", @@ -2937,6 +3440,20 @@ "type": "reference", "widget": "DescriptionStyle" }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" + }, { "default": "", "help": "String value", @@ -2947,12 +3464,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "HTMLModel", - "version": "1.4.0" + "version": "1.5.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "HTMLView", - "version": "1.4.0" + "version": "1.5.0" } }, { @@ -2973,7 +3490,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_model_module_version", "type": "string" @@ -2991,7 +3508,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_view_module_version", "type": "string" @@ -3010,7 +3527,7 @@ }, { "default": "", - "help": "Height of the image in pixels.", + "help": "Height of the image in pixels. Use layout.height for styling the widget.", "name": "height", "type": "string" }, @@ -3021,15 +3538,29 @@ "type": "reference", "widget": "Layout" }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" + }, { "default": "b''", - "help": "The media data as a byte string.", + "help": "The media data as a memory view of bytes.", "name": "value", "type": "bytes" }, { "default": "", - "help": "Width of the image in pixels.", + "help": "Width of the image in pixels. Use layout.width for styling the widget.", "name": "width", "type": "string" } @@ -3037,12 +3568,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "ImageModel", - "version": "1.4.0" + "version": "1.5.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "ImageView", - "version": "1.4.0" + "version": "1.5.0" } }, { @@ -3063,7 +3594,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_model_module_version", "type": "string" @@ -3081,7 +3612,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_view_module_version", "type": "string" @@ -3105,13 +3636,6 @@ "name": "description", "type": "string" }, - { - "allow_none": true, - "default": null, - "help": "Tooltip for the description (defaults to description).", - "name": "description_tooltip", - "type": "string" - }, { "default": "reference to new instance", "help": "", @@ -3145,6 +3669,20 @@ "type": "reference", "widget": "ProgressStyle" }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" + }, { "default": 0, "help": "Int value", @@ -3155,12 +3693,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "IntProgressModel", - "version": "1.4.0" + "version": "1.5.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "ProgressView", - "version": "1.4.0" + "version": "1.5.0" } }, { @@ -3181,7 +3719,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_model_module_version", "type": "string" @@ -3199,7 +3737,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_view_module_version", "type": "string" @@ -3222,13 +3760,6 @@ "name": "description", "type": "string" }, - { - "allow_none": true, - "default": null, - "help": "Tooltip for the description (defaults to description).", - "name": "description_tooltip", - "type": "string" - }, { "default": false, "help": "Enable or disable user changes", @@ -3286,6 +3817,20 @@ "type": "reference", "widget": "SliderStyle" }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" + }, { "default": [0, 1], "help": "Tuple of (lower, upper) bounds", @@ -3296,12 +3841,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "IntRangeSliderModel", - "version": "1.4.0" + "version": "1.5.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "IntRangeSliderView", - "version": "1.4.0" + "version": "1.5.0" } }, { @@ -3322,7 +3867,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_model_module_version", "type": "string" @@ -3340,7 +3885,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_view_module_version", "type": "string" @@ -3363,13 +3908,6 @@ "name": "description", "type": "string" }, - { - "allow_none": true, - "default": null, - "help": "Tooltip for the description (defaults to description).", - "name": "description_tooltip", - "type": "string" - }, { "default": false, "help": "Enable or disable user changes", @@ -3427,6 +3965,20 @@ "type": "reference", "widget": "SliderStyle" }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" + }, { "default": 0, "help": "Int value", @@ -3437,12 +3989,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "IntSliderModel", - "version": "1.4.0" + "version": "1.5.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "IntSliderView", - "version": "1.4.0" + "version": "1.5.0" } }, { @@ -3463,7 +4015,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_model_module_version", "type": "string" @@ -3481,7 +4033,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_view_module_version", "type": "string" @@ -3504,13 +4056,6 @@ "name": "description", "type": "string" }, - { - "allow_none": true, - "default": null, - "help": "Tooltip for the description (defaults to description).", - "name": "description_tooltip", - "type": "string" - }, { "default": false, "help": "Enable or disable user changes", @@ -3537,6 +4082,20 @@ "type": "reference", "widget": "DescriptionStyle" }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" + }, { "default": 0, "help": "Int value", @@ -3547,12 +4106,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "IntTextModel", - "version": "1.4.0" + "version": "1.5.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "IntTextView", - "version": "1.4.0" + "version": "1.5.0" } }, { @@ -3573,7 +4132,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_model_module_version", "type": "string" @@ -3591,7 +4150,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_view_module_version", "type": "string" @@ -3608,13 +4167,6 @@ "name": "description", "type": "string" }, - { - "allow_none": true, - "default": null, - "help": "Tooltip for the description (defaults to description).", - "name": "description_tooltip", - "type": "string" - }, { "default": "reference to new instance", "help": "", @@ -3635,6 +4187,20 @@ "type": "reference", "widget": "DescriptionStyle" }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" + }, { "default": "", "help": "String value", @@ -3645,12 +4211,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "LabelModel", - "version": "1.4.0" + "version": "1.5.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "LabelView", - "version": "1.4.0" + "version": "1.5.0" } }, { @@ -3662,7 +4228,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_model_module_version", "type": "string" @@ -3680,7 +4246,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_view_module_version", "type": "string" @@ -3708,12 +4274,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "LinkModel", - "version": "1.4.0" + "version": "1.5.0" }, "view": { "module": "@jupyter-widgets/controls", "name": null, - "version": "1.4.0" + "version": "1.5.0" } }, { @@ -3734,7 +4300,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_model_module_version", "type": "string" @@ -3752,7 +4318,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_view_module_version", "type": "string" @@ -3775,13 +4341,6 @@ "name": "description", "type": "string" }, - { - "allow_none": true, - "default": null, - "help": "Tooltip for the description (defaults to description).", - "name": "description_tooltip", - "type": "string" - }, { "default": false, "help": "Enable or disable user changes", @@ -3808,6 +4367,20 @@ "type": "reference", "widget": "DescriptionStyle" }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" + }, { "default": "", "help": "String value", @@ -3818,12 +4391,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "PasswordModel", - "version": "1.4.0" + "version": "1.5.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "PasswordView", - "version": "1.4.0" + "version": "1.5.0" } }, { @@ -3844,7 +4417,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_model_module_version", "type": "string" @@ -3855,18 +4428,6 @@ "name": "_model_name", "type": "string" }, - { - "default": false, - "help": "Whether the control is currently playing.", - "name": "_playing", - "type": "bool" - }, - { - "default": false, - "help": "Whether the control will repeat in a continous loop.", - "name": "_repeat", - "type": "bool" - }, { "default": "@jupyter-widgets/controls", "help": "", @@ -3874,7 +4435,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_view_module_version", "type": "string" @@ -3891,13 +4452,6 @@ "name": "description", "type": "string" }, - { - "allow_none": true, - "default": null, - "help": "Tooltip for the description (defaults to description).", - "name": "description_tooltip", - "type": "string" - }, { "default": false, "help": "Enable or disable user changes", @@ -3906,7 +4460,7 @@ }, { "default": 100, - "help": "The maximum value for the play control.", + "help": "The time between two animation steps (ms).", "name": "interval", "type": "int" }, @@ -3929,6 +4483,18 @@ "name": "min", "type": "int" }, + { + "default": false, + "help": "Whether the control is currently playing.", + "name": "playing", + "type": "bool" + }, + { + "default": false, + "help": "Whether the control will repeat in a continous loop.", + "name": "repeat", + "type": "bool" + }, { "default": true, "help": "Show the repeat toggle button in the widget.", @@ -3948,6 +4514,20 @@ "type": "reference", "widget": "DescriptionStyle" }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" + }, { "default": 0, "help": "Int value", @@ -3958,12 +4538,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "PlayModel", - "version": "1.4.0" + "version": "1.5.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "PlayView", - "version": "1.4.0" + "version": "1.5.0" } }, { @@ -3975,7 +4555,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_model_module_version", "type": "string" @@ -3993,7 +4573,7 @@ "type": "string" }, { - "default": "1.1.0", + "default": "1.2.0", "help": "", "name": "_view_module_version", "type": "string" @@ -4021,12 +4601,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "ProgressStyleModel", - "version": "1.4.0" + "version": "1.5.0" }, "view": { "module": "@jupyter-widgets/base", "name": "StyleView", - "version": "1.1.0" + "version": "1.2.0" } }, { @@ -4047,7 +4627,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_model_module_version", "type": "string" @@ -4074,7 +4654,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_view_module_version", "type": "string" @@ -4091,13 +4671,6 @@ "name": "description", "type": "string" }, - { - "allow_none": true, - "default": null, - "help": "Tooltip for the description (defaults to description).", - "name": "description_tooltip", - "type": "string" - }, { "default": false, "help": "Enable or disable user changes", @@ -4124,17 +4697,31 @@ "name": "style", "type": "reference", "widget": "DescriptionStyle" + }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" } ], "model": { "module": "@jupyter-widgets/controls", "name": "RadioButtonsModel", - "version": "1.4.0" + "version": "1.5.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "RadioButtonsView", - "version": "1.4.0" + "version": "1.5.0" } }, { @@ -4155,7 +4742,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_model_module_version", "type": "string" @@ -4182,7 +4769,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_view_module_version", "type": "string" @@ -4199,13 +4786,6 @@ "name": "description", "type": "string" }, - { - "allow_none": true, - "default": null, - "help": "Tooltip for the description (defaults to description).", - "name": "description_tooltip", - "type": "string" - }, { "default": false, "help": "Enable or disable user changes", @@ -4238,17 +4818,31 @@ "name": "style", "type": "reference", "widget": "DescriptionStyle" + }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" } ], "model": { "module": "@jupyter-widgets/controls", "name": "SelectModel", - "version": "1.4.0" + "version": "1.5.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "SelectView", - "version": "1.4.0" + "version": "1.5.0" } }, { @@ -4269,7 +4863,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_model_module_version", "type": "string" @@ -4296,7 +4890,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_view_module_version", "type": "string" @@ -4313,13 +4907,6 @@ "name": "description", "type": "string" }, - { - "allow_none": true, - "default": null, - "help": "Tooltip for the description (defaults to description).", - "name": "description_tooltip", - "type": "string" - }, { "default": false, "help": "Enable or disable user changes", @@ -4354,17 +4941,31 @@ "name": "style", "type": "reference", "widget": "DescriptionStyle" + }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" } ], "model": { "module": "@jupyter-widgets/controls", "name": "SelectMultipleModel", - "version": "1.4.0" + "version": "1.5.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "SelectMultipleView", - "version": "1.4.0" + "version": "1.5.0" } }, { @@ -4385,7 +4986,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_model_module_version", "type": "string" @@ -4412,7 +5013,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_view_module_version", "type": "string" @@ -4435,13 +5036,6 @@ "name": "description", "type": "string" }, - { - "allow_none": true, - "default": null, - "help": "Tooltip for the description (defaults to description).", - "name": "description_tooltip", - "type": "string" - }, { "default": false, "help": "Enable or disable user changes", @@ -4480,17 +5074,31 @@ "name": "style", "type": "reference", "widget": "DescriptionStyle" + }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" } ], "model": { "module": "@jupyter-widgets/controls", "name": "SelectionRangeSliderModel", - "version": "1.4.0" + "version": "1.5.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "SelectionRangeSliderView", - "version": "1.4.0" + "version": "1.5.0" } }, { @@ -4511,7 +5119,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_model_module_version", "type": "string" @@ -4538,7 +5146,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_view_module_version", "type": "string" @@ -4561,13 +5169,6 @@ "name": "description", "type": "string" }, - { - "allow_none": true, - "default": null, - "help": "Tooltip for the description (defaults to description).", - "name": "description_tooltip", - "type": "string" - }, { "default": false, "help": "Enable or disable user changes", @@ -4606,17 +5207,31 @@ "name": "style", "type": "reference", "widget": "DescriptionStyle" + }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" } ], "model": { "module": "@jupyter-widgets/controls", "name": "SelectionSliderModel", - "version": "1.4.0" + "version": "1.5.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "SelectionSliderView", - "version": "1.4.0" + "version": "1.5.0" } }, { @@ -4628,7 +5243,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_model_module_version", "type": "string" @@ -4646,7 +5261,7 @@ "type": "string" }, { - "default": "1.1.0", + "default": "1.2.0", "help": "", "name": "_view_module_version", "type": "string" @@ -4674,12 +5289,122 @@ "model": { "module": "@jupyter-widgets/controls", "name": "SliderStyleModel", - "version": "1.4.0" + "version": "1.5.0" }, "view": { "module": "@jupyter-widgets/base", "name": "StyleView", - "version": "1.1.0" + "version": "1.2.0" + } + }, + { + "attributes": [ + { + "default": [], + "help": "CSS classes applied to widget DOM element", + "items": { + "type": "string" + }, + "name": "_dom_classes", + "type": "array" + }, + { + "default": "@jupyter-widgets/controls", + "help": "", + "name": "_model_module", + "type": "string" + }, + { + "default": "1.5.0", + "help": "", + "name": "_model_module_version", + "type": "string" + }, + { + "default": "StackedModel", + "help": "", + "name": "_model_name", + "type": "string" + }, + { + "default": {}, + "help": "Titles of the pages", + "name": "_titles", + "type": "object" + }, + { + "default": "@jupyter-widgets/controls", + "help": "", + "name": "_view_module", + "type": "string" + }, + { + "default": "1.5.0", + "help": "", + "name": "_view_module_version", + "type": "string" + }, + { + "default": "StackedView", + "help": "", + "name": "_view_name", + "type": "string" + }, + { + "default": "", + "enum": ["success", "info", "warning", "danger", ""], + "help": "Use a predefined styling for the box.", + "name": "box_style", + "type": "string" + }, + { + "default": [], + "help": "List of widget children", + "items": { + "type": "reference", + "widget": "Widget" + }, + "name": "children", + "type": "array" + }, + { + "default": "reference to new instance", + "help": "", + "name": "layout", + "type": "reference", + "widget": "Layout" + }, + { + "allow_none": true, + "default": 0, + "help": "The index of the selected page. This is either an integer selecting a particular sub-widget, or None to have no widgets selected.", + "name": "selected_index", + "type": "int" + }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" + } + ], + "model": { + "module": "@jupyter-widgets/controls", + "name": "StackedModel", + "version": "1.5.0" + }, + "view": { + "module": "@jupyter-widgets/controls", + "name": "StackedView", + "version": "1.5.0" } }, { @@ -4700,7 +5425,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_model_module_version", "type": "string" @@ -4724,7 +5449,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_view_module_version", "type": "string" @@ -4765,17 +5490,31 @@ "help": "The index of the selected page. This is either an integer selecting a particular sub-widget, or None to have no widgets selected.", "name": "selected_index", "type": "int" + }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" } ], "model": { "module": "@jupyter-widgets/controls", "name": "TabModel", - "version": "1.4.0" + "version": "1.5.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "TabView", - "version": "1.4.0" + "version": "1.5.0" } }, { @@ -4796,7 +5535,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_model_module_version", "type": "string" @@ -4814,7 +5553,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_view_module_version", "type": "string" @@ -4837,13 +5576,6 @@ "name": "description", "type": "string" }, - { - "allow_none": true, - "default": null, - "help": "Tooltip for the description (defaults to description).", - "name": "description_tooltip", - "type": "string" - }, { "default": false, "help": "Enable or disable user changes", @@ -4870,6 +5602,20 @@ "type": "reference", "widget": "DescriptionStyle" }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" + }, { "default": "", "help": "String value", @@ -4880,12 +5626,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "TextModel", - "version": "1.4.0" + "version": "1.5.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "TextView", - "version": "1.4.0" + "version": "1.5.0" } }, { @@ -4906,7 +5652,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_model_module_version", "type": "string" @@ -4924,7 +5670,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_view_module_version", "type": "string" @@ -4947,13 +5693,6 @@ "name": "description", "type": "string" }, - { - "allow_none": true, - "default": null, - "help": "Tooltip for the description (defaults to description).", - "name": "description_tooltip", - "type": "string" - }, { "default": false, "help": "Enable or disable user changes", @@ -4987,6 +5726,20 @@ "type": "reference", "widget": "DescriptionStyle" }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" + }, { "default": "", "help": "String value", @@ -4997,12 +5750,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "TextareaModel", - "version": "1.4.0" + "version": "1.5.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "TextareaView", - "version": "1.4.0" + "version": "1.5.0" } }, { @@ -5023,7 +5776,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_model_module_version", "type": "string" @@ -5041,7 +5794,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_view_module_version", "type": "string" @@ -5065,13 +5818,6 @@ "name": "description", "type": "string" }, - { - "allow_none": true, - "default": null, - "help": "Tooltip for the description (defaults to description).", - "name": "description_tooltip", - "type": "string" - }, { "default": false, "help": "Enable or disable user changes.", @@ -5099,8 +5845,16 @@ "widget": "DescriptionStyle" }, { - "default": "", - "help": "Tooltip caption of the toggle button.", + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", "name": "tooltip", "type": "string" }, @@ -5114,12 +5868,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "ToggleButtonModel", - "version": "1.4.0" + "version": "1.5.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "ToggleButtonView", - "version": "1.4.0" + "version": "1.5.0" } }, { @@ -5140,7 +5894,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_model_module_version", "type": "string" @@ -5167,7 +5921,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_view_module_version", "type": "string" @@ -5192,13 +5946,6 @@ "name": "description", "type": "string" }, - { - "allow_none": true, - "default": null, - "help": "Tooltip for the description (defaults to description).", - "name": "description_tooltip", - "type": "string" - }, { "default": false, "help": "Enable or disable user changes", @@ -5235,6 +5982,20 @@ "type": "reference", "widget": "ToggleButtonsStyle" }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" + }, { "default": [], "help": "Tooltips for each button.", @@ -5248,12 +6009,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "ToggleButtonsModel", - "version": "1.4.0" + "version": "1.5.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "ToggleButtonsView", - "version": "1.4.0" + "version": "1.5.0" } }, { @@ -5265,7 +6026,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_model_module_version", "type": "string" @@ -5283,7 +6044,7 @@ "type": "string" }, { - "default": "1.1.0", + "default": "1.2.0", "help": "", "name": "_view_module_version", "type": "string" @@ -5316,12 +6077,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "ToggleButtonsStyleModel", - "version": "1.4.0" + "version": "1.5.0" }, "view": { "module": "@jupyter-widgets/base", "name": "StyleView", - "version": "1.1.0" + "version": "1.2.0" } }, { @@ -5342,7 +6103,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_model_module_version", "type": "string" @@ -5360,7 +6121,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_view_module_version", "type": "string" @@ -5394,17 +6155,31 @@ "name": "layout", "type": "reference", "widget": "Layout" + }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" } ], "model": { "module": "@jupyter-widgets/controls", "name": "VBoxModel", - "version": "1.4.0" + "version": "1.5.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "VBoxView", - "version": "1.4.0" + "version": "1.5.0" } }, { @@ -5425,7 +6200,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_model_module_version", "type": "string" @@ -5443,7 +6218,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_view_module_version", "type": "string" @@ -5460,13 +6235,6 @@ "name": "description", "type": "string" }, - { - "allow_none": true, - "default": null, - "help": "Tooltip for the description (defaults to description).", - "name": "description_tooltip", - "type": "string" - }, { "default": false, "help": "Enable or disable user changes.", @@ -5493,6 +6261,20 @@ "type": "reference", "widget": "DescriptionStyle" }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" + }, { "default": false, "help": "Bool value", @@ -5503,12 +6285,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "ValidModel", - "version": "1.4.0" + "version": "1.5.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "ValidView", - "version": "1.4.0" + "version": "1.5.0" } }, { @@ -5529,7 +6311,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_model_module_version", "type": "string" @@ -5547,7 +6329,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_view_module_version", "type": "string" @@ -5595,9 +6377,23 @@ "name": "loop", "type": "bool" }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" + }, { "default": "b''", - "help": "The media data as a byte string.", + "help": "The media data as a memory view of bytes.", "name": "value", "type": "bytes" }, @@ -5611,12 +6407,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "VideoModel", - "version": "1.4.0" + "version": "1.5.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "VideoView", - "version": "1.4.0" + "version": "1.5.0" } }, { @@ -5687,6 +6483,20 @@ }, "name": "outputs", "type": "array" + }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" } ], "model": { diff --git a/packages/schema/jupyterwidgetmodels.latest.md b/packages/schema/jupyterwidgetmodels.latest.md index 4b75dd3c520..d2c2f9b7fdb 100644 --- a/packages/schema/jupyterwidgetmodels.latest.md +++ b/packages/schema/jupyterwidgetmodels.latest.md @@ -29,7 +29,12 @@ Attribute | Type | Default | Help `align_content` | `null` or string (one of `'flex-start'`, `'flex-end'`, `'center'`, `'space-between'`, `'space-around'`, `'space-evenly'`, `'stretch'`, `'inherit'`, `'initial'`, `'unset'`) | `null` | The align-content CSS attribute. `align_items` | `null` or string (one of `'flex-start'`, `'flex-end'`, `'center'`, `'baseline'`, `'stretch'`, `'inherit'`, `'initial'`, `'unset'`) | `null` | The align-items CSS attribute. `align_self` | `null` or string (one of `'auto'`, `'flex-start'`, `'flex-end'`, `'center'`, `'baseline'`, `'stretch'`, `'inherit'`, `'initial'`, `'unset'`) | `null` | The align-self CSS attribute. -`border` | `null` or string | `null` | The border CSS attribute. +`border_collapse` | `null` or string | `null` | The border collapse CSS attribute. +`border_color` | `null` or string | `null` | The border color CSS attribute. +`border_image` | `null` or string | `null` | The border image CSS attribute. +`border_radius` | `null` or string | `null` | The border radius CSS attribute. +`border_style` | `null` or string | `null` | The border style CSS attribute. +`border_width` | `null` or string | `null` | The border width CSS attribute. `bottom` | `null` or string | `null` | The bottom CSS attribute. `display` | `null` or string | `null` | The display CSS attribute. `flex` | `null` or string | `null` | The flex CSS attribute. From b9b90fcfdcd3afbaf578e808aa4dc06b3c4a91ad Mon Sep 17 00:00:00 2001 From: Zerline Date: Fri, 24 Jan 2020 22:17:22 +0100 Subject: [PATCH 002/101] Test file. --- tests/test_borders.ipynb | 168 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 168 insertions(+) create mode 100644 tests/test_borders.ipynb diff --git a/tests/test_borders.ipynb b/tests/test_borders.ipynb new file mode 100644 index 00000000000..b3561cdb3c8 --- /dev/null +++ b/tests/test_borders.ipynb @@ -0,0 +1,168 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from ipywidgets import *" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "t = Text(\"text input\")\n", + "b = Button(description=\"button\")\n", + "HBox((t,b))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#t.layout.__dict__" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "t.layout.border_style = \"solid\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "t.layout.border_color = \"blue green red yellow\"\n", + "t.layout.border_style = \"solid dashed spotted none\"\n", + "t.layout.border_width = \"1 2 3 4\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "t.layout.border_style = \"dashed dashed dashed dashed\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "b.layout.border_color = \"green red yellow blue\"\n", + "b.layout.border_style = \"solid dashed spotted none\"\n", + "b.layout.border_width = \"1 2 3 4\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "t.style.border = \"1px solid red\"\n", + "b.style.border = \"1px solid red\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "t.style.background_color = \"lightpurple\"\n", + "b.style.background_color = \"lightpurple\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#t.style.__dict__" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "t1 = Text(\"1\")\n", + "t2 = Text(\"2\")\n", + "t3 = Text(\"3\")\n", + "t4 = Text(\"4\")\n", + "t5 = Text(\"5\")\n", + "t6 = Text(\"6\")\n", + "\n", + "B = VBox((HBox((t1,t2,t3)), HBox((t4,t5,t6))))\n", + "# HBox(children=(Text(\"1\"), Text(\"2\"), Text(\"3\"))),\n", + "# HBox(children=(Text(\"4\"), Text(\"5\"), Text(\"6\")))))\n", + "B.layout.border_color = \"orange\"\n", + "B" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "t1.layout.border_color = \"red\"\n", + "t2.layout.border_color = \"red\"\n", + "t3.layout.border_color = \"red\"\n", + "t4.layout.border_color = \"red\"\n", + "t5.layout.border_color = \"red\"\n", + "t6.layout.border_color = \"red\"\n", + "\n", + "t1.layout.border_width = \"2\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "B.layout.border_collapse = \"collapse\"" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} From d7d2842263f8c10816a93415068fbb4029a3cde9 Mon Sep 17 00:00:00 2001 From: Zerline Date: Sun, 26 Jan 2020 14:17:36 +0100 Subject: [PATCH 003/101] Border, border-top, border-right .. --- ipywidgets/widgets/widget_layout.py | 11 +- packages/base/src/widget_layout.ts | 11 +- .../schema/jupyterwidgetmodels.latest.json | 27 ++--- packages/schema/jupyterwidgetmodels.latest.md | 11 +- tests/test_borders.ipynb | 112 +++--------------- 5 files changed, 43 insertions(+), 129 deletions(-) diff --git a/ipywidgets/widgets/widget_layout.py b/ipywidgets/widgets/widget_layout.py index 4644fd255ac..db3bc50c715 100644 --- a/ipywidgets/widgets/widget_layout.py +++ b/ipywidgets/widgets/widget_layout.py @@ -37,13 +37,12 @@ class Layout(Widget): 'baseline', 'stretch'] + CSS_PROPERTIES, allow_none=True, help="The align-items CSS attribute.").tag(sync=True) align_self = CaselessStrEnum(['auto', 'flex-start', 'flex-end', 'center', 'baseline', 'stretch'] + CSS_PROPERTIES, allow_none=True, help="The align-self CSS attribute.").tag(sync=True) + border = Unicode(None, allow_none=True, help="The border CSS attribute.").tag(sync=True) + border_top = Unicode(None, allow_none=True, help="The border top CSS attribute.").tag(sync=True) + border_right = Unicode(None, allow_none=True, help="The border right CSS attribute.").tag(sync=True) + border_bottom = Unicode(None, allow_none=True, help="The border bottom CSS attribute.").tag(sync=True) + border_left = Unicode(None, allow_none=True, help="The border left CSS attribute.").tag(sync=True) bottom = Unicode(None, allow_none=True, help="The bottom CSS attribute.").tag(sync=True) - border_collapse = Unicode(None, allow_none=True, help="The border collapse CSS attribute.").tag(sync=True) - border_color = Unicode(None, allow_none=True, help="The border color CSS attribute.").tag(sync=True) - border_image = Unicode(None, allow_none=True, help="The border image CSS attribute.").tag(sync=True) - border_radius = Unicode(None, allow_none=True, help="The border radius CSS attribute.").tag(sync=True) - border_style = Unicode(None, allow_none=True, help="The border style CSS attribute.").tag(sync=True) - border_width = Unicode(None, allow_none=True, help="The border width CSS attribute.").tag(sync=True) display = Unicode(None, allow_none=True, help="The display CSS attribute.").tag(sync=True) flex = Unicode(None, allow_none=True, help="The flex CSS attribute.").tag(sync=True) flex_flow = Unicode(None, allow_none=True, help="The flex-flow CSS attribute.").tag(sync=True) diff --git a/packages/base/src/widget_layout.ts b/packages/base/src/widget_layout.ts index 94709b42ee9..d0bdb0c4e53 100644 --- a/packages/base/src/widget_layout.ts +++ b/packages/base/src/widget_layout.ts @@ -12,12 +12,11 @@ const css_properties: Dict = { align_content: null, align_items: null, align_self: null, - border_collapse: null, - border_color: null, - border_image: null, - border_radius: null, - border_style: null, - border_width: null, + border: null, + border_top: null, + border_right: null, + border_bottom: null, + border_left: null, bottom: null, display: null, flex: null, diff --git a/packages/schema/jupyterwidgetmodels.latest.json b/packages/schema/jupyterwidgetmodels.latest.json index 7e9d08cf1fc..d2899952e6a 100644 --- a/packages/schema/jupyterwidgetmodels.latest.json +++ b/packages/schema/jupyterwidgetmodels.latest.json @@ -94,43 +94,36 @@ { "allow_none": true, "default": null, - "help": "The border collapse CSS attribute.", - "name": "border_collapse", + "help": "The border CSS attribute.", + "name": "border", "type": "string" }, { "allow_none": true, "default": null, - "help": "The border color CSS attribute.", - "name": "border_color", + "help": "The border bottom CSS attribute.", + "name": "border_bottom", "type": "string" }, { "allow_none": true, "default": null, - "help": "The border image CSS attribute.", - "name": "border_image", + "help": "The border left CSS attribute.", + "name": "border_left", "type": "string" }, { "allow_none": true, "default": null, - "help": "The border radius CSS attribute.", - "name": "border_radius", + "help": "The border right CSS attribute.", + "name": "border_right", "type": "string" }, { "allow_none": true, "default": null, - "help": "The border style CSS attribute.", - "name": "border_style", - "type": "string" - }, - { - "allow_none": true, - "default": null, - "help": "The border width CSS attribute.", - "name": "border_width", + "help": "The border top CSS attribute.", + "name": "border_top", "type": "string" }, { diff --git a/packages/schema/jupyterwidgetmodels.latest.md b/packages/schema/jupyterwidgetmodels.latest.md index d2c2f9b7fdb..bae5e1ef01d 100644 --- a/packages/schema/jupyterwidgetmodels.latest.md +++ b/packages/schema/jupyterwidgetmodels.latest.md @@ -29,12 +29,11 @@ Attribute | Type | Default | Help `align_content` | `null` or string (one of `'flex-start'`, `'flex-end'`, `'center'`, `'space-between'`, `'space-around'`, `'space-evenly'`, `'stretch'`, `'inherit'`, `'initial'`, `'unset'`) | `null` | The align-content CSS attribute. `align_items` | `null` or string (one of `'flex-start'`, `'flex-end'`, `'center'`, `'baseline'`, `'stretch'`, `'inherit'`, `'initial'`, `'unset'`) | `null` | The align-items CSS attribute. `align_self` | `null` or string (one of `'auto'`, `'flex-start'`, `'flex-end'`, `'center'`, `'baseline'`, `'stretch'`, `'inherit'`, `'initial'`, `'unset'`) | `null` | The align-self CSS attribute. -`border_collapse` | `null` or string | `null` | The border collapse CSS attribute. -`border_color` | `null` or string | `null` | The border color CSS attribute. -`border_image` | `null` or string | `null` | The border image CSS attribute. -`border_radius` | `null` or string | `null` | The border radius CSS attribute. -`border_style` | `null` or string | `null` | The border style CSS attribute. -`border_width` | `null` or string | `null` | The border width CSS attribute. +`border` | `null` or string | `null` | The border CSS attribute. +`border_bottom` | `null` or string | `null` | The border bottom CSS attribute. +`border_left` | `null` or string | `null` | The border left CSS attribute. +`border_right` | `null` or string | `null` | The border right CSS attribute. +`border_top` | `null` or string | `null` | The border top CSS attribute. `bottom` | `null` or string | `null` | The bottom CSS attribute. `display` | `null` or string | `null` | The display CSS attribute. `flex` | `null` or string | `null` | The flex CSS attribute. diff --git a/tests/test_borders.ipynb b/tests/test_borders.ipynb index b3561cdb3c8..b5049fdaa39 100644 --- a/tests/test_borders.ipynb +++ b/tests/test_borders.ipynb @@ -15,9 +15,9 @@ "metadata": {}, "outputs": [], "source": [ - "t = Text(\"text input\")\n", - "b = Button(description=\"button\")\n", - "HBox((t,b))" + "t1 = Text(\"text input\")\n", + "b1 = Button(description=\"button\")\n", + "HBox((t1,b1))" ] }, { @@ -26,7 +26,10 @@ "metadata": {}, "outputs": [], "source": [ - "#t.layout.__dict__" + "b1.layout.border = \"2px solid yellow\"\n", + "t1.layout.border = \"1px dashed red\"\n", + "t1.layout.border_left = \"5px dotted blue\"\n", + "b1.layout.border_right = \"2px dotted blue\"" ] }, { @@ -35,7 +38,9 @@ "metadata": {}, "outputs": [], "source": [ - "t.layout.border_style = \"solid\"" + "t2 = Text(\"text input\")\n", + "b2 = ToggleButton(description=\"toggle button\")\n", + "HBox((t2,b2))" ] }, { @@ -44,9 +49,10 @@ "metadata": {}, "outputs": [], "source": [ - "t.layout.border_color = \"blue green red yellow\"\n", - "t.layout.border_style = \"solid dashed spotted none\"\n", - "t.layout.border_width = \"1 2 3 4\"" + "t2.layout.border_left = \"5px dotted blue\"\n", + "b2.layout.border_right = \"2px dotted blue\"\n", + "b2.layout.border = \"2px solid yellow\"\n", + "t2.layout.border = \"1px dashed red\"" ] }, { @@ -55,92 +61,10 @@ "metadata": {}, "outputs": [], "source": [ - "t.layout.border_style = \"dashed dashed dashed dashed\"" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "b.layout.border_color = \"green red yellow blue\"\n", - "b.layout.border_style = \"solid dashed spotted none\"\n", - "b.layout.border_width = \"1 2 3 4\"" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "t.style.border = \"1px solid red\"\n", - "b.style.border = \"1px solid red\"" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "t.style.background_color = \"lightpurple\"\n", - "b.style.background_color = \"lightpurple\"" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "#t.style.__dict__" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "t1 = Text(\"1\")\n", - "t2 = Text(\"2\")\n", - "t3 = Text(\"3\")\n", - "t4 = Text(\"4\")\n", - "t5 = Text(\"5\")\n", - "t6 = Text(\"6\")\n", - "\n", - "B = VBox((HBox((t1,t2,t3)), HBox((t4,t5,t6))))\n", - "# HBox(children=(Text(\"1\"), Text(\"2\"), Text(\"3\"))),\n", - "# HBox(children=(Text(\"4\"), Text(\"5\"), Text(\"6\")))))\n", - "B.layout.border_color = \"orange\"\n", - "B" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "t1.layout.border_color = \"red\"\n", - "t2.layout.border_color = \"red\"\n", - "t3.layout.border_color = \"red\"\n", - "t4.layout.border_color = \"red\"\n", - "t5.layout.border_color = \"red\"\n", - "t6.layout.border_color = \"red\"\n", - "\n", - "t1.layout.border_width = \"2\"" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "B.layout.border_collapse = \"collapse\"" + "t1.style.border_top = \"5px solid green\"\n", + "b1.style.border = \"1px solid purple\"\n", + "t2.style.border_top = \"5px solid green\"\n", + "b2.style.border = \"1px solid purple\"" ] } ], From 46892d8b1e7912572e5fadd235a9ba219987219b Mon Sep 17 00:00:00 2001 From: Zerline Date: Fri, 24 Jan 2020 21:52:00 +0100 Subject: [PATCH 004/101] New border attributes for layout. --- ipywidgets/widgets/widget_layout.py | 7 +- packages/base/src/widget_layout.ts | 7 +- .../schema/jupyterwidgetmodels.latest.json | 1808 ++++++++++++----- packages/schema/jupyterwidgetmodels.latest.md | 7 +- 4 files changed, 1327 insertions(+), 502 deletions(-) diff --git a/ipywidgets/widgets/widget_layout.py b/ipywidgets/widgets/widget_layout.py index 692bdbb3bb1..4644fd255ac 100644 --- a/ipywidgets/widgets/widget_layout.py +++ b/ipywidgets/widgets/widget_layout.py @@ -38,7 +38,12 @@ class Layout(Widget): align_self = CaselessStrEnum(['auto', 'flex-start', 'flex-end', 'center', 'baseline', 'stretch'] + CSS_PROPERTIES, allow_none=True, help="The align-self CSS attribute.").tag(sync=True) bottom = Unicode(None, allow_none=True, help="The bottom CSS attribute.").tag(sync=True) - border = Unicode(None, allow_none=True, help="The border CSS attribute.").tag(sync=True) + border_collapse = Unicode(None, allow_none=True, help="The border collapse CSS attribute.").tag(sync=True) + border_color = Unicode(None, allow_none=True, help="The border color CSS attribute.").tag(sync=True) + border_image = Unicode(None, allow_none=True, help="The border image CSS attribute.").tag(sync=True) + border_radius = Unicode(None, allow_none=True, help="The border radius CSS attribute.").tag(sync=True) + border_style = Unicode(None, allow_none=True, help="The border style CSS attribute.").tag(sync=True) + border_width = Unicode(None, allow_none=True, help="The border width CSS attribute.").tag(sync=True) display = Unicode(None, allow_none=True, help="The display CSS attribute.").tag(sync=True) flex = Unicode(None, allow_none=True, help="The flex CSS attribute.").tag(sync=True) flex_flow = Unicode(None, allow_none=True, help="The flex-flow CSS attribute.").tag(sync=True) diff --git a/packages/base/src/widget_layout.ts b/packages/base/src/widget_layout.ts index 3676a00865f..94709b42ee9 100644 --- a/packages/base/src/widget_layout.ts +++ b/packages/base/src/widget_layout.ts @@ -12,7 +12,12 @@ const css_properties: Dict = { align_content: null, align_items: null, align_self: null, - border: null, + border_collapse: null, + border_color: null, + border_image: null, + border_radius: null, + border_style: null, + border_width: null, bottom: null, display: null, flex: null, diff --git a/packages/schema/jupyterwidgetmodels.latest.json b/packages/schema/jupyterwidgetmodels.latest.json index d84d7c19f3a..7e9d08cf1fc 100644 --- a/packages/schema/jupyterwidgetmodels.latest.json +++ b/packages/schema/jupyterwidgetmodels.latest.json @@ -8,7 +8,7 @@ "type": "string" }, { - "default": "1.1.0", + "default": "1.2.0", "help": "A semver requirement for namespace version containing the model.", "name": "_model_module_version", "type": "string" @@ -26,7 +26,7 @@ "type": "string" }, { - "default": "1.1.0", + "default": "1.2.0", "help": "", "name": "_view_module_version", "type": "string" @@ -94,8 +94,43 @@ { "allow_none": true, "default": null, - "help": "The border CSS attribute.", - "name": "border", + "help": "The border collapse CSS attribute.", + "name": "border_collapse", + "type": "string" + }, + { + "allow_none": true, + "default": null, + "help": "The border color CSS attribute.", + "name": "border_color", + "type": "string" + }, + { + "allow_none": true, + "default": null, + "help": "The border image CSS attribute.", + "name": "border_image", + "type": "string" + }, + { + "allow_none": true, + "default": null, + "help": "The border radius CSS attribute.", + "name": "border_radius", + "type": "string" + }, + { + "allow_none": true, + "default": null, + "help": "The border style CSS attribute.", + "name": "border_style", + "type": "string" + }, + { + "allow_none": true, + "default": null, + "help": "The border width CSS attribute.", + "name": "border_width", "type": "string" }, { @@ -229,6 +264,21 @@ "name": "justify_content", "type": "string" }, + { + "allow_none": true, + "default": null, + "enum": [ + "flex-start", + "flex-end", + "center", + "inherit", + "initial", + "unset" + ], + "help": "The justify-items CSS attribute.", + "name": "justify_items", + "type": "string" + }, { "allow_none": true, "default": null, @@ -274,56 +324,30 @@ { "allow_none": true, "default": null, - "help": "The order CSS attribute.", - "name": "order", + "enum": ["contain", "cover", "fill", "scale-down", "none"], + "help": "The object-fit CSS attribute.", + "name": "object_fit", "type": "string" }, { "allow_none": true, "default": null, - "enum": [ - "visible", - "hidden", - "scroll", - "auto", - "inherit", - "initial", - "unset" - ], - "help": "The overflow CSS attribute.", - "name": "overflow", + "help": "The object-position CSS attribute.", + "name": "object_position", "type": "string" }, { "allow_none": true, "default": null, - "enum": [ - "visible", - "hidden", - "scroll", - "auto", - "inherit", - "initial", - "unset" - ], - "help": "The overflow-x CSS attribute.", - "name": "overflow_x", + "help": "The order CSS attribute.", + "name": "order", "type": "string" }, { "allow_none": true, "default": null, - "enum": [ - "visible", - "hidden", - "scroll", - "auto", - "inherit", - "initial", - "unset" - ], - "help": "The overflow-y CSS attribute.", - "name": "overflow_y", + "help": "The overflow CSS attribute.", + "name": "overflow", "type": "string" }, { @@ -366,12 +390,12 @@ "model": { "module": "@jupyter-widgets/base", "name": "LayoutModel", - "version": "1.1.0" + "version": "1.2.0" }, "view": { "module": "@jupyter-widgets/base", "name": "LayoutView", - "version": "1.1.0" + "version": "1.2.0" } }, { @@ -392,7 +416,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_model_module_version", "type": "string" @@ -416,7 +440,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_view_module_version", "type": "string" @@ -457,17 +481,31 @@ "help": "The index of the selected page. This is either an integer selecting a particular sub-widget, or None to have no widgets selected.", "name": "selected_index", "type": "int" + }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" } ], "model": { "module": "@jupyter-widgets/controls", "name": "AccordionModel", - "version": "1.4.0" + "version": "1.5.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "AccordionView", - "version": "1.4.0" + "version": "1.5.0" } }, { @@ -488,7 +526,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_model_module_version", "type": "string" @@ -506,7 +544,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_view_module_version", "type": "string" @@ -548,9 +586,23 @@ "name": "loop", "type": "bool" }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" + }, { "default": "b''", - "help": "The media data as a byte string.", + "help": "The media data as a memory view of bytes.", "name": "value", "type": "bytes" } @@ -558,12 +610,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "AudioModel", - "version": "1.4.0" + "version": "1.5.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "AudioView", - "version": "1.4.0" + "version": "1.5.0" } }, { @@ -584,7 +636,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_model_module_version", "type": "string" @@ -602,7 +654,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_view_module_version", "type": "string" @@ -625,13 +677,6 @@ "name": "description", "type": "string" }, - { - "allow_none": true, - "default": null, - "help": "Tooltip for the description (defaults to description).", - "name": "description_tooltip", - "type": "string" - }, { "default": false, "help": "Enable or disable user changes", @@ -671,6 +716,20 @@ "type": "reference", "widget": "DescriptionStyle" }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" + }, { "default": 0.0, "help": "Float value", @@ -681,12 +740,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "BoundedFloatTextModel", - "version": "1.4.0" + "version": "1.5.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "FloatTextView", - "version": "1.4.0" + "version": "1.5.0" } }, { @@ -707,7 +766,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_model_module_version", "type": "string" @@ -725,7 +784,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_view_module_version", "type": "string" @@ -748,13 +807,6 @@ "name": "description", "type": "string" }, - { - "allow_none": true, - "default": null, - "help": "Tooltip for the description (defaults to description).", - "name": "description_tooltip", - "type": "string" - }, { "default": false, "help": "Enable or disable user changes", @@ -793,6 +845,20 @@ "type": "reference", "widget": "DescriptionStyle" }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" + }, { "default": 0, "help": "Int value", @@ -803,12 +869,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "BoundedIntTextModel", - "version": "1.4.0" + "version": "1.5.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "IntTextView", - "version": "1.4.0" + "version": "1.5.0" } }, { @@ -829,7 +895,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_model_module_version", "type": "string" @@ -847,7 +913,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_view_module_version", "type": "string" @@ -881,17 +947,31 @@ "name": "layout", "type": "reference", "widget": "Layout" + }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" } ], "model": { "module": "@jupyter-widgets/controls", "name": "BoxModel", - "version": "1.4.0" + "version": "1.5.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "BoxView", - "version": "1.4.0" + "version": "1.5.0" } }, { @@ -912,7 +992,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_model_module_version", "type": "string" @@ -930,7 +1010,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_view_module_version", "type": "string" @@ -962,7 +1042,7 @@ }, { "default": "", - "help": "Font-awesome icon name, without the 'fa-' prefix.", + "help": "Font-awesome icon names, without the 'fa-' prefix.", "name": "icon", "type": "string" }, @@ -981,8 +1061,16 @@ "widget": "ButtonStyle" }, { - "default": "", - "help": "Tooltip caption of the button.", + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", "name": "tooltip", "type": "string" } @@ -990,12 +1078,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "ButtonModel", - "version": "1.4.0" + "version": "1.5.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "ButtonView", - "version": "1.4.0" + "version": "1.5.0" } }, { @@ -1007,7 +1095,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_model_module_version", "type": "string" @@ -1025,7 +1113,7 @@ "type": "string" }, { - "default": "1.1.0", + "default": "1.2.0", "help": "", "name": "_view_module_version", "type": "string" @@ -1053,12 +1141,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "ButtonStyleModel", - "version": "1.4.0" + "version": "1.5.0" }, "view": { "module": "@jupyter-widgets/base", "name": "StyleView", - "version": "1.1.0" + "version": "1.2.0" } }, { @@ -1079,7 +1167,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_model_module_version", "type": "string" @@ -1097,7 +1185,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_view_module_version", "type": "string" @@ -1114,13 +1202,6 @@ "name": "description", "type": "string" }, - { - "allow_none": true, - "default": null, - "help": "Tooltip for the description (defaults to description).", - "name": "description_tooltip", - "type": "string" - }, { "default": false, "help": "Enable or disable user changes.", @@ -1147,6 +1228,20 @@ "type": "reference", "widget": "DescriptionStyle" }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" + }, { "default": false, "help": "Bool value", @@ -1157,12 +1252,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "CheckboxModel", - "version": "1.4.0" + "version": "1.5.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "CheckboxView", - "version": "1.4.0" + "version": "1.5.0" } }, { @@ -1183,7 +1278,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_model_module_version", "type": "string" @@ -1201,7 +1296,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_view_module_version", "type": "string" @@ -1224,13 +1319,6 @@ "name": "description", "type": "string" }, - { - "allow_none": true, - "default": null, - "help": "Tooltip for the description (defaults to description).", - "name": "description_tooltip", - "type": "string" - }, { "default": false, "help": "Enable or disable user changes.", @@ -1251,6 +1339,20 @@ "type": "reference", "widget": "DescriptionStyle" }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" + }, { "default": "black", "help": "The color value.", @@ -1261,12 +1363,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "ColorPickerModel", - "version": "1.4.0" + "version": "1.5.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "ColorPickerView", - "version": "1.4.0" + "version": "1.5.0" } }, { @@ -1287,13 +1389,13 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_model_module_version", "type": "string" }, { - "default": "ControllerAxisModel", + "default": "ComboboxModel", "help": "", "name": "_model_name", "type": "string" @@ -1305,17 +1407,41 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_view_module_version", "type": "string" }, { - "default": "ControllerAxisView", + "default": "ComboboxView", "help": "", "name": "_view_name", "type": "string" }, + { + "default": true, + "help": "Update the value as the user types. If False, update on submission, e.g., pressing Enter or navigating away.", + "name": "continuous_update", + "type": "bool" + }, + { + "default": "", + "help": "Description of the control.", + "name": "description", + "type": "string" + }, + { + "default": false, + "help": "Enable or disable user changes", + "name": "disabled", + "type": "bool" + }, + { + "default": false, + "help": "If set, ensure value is in options. Implies continuous_update=False.", + "name": "ensure_option", + "type": "bool" + }, { "default": "reference to new instance", "help": "", @@ -1324,21 +1450,57 @@ "widget": "Layout" }, { - "default": 0.0, - "help": "The value of the axis.", + "default": [], + "help": "Dropdown options for the combobox", + "items": { + "type": "string" + }, + "name": "options", + "type": "array" + }, + { + "default": "\u200b", + "help": "Placeholder text to display when nothing has been typed", + "name": "placeholder", + "type": "string" + }, + { + "default": "reference to new instance", + "help": "Styling customizations", + "name": "style", + "type": "reference", + "widget": "DescriptionStyle" + }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" + }, + { + "default": "", + "help": "String value", "name": "value", - "type": "float" + "type": "string" } ], "model": { "module": "@jupyter-widgets/controls", - "name": "ControllerAxisModel", - "version": "1.4.0" + "name": "ComboboxModel", + "version": "1.5.0" }, "view": { "module": "@jupyter-widgets/controls", - "name": "ControllerAxisView", - "version": "1.4.0" + "name": "ComboboxView", + "version": "1.5.0" } }, { @@ -1359,13 +1521,13 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_model_module_version", "type": "string" }, { - "default": "ControllerButtonModel", + "default": "ControllerAxisModel", "help": "", "name": "_model_name", "type": "string" @@ -1377,13 +1539,13 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_view_module_version", "type": "string" }, { - "default": "ControllerButtonView", + "default": "ControllerAxisView", "help": "", "name": "_view_name", "type": "string" @@ -1396,27 +1558,35 @@ "widget": "Layout" }, { - "default": false, - "help": "Whether the button is pressed.", - "name": "pressed", + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", "type": "bool" }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" + }, { "default": 0.0, - "help": "The value of the button.", + "help": "The value of the axis.", "name": "value", "type": "float" } ], "model": { "module": "@jupyter-widgets/controls", - "name": "ControllerButtonModel", - "version": "1.4.0" + "name": "ControllerAxisModel", + "version": "1.5.0" }, "view": { "module": "@jupyter-widgets/controls", - "name": "ControllerButtonView", - "version": "1.4.0" + "name": "ControllerAxisView", + "version": "1.5.0" } }, { @@ -1437,13 +1607,13 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_model_module_version", "type": "string" }, { - "default": "ControllerModel", + "default": "ControllerButtonModel", "help": "", "name": "_model_name", "type": "string" @@ -1455,7 +1625,99 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", + "help": "", + "name": "_view_module_version", + "type": "string" + }, + { + "default": "ControllerButtonView", + "help": "", + "name": "_view_name", + "type": "string" + }, + { + "default": "reference to new instance", + "help": "", + "name": "layout", + "type": "reference", + "widget": "Layout" + }, + { + "default": false, + "help": "Whether the button is pressed.", + "name": "pressed", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" + }, + { + "default": 0.0, + "help": "The value of the button.", + "name": "value", + "type": "float" + } + ], + "model": { + "module": "@jupyter-widgets/controls", + "name": "ControllerButtonModel", + "version": "1.5.0" + }, + "view": { + "module": "@jupyter-widgets/controls", + "name": "ControllerButtonView", + "version": "1.5.0" + } + }, + { + "attributes": [ + { + "default": [], + "help": "CSS classes applied to widget DOM element", + "items": { + "type": "string" + }, + "name": "_dom_classes", + "type": "array" + }, + { + "default": "@jupyter-widgets/controls", + "help": "", + "name": "_model_module", + "type": "string" + }, + { + "default": "1.5.0", + "help": "", + "name": "_model_module_version", + "type": "string" + }, + { + "default": "ControllerModel", + "help": "", + "name": "_model_name", + "type": "string" + }, + { + "default": "@jupyter-widgets/controls", + "help": "", + "name": "_view_module", + "type": "string" + }, + { + "default": "1.5.0", "help": "", "name": "_view_module_version", "type": "string" @@ -1517,22 +1779,36 @@ "name": "name", "type": "string" }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, { "default": 0.0, "help": "The last time the data from this gamepad was updated.", "name": "timestamp", "type": "float" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" } ], "model": { "module": "@jupyter-widgets/controls", "name": "ControllerModel", - "version": "1.4.0" + "version": "1.5.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "ControllerView", - "version": "1.4.0" + "version": "1.5.0" } }, { @@ -1553,7 +1829,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_model_module_version", "type": "string" @@ -1571,7 +1847,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_view_module_version", "type": "string" @@ -1590,9 +1866,23 @@ "type": "reference", "widget": "Layout" }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" + }, { "default": "b''", - "help": "The media data as a byte string.", + "help": "The media data as a memory view of bytes.", "name": "value", "type": "bytes" } @@ -1600,12 +1890,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "DOMWidgetModel", - "version": "1.4.0" + "version": "1.5.0" }, "view": { "module": "@jupyter-widgets/controls", "name": null, - "version": "1.4.0" + "version": "1.5.0" } }, { @@ -1626,7 +1916,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_model_module_version", "type": "string" @@ -1644,7 +1934,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_view_module_version", "type": "string" @@ -1661,13 +1951,6 @@ "name": "description", "type": "string" }, - { - "allow_none": true, - "default": null, - "help": "Tooltip for the description (defaults to description).", - "name": "description_tooltip", - "type": "string" - }, { "default": false, "help": "Enable or disable user changes.", @@ -1688,6 +1971,20 @@ "type": "reference", "widget": "DescriptionStyle" }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" + }, { "allow_none": true, "default": null, @@ -1699,12 +1996,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "DatePickerModel", - "version": "1.4.0" + "version": "1.5.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "DatePickerView", - "version": "1.4.0" + "version": "1.5.0" } }, { @@ -1716,7 +2013,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_model_module_version", "type": "string" @@ -1734,7 +2031,7 @@ "type": "string" }, { - "default": "1.1.0", + "default": "1.2.0", "help": "", "name": "_view_module_version", "type": "string" @@ -1755,12 +2052,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "DescriptionStyleModel", - "version": "1.4.0" + "version": "1.5.0" }, "view": { "module": "@jupyter-widgets/base", "name": "StyleView", - "version": "1.1.0" + "version": "1.2.0" } }, { @@ -1772,7 +2069,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_model_module_version", "type": "string" @@ -1790,7 +2087,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_view_module_version", "type": "string" @@ -1818,12 +2115,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "DirectionalLinkModel", - "version": "1.4.0" + "version": "1.5.0" }, "view": { "module": "@jupyter-widgets/controls", "name": null, - "version": "1.4.0" + "version": "1.5.0" } }, { @@ -1844,7 +2141,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_model_module_version", "type": "string" @@ -1871,7 +2168,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_view_module_version", "type": "string" @@ -1888,13 +2185,6 @@ "name": "description", "type": "string" }, - { - "allow_none": true, - "default": null, - "help": "Tooltip for the description (defaults to description).", - "name": "description_tooltip", - "type": "string" - }, { "default": false, "help": "Enable or disable user changes", @@ -1921,17 +2211,167 @@ "name": "style", "type": "reference", "widget": "DescriptionStyle" + }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" } ], "model": { "module": "@jupyter-widgets/controls", "name": "DropdownModel", - "version": "1.4.0" + "version": "1.5.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "DropdownView", - "version": "1.4.0" + "version": "1.5.0" + } + }, + { + "attributes": [ + { + "default": [], + "help": "CSS classes applied to widget DOM element", + "items": { + "type": "string" + }, + "name": "_dom_classes", + "type": "array" + }, + { + "default": "@jupyter-widgets/controls", + "help": "", + "name": "_model_module", + "type": "string" + }, + { + "default": "1.5.0", + "help": "", + "name": "_model_module_version", + "type": "string" + }, + { + "default": "FileUploadModel", + "help": "", + "name": "_model_name", + "type": "string" + }, + { + "default": "@jupyter-widgets/controls", + "help": "", + "name": "_view_module", + "type": "string" + }, + { + "default": "1.5.0", + "help": "", + "name": "_view_module_version", + "type": "string" + }, + { + "default": "FileUploadView", + "help": "", + "name": "_view_name", + "type": "string" + }, + { + "default": "", + "help": "File types to accept, empty string for all", + "name": "accept", + "type": "string" + }, + { + "default": "", + "enum": ["primary", "success", "info", "warning", "danger", ""], + "help": "Use a predefined styling for the button.", + "name": "button_style", + "type": "string" + }, + { + "default": "", + "help": "Description of the control.", + "name": "description", + "type": "string" + }, + { + "default": false, + "help": "Enable or disable button", + "name": "disabled", + "type": "bool" + }, + { + "default": "", + "help": "Error message", + "name": "error", + "type": "string" + }, + { + "default": "upload", + "help": "Font-awesome icon name, without the 'fa-' prefix.", + "name": "icon", + "type": "string" + }, + { + "default": "reference to new instance", + "help": "", + "name": "layout", + "type": "reference", + "widget": "Layout" + }, + { + "default": false, + "help": "If True, allow for multiple files upload", + "name": "multiple", + "type": "bool" + }, + { + "default": "reference to new instance", + "help": "", + "name": "style", + "type": "reference", + "widget": "ButtonStyle" + }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" + }, + { + "default": [], + "help": "The file upload value", + "name": "value", + "type": "array" + } + ], + "model": { + "module": "@jupyter-widgets/controls", + "name": "FileUploadModel", + "version": "1.5.0" + }, + "view": { + "module": "@jupyter-widgets/controls", + "name": "FileUploadView", + "version": "1.5.0" } }, { @@ -1952,7 +2392,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_model_module_version", "type": "string" @@ -1970,7 +2410,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_view_module_version", "type": "string" @@ -1999,13 +2439,6 @@ "name": "description", "type": "string" }, - { - "allow_none": true, - "default": null, - "help": "Tooltip for the description (defaults to description).", - "name": "description_tooltip", - "type": "string" - }, { "default": false, "help": "Enable or disable user changes", @@ -2063,6 +2496,20 @@ "type": "reference", "widget": "SliderStyle" }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" + }, { "default": 1.0, "help": "Float value", @@ -2073,12 +2520,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "FloatLogSliderModel", - "version": "1.4.0" + "version": "1.5.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "FloatLogSliderView", - "version": "1.4.0" + "version": "1.5.0" } }, { @@ -2099,7 +2546,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_model_module_version", "type": "string" @@ -2117,7 +2564,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_view_module_version", "type": "string" @@ -2142,13 +2589,6 @@ "name": "description", "type": "string" }, - { - "allow_none": true, - "default": null, - "help": "Tooltip for the description (defaults to description).", - "name": "description_tooltip", - "type": "string" - }, { "default": "reference to new instance", "help": "", @@ -2182,6 +2622,20 @@ "type": "reference", "widget": "ProgressStyle" }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" + }, { "default": 0.0, "help": "Float value", @@ -2192,12 +2646,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "FloatProgressModel", - "version": "1.4.0" + "version": "1.5.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "ProgressView", - "version": "1.4.0" + "version": "1.5.0" } }, { @@ -2218,7 +2672,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_model_module_version", "type": "string" @@ -2236,7 +2690,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_view_module_version", "type": "string" @@ -2259,13 +2713,6 @@ "name": "description", "type": "string" }, - { - "allow_none": true, - "default": null, - "help": "Tooltip for the description (defaults to description).", - "name": "description_tooltip", - "type": "string" - }, { "default": false, "help": "Enable or disable user changes", @@ -2323,6 +2770,20 @@ "type": "reference", "widget": "SliderStyle" }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" + }, { "default": [0.0, 1.0], "help": "Tuple of (lower, upper) bounds", @@ -2333,12 +2794,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "FloatRangeSliderModel", - "version": "1.4.0" + "version": "1.5.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "FloatRangeSliderView", - "version": "1.4.0" + "version": "1.5.0" } }, { @@ -2359,7 +2820,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_model_module_version", "type": "string" @@ -2377,7 +2838,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_view_module_version", "type": "string" @@ -2400,13 +2861,6 @@ "name": "description", "type": "string" }, - { - "allow_none": true, - "default": null, - "help": "Tooltip for the description (defaults to description).", - "name": "description_tooltip", - "type": "string" - }, { "default": false, "help": "Enable or disable user changes", @@ -2464,6 +2918,20 @@ "type": "reference", "widget": "SliderStyle" }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" + }, { "default": 0.0, "help": "Float value", @@ -2474,12 +2942,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "FloatSliderModel", - "version": "1.4.0" + "version": "1.5.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "FloatSliderView", - "version": "1.4.0" + "version": "1.5.0" } }, { @@ -2500,7 +2968,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_model_module_version", "type": "string" @@ -2518,7 +2986,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_view_module_version", "type": "string" @@ -2535,17 +3003,10 @@ "name": "continuous_update", "type": "bool" }, - { - "default": "", - "help": "Description of the control.", - "name": "description", - "type": "string" - }, - { - "allow_none": true, - "default": null, - "help": "Tooltip for the description (defaults to description).", - "name": "description_tooltip", + { + "default": "", + "help": "Description of the control.", + "name": "description", "type": "string" }, { @@ -2575,6 +3036,20 @@ "type": "reference", "widget": "DescriptionStyle" }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" + }, { "default": 0.0, "help": "Float value", @@ -2585,12 +3060,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "FloatTextModel", - "version": "1.4.0" + "version": "1.5.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "FloatTextView", - "version": "1.4.0" + "version": "1.5.0" } }, { @@ -2611,7 +3086,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_model_module_version", "type": "string" @@ -2629,7 +3104,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_view_module_version", "type": "string" @@ -2663,17 +3138,31 @@ "name": "layout", "type": "reference", "widget": "Layout" + }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" } ], "model": { "module": "@jupyter-widgets/controls", "name": "GridBoxModel", - "version": "1.4.0" + "version": "1.5.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "GridBoxView", - "version": "1.4.0" + "version": "1.5.0" } }, { @@ -2694,7 +3183,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_model_module_version", "type": "string" @@ -2712,7 +3201,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_view_module_version", "type": "string" @@ -2746,17 +3235,31 @@ "name": "layout", "type": "reference", "widget": "Layout" + }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" } ], "model": { "module": "@jupyter-widgets/controls", "name": "HBoxModel", - "version": "1.4.0" + "version": "1.5.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "HBoxView", - "version": "1.4.0" + "version": "1.5.0" } }, { @@ -2777,7 +3280,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_model_module_version", "type": "string" @@ -2795,7 +3298,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_view_module_version", "type": "string" @@ -2812,13 +3315,6 @@ "name": "description", "type": "string" }, - { - "allow_none": true, - "default": null, - "help": "Tooltip for the description (defaults to description).", - "name": "description_tooltip", - "type": "string" - }, { "default": "reference to new instance", "help": "", @@ -2839,6 +3335,20 @@ "type": "reference", "widget": "DescriptionStyle" }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" + }, { "default": "", "help": "String value", @@ -2849,12 +3359,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "HTMLMathModel", - "version": "1.4.0" + "version": "1.5.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "HTMLMathView", - "version": "1.4.0" + "version": "1.5.0" } }, { @@ -2875,7 +3385,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_model_module_version", "type": "string" @@ -2893,7 +3403,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_view_module_version", "type": "string" @@ -2910,13 +3420,6 @@ "name": "description", "type": "string" }, - { - "allow_none": true, - "default": null, - "help": "Tooltip for the description (defaults to description).", - "name": "description_tooltip", - "type": "string" - }, { "default": "reference to new instance", "help": "", @@ -2937,6 +3440,20 @@ "type": "reference", "widget": "DescriptionStyle" }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" + }, { "default": "", "help": "String value", @@ -2947,12 +3464,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "HTMLModel", - "version": "1.4.0" + "version": "1.5.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "HTMLView", - "version": "1.4.0" + "version": "1.5.0" } }, { @@ -2973,7 +3490,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_model_module_version", "type": "string" @@ -2991,7 +3508,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_view_module_version", "type": "string" @@ -3010,7 +3527,7 @@ }, { "default": "", - "help": "Height of the image in pixels.", + "help": "Height of the image in pixels. Use layout.height for styling the widget.", "name": "height", "type": "string" }, @@ -3021,15 +3538,29 @@ "type": "reference", "widget": "Layout" }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" + }, { "default": "b''", - "help": "The media data as a byte string.", + "help": "The media data as a memory view of bytes.", "name": "value", "type": "bytes" }, { "default": "", - "help": "Width of the image in pixels.", + "help": "Width of the image in pixels. Use layout.width for styling the widget.", "name": "width", "type": "string" } @@ -3037,12 +3568,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "ImageModel", - "version": "1.4.0" + "version": "1.5.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "ImageView", - "version": "1.4.0" + "version": "1.5.0" } }, { @@ -3063,7 +3594,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_model_module_version", "type": "string" @@ -3081,7 +3612,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_view_module_version", "type": "string" @@ -3105,13 +3636,6 @@ "name": "description", "type": "string" }, - { - "allow_none": true, - "default": null, - "help": "Tooltip for the description (defaults to description).", - "name": "description_tooltip", - "type": "string" - }, { "default": "reference to new instance", "help": "", @@ -3145,6 +3669,20 @@ "type": "reference", "widget": "ProgressStyle" }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" + }, { "default": 0, "help": "Int value", @@ -3155,12 +3693,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "IntProgressModel", - "version": "1.4.0" + "version": "1.5.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "ProgressView", - "version": "1.4.0" + "version": "1.5.0" } }, { @@ -3181,7 +3719,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_model_module_version", "type": "string" @@ -3199,7 +3737,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_view_module_version", "type": "string" @@ -3222,13 +3760,6 @@ "name": "description", "type": "string" }, - { - "allow_none": true, - "default": null, - "help": "Tooltip for the description (defaults to description).", - "name": "description_tooltip", - "type": "string" - }, { "default": false, "help": "Enable or disable user changes", @@ -3286,6 +3817,20 @@ "type": "reference", "widget": "SliderStyle" }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" + }, { "default": [0, 1], "help": "Tuple of (lower, upper) bounds", @@ -3296,12 +3841,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "IntRangeSliderModel", - "version": "1.4.0" + "version": "1.5.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "IntRangeSliderView", - "version": "1.4.0" + "version": "1.5.0" } }, { @@ -3322,7 +3867,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_model_module_version", "type": "string" @@ -3340,7 +3885,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_view_module_version", "type": "string" @@ -3363,13 +3908,6 @@ "name": "description", "type": "string" }, - { - "allow_none": true, - "default": null, - "help": "Tooltip for the description (defaults to description).", - "name": "description_tooltip", - "type": "string" - }, { "default": false, "help": "Enable or disable user changes", @@ -3427,6 +3965,20 @@ "type": "reference", "widget": "SliderStyle" }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" + }, { "default": 0, "help": "Int value", @@ -3437,12 +3989,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "IntSliderModel", - "version": "1.4.0" + "version": "1.5.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "IntSliderView", - "version": "1.4.0" + "version": "1.5.0" } }, { @@ -3463,7 +4015,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_model_module_version", "type": "string" @@ -3481,7 +4033,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_view_module_version", "type": "string" @@ -3504,13 +4056,6 @@ "name": "description", "type": "string" }, - { - "allow_none": true, - "default": null, - "help": "Tooltip for the description (defaults to description).", - "name": "description_tooltip", - "type": "string" - }, { "default": false, "help": "Enable or disable user changes", @@ -3537,6 +4082,20 @@ "type": "reference", "widget": "DescriptionStyle" }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" + }, { "default": 0, "help": "Int value", @@ -3547,12 +4106,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "IntTextModel", - "version": "1.4.0" + "version": "1.5.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "IntTextView", - "version": "1.4.0" + "version": "1.5.0" } }, { @@ -3573,7 +4132,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_model_module_version", "type": "string" @@ -3591,7 +4150,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_view_module_version", "type": "string" @@ -3608,13 +4167,6 @@ "name": "description", "type": "string" }, - { - "allow_none": true, - "default": null, - "help": "Tooltip for the description (defaults to description).", - "name": "description_tooltip", - "type": "string" - }, { "default": "reference to new instance", "help": "", @@ -3635,6 +4187,20 @@ "type": "reference", "widget": "DescriptionStyle" }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" + }, { "default": "", "help": "String value", @@ -3645,12 +4211,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "LabelModel", - "version": "1.4.0" + "version": "1.5.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "LabelView", - "version": "1.4.0" + "version": "1.5.0" } }, { @@ -3662,7 +4228,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_model_module_version", "type": "string" @@ -3680,7 +4246,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_view_module_version", "type": "string" @@ -3708,12 +4274,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "LinkModel", - "version": "1.4.0" + "version": "1.5.0" }, "view": { "module": "@jupyter-widgets/controls", "name": null, - "version": "1.4.0" + "version": "1.5.0" } }, { @@ -3734,7 +4300,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_model_module_version", "type": "string" @@ -3752,7 +4318,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_view_module_version", "type": "string" @@ -3775,13 +4341,6 @@ "name": "description", "type": "string" }, - { - "allow_none": true, - "default": null, - "help": "Tooltip for the description (defaults to description).", - "name": "description_tooltip", - "type": "string" - }, { "default": false, "help": "Enable or disable user changes", @@ -3808,6 +4367,20 @@ "type": "reference", "widget": "DescriptionStyle" }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" + }, { "default": "", "help": "String value", @@ -3818,12 +4391,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "PasswordModel", - "version": "1.4.0" + "version": "1.5.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "PasswordView", - "version": "1.4.0" + "version": "1.5.0" } }, { @@ -3844,7 +4417,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_model_module_version", "type": "string" @@ -3855,18 +4428,6 @@ "name": "_model_name", "type": "string" }, - { - "default": false, - "help": "Whether the control is currently playing.", - "name": "_playing", - "type": "bool" - }, - { - "default": false, - "help": "Whether the control will repeat in a continous loop.", - "name": "_repeat", - "type": "bool" - }, { "default": "@jupyter-widgets/controls", "help": "", @@ -3874,7 +4435,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_view_module_version", "type": "string" @@ -3891,13 +4452,6 @@ "name": "description", "type": "string" }, - { - "allow_none": true, - "default": null, - "help": "Tooltip for the description (defaults to description).", - "name": "description_tooltip", - "type": "string" - }, { "default": false, "help": "Enable or disable user changes", @@ -3906,7 +4460,7 @@ }, { "default": 100, - "help": "The maximum value for the play control.", + "help": "The time between two animation steps (ms).", "name": "interval", "type": "int" }, @@ -3929,6 +4483,18 @@ "name": "min", "type": "int" }, + { + "default": false, + "help": "Whether the control is currently playing.", + "name": "playing", + "type": "bool" + }, + { + "default": false, + "help": "Whether the control will repeat in a continous loop.", + "name": "repeat", + "type": "bool" + }, { "default": true, "help": "Show the repeat toggle button in the widget.", @@ -3948,6 +4514,20 @@ "type": "reference", "widget": "DescriptionStyle" }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" + }, { "default": 0, "help": "Int value", @@ -3958,12 +4538,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "PlayModel", - "version": "1.4.0" + "version": "1.5.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "PlayView", - "version": "1.4.0" + "version": "1.5.0" } }, { @@ -3975,7 +4555,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_model_module_version", "type": "string" @@ -3993,7 +4573,7 @@ "type": "string" }, { - "default": "1.1.0", + "default": "1.2.0", "help": "", "name": "_view_module_version", "type": "string" @@ -4021,12 +4601,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "ProgressStyleModel", - "version": "1.4.0" + "version": "1.5.0" }, "view": { "module": "@jupyter-widgets/base", "name": "StyleView", - "version": "1.1.0" + "version": "1.2.0" } }, { @@ -4047,7 +4627,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_model_module_version", "type": "string" @@ -4074,7 +4654,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_view_module_version", "type": "string" @@ -4091,13 +4671,6 @@ "name": "description", "type": "string" }, - { - "allow_none": true, - "default": null, - "help": "Tooltip for the description (defaults to description).", - "name": "description_tooltip", - "type": "string" - }, { "default": false, "help": "Enable or disable user changes", @@ -4124,17 +4697,31 @@ "name": "style", "type": "reference", "widget": "DescriptionStyle" + }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" } ], "model": { "module": "@jupyter-widgets/controls", "name": "RadioButtonsModel", - "version": "1.4.0" + "version": "1.5.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "RadioButtonsView", - "version": "1.4.0" + "version": "1.5.0" } }, { @@ -4155,7 +4742,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_model_module_version", "type": "string" @@ -4182,7 +4769,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_view_module_version", "type": "string" @@ -4199,13 +4786,6 @@ "name": "description", "type": "string" }, - { - "allow_none": true, - "default": null, - "help": "Tooltip for the description (defaults to description).", - "name": "description_tooltip", - "type": "string" - }, { "default": false, "help": "Enable or disable user changes", @@ -4238,17 +4818,31 @@ "name": "style", "type": "reference", "widget": "DescriptionStyle" + }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" } ], "model": { "module": "@jupyter-widgets/controls", "name": "SelectModel", - "version": "1.4.0" + "version": "1.5.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "SelectView", - "version": "1.4.0" + "version": "1.5.0" } }, { @@ -4269,7 +4863,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_model_module_version", "type": "string" @@ -4296,7 +4890,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_view_module_version", "type": "string" @@ -4313,13 +4907,6 @@ "name": "description", "type": "string" }, - { - "allow_none": true, - "default": null, - "help": "Tooltip for the description (defaults to description).", - "name": "description_tooltip", - "type": "string" - }, { "default": false, "help": "Enable or disable user changes", @@ -4354,17 +4941,31 @@ "name": "style", "type": "reference", "widget": "DescriptionStyle" + }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" } ], "model": { "module": "@jupyter-widgets/controls", "name": "SelectMultipleModel", - "version": "1.4.0" + "version": "1.5.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "SelectMultipleView", - "version": "1.4.0" + "version": "1.5.0" } }, { @@ -4385,7 +4986,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_model_module_version", "type": "string" @@ -4412,7 +5013,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_view_module_version", "type": "string" @@ -4435,13 +5036,6 @@ "name": "description", "type": "string" }, - { - "allow_none": true, - "default": null, - "help": "Tooltip for the description (defaults to description).", - "name": "description_tooltip", - "type": "string" - }, { "default": false, "help": "Enable or disable user changes", @@ -4480,17 +5074,31 @@ "name": "style", "type": "reference", "widget": "DescriptionStyle" + }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" } ], "model": { "module": "@jupyter-widgets/controls", "name": "SelectionRangeSliderModel", - "version": "1.4.0" + "version": "1.5.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "SelectionRangeSliderView", - "version": "1.4.0" + "version": "1.5.0" } }, { @@ -4511,7 +5119,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_model_module_version", "type": "string" @@ -4538,7 +5146,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_view_module_version", "type": "string" @@ -4561,13 +5169,6 @@ "name": "description", "type": "string" }, - { - "allow_none": true, - "default": null, - "help": "Tooltip for the description (defaults to description).", - "name": "description_tooltip", - "type": "string" - }, { "default": false, "help": "Enable or disable user changes", @@ -4606,17 +5207,31 @@ "name": "style", "type": "reference", "widget": "DescriptionStyle" + }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" } ], "model": { "module": "@jupyter-widgets/controls", "name": "SelectionSliderModel", - "version": "1.4.0" + "version": "1.5.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "SelectionSliderView", - "version": "1.4.0" + "version": "1.5.0" } }, { @@ -4628,7 +5243,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_model_module_version", "type": "string" @@ -4646,7 +5261,7 @@ "type": "string" }, { - "default": "1.1.0", + "default": "1.2.0", "help": "", "name": "_view_module_version", "type": "string" @@ -4674,12 +5289,122 @@ "model": { "module": "@jupyter-widgets/controls", "name": "SliderStyleModel", - "version": "1.4.0" + "version": "1.5.0" }, "view": { "module": "@jupyter-widgets/base", "name": "StyleView", - "version": "1.1.0" + "version": "1.2.0" + } + }, + { + "attributes": [ + { + "default": [], + "help": "CSS classes applied to widget DOM element", + "items": { + "type": "string" + }, + "name": "_dom_classes", + "type": "array" + }, + { + "default": "@jupyter-widgets/controls", + "help": "", + "name": "_model_module", + "type": "string" + }, + { + "default": "1.5.0", + "help": "", + "name": "_model_module_version", + "type": "string" + }, + { + "default": "StackedModel", + "help": "", + "name": "_model_name", + "type": "string" + }, + { + "default": {}, + "help": "Titles of the pages", + "name": "_titles", + "type": "object" + }, + { + "default": "@jupyter-widgets/controls", + "help": "", + "name": "_view_module", + "type": "string" + }, + { + "default": "1.5.0", + "help": "", + "name": "_view_module_version", + "type": "string" + }, + { + "default": "StackedView", + "help": "", + "name": "_view_name", + "type": "string" + }, + { + "default": "", + "enum": ["success", "info", "warning", "danger", ""], + "help": "Use a predefined styling for the box.", + "name": "box_style", + "type": "string" + }, + { + "default": [], + "help": "List of widget children", + "items": { + "type": "reference", + "widget": "Widget" + }, + "name": "children", + "type": "array" + }, + { + "default": "reference to new instance", + "help": "", + "name": "layout", + "type": "reference", + "widget": "Layout" + }, + { + "allow_none": true, + "default": 0, + "help": "The index of the selected page. This is either an integer selecting a particular sub-widget, or None to have no widgets selected.", + "name": "selected_index", + "type": "int" + }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" + } + ], + "model": { + "module": "@jupyter-widgets/controls", + "name": "StackedModel", + "version": "1.5.0" + }, + "view": { + "module": "@jupyter-widgets/controls", + "name": "StackedView", + "version": "1.5.0" } }, { @@ -4700,7 +5425,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_model_module_version", "type": "string" @@ -4724,7 +5449,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_view_module_version", "type": "string" @@ -4765,17 +5490,31 @@ "help": "The index of the selected page. This is either an integer selecting a particular sub-widget, or None to have no widgets selected.", "name": "selected_index", "type": "int" + }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" } ], "model": { "module": "@jupyter-widgets/controls", "name": "TabModel", - "version": "1.4.0" + "version": "1.5.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "TabView", - "version": "1.4.0" + "version": "1.5.0" } }, { @@ -4796,7 +5535,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_model_module_version", "type": "string" @@ -4814,7 +5553,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_view_module_version", "type": "string" @@ -4837,13 +5576,6 @@ "name": "description", "type": "string" }, - { - "allow_none": true, - "default": null, - "help": "Tooltip for the description (defaults to description).", - "name": "description_tooltip", - "type": "string" - }, { "default": false, "help": "Enable or disable user changes", @@ -4870,6 +5602,20 @@ "type": "reference", "widget": "DescriptionStyle" }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" + }, { "default": "", "help": "String value", @@ -4880,12 +5626,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "TextModel", - "version": "1.4.0" + "version": "1.5.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "TextView", - "version": "1.4.0" + "version": "1.5.0" } }, { @@ -4906,7 +5652,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_model_module_version", "type": "string" @@ -4924,7 +5670,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_view_module_version", "type": "string" @@ -4947,13 +5693,6 @@ "name": "description", "type": "string" }, - { - "allow_none": true, - "default": null, - "help": "Tooltip for the description (defaults to description).", - "name": "description_tooltip", - "type": "string" - }, { "default": false, "help": "Enable or disable user changes", @@ -4987,6 +5726,20 @@ "type": "reference", "widget": "DescriptionStyle" }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" + }, { "default": "", "help": "String value", @@ -4997,12 +5750,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "TextareaModel", - "version": "1.4.0" + "version": "1.5.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "TextareaView", - "version": "1.4.0" + "version": "1.5.0" } }, { @@ -5023,7 +5776,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_model_module_version", "type": "string" @@ -5041,7 +5794,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_view_module_version", "type": "string" @@ -5065,13 +5818,6 @@ "name": "description", "type": "string" }, - { - "allow_none": true, - "default": null, - "help": "Tooltip for the description (defaults to description).", - "name": "description_tooltip", - "type": "string" - }, { "default": false, "help": "Enable or disable user changes.", @@ -5099,8 +5845,16 @@ "widget": "DescriptionStyle" }, { - "default": "", - "help": "Tooltip caption of the toggle button.", + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", "name": "tooltip", "type": "string" }, @@ -5114,12 +5868,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "ToggleButtonModel", - "version": "1.4.0" + "version": "1.5.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "ToggleButtonView", - "version": "1.4.0" + "version": "1.5.0" } }, { @@ -5140,7 +5894,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_model_module_version", "type": "string" @@ -5167,7 +5921,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_view_module_version", "type": "string" @@ -5192,13 +5946,6 @@ "name": "description", "type": "string" }, - { - "allow_none": true, - "default": null, - "help": "Tooltip for the description (defaults to description).", - "name": "description_tooltip", - "type": "string" - }, { "default": false, "help": "Enable or disable user changes", @@ -5235,6 +5982,20 @@ "type": "reference", "widget": "ToggleButtonsStyle" }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" + }, { "default": [], "help": "Tooltips for each button.", @@ -5248,12 +6009,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "ToggleButtonsModel", - "version": "1.4.0" + "version": "1.5.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "ToggleButtonsView", - "version": "1.4.0" + "version": "1.5.0" } }, { @@ -5265,7 +6026,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_model_module_version", "type": "string" @@ -5283,7 +6044,7 @@ "type": "string" }, { - "default": "1.1.0", + "default": "1.2.0", "help": "", "name": "_view_module_version", "type": "string" @@ -5316,12 +6077,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "ToggleButtonsStyleModel", - "version": "1.4.0" + "version": "1.5.0" }, "view": { "module": "@jupyter-widgets/base", "name": "StyleView", - "version": "1.1.0" + "version": "1.2.0" } }, { @@ -5342,7 +6103,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_model_module_version", "type": "string" @@ -5360,7 +6121,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_view_module_version", "type": "string" @@ -5394,17 +6155,31 @@ "name": "layout", "type": "reference", "widget": "Layout" + }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" } ], "model": { "module": "@jupyter-widgets/controls", "name": "VBoxModel", - "version": "1.4.0" + "version": "1.5.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "VBoxView", - "version": "1.4.0" + "version": "1.5.0" } }, { @@ -5425,7 +6200,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_model_module_version", "type": "string" @@ -5443,7 +6218,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_view_module_version", "type": "string" @@ -5460,13 +6235,6 @@ "name": "description", "type": "string" }, - { - "allow_none": true, - "default": null, - "help": "Tooltip for the description (defaults to description).", - "name": "description_tooltip", - "type": "string" - }, { "default": false, "help": "Enable or disable user changes.", @@ -5493,6 +6261,20 @@ "type": "reference", "widget": "DescriptionStyle" }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" + }, { "default": false, "help": "Bool value", @@ -5503,12 +6285,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "ValidModel", - "version": "1.4.0" + "version": "1.5.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "ValidView", - "version": "1.4.0" + "version": "1.5.0" } }, { @@ -5529,7 +6311,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_model_module_version", "type": "string" @@ -5547,7 +6329,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "1.5.0", "help": "", "name": "_view_module_version", "type": "string" @@ -5595,9 +6377,23 @@ "name": "loop", "type": "bool" }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" + }, { "default": "b''", - "help": "The media data as a byte string.", + "help": "The media data as a memory view of bytes.", "name": "value", "type": "bytes" }, @@ -5611,12 +6407,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "VideoModel", - "version": "1.4.0" + "version": "1.5.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "VideoView", - "version": "1.4.0" + "version": "1.5.0" } }, { @@ -5687,6 +6483,20 @@ }, "name": "outputs", "type": "array" + }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" } ], "model": { diff --git a/packages/schema/jupyterwidgetmodels.latest.md b/packages/schema/jupyterwidgetmodels.latest.md index 39e64ef994b..ede8da25071 100644 --- a/packages/schema/jupyterwidgetmodels.latest.md +++ b/packages/schema/jupyterwidgetmodels.latest.md @@ -29,7 +29,12 @@ Attribute | Type | Default | Help `align_content` | `null` or string (one of `'flex-start'`, `'flex-end'`, `'center'`, `'space-between'`, `'space-around'`, `'space-evenly'`, `'stretch'`, `'inherit'`, `'initial'`, `'unset'`) | `null` | The align-content CSS attribute. `align_items` | `null` or string (one of `'flex-start'`, `'flex-end'`, `'center'`, `'baseline'`, `'stretch'`, `'inherit'`, `'initial'`, `'unset'`) | `null` | The align-items CSS attribute. `align_self` | `null` or string (one of `'auto'`, `'flex-start'`, `'flex-end'`, `'center'`, `'baseline'`, `'stretch'`, `'inherit'`, `'initial'`, `'unset'`) | `null` | The align-self CSS attribute. -`border` | `null` or string | `null` | The border CSS attribute. +`border_collapse` | `null` or string | `null` | The border collapse CSS attribute. +`border_color` | `null` or string | `null` | The border color CSS attribute. +`border_image` | `null` or string | `null` | The border image CSS attribute. +`border_radius` | `null` or string | `null` | The border radius CSS attribute. +`border_style` | `null` or string | `null` | The border style CSS attribute. +`border_width` | `null` or string | `null` | The border width CSS attribute. `bottom` | `null` or string | `null` | The bottom CSS attribute. `display` | `null` or string | `null` | The display CSS attribute. `flex` | `null` or string | `null` | The flex CSS attribute. From 7c60bf17e36db3bf92ad52dc11c7e2a513e487d1 Mon Sep 17 00:00:00 2001 From: Zerline Date: Fri, 24 Jan 2020 22:17:22 +0100 Subject: [PATCH 005/101] Test file. --- tests/test_borders.ipynb | 168 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 168 insertions(+) create mode 100644 tests/test_borders.ipynb diff --git a/tests/test_borders.ipynb b/tests/test_borders.ipynb new file mode 100644 index 00000000000..b3561cdb3c8 --- /dev/null +++ b/tests/test_borders.ipynb @@ -0,0 +1,168 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from ipywidgets import *" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "t = Text(\"text input\")\n", + "b = Button(description=\"button\")\n", + "HBox((t,b))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#t.layout.__dict__" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "t.layout.border_style = \"solid\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "t.layout.border_color = \"blue green red yellow\"\n", + "t.layout.border_style = \"solid dashed spotted none\"\n", + "t.layout.border_width = \"1 2 3 4\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "t.layout.border_style = \"dashed dashed dashed dashed\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "b.layout.border_color = \"green red yellow blue\"\n", + "b.layout.border_style = \"solid dashed spotted none\"\n", + "b.layout.border_width = \"1 2 3 4\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "t.style.border = \"1px solid red\"\n", + "b.style.border = \"1px solid red\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "t.style.background_color = \"lightpurple\"\n", + "b.style.background_color = \"lightpurple\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#t.style.__dict__" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "t1 = Text(\"1\")\n", + "t2 = Text(\"2\")\n", + "t3 = Text(\"3\")\n", + "t4 = Text(\"4\")\n", + "t5 = Text(\"5\")\n", + "t6 = Text(\"6\")\n", + "\n", + "B = VBox((HBox((t1,t2,t3)), HBox((t4,t5,t6))))\n", + "# HBox(children=(Text(\"1\"), Text(\"2\"), Text(\"3\"))),\n", + "# HBox(children=(Text(\"4\"), Text(\"5\"), Text(\"6\")))))\n", + "B.layout.border_color = \"orange\"\n", + "B" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "t1.layout.border_color = \"red\"\n", + "t2.layout.border_color = \"red\"\n", + "t3.layout.border_color = \"red\"\n", + "t4.layout.border_color = \"red\"\n", + "t5.layout.border_color = \"red\"\n", + "t6.layout.border_color = \"red\"\n", + "\n", + "t1.layout.border_width = \"2\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "B.layout.border_collapse = \"collapse\"" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} From 03da090f43692a47af5c7228aed2e80e51cf3882 Mon Sep 17 00:00:00 2001 From: Zerline Date: Sun, 26 Jan 2020 14:17:36 +0100 Subject: [PATCH 006/101] Border, border-top, border-right .. --- ipywidgets/widgets/widget_layout.py | 11 +- packages/base/src/widget_layout.ts | 11 +- .../schema/jupyterwidgetmodels.latest.json | 27 ++--- packages/schema/jupyterwidgetmodels.latest.md | 11 +- tests/test_borders.ipynb | 112 +++--------------- 5 files changed, 43 insertions(+), 129 deletions(-) diff --git a/ipywidgets/widgets/widget_layout.py b/ipywidgets/widgets/widget_layout.py index 4644fd255ac..db3bc50c715 100644 --- a/ipywidgets/widgets/widget_layout.py +++ b/ipywidgets/widgets/widget_layout.py @@ -37,13 +37,12 @@ class Layout(Widget): 'baseline', 'stretch'] + CSS_PROPERTIES, allow_none=True, help="The align-items CSS attribute.").tag(sync=True) align_self = CaselessStrEnum(['auto', 'flex-start', 'flex-end', 'center', 'baseline', 'stretch'] + CSS_PROPERTIES, allow_none=True, help="The align-self CSS attribute.").tag(sync=True) + border = Unicode(None, allow_none=True, help="The border CSS attribute.").tag(sync=True) + border_top = Unicode(None, allow_none=True, help="The border top CSS attribute.").tag(sync=True) + border_right = Unicode(None, allow_none=True, help="The border right CSS attribute.").tag(sync=True) + border_bottom = Unicode(None, allow_none=True, help="The border bottom CSS attribute.").tag(sync=True) + border_left = Unicode(None, allow_none=True, help="The border left CSS attribute.").tag(sync=True) bottom = Unicode(None, allow_none=True, help="The bottom CSS attribute.").tag(sync=True) - border_collapse = Unicode(None, allow_none=True, help="The border collapse CSS attribute.").tag(sync=True) - border_color = Unicode(None, allow_none=True, help="The border color CSS attribute.").tag(sync=True) - border_image = Unicode(None, allow_none=True, help="The border image CSS attribute.").tag(sync=True) - border_radius = Unicode(None, allow_none=True, help="The border radius CSS attribute.").tag(sync=True) - border_style = Unicode(None, allow_none=True, help="The border style CSS attribute.").tag(sync=True) - border_width = Unicode(None, allow_none=True, help="The border width CSS attribute.").tag(sync=True) display = Unicode(None, allow_none=True, help="The display CSS attribute.").tag(sync=True) flex = Unicode(None, allow_none=True, help="The flex CSS attribute.").tag(sync=True) flex_flow = Unicode(None, allow_none=True, help="The flex-flow CSS attribute.").tag(sync=True) diff --git a/packages/base/src/widget_layout.ts b/packages/base/src/widget_layout.ts index 94709b42ee9..d0bdb0c4e53 100644 --- a/packages/base/src/widget_layout.ts +++ b/packages/base/src/widget_layout.ts @@ -12,12 +12,11 @@ const css_properties: Dict = { align_content: null, align_items: null, align_self: null, - border_collapse: null, - border_color: null, - border_image: null, - border_radius: null, - border_style: null, - border_width: null, + border: null, + border_top: null, + border_right: null, + border_bottom: null, + border_left: null, bottom: null, display: null, flex: null, diff --git a/packages/schema/jupyterwidgetmodels.latest.json b/packages/schema/jupyterwidgetmodels.latest.json index 7e9d08cf1fc..d2899952e6a 100644 --- a/packages/schema/jupyterwidgetmodels.latest.json +++ b/packages/schema/jupyterwidgetmodels.latest.json @@ -94,43 +94,36 @@ { "allow_none": true, "default": null, - "help": "The border collapse CSS attribute.", - "name": "border_collapse", + "help": "The border CSS attribute.", + "name": "border", "type": "string" }, { "allow_none": true, "default": null, - "help": "The border color CSS attribute.", - "name": "border_color", + "help": "The border bottom CSS attribute.", + "name": "border_bottom", "type": "string" }, { "allow_none": true, "default": null, - "help": "The border image CSS attribute.", - "name": "border_image", + "help": "The border left CSS attribute.", + "name": "border_left", "type": "string" }, { "allow_none": true, "default": null, - "help": "The border radius CSS attribute.", - "name": "border_radius", + "help": "The border right CSS attribute.", + "name": "border_right", "type": "string" }, { "allow_none": true, "default": null, - "help": "The border style CSS attribute.", - "name": "border_style", - "type": "string" - }, - { - "allow_none": true, - "default": null, - "help": "The border width CSS attribute.", - "name": "border_width", + "help": "The border top CSS attribute.", + "name": "border_top", "type": "string" }, { diff --git a/packages/schema/jupyterwidgetmodels.latest.md b/packages/schema/jupyterwidgetmodels.latest.md index ede8da25071..e70377109e7 100644 --- a/packages/schema/jupyterwidgetmodels.latest.md +++ b/packages/schema/jupyterwidgetmodels.latest.md @@ -29,12 +29,11 @@ Attribute | Type | Default | Help `align_content` | `null` or string (one of `'flex-start'`, `'flex-end'`, `'center'`, `'space-between'`, `'space-around'`, `'space-evenly'`, `'stretch'`, `'inherit'`, `'initial'`, `'unset'`) | `null` | The align-content CSS attribute. `align_items` | `null` or string (one of `'flex-start'`, `'flex-end'`, `'center'`, `'baseline'`, `'stretch'`, `'inherit'`, `'initial'`, `'unset'`) | `null` | The align-items CSS attribute. `align_self` | `null` or string (one of `'auto'`, `'flex-start'`, `'flex-end'`, `'center'`, `'baseline'`, `'stretch'`, `'inherit'`, `'initial'`, `'unset'`) | `null` | The align-self CSS attribute. -`border_collapse` | `null` or string | `null` | The border collapse CSS attribute. -`border_color` | `null` or string | `null` | The border color CSS attribute. -`border_image` | `null` or string | `null` | The border image CSS attribute. -`border_radius` | `null` or string | `null` | The border radius CSS attribute. -`border_style` | `null` or string | `null` | The border style CSS attribute. -`border_width` | `null` or string | `null` | The border width CSS attribute. +`border` | `null` or string | `null` | The border CSS attribute. +`border_bottom` | `null` or string | `null` | The border bottom CSS attribute. +`border_left` | `null` or string | `null` | The border left CSS attribute. +`border_right` | `null` or string | `null` | The border right CSS attribute. +`border_top` | `null` or string | `null` | The border top CSS attribute. `bottom` | `null` or string | `null` | The bottom CSS attribute. `display` | `null` or string | `null` | The display CSS attribute. `flex` | `null` or string | `null` | The flex CSS attribute. diff --git a/tests/test_borders.ipynb b/tests/test_borders.ipynb index b3561cdb3c8..b5049fdaa39 100644 --- a/tests/test_borders.ipynb +++ b/tests/test_borders.ipynb @@ -15,9 +15,9 @@ "metadata": {}, "outputs": [], "source": [ - "t = Text(\"text input\")\n", - "b = Button(description=\"button\")\n", - "HBox((t,b))" + "t1 = Text(\"text input\")\n", + "b1 = Button(description=\"button\")\n", + "HBox((t1,b1))" ] }, { @@ -26,7 +26,10 @@ "metadata": {}, "outputs": [], "source": [ - "#t.layout.__dict__" + "b1.layout.border = \"2px solid yellow\"\n", + "t1.layout.border = \"1px dashed red\"\n", + "t1.layout.border_left = \"5px dotted blue\"\n", + "b1.layout.border_right = \"2px dotted blue\"" ] }, { @@ -35,7 +38,9 @@ "metadata": {}, "outputs": [], "source": [ - "t.layout.border_style = \"solid\"" + "t2 = Text(\"text input\")\n", + "b2 = ToggleButton(description=\"toggle button\")\n", + "HBox((t2,b2))" ] }, { @@ -44,9 +49,10 @@ "metadata": {}, "outputs": [], "source": [ - "t.layout.border_color = \"blue green red yellow\"\n", - "t.layout.border_style = \"solid dashed spotted none\"\n", - "t.layout.border_width = \"1 2 3 4\"" + "t2.layout.border_left = \"5px dotted blue\"\n", + "b2.layout.border_right = \"2px dotted blue\"\n", + "b2.layout.border = \"2px solid yellow\"\n", + "t2.layout.border = \"1px dashed red\"" ] }, { @@ -55,92 +61,10 @@ "metadata": {}, "outputs": [], "source": [ - "t.layout.border_style = \"dashed dashed dashed dashed\"" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "b.layout.border_color = \"green red yellow blue\"\n", - "b.layout.border_style = \"solid dashed spotted none\"\n", - "b.layout.border_width = \"1 2 3 4\"" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "t.style.border = \"1px solid red\"\n", - "b.style.border = \"1px solid red\"" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "t.style.background_color = \"lightpurple\"\n", - "b.style.background_color = \"lightpurple\"" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "#t.style.__dict__" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "t1 = Text(\"1\")\n", - "t2 = Text(\"2\")\n", - "t3 = Text(\"3\")\n", - "t4 = Text(\"4\")\n", - "t5 = Text(\"5\")\n", - "t6 = Text(\"6\")\n", - "\n", - "B = VBox((HBox((t1,t2,t3)), HBox((t4,t5,t6))))\n", - "# HBox(children=(Text(\"1\"), Text(\"2\"), Text(\"3\"))),\n", - "# HBox(children=(Text(\"4\"), Text(\"5\"), Text(\"6\")))))\n", - "B.layout.border_color = \"orange\"\n", - "B" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "t1.layout.border_color = \"red\"\n", - "t2.layout.border_color = \"red\"\n", - "t3.layout.border_color = \"red\"\n", - "t4.layout.border_color = \"red\"\n", - "t5.layout.border_color = \"red\"\n", - "t6.layout.border_color = \"red\"\n", - "\n", - "t1.layout.border_width = \"2\"" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "B.layout.border_collapse = \"collapse\"" + "t1.style.border_top = \"5px solid green\"\n", + "b1.style.border = \"1px solid purple\"\n", + "t2.style.border_top = \"5px solid green\"\n", + "b2.style.border = \"1px solid purple\"" ] } ], From c9ed15c8c28b49cb760609b046deb9b8efab5083 Mon Sep 17 00:00:00 2001 From: Zerline Date: Thu, 30 Jan 2020 16:47:14 +0100 Subject: [PATCH 007/101] 'border' set at widget creation. --- ipywidgets/widgets/widget_layout.py | 8 ++++++++ tests/test_borders.ipynb | 13 +++++-------- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/ipywidgets/widgets/widget_layout.py b/ipywidgets/widgets/widget_layout.py index db3bc50c715..4cbe03e9262 100644 --- a/ipywidgets/widgets/widget_layout.py +++ b/ipywidgets/widgets/widget_layout.py @@ -79,6 +79,14 @@ class Layout(Widget): grid_column = Unicode(None, allow_none=True, help="The grid-column CSS attribute.").tag(sync=True) grid_area = Unicode(None, allow_none=True, help="The grid-area CSS attribute.").tag(sync=True) + def __init__(self, **kwargs): + """Public constructor""" + super().__init__(**kwargs) + if self.border is not None: + for side in ['top', 'right', 'bottom', 'left']: + if getattr(self, "border_" + side) is None: + setattr(self, "border_" + side, self.border) + class LayoutTraitType(Instance): diff --git a/tests/test_borders.ipynb b/tests/test_borders.ipynb index b5049fdaa39..39001df1c09 100644 --- a/tests/test_borders.ipynb +++ b/tests/test_borders.ipynb @@ -15,7 +15,7 @@ "metadata": {}, "outputs": [], "source": [ - "t1 = Text(\"text input\")\n", + "t1 = Text(\"text input\", layout=Layout(width=\"80px\", border=\"1px dashed red\"))\n", "b1 = Button(description=\"button\")\n", "HBox((t1,b1))" ] @@ -27,7 +27,6 @@ "outputs": [], "source": [ "b1.layout.border = \"2px solid yellow\"\n", - "t1.layout.border = \"1px dashed red\"\n", "t1.layout.border_left = \"5px dotted blue\"\n", "b1.layout.border_right = \"2px dotted blue\"" ] @@ -39,7 +38,7 @@ "outputs": [], "source": [ "t2 = Text(\"text input\")\n", - "b2 = ToggleButton(description=\"toggle button\")\n", + "b2 = ToggleButton(description=\"toggle button\", layout=Layout(width=\"200px\", border_left=\"2px solid yellow\"))\n", "HBox((t2,b2))" ] }, @@ -51,7 +50,6 @@ "source": [ "t2.layout.border_left = \"5px dotted blue\"\n", "b2.layout.border_right = \"2px dotted blue\"\n", - "b2.layout.border = \"2px solid yellow\"\n", "t2.layout.border = \"1px dashed red\"" ] }, @@ -61,10 +59,9 @@ "metadata": {}, "outputs": [], "source": [ - "t1.style.border_top = \"5px solid green\"\n", - "b1.style.border = \"1px solid purple\"\n", - "t2.style.border_top = \"5px solid green\"\n", - "b2.style.border = \"1px solid purple\"" + "t1.layout.border_top = \"5px solid green\"\n", + "b1.layout.border = \"1px solid purple\"\n", + "t2.layout.border_right = \"5px double skyblue\"" ] } ], From 2fb38c048c02b162a5de427070b88263d241a202 Mon Sep 17 00:00:00 2001 From: Zerline Date: Thu, 30 Jan 2020 18:48:22 +0100 Subject: [PATCH 008/101] Test file small changes. --- tests/test_borders.ipynb | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/tests/test_borders.ipynb b/tests/test_borders.ipynb index 39001df1c09..b575be43f7b 100644 --- a/tests/test_borders.ipynb +++ b/tests/test_borders.ipynb @@ -15,7 +15,9 @@ "metadata": {}, "outputs": [], "source": [ - "t1 = Text(\"text input\", layout=Layout(width=\"80px\", border=\"1px dashed red\"))\n", + "t1 = Text(\"text input\", layout=Layout(\n", + " width=\"80px\", border=\"1px dashed red\"\n", + "))\n", "b1 = Button(description=\"button\")\n", "HBox((t1,b1))" ] @@ -38,7 +40,9 @@ "outputs": [], "source": [ "t2 = Text(\"text input\")\n", - "b2 = ToggleButton(description=\"toggle button\", layout=Layout(width=\"200px\", border_left=\"2px solid yellow\"))\n", + "b2 = ToggleButton(description=\"toggle button\", layout=Layout(\n", + " width=\"200px\", border_left=\"2px solid yellow\"\n", + "))\n", "HBox((t2,b2))" ] }, @@ -63,6 +67,15 @@ "b1.layout.border = \"1px solid purple\"\n", "t2.layout.border_right = \"5px double skyblue\"" ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "t2.layout.border_right = None" + ] } ], "metadata": { From adfd39c978ad1de34db0c1ddde256c225a6b23c3 Mon Sep 17 00:00:00 2001 From: hickmanw <39277069+hickmanw@users.noreply.github.com> Date: Fri, 7 Feb 2020 14:52:39 -0600 Subject: [PATCH 009/101] fix misnamed attribute in _MultipleSelection --- ipywidgets/widgets/widget_selection.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ipywidgets/widgets/widget_selection.py b/ipywidgets/widgets/widget_selection.py index 65ce04e3035..ab8db56745d 100644 --- a/ipywidgets/widgets/widget_selection.py +++ b/ipywidgets/widgets/widget_selection.py @@ -304,7 +304,7 @@ def __init__(self, *args, **kwargs): # so we don't have errors the first time validators run self._initializing_traits_ = True options = _make_options(kwargs.get('options', ())) - self._full_options = options + self._options_full = options self.set_trait('_options_labels', tuple(i[0] for i in options)) self._options_values = tuple(i[1] for i in options) From 4dab95125b15ba143665610b82550e0efb6bac07 Mon Sep 17 00:00:00 2001 From: Itay Dafna Date: Fri, 7 Feb 2020 18:28:50 -0800 Subject: [PATCH 010/101] nouislider pr merge conflict resolution --- ipywidgets/widgets/widget_float.py | 6 +- packages/controls/css/nouislider.css | 413 ++++++++++++++++++++++ packages/controls/css/widgets-base.css | 121 +------ packages/controls/package.json | 3 +- packages/controls/src/widget_float.ts | 84 ++++- packages/controls/src/widget_int.ts | 265 +++++++------- packages/controls/src/widget_selection.ts | 154 +++++--- yarn.lock | 22 +- 8 files changed, 750 insertions(+), 318 deletions(-) create mode 100644 packages/controls/css/nouislider.css diff --git a/ipywidgets/widgets/widget_float.py b/ipywidgets/widgets/widget_float.py index 126a4638554..a8fde26c3e7 100644 --- a/ipywidgets/widgets/widget_float.py +++ b/ipywidgets/widgets/widget_float.py @@ -166,7 +166,7 @@ class FloatSlider(_BoundedFloat): """ _view_name = Unicode('FloatSliderView').tag(sync=True) _model_name = Unicode('FloatSliderModel').tag(sync=True) - step = CFloat(0.1, help="Minimum step to increment the value").tag(sync=True) + step = CFloat(0.1, allow_none=True, help="Minimum step to increment the value").tag(sync=True) orientation = CaselessStrEnum(values=['horizontal', 'vertical'], default_value='horizontal', help="Vertical or horizontal.").tag(sync=True) readout = Bool(True, help="Display the current value of the slider next to it.").tag(sync=True) @@ -207,7 +207,7 @@ class FloatLogSlider(_BoundedLogFloat): """ _view_name = Unicode('FloatLogSliderView').tag(sync=True) _model_name = Unicode('FloatLogSliderModel').tag(sync=True) - step = CFloat(0.1, help="Minimum step in the exponent to increment the value").tag(sync=True) + step = CFloat(0.1, allow_none=True, help="Minimum step in the exponent to increment the value").tag(sync=True) orientation = CaselessStrEnum(values=['horizontal', 'vertical'], default_value='horizontal', help="Vertical or horizontal.").tag(sync=True) readout = Bool(True, help="Display the current value of the slider next to it.").tag(sync=True) @@ -350,7 +350,7 @@ class FloatRangeSlider(_BoundedFloatRange): """ _view_name = Unicode('FloatRangeSliderView').tag(sync=True) _model_name = Unicode('FloatRangeSliderModel').tag(sync=True) - step = CFloat(0.1, help="Minimum step to increment the value").tag(sync=True) + step = CFloat(0.1, allow_none=True, help="Minimum step to increment the value").tag(sync=True) orientation = CaselessStrEnum(values=['horizontal', 'vertical'], default_value='horizontal', help="Vertical or horizontal.").tag(sync=True) readout = Bool(True, help="Display the current value of the slider next to it.").tag(sync=True) diff --git a/packages/controls/css/nouislider.css b/packages/controls/css/nouislider.css new file mode 100644 index 00000000000..a18eeabdc50 --- /dev/null +++ b/packages/controls/css/nouislider.css @@ -0,0 +1,413 @@ +/* taken from https://github.com/leongersen/noUiSlider/blob/5481ab7450a6d48ab05c32e256718fb04dd90245/distribute/nouislider.css + * each class has been prefixed with .widget-slider to scope it to our slider + */ + +/*! nouislider - 14.1.1 - 12/15/2019 */ +/* Functional styling; + * These styles are required for noUiSlider to function. + * You don't need to change these rules to apply your design. + +MIT License + +Copyright (c) 2019 Léon Gersen + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + */ + +.widget-slider .noUi-target, +.widget-slider .noUi-target * { + -webkit-touch-callout: none; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); + -webkit-user-select: none; + -ms-touch-action: none; + touch-action: none; + -ms-user-select: none; + -moz-user-select: none; + user-select: none; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +.widget-slider .noUi-target { + position: relative; +} +.widget-slider .noUi-base, +.widget-slider .noUi-connects { + width: 100%; + height: 100%; + position: relative; + z-index: 1; +} +/* Wrapper for all connect elements. + */ +.widget-slider .noUi-connects { + overflow: hidden; + z-index: 0; +} +.widget-slider .noUi-connect, +.widget-slider .noUi-origin { + will-change: transform; + position: absolute; + z-index: 1; + top: 0; + right: 0; + -ms-transform-origin: 0 0; + -webkit-transform-origin: 0 0; + -webkit-transform-style: preserve-3d; + transform-origin: 0 0; + transform-style: flat; +} +.widget-slider .noUi-connect { + height: 100%; + width: 100%; +} +.widget-slider .noUi-origin { + height: 10%; + width: 10%; +} +/* Offset direction + */ +.widget-slider .noUi-txt-dir-rtl.noUi-horizontal .noUi-origin { + left: 0; + right: auto; +} +/* Give origins 0 height/width so they don't interfere with clicking the + * connect elements. + */ +.widget-slider .noUi-vertical .noUi-origin { + width: 0; +} +.widget-slider .noUi-horizontal .noUi-origin { + height: 0; +} +.widget-slider .noUi-handle { + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + position: absolute; +} +.widget-slider .noUi-touch-area { + height: 100%; + width: 100%; +} +.widget-slider .noUi-state-tap .noUi-connect, +.widget-slider .noUi-state-tap .noUi-origin { + -webkit-transition: transform 0.3s; + transition: transform 0.3s; +} +.widget-slider .noUi-state-drag * { + cursor: inherit !important; +} +/* Slider size and handle placement; + */ +.widget-slider .noUi-horizontal { + height: 18px; +} +.widget-slider .noUi-horizontal .noUi-handle { + width: 34px; + height: 28px; + right: -17px; + top: -6px; +} +.widget-slider .noUi-vertical { + height: 100%; + width: 18px; +} +.widget-slider .noUi-vertical .noUi-handle { + width: 28px; + height: 34px; + right: -6px; + top: -17px; +} +.widget-slider .noUi-txt-dir-rtl.noUi-horizontal .noUi-handle { + left: -17px; + right: auto; +} +/* Styling; + * Giving the connect element a border radius causes issues with using transform: scale + */ +.widget-slider .noUi-target { + background: #fafafa; + border-radius: 4px; + border: 1px solid #d3d3d3; + box-shadow: inset 0 1px 1px #f0f0f0, 0 3px 6px -5px #bbb; +} +.widget-slider .noUi-connects { + border-radius: 3px; +} +.widget-slider .noUi-connect { + background: #3fb8af; +} +/* Handles and cursors; + */ +.widget-slider .noUi-draggable { + cursor: ew-resize; +} +.widget-slider .noUi-vertical .noUi-draggable { + cursor: ns-resize; +} +.widget-slider .noUi-handle { + border: 1px solid #d9d9d9; + border-radius: 3px; + background: #fff; + cursor: default; + box-shadow: inset 0 0 1px #fff, inset 0 1px 7px #ebebeb, 0 3px 6px -3px #bbb; +} +.widget-slider .noUi-active { + box-shadow: inset 0 0 1px #fff, inset 0 1px 7px #ddd, 0 3px 6px -3px #bbb; +} +/* Handle stripes; + */ +.widget-slider .noUi-handle:before, +.widget-slider .noUi-handle:after { + content: ''; + display: block; + position: absolute; + height: 14px; + width: 1px; + background: #e8e7e6; + left: 14px; + top: 6px; +} +.widget-slider .noUi-handle:after { + left: 17px; +} +.widget-slider .noUi-vertical .noUi-handle:before, +.widget-slider .noUi-vertical .noUi-handle:after { + width: 14px; + height: 1px; + left: 6px; + top: 14px; +} +.widget-slider .noUi-vertical .noUi-handle:after { + top: 17px; +} +/* Disabled state; + */ +[disabled] .noUi-connect { + background: #b8b8b8; +} +[disabled].noUi-target, +[disabled].noUi-handle, +[disabled] .noUi-handle { + cursor: not-allowed; +} +/* Base; + * + */ +.widget-slider .noUi-pips, +.widget-slider .noUi-pips * { + -moz-box-sizing: border-box; + box-sizing: border-box; +} +.widget-slider .noUi-pips { + position: absolute; + color: #999; +} +/* Values; + * + */ +.widget-slider .noUi-value { + position: absolute; + white-space: nowrap; + text-align: center; +} +.widget-slider .noUi-value-sub { + color: #ccc; + font-size: 10px; +} +/* Markings; + * + */ +.widget-slider .noUi-marker { + position: absolute; + background: #ccc; +} +.widget-slider .noUi-marker-sub { + background: #aaa; +} +.widget-slider .noUi-marker-large { + background: #aaa; +} +/* Horizontal layout; + * + */ +.widget-slider .noUi-pips-horizontal { + padding: 10px 0; + height: 80px; + top: 100%; + left: 0; + width: 100%; +} +.widget-slider .noUi-value-horizontal { + -webkit-transform: translate(-50%, 50%); + transform: translate(-50%, 50%); +} +.widget-slider .noUi-rtl .noUi-value-horizontal { + -webkit-transform: translate(50%, 50%); + transform: translate(50%, 50%); +} +.widget-slider .noUi-marker-horizontal.noUi-marker { + margin-left: -1px; + width: 2px; + height: 5px; +} +.widget-slider .noUi-marker-horizontal.noUi-marker-sub { + height: 10px; +} +.widget-slider .noUi-marker-horizontal.noUi-marker-large { + height: 15px; +} +/* Vertical layout; + * + */ +.widget-slider .noUi-pips-vertical { + padding: 0 10px; + height: 100%; + top: 0; + left: 100%; +} +.widget-slider .noUi-value-vertical { + -webkit-transform: translate(0, -50%); + transform: translate(0, -50%); + padding-left: 25px; +} +.widget-slider .noUi-rtl .noUi-value-vertical { + -webkit-transform: translate(0, 50%); + transform: translate(0, 50%); +} +.widget-slider .noUi-marker-vertical.noUi-marker { + width: 5px; + height: 2px; + margin-top: -1px; +} +.widget-slider .noUi-marker-vertical.noUi-marker-sub { + width: 10px; +} +.widget-slider .noUi-marker-vertical.noUi-marker-large { + width: 15px; +} +.widget-slider .noUi-tooltip { + display: block; + position: absolute; + border: 1px solid #d9d9d9; + border-radius: 3px; + background: #fff; + color: #000; + padding: 5px; + text-align: center; + white-space: nowrap; +} +.widget-slider .noUi-horizontal .noUi-tooltip { + -webkit-transform: translate(-50%, 0); + transform: translate(-50%, 0); + left: 50%; + bottom: 120%; +} +.widget-slider .noUi-vertical .noUi-tooltip { + -webkit-transform: translate(0, -50%); + transform: translate(0, -50%); + top: 50%; + right: 120%; +} + +/* Custom CSS */ + +.widget-slider .noUi-connect { + background: rgb(33, 150, 243); +} + +.widget-slider .noUi-horizontal { + height: var(--jp-widgets-slider-track-thickness); +} + +.widget-slider .noUi-vertical { + width: var(--jp-widgets-slider-track-thickness); +} + +.widget-slider .noUi-horizontal .noUi-handle { + width: var(--jp-widgets-slider-handle-size); + height: var(--jp-widgets-slider-handle-size); + margin-top: calc( + ( + var(--jp-widgets-slider-track-thickness) - + var(--jp-widgets-slider-handle-size) + ) / 2 - var(--jp-widgets-slider-border-width) + ); + margin-left: calc( + var(--jp-widgets-slider-handle-size) / -2 + + var(--jp-widgets-slider-border-width) + ); + border-radius: 50%; + top: 0; +} + +.widget-slider .noUi-vertical .noUi-handle { + height: var(--jp-widgets-slider-handle-size); + width: var(--jp-widgets-slider-handle-size); + margin-top: calc( + ( + var(--jp-widgets-slider-track-thickness) - + var(--jp-widgets-slider-handle-size) + ) / 2 - var(--jp-widgets-slider-border-width) + ); + margin-left: calc( + var(--jp-widgets-slider-handle-size) / -2 + + var(--jp-widgets-slider-border-width) + ); + border-radius: 50%; + top: 0; +} + +.widget-slider .noUi-handle:after { + content: none; +} + +.widget-slider .noUi-handle:before { + content: none; +} + +.widget-slider .noUi-target { + background: #fafafa; + border-radius: 4px; + border: 1px; + /* box-shadow: inset 0 1px 1px #F0F0F0, 0 3px 6px -5px #BBB; */ +} + +.widget-slider .ui-slider { + border: var(--jp-widgets-slider-border-width) solid var(--jp-layout-color3); + background: var(--jp-layout-color3); + box-sizing: border-box; + position: relative; + border-radius: 0px; +} + +.widget-slider .noUi-horizontal .noUi-handle { + right: -13px; +} + +.widget-slider .noUi-handle { + width: var(--jp-widgets-slider-handle-size); + border: 1px solid #d9d9d9; + border-radius: 3px; + background: #fff; + cursor: default; + box-shadow: none; + outline: none; +} + +.widget-slider .noUi-handle:hover, +.noUi-handle:focus { + background-color: var(--jp-widgets-slider-active-handle-color); + border: var(--jp-widgets-slider-border-width) solid + var(--jp-widgets-slider-active-handle-color); +} + +.widget-slider .noUi-connects { + overflow: hidden; + z-index: 0; + background: var(--jp-layout-color3); +} diff --git a/packages/controls/css/widgets-base.css b/packages/controls/css/widgets-base.css index c36ca6ff1e3..540a2cdb1f3 100644 --- a/packages/controls/css/widgets-base.css +++ b/packages/controls/css/widgets-base.css @@ -9,6 +9,7 @@ */ @import './lumino.css'; +@import './nouislider.css'; :root { --jp-widgets-color: var(--jp-content-font-color1); @@ -477,109 +478,7 @@ border-color: var(--jp-widgets-input-focus-border-color); } -/* Widget Slider */ - -.widget-slider .ui-slider { - /* Slider Track */ - border: var(--jp-widgets-slider-border-width) solid var(--jp-layout-color3); - background: var(--jp-layout-color3); - box-sizing: border-box; - position: relative; - border-radius: 0px; -} - -.widget-slider .ui-slider .ui-slider-handle { - /* Slider Handle */ - outline: none !important; /* focused slider handles are colored - see below */ - position: absolute; - background-color: var(--jp-widgets-slider-handle-background-color); - border: var(--jp-widgets-slider-border-width) solid - var(--jp-widgets-slider-handle-border-color); - box-sizing: border-box; - z-index: 1; - background-image: none; /* Override jquery-ui */ -} - -/* Override jquery-ui */ -.widget-slider .ui-slider .ui-slider-handle:hover, -.widget-slider .ui-slider .ui-slider-handle:focus { - background-color: var(--jp-widgets-slider-active-handle-color); - border: var(--jp-widgets-slider-border-width) solid - var(--jp-widgets-slider-active-handle-color); -} - -.widget-slider .ui-slider .ui-slider-handle:active { - background-color: var(--jp-widgets-slider-active-handle-color); - border-color: var(--jp-widgets-slider-active-handle-color); - z-index: 2; - transform: scale(1.2); -} - -.widget-slider .ui-slider .ui-slider-range { - /* Interval between the two specified value of a double slider */ - position: absolute; - background: var(--jp-widgets-slider-active-handle-color); - z-index: 0; -} - -/* Shapes of Slider Handles */ - -.widget-hslider .ui-slider .ui-slider-handle { - width: var(--jp-widgets-slider-handle-size); - height: var(--jp-widgets-slider-handle-size); - margin-top: calc( - ( - var(--jp-widgets-slider-track-thickness) - - var(--jp-widgets-slider-handle-size) - ) / 2 - var(--jp-widgets-slider-border-width) - ); - margin-left: calc( - var(--jp-widgets-slider-handle-size) / -2 + - var(--jp-widgets-slider-border-width) - ); - border-radius: 50%; - top: 0; -} - -.widget-vslider .ui-slider .ui-slider-handle { - width: var(--jp-widgets-slider-handle-size); - height: var(--jp-widgets-slider-handle-size); - margin-bottom: calc( - var(--jp-widgets-slider-handle-size) / -2 + - var(--jp-widgets-slider-border-width) - ); - margin-left: calc( - ( - var(--jp-widgets-slider-track-thickness) - - var(--jp-widgets-slider-handle-size) - ) / 2 - var(--jp-widgets-slider-border-width) - ); - border-radius: 50%; - left: 0; -} - -.widget-hslider .ui-slider .ui-slider-range { - height: calc(var(--jp-widgets-slider-track-thickness) * 2); - margin-top: calc( - ( - var(--jp-widgets-slider-track-thickness) - - var(--jp-widgets-slider-track-thickness) * 2 - ) / 2 - var(--jp-widgets-slider-border-width) - ); -} - -.widget-vslider .ui-slider .ui-slider-range { - width: calc(var(--jp-widgets-slider-track-thickness) * 2); - margin-left: calc( - ( - var(--jp-widgets-slider-track-thickness) - - var(--jp-widgets-slider-track-thickness) * 2 - ) / 2 - var(--jp-widgets-slider-border-width) - ); -} - /* Horizontal Slider */ - .widget-hslider { width: var(--jp-widgets-inline-width); height: var(--jp-widgets-inline-height); @@ -608,16 +507,6 @@ flex: 1 1 var(--jp-widgets-inline-width-short); } -.widget-hslider .ui-slider { - /* Inner, invisible slide div */ - height: var(--jp-widgets-slider-track-thickness); - margin-top: calc( - (var(--jp-widgets-inline-height) - var(--jp-widgets-slider-track-thickness)) / - 2 - ); - width: 100%; -} - /* Vertical Slider */ .widget-vbox .widget-label { @@ -647,14 +536,6 @@ flex-direction: column; } -.widget-vslider .ui-slider-vertical { - /* Inner, invisible slide div */ - width: var(--jp-widgets-slider-track-thickness); - flex-grow: 1; - margin-left: auto; - margin-right: auto; -} - /* Widget Progress Styling */ .progress-bar { diff --git a/packages/controls/package.json b/packages/controls/package.json index 448b1a3f691..45c6972728f 100644 --- a/packages/controls/package.json +++ b/packages/controls/package.json @@ -42,7 +42,7 @@ "@lumino/widgets": "^1.3.0", "d3-format": "^1.3.0", "jquery": "^3.1.1", - "jquery-ui": "^1.12.1" + "nouislider": "^14.1.1" }, "devDependencies": { "@jupyterlab/services": "^5.0.0-beta.2", @@ -51,6 +51,7 @@ "@types/mathjax": "^0.0.35", "@types/mocha": "^5.2.7", "@types/node": "^12.0.10", + "@types/nouislider": "^9.0.6", "chai": "^4.0.0", "css-loader": "^3.4.0", "expect.js": "^0.3.1", diff --git a/packages/controls/src/widget_float.ts b/packages/controls/src/widget_float.ts index bdd9189f89b..218e840e167 100644 --- a/packages/controls/src/widget_float.ts +++ b/packages/controls/src/widget_float.ts @@ -12,6 +12,8 @@ import { import { format } from 'd3-format'; +import noUiSlider from 'nouislider'; + export class FloatModel extends CoreDescriptionModel { defaults(): Backbone.ObjectHash { return { @@ -118,11 +120,20 @@ export class FloatSliderView extends IntSliderView { export class FloatLogSliderView extends BaseIntSliderView { update(options?: any): void { super.update(options); + const value = this.model.get('value'); + this.readout.textContent = this.valueToString(value); + } + + /** + * Convert from value to exponent + * + * @param value the widget value + * @returns the log-value between the min/max exponents + */ + logCalc(value: number): number { const min = this.model.get('min'); const max = this.model.get('max'); - const value = this.model.get('value'); const base = this.model.get('base'); - let log_value = Math.log(value) / Math.log(base); if (log_value > max) { @@ -130,12 +141,33 @@ export class FloatLogSliderView extends BaseIntSliderView { } else if (log_value < min) { log_value = min; } - this.$slider.slider('option', 'value', log_value); - this.readout.textContent = this.valueToString(value); - if (this.model.get('value') !== value) { - this.model.set('value', value, { updated_view: this }); - this.touch(); - } + + return log_value; + } + + createSlider() { + noUiSlider.create(this.$slider, { + start: this.logCalc(this.model.get('value')), + range: { + min: this.model.get('min'), + max: this.model.get('max') + }, + step: this.model.get('step') ?? undefined, + orientation: this.model.get('orientation'), + format: { + from: (value: number) => value, + to: (value: number) => value + } + }); + + // Using noUiSlider's event handler + this.$slider.noUiSlider.on('update', (values: any, handle: any) => { + this.handleSliderChange(values, handle); + }); + + this.$slider.noUiSlider.on('end', (values: any, handle: any) => { + this.handleSliderChanged(values, handle); + }); } /** @@ -187,15 +219,15 @@ export class FloatLogSliderView extends BaseIntSliderView { /** * Called when the slider value is changing. */ - handleSliderChange(e: Event, ui: { value: any }): void { + handleSliderChange(values: number[], handle: number): void { const base = this.model.get('base'); - const actual_value = Math.pow(base, this._validate_slide_value(ui.value)); + const actual_value = Math.pow(base, this._validate_slide_value(values[0])); this.readout.textContent = this.valueToString(actual_value); // Only persist the value while sliding if the continuous_update // trait is set to true. if (this.model.get('continuous_update')) { - this.handleSliderChanged(e, ui); + this.handleSliderChanged(values, handle); } } @@ -205,18 +237,42 @@ export class FloatLogSliderView extends BaseIntSliderView { * Calling model.set will trigger all of the other views of the * model to update. */ - handleSliderChanged(e: Event, ui: { value: any }): void { + handleSliderChanged(values: number[], handle: number): void { + if (this._updating_slider) { + return; + } const base = this.model.get('base'); - const actual_value = Math.pow(base, this._validate_slide_value(ui.value)); + const actual_value = Math.pow(base, this._validate_slide_value(values[0])); this.model.set('value', actual_value, { updated_view: this }); this.touch(); } - _validate_slide_value(x: any): any { + updateSliderValue(model: any, value: any, options: any): void { + if (options.updated_view === this) { + console.log('this view triggered'); + return; + } + const log_value = this.logCalc(this.model.get('value')); + this.$slider.noUiSlider.set(log_value); + } + + updateSliderOptions(e: any) { + this.$slider.noUiSlider.updateOptions({ + start: this.logCalc(this.model.get('value')), + range: { + min: this.model.get('min'), + max: this.model.get('max') + }, + step: this.model.get('step') + }); + } + + _validate_slide_value(x: any) { return x; } _parse_value = parseFloat; + private _updating_slider: boolean; } export class FloatRangeSliderView extends IntRangeSliderView { diff --git a/packages/controls/src/widget_int.ts b/packages/controls/src/widget_int.ts index 005c5b5da42..7c6a28c3db9 100644 --- a/packages/controls/src/widget_int.ts +++ b/packages/controls/src/widget_int.ts @@ -11,8 +11,7 @@ import { uuid } from './utils'; import { format } from 'd3-format'; -import $ from 'jquery'; -import 'jquery-ui/ui/widgets/slider'; +import noUiSlider from 'nouislider'; export class IntModel extends CoreDescriptionModel { defaults(): Backbone.ObjectHash { @@ -89,16 +88,14 @@ export abstract class BaseIntSliderView extends DescriptionView { this.el.classList.add('widget-slider'); this.el.classList.add('widget-hslider'); - (this.$slider = $('
') as any) - .slider({ - slide: this.handleSliderChange.bind(this), - stop: this.handleSliderChanged.bind(this) - }) - .addClass('slider'); + // Creating noUiSlider instance and scaffolding + this.$slider = document.createElement('div'); + this.$slider.classList.add('slider'); + // Put the slider in a container this.slider_container = document.createElement('div'); this.slider_container.classList.add('slider-container'); - this.slider_container.appendChild(this.$slider[0]); + this.slider_container.appendChild(this.$slider); this.el.appendChild(this.slider_container); this.readout = document.createElement('div'); this.el.appendChild(this.readout); @@ -106,59 +103,39 @@ export abstract class BaseIntSliderView extends DescriptionView { this.readout.contentEditable = 'true'; this.readout.style.display = 'none'; + // noUiSlider constructor and event handlers + this.createSlider(); + + // Event handlers + this.model.on('change:orientation', this.regenSlider, this); + this.model.on('change:max', this.updateSliderOptions, this); + this.model.on('change:min', this.updateSliderOptions, this); + this.model.on('change:step', this.updateSliderOptions, this); + this.model.on('change:value', this.updateSliderValue, this); + // Set defaults. this.update(); } - update(options?: any): void { - /** - * Update the contents of this view - * - * Called when the model is changed. The model may have been - * changed by another view or by a state update from the back-end. - */ + /** + * Update the contents of this view + * + * Called when the model is changed. The model may have been + * changed by another view or by a state update from the back-end. + */ + update(options?: any) { if (options === undefined || options.updated_view !== this) { - // JQuery slider option keys. These keys happen to have a - // one-to-one mapping with the corresponding keys of the model. - const jquery_slider_keys = ['step', 'disabled']; - this.$slider.slider({}); - - jquery_slider_keys.forEach(key => { - const model_value = this.model.get(key); - if (model_value !== undefined) { - this.$slider.slider('option', key, model_value); - } - }); - if (this.model.get('disabled')) { this.readout.contentEditable = 'false'; + this.$slider.setAttribute('disabled', true); } else { this.readout.contentEditable = 'true'; + this.$slider.removeAttribute('disabled'); } - const max = this.model.get('max'); - const min = this.model.get('min'); - if (min <= max) { - if (max !== undefined) { - this.$slider.slider('option', 'max', max); - } - if (min !== undefined) { - this.$slider.slider('option', 'min', min); - } - } - - // WORKAROUND FOR JQUERY SLIDER BUG. - // The horizontal position of the slider handle - // depends on the value of the slider at the time - // of orientation change. Before applying the new - // workaround, we set the value to the minimum to - // make sure that the horizontal placement of the - // handle in the vertical slider is always - // consistent. + // Use the right CSS classes for vertical & horizontal sliders const orientation = this.model.get('orientation'); - this.$slider.slider('option', 'orientation', orientation); - // Use the right CSS classes for vertical & horizontal sliders if (orientation === 'vertical') { this.el.classList.remove('widget-hslider'); this.el.classList.add('widget-vslider'); @@ -208,8 +185,6 @@ export abstract class BaseIntSliderView extends DescriptionView { events(): { [e: string]: string } { return { // Dictionary of events and their handlers. - slide: 'handleSliderChange', - slidestop: 'handleSliderChanged', 'blur [contentEditable=true]': 'handleTextChange', 'keydown [contentEditable=true]': 'handleKeyDown' }; @@ -223,6 +198,60 @@ export abstract class BaseIntSliderView extends DescriptionView { } } + /** + * Create a new noUiSlider object + */ + createSlider() { + noUiSlider.create(this.$slider, { + animate: true, + start: this.model.get('value'), + connect: true, + range: { + min: this.model.get('min'), + max: this.model.get('max') + }, + step: this.model.get('step'), + orientation: this.model.get('orientation'), + format: { + from: (value: number) => value, + to: (value: number) => value + } + }); + + // Using noUiSlider's event handler + this.$slider.noUiSlider.on('update', (values: any, handle: any) => { + this.handleSliderChange(values, handle); + }); + + this.$slider.noUiSlider.on('end', (values: any, handle: any) => { + this.handleSliderChanged(values, handle); + }); + } + + /** + * Recreate/Regenerate a slider object + * noUiSlider does not support in-place mutation of the orientation + * state. We therefore need to destroy the current instance + * and create a new one with the new properties. This is + * handled in a separate function and has a dedicated event + * handler. + */ + regenSlider(e: any) { + this.$slider.noUiSlider.destroy(); + this.createSlider(); + } + + /** + * Update noUiSlider object in-place with new options + */ + abstract updateSliderOptions(e: any): void; + + /** + * Update noUiSlider's state so that it is + * synced with the Backbone.jas model + */ + abstract updateSliderValue(model: any, value: any, options: any): void; + /** * this handles the entry of text into the contentEditable label first, the * value is checked if it contains a parseable value then it is clamped @@ -236,10 +265,7 @@ export abstract class BaseIntSliderView extends DescriptionView { /** * Called when the slider value is changing. */ - abstract handleSliderChange( - e: any, - ui: { value?: number; values?: number[] } - ): void; + abstract handleSliderChange(value: any, handle: any): void; /** * Called when the slider value has changed. @@ -247,10 +273,7 @@ export abstract class BaseIntSliderView extends DescriptionView { * Calling model.set will trigger all of the other views of the * model to update. */ - abstract handleSliderChanged( - e: Event, - ui: { value?: number; values?: number[] } - ): void; + abstract handleSliderChanged(values: number[], handle: number): void; /** * Validate the value of the slider before sending it to the back-end @@ -268,13 +291,9 @@ export abstract class BaseIntSliderView extends DescriptionView { } export class IntRangeSliderView extends BaseIntSliderView { - update(options?: any): void { + update(options?: any) { super.update(options); - this.$slider.slider('option', 'range', true); - // values for the range case are validated python-side in - // _Bounded{Int,Float}RangeWidget._validate const value = this.model.get('value'); - this.$slider.slider('option', 'values', value.slice()); this.readout.textContent = this.valueToString(value); if (this.model.get('value') !== value) { this.model.set('value', value, { updated_view: this }); @@ -310,14 +329,6 @@ export class IntRangeSliderView extends BaseIntSliderView { } } - /** - * this handles the entry of text into the contentEditable label first, the - * value is checked if it contains a parseable value then it is clamped - * within the min-max range of the slider finally, the model is updated if - * the value is to be changed - * - * if any of these conditions are not met, the text is reset - */ handleTextChange(): void { let value = this.stringToValue(this.readout.textContent); const vmin = this.model.get('min'); @@ -349,32 +360,43 @@ export class IntRangeSliderView extends BaseIntSliderView { } } } - /** - * Called when the slider value is changing. - */ - handleSliderChange(e: any, ui: { values: number[] }): void { - const actual_value = ui.values.map(this._validate_slide_value); + + handleSliderChange(values: any, handle: any) { + const actual_value = values.map(this._validate_slide_value); this.readout.textContent = this.valueToString(actual_value); // Only persist the value while sliding if the continuous_update // trait is set to true. if (this.model.get('continuous_update')) { - this.handleSliderChanged(e, ui); + this.handleSliderChanged(values, handle); } } - /** - * Called when the slider value has changed. - * - * Calling model.set will trigger all of the other views of the - * model to update. - */ - handleSliderChanged(e: Event, ui: { values: number[] }): void { - const actual_value = ui.values.map(this._validate_slide_value); + handleSliderChanged(values: number[], handle: number) { + const actual_value = values.map(this._validate_slide_value); this.model.set('value', actual_value, { updated_view: this }); this.touch(); } + updateSliderOptions(e: any) { + this.$slider.noUiSlider.updateOptions({ + start: this.model.get('value'), + range: { + min: this.model.get('min'), + max: this.model.get('max') + }, + step: this.model.get('step') + }); + } + + updateSliderValue(e: any) { + const prev_value = this.$slider.noUiSlider.get(); + const value = this.model.get('value'); + if (prev_value[0] !== value[0] || prev_value[1] !== value[1]) { + this.$slider.noUiSlider.set(value); + } + } + // range numbers can be separated by a hyphen, colon, or an en-dash _range_regex = /^\s*([+-]?\d+)\s*[-:–]\s*([+-]?\d+)/; } @@ -391,7 +413,7 @@ export class IntSliderView extends BaseIntSliderView { } else if (value < min) { value = min; } - this.$slider.slider('option', 'value', value); + this.readout.textContent = this.valueToString(value); if (this.model.get('value') !== value) { this.model.set('value', value, { updated_view: this }); @@ -399,31 +421,17 @@ export class IntSliderView extends BaseIntSliderView { } } - /** - * Write value to a string - */ - valueToString(value: number): string { + valueToString(value: number | number[]): string { const format = this.model.readout_formatter; return format(value); } - /** - * Parse value from a string - */ - stringToValue(text: string | null): number { - return text === null ? NaN : this._parse_value(text); + stringToValue(text: string): number | number[] { + return this._parse_value(text); } - /** - * this handles the entry of text into the contentEditable label first, the - * value is checked if it contains a parseable value then it is clamped - * within the min-max range of the slider finally, the model is updated if - * the value is to be changed - * - * if any of these conditions are not met, the text is reset - */ handleTextChange(): void { - let value = this.stringToValue(this.readout.textContent); + let value = this.stringToValue(this.readout.textContent ?? ''); const vmin = this.model.get('min'); const vmax = this.model.get('max'); @@ -441,30 +449,45 @@ export class IntSliderView extends BaseIntSliderView { } } } - /** - * Called when the slider value is changing. - */ - handleSliderChange(e: any, ui: { value: number }): void { - const actual_value = this._validate_slide_value(ui.value); + + handleSliderChange(values: any, handle: any) { + const actual_value = this._validate_slide_value(values[handle]); this.readout.textContent = this.valueToString(actual_value); // Only persist the value while sliding if the continuous_update // trait is set to true. if (this.model.get('continuous_update')) { - this.handleSliderChanged(e, ui); + this.handleSliderChanged(values, handle); } } - /** - * Called when the slider value has changed. - * - * Calling model.set will trigger all of the other views of the - * model to update. - */ - handleSliderChanged(e: Event, ui: { value?: any }): void { - const actual_value = this._validate_slide_value(ui.value); - this.model.set('value', actual_value, { updated_view: this }); - this.touch(); + handleSliderChanged(values: any, handle: any) { + const actual_value = this._validate_slide_value(values[handle]); + const model_value = this.model.get('value'); + + if (parseFloat(model_value) !== actual_value) { + this.model.set('value', actual_value, { updated_view: this }); + this.touch(); + } + } + + updateSliderOptions(e: any): void { + this.$slider.noUiSlider.updateOptions({ + start: this.model.get('value'), + range: { + min: this.model.get('min'), + max: this.model.get('max') + }, + step: this.model.get('step') + }); + } + + updateSliderValue(e: any): void { + const prev_value = this.$slider.noUiSlider.get(); + const value = this.model.get('value'); + if (prev_value !== value) { + this.$slider.noUiSlider.set(value); + } } } diff --git a/packages/controls/src/widget_selection.ts b/packages/controls/src/widget_selection.ts index 78e858a6273..ae24d353b8d 100644 --- a/packages/controls/src/widget_selection.ts +++ b/packages/controls/src/widget_selection.ts @@ -10,7 +10,7 @@ import { DescriptionView, DescriptionStyleModel } from './widget_description'; import { uuid } from './utils'; import * as utils from './utils'; -import $ from 'jquery'; +import noUiSlider from 'nouislider'; export class SelectionModel extends CoreDescriptionModel { defaults(): Backbone.ObjectHash { @@ -666,17 +666,14 @@ export class SelectionSliderView extends DescriptionView { this.el.classList.add('widget-hslider'); this.el.classList.add('widget-slider'); - (this.$slider = $('
') as any) - .slider({ - slide: this.handleSliderChange.bind(this), - stop: this.handleSliderChanged.bind(this) - }) - .addClass('slider'); + // Creating noUiSlider instance and scaffolding + this.$slider = document.createElement('div'); + this.$slider.classList.add('slider'); // Put the slider in a container this.slider_container = document.createElement('div'); this.slider_container.classList.add('slider-container'); - this.slider_container.appendChild(this.$slider[0]); + this.slider_container.appendChild(this.$slider); this.el.appendChild(this.slider_container); this.readout = document.createElement('div'); @@ -684,11 +681,12 @@ export class SelectionSliderView extends DescriptionView { this.readout.classList.add('widget-readout'); this.readout.style.display = 'none'; - this.listenTo(this.model, 'change:slider_color', (sender, value) => { - this.$slider.find('a').css('background', value); - }); + // noUiSlider constructor and event handlers + this.createSlider(); - this.$slider.find('a').css('background', this.model.get('slider_color')); + // Event handlers + this.model.on('change:orientation', this.regenSlider, this); + this.model.on('change:index', this.updateSliderValue, this); // Set defaults. this.update(); @@ -702,31 +700,15 @@ export class SelectionSliderView extends DescriptionView { */ update(options?: any): void { if (options === undefined || options.updated_view !== this) { - const labels = this.model.get('_options_labels'); - const max = labels.length - 1; - const min = 0; - this.$slider.slider('option', 'step', 1); - this.$slider.slider('option', 'max', max); - this.$slider.slider('option', 'min', min); - - // WORKAROUND FOR JQUERY SLIDER BUG. - // The horizontal position of the slider handle - // depends on the value of the slider at the time - // of orientation change. Before applying the new - // workaround, we set the value to the minimum to - // make sure that the horizontal placement of the - // handle in the vertical slider is always - // consistent. + this.updateSliderOptions(this.model); const orientation = this.model.get('orientation'); - this.$slider.slider('option', 'value', min); - this.$slider.slider('option', 'orientation', orientation); - const disabled = this.model.get('disabled'); - this.$slider.slider('option', 'disabled', disabled); if (disabled) { this.readout.contentEditable = 'false'; + this.$slider.setAttribute('disabled', true); } else { this.readout.contentEditable = 'true'; + this.$slider.removeAttribute('disabled'); } // Use the right CSS classes for vertical & horizontal sliders @@ -755,6 +737,42 @@ export class SelectionSliderView extends DescriptionView { return super.update(options); } + regenSlider(e: any) { + this.$slider.noUiSlider.destroy(); + this.createSlider(); + } + + createSlider() { + const labels = this.model.get('_options_labels'); + const min = 0; + const max = labels.length - 1; + + noUiSlider.create(this.$slider, { + animate: true, + start: this.model.get('index'), + connect: true, + range: { + min: min, + max: max + }, + step: 1, + orientation: this.model.get('orientation'), + format: { + from: (value: number) => value, + to: (value: number) => value + } + }); + + // Using noUiSlider's event handler + this.$slider.noUiSlider.on('update', (values: number[], handle: number) => { + this.handleSliderChange(values, handle); + }); + + this.$slider.noUiSlider.on('end', (values: number[], handle: number) => { + this.handleSliderChanged(values, handle); + }); + } + events(): { [e: string]: string } { return { slide: 'handleSliderChange', @@ -764,7 +782,6 @@ export class SelectionSliderView extends DescriptionView { updateSelection(): void { const index = this.model.get('index'); - this.$slider.slider('option', 'value', index); this.updateReadout(index); } @@ -776,16 +793,14 @@ export class SelectionSliderView extends DescriptionView { /** * Called when the slider value is changing. */ - handleSliderChange( - e: Event, - ui: { value?: number; values?: number[] } - ): void { - this.updateReadout(ui.value); + handleSliderChange(values: number[], handle: number): void { + const index = values[0]; + this.updateReadout(index); // Only persist the value while sliding if the continuous_update // trait is set to true. if (this.model.get('continuous_update')) { - this.handleSliderChanged(e, ui); + this.handleSliderChanged(values, handle); } } @@ -795,15 +810,36 @@ export class SelectionSliderView extends DescriptionView { * Calling model.set will trigger all of the other views of the * model to update. */ - handleSliderChanged( - e: Event, - ui: { value?: number; values?: number[] } - ): void { - this.updateReadout(ui.value); - this.model.set('index', ui.value, { updated_view: this }); + handleSliderChanged(values: number[], handle: number) { + const index = values[0]; + this.updateReadout(index); + this.model.set('index', index, { updated_view: this }); this.touch(); } + updateSliderOptions(e: any) { + const labels = this.model.get('_options_labels'); + const min = 0; + const max = labels.length - 1; + + this.$slider.noUiSlider.updateOptions({ + start: this.model.get('index'), + range: { + min: min, + max: max + }, + step: 1 + }); + } + + updateSliderValue(e: any) { + const prev_index = this.$slider.noUiSlider.get(); + const index = this.model.get('index'); + if (prev_index !== index) { + this.$slider.noUiSlider.set(index); + } + } + $slider: any; slider_container: HTMLDivElement; readout: HTMLDivElement; @@ -891,12 +927,10 @@ export class SelectionRangeSliderView extends SelectionSliderView { */ render(): void { super.render(); - this.$slider.slider('option', 'range', true); } updateSelection(): void { const index = this.model.get('index'); - this.$slider.slider('option', 'values', index.slice()); this.updateReadout(index); } @@ -910,13 +944,14 @@ export class SelectionRangeSliderView extends SelectionSliderView { /** * Called when the slider value is changing. */ - handleSliderChange(e: Event, ui: { values: number[] }): void { - this.updateReadout(ui.values); + handleSliderChange(values: number[], handle: any) { + const intValues = values.map(Math.trunc); + this.updateReadout(intValues); // Only persist the value while sliding if the continuous_update // trait is set to true. if (this.model.get('continuous_update')) { - this.handleSliderChanged(e, ui); + this.handleSliderChanged(values, handle); } } @@ -926,14 +961,25 @@ export class SelectionRangeSliderView extends SelectionSliderView { * Calling model.set will trigger all of the other views of the * model to update. */ - handleSliderChanged(e: Event, ui: { values: number[] }): void { - // The jqueryui documentation indicates ui.values doesn't exist on the slidestop event, - // but it appears that it actually does: https://github.com/jquery/jquery-ui/blob/ae31f2b3b478975f70526bdf3299464b9afa8bb1/ui/widgets/slider.js#L313 - this.updateReadout(ui.values); - this.model.set('index', ui.values.slice(), { updated_view: this }); + handleSliderChanged(values: number[], handle: number) { + const intValues = values.map(Math.round); + this.updateReadout(intValues); + + // set index to a snapshot of the values passed by the slider + this.model.set('index', intValues.slice(), { updated_view: this }); this.touch(); } + updateSliderValue(e: any) { + // Rounding values to avoid floating point precision error for the if statement below + const prev_index = this.$slider.noUiSlider.get().map(Math.round); + const index = this.model.get('index').map(Math.round); + + if (prev_index[0] !== index[0] || prev_index[1] !== index[1]) { + this.$slider.noUiSlider.set(index); + } + } + $slider: any; slider_container: HTMLDivElement; readout: HTMLDivElement; diff --git a/yarn.lock b/yarn.lock index 5f8424ac5d2..7997297a2f2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1631,6 +1631,13 @@ resolved "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e" integrity sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA== +"@types/nouislider@^9.0.6": + version "9.0.6" + resolved "https://registry.npmjs.org/@types/nouislider/-/nouislider-9.0.6.tgz#d053f58c58a7044698d4eaeffc5c3a4443117806" + integrity sha512-ASkRBlWX5qiAucW08jS2/ZGKJQWqx/JWJ52fU7LCLRRtfOaOCqYsZmBYJdIG3j+MRX2ZSaB0nglFujPGckLn4Q== + dependencies: + "@types/wnumb" "*" + "@types/prop-types@*": version "15.7.3" resolved "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.3.tgz#2ab0d5da2e5815f94b0b9d4b95d1e5f243ab2ca7" @@ -1679,6 +1686,11 @@ resolved "https://registry.npmjs.org/@types/underscore/-/underscore-1.9.4.tgz#22d1a3e6b494608e430221ec085fa0b7ccee7f33" integrity sha512-CjHWEMECc2/UxOZh0kpiz3lEyX2Px3rQS9HzD20lxMvx571ivOBQKeLnqEjxUY0BMgp6WJWo/pQLRBwMW5v4WQ== +"@types/wnumb@*": + version "1.2.0" + resolved "https://registry.npmjs.org/@types/wnumb/-/wnumb-1.2.0.tgz#de93478a0d10ea2e27809b5e3fc90ac52c1acd43" + integrity sha512-74+3MQqSTrDUtYisxrE8xbrTxmc3pi3G+yr1/TKNrMD7nfXIgUSgYeOu5R7g6Nsn/hl1GxKZ5VW2BuOQg9aLYg== + "@typescript-eslint/eslint-plugin@^2.14.0": version "2.14.0" resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.14.0.tgz#c74447400537d4eb7aae1e31879ab43e6c662a8a" @@ -5911,11 +5923,6 @@ istanbul@^0.4.0: which "^1.1.1" wordwrap "^1.0.0" -jquery-ui@^1.12.1: - version "1.12.1" - resolved "https://registry.npmjs.org/jquery-ui/-/jquery-ui-1.12.1.tgz#bcb4045c8dd0539c134bc1488cdd3e768a7a9e51" - integrity sha1-vLQEXI3QU5wTS8FIjN0+dop6nlE= - jquery@^3.1.1, jquery@^3.4.1: version "3.4.1" resolved "https://registry.npmjs.org/jquery/-/jquery-3.4.1.tgz#714f1f8d9dde4bdfa55764ba37ef214630d80ef2" @@ -7158,6 +7165,11 @@ normalize.css@^8.0.1: resolved "https://registry.npmjs.org/normalize.css/-/normalize.css-8.0.1.tgz#9b98a208738b9cc2634caacbc42d131c97487bf3" integrity sha512-qizSNPO93t1YUuUhP22btGOo3chcvDFqFaj2TRybP0DMxkHOCTYwp3n34fel4a31ORXy4m1Xq0Gyqpb5m33qIg== +nouislider@^14.1.1: + version "14.1.1" + resolved "https://registry.npmjs.org/nouislider/-/nouislider-14.1.1.tgz#def812b2aaaa2ccf9e7a41dd0144a25dab5673e5" + integrity sha512-3/+Z/pTBoWoJf2YXSEWRmS27LW2XxOBmGEzkPyRzB/J6QvL+0mS3QwcQp0SmWhgO5CMzbSxPmb1lDDD4HP12bg== + npm-bundled@^1.0.1: version "1.1.1" resolved "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.1.tgz#1edd570865a94cdb1bc8220775e29466c9fb234b" From 52f05cb456144942af054f9310568972a3cc5d2f Mon Sep 17 00:00:00 2001 From: Jason Grout Date: Mon, 10 Feb 2020 16:07:32 -0800 Subject: [PATCH 011/101] validate options the normal way --- ipywidgets/widgets/widget_selection.py | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/ipywidgets/widgets/widget_selection.py b/ipywidgets/widgets/widget_selection.py index ab8db56745d..d9b2ee2ad4d 100644 --- a/ipywidgets/widgets/widget_selection.py +++ b/ipywidgets/widgets/widget_selection.py @@ -16,7 +16,7 @@ from .trait_types import InstanceDict, TypedTuple from .widget import register, widget_serialization from .docutils import doc_subst -from traitlets import (Unicode, Bool, Int, Any, Dict, TraitError, CaselessStrEnum, +from traitlets import (Unicode, Bool, Bunch, Int, Any, Dict, TraitError, CaselessStrEnum, Tuple, Union, observe, validate) _doc_snippets = {} @@ -161,10 +161,8 @@ def __init__(self, *args, **kwargs): # We have to make the basic options bookkeeping consistent # so we don't have errors the first time validators run self._initializing_traits_ = True - options = _make_options(kwargs.get('options', ())) - self._options_full = options - self.set_trait('_options_labels', tuple(i[0] for i in options)) - self._options_values = tuple(i[1] for i in options) + kwargs['options'] = self._validate_options(Bunch(value = kwargs.get('options', ()))) + self._propagate_options(None) # Select the first item by default, if we can if 'index' not in kwargs and 'value' not in kwargs and 'label' not in kwargs: @@ -303,10 +301,8 @@ def __init__(self, *args, **kwargs): # We have to make the basic options bookkeeping consistent # so we don't have errors the first time validators run self._initializing_traits_ = True - options = _make_options(kwargs.get('options', ())) - self._options_full = options - self.set_trait('_options_labels', tuple(i[0] for i in options)) - self._options_values = tuple(i[1] for i in options) + kwargs['options'] = self._validate_options(Bunch(value = kwargs.get('options', ()))) + self._propagate_options(None) super().__init__(*args, **kwargs) self._initializing_traits_ = False From 5c0273e038ae540ec775d5586ed2286342f420a9 Mon Sep 17 00:00:00 2001 From: Jason Grout Date: Tue, 11 Feb 2020 17:43:02 -0800 Subject: [PATCH 012/101] Fix the slider handle styling. --- packages/controls/src/widget_int.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/controls/src/widget_int.ts b/packages/controls/src/widget_int.ts index 7c6a28c3db9..63dd53b1a9c 100644 --- a/packages/controls/src/widget_int.ts +++ b/packages/controls/src/widget_int.ts @@ -42,7 +42,7 @@ export class SliderStyleModel extends DescriptionStyleModel { public static styleProperties = { ...DescriptionStyleModel.styleProperties, handle_color: { - selector: '.ui-slider-handle', + selector: '.noUi-handle', attribute: 'background-color', default: null as any } From 92082e739a7acc768c99e8f2b659da17111839ba Mon Sep 17 00:00:00 2001 From: Jason Grout Date: Tue, 11 Feb 2020 17:43:56 -0800 Subject: [PATCH 013/101] Fix vertical orientation of sliders --- packages/controls/src/widget_float.ts | 4 +++- packages/controls/src/widget_int.ts | 4 +++- packages/controls/src/widget_selection.ts | 4 +++- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/packages/controls/src/widget_float.ts b/packages/controls/src/widget_float.ts index 218e840e167..8af1853fc13 100644 --- a/packages/controls/src/widget_float.ts +++ b/packages/controls/src/widget_float.ts @@ -146,6 +146,7 @@ export class FloatLogSliderView extends BaseIntSliderView { } createSlider() { + const orientation = this.model.get('orientation'); noUiSlider.create(this.$slider, { start: this.logCalc(this.model.get('value')), range: { @@ -153,7 +154,8 @@ export class FloatLogSliderView extends BaseIntSliderView { max: this.model.get('max') }, step: this.model.get('step') ?? undefined, - orientation: this.model.get('orientation'), + orientation: orientation, + direction: orientation === 'horizontal' ? 'ltr' : 'rtl', format: { from: (value: number) => value, to: (value: number) => value diff --git a/packages/controls/src/widget_int.ts b/packages/controls/src/widget_int.ts index 63dd53b1a9c..88b8eec1179 100644 --- a/packages/controls/src/widget_int.ts +++ b/packages/controls/src/widget_int.ts @@ -202,6 +202,7 @@ export abstract class BaseIntSliderView extends DescriptionView { * Create a new noUiSlider object */ createSlider() { + const orientation = this.model.get('orientation'); noUiSlider.create(this.$slider, { animate: true, start: this.model.get('value'), @@ -211,7 +212,8 @@ export abstract class BaseIntSliderView extends DescriptionView { max: this.model.get('max') }, step: this.model.get('step'), - orientation: this.model.get('orientation'), + orientation: orientation, + direction: orientation === 'horizontal' ? 'ltr' : 'rtl', format: { from: (value: number) => value, to: (value: number) => value diff --git a/packages/controls/src/widget_selection.ts b/packages/controls/src/widget_selection.ts index ae24d353b8d..3719f8ec3a2 100644 --- a/packages/controls/src/widget_selection.ts +++ b/packages/controls/src/widget_selection.ts @@ -746,6 +746,7 @@ export class SelectionSliderView extends DescriptionView { const labels = this.model.get('_options_labels'); const min = 0; const max = labels.length - 1; + const orientation = this.model.get('orientation'); noUiSlider.create(this.$slider, { animate: true, @@ -756,7 +757,8 @@ export class SelectionSliderView extends DescriptionView { max: max }, step: 1, - orientation: this.model.get('orientation'), + orientation: orientation, + direction: orientation === 'horizontal' ? 'ltr' : 'rtl', format: { from: (value: number) => value, to: (value: number) => value From 8ed76334b4ef962d25740c272e5f50677fbddc44 Mon Sep 17 00:00:00 2001 From: Jason Grout Date: Tue, 11 Feb 2020 17:44:11 -0800 Subject: [PATCH 014/101] Turn off nouislider animate for performance --- packages/controls/src/widget_float.ts | 1 + packages/controls/src/widget_int.ts | 2 +- packages/controls/src/widget_selection.ts | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/controls/src/widget_float.ts b/packages/controls/src/widget_float.ts index 8af1853fc13..c75919aad6e 100644 --- a/packages/controls/src/widget_float.ts +++ b/packages/controls/src/widget_float.ts @@ -154,6 +154,7 @@ export class FloatLogSliderView extends BaseIntSliderView { max: this.model.get('max') }, step: this.model.get('step') ?? undefined, + animate: false, orientation: orientation, direction: orientation === 'horizontal' ? 'ltr' : 'rtl', format: { diff --git a/packages/controls/src/widget_int.ts b/packages/controls/src/widget_int.ts index 88b8eec1179..371793a7f0f 100644 --- a/packages/controls/src/widget_int.ts +++ b/packages/controls/src/widget_int.ts @@ -204,7 +204,6 @@ export abstract class BaseIntSliderView extends DescriptionView { createSlider() { const orientation = this.model.get('orientation'); noUiSlider.create(this.$slider, { - animate: true, start: this.model.get('value'), connect: true, range: { @@ -212,6 +211,7 @@ export abstract class BaseIntSliderView extends DescriptionView { max: this.model.get('max') }, step: this.model.get('step'), + animate: false, orientation: orientation, direction: orientation === 'horizontal' ? 'ltr' : 'rtl', format: { diff --git a/packages/controls/src/widget_selection.ts b/packages/controls/src/widget_selection.ts index 3719f8ec3a2..a9fa99e12e8 100644 --- a/packages/controls/src/widget_selection.ts +++ b/packages/controls/src/widget_selection.ts @@ -749,7 +749,6 @@ export class SelectionSliderView extends DescriptionView { const orientation = this.model.get('orientation'); noUiSlider.create(this.$slider, { - animate: true, start: this.model.get('index'), connect: true, range: { @@ -757,6 +756,7 @@ export class SelectionSliderView extends DescriptionView { max: max }, step: 1, + animate: false, orientation: orientation, direction: orientation === 'horizontal' ? 'ltr' : 'rtl', format: { From 4390e7071285fc7b199f73d1f928e7717a5024b2 Mon Sep 17 00:00:00 2001 From: Jason Grout Date: Tue, 11 Feb 2020 17:45:00 -0800 Subject: [PATCH 015/101] Position slider handles appropriately --- packages/controls/css/nouislider.css | 32 +++++++++------------------- 1 file changed, 10 insertions(+), 22 deletions(-) diff --git a/packages/controls/css/nouislider.css b/packages/controls/css/nouislider.css index a18eeabdc50..23b58828c8a 100644 --- a/packages/controls/css/nouislider.css +++ b/packages/controls/css/nouislider.css @@ -331,35 +331,27 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI .widget-slider .noUi-horizontal .noUi-handle { width: var(--jp-widgets-slider-handle-size); height: var(--jp-widgets-slider-handle-size); - margin-top: calc( + border-radius: 50%; + top: calc( ( var(--jp-widgets-slider-track-thickness) - var(--jp-widgets-slider-handle-size) - ) / 2 - var(--jp-widgets-slider-border-width) - ); - margin-left: calc( - var(--jp-widgets-slider-handle-size) / -2 + - var(--jp-widgets-slider-border-width) + ) / 2 ); - border-radius: 50%; - top: 0; + right: calc(var(--jp-widgets-slider-handle-size) / -2); } .widget-slider .noUi-vertical .noUi-handle { height: var(--jp-widgets-slider-handle-size); width: var(--jp-widgets-slider-handle-size); - margin-top: calc( + border-radius: 50%; + right: calc( ( - var(--jp-widgets-slider-track-thickness) - - var(--jp-widgets-slider-handle-size) - ) / 2 - var(--jp-widgets-slider-border-width) + var(--jp-widgets-slider-handle-size) - + var(--jp-widgets-slider-track-thickness) + ) / -2 ); - margin-left: calc( - var(--jp-widgets-slider-handle-size) / -2 + - var(--jp-widgets-slider-border-width) - ); - border-radius: 50%; - top: 0; + top: calc(var(--jp-widgets-slider-handle-size) / -2); } .widget-slider .noUi-handle:after { @@ -385,10 +377,6 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI border-radius: 0px; } -.widget-slider .noUi-horizontal .noUi-handle { - right: -13px; -} - .widget-slider .noUi-handle { width: var(--jp-widgets-slider-handle-size); border: 1px solid #d9d9d9; From 8b6c866d157385d34692c99a166f9c96550e96f2 Mon Sep 17 00:00:00 2001 From: Jason Grout Date: Tue, 11 Feb 2020 17:45:19 -0800 Subject: [PATCH 016/101] Thicken the range slider connect for vertical sliders to match previous implementation --- packages/controls/css/nouislider.css | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/controls/css/nouislider.css b/packages/controls/css/nouislider.css index 23b58828c8a..c9dcba8ef0d 100644 --- a/packages/controls/css/nouislider.css +++ b/packages/controls/css/nouislider.css @@ -395,7 +395,12 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI } .widget-slider .noUi-connects { - overflow: hidden; + overflow: visible; z-index: 0; background: var(--jp-layout-color3); } + +.widget-slider .noUi-vertical .noUi-connect { + width: calc(100% + 2px); + right: -1px; +} From 324e5dc51c6707a8d73d8dface90c01e64295d6e Mon Sep 17 00:00:00 2001 From: Itay Dafna Date: Tue, 11 Feb 2020 22:52:22 -0800 Subject: [PATCH 017/101] remove stray console.log --- packages/controls/src/widget_float.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/controls/src/widget_float.ts b/packages/controls/src/widget_float.ts index c75919aad6e..358bbeae5d1 100644 --- a/packages/controls/src/widget_float.ts +++ b/packages/controls/src/widget_float.ts @@ -252,7 +252,6 @@ export class FloatLogSliderView extends BaseIntSliderView { updateSliderValue(model: any, value: any, options: any): void { if (options.updated_view === this) { - console.log('this view triggered'); return; } const log_value = this.logCalc(this.model.get('value')); From 6966d824e87852323e12c8b009b07ee9613f5172 Mon Sep 17 00:00:00 2001 From: Itay Dafna Date: Wed, 12 Feb 2020 20:21:27 -0800 Subject: [PATCH 018/101] Fix connect thickening --- packages/controls/css/nouislider.css | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/packages/controls/css/nouislider.css b/packages/controls/css/nouislider.css index c9dcba8ef0d..869da4e955c 100644 --- a/packages/controls/css/nouislider.css +++ b/packages/controls/css/nouislider.css @@ -404,3 +404,8 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI width: calc(100% + 2px); right: -1px; } + +.widget-slider .noUi-horizontal .noUi-connect { + height: calc(100% + 2px); + top: -1px; +} From e64126f6ac626b94bbeb579d975fe7d8f4dde1b9 Mon Sep 17 00:00:00 2001 From: Itay Dafna Date: Wed, 12 Feb 2020 21:21:40 -0800 Subject: [PATCH 019/101] updateSliderValue callback optimization --- packages/controls/src/widget_int.ts | 14 ++++++++++++-- packages/controls/src/widget_selection.ts | 12 ++++++++++-- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/packages/controls/src/widget_int.ts b/packages/controls/src/widget_int.ts index 371793a7f0f..c0bd798ed4e 100644 --- a/packages/controls/src/widget_int.ts +++ b/packages/controls/src/widget_int.ts @@ -391,9 +391,14 @@ export class IntRangeSliderView extends BaseIntSliderView { }); } - updateSliderValue(e: any) { + updateSliderValue(model: any, _: any, options: any) { + if (options.updated_view === this) { + return; + } + const prev_value = this.$slider.noUiSlider.get(); const value = this.model.get('value'); + if (prev_value[0] !== value[0] || prev_value[1] !== value[1]) { this.$slider.noUiSlider.set(value); } @@ -484,9 +489,14 @@ export class IntSliderView extends BaseIntSliderView { }); } - updateSliderValue(e: any): void { + updateSliderValue(model: any, _: any, options: any): void { + if (options.updated_view === this) { + return; + } + const prev_value = this.$slider.noUiSlider.get(); const value = this.model.get('value'); + if (prev_value !== value) { this.$slider.noUiSlider.set(value); } diff --git a/packages/controls/src/widget_selection.ts b/packages/controls/src/widget_selection.ts index a9fa99e12e8..d1fa97cf3f1 100644 --- a/packages/controls/src/widget_selection.ts +++ b/packages/controls/src/widget_selection.ts @@ -834,7 +834,11 @@ export class SelectionSliderView extends DescriptionView { }); } - updateSliderValue(e: any) { + updateSliderValue(model: any, _: any, options: any) { + if (options.updated_view === this) { + return; + } + const prev_index = this.$slider.noUiSlider.get(); const index = this.model.get('index'); if (prev_index !== index) { @@ -972,7 +976,11 @@ export class SelectionRangeSliderView extends SelectionSliderView { this.touch(); } - updateSliderValue(e: any) { + updateSliderValue(model: any, _: any, options: any) { + if (options.updated_view === this) { + return; + } + // Rounding values to avoid floating point precision error for the if statement below const prev_index = this.$slider.noUiSlider.get().map(Math.round); const index = this.model.get('index').map(Math.round); From c447158f5f5eb74cdfa7321c2b71013d8daa8a8a Mon Sep 17 00:00:00 2001 From: Itay Dafna Date: Fri, 21 Feb 2020 16:41:47 -0800 Subject: [PATCH 020/101] Fix disabled property CSS logic --- packages/controls/css/nouislider.css | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/packages/controls/css/nouislider.css b/packages/controls/css/nouislider.css index 869da4e955c..a13a47bb0b2 100644 --- a/packages/controls/css/nouislider.css +++ b/packages/controls/css/nouislider.css @@ -187,12 +187,12 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI } /* Disabled state; */ -[disabled] .noUi-connect { +.widget-slider [disabled] .noUi-connect { background: #b8b8b8; } -[disabled].noUi-target, -[disabled].noUi-handle, -[disabled] .noUi-handle { +.widget-slider [disabled].noUi-target, +.widget-slider [disabled].noUi-handle, +.widget-slider [disabled] .noUi-handle { cursor: not-allowed; } /* Base; @@ -387,13 +387,17 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI outline: none; } -.widget-slider .noUi-handle:hover, -.noUi-handle:focus { +.widget-slider .noUi-target:not([disabled]) .noUi-handle:hover, +.widget-slider .noUi-target:not([disabled]) .noUi-handle:focus { background-color: var(--jp-widgets-slider-active-handle-color); border: var(--jp-widgets-slider-border-width) solid var(--jp-widgets-slider-active-handle-color); } +.widget-slider [disabled].noUi-target { + opacity: 0.35; +} + .widget-slider .noUi-connects { overflow: visible; z-index: 0; From 42505491e5b4441c30e5b3bceaf517fe198f33a2 Mon Sep 17 00:00:00 2001 From: Itay Dafna Date: Fri, 21 Feb 2020 16:42:20 -0800 Subject: [PATCH 021/101] Fix horizontal slider alignment CSS --- packages/controls/css/widgets-base.css | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/controls/css/widgets-base.css b/packages/controls/css/widgets-base.css index 540a2cdb1f3..0178d2cd206 100644 --- a/packages/controls/css/widgets-base.css +++ b/packages/controls/css/widgets-base.css @@ -495,7 +495,6 @@ } .widget-hslider .slider-container { - height: var(--jp-widgets-inline-height); margin-left: calc( var(--jp-widgets-slider-handle-size) / 2 - 2 * var(--jp-widgets-slider-border-width) From 18eba868d42fb5c44c9a23f8fc6f2dbc53cf174d Mon Sep 17 00:00:00 2001 From: Itay Dafna Date: Fri, 21 Feb 2020 16:49:19 -0800 Subject: [PATCH 022/101] Update model spec --- packages/schema/jupyterwidgetmodels.latest.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/schema/jupyterwidgetmodels.latest.md b/packages/schema/jupyterwidgetmodels.latest.md index fd86acb6bae..2c748b386c9 100644 --- a/packages/schema/jupyterwidgetmodels.latest.md +++ b/packages/schema/jupyterwidgetmodels.latest.md @@ -441,7 +441,7 @@ Attribute | Type | Default | Help `orientation` | string (one of `'horizontal'`, `'vertical'`) | `'horizontal'` | Vertical or horizontal. `readout` | boolean | `true` | Display the current value of the slider next to it. `readout_format` | string | `'.3g'` | Format for the readout -`step` | number (float) | `0.1` | Minimum step in the exponent to increment the value +`step` | `null` or number (float) | `0.1` | Minimum step in the exponent to increment the value `style` | reference to SliderStyle widget | reference to new instance | `tabbable` | `null` or boolean | `null` | Is widget tabbable? `tooltip` | `null` or string | `null` | A tooltip caption. @@ -489,7 +489,7 @@ Attribute | Type | Default | Help `orientation` | string (one of `'horizontal'`, `'vertical'`) | `'horizontal'` | Vertical or horizontal. `readout` | boolean | `true` | Display the current value of the slider next to it. `readout_format` | string | `'.2f'` | Format for the readout -`step` | number (float) | `0.1` | Minimum step to increment the value +`step` | `null` or number (float) | `0.1` | Minimum step to increment the value `style` | reference to SliderStyle widget | reference to new instance | `tabbable` | `null` or boolean | `null` | Is widget tabbable? `tooltip` | `null` or string | `null` | A tooltip caption. @@ -515,7 +515,7 @@ Attribute | Type | Default | Help `orientation` | string (one of `'horizontal'`, `'vertical'`) | `'horizontal'` | Vertical or horizontal. `readout` | boolean | `true` | Display the current value of the slider next to it. `readout_format` | string | `'.2f'` | Format for the readout -`step` | number (float) | `0.1` | Minimum step to increment the value +`step` | `null` or number (float) | `0.1` | Minimum step to increment the value `style` | reference to SliderStyle widget | reference to new instance | `tabbable` | `null` or boolean | `null` | Is widget tabbable? `tooltip` | `null` or string | `null` | A tooltip caption. From 550431b90aef638a8019d44a086fd692f73b9cff Mon Sep 17 00:00:00 2001 From: Yuan Gong Date: Sun, 23 Feb 2020 14:33:46 +0800 Subject: [PATCH 023/101] Use data-jupyter-widgets-cdn-only attribute to load modules only from CDN --- packages/html-manager/src/libembed-amd.ts | 33 ++++++++++++++--------- 1 file changed, 21 insertions(+), 12 deletions(-) diff --git a/packages/html-manager/src/libembed-amd.ts b/packages/html-manager/src/libembed-amd.ts index 61057b332eb..d8906b84c2c 100644 --- a/packages/html-manager/src/libembed-amd.ts +++ b/packages/html-manager/src/libembed-amd.ts @@ -4,11 +4,14 @@ import * as libembed from './libembed'; let cdn = 'https://unpkg.com/'; +let onlyCDN = false; // find the data-cdn for any script tag, assuming it is only used for embed-amd.js const scripts = document.getElementsByTagName('script'); Array.prototype.forEach.call(scripts, (script: HTMLScriptElement) => { cdn = script.getAttribute('data-jupyter-widgets-cdn') || cdn; + onlyCDN = + onlyCDN || script.getAttribute('data-jupyter-widgets-cdn-only') != null; }); /** @@ -62,22 +65,28 @@ export function requireLoader( moduleName: string, moduleVersion: string ): Promise { + const require = (window as any).requirejs; + if (require === undefined) { + throw new Error( + 'Requirejs is needed, please ensure it is loaded on the page.' + ); + } + function loadFromCDN(): Promise { + const conf: { paths: { [key: string]: string } } = { paths: {} }; + conf.paths[moduleName] = moduleNameToCDNUrl(moduleName, moduleVersion); + require.config(conf); + return requirePromise([`${moduleName}`]); + } + if (onlyCDN) { + console.log(`Loading from ${cdn} for ${moduleName}@${moduleVersion}`); + return loadFromCDN(); + } return requirePromise([`${moduleName}`]).catch(err => { const failedId = err.requireModules && err.requireModules[0]; if (failedId) { - console.log(`Falling back to ${cdn} for ${moduleName}@${moduleVersion}`); - const require = (window as any).requirejs; - if (require === undefined) { - throw new Error( - 'Requirejs is needed, please ensure it is loaded on the page.' - ); - } - const conf: { paths: { [key: string]: string } } = { paths: {} }; - conf.paths[moduleName] = moduleNameToCDNUrl(moduleName, moduleVersion); require.undef(failedId); - require.config(conf); - - return requirePromise([`${moduleName}`]); + console.log(`Falling back to ${cdn} for ${moduleName}@${moduleVersion}`); + loadFromCDN(); } }); } From 522fe7114c47a2caad626b497e9d3708e9edc1f4 Mon Sep 17 00:00:00 2001 From: Yuan Gong Date: Sun, 23 Feb 2020 14:40:43 +0800 Subject: [PATCH 024/101] Add related documentation --- docs/source/embedding.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/docs/source/embedding.md b/docs/source/embedding.md index 48bf993b23c..f7e9d5c7177 100644 --- a/docs/source/embedding.md +++ b/docs/source/embedding.md @@ -124,6 +124,7 @@ html_template = """ @@ -181,6 +182,9 @@ documents, you may want to use a templating engine like We also change the CDN from its default of unpkg to use jsdelivr by setting the `data-jupyter-widgets-cdn` attribute. +What's more, we only load modules from the CDN by setting the +`data-jupyter-widgets-cdn-only` attribute. + In all embedding functions in `ipywidgets.embed`, the state of all widgets known to the widget manager is included by default. You can alternatively pass a reduced state to use instead. This can be particularly relevant if you @@ -270,6 +274,11 @@ While the default CDN is using https://unpkg.com it can be configured by setting the optional `data-jupyter-widgets-cdn` attribute for script tag which loads `embed-amd.js`, as shown in the example above. +While the default strategy is loading modules from the same site, and then +falling back to CDN. This can be configured by setting the optional +`data-jupyter-widgets-cdn-only` attribute for script tag which loads `embed-amd.js` +as shown in the example above too. + The [widget-cookiecutter](https://github.com/jupyter/widget-cookiecutter) template project contains a template project for a custom widget library following the best practices for authoring widgets, which ensure that your From f0a373544f1103ec87a21133f47e37627a8eb741 Mon Sep 17 00:00:00 2001 From: martinRenou Date: Thu, 27 Feb 2020 09:30:57 +0100 Subject: [PATCH 025/101] Docs: Add warning concerning the FileUpload widget Signed-off-by: martinRenou --- docs/source/examples/Widget List.ipynb | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/source/examples/Widget List.ipynb b/docs/source/examples/Widget List.ipynb index bf95afce432..9ed66ebd136 100644 --- a/docs/source/examples/Widget List.ipynb +++ b/docs/source/examples/Widget List.ipynb @@ -1130,6 +1130,10 @@ "- The `.value` traitlet is now a list of dictionaries, rather than a dictionary mapping the uploaded name to the content. To retrieve the original form, use `{f[\"name\"]: f.content.tobytes() for f in uploader.value}`.\n", "- The `.data` traitlet has been removed. To retrieve it, use `[f.content.tobytes() for f in uploader.value]`.\n", "- The `.metadata` traitlet has been removed. To retrieve it, use `[{k: v for k, v in f.items() if k != \"content\"} for f in w.value]`.\n", + "
\n", + "\n", + "
\n", + "Warning: When using the `FileUpload` Widget, uploaded file content might be saved in the Notebook if Widget state is saved.\n", "
" ] }, From 6f1b3795a26173ce6c3865c53c98b28698dd39cd Mon Sep 17 00:00:00 2001 From: martinRenou Date: Thu, 27 Feb 2020 09:43:25 +0100 Subject: [PATCH 026/101] Update docs/source/examples/Widget List.ipynb Co-Authored-By: Jason Grout --- docs/source/examples/Widget List.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/examples/Widget List.ipynb b/docs/source/examples/Widget List.ipynb index 9ed66ebd136..54bef595c4a 100644 --- a/docs/source/examples/Widget List.ipynb +++ b/docs/source/examples/Widget List.ipynb @@ -1133,7 +1133,7 @@ "
\n", "\n", "
\n", - "Warning: When using the `FileUpload` Widget, uploaded file content might be saved in the Notebook if Widget state is saved.\n", + "Warning: When using the `FileUpload` Widget, uploaded file content might be saved in the notebook if widget state is saved.\n", "
" ] }, From c3c6efbed5eec8ec6c553951af9e87ac444b84c2 Mon Sep 17 00:00:00 2001 From: Jeff Date: Thu, 27 Feb 2020 15:46:39 -0700 Subject: [PATCH 027/101] Change css variable name to match Lab Lab: https://github.com/jupyterlab/jupyterlab/blob/master/packages/theme-light-extension/style/variables.css --- packages/controls/css/labvariables.css | 8 +++---- packages/controls/css/widgets-base.css | 30 +++++++++++++------------- 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/packages/controls/css/labvariables.css b/packages/controls/css/labvariables.css index bccd5b11069..e5194e46ba6 100644 --- a/packages/controls/css/labvariables.css +++ b/packages/controls/css/labvariables.css @@ -91,10 +91,10 @@ all of MD as it is not optimized for dense, information rich UIs. These will typically go from light to darker, in both a dark and light theme */ - --jp-inverse-ui-font-color0: rgba(255, 255, 255, 1); - --jp-inverse-ui-font-color1: rgba(255, 255, 255, 1); - --jp-inverse-ui-font-color2: rgba(255, 255, 255, 0.7); - --jp-inverse-ui-font-color3: rgba(255, 255, 255, 0.5); + --jp-ui-inverse-font-color0: rgba(255, 255, 255, 1); + --jp-ui-inverse-font-color1: rgba(255, 255, 255, 1); + --jp-ui-inverse-font-color2: rgba(255, 255, 255, 0.7); + --jp-ui-inverse-font-color3: rgba(255, 255, 255, 0.5); /* Content Fonts diff --git a/packages/controls/css/widgets-base.css b/packages/controls/css/widgets-base.css index 0178d2cd206..6c4843d7b66 100644 --- a/packages/controls/css/widgets-base.css +++ b/packages/controls/css/widgets-base.css @@ -187,85 +187,85 @@ /* Button "Primary" Styling */ .jupyter-button.mod-primary { - color: var(--jp-inverse-ui-font-color1); + color: var(--jp-ui-inverse-font-color1); background-color: var(--jp-brand-color1); } .jupyter-button.mod-primary.mod-active { - color: var(--jp-inverse-ui-font-color0); + color: var(--jp-ui-inverse-font-color0); background-color: var(--jp-brand-color0); } .jupyter-button.mod-primary:active { - color: var(--jp-inverse-ui-font-color0); + color: var(--jp-ui-inverse-font-color0); background-color: var(--jp-brand-color0); } /* Button "Success" Styling */ .jupyter-button.mod-success { - color: var(--jp-inverse-ui-font-color1); + color: var(--jp-ui-inverse-font-color1); background-color: var(--jp-success-color1); } .jupyter-button.mod-success.mod-active { - color: var(--jp-inverse-ui-font-color0); + color: var(--jp-ui-inverse-font-color0); background-color: var(--jp-success-color0); } .jupyter-button.mod-success:active { - color: var(--jp-inverse-ui-font-color0); + color: var(--jp-ui-inverse-font-color0); background-color: var(--jp-success-color0); } /* Button "Info" Styling */ .jupyter-button.mod-info { - color: var(--jp-inverse-ui-font-color1); + color: var(--jp-ui-inverse-font-color1); background-color: var(--jp-info-color1); } .jupyter-button.mod-info.mod-active { - color: var(--jp-inverse-ui-font-color0); + color: var(--jp-ui-inverse-font-color0); background-color: var(--jp-info-color0); } .jupyter-button.mod-info:active { - color: var(--jp-inverse-ui-font-color0); + color: var(--jp-ui-inverse-font-color0); background-color: var(--jp-info-color0); } /* Button "Warning" Styling */ .jupyter-button.mod-warning { - color: var(--jp-inverse-ui-font-color1); + color: var(--jp-ui-inverse-font-color1); background-color: var(--jp-warn-color1); } .jupyter-button.mod-warning.mod-active { - color: var(--jp-inverse-ui-font-color0); + color: var(--jp-ui-inverse-font-color0); background-color: var(--jp-warn-color0); } .jupyter-button.mod-warning:active { - color: var(--jp-inverse-ui-font-color0); + color: var(--jp-ui-inverse-font-color0); background-color: var(--jp-warn-color0); } /* Button "Danger" Styling */ .jupyter-button.mod-danger { - color: var(--jp-inverse-ui-font-color1); + color: var(--jp-ui-inverse-font-color1); background-color: var(--jp-error-color1); } .jupyter-button.mod-danger.mod-active { - color: var(--jp-inverse-ui-font-color0); + color: var(--jp-ui-inverse-font-color0); background-color: var(--jp-error-color0); } .jupyter-button.mod-danger:active { - color: var(--jp-inverse-ui-font-color0); + color: var(--jp-ui-inverse-font-color0); background-color: var(--jp-error-color0); } From 3a4d1a8e3477d2e625ba2700acf0cab5647a0a5c Mon Sep 17 00:00:00 2001 From: Jeremy Tuloup Date: Thu, 5 Mar 2020 21:08:16 +0100 Subject: [PATCH 028/101] Fix ESLint warnings --- packages/controls/src/widget_float.ts | 10 +++++----- packages/controls/src/widget_int.ts | 24 +++++++++++------------ packages/controls/src/widget_selection.ts | 20 +++++++++---------- 3 files changed, 27 insertions(+), 27 deletions(-) diff --git a/packages/controls/src/widget_float.ts b/packages/controls/src/widget_float.ts index 358bbeae5d1..1ba1e756533 100644 --- a/packages/controls/src/widget_float.ts +++ b/packages/controls/src/widget_float.ts @@ -145,7 +145,7 @@ export class FloatLogSliderView extends BaseIntSliderView { return log_value; } - createSlider() { + createSlider(): void { const orientation = this.model.get('orientation'); noUiSlider.create(this.$slider, { start: this.logCalc(this.model.get('value')), @@ -158,8 +158,8 @@ export class FloatLogSliderView extends BaseIntSliderView { orientation: orientation, direction: orientation === 'horizontal' ? 'ltr' : 'rtl', format: { - from: (value: number) => value, - to: (value: number) => value + from: (value: number): number => value, + to: (value: number): number => value } }); @@ -258,7 +258,7 @@ export class FloatLogSliderView extends BaseIntSliderView { this.$slider.noUiSlider.set(log_value); } - updateSliderOptions(e: any) { + updateSliderOptions(e: any): void { this.$slider.noUiSlider.updateOptions({ start: this.logCalc(this.model.get('value')), range: { @@ -269,7 +269,7 @@ export class FloatLogSliderView extends BaseIntSliderView { }); } - _validate_slide_value(x: any) { + _validate_slide_value(x: any): any { return x; } diff --git a/packages/controls/src/widget_int.ts b/packages/controls/src/widget_int.ts index c0bd798ed4e..8cb974347cc 100644 --- a/packages/controls/src/widget_int.ts +++ b/packages/controls/src/widget_int.ts @@ -123,7 +123,7 @@ export abstract class BaseIntSliderView extends DescriptionView { * Called when the model is changed. The model may have been * changed by another view or by a state update from the back-end. */ - update(options?: any) { + update(options?: any): void { if (options === undefined || options.updated_view !== this) { if (this.model.get('disabled')) { this.readout.contentEditable = 'false'; @@ -201,7 +201,7 @@ export abstract class BaseIntSliderView extends DescriptionView { /** * Create a new noUiSlider object */ - createSlider() { + createSlider(): void { const orientation = this.model.get('orientation'); noUiSlider.create(this.$slider, { start: this.model.get('value'), @@ -215,8 +215,8 @@ export abstract class BaseIntSliderView extends DescriptionView { orientation: orientation, direction: orientation === 'horizontal' ? 'ltr' : 'rtl', format: { - from: (value: number) => value, - to: (value: number) => value + from: (value: number): number => value, + to: (value: number): number => value } }); @@ -238,7 +238,7 @@ export abstract class BaseIntSliderView extends DescriptionView { * handled in a separate function and has a dedicated event * handler. */ - regenSlider(e: any) { + regenSlider(e: any): void { this.$slider.noUiSlider.destroy(); this.createSlider(); } @@ -293,7 +293,7 @@ export abstract class BaseIntSliderView extends DescriptionView { } export class IntRangeSliderView extends BaseIntSliderView { - update(options?: any) { + update(options?: any): void { super.update(options); const value = this.model.get('value'); this.readout.textContent = this.valueToString(value); @@ -363,7 +363,7 @@ export class IntRangeSliderView extends BaseIntSliderView { } } - handleSliderChange(values: any, handle: any) { + handleSliderChange(values: any, handle: any): void { const actual_value = values.map(this._validate_slide_value); this.readout.textContent = this.valueToString(actual_value); @@ -374,13 +374,13 @@ export class IntRangeSliderView extends BaseIntSliderView { } } - handleSliderChanged(values: number[], handle: number) { + handleSliderChanged(values: number[], handle: number): void { const actual_value = values.map(this._validate_slide_value); this.model.set('value', actual_value, { updated_view: this }); this.touch(); } - updateSliderOptions(e: any) { + updateSliderOptions(e: any): void { this.$slider.noUiSlider.updateOptions({ start: this.model.get('value'), range: { @@ -391,7 +391,7 @@ export class IntRangeSliderView extends BaseIntSliderView { }); } - updateSliderValue(model: any, _: any, options: any) { + updateSliderValue(model: any, _: any, options: any): void { if (options.updated_view === this) { return; } @@ -457,7 +457,7 @@ export class IntSliderView extends BaseIntSliderView { } } - handleSliderChange(values: any, handle: any) { + handleSliderChange(values: any, handle: any): void { const actual_value = this._validate_slide_value(values[handle]); this.readout.textContent = this.valueToString(actual_value); @@ -468,7 +468,7 @@ export class IntSliderView extends BaseIntSliderView { } } - handleSliderChanged(values: any, handle: any) { + handleSliderChanged(values: any, handle: any): void { const actual_value = this._validate_slide_value(values[handle]); const model_value = this.model.get('value'); diff --git a/packages/controls/src/widget_selection.ts b/packages/controls/src/widget_selection.ts index d1fa97cf3f1..b87fc323261 100644 --- a/packages/controls/src/widget_selection.ts +++ b/packages/controls/src/widget_selection.ts @@ -737,12 +737,12 @@ export class SelectionSliderView extends DescriptionView { return super.update(options); } - regenSlider(e: any) { + regenSlider(e: any): void { this.$slider.noUiSlider.destroy(); this.createSlider(); } - createSlider() { + createSlider(): void { const labels = this.model.get('_options_labels'); const min = 0; const max = labels.length - 1; @@ -760,8 +760,8 @@ export class SelectionSliderView extends DescriptionView { orientation: orientation, direction: orientation === 'horizontal' ? 'ltr' : 'rtl', format: { - from: (value: number) => value, - to: (value: number) => value + from: (value: number): number => value, + to: (value: number): number => value } }); @@ -812,14 +812,14 @@ export class SelectionSliderView extends DescriptionView { * Calling model.set will trigger all of the other views of the * model to update. */ - handleSliderChanged(values: number[], handle: number) { + handleSliderChanged(values: number[], handle: number): void { const index = values[0]; this.updateReadout(index); this.model.set('index', index, { updated_view: this }); this.touch(); } - updateSliderOptions(e: any) { + updateSliderOptions(e: any): void { const labels = this.model.get('_options_labels'); const min = 0; const max = labels.length - 1; @@ -834,7 +834,7 @@ export class SelectionSliderView extends DescriptionView { }); } - updateSliderValue(model: any, _: any, options: any) { + updateSliderValue(model: any, _: any, options: any): void { if (options.updated_view === this) { return; } @@ -950,7 +950,7 @@ export class SelectionRangeSliderView extends SelectionSliderView { /** * Called when the slider value is changing. */ - handleSliderChange(values: number[], handle: any) { + handleSliderChange(values: number[], handle: any): void { const intValues = values.map(Math.trunc); this.updateReadout(intValues); @@ -967,7 +967,7 @@ export class SelectionRangeSliderView extends SelectionSliderView { * Calling model.set will trigger all of the other views of the * model to update. */ - handleSliderChanged(values: number[], handle: number) { + handleSliderChanged(values: number[], handle: number): void { const intValues = values.map(Math.round); this.updateReadout(intValues); @@ -976,7 +976,7 @@ export class SelectionRangeSliderView extends SelectionSliderView { this.touch(); } - updateSliderValue(model: any, _: any, options: any) { + updateSliderValue(model: any, _: any, options: any): void { if (options.updated_view === this) { return; } From d086c5dbf4cb965da433f4a6e8bdaac2aedcde85 Mon Sep 17 00:00:00 2001 From: Jason Grout Date: Mon, 9 Mar 2020 13:55:32 -0700 Subject: [PATCH 029/101] Update jlab manager readme for 2.0 --- packages/jupyterlab-manager/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/jupyterlab-manager/README.md b/packages/jupyterlab-manager/README.md index 635ecc14e8e..51bfcb9bc04 100644 --- a/packages/jupyterlab-manager/README.md +++ b/packages/jupyterlab-manager/README.md @@ -30,6 +30,7 @@ JupyterLab extension. * For JupyterLab 0.35.x, use `jupyter labextension install @jupyter-widgets/jupyterlab-manager@0.38` * For JupyterLab 1.0.x and 1.1.x, use `jupyter labextension install @jupyter-widgets/jupyterlab-manager@1.0` * For JupyterLab 1.2.x, use `jupyter labextension install @jupyter-widgets/jupyterlab-manager@1.1` +* For JupyterLab 2.x, use `jupyter labextension install @jupyter-widgets/jupyterlab-manager@2.0` Source Build From 1c07cfcf7ba8a6fb536ad6b0a61b9de535f76542 Mon Sep 17 00:00:00 2001 From: Jason Grout Date: Mon, 9 Mar 2020 15:26:49 -0700 Subject: [PATCH 030/101] Bump the model spec versions for base and controls. Regenerate the corresponding model spec documentation. --- ipywidgets/_version.py | 4 +- packages/base/src/version.ts | 2 +- packages/controls/src/version.ts | 2 +- .../schema/jupyterwidgetmodels.latest.json | 1990 ++++++++++++----- packages/schema/jupyterwidgetmodels.latest.md | 330 +-- 5 files changed, 1624 insertions(+), 704 deletions(-) diff --git a/ipywidgets/_version.py b/ipywidgets/_version.py index 5b3a9a54008..ac6daa19880 100644 --- a/ipywidgets/_version.py +++ b/ipywidgets/_version.py @@ -9,9 +9,9 @@ '' if version_info[3]=='final' else _specifier_[version_info[3]]+str(version_info[4])) __protocol_version__ = '2.0.0' -__jupyter_widgets_base_version__ = '1.2.0' +__jupyter_widgets_base_version__ = '2.0.0' __jupyter_widgets_output_version__ = '1.0.0' -__jupyter_widgets_controls_version__ = '1.5.0' +__jupyter_widgets_controls_version__ = '2.0.0' # A compatible @jupyter-widgets/html-manager npm package semver range __html_manager_version__ = '^0.18.0' diff --git a/packages/base/src/version.ts b/packages/base/src/version.ts index 36fef05ff19..d1e617d5bd8 100644 --- a/packages/base/src/version.ts +++ b/packages/base/src/version.ts @@ -1,6 +1,6 @@ // Copyright (c) Jupyter Development Team. // Distributed under the terms of the Modified BSD License. -export const JUPYTER_WIDGETS_VERSION = '1.2.0'; +export const JUPYTER_WIDGETS_VERSION = '2.0.0'; export const PROTOCOL_VERSION = '2.0.0'; diff --git a/packages/controls/src/version.ts b/packages/controls/src/version.ts index 57766ecf753..d6ad9ab6a83 100644 --- a/packages/controls/src/version.ts +++ b/packages/controls/src/version.ts @@ -5,4 +5,4 @@ * The version of the Jupyter controls widget attribute spec that this package * implements. */ -export const JUPYTER_CONTROLS_VERSION = '1.5.0'; +export const JUPYTER_CONTROLS_VERSION = '2.0.0'; diff --git a/packages/schema/jupyterwidgetmodels.latest.json b/packages/schema/jupyterwidgetmodels.latest.json index d84d7c19f3a..7c37698aa85 100644 --- a/packages/schema/jupyterwidgetmodels.latest.json +++ b/packages/schema/jupyterwidgetmodels.latest.json @@ -8,7 +8,7 @@ "type": "string" }, { - "default": "1.1.0", + "default": "2.0.0", "help": "A semver requirement for namespace version containing the model.", "name": "_model_module_version", "type": "string" @@ -26,7 +26,7 @@ "type": "string" }, { - "default": "1.1.0", + "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" @@ -229,6 +229,21 @@ "name": "justify_content", "type": "string" }, + { + "allow_none": true, + "default": null, + "enum": [ + "flex-start", + "flex-end", + "center", + "inherit", + "initial", + "unset" + ], + "help": "The justify-items CSS attribute.", + "name": "justify_items", + "type": "string" + }, { "allow_none": true, "default": null, @@ -274,56 +289,36 @@ { "allow_none": true, "default": null, - "help": "The order CSS attribute.", - "name": "order", + "enum": [ + "contain", + "cover", + "fill", + "scale-down", + "none" + ], + "help": "The object-fit CSS attribute.", + "name": "object_fit", "type": "string" }, { "allow_none": true, "default": null, - "enum": [ - "visible", - "hidden", - "scroll", - "auto", - "inherit", - "initial", - "unset" - ], - "help": "The overflow CSS attribute.", - "name": "overflow", + "help": "The object-position CSS attribute.", + "name": "object_position", "type": "string" }, { "allow_none": true, "default": null, - "enum": [ - "visible", - "hidden", - "scroll", - "auto", - "inherit", - "initial", - "unset" - ], - "help": "The overflow-x CSS attribute.", - "name": "overflow_x", + "help": "The order CSS attribute.", + "name": "order", "type": "string" }, { "allow_none": true, "default": null, - "enum": [ - "visible", - "hidden", - "scroll", - "auto", - "inherit", - "initial", - "unset" - ], - "help": "The overflow-y CSS attribute.", - "name": "overflow_y", + "help": "The overflow CSS attribute.", + "name": "overflow", "type": "string" }, { @@ -350,7 +345,13 @@ { "allow_none": true, "default": null, - "enum": ["visible", "hidden", "inherit", "initial", "unset"], + "enum": [ + "visible", + "hidden", + "inherit", + "initial", + "unset" + ], "help": "The visibility CSS attribute.", "name": "visibility", "type": "string" @@ -366,12 +367,12 @@ "model": { "module": "@jupyter-widgets/base", "name": "LayoutModel", - "version": "1.1.0" + "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/base", "name": "LayoutView", - "version": "1.1.0" + "version": "2.0.0" } }, { @@ -392,7 +393,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" @@ -403,12 +404,6 @@ "name": "_model_name", "type": "string" }, - { - "default": {}, - "help": "Titles of the pages", - "name": "_titles", - "type": "object" - }, { "default": "@jupyter-widgets/controls", "help": "", @@ -416,7 +411,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" @@ -429,7 +424,13 @@ }, { "default": "", - "enum": ["success", "info", "warning", "danger", ""], + "enum": [ + "success", + "info", + "warning", + "danger", + "" + ], "help": "Use a predefined styling for the box.", "name": "box_style", "type": "string" @@ -453,21 +454,44 @@ }, { "allow_none": true, - "default": 0, + "default": null, "help": "The index of the selected page. This is either an integer selecting a particular sub-widget, or None to have no widgets selected.", "name": "selected_index", "type": "int" + }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "default": [], + "help": "Titles of the pages", + "items": { + "type": "string" + }, + "name": "titles", + "type": "array" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" } ], "model": { "module": "@jupyter-widgets/controls", "name": "AccordionModel", - "version": "1.4.0" + "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "AccordionView", - "version": "1.4.0" + "version": "2.0.0" } }, { @@ -488,7 +512,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" @@ -506,7 +530,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" @@ -548,9 +572,23 @@ "name": "loop", "type": "bool" }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" + }, { "default": "b''", - "help": "The media data as a byte string.", + "help": "The media data as a memory view of bytes.", "name": "value", "type": "bytes" } @@ -558,12 +596,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "AudioModel", - "version": "1.4.0" + "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "AudioView", - "version": "1.4.0" + "version": "2.0.0" } }, { @@ -584,7 +622,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" @@ -602,7 +640,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" @@ -625,13 +663,6 @@ "name": "description", "type": "string" }, - { - "allow_none": true, - "default": null, - "help": "Tooltip for the description (defaults to description).", - "name": "description_tooltip", - "type": "string" - }, { "default": false, "help": "Enable or disable user changes", @@ -671,6 +702,20 @@ "type": "reference", "widget": "DescriptionStyle" }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" + }, { "default": 0.0, "help": "Float value", @@ -681,12 +726,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "BoundedFloatTextModel", - "version": "1.4.0" + "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "FloatTextView", - "version": "1.4.0" + "version": "2.0.0" } }, { @@ -707,7 +752,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" @@ -725,7 +770,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" @@ -748,13 +793,6 @@ "name": "description", "type": "string" }, - { - "allow_none": true, - "default": null, - "help": "Tooltip for the description (defaults to description).", - "name": "description_tooltip", - "type": "string" - }, { "default": false, "help": "Enable or disable user changes", @@ -793,6 +831,20 @@ "type": "reference", "widget": "DescriptionStyle" }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" + }, { "default": 0, "help": "Int value", @@ -803,12 +855,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "BoundedIntTextModel", - "version": "1.4.0" + "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "IntTextView", - "version": "1.4.0" + "version": "2.0.0" } }, { @@ -829,7 +881,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" @@ -847,7 +899,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" @@ -860,7 +912,13 @@ }, { "default": "", - "enum": ["success", "info", "warning", "danger", ""], + "enum": [ + "success", + "info", + "warning", + "danger", + "" + ], "help": "Use a predefined styling for the box.", "name": "box_style", "type": "string" @@ -881,17 +939,31 @@ "name": "layout", "type": "reference", "widget": "Layout" + }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" } ], "model": { "module": "@jupyter-widgets/controls", "name": "BoxModel", - "version": "1.4.0" + "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "BoxView", - "version": "1.4.0" + "version": "2.0.0" } }, { @@ -912,7 +984,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" @@ -930,7 +1002,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" @@ -943,7 +1015,14 @@ }, { "default": "", - "enum": ["primary", "success", "info", "warning", "danger", ""], + "enum": [ + "primary", + "success", + "info", + "warning", + "danger", + "" + ], "help": "Use a predefined styling for the button.", "name": "button_style", "type": "string" @@ -962,7 +1041,7 @@ }, { "default": "", - "help": "Font-awesome icon name, without the 'fa-' prefix.", + "help": "Font-awesome icon names, without the 'fa-' prefix.", "name": "icon", "type": "string" }, @@ -981,8 +1060,16 @@ "widget": "ButtonStyle" }, { - "default": "", - "help": "Tooltip caption of the button.", + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", "name": "tooltip", "type": "string" } @@ -990,12 +1077,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "ButtonModel", - "version": "1.4.0" + "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "ButtonView", - "version": "1.4.0" + "version": "2.0.0" } }, { @@ -1007,7 +1094,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" @@ -1025,7 +1112,7 @@ "type": "string" }, { - "default": "1.1.0", + "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" @@ -1053,12 +1140,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "ButtonStyleModel", - "version": "1.4.0" + "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/base", "name": "StyleView", - "version": "1.1.0" + "version": "2.0.0" } }, { @@ -1079,7 +1166,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" @@ -1097,7 +1184,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" @@ -1114,13 +1201,6 @@ "name": "description", "type": "string" }, - { - "allow_none": true, - "default": null, - "help": "Tooltip for the description (defaults to description).", - "name": "description_tooltip", - "type": "string" - }, { "default": false, "help": "Enable or disable user changes.", @@ -1147,6 +1227,20 @@ "type": "reference", "widget": "DescriptionStyle" }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" + }, { "default": false, "help": "Bool value", @@ -1157,12 +1251,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "CheckboxModel", - "version": "1.4.0" + "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "CheckboxView", - "version": "1.4.0" + "version": "2.0.0" } }, { @@ -1183,7 +1277,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" @@ -1201,7 +1295,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" @@ -1224,13 +1318,6 @@ "name": "description", "type": "string" }, - { - "allow_none": true, - "default": null, - "help": "Tooltip for the description (defaults to description).", - "name": "description_tooltip", - "type": "string" - }, { "default": false, "help": "Enable or disable user changes.", @@ -1251,6 +1338,20 @@ "type": "reference", "widget": "DescriptionStyle" }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" + }, { "default": "black", "help": "The color value.", @@ -1261,12 +1362,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "ColorPickerModel", - "version": "1.4.0" + "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "ColorPickerView", - "version": "1.4.0" + "version": "2.0.0" } }, { @@ -1287,13 +1388,13 @@ "type": "string" }, { - "default": "1.4.0", + "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" }, { - "default": "ControllerAxisModel", + "default": "ComboboxModel", "help": "", "name": "_model_name", "type": "string" @@ -1305,17 +1406,41 @@ "type": "string" }, { - "default": "1.4.0", + "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" }, { - "default": "ControllerAxisView", + "default": "ComboboxView", "help": "", "name": "_view_name", "type": "string" }, + { + "default": true, + "help": "Update the value as the user types. If False, update on submission, e.g., pressing Enter or navigating away.", + "name": "continuous_update", + "type": "bool" + }, + { + "default": "", + "help": "Description of the control.", + "name": "description", + "type": "string" + }, + { + "default": false, + "help": "Enable or disable user changes", + "name": "disabled", + "type": "bool" + }, + { + "default": false, + "help": "If set, ensure value is in options. Implies continuous_update=False.", + "name": "ensure_option", + "type": "bool" + }, { "default": "reference to new instance", "help": "", @@ -1324,21 +1449,57 @@ "widget": "Layout" }, { - "default": 0.0, - "help": "The value of the axis.", + "default": [], + "help": "Dropdown options for the combobox", + "items": { + "type": "string" + }, + "name": "options", + "type": "array" + }, + { + "default": "\u200b", + "help": "Placeholder text to display when nothing has been typed", + "name": "placeholder", + "type": "string" + }, + { + "default": "reference to new instance", + "help": "Styling customizations", + "name": "style", + "type": "reference", + "widget": "DescriptionStyle" + }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" + }, + { + "default": "", + "help": "String value", "name": "value", - "type": "float" + "type": "string" } ], "model": { "module": "@jupyter-widgets/controls", - "name": "ControllerAxisModel", - "version": "1.4.0" + "name": "ComboboxModel", + "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/controls", - "name": "ControllerAxisView", - "version": "1.4.0" + "name": "ComboboxView", + "version": "2.0.0" } }, { @@ -1359,13 +1520,13 @@ "type": "string" }, { - "default": "1.4.0", + "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" }, { - "default": "ControllerButtonModel", + "default": "ControllerAxisModel", "help": "", "name": "_model_name", "type": "string" @@ -1377,13 +1538,13 @@ "type": "string" }, { - "default": "1.4.0", + "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" }, { - "default": "ControllerButtonView", + "default": "ControllerAxisView", "help": "", "name": "_view_name", "type": "string" @@ -1396,27 +1557,127 @@ "widget": "Layout" }, { - "default": false, - "help": "Whether the button is pressed.", - "name": "pressed", + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", "type": "bool" }, { - "default": 0.0, - "help": "The value of the button.", - "name": "value", - "type": "float" - } + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" + }, + { + "default": 0.0, + "help": "The value of the axis.", + "name": "value", + "type": "float" + } + ], + "model": { + "module": "@jupyter-widgets/controls", + "name": "ControllerAxisModel", + "version": "2.0.0" + }, + "view": { + "module": "@jupyter-widgets/controls", + "name": "ControllerAxisView", + "version": "2.0.0" + } + }, + { + "attributes": [ + { + "default": [], + "help": "CSS classes applied to widget DOM element", + "items": { + "type": "string" + }, + "name": "_dom_classes", + "type": "array" + }, + { + "default": "@jupyter-widgets/controls", + "help": "", + "name": "_model_module", + "type": "string" + }, + { + "default": "2.0.0", + "help": "", + "name": "_model_module_version", + "type": "string" + }, + { + "default": "ControllerButtonModel", + "help": "", + "name": "_model_name", + "type": "string" + }, + { + "default": "@jupyter-widgets/controls", + "help": "", + "name": "_view_module", + "type": "string" + }, + { + "default": "2.0.0", + "help": "", + "name": "_view_module_version", + "type": "string" + }, + { + "default": "ControllerButtonView", + "help": "", + "name": "_view_name", + "type": "string" + }, + { + "default": "reference to new instance", + "help": "", + "name": "layout", + "type": "reference", + "widget": "Layout" + }, + { + "default": false, + "help": "Whether the button is pressed.", + "name": "pressed", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" + }, + { + "default": 0.0, + "help": "The value of the button.", + "name": "value", + "type": "float" + } ], "model": { "module": "@jupyter-widgets/controls", "name": "ControllerButtonModel", - "version": "1.4.0" + "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "ControllerButtonView", - "version": "1.4.0" + "version": "2.0.0" } }, { @@ -1437,7 +1698,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" @@ -1455,7 +1716,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" @@ -1517,22 +1778,36 @@ "name": "name", "type": "string" }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, { "default": 0.0, "help": "The last time the data from this gamepad was updated.", "name": "timestamp", "type": "float" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" } ], "model": { "module": "@jupyter-widgets/controls", "name": "ControllerModel", - "version": "1.4.0" + "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "ControllerView", - "version": "1.4.0" + "version": "2.0.0" } }, { @@ -1553,7 +1828,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" @@ -1571,7 +1846,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" @@ -1590,9 +1865,23 @@ "type": "reference", "widget": "Layout" }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" + }, { "default": "b''", - "help": "The media data as a byte string.", + "help": "The media data as a memory view of bytes.", "name": "value", "type": "bytes" } @@ -1600,12 +1889,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "DOMWidgetModel", - "version": "1.4.0" + "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/controls", "name": null, - "version": "1.4.0" + "version": "2.0.0" } }, { @@ -1626,7 +1915,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" @@ -1644,7 +1933,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" @@ -1661,13 +1950,6 @@ "name": "description", "type": "string" }, - { - "allow_none": true, - "default": null, - "help": "Tooltip for the description (defaults to description).", - "name": "description_tooltip", - "type": "string" - }, { "default": false, "help": "Enable or disable user changes.", @@ -1688,6 +1970,20 @@ "type": "reference", "widget": "DescriptionStyle" }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" + }, { "allow_none": true, "default": null, @@ -1699,12 +1995,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "DatePickerModel", - "version": "1.4.0" + "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "DatePickerView", - "version": "1.4.0" + "version": "2.0.0" } }, { @@ -1716,7 +2012,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" @@ -1734,7 +2030,7 @@ "type": "string" }, { - "default": "1.1.0", + "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" @@ -1755,12 +2051,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "DescriptionStyleModel", - "version": "1.4.0" + "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/base", "name": "StyleView", - "version": "1.1.0" + "version": "2.0.0" } }, { @@ -1772,7 +2068,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" @@ -1790,7 +2086,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" @@ -1818,12 +2114,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "DirectionalLinkModel", - "version": "1.4.0" + "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/controls", "name": null, - "version": "1.4.0" + "version": "2.0.0" } }, { @@ -1844,7 +2140,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" @@ -1871,7 +2167,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" @@ -1888,13 +2184,6 @@ "name": "description", "type": "string" }, - { - "allow_none": true, - "default": null, - "help": "Tooltip for the description (defaults to description).", - "name": "description_tooltip", - "type": "string" - }, { "default": false, "help": "Enable or disable user changes", @@ -1921,17 +2210,31 @@ "name": "style", "type": "reference", "widget": "DescriptionStyle" + }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" } ], "model": { "module": "@jupyter-widgets/controls", "name": "DropdownModel", - "version": "1.4.0" + "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "DropdownView", - "version": "1.4.0" + "version": "2.0.0" } }, { @@ -1952,7 +2255,153 @@ "type": "string" }, { - "default": "1.4.0", + "default": "2.0.0", + "help": "", + "name": "_model_module_version", + "type": "string" + }, + { + "default": "FileUploadModel", + "help": "", + "name": "_model_name", + "type": "string" + }, + { + "default": "@jupyter-widgets/controls", + "help": "", + "name": "_view_module", + "type": "string" + }, + { + "default": "2.0.0", + "help": "", + "name": "_view_module_version", + "type": "string" + }, + { + "default": "FileUploadView", + "help": "", + "name": "_view_name", + "type": "string" + }, + { + "default": "", + "help": "File types to accept, empty string for all", + "name": "accept", + "type": "string" + }, + { + "default": "", + "enum": [ + "primary", + "success", + "info", + "warning", + "danger", + "" + ], + "help": "Use a predefined styling for the button.", + "name": "button_style", + "type": "string" + }, + { + "default": "", + "help": "Description of the control.", + "name": "description", + "type": "string" + }, + { + "default": false, + "help": "Enable or disable button", + "name": "disabled", + "type": "bool" + }, + { + "default": "", + "help": "Error message", + "name": "error", + "type": "string" + }, + { + "default": "upload", + "help": "Font-awesome icon name, without the 'fa-' prefix.", + "name": "icon", + "type": "string" + }, + { + "default": "reference to new instance", + "help": "", + "name": "layout", + "type": "reference", + "widget": "Layout" + }, + { + "default": false, + "help": "If True, allow for multiple files upload", + "name": "multiple", + "type": "bool" + }, + { + "default": "reference to new instance", + "help": "", + "name": "style", + "type": "reference", + "widget": "ButtonStyle" + }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" + }, + { + "default": [], + "help": "The file upload value", + "items": { + "type": "object" + }, + "name": "value", + "type": "array" + } + ], + "model": { + "module": "@jupyter-widgets/controls", + "name": "FileUploadModel", + "version": "2.0.0" + }, + "view": { + "module": "@jupyter-widgets/controls", + "name": "FileUploadView", + "version": "2.0.0" + } + }, + { + "attributes": [ + { + "default": [], + "help": "CSS classes applied to widget DOM element", + "items": { + "type": "string" + }, + "name": "_dom_classes", + "type": "array" + }, + { + "default": "@jupyter-widgets/controls", + "help": "", + "name": "_model_module", + "type": "string" + }, + { + "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" @@ -1970,7 +2419,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" @@ -1999,13 +2448,6 @@ "name": "description", "type": "string" }, - { - "allow_none": true, - "default": null, - "help": "Tooltip for the description (defaults to description).", - "name": "description_tooltip", - "type": "string" - }, { "default": false, "help": "Enable or disable user changes", @@ -2033,7 +2475,10 @@ }, { "default": "horizontal", - "enum": ["horizontal", "vertical"], + "enum": [ + "horizontal", + "vertical" + ], "help": "Vertical or horizontal.", "name": "orientation", "type": "string" @@ -2051,6 +2496,7 @@ "type": "string" }, { + "allow_none": true, "default": 0.1, "help": "Minimum step in the exponent to increment the value", "name": "step", @@ -2063,6 +2509,20 @@ "type": "reference", "widget": "SliderStyle" }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" + }, { "default": 1.0, "help": "Float value", @@ -2073,12 +2533,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "FloatLogSliderModel", - "version": "1.4.0" + "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "FloatLogSliderView", - "version": "1.4.0" + "version": "2.0.0" } }, { @@ -2099,7 +2559,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" @@ -2117,7 +2577,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" @@ -2131,7 +2591,13 @@ { "allow_none": true, "default": "", - "enum": ["success", "info", "warning", "danger", ""], + "enum": [ + "success", + "info", + "warning", + "danger", + "" + ], "help": "Use a predefined styling for the progess bar.", "name": "bar_style", "type": "string" @@ -2142,13 +2608,6 @@ "name": "description", "type": "string" }, - { - "allow_none": true, - "default": null, - "help": "Tooltip for the description (defaults to description).", - "name": "description_tooltip", - "type": "string" - }, { "default": "reference to new instance", "help": "", @@ -2170,7 +2629,10 @@ }, { "default": "horizontal", - "enum": ["horizontal", "vertical"], + "enum": [ + "horizontal", + "vertical" + ], "help": "Vertical or horizontal.", "name": "orientation", "type": "string" @@ -2182,6 +2644,20 @@ "type": "reference", "widget": "ProgressStyle" }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" + }, { "default": 0.0, "help": "Float value", @@ -2192,12 +2668,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "FloatProgressModel", - "version": "1.4.0" + "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "ProgressView", - "version": "1.4.0" + "version": "2.0.0" } }, { @@ -2218,7 +2694,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" @@ -2236,7 +2712,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" @@ -2259,13 +2735,6 @@ "name": "description", "type": "string" }, - { - "allow_none": true, - "default": null, - "help": "Tooltip for the description (defaults to description).", - "name": "description_tooltip", - "type": "string" - }, { "default": false, "help": "Enable or disable user changes", @@ -2293,7 +2762,10 @@ }, { "default": "horizontal", - "enum": ["horizontal", "vertical"], + "enum": [ + "horizontal", + "vertical" + ], "help": "Vertical or horizontal.", "name": "orientation", "type": "string" @@ -2311,6 +2783,7 @@ "type": "string" }, { + "allow_none": true, "default": 0.1, "help": "Minimum step to increment the value", "name": "step", @@ -2324,7 +2797,24 @@ "widget": "SliderStyle" }, { - "default": [0.0, 1.0], + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" + }, + { + "default": [ + 0.0, + 1.0 + ], "help": "Tuple of (lower, upper) bounds", "name": "value", "type": "array" @@ -2333,12 +2823,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "FloatRangeSliderModel", - "version": "1.4.0" + "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "FloatRangeSliderView", - "version": "1.4.0" + "version": "2.0.0" } }, { @@ -2359,7 +2849,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" @@ -2377,7 +2867,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" @@ -2400,13 +2890,6 @@ "name": "description", "type": "string" }, - { - "allow_none": true, - "default": null, - "help": "Tooltip for the description (defaults to description).", - "name": "description_tooltip", - "type": "string" - }, { "default": false, "help": "Enable or disable user changes", @@ -2434,7 +2917,10 @@ }, { "default": "horizontal", - "enum": ["horizontal", "vertical"], + "enum": [ + "horizontal", + "vertical" + ], "help": "Vertical or horizontal.", "name": "orientation", "type": "string" @@ -2452,6 +2938,7 @@ "type": "string" }, { + "allow_none": true, "default": 0.1, "help": "Minimum step to increment the value", "name": "step", @@ -2464,6 +2951,20 @@ "type": "reference", "widget": "SliderStyle" }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" + }, { "default": 0.0, "help": "Float value", @@ -2474,12 +2975,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "FloatSliderModel", - "version": "1.4.0" + "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "FloatSliderView", - "version": "1.4.0" + "version": "2.0.0" } }, { @@ -2500,7 +3001,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" @@ -2518,7 +3019,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" @@ -2541,13 +3042,6 @@ "name": "description", "type": "string" }, - { - "allow_none": true, - "default": null, - "help": "Tooltip for the description (defaults to description).", - "name": "description_tooltip", - "type": "string" - }, { "default": false, "help": "Enable or disable user changes", @@ -2575,6 +3069,20 @@ "type": "reference", "widget": "DescriptionStyle" }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" + }, { "default": 0.0, "help": "Float value", @@ -2585,12 +3093,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "FloatTextModel", - "version": "1.4.0" + "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "FloatTextView", - "version": "1.4.0" + "version": "2.0.0" } }, { @@ -2611,7 +3119,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" @@ -2629,7 +3137,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" @@ -2642,7 +3150,13 @@ }, { "default": "", - "enum": ["success", "info", "warning", "danger", ""], + "enum": [ + "success", + "info", + "warning", + "danger", + "" + ], "help": "Use a predefined styling for the box.", "name": "box_style", "type": "string" @@ -2663,17 +3177,31 @@ "name": "layout", "type": "reference", "widget": "Layout" + }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" } ], "model": { "module": "@jupyter-widgets/controls", "name": "GridBoxModel", - "version": "1.4.0" + "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "GridBoxView", - "version": "1.4.0" + "version": "2.0.0" } }, { @@ -2694,7 +3222,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" @@ -2712,7 +3240,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" @@ -2725,7 +3253,13 @@ }, { "default": "", - "enum": ["success", "info", "warning", "danger", ""], + "enum": [ + "success", + "info", + "warning", + "danger", + "" + ], "help": "Use a predefined styling for the box.", "name": "box_style", "type": "string" @@ -2746,17 +3280,31 @@ "name": "layout", "type": "reference", "widget": "Layout" + }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" } ], "model": { "module": "@jupyter-widgets/controls", "name": "HBoxModel", - "version": "1.4.0" + "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "HBoxView", - "version": "1.4.0" + "version": "2.0.0" } }, { @@ -2777,7 +3325,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" @@ -2795,7 +3343,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" @@ -2808,15 +3356,8 @@ }, { "default": "", - "help": "Description of the control.", - "name": "description", - "type": "string" - }, - { - "allow_none": true, - "default": null, - "help": "Tooltip for the description (defaults to description).", - "name": "description_tooltip", + "help": "Description of the control.", + "name": "description", "type": "string" }, { @@ -2839,6 +3380,20 @@ "type": "reference", "widget": "DescriptionStyle" }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" + }, { "default": "", "help": "String value", @@ -2849,12 +3404,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "HTMLMathModel", - "version": "1.4.0" + "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "HTMLMathView", - "version": "1.4.0" + "version": "2.0.0" } }, { @@ -2875,7 +3430,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" @@ -2893,7 +3448,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" @@ -2910,13 +3465,6 @@ "name": "description", "type": "string" }, - { - "allow_none": true, - "default": null, - "help": "Tooltip for the description (defaults to description).", - "name": "description_tooltip", - "type": "string" - }, { "default": "reference to new instance", "help": "", @@ -2937,6 +3485,20 @@ "type": "reference", "widget": "DescriptionStyle" }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" + }, { "default": "", "help": "String value", @@ -2947,12 +3509,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "HTMLModel", - "version": "1.4.0" + "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "HTMLView", - "version": "1.4.0" + "version": "2.0.0" } }, { @@ -2973,7 +3535,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" @@ -2991,7 +3553,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" @@ -3010,7 +3572,7 @@ }, { "default": "", - "help": "Height of the image in pixels.", + "help": "Height of the image in pixels. Use layout.height for styling the widget.", "name": "height", "type": "string" }, @@ -3021,15 +3583,29 @@ "type": "reference", "widget": "Layout" }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" + }, { "default": "b''", - "help": "The media data as a byte string.", + "help": "The media data as a memory view of bytes.", "name": "value", "type": "bytes" }, { "default": "", - "help": "Width of the image in pixels.", + "help": "Width of the image in pixels. Use layout.width for styling the widget.", "name": "width", "type": "string" } @@ -3037,12 +3613,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "ImageModel", - "version": "1.4.0" + "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "ImageView", - "version": "1.4.0" + "version": "2.0.0" } }, { @@ -3063,7 +3639,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" @@ -3081,7 +3657,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" @@ -3094,7 +3670,13 @@ }, { "default": "", - "enum": ["success", "info", "warning", "danger", ""], + "enum": [ + "success", + "info", + "warning", + "danger", + "" + ], "help": "Use a predefined styling for the progess bar.", "name": "bar_style", "type": "string" @@ -3105,13 +3687,6 @@ "name": "description", "type": "string" }, - { - "allow_none": true, - "default": null, - "help": "Tooltip for the description (defaults to description).", - "name": "description_tooltip", - "type": "string" - }, { "default": "reference to new instance", "help": "", @@ -3133,7 +3708,10 @@ }, { "default": "horizontal", - "enum": ["horizontal", "vertical"], + "enum": [ + "horizontal", + "vertical" + ], "help": "Vertical or horizontal.", "name": "orientation", "type": "string" @@ -3145,6 +3723,20 @@ "type": "reference", "widget": "ProgressStyle" }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" + }, { "default": 0, "help": "Int value", @@ -3155,12 +3747,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "IntProgressModel", - "version": "1.4.0" + "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "ProgressView", - "version": "1.4.0" + "version": "2.0.0" } }, { @@ -3181,7 +3773,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" @@ -3199,7 +3791,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" @@ -3222,13 +3814,6 @@ "name": "description", "type": "string" }, - { - "allow_none": true, - "default": null, - "help": "Tooltip for the description (defaults to description).", - "name": "description_tooltip", - "type": "string" - }, { "default": false, "help": "Enable or disable user changes", @@ -3256,7 +3841,10 @@ }, { "default": "horizontal", - "enum": ["horizontal", "vertical"], + "enum": [ + "horizontal", + "vertical" + ], "help": "Vertical or horizontal.", "name": "orientation", "type": "string" @@ -3287,7 +3875,24 @@ "widget": "SliderStyle" }, { - "default": [0, 1], + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" + }, + { + "default": [ + 0, + 1 + ], "help": "Tuple of (lower, upper) bounds", "name": "value", "type": "array" @@ -3296,12 +3901,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "IntRangeSliderModel", - "version": "1.4.0" + "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "IntRangeSliderView", - "version": "1.4.0" + "version": "2.0.0" } }, { @@ -3322,7 +3927,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" @@ -3340,7 +3945,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" @@ -3363,13 +3968,6 @@ "name": "description", "type": "string" }, - { - "allow_none": true, - "default": null, - "help": "Tooltip for the description (defaults to description).", - "name": "description_tooltip", - "type": "string" - }, { "default": false, "help": "Enable or disable user changes", @@ -3397,7 +3995,10 @@ }, { "default": "horizontal", - "enum": ["horizontal", "vertical"], + "enum": [ + "horizontal", + "vertical" + ], "help": "Vertical or horizontal.", "name": "orientation", "type": "string" @@ -3427,6 +4028,20 @@ "type": "reference", "widget": "SliderStyle" }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" + }, { "default": 0, "help": "Int value", @@ -3437,12 +4052,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "IntSliderModel", - "version": "1.4.0" + "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "IntSliderView", - "version": "1.4.0" + "version": "2.0.0" } }, { @@ -3463,7 +4078,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" @@ -3481,7 +4096,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" @@ -3504,13 +4119,6 @@ "name": "description", "type": "string" }, - { - "allow_none": true, - "default": null, - "help": "Tooltip for the description (defaults to description).", - "name": "description_tooltip", - "type": "string" - }, { "default": false, "help": "Enable or disable user changes", @@ -3537,6 +4145,20 @@ "type": "reference", "widget": "DescriptionStyle" }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" + }, { "default": 0, "help": "Int value", @@ -3547,12 +4169,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "IntTextModel", - "version": "1.4.0" + "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "IntTextView", - "version": "1.4.0" + "version": "2.0.0" } }, { @@ -3573,7 +4195,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" @@ -3591,7 +4213,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" @@ -3608,13 +4230,6 @@ "name": "description", "type": "string" }, - { - "allow_none": true, - "default": null, - "help": "Tooltip for the description (defaults to description).", - "name": "description_tooltip", - "type": "string" - }, { "default": "reference to new instance", "help": "", @@ -3635,6 +4250,20 @@ "type": "reference", "widget": "DescriptionStyle" }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" + }, { "default": "", "help": "String value", @@ -3645,12 +4274,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "LabelModel", - "version": "1.4.0" + "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "LabelView", - "version": "1.4.0" + "version": "2.0.0" } }, { @@ -3662,7 +4291,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" @@ -3680,7 +4309,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" @@ -3708,12 +4337,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "LinkModel", - "version": "1.4.0" + "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/controls", "name": null, - "version": "1.4.0" + "version": "2.0.0" } }, { @@ -3734,7 +4363,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" @@ -3752,7 +4381,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" @@ -3775,13 +4404,6 @@ "name": "description", "type": "string" }, - { - "allow_none": true, - "default": null, - "help": "Tooltip for the description (defaults to description).", - "name": "description_tooltip", - "type": "string" - }, { "default": false, "help": "Enable or disable user changes", @@ -3808,6 +4430,20 @@ "type": "reference", "widget": "DescriptionStyle" }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" + }, { "default": "", "help": "String value", @@ -3818,12 +4454,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "PasswordModel", - "version": "1.4.0" + "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "PasswordView", - "version": "1.4.0" + "version": "2.0.0" } }, { @@ -3844,7 +4480,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" @@ -3855,18 +4491,6 @@ "name": "_model_name", "type": "string" }, - { - "default": false, - "help": "Whether the control is currently playing.", - "name": "_playing", - "type": "bool" - }, - { - "default": false, - "help": "Whether the control will repeat in a continous loop.", - "name": "_repeat", - "type": "bool" - }, { "default": "@jupyter-widgets/controls", "help": "", @@ -3874,7 +4498,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" @@ -3891,13 +4515,6 @@ "name": "description", "type": "string" }, - { - "allow_none": true, - "default": null, - "help": "Tooltip for the description (defaults to description).", - "name": "description_tooltip", - "type": "string" - }, { "default": false, "help": "Enable or disable user changes", @@ -3906,7 +4523,7 @@ }, { "default": 100, - "help": "The maximum value for the play control.", + "help": "The time between two animation steps (ms).", "name": "interval", "type": "int" }, @@ -3929,6 +4546,18 @@ "name": "min", "type": "int" }, + { + "default": false, + "help": "Whether the control is currently playing.", + "name": "playing", + "type": "bool" + }, + { + "default": false, + "help": "Whether the control will repeat in a continous loop.", + "name": "repeat", + "type": "bool" + }, { "default": true, "help": "Show the repeat toggle button in the widget.", @@ -3948,6 +4577,20 @@ "type": "reference", "widget": "DescriptionStyle" }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" + }, { "default": 0, "help": "Int value", @@ -3958,12 +4601,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "PlayModel", - "version": "1.4.0" + "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "PlayView", - "version": "1.4.0" + "version": "2.0.0" } }, { @@ -3975,7 +4618,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" @@ -3993,7 +4636,7 @@ "type": "string" }, { - "default": "1.1.0", + "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" @@ -4021,12 +4664,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "ProgressStyleModel", - "version": "1.4.0" + "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/base", "name": "StyleView", - "version": "1.1.0" + "version": "2.0.0" } }, { @@ -4047,7 +4690,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" @@ -4074,7 +4717,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" @@ -4091,13 +4734,6 @@ "name": "description", "type": "string" }, - { - "allow_none": true, - "default": null, - "help": "Tooltip for the description (defaults to description).", - "name": "description_tooltip", - "type": "string" - }, { "default": false, "help": "Enable or disable user changes", @@ -4124,17 +4760,31 @@ "name": "style", "type": "reference", "widget": "DescriptionStyle" + }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" } ], "model": { "module": "@jupyter-widgets/controls", "name": "RadioButtonsModel", - "version": "1.4.0" + "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "RadioButtonsView", - "version": "1.4.0" + "version": "2.0.0" } }, { @@ -4155,7 +4805,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" @@ -4182,7 +4832,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" @@ -4199,13 +4849,6 @@ "name": "description", "type": "string" }, - { - "allow_none": true, - "default": null, - "help": "Tooltip for the description (defaults to description).", - "name": "description_tooltip", - "type": "string" - }, { "default": false, "help": "Enable or disable user changes", @@ -4238,17 +4881,31 @@ "name": "style", "type": "reference", "widget": "DescriptionStyle" + }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" } ], "model": { "module": "@jupyter-widgets/controls", "name": "SelectModel", - "version": "1.4.0" + "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "SelectView", - "version": "1.4.0" + "version": "2.0.0" } }, { @@ -4269,7 +4926,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" @@ -4296,7 +4953,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" @@ -4313,13 +4970,6 @@ "name": "description", "type": "string" }, - { - "allow_none": true, - "default": null, - "help": "Tooltip for the description (defaults to description).", - "name": "description_tooltip", - "type": "string" - }, { "default": false, "help": "Enable or disable user changes", @@ -4354,17 +5004,31 @@ "name": "style", "type": "reference", "widget": "DescriptionStyle" + }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" } ], "model": { "module": "@jupyter-widgets/controls", "name": "SelectMultipleModel", - "version": "1.4.0" + "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "SelectMultipleView", - "version": "1.4.0" + "version": "2.0.0" } }, { @@ -4385,7 +5049,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" @@ -4412,7 +5076,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" @@ -4435,13 +5099,6 @@ "name": "description", "type": "string" }, - { - "allow_none": true, - "default": null, - "help": "Tooltip for the description (defaults to description).", - "name": "description_tooltip", - "type": "string" - }, { "default": false, "help": "Enable or disable user changes", @@ -4449,7 +5106,10 @@ "type": "bool" }, { - "default": [0, 0], + "default": [ + 0, + 0 + ], "help": "Min and max selected indices", "name": "index", "type": "array" @@ -4463,7 +5123,10 @@ }, { "default": "horizontal", - "enum": ["horizontal", "vertical"], + "enum": [ + "horizontal", + "vertical" + ], "help": "Vertical or horizontal.", "name": "orientation", "type": "string" @@ -4480,17 +5143,31 @@ "name": "style", "type": "reference", "widget": "DescriptionStyle" + }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" } ], "model": { "module": "@jupyter-widgets/controls", "name": "SelectionRangeSliderModel", - "version": "1.4.0" + "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "SelectionRangeSliderView", - "version": "1.4.0" + "version": "2.0.0" } }, { @@ -4511,7 +5188,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" @@ -4538,7 +5215,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" @@ -4556,16 +5233,9 @@ "type": "bool" }, { - "default": "", - "help": "Description of the control.", - "name": "description", - "type": "string" - }, - { - "allow_none": true, - "default": null, - "help": "Tooltip for the description (defaults to description).", - "name": "description_tooltip", + "default": "", + "help": "Description of the control.", + "name": "description", "type": "string" }, { @@ -4589,7 +5259,10 @@ }, { "default": "horizontal", - "enum": ["horizontal", "vertical"], + "enum": [ + "horizontal", + "vertical" + ], "help": "Vertical or horizontal.", "name": "orientation", "type": "string" @@ -4606,17 +5279,31 @@ "name": "style", "type": "reference", "widget": "DescriptionStyle" + }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" } ], "model": { "module": "@jupyter-widgets/controls", "name": "SelectionSliderModel", - "version": "1.4.0" + "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "SelectionSliderView", - "version": "1.4.0" + "version": "2.0.0" } }, { @@ -4628,7 +5315,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" @@ -4646,7 +5333,7 @@ "type": "string" }, { - "default": "1.1.0", + "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" @@ -4674,12 +5361,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "SliderStyleModel", - "version": "1.4.0" + "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/base", "name": "StyleView", - "version": "1.1.0" + "version": "2.0.0" } }, { @@ -4700,22 +5387,135 @@ "type": "string" }, { - "default": "1.4.0", + "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" }, { - "default": "TabModel", + "default": "StackedModel", "help": "", "name": "_model_name", "type": "string" }, { - "default": {}, + "default": "@jupyter-widgets/controls", + "help": "", + "name": "_view_module", + "type": "string" + }, + { + "default": "2.0.0", + "help": "", + "name": "_view_module_version", + "type": "string" + }, + { + "default": "StackedView", + "help": "", + "name": "_view_name", + "type": "string" + }, + { + "default": "", + "enum": [ + "success", + "info", + "warning", + "danger", + "" + ], + "help": "Use a predefined styling for the box.", + "name": "box_style", + "type": "string" + }, + { + "default": [], + "help": "List of widget children", + "items": { + "type": "reference", + "widget": "Widget" + }, + "name": "children", + "type": "array" + }, + { + "default": "reference to new instance", + "help": "", + "name": "layout", + "type": "reference", + "widget": "Layout" + }, + { + "allow_none": true, + "default": null, + "help": "The index of the selected page. This is either an integer selecting a particular sub-widget, or None to have no widgets selected.", + "name": "selected_index", + "type": "int" + }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "default": [], "help": "Titles of the pages", - "name": "_titles", - "type": "object" + "items": { + "type": "string" + }, + "name": "titles", + "type": "array" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" + } + ], + "model": { + "module": "@jupyter-widgets/controls", + "name": "StackedModel", + "version": "2.0.0" + }, + "view": { + "module": "@jupyter-widgets/controls", + "name": "StackedView", + "version": "2.0.0" + } + }, + { + "attributes": [ + { + "default": [], + "help": "CSS classes applied to widget DOM element", + "items": { + "type": "string" + }, + "name": "_dom_classes", + "type": "array" + }, + { + "default": "@jupyter-widgets/controls", + "help": "", + "name": "_model_module", + "type": "string" + }, + { + "default": "2.0.0", + "help": "", + "name": "_model_module_version", + "type": "string" + }, + { + "default": "TabModel", + "help": "", + "name": "_model_name", + "type": "string" }, { "default": "@jupyter-widgets/controls", @@ -4724,7 +5524,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" @@ -4737,7 +5537,13 @@ }, { "default": "", - "enum": ["success", "info", "warning", "danger", ""], + "enum": [ + "success", + "info", + "warning", + "danger", + "" + ], "help": "Use a predefined styling for the box.", "name": "box_style", "type": "string" @@ -4761,21 +5567,44 @@ }, { "allow_none": true, - "default": 0, + "default": null, "help": "The index of the selected page. This is either an integer selecting a particular sub-widget, or None to have no widgets selected.", "name": "selected_index", "type": "int" + }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "default": [], + "help": "Titles of the pages", + "items": { + "type": "string" + }, + "name": "titles", + "type": "array" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" } ], "model": { "module": "@jupyter-widgets/controls", "name": "TabModel", - "version": "1.4.0" + "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "TabView", - "version": "1.4.0" + "version": "2.0.0" } }, { @@ -4796,7 +5625,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" @@ -4814,7 +5643,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" @@ -4837,13 +5666,6 @@ "name": "description", "type": "string" }, - { - "allow_none": true, - "default": null, - "help": "Tooltip for the description (defaults to description).", - "name": "description_tooltip", - "type": "string" - }, { "default": false, "help": "Enable or disable user changes", @@ -4870,6 +5692,20 @@ "type": "reference", "widget": "DescriptionStyle" }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" + }, { "default": "", "help": "String value", @@ -4880,12 +5716,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "TextModel", - "version": "1.4.0" + "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "TextView", - "version": "1.4.0" + "version": "2.0.0" } }, { @@ -4906,7 +5742,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" @@ -4924,7 +5760,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" @@ -4947,13 +5783,6 @@ "name": "description", "type": "string" }, - { - "allow_none": true, - "default": null, - "help": "Tooltip for the description (defaults to description).", - "name": "description_tooltip", - "type": "string" - }, { "default": false, "help": "Enable or disable user changes", @@ -4987,6 +5816,20 @@ "type": "reference", "widget": "DescriptionStyle" }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" + }, { "default": "", "help": "String value", @@ -4997,12 +5840,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "TextareaModel", - "version": "1.4.0" + "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "TextareaView", - "version": "1.4.0" + "version": "2.0.0" } }, { @@ -5023,7 +5866,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" @@ -5041,7 +5884,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" @@ -5054,7 +5897,14 @@ }, { "default": "", - "enum": ["primary", "success", "info", "warning", "danger", ""], + "enum": [ + "primary", + "success", + "info", + "warning", + "danger", + "" + ], "help": "Use a predefined styling for the button.", "name": "button_style", "type": "string" @@ -5065,13 +5915,6 @@ "name": "description", "type": "string" }, - { - "allow_none": true, - "default": null, - "help": "Tooltip for the description (defaults to description).", - "name": "description_tooltip", - "type": "string" - }, { "default": false, "help": "Enable or disable user changes.", @@ -5099,8 +5942,16 @@ "widget": "DescriptionStyle" }, { - "default": "", - "help": "Tooltip caption of the toggle button.", + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", "name": "tooltip", "type": "string" }, @@ -5114,12 +5965,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "ToggleButtonModel", - "version": "1.4.0" + "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "ToggleButtonView", - "version": "1.4.0" + "version": "2.0.0" } }, { @@ -5140,7 +5991,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" @@ -5167,7 +6018,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" @@ -5181,7 +6032,14 @@ { "allow_none": true, "default": "", - "enum": ["primary", "success", "info", "warning", "danger", ""], + "enum": [ + "primary", + "success", + "info", + "warning", + "danger", + "" + ], "help": "Use a predefined styling for the buttons.", "name": "button_style", "type": "string" @@ -5192,13 +6050,6 @@ "name": "description", "type": "string" }, - { - "allow_none": true, - "default": null, - "help": "Tooltip for the description (defaults to description).", - "name": "description_tooltip", - "type": "string" - }, { "default": false, "help": "Enable or disable user changes", @@ -5235,6 +6086,20 @@ "type": "reference", "widget": "ToggleButtonsStyle" }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" + }, { "default": [], "help": "Tooltips for each button.", @@ -5248,12 +6113,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "ToggleButtonsModel", - "version": "1.4.0" + "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "ToggleButtonsView", - "version": "1.4.0" + "version": "2.0.0" } }, { @@ -5265,7 +6130,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" @@ -5283,7 +6148,7 @@ "type": "string" }, { - "default": "1.1.0", + "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" @@ -5316,12 +6181,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "ToggleButtonsStyleModel", - "version": "1.4.0" + "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/base", "name": "StyleView", - "version": "1.1.0" + "version": "2.0.0" } }, { @@ -5342,7 +6207,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" @@ -5360,7 +6225,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" @@ -5373,7 +6238,13 @@ }, { "default": "", - "enum": ["success", "info", "warning", "danger", ""], + "enum": [ + "success", + "info", + "warning", + "danger", + "" + ], "help": "Use a predefined styling for the box.", "name": "box_style", "type": "string" @@ -5394,17 +6265,31 @@ "name": "layout", "type": "reference", "widget": "Layout" + }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" } ], "model": { "module": "@jupyter-widgets/controls", "name": "VBoxModel", - "version": "1.4.0" + "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "VBoxView", - "version": "1.4.0" + "version": "2.0.0" } }, { @@ -5425,7 +6310,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" @@ -5443,7 +6328,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" @@ -5460,13 +6345,6 @@ "name": "description", "type": "string" }, - { - "allow_none": true, - "default": null, - "help": "Tooltip for the description (defaults to description).", - "name": "description_tooltip", - "type": "string" - }, { "default": false, "help": "Enable or disable user changes.", @@ -5493,6 +6371,20 @@ "type": "reference", "widget": "DescriptionStyle" }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" + }, { "default": false, "help": "Bool value", @@ -5503,12 +6395,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "ValidModel", - "version": "1.4.0" + "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "ValidView", - "version": "1.4.0" + "version": "2.0.0" } }, { @@ -5529,7 +6421,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" @@ -5547,7 +6439,7 @@ "type": "string" }, { - "default": "1.4.0", + "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" @@ -5595,9 +6487,23 @@ "name": "loop", "type": "bool" }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" + }, { "default": "b''", - "help": "The media data as a byte string.", + "help": "The media data as a memory view of bytes.", "name": "value", "type": "bytes" }, @@ -5611,12 +6517,12 @@ "model": { "module": "@jupyter-widgets/controls", "name": "VideoModel", - "version": "1.4.0" + "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "VideoView", - "version": "1.4.0" + "version": "2.0.0" } }, { @@ -5687,6 +6593,20 @@ }, "name": "outputs", "type": "array" + }, + { + "allow_none": true, + "default": null, + "help": "Is widget tabbable?", + "name": "tabbable", + "type": "bool" + }, + { + "allow_none": true, + "default": null, + "help": "A tooltip caption.", + "name": "tooltip", + "type": "string" } ], "model": { diff --git a/packages/schema/jupyterwidgetmodels.latest.md b/packages/schema/jupyterwidgetmodels.latest.md index efbec1311c4..3386fde06e1 100644 --- a/packages/schema/jupyterwidgetmodels.latest.md +++ b/packages/schema/jupyterwidgetmodels.latest.md @@ -16,15 +16,15 @@ represents the model name, module, and version, view name, module, and version that the widget is registered with. -### LayoutModel (@jupyter-widgets/base, 1.2.0); LayoutView (@jupyter-widgets/base, 1.2.0) +### LayoutModel (@jupyter-widgets/base, 2.0.0); LayoutView (@jupyter-widgets/base, 2.0.0) Attribute | Type | Default | Help -----------------|------------------|------------------|---- `_model_module` | string | `'@jupyter-widgets/base'` | The namespace for the model. -`_model_module_version` | string | `'1.2.0'` | A semver requirement for namespace version containing the model. +`_model_module_version` | string | `'2.0.0'` | A semver requirement for namespace version containing the model. `_model_name` | string | `'LayoutModel'` | `_view_module` | string | `'@jupyter-widgets/base'` | -`_view_module_version` | string | `'1.2.0'` | +`_view_module_version` | string | `'2.0.0'` | `_view_name` | string | `'LayoutView'` | `align_content` | `null` or string (one of `'flex-start'`, `'flex-end'`, `'center'`, `'space-between'`, `'space-around'`, `'space-evenly'`, `'stretch'`, `'inherit'`, `'initial'`, `'unset'`) | `null` | The align-content CSS attribute. `align_items` | `null` or string (one of `'flex-start'`, `'flex-end'`, `'center'`, `'baseline'`, `'stretch'`, `'inherit'`, `'initial'`, `'unset'`) | `null` | The align-items CSS attribute. @@ -63,16 +63,16 @@ Attribute | Type | Default | Help `visibility` | `null` or string (one of `'visible'`, `'hidden'`, `'inherit'`, `'initial'`, `'unset'`) | `null` | The visibility CSS attribute. `width` | `null` or string | `null` | The width CSS attribute. -### AccordionModel (@jupyter-widgets/controls, 1.5.0); AccordionView (@jupyter-widgets/controls, 1.5.0) +### AccordionModel (@jupyter-widgets/controls, 2.0.0); AccordionView (@jupyter-widgets/controls, 2.0.0) Attribute | Type | Default | Help -----------------|------------------|------------------|---- `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element `_model_module` | string | `'@jupyter-widgets/controls'` | -`_model_module_version` | string | `'1.5.0'` | +`_model_module_version` | string | `'2.0.0'` | `_model_name` | string | `'AccordionModel'` | `_view_module` | string | `'@jupyter-widgets/controls'` | -`_view_module_version` | string | `'1.5.0'` | +`_view_module_version` | string | `'2.0.0'` | `_view_name` | string | `'AccordionView'` | `box_style` | string (one of `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the box. `children` | array of reference to Widget widget | `[]` | List of widget children @@ -82,16 +82,16 @@ Attribute | Type | Default | Help `titles` | array of string | `[]` | Titles of the pages `tooltip` | `null` or string | `null` | A tooltip caption. -### AudioModel (@jupyter-widgets/controls, 1.5.0); AudioView (@jupyter-widgets/controls, 1.5.0) +### AudioModel (@jupyter-widgets/controls, 2.0.0); AudioView (@jupyter-widgets/controls, 2.0.0) Attribute | Type | Default | Help -----------------|------------------|------------------|---- `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element `_model_module` | string | `'@jupyter-widgets/controls'` | -`_model_module_version` | string | `'1.5.0'` | +`_model_module_version` | string | `'2.0.0'` | `_model_name` | string | `'AudioModel'` | `_view_module` | string | `'@jupyter-widgets/controls'` | -`_view_module_version` | string | `'1.5.0'` | +`_view_module_version` | string | `'2.0.0'` | `_view_name` | string | `'AudioView'` | `autoplay` | boolean | `true` | When true, the audio starts when it's displayed `controls` | boolean | `true` | Specifies that audio controls should be displayed (such as a play/pause button etc) @@ -102,16 +102,16 @@ Attribute | Type | Default | Help `tooltip` | `null` or string | `null` | A tooltip caption. `value` | Bytes | `b''` | The media data as a memory view of bytes. -### BoundedFloatTextModel (@jupyter-widgets/controls, 1.5.0); FloatTextView (@jupyter-widgets/controls, 1.5.0) +### BoundedFloatTextModel (@jupyter-widgets/controls, 2.0.0); FloatTextView (@jupyter-widgets/controls, 2.0.0) Attribute | Type | Default | Help -----------------|------------------|------------------|---- `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element `_model_module` | string | `'@jupyter-widgets/controls'` | -`_model_module_version` | string | `'1.5.0'` | +`_model_module_version` | string | `'2.0.0'` | `_model_name` | string | `'BoundedFloatTextModel'` | `_view_module` | string | `'@jupyter-widgets/controls'` | -`_view_module_version` | string | `'1.5.0'` | +`_view_module_version` | string | `'2.0.0'` | `_view_name` | string | `'FloatTextView'` | `continuous_update` | boolean | `false` | Update the value as the user types. If False, update on submission, e.g., pressing Enter or navigating away. `description` | string | `''` | Description of the control. @@ -125,16 +125,16 @@ Attribute | Type | Default | Help `tooltip` | `null` or string | `null` | A tooltip caption. `value` | number (float) | `0.0` | Float value -### BoundedIntTextModel (@jupyter-widgets/controls, 1.5.0); IntTextView (@jupyter-widgets/controls, 1.5.0) +### BoundedIntTextModel (@jupyter-widgets/controls, 2.0.0); IntTextView (@jupyter-widgets/controls, 2.0.0) Attribute | Type | Default | Help -----------------|------------------|------------------|---- `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element `_model_module` | string | `'@jupyter-widgets/controls'` | -`_model_module_version` | string | `'1.5.0'` | +`_model_module_version` | string | `'2.0.0'` | `_model_name` | string | `'BoundedIntTextModel'` | `_view_module` | string | `'@jupyter-widgets/controls'` | -`_view_module_version` | string | `'1.5.0'` | +`_view_module_version` | string | `'2.0.0'` | `_view_name` | string | `'IntTextView'` | `continuous_update` | boolean | `false` | Update the value as the user types. If False, update on submission, e.g., pressing Enter or navigating away. `description` | string | `''` | Description of the control. @@ -148,16 +148,16 @@ Attribute | Type | Default | Help `tooltip` | `null` or string | `null` | A tooltip caption. `value` | number (integer) | `0` | Int value -### BoxModel (@jupyter-widgets/controls, 1.5.0); BoxView (@jupyter-widgets/controls, 1.5.0) +### BoxModel (@jupyter-widgets/controls, 2.0.0); BoxView (@jupyter-widgets/controls, 2.0.0) Attribute | Type | Default | Help -----------------|------------------|------------------|---- `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element `_model_module` | string | `'@jupyter-widgets/controls'` | -`_model_module_version` | string | `'1.5.0'` | +`_model_module_version` | string | `'2.0.0'` | `_model_name` | string | `'BoxModel'` | `_view_module` | string | `'@jupyter-widgets/controls'` | -`_view_module_version` | string | `'1.5.0'` | +`_view_module_version` | string | `'2.0.0'` | `_view_name` | string | `'BoxView'` | `box_style` | string (one of `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the box. `children` | array of reference to Widget widget | `[]` | List of widget children @@ -165,16 +165,16 @@ Attribute | Type | Default | Help `tabbable` | `null` or boolean | `null` | Is widget tabbable? `tooltip` | `null` or string | `null` | A tooltip caption. -### ButtonModel (@jupyter-widgets/controls, 1.5.0); ButtonView (@jupyter-widgets/controls, 1.5.0) +### ButtonModel (@jupyter-widgets/controls, 2.0.0); ButtonView (@jupyter-widgets/controls, 2.0.0) Attribute | Type | Default | Help -----------------|------------------|------------------|---- `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element `_model_module` | string | `'@jupyter-widgets/controls'` | -`_model_module_version` | string | `'1.5.0'` | +`_model_module_version` | string | `'2.0.0'` | `_model_name` | string | `'ButtonModel'` | `_view_module` | string | `'@jupyter-widgets/controls'` | -`_view_module_version` | string | `'1.5.0'` | +`_view_module_version` | string | `'2.0.0'` | `_view_name` | string | `'ButtonView'` | `button_style` | string (one of `'primary'`, `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the button. `description` | string | `''` | Button label. @@ -185,29 +185,29 @@ Attribute | Type | Default | Help `tabbable` | `null` or boolean | `null` | Is widget tabbable? `tooltip` | `null` or string | `null` | A tooltip caption. -### ButtonStyleModel (@jupyter-widgets/controls, 1.5.0); StyleView (@jupyter-widgets/base, 1.2.0) +### ButtonStyleModel (@jupyter-widgets/controls, 2.0.0); StyleView (@jupyter-widgets/base, 2.0.0) Attribute | Type | Default | Help -----------------|------------------|------------------|---- `_model_module` | string | `'@jupyter-widgets/controls'` | -`_model_module_version` | string | `'1.5.0'` | +`_model_module_version` | string | `'2.0.0'` | `_model_name` | string | `'ButtonStyleModel'` | `_view_module` | string | `'@jupyter-widgets/base'` | -`_view_module_version` | string | `'1.2.0'` | +`_view_module_version` | string | `'2.0.0'` | `_view_name` | string | `'StyleView'` | `button_color` | `null` or string | `null` | Color of the button `font_weight` | string | `''` | Button text font weight. -### CheckboxModel (@jupyter-widgets/controls, 1.5.0); CheckboxView (@jupyter-widgets/controls, 1.5.0) +### CheckboxModel (@jupyter-widgets/controls, 2.0.0); CheckboxView (@jupyter-widgets/controls, 2.0.0) Attribute | Type | Default | Help -----------------|------------------|------------------|---- `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element `_model_module` | string | `'@jupyter-widgets/controls'` | -`_model_module_version` | string | `'1.5.0'` | +`_model_module_version` | string | `'2.0.0'` | `_model_name` | string | `'CheckboxModel'` | `_view_module` | string | `'@jupyter-widgets/controls'` | -`_view_module_version` | string | `'1.5.0'` | +`_view_module_version` | string | `'2.0.0'` | `_view_name` | string | `'CheckboxView'` | `description` | string | `''` | Description of the control. `disabled` | boolean | `false` | Enable or disable user changes. @@ -218,16 +218,16 @@ Attribute | Type | Default | Help `tooltip` | `null` or string | `null` | A tooltip caption. `value` | boolean | `false` | Bool value -### ColorPickerModel (@jupyter-widgets/controls, 1.5.0); ColorPickerView (@jupyter-widgets/controls, 1.5.0) +### ColorPickerModel (@jupyter-widgets/controls, 2.0.0); ColorPickerView (@jupyter-widgets/controls, 2.0.0) Attribute | Type | Default | Help -----------------|------------------|------------------|---- `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element `_model_module` | string | `'@jupyter-widgets/controls'` | -`_model_module_version` | string | `'1.5.0'` | +`_model_module_version` | string | `'2.0.0'` | `_model_name` | string | `'ColorPickerModel'` | `_view_module` | string | `'@jupyter-widgets/controls'` | -`_view_module_version` | string | `'1.5.0'` | +`_view_module_version` | string | `'2.0.0'` | `_view_name` | string | `'ColorPickerView'` | `concise` | boolean | `false` | Display short version with just a color selector. `description` | string | `''` | Description of the control. @@ -238,16 +238,16 @@ Attribute | Type | Default | Help `tooltip` | `null` or string | `null` | A tooltip caption. `value` | string | `'black'` | The color value. -### ComboboxModel (@jupyter-widgets/controls, 1.5.0); ComboboxView (@jupyter-widgets/controls, 1.5.0) +### ComboboxModel (@jupyter-widgets/controls, 2.0.0); ComboboxView (@jupyter-widgets/controls, 2.0.0) Attribute | Type | Default | Help -----------------|------------------|------------------|---- `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element `_model_module` | string | `'@jupyter-widgets/controls'` | -`_model_module_version` | string | `'1.5.0'` | +`_model_module_version` | string | `'2.0.0'` | `_model_name` | string | `'ComboboxModel'` | `_view_module` | string | `'@jupyter-widgets/controls'` | -`_view_module_version` | string | `'1.5.0'` | +`_view_module_version` | string | `'2.0.0'` | `_view_name` | string | `'ComboboxView'` | `continuous_update` | boolean | `true` | Update the value as the user types. If False, update on submission, e.g., pressing Enter or navigating away. `description` | string | `''` | Description of the control. @@ -261,32 +261,32 @@ Attribute | Type | Default | Help `tooltip` | `null` or string | `null` | A tooltip caption. `value` | string | `''` | String value -### ControllerAxisModel (@jupyter-widgets/controls, 1.5.0); ControllerAxisView (@jupyter-widgets/controls, 1.5.0) +### ControllerAxisModel (@jupyter-widgets/controls, 2.0.0); ControllerAxisView (@jupyter-widgets/controls, 2.0.0) Attribute | Type | Default | Help -----------------|------------------|------------------|---- `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element `_model_module` | string | `'@jupyter-widgets/controls'` | -`_model_module_version` | string | `'1.5.0'` | +`_model_module_version` | string | `'2.0.0'` | `_model_name` | string | `'ControllerAxisModel'` | `_view_module` | string | `'@jupyter-widgets/controls'` | -`_view_module_version` | string | `'1.5.0'` | +`_view_module_version` | string | `'2.0.0'` | `_view_name` | string | `'ControllerAxisView'` | `layout` | reference to Layout widget | reference to new instance | `tabbable` | `null` or boolean | `null` | Is widget tabbable? `tooltip` | `null` or string | `null` | A tooltip caption. `value` | number (float) | `0.0` | The value of the axis. -### ControllerButtonModel (@jupyter-widgets/controls, 1.5.0); ControllerButtonView (@jupyter-widgets/controls, 1.5.0) +### ControllerButtonModel (@jupyter-widgets/controls, 2.0.0); ControllerButtonView (@jupyter-widgets/controls, 2.0.0) Attribute | Type | Default | Help -----------------|------------------|------------------|---- `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element `_model_module` | string | `'@jupyter-widgets/controls'` | -`_model_module_version` | string | `'1.5.0'` | +`_model_module_version` | string | `'2.0.0'` | `_model_name` | string | `'ControllerButtonModel'` | `_view_module` | string | `'@jupyter-widgets/controls'` | -`_view_module_version` | string | `'1.5.0'` | +`_view_module_version` | string | `'2.0.0'` | `_view_name` | string | `'ControllerButtonView'` | `layout` | reference to Layout widget | reference to new instance | `pressed` | boolean | `false` | Whether the button is pressed. @@ -294,16 +294,16 @@ Attribute | Type | Default | Help `tooltip` | `null` or string | `null` | A tooltip caption. `value` | number (float) | `0.0` | The value of the button. -### ControllerModel (@jupyter-widgets/controls, 1.5.0); ControllerView (@jupyter-widgets/controls, 1.5.0) +### ControllerModel (@jupyter-widgets/controls, 2.0.0); ControllerView (@jupyter-widgets/controls, 2.0.0) Attribute | Type | Default | Help -----------------|------------------|------------------|---- `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element `_model_module` | string | `'@jupyter-widgets/controls'` | -`_model_module_version` | string | `'1.5.0'` | +`_model_module_version` | string | `'2.0.0'` | `_model_name` | string | `'ControllerModel'` | `_view_module` | string | `'@jupyter-widgets/controls'` | -`_view_module_version` | string | `'1.5.0'` | +`_view_module_version` | string | `'2.0.0'` | `_view_name` | string | `'ControllerView'` | `axes` | array of reference to Axis widget | `[]` | The axes on the gamepad. `buttons` | array of reference to Button widget | `[]` | The buttons on the gamepad. @@ -316,32 +316,32 @@ Attribute | Type | Default | Help `timestamp` | number (float) | `0.0` | The last time the data from this gamepad was updated. `tooltip` | `null` or string | `null` | A tooltip caption. -### DOMWidgetModel (@jupyter-widgets/controls, 1.5.0); None (@jupyter-widgets/controls, 1.5.0) +### DOMWidgetModel (@jupyter-widgets/controls, 2.0.0); None (@jupyter-widgets/controls, 2.0.0) Attribute | Type | Default | Help -----------------|------------------|------------------|---- `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element `_model_module` | string | `'@jupyter-widgets/controls'` | -`_model_module_version` | string | `'1.5.0'` | +`_model_module_version` | string | `'2.0.0'` | `_model_name` | string | `'DOMWidgetModel'` | `_view_module` | string | `'@jupyter-widgets/controls'` | -`_view_module_version` | string | `'1.5.0'` | +`_view_module_version` | string | `'2.0.0'` | `_view_name` | `null` or string | `null` | Name of the view. `layout` | reference to Layout widget | reference to new instance | `tabbable` | `null` or boolean | `null` | Is widget tabbable? `tooltip` | `null` or string | `null` | A tooltip caption. `value` | Bytes | `b''` | The media data as a memory view of bytes. -### DatePickerModel (@jupyter-widgets/controls, 1.5.0); DatePickerView (@jupyter-widgets/controls, 1.5.0) +### DatePickerModel (@jupyter-widgets/controls, 2.0.0); DatePickerView (@jupyter-widgets/controls, 2.0.0) Attribute | Type | Default | Help -----------------|------------------|------------------|---- `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element `_model_module` | string | `'@jupyter-widgets/controls'` | -`_model_module_version` | string | `'1.5.0'` | +`_model_module_version` | string | `'2.0.0'` | `_model_name` | string | `'DatePickerModel'` | `_view_module` | string | `'@jupyter-widgets/controls'` | -`_view_module_version` | string | `'1.5.0'` | +`_view_module_version` | string | `'2.0.0'` | `_view_name` | string | `'DatePickerView'` | `description` | string | `''` | Description of the control. `disabled` | boolean | `false` | Enable or disable user changes. @@ -351,42 +351,42 @@ Attribute | Type | Default | Help `tooltip` | `null` or string | `null` | A tooltip caption. `value` | `null` or Date | `null` | -### DescriptionStyleModel (@jupyter-widgets/controls, 1.5.0); StyleView (@jupyter-widgets/base, 1.2.0) +### DescriptionStyleModel (@jupyter-widgets/controls, 2.0.0); StyleView (@jupyter-widgets/base, 2.0.0) Attribute | Type | Default | Help -----------------|------------------|------------------|---- `_model_module` | string | `'@jupyter-widgets/controls'` | -`_model_module_version` | string | `'1.5.0'` | +`_model_module_version` | string | `'2.0.0'` | `_model_name` | string | `'DescriptionStyleModel'` | `_view_module` | string | `'@jupyter-widgets/base'` | -`_view_module_version` | string | `'1.2.0'` | +`_view_module_version` | string | `'2.0.0'` | `_view_name` | string | `'StyleView'` | `description_width` | string | `''` | Width of the description to the side of the control. -### DirectionalLinkModel (@jupyter-widgets/controls, 1.5.0); None (@jupyter-widgets/controls, 1.5.0) +### DirectionalLinkModel (@jupyter-widgets/controls, 2.0.0); None (@jupyter-widgets/controls, 2.0.0) Attribute | Type | Default | Help -----------------|------------------|------------------|---- `_model_module` | string | `'@jupyter-widgets/controls'` | -`_model_module_version` | string | `'1.5.0'` | +`_model_module_version` | string | `'2.0.0'` | `_model_name` | string | `'DirectionalLinkModel'` | `_view_module` | string | `'@jupyter-widgets/controls'` | -`_view_module_version` | string | `'1.5.0'` | +`_view_module_version` | string | `'2.0.0'` | `_view_name` | `null` or string | `null` | Name of the view. `source` | array | `[]` | The source (widget, 'trait_name') pair `target` | array | `[]` | The target (widget, 'trait_name') pair -### DropdownModel (@jupyter-widgets/controls, 1.5.0); DropdownView (@jupyter-widgets/controls, 1.5.0) +### DropdownModel (@jupyter-widgets/controls, 2.0.0); DropdownView (@jupyter-widgets/controls, 2.0.0) Attribute | Type | Default | Help -----------------|------------------|------------------|---- `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element `_model_module` | string | `'@jupyter-widgets/controls'` | -`_model_module_version` | string | `'1.5.0'` | +`_model_module_version` | string | `'2.0.0'` | `_model_name` | string | `'DropdownModel'` | `_options_labels` | array of string | `[]` | The labels for the options. `_view_module` | string | `'@jupyter-widgets/controls'` | -`_view_module_version` | string | `'1.5.0'` | +`_view_module_version` | string | `'2.0.0'` | `_view_name` | string | `'DropdownView'` | `description` | string | `''` | Description of the control. `disabled` | boolean | `false` | Enable or disable user changes @@ -396,16 +396,16 @@ Attribute | Type | Default | Help `tabbable` | `null` or boolean | `null` | Is widget tabbable? `tooltip` | `null` or string | `null` | A tooltip caption. -### FileUploadModel (@jupyter-widgets/controls, 1.5.0); FileUploadView (@jupyter-widgets/controls, 1.5.0) +### FileUploadModel (@jupyter-widgets/controls, 2.0.0); FileUploadView (@jupyter-widgets/controls, 2.0.0) Attribute | Type | Default | Help -----------------|------------------|------------------|---- `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element `_model_module` | string | `'@jupyter-widgets/controls'` | -`_model_module_version` | string | `'1.5.0'` | +`_model_module_version` | string | `'2.0.0'` | `_model_name` | string | `'FileUploadModel'` | `_view_module` | string | `'@jupyter-widgets/controls'` | -`_view_module_version` | string | `'1.5.0'` | +`_view_module_version` | string | `'2.0.0'` | `_view_name` | string | `'FileUploadView'` | `accept` | string | `''` | File types to accept, empty string for all `button_style` | string (one of `'primary'`, `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the button. @@ -420,16 +420,16 @@ Attribute | Type | Default | Help `tooltip` | `null` or string | `null` | A tooltip caption. `value` | array of object | `[]` | The file upload value -### FloatLogSliderModel (@jupyter-widgets/controls, 1.5.0); FloatLogSliderView (@jupyter-widgets/controls, 1.5.0) +### FloatLogSliderModel (@jupyter-widgets/controls, 2.0.0); FloatLogSliderView (@jupyter-widgets/controls, 2.0.0) Attribute | Type | Default | Help -----------------|------------------|------------------|---- `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element `_model_module` | string | `'@jupyter-widgets/controls'` | -`_model_module_version` | string | `'1.5.0'` | +`_model_module_version` | string | `'2.0.0'` | `_model_name` | string | `'FloatLogSliderModel'` | `_view_module` | string | `'@jupyter-widgets/controls'` | -`_view_module_version` | string | `'1.5.0'` | +`_view_module_version` | string | `'2.0.0'` | `_view_name` | string | `'FloatLogSliderView'` | `base` | number (float) | `10.0` | Base for the logarithm `continuous_update` | boolean | `true` | Update the value of the widget as the user is holding the slider. @@ -447,16 +447,16 @@ Attribute | Type | Default | Help `tooltip` | `null` or string | `null` | A tooltip caption. `value` | number (float) | `1.0` | Float value -### FloatProgressModel (@jupyter-widgets/controls, 1.5.0); ProgressView (@jupyter-widgets/controls, 1.5.0) +### FloatProgressModel (@jupyter-widgets/controls, 2.0.0); ProgressView (@jupyter-widgets/controls, 2.0.0) Attribute | Type | Default | Help -----------------|------------------|------------------|---- `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element `_model_module` | string | `'@jupyter-widgets/controls'` | -`_model_module_version` | string | `'1.5.0'` | +`_model_module_version` | string | `'2.0.0'` | `_model_name` | string | `'FloatProgressModel'` | `_view_module` | string | `'@jupyter-widgets/controls'` | -`_view_module_version` | string | `'1.5.0'` | +`_view_module_version` | string | `'2.0.0'` | `_view_name` | string | `'ProgressView'` | `bar_style` | `null` or string (one of `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the progess bar. `description` | string | `''` | Description of the control. @@ -469,16 +469,16 @@ Attribute | Type | Default | Help `tooltip` | `null` or string | `null` | A tooltip caption. `value` | number (float) | `0.0` | Float value -### FloatRangeSliderModel (@jupyter-widgets/controls, 1.5.0); FloatRangeSliderView (@jupyter-widgets/controls, 1.5.0) +### FloatRangeSliderModel (@jupyter-widgets/controls, 2.0.0); FloatRangeSliderView (@jupyter-widgets/controls, 2.0.0) Attribute | Type | Default | Help -----------------|------------------|------------------|---- `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element `_model_module` | string | `'@jupyter-widgets/controls'` | -`_model_module_version` | string | `'1.5.0'` | +`_model_module_version` | string | `'2.0.0'` | `_model_name` | string | `'FloatRangeSliderModel'` | `_view_module` | string | `'@jupyter-widgets/controls'` | -`_view_module_version` | string | `'1.5.0'` | +`_view_module_version` | string | `'2.0.0'` | `_view_name` | string | `'FloatRangeSliderView'` | `continuous_update` | boolean | `true` | Update the value of the widget as the user is sliding the slider. `description` | string | `''` | Description of the control. @@ -495,16 +495,16 @@ Attribute | Type | Default | Help `tooltip` | `null` or string | `null` | A tooltip caption. `value` | array | `[0.0, 1.0]` | Tuple of (lower, upper) bounds -### FloatSliderModel (@jupyter-widgets/controls, 1.5.0); FloatSliderView (@jupyter-widgets/controls, 1.5.0) +### FloatSliderModel (@jupyter-widgets/controls, 2.0.0); FloatSliderView (@jupyter-widgets/controls, 2.0.0) Attribute | Type | Default | Help -----------------|------------------|------------------|---- `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element `_model_module` | string | `'@jupyter-widgets/controls'` | -`_model_module_version` | string | `'1.5.0'` | +`_model_module_version` | string | `'2.0.0'` | `_model_name` | string | `'FloatSliderModel'` | `_view_module` | string | `'@jupyter-widgets/controls'` | -`_view_module_version` | string | `'1.5.0'` | +`_view_module_version` | string | `'2.0.0'` | `_view_name` | string | `'FloatSliderView'` | `continuous_update` | boolean | `true` | Update the value of the widget as the user is holding the slider. `description` | string | `''` | Description of the control. @@ -521,16 +521,16 @@ Attribute | Type | Default | Help `tooltip` | `null` or string | `null` | A tooltip caption. `value` | number (float) | `0.0` | Float value -### FloatTextModel (@jupyter-widgets/controls, 1.5.0); FloatTextView (@jupyter-widgets/controls, 1.5.0) +### FloatTextModel (@jupyter-widgets/controls, 2.0.0); FloatTextView (@jupyter-widgets/controls, 2.0.0) Attribute | Type | Default | Help -----------------|------------------|------------------|---- `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element `_model_module` | string | `'@jupyter-widgets/controls'` | -`_model_module_version` | string | `'1.5.0'` | +`_model_module_version` | string | `'2.0.0'` | `_model_name` | string | `'FloatTextModel'` | `_view_module` | string | `'@jupyter-widgets/controls'` | -`_view_module_version` | string | `'1.5.0'` | +`_view_module_version` | string | `'2.0.0'` | `_view_name` | string | `'FloatTextView'` | `continuous_update` | boolean | `false` | Update the value as the user types. If False, update on submission, e.g., pressing Enter or navigating away. `description` | string | `''` | Description of the control. @@ -542,16 +542,16 @@ Attribute | Type | Default | Help `tooltip` | `null` or string | `null` | A tooltip caption. `value` | number (float) | `0.0` | Float value -### GridBoxModel (@jupyter-widgets/controls, 1.5.0); GridBoxView (@jupyter-widgets/controls, 1.5.0) +### GridBoxModel (@jupyter-widgets/controls, 2.0.0); GridBoxView (@jupyter-widgets/controls, 2.0.0) Attribute | Type | Default | Help -----------------|------------------|------------------|---- `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element `_model_module` | string | `'@jupyter-widgets/controls'` | -`_model_module_version` | string | `'1.5.0'` | +`_model_module_version` | string | `'2.0.0'` | `_model_name` | string | `'GridBoxModel'` | `_view_module` | string | `'@jupyter-widgets/controls'` | -`_view_module_version` | string | `'1.5.0'` | +`_view_module_version` | string | `'2.0.0'` | `_view_name` | string | `'GridBoxView'` | `box_style` | string (one of `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the box. `children` | array of reference to Widget widget | `[]` | List of widget children @@ -559,16 +559,16 @@ Attribute | Type | Default | Help `tabbable` | `null` or boolean | `null` | Is widget tabbable? `tooltip` | `null` or string | `null` | A tooltip caption. -### HBoxModel (@jupyter-widgets/controls, 1.5.0); HBoxView (@jupyter-widgets/controls, 1.5.0) +### HBoxModel (@jupyter-widgets/controls, 2.0.0); HBoxView (@jupyter-widgets/controls, 2.0.0) Attribute | Type | Default | Help -----------------|------------------|------------------|---- `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element `_model_module` | string | `'@jupyter-widgets/controls'` | -`_model_module_version` | string | `'1.5.0'` | +`_model_module_version` | string | `'2.0.0'` | `_model_name` | string | `'HBoxModel'` | `_view_module` | string | `'@jupyter-widgets/controls'` | -`_view_module_version` | string | `'1.5.0'` | +`_view_module_version` | string | `'2.0.0'` | `_view_name` | string | `'HBoxView'` | `box_style` | string (one of `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the box. `children` | array of reference to Widget widget | `[]` | List of widget children @@ -576,16 +576,16 @@ Attribute | Type | Default | Help `tabbable` | `null` or boolean | `null` | Is widget tabbable? `tooltip` | `null` or string | `null` | A tooltip caption. -### HTMLMathModel (@jupyter-widgets/controls, 1.5.0); HTMLMathView (@jupyter-widgets/controls, 1.5.0) +### HTMLMathModel (@jupyter-widgets/controls, 2.0.0); HTMLMathView (@jupyter-widgets/controls, 2.0.0) Attribute | Type | Default | Help -----------------|------------------|------------------|---- `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element `_model_module` | string | `'@jupyter-widgets/controls'` | -`_model_module_version` | string | `'1.5.0'` | +`_model_module_version` | string | `'2.0.0'` | `_model_name` | string | `'HTMLMathModel'` | `_view_module` | string | `'@jupyter-widgets/controls'` | -`_view_module_version` | string | `'1.5.0'` | +`_view_module_version` | string | `'2.0.0'` | `_view_name` | string | `'HTMLMathView'` | `description` | string | `''` | Description of the control. `layout` | reference to Layout widget | reference to new instance | @@ -595,16 +595,16 @@ Attribute | Type | Default | Help `tooltip` | `null` or string | `null` | A tooltip caption. `value` | string | `''` | String value -### HTMLModel (@jupyter-widgets/controls, 1.5.0); HTMLView (@jupyter-widgets/controls, 1.5.0) +### HTMLModel (@jupyter-widgets/controls, 2.0.0); HTMLView (@jupyter-widgets/controls, 2.0.0) Attribute | Type | Default | Help -----------------|------------------|------------------|---- `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element `_model_module` | string | `'@jupyter-widgets/controls'` | -`_model_module_version` | string | `'1.5.0'` | +`_model_module_version` | string | `'2.0.0'` | `_model_name` | string | `'HTMLModel'` | `_view_module` | string | `'@jupyter-widgets/controls'` | -`_view_module_version` | string | `'1.5.0'` | +`_view_module_version` | string | `'2.0.0'` | `_view_name` | string | `'HTMLView'` | `description` | string | `''` | Description of the control. `layout` | reference to Layout widget | reference to new instance | @@ -614,16 +614,16 @@ Attribute | Type | Default | Help `tooltip` | `null` or string | `null` | A tooltip caption. `value` | string | `''` | String value -### ImageModel (@jupyter-widgets/controls, 1.5.0); ImageView (@jupyter-widgets/controls, 1.5.0) +### ImageModel (@jupyter-widgets/controls, 2.0.0); ImageView (@jupyter-widgets/controls, 2.0.0) Attribute | Type | Default | Help -----------------|------------------|------------------|---- `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element `_model_module` | string | `'@jupyter-widgets/controls'` | -`_model_module_version` | string | `'1.5.0'` | +`_model_module_version` | string | `'2.0.0'` | `_model_name` | string | `'ImageModel'` | `_view_module` | string | `'@jupyter-widgets/controls'` | -`_view_module_version` | string | `'1.5.0'` | +`_view_module_version` | string | `'2.0.0'` | `_view_name` | string | `'ImageView'` | `format` | string | `'png'` | The format of the image. `height` | string | `''` | Height of the image in pixels. Use layout.height for styling the widget. @@ -633,16 +633,16 @@ Attribute | Type | Default | Help `value` | Bytes | `b''` | The media data as a memory view of bytes. `width` | string | `''` | Width of the image in pixels. Use layout.width for styling the widget. -### IntProgressModel (@jupyter-widgets/controls, 1.5.0); ProgressView (@jupyter-widgets/controls, 1.5.0) +### IntProgressModel (@jupyter-widgets/controls, 2.0.0); ProgressView (@jupyter-widgets/controls, 2.0.0) Attribute | Type | Default | Help -----------------|------------------|------------------|---- `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element `_model_module` | string | `'@jupyter-widgets/controls'` | -`_model_module_version` | string | `'1.5.0'` | +`_model_module_version` | string | `'2.0.0'` | `_model_name` | string | `'IntProgressModel'` | `_view_module` | string | `'@jupyter-widgets/controls'` | -`_view_module_version` | string | `'1.5.0'` | +`_view_module_version` | string | `'2.0.0'` | `_view_name` | string | `'ProgressView'` | `bar_style` | string (one of `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the progess bar. `description` | string | `''` | Description of the control. @@ -655,16 +655,16 @@ Attribute | Type | Default | Help `tooltip` | `null` or string | `null` | A tooltip caption. `value` | number (integer) | `0` | Int value -### IntRangeSliderModel (@jupyter-widgets/controls, 1.5.0); IntRangeSliderView (@jupyter-widgets/controls, 1.5.0) +### IntRangeSliderModel (@jupyter-widgets/controls, 2.0.0); IntRangeSliderView (@jupyter-widgets/controls, 2.0.0) Attribute | Type | Default | Help -----------------|------------------|------------------|---- `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element `_model_module` | string | `'@jupyter-widgets/controls'` | -`_model_module_version` | string | `'1.5.0'` | +`_model_module_version` | string | `'2.0.0'` | `_model_name` | string | `'IntRangeSliderModel'` | `_view_module` | string | `'@jupyter-widgets/controls'` | -`_view_module_version` | string | `'1.5.0'` | +`_view_module_version` | string | `'2.0.0'` | `_view_name` | string | `'IntRangeSliderView'` | `continuous_update` | boolean | `true` | Update the value of the widget as the user is sliding the slider. `description` | string | `''` | Description of the control. @@ -681,16 +681,16 @@ Attribute | Type | Default | Help `tooltip` | `null` or string | `null` | A tooltip caption. `value` | array | `[0, 1]` | Tuple of (lower, upper) bounds -### IntSliderModel (@jupyter-widgets/controls, 1.5.0); IntSliderView (@jupyter-widgets/controls, 1.5.0) +### IntSliderModel (@jupyter-widgets/controls, 2.0.0); IntSliderView (@jupyter-widgets/controls, 2.0.0) Attribute | Type | Default | Help -----------------|------------------|------------------|---- `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element `_model_module` | string | `'@jupyter-widgets/controls'` | -`_model_module_version` | string | `'1.5.0'` | +`_model_module_version` | string | `'2.0.0'` | `_model_name` | string | `'IntSliderModel'` | `_view_module` | string | `'@jupyter-widgets/controls'` | -`_view_module_version` | string | `'1.5.0'` | +`_view_module_version` | string | `'2.0.0'` | `_view_name` | string | `'IntSliderView'` | `continuous_update` | boolean | `true` | Update the value of the widget as the user is holding the slider. `description` | string | `''` | Description of the control. @@ -707,16 +707,16 @@ Attribute | Type | Default | Help `tooltip` | `null` or string | `null` | A tooltip caption. `value` | number (integer) | `0` | Int value -### IntTextModel (@jupyter-widgets/controls, 1.5.0); IntTextView (@jupyter-widgets/controls, 1.5.0) +### IntTextModel (@jupyter-widgets/controls, 2.0.0); IntTextView (@jupyter-widgets/controls, 2.0.0) Attribute | Type | Default | Help -----------------|------------------|------------------|---- `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element `_model_module` | string | `'@jupyter-widgets/controls'` | -`_model_module_version` | string | `'1.5.0'` | +`_model_module_version` | string | `'2.0.0'` | `_model_name` | string | `'IntTextModel'` | `_view_module` | string | `'@jupyter-widgets/controls'` | -`_view_module_version` | string | `'1.5.0'` | +`_view_module_version` | string | `'2.0.0'` | `_view_name` | string | `'IntTextView'` | `continuous_update` | boolean | `false` | Update the value as the user types. If False, update on submission, e.g., pressing Enter or navigating away. `description` | string | `''` | Description of the control. @@ -728,16 +728,16 @@ Attribute | Type | Default | Help `tooltip` | `null` or string | `null` | A tooltip caption. `value` | number (integer) | `0` | Int value -### LabelModel (@jupyter-widgets/controls, 1.5.0); LabelView (@jupyter-widgets/controls, 1.5.0) +### LabelModel (@jupyter-widgets/controls, 2.0.0); LabelView (@jupyter-widgets/controls, 2.0.0) Attribute | Type | Default | Help -----------------|------------------|------------------|---- `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element `_model_module` | string | `'@jupyter-widgets/controls'` | -`_model_module_version` | string | `'1.5.0'` | +`_model_module_version` | string | `'2.0.0'` | `_model_name` | string | `'LabelModel'` | `_view_module` | string | `'@jupyter-widgets/controls'` | -`_view_module_version` | string | `'1.5.0'` | +`_view_module_version` | string | `'2.0.0'` | `_view_name` | string | `'LabelView'` | `description` | string | `''` | Description of the control. `layout` | reference to Layout widget | reference to new instance | @@ -747,29 +747,29 @@ Attribute | Type | Default | Help `tooltip` | `null` or string | `null` | A tooltip caption. `value` | string | `''` | String value -### LinkModel (@jupyter-widgets/controls, 1.5.0); None (@jupyter-widgets/controls, 1.5.0) +### LinkModel (@jupyter-widgets/controls, 2.0.0); None (@jupyter-widgets/controls, 2.0.0) Attribute | Type | Default | Help -----------------|------------------|------------------|---- `_model_module` | string | `'@jupyter-widgets/controls'` | -`_model_module_version` | string | `'1.5.0'` | +`_model_module_version` | string | `'2.0.0'` | `_model_name` | string | `'LinkModel'` | `_view_module` | string | `'@jupyter-widgets/controls'` | -`_view_module_version` | string | `'1.5.0'` | +`_view_module_version` | string | `'2.0.0'` | `_view_name` | `null` or string | `null` | Name of the view. `source` | array | `[]` | The source (widget, 'trait_name') pair `target` | array | `[]` | The target (widget, 'trait_name') pair -### PasswordModel (@jupyter-widgets/controls, 1.5.0); PasswordView (@jupyter-widgets/controls, 1.5.0) +### PasswordModel (@jupyter-widgets/controls, 2.0.0); PasswordView (@jupyter-widgets/controls, 2.0.0) Attribute | Type | Default | Help -----------------|------------------|------------------|---- `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element `_model_module` | string | `'@jupyter-widgets/controls'` | -`_model_module_version` | string | `'1.5.0'` | +`_model_module_version` | string | `'2.0.0'` | `_model_name` | string | `'PasswordModel'` | `_view_module` | string | `'@jupyter-widgets/controls'` | -`_view_module_version` | string | `'1.5.0'` | +`_view_module_version` | string | `'2.0.0'` | `_view_name` | string | `'PasswordView'` | `continuous_update` | boolean | `true` | Update the value as the user types. If False, update on submission, e.g., pressing Enter or navigating away. `description` | string | `''` | Description of the control. @@ -781,16 +781,16 @@ Attribute | Type | Default | Help `tooltip` | `null` or string | `null` | A tooltip caption. `value` | string | `''` | String value -### PlayModel (@jupyter-widgets/controls, 1.5.0); PlayView (@jupyter-widgets/controls, 1.5.0) +### PlayModel (@jupyter-widgets/controls, 2.0.0); PlayView (@jupyter-widgets/controls, 2.0.0) Attribute | Type | Default | Help -----------------|------------------|------------------|---- `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element `_model_module` | string | `'@jupyter-widgets/controls'` | -`_model_module_version` | string | `'1.5.0'` | +`_model_module_version` | string | `'2.0.0'` | `_model_name` | string | `'PlayModel'` | `_view_module` | string | `'@jupyter-widgets/controls'` | -`_view_module_version` | string | `'1.5.0'` | +`_view_module_version` | string | `'2.0.0'` | `_view_name` | string | `'PlayView'` | `description` | string | `''` | Description of the control. `disabled` | boolean | `false` | Enable or disable user changes @@ -807,30 +807,30 @@ Attribute | Type | Default | Help `tooltip` | `null` or string | `null` | A tooltip caption. `value` | number (integer) | `0` | Int value -### ProgressStyleModel (@jupyter-widgets/controls, 1.5.0); StyleView (@jupyter-widgets/base, 1.2.0) +### ProgressStyleModel (@jupyter-widgets/controls, 2.0.0); StyleView (@jupyter-widgets/base, 2.0.0) Attribute | Type | Default | Help -----------------|------------------|------------------|---- `_model_module` | string | `'@jupyter-widgets/controls'` | -`_model_module_version` | string | `'1.5.0'` | +`_model_module_version` | string | `'2.0.0'` | `_model_name` | string | `'ProgressStyleModel'` | `_view_module` | string | `'@jupyter-widgets/base'` | -`_view_module_version` | string | `'1.2.0'` | +`_view_module_version` | string | `'2.0.0'` | `_view_name` | string | `'StyleView'` | `bar_color` | `null` or string | `null` | Color of the progress bar. `description_width` | string | `''` | Width of the description to the side of the control. -### RadioButtonsModel (@jupyter-widgets/controls, 1.5.0); RadioButtonsView (@jupyter-widgets/controls, 1.5.0) +### RadioButtonsModel (@jupyter-widgets/controls, 2.0.0); RadioButtonsView (@jupyter-widgets/controls, 2.0.0) Attribute | Type | Default | Help -----------------|------------------|------------------|---- `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element `_model_module` | string | `'@jupyter-widgets/controls'` | -`_model_module_version` | string | `'1.5.0'` | +`_model_module_version` | string | `'2.0.0'` | `_model_name` | string | `'RadioButtonsModel'` | `_options_labels` | array of string | `[]` | The labels for the options. `_view_module` | string | `'@jupyter-widgets/controls'` | -`_view_module_version` | string | `'1.5.0'` | +`_view_module_version` | string | `'2.0.0'` | `_view_name` | string | `'RadioButtonsView'` | `description` | string | `''` | Description of the control. `disabled` | boolean | `false` | Enable or disable user changes @@ -840,17 +840,17 @@ Attribute | Type | Default | Help `tabbable` | `null` or boolean | `null` | Is widget tabbable? `tooltip` | `null` or string | `null` | A tooltip caption. -### SelectModel (@jupyter-widgets/controls, 1.5.0); SelectView (@jupyter-widgets/controls, 1.5.0) +### SelectModel (@jupyter-widgets/controls, 2.0.0); SelectView (@jupyter-widgets/controls, 2.0.0) Attribute | Type | Default | Help -----------------|------------------|------------------|---- `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element `_model_module` | string | `'@jupyter-widgets/controls'` | -`_model_module_version` | string | `'1.5.0'` | +`_model_module_version` | string | `'2.0.0'` | `_model_name` | string | `'SelectModel'` | `_options_labels` | array of string | `[]` | The labels for the options. `_view_module` | string | `'@jupyter-widgets/controls'` | -`_view_module_version` | string | `'1.5.0'` | +`_view_module_version` | string | `'2.0.0'` | `_view_name` | string | `'SelectView'` | `description` | string | `''` | Description of the control. `disabled` | boolean | `false` | Enable or disable user changes @@ -861,17 +861,17 @@ Attribute | Type | Default | Help `tabbable` | `null` or boolean | `null` | Is widget tabbable? `tooltip` | `null` or string | `null` | A tooltip caption. -### SelectMultipleModel (@jupyter-widgets/controls, 1.5.0); SelectMultipleView (@jupyter-widgets/controls, 1.5.0) +### SelectMultipleModel (@jupyter-widgets/controls, 2.0.0); SelectMultipleView (@jupyter-widgets/controls, 2.0.0) Attribute | Type | Default | Help -----------------|------------------|------------------|---- `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element `_model_module` | string | `'@jupyter-widgets/controls'` | -`_model_module_version` | string | `'1.5.0'` | +`_model_module_version` | string | `'2.0.0'` | `_model_name` | string | `'SelectMultipleModel'` | `_options_labels` | array of string | `[]` | The labels for the options. `_view_module` | string | `'@jupyter-widgets/controls'` | -`_view_module_version` | string | `'1.5.0'` | +`_view_module_version` | string | `'2.0.0'` | `_view_name` | string | `'SelectMultipleView'` | `description` | string | `''` | Description of the control. `disabled` | boolean | `false` | Enable or disable user changes @@ -882,17 +882,17 @@ Attribute | Type | Default | Help `tabbable` | `null` or boolean | `null` | Is widget tabbable? `tooltip` | `null` or string | `null` | A tooltip caption. -### SelectionRangeSliderModel (@jupyter-widgets/controls, 1.5.0); SelectionRangeSliderView (@jupyter-widgets/controls, 1.5.0) +### SelectionRangeSliderModel (@jupyter-widgets/controls, 2.0.0); SelectionRangeSliderView (@jupyter-widgets/controls, 2.0.0) Attribute | Type | Default | Help -----------------|------------------|------------------|---- `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element `_model_module` | string | `'@jupyter-widgets/controls'` | -`_model_module_version` | string | `'1.5.0'` | +`_model_module_version` | string | `'2.0.0'` | `_model_name` | string | `'SelectionRangeSliderModel'` | `_options_labels` | array of string | `[]` | The labels for the options. `_view_module` | string | `'@jupyter-widgets/controls'` | -`_view_module_version` | string | `'1.5.0'` | +`_view_module_version` | string | `'2.0.0'` | `_view_name` | string | `'SelectionRangeSliderView'` | `continuous_update` | boolean | `true` | Update the value of the widget as the user is holding the slider. `description` | string | `''` | Description of the control. @@ -905,17 +905,17 @@ Attribute | Type | Default | Help `tabbable` | `null` or boolean | `null` | Is widget tabbable? `tooltip` | `null` or string | `null` | A tooltip caption. -### SelectionSliderModel (@jupyter-widgets/controls, 1.5.0); SelectionSliderView (@jupyter-widgets/controls, 1.5.0) +### SelectionSliderModel (@jupyter-widgets/controls, 2.0.0); SelectionSliderView (@jupyter-widgets/controls, 2.0.0) Attribute | Type | Default | Help -----------------|------------------|------------------|---- `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element `_model_module` | string | `'@jupyter-widgets/controls'` | -`_model_module_version` | string | `'1.5.0'` | +`_model_module_version` | string | `'2.0.0'` | `_model_name` | string | `'SelectionSliderModel'` | `_options_labels` | array of string | `[]` | The labels for the options. `_view_module` | string | `'@jupyter-widgets/controls'` | -`_view_module_version` | string | `'1.5.0'` | +`_view_module_version` | string | `'2.0.0'` | `_view_name` | string | `'SelectionSliderView'` | `continuous_update` | boolean | `true` | Update the value of the widget as the user is holding the slider. `description` | string | `''` | Description of the control. @@ -928,29 +928,29 @@ Attribute | Type | Default | Help `tabbable` | `null` or boolean | `null` | Is widget tabbable? `tooltip` | `null` or string | `null` | A tooltip caption. -### SliderStyleModel (@jupyter-widgets/controls, 1.5.0); StyleView (@jupyter-widgets/base, 1.2.0) +### SliderStyleModel (@jupyter-widgets/controls, 2.0.0); StyleView (@jupyter-widgets/base, 2.0.0) Attribute | Type | Default | Help -----------------|------------------|------------------|---- `_model_module` | string | `'@jupyter-widgets/controls'` | -`_model_module_version` | string | `'1.5.0'` | +`_model_module_version` | string | `'2.0.0'` | `_model_name` | string | `'SliderStyleModel'` | `_view_module` | string | `'@jupyter-widgets/base'` | -`_view_module_version` | string | `'1.2.0'` | +`_view_module_version` | string | `'2.0.0'` | `_view_name` | string | `'StyleView'` | `description_width` | string | `''` | Width of the description to the side of the control. `handle_color` | `null` or string | `null` | Color of the slider handle. -### StackedModel (@jupyter-widgets/controls, 1.5.0); StackedView (@jupyter-widgets/controls, 1.5.0) +### StackedModel (@jupyter-widgets/controls, 2.0.0); StackedView (@jupyter-widgets/controls, 2.0.0) Attribute | Type | Default | Help -----------------|------------------|------------------|---- `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element `_model_module` | string | `'@jupyter-widgets/controls'` | -`_model_module_version` | string | `'1.5.0'` | +`_model_module_version` | string | `'2.0.0'` | `_model_name` | string | `'StackedModel'` | `_view_module` | string | `'@jupyter-widgets/controls'` | -`_view_module_version` | string | `'1.5.0'` | +`_view_module_version` | string | `'2.0.0'` | `_view_name` | string | `'StackedView'` | `box_style` | string (one of `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the box. `children` | array of reference to Widget widget | `[]` | List of widget children @@ -960,16 +960,16 @@ Attribute | Type | Default | Help `titles` | array of string | `[]` | Titles of the pages `tooltip` | `null` or string | `null` | A tooltip caption. -### TabModel (@jupyter-widgets/controls, 1.5.0); TabView (@jupyter-widgets/controls, 1.5.0) +### TabModel (@jupyter-widgets/controls, 2.0.0); TabView (@jupyter-widgets/controls, 2.0.0) Attribute | Type | Default | Help -----------------|------------------|------------------|---- `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element `_model_module` | string | `'@jupyter-widgets/controls'` | -`_model_module_version` | string | `'1.5.0'` | +`_model_module_version` | string | `'2.0.0'` | `_model_name` | string | `'TabModel'` | `_view_module` | string | `'@jupyter-widgets/controls'` | -`_view_module_version` | string | `'1.5.0'` | +`_view_module_version` | string | `'2.0.0'` | `_view_name` | string | `'TabView'` | `box_style` | string (one of `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the box. `children` | array of reference to Widget widget | `[]` | List of widget children @@ -979,16 +979,16 @@ Attribute | Type | Default | Help `titles` | array of string | `[]` | Titles of the pages `tooltip` | `null` or string | `null` | A tooltip caption. -### TextModel (@jupyter-widgets/controls, 1.5.0); TextView (@jupyter-widgets/controls, 1.5.0) +### TextModel (@jupyter-widgets/controls, 2.0.0); TextView (@jupyter-widgets/controls, 2.0.0) Attribute | Type | Default | Help -----------------|------------------|------------------|---- `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element `_model_module` | string | `'@jupyter-widgets/controls'` | -`_model_module_version` | string | `'1.5.0'` | +`_model_module_version` | string | `'2.0.0'` | `_model_name` | string | `'TextModel'` | `_view_module` | string | `'@jupyter-widgets/controls'` | -`_view_module_version` | string | `'1.5.0'` | +`_view_module_version` | string | `'2.0.0'` | `_view_name` | string | `'TextView'` | `continuous_update` | boolean | `true` | Update the value as the user types. If False, update on submission, e.g., pressing Enter or navigating away. `description` | string | `''` | Description of the control. @@ -1000,16 +1000,16 @@ Attribute | Type | Default | Help `tooltip` | `null` or string | `null` | A tooltip caption. `value` | string | `''` | String value -### TextareaModel (@jupyter-widgets/controls, 1.5.0); TextareaView (@jupyter-widgets/controls, 1.5.0) +### TextareaModel (@jupyter-widgets/controls, 2.0.0); TextareaView (@jupyter-widgets/controls, 2.0.0) Attribute | Type | Default | Help -----------------|------------------|------------------|---- `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element `_model_module` | string | `'@jupyter-widgets/controls'` | -`_model_module_version` | string | `'1.5.0'` | +`_model_module_version` | string | `'2.0.0'` | `_model_name` | string | `'TextareaModel'` | `_view_module` | string | `'@jupyter-widgets/controls'` | -`_view_module_version` | string | `'1.5.0'` | +`_view_module_version` | string | `'2.0.0'` | `_view_name` | string | `'TextareaView'` | `continuous_update` | boolean | `true` | Update the value as the user types. If False, update on submission, e.g., pressing Enter or navigating away. `description` | string | `''` | Description of the control. @@ -1022,16 +1022,16 @@ Attribute | Type | Default | Help `tooltip` | `null` or string | `null` | A tooltip caption. `value` | string | `''` | String value -### ToggleButtonModel (@jupyter-widgets/controls, 1.5.0); ToggleButtonView (@jupyter-widgets/controls, 1.5.0) +### ToggleButtonModel (@jupyter-widgets/controls, 2.0.0); ToggleButtonView (@jupyter-widgets/controls, 2.0.0) Attribute | Type | Default | Help -----------------|------------------|------------------|---- `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element `_model_module` | string | `'@jupyter-widgets/controls'` | -`_model_module_version` | string | `'1.5.0'` | +`_model_module_version` | string | `'2.0.0'` | `_model_name` | string | `'ToggleButtonModel'` | `_view_module` | string | `'@jupyter-widgets/controls'` | -`_view_module_version` | string | `'1.5.0'` | +`_view_module_version` | string | `'2.0.0'` | `_view_name` | string | `'ToggleButtonView'` | `button_style` | string (one of `'primary'`, `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the button. `description` | string | `''` | Description of the control. @@ -1043,17 +1043,17 @@ Attribute | Type | Default | Help `tooltip` | `null` or string | `null` | A tooltip caption. `value` | boolean | `false` | Bool value -### ToggleButtonsModel (@jupyter-widgets/controls, 1.5.0); ToggleButtonsView (@jupyter-widgets/controls, 1.5.0) +### ToggleButtonsModel (@jupyter-widgets/controls, 2.0.0); ToggleButtonsView (@jupyter-widgets/controls, 2.0.0) Attribute | Type | Default | Help -----------------|------------------|------------------|---- `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element `_model_module` | string | `'@jupyter-widgets/controls'` | -`_model_module_version` | string | `'1.5.0'` | +`_model_module_version` | string | `'2.0.0'` | `_model_name` | string | `'ToggleButtonsModel'` | `_options_labels` | array of string | `[]` | The labels for the options. `_view_module` | string | `'@jupyter-widgets/controls'` | -`_view_module_version` | string | `'1.5.0'` | +`_view_module_version` | string | `'2.0.0'` | `_view_name` | string | `'ToggleButtonsView'` | `button_style` | `null` or string (one of `'primary'`, `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the buttons. `description` | string | `''` | Description of the control. @@ -1066,30 +1066,30 @@ Attribute | Type | Default | Help `tooltip` | `null` or string | `null` | A tooltip caption. `tooltips` | array of string | `[]` | Tooltips for each button. -### ToggleButtonsStyleModel (@jupyter-widgets/controls, 1.5.0); StyleView (@jupyter-widgets/base, 1.2.0) +### ToggleButtonsStyleModel (@jupyter-widgets/controls, 2.0.0); StyleView (@jupyter-widgets/base, 2.0.0) Attribute | Type | Default | Help -----------------|------------------|------------------|---- `_model_module` | string | `'@jupyter-widgets/controls'` | -`_model_module_version` | string | `'1.5.0'` | +`_model_module_version` | string | `'2.0.0'` | `_model_name` | string | `'ToggleButtonsStyleModel'` | `_view_module` | string | `'@jupyter-widgets/base'` | -`_view_module_version` | string | `'1.2.0'` | +`_view_module_version` | string | `'2.0.0'` | `_view_name` | string | `'StyleView'` | `button_width` | string | `''` | The width of each button. `description_width` | string | `''` | Width of the description to the side of the control. `font_weight` | string | `''` | Text font weight of each button. -### VBoxModel (@jupyter-widgets/controls, 1.5.0); VBoxView (@jupyter-widgets/controls, 1.5.0) +### VBoxModel (@jupyter-widgets/controls, 2.0.0); VBoxView (@jupyter-widgets/controls, 2.0.0) Attribute | Type | Default | Help -----------------|------------------|------------------|---- `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element `_model_module` | string | `'@jupyter-widgets/controls'` | -`_model_module_version` | string | `'1.5.0'` | +`_model_module_version` | string | `'2.0.0'` | `_model_name` | string | `'VBoxModel'` | `_view_module` | string | `'@jupyter-widgets/controls'` | -`_view_module_version` | string | `'1.5.0'` | +`_view_module_version` | string | `'2.0.0'` | `_view_name` | string | `'VBoxView'` | `box_style` | string (one of `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the box. `children` | array of reference to Widget widget | `[]` | List of widget children @@ -1097,16 +1097,16 @@ Attribute | Type | Default | Help `tabbable` | `null` or boolean | `null` | Is widget tabbable? `tooltip` | `null` or string | `null` | A tooltip caption. -### ValidModel (@jupyter-widgets/controls, 1.5.0); ValidView (@jupyter-widgets/controls, 1.5.0) +### ValidModel (@jupyter-widgets/controls, 2.0.0); ValidView (@jupyter-widgets/controls, 2.0.0) Attribute | Type | Default | Help -----------------|------------------|------------------|---- `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element `_model_module` | string | `'@jupyter-widgets/controls'` | -`_model_module_version` | string | `'1.5.0'` | +`_model_module_version` | string | `'2.0.0'` | `_model_name` | string | `'ValidModel'` | `_view_module` | string | `'@jupyter-widgets/controls'` | -`_view_module_version` | string | `'1.5.0'` | +`_view_module_version` | string | `'2.0.0'` | `_view_name` | string | `'ValidView'` | `description` | string | `''` | Description of the control. `disabled` | boolean | `false` | Enable or disable user changes. @@ -1117,16 +1117,16 @@ Attribute | Type | Default | Help `tooltip` | `null` or string | `null` | A tooltip caption. `value` | boolean | `false` | Bool value -### VideoModel (@jupyter-widgets/controls, 1.5.0); VideoView (@jupyter-widgets/controls, 1.5.0) +### VideoModel (@jupyter-widgets/controls, 2.0.0); VideoView (@jupyter-widgets/controls, 2.0.0) Attribute | Type | Default | Help -----------------|------------------|------------------|---- `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element `_model_module` | string | `'@jupyter-widgets/controls'` | -`_model_module_version` | string | `'1.5.0'` | +`_model_module_version` | string | `'2.0.0'` | `_model_name` | string | `'VideoModel'` | `_view_module` | string | `'@jupyter-widgets/controls'` | -`_view_module_version` | string | `'1.5.0'` | +`_view_module_version` | string | `'2.0.0'` | `_view_name` | string | `'VideoView'` | `autoplay` | boolean | `true` | When true, the video starts when it's displayed `controls` | boolean | `true` | Specifies that video controls should be displayed (such as a play/pause button etc) From 2c04680658cf27fee1445e9d30f11c3b717e74ac Mon Sep 17 00:00:00 2001 From: Jason Grout Date: Mon, 9 Mar 2020 15:50:45 -0700 Subject: [PATCH 031/101] Update to final JLab 2.0.1 release packages --- examples/web3/package.json | 2 +- package.json | 26 ++++++++++++------------ packages/base-manager/package.json | 2 +- packages/base/package.json | 2 +- packages/controls/package.json | 2 +- packages/html-manager/package.json | 6 +++--- packages/jupyterlab-manager/package.json | 24 +++++++++++----------- widgetsnbextension/package.json | 2 +- 8 files changed, 33 insertions(+), 33 deletions(-) diff --git a/examples/web3/package.json b/examples/web3/package.json index 3105fdf542b..187a86946f7 100644 --- a/examples/web3/package.json +++ b/examples/web3/package.json @@ -17,7 +17,7 @@ "@jupyter-widgets/base": "^2.0.2", "@jupyter-widgets/controls": "^1.5.3", "@jupyter-widgets/html-manager": "^0.18.4", - "@jupyterlab/services": "^5.0.0-beta.2", + "@jupyterlab/services": "^5.0.2", "@lumino/widgets": "^1.3.0", "codemirror": "^5.48.0", "font-awesome": "^4.7.0", diff --git a/package.json b/package.json index bcb883bbf11..9ae2017e6dc 100644 --- a/package.json +++ b/package.json @@ -5,31 +5,32 @@ "widgetsnbextension", "examples/*" ], - "engines": { - "npm": "please-use-yarn", - "node": ">=10.15.3", - "yarn": ">=1.15.0" - }, "scripts": { "build": "lerna run build --ignore \"@jupyter-widgets/example-*\"", "build:examples": "lerna run build --scope \"@jupyter-widgets/example-*\" --include-filtered-dependencies", "build:test": "lerna run build:test --ignore \"@jupyter-widgets/example-*\"", "clean": "lerna run clean", - "integrity": "node scripts/package-integrity.js", "eslint": "eslint . --fix --ignore-path .gitignore --ext .ts,.tsx", "eslint:check": "eslint . --ignore-path .gitignore --ext .ts,.tsx", + "integrity": "node scripts/package-integrity.js", "integrity2": "node buildutils/lib/integrity.js", "lint": "yarn && yarn run prettier && yarn run eslint", "lint:check": "yarn run prettier:check && yarn run eslint:check", "prettier": "prettier --ignore-path .gitignore --write \"**/*{.ts,.tsx,.js,.jsx,.css,.json}\"", "prettier:check": "prettier --ignore-path .gitignore --check \"**/*{.ts,.tsx,.js,.jsx,.css,.json}\"", - "sort-package-json": "lerna exec --parallel sort-package-json && sort-package-json", "publish": "yarn run clean && yarn run build && lerna publish -m \"Publish npm packages\"", + "sort-package-json": "lerna exec --parallel sort-package-json && sort-package-json", "update-dependency": "update-dependency --lerna", "updated": "lerna updated" }, + "husky": { + "hooks": { + "pre-commit": "lint-staged", + "pre-push": "yarn run integrity" + } + }, "devDependencies": { - "@jupyterlab/buildutils": "^2.0.0-beta.2", + "@jupyterlab/buildutils": "^2.0.2", "@typescript-eslint/eslint-plugin": "^2.14.0", "@typescript-eslint/parser": "^2.14.0", "eslint": "^6.5.0", @@ -40,10 +41,9 @@ "prettier": "^1.19.1", "sort-package-json": "~1.35" }, - "husky": { - "hooks": { - "pre-commit": "lint-staged", - "pre-push": "yarn run integrity" - } + "engines": { + "node": ">=10.15.3", + "npm": "please-use-yarn", + "yarn": ">=1.15.0" } } diff --git a/packages/base-manager/package.json b/packages/base-manager/package.json index 8e57207ec23..1ac0ca233ce 100644 --- a/packages/base-manager/package.json +++ b/packages/base-manager/package.json @@ -33,7 +33,7 @@ }, "dependencies": { "@jupyter-widgets/base": "^2.0.2", - "@jupyterlab/services": "^5.0.0-beta.2", + "@jupyterlab/services": "^5.0.2", "@lumino/coreutils": "^1.2.0", "base64-js": "^1.2.1" }, diff --git a/packages/base/package.json b/packages/base/package.json index 69d8ed89326..a05fd796cac 100644 --- a/packages/base/package.json +++ b/packages/base/package.json @@ -32,7 +32,7 @@ "test:unit:ie": "npm run test:unit:default -- --browsers=IE" }, "dependencies": { - "@jupyterlab/services": "^5.0.0-beta.2", + "@jupyterlab/services": "^5.0.2", "@lumino/coreutils": "^1.2.0", "@lumino/messaging": "^1.2.1", "@lumino/widgets": "^1.3.0", diff --git a/packages/controls/package.json b/packages/controls/package.json index 45c6972728f..0d50286b77e 100644 --- a/packages/controls/package.json +++ b/packages/controls/package.json @@ -45,7 +45,7 @@ "nouislider": "^14.1.1" }, "devDependencies": { - "@jupyterlab/services": "^5.0.0-beta.2", + "@jupyterlab/services": "^5.0.2", "@types/d3-format": "^1.3.1", "@types/expect.js": "^0.3.29", "@types/mathjax": "^0.0.35", diff --git a/packages/html-manager/package.json b/packages/html-manager/package.json index 6a3c87e5034..693331ad73a 100644 --- a/packages/html-manager/package.json +++ b/packages/html-manager/package.json @@ -41,9 +41,9 @@ "@jupyter-widgets/controls": "^1.5.3", "@jupyter-widgets/output": "^2.0.1", "@jupyter-widgets/schema": "^0.4.0", - "@jupyterlab/outputarea": "^2.0.0-beta.2", - "@jupyterlab/rendermime": "^2.0.0-beta.2", - "@jupyterlab/rendermime-interfaces": "^2.0.0-beta.2", + "@jupyterlab/outputarea": "^2.0.2", + "@jupyterlab/rendermime": "^2.0.2", + "@jupyterlab/rendermime-interfaces": "^2.0.1", "@lumino/widgets": "^1.6.0", "ajv": "^6.10.0", "jquery": "^3.1.1" diff --git a/packages/jupyterlab-manager/package.json b/packages/jupyterlab-manager/package.json index 709959b3bc7..48cf63ac7d8 100644 --- a/packages/jupyterlab-manager/package.json +++ b/packages/jupyterlab-manager/package.json @@ -38,17 +38,17 @@ "@jupyter-widgets/base-manager": "^0.1.0", "@jupyter-widgets/controls": "^1.5.3", "@jupyter-widgets/output": "^2.0.1", - "@jupyterlab/application": "^2.0.0-beta.2", - "@jupyterlab/docregistry": "^2.0.0-beta.2", - "@jupyterlab/logconsole": "^2.0.0-beta.2", - "@jupyterlab/mainmenu": "^2.0.0-beta.2", - "@jupyterlab/nbformat": "^2.0.0-beta.2", - "@jupyterlab/notebook": "^2.0.0-beta.2", - "@jupyterlab/outputarea": "^2.0.0-beta.2", - "@jupyterlab/rendermime": "^2.0.0-beta.2", - "@jupyterlab/rendermime-interfaces": "^2.0.0-beta.2", - "@jupyterlab/services": "^5.0.0-beta.2", - "@jupyterlab/settingregistry": "^2.0.0-beta.2", + "@jupyterlab/application": "^2.0.2", + "@jupyterlab/docregistry": "^2.0.2", + "@jupyterlab/logconsole": "^2.0.2", + "@jupyterlab/mainmenu": "^2.0.2", + "@jupyterlab/nbformat": "^2.0.1", + "@jupyterlab/notebook": "^2.0.2", + "@jupyterlab/outputarea": "^2.0.2", + "@jupyterlab/rendermime": "^2.0.2", + "@jupyterlab/rendermime-interfaces": "^2.0.1", + "@jupyterlab/services": "^5.0.2", + "@jupyterlab/settingregistry": "^2.0.1", "@lumino/algorithm": "^1.1.0", "@lumino/coreutils": "^1.3.0", "@lumino/disposable": "^1.1.1", @@ -61,7 +61,7 @@ "semver": "^6.1.1" }, "devDependencies": { - "@jupyterlab/cells": "^2.0.0-beta.2", + "@jupyterlab/cells": "^2.0.2", "@types/node": "^12.7.0", "@types/semver": "^6.0.1", "rimraf": "^2.6.1", diff --git a/widgetsnbextension/package.json b/widgetsnbextension/package.json index c8164d52810..2b5469f2448 100644 --- a/widgetsnbextension/package.json +++ b/widgetsnbextension/package.json @@ -26,7 +26,7 @@ "@jupyter-widgets/controls": "^1.5.3", "@jupyter-widgets/html-manager": "^0.18.4", "@jupyter-widgets/output": "^2.0.1", - "@jupyterlab/services": "^5.0.0-beta.2", + "@jupyterlab/services": "^5.0.2", "@lumino/messaging": "^1.2.1", "@lumino/widgets": "^1.3.0", "backbone": "1.2.3" From 45ef996b119f85c0f7121d8aa7ac1648d641ec36 Mon Sep 17 00:00:00 2001 From: Jason Grout Date: Mon, 9 Mar 2020 15:51:01 -0700 Subject: [PATCH 032/101] yarn.lock update --- yarn.lock | 695 ++++++++++++++++++++++++++++++------------------------ 1 file changed, 389 insertions(+), 306 deletions(-) diff --git a/yarn.lock b/yarn.lock index 7997297a2f2..6093b12dea0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -138,72 +138,72 @@ resolved "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-5.12.0.tgz#8ceb9f09edfb85ea18a6c7bf098f6f5dd5ffd62b" integrity sha512-vKDJUuE2GAdBERaQWmmtsciAMzjwNrROXA5KTGSZvayAsmuTGjam5z6QNqNPCwDfVljLWuov1nEC3mEQf/n6fQ== -"@jupyterlab/application@^2.0.0-beta.2": - version "2.0.0-beta.2" - resolved "https://registry.npmjs.org/@jupyterlab/application/-/application-2.0.0-beta.2.tgz#1c700c0ce14343c8400c08bd1903e4d0fe6c02be" - integrity sha512-f/zwgaYmn5TiB47oSIkLwUoPKYX8OVqjBUEQ/4EQRh/L/MNkQhlmPW3GIfuah6N7XnZIzjhbfBPl71fMS2SIXA== - dependencies: - "@jupyterlab/apputils" "^2.0.0-beta.2" - "@jupyterlab/coreutils" "^4.0.0-beta.2" - "@jupyterlab/docregistry" "^2.0.0-beta.2" - "@jupyterlab/rendermime" "^2.0.0-beta.2" - "@jupyterlab/rendermime-interfaces" "^2.0.0-beta.2" - "@jupyterlab/services" "^5.0.0-beta.2" - "@jupyterlab/statedb" "^2.0.0-beta.2" - "@jupyterlab/ui-components" "^2.0.0-beta.2" +"@jupyterlab/application@^2.0.2": + version "2.0.2" + resolved "https://registry.npmjs.org/@jupyterlab/application/-/application-2.0.2.tgz#393965798c4e04f522f9aa6a9b02b883a35a6634" + integrity sha512-/4KG2jBaUx5s+uuEKpTjJC3kOEQWKmpDNorOLP8PPsdWMl1VlrYJJmnpvIUOLLnJZAycnK7O4z7jBDp6wv4S2Q== + dependencies: + "@fortawesome/fontawesome-free" "^5.12.0" + "@jupyterlab/apputils" "^2.0.2" + "@jupyterlab/coreutils" "^4.0.2" + "@jupyterlab/docregistry" "^2.0.2" + "@jupyterlab/rendermime" "^2.0.2" + "@jupyterlab/rendermime-interfaces" "^2.0.1" + "@jupyterlab/services" "^5.0.2" + "@jupyterlab/statedb" "^2.0.1" + "@jupyterlab/ui-components" "^2.0.2" "@lumino/algorithm" "^1.2.3" - "@lumino/application" "^1.7.7" - "@lumino/commands" "^1.9.1" + "@lumino/application" "^1.8.4" + "@lumino/commands" "^1.10.1" "@lumino/coreutils" "^1.4.2" - "@lumino/disposable" "^1.3.4" + "@lumino/disposable" "^1.3.5" "@lumino/messaging" "^1.3.3" - "@lumino/polling" "^1.0.3" + "@lumino/polling" "^1.0.4" "@lumino/properties" "^1.1.6" - "@lumino/signaling" "^1.3.4" - "@lumino/widgets" "^1.9.7" - font-awesome "~4.7.0" - -"@jupyterlab/apputils@^2.0.0-beta.2": - version "2.0.0-beta.2" - resolved "https://registry.npmjs.org/@jupyterlab/apputils/-/apputils-2.0.0-beta.2.tgz#61b02e4ddb3864d7017131af907355fde66a70c2" - integrity sha512-SP2LTEm8sEQYDhndMv0XDhTxSCYmH/BD+pgo2IXyocsBF8kU/wagImtWPjsqmuveUuMPMZs7N8nVw+MZG7gKTg== - dependencies: - "@jupyterlab/coreutils" "^4.0.0-beta.2" - "@jupyterlab/services" "^5.0.0-beta.2" - "@jupyterlab/settingregistry" "^2.0.0-beta.2" - "@jupyterlab/statedb" "^2.0.0-beta.2" - "@jupyterlab/ui-components" "^2.0.0-beta.2" + "@lumino/signaling" "^1.3.5" + "@lumino/widgets" "^1.11.1" + +"@jupyterlab/apputils@^2.0.2": + version "2.0.2" + resolved "https://registry.npmjs.org/@jupyterlab/apputils/-/apputils-2.0.2.tgz#23e158e9d2092045570c798e7430895c0ad4709f" + integrity sha512-mJO/h3x+jtKXPJegdOB5LkvOWLjACKElWCWZXGtizHASYXKrCCAYQ3VDkmrdx2zibu+gDqlMFtbPJxMvYt65Vw== + dependencies: + "@jupyterlab/coreutils" "^4.0.2" + "@jupyterlab/services" "^5.0.2" + "@jupyterlab/settingregistry" "^2.0.1" + "@jupyterlab/statedb" "^2.0.1" + "@jupyterlab/ui-components" "^2.0.2" "@lumino/algorithm" "^1.2.3" - "@lumino/commands" "^1.9.1" + "@lumino/commands" "^1.10.1" "@lumino/coreutils" "^1.4.2" - "@lumino/disposable" "^1.3.4" + "@lumino/disposable" "^1.3.5" "@lumino/domutils" "^1.1.7" "@lumino/messaging" "^1.3.3" "@lumino/properties" "^1.1.6" - "@lumino/signaling" "^1.3.4" - "@lumino/virtualdom" "^1.4.0" - "@lumino/widgets" "^1.9.7" + "@lumino/signaling" "^1.3.5" + "@lumino/virtualdom" "^1.6.1" + "@lumino/widgets" "^1.11.1" "@types/react" "~16.9.16" react "~16.9.0" react-dom "~16.9.0" sanitize-html "~1.20.1" -"@jupyterlab/attachments@^2.0.0-beta.2": - version "2.0.0-beta.2" - resolved "https://registry.npmjs.org/@jupyterlab/attachments/-/attachments-2.0.0-beta.2.tgz#5837e581345d2f86e6b126737c9f8ea0bfaa3020" - integrity sha512-xi01URUELd7yt4jDIxbSpkETDid9a+Cx10KdxfaDWT34+yL6FtFXBnaUUDaIJPAiIB+J1yKhS4Fqk+bp9JTyRg== +"@jupyterlab/attachments@^2.0.2": + version "2.0.2" + resolved "https://registry.npmjs.org/@jupyterlab/attachments/-/attachments-2.0.2.tgz#6963771c11a19a67b164f11834faef2f856c8322" + integrity sha512-qSiiPydDRmTHq5xQpw1p70V3frH6uGdllSDokPKHarHDlbM0LNNNiJQ5AceyJdNfdASeX5UKmYkXm2fUeXxDtg== dependencies: - "@jupyterlab/nbformat" "^2.0.0-beta.2" - "@jupyterlab/observables" "^3.0.0-beta.2" - "@jupyterlab/rendermime" "^2.0.0-beta.2" - "@jupyterlab/rendermime-interfaces" "^2.0.0-beta.2" - "@lumino/disposable" "^1.3.4" - "@lumino/signaling" "^1.3.4" + "@jupyterlab/nbformat" "^2.0.1" + "@jupyterlab/observables" "^3.0.1" + "@jupyterlab/rendermime" "^2.0.2" + "@jupyterlab/rendermime-interfaces" "^2.0.1" + "@lumino/disposable" "^1.3.5" + "@lumino/signaling" "^1.3.5" -"@jupyterlab/buildutils@^2.0.0-beta.2": - version "2.0.0-beta.2" - resolved "https://registry.npmjs.org/@jupyterlab/buildutils/-/buildutils-2.0.0-beta.2.tgz#d42cb998a250770715d1d7ce2da9defd34ef85ec" - integrity sha512-KKXG8ECeYAGMf2NpRIPejA8WFl/S1DYPDgH33fFcb/fwX48UQlvjfej5byuFhA7ce54SQB81OHo9A3dwSKYxTQ== +"@jupyterlab/buildutils@^2.0.2": + version "2.0.2" + resolved "https://registry.npmjs.org/@jupyterlab/buildutils/-/buildutils-2.0.2.tgz#001fa2dd700648fd71bf8392641f7cdcfc2a63ee" + integrity sha512-Z0z7TIAdtRq7LLxvWmsntFxi8d4EM1ERzCQP6QxFcIfHMcayOfSsH4cGrc5MgWwRM0vkc7SNcjfMfUeg75VBFQ== dependencies: "@lumino/coreutils" "^1.4.2" "@yarnpkg/lockfile" "^1.1.0" @@ -211,6 +211,7 @@ commander "~4.0.1" crypto "~1.0.1" dependency-graph "^0.8.1" + duplicate-package-checker-webpack-plugin "^3.0.0" fs-extra "^8.1.0" glob "~7.1.6" inquirer "^7.0.0" @@ -223,341 +224,343 @@ typescript "~3.7.3" webpack "^4.41.2" -"@jupyterlab/cells@^2.0.0-beta.2": - version "2.0.0-beta.2" - resolved "https://registry.npmjs.org/@jupyterlab/cells/-/cells-2.0.0-beta.2.tgz#07f4d466902555eeec053a3957576ac11ff50f90" - integrity sha512-tvsm+dT3Qc5Upb/Lp9fpy4FXgO2UP32rzZ+RM2fkUp0hx0GOk+VmHwNjKYWhgbH190fVhDryITuu++/sz6L7vg== - dependencies: - "@jupyterlab/apputils" "^2.0.0-beta.2" - "@jupyterlab/attachments" "^2.0.0-beta.2" - "@jupyterlab/codeeditor" "^2.0.0-beta.2" - "@jupyterlab/codemirror" "^2.0.0-beta.2" - "@jupyterlab/coreutils" "^4.0.0-beta.2" - "@jupyterlab/filebrowser" "^2.0.0-beta.2" - "@jupyterlab/nbformat" "^2.0.0-beta.2" - "@jupyterlab/observables" "^3.0.0-beta.2" - "@jupyterlab/outputarea" "^2.0.0-beta.2" - "@jupyterlab/rendermime" "^2.0.0-beta.2" - "@jupyterlab/services" "^5.0.0-beta.2" - "@jupyterlab/ui-components" "^2.0.0-beta.2" +"@jupyterlab/cells@^2.0.2": + version "2.0.2" + resolved "https://registry.npmjs.org/@jupyterlab/cells/-/cells-2.0.2.tgz#1346d47e5943ee8df5052e945d55464f217ac737" + integrity sha512-RGZv0Ebzaj6O3+ItLXtex17p7P6IT0kpIjNtoBdE4YT3xoEsTtslQAcZGuEifh5chwm/648KXFT7Hwi9pRkelg== + dependencies: + "@jupyterlab/apputils" "^2.0.2" + "@jupyterlab/attachments" "^2.0.2" + "@jupyterlab/codeeditor" "^2.0.2" + "@jupyterlab/codemirror" "^2.0.2" + "@jupyterlab/coreutils" "^4.0.2" + "@jupyterlab/filebrowser" "^2.0.2" + "@jupyterlab/nbformat" "^2.0.1" + "@jupyterlab/observables" "^3.0.1" + "@jupyterlab/outputarea" "^2.0.2" + "@jupyterlab/rendermime" "^2.0.2" + "@jupyterlab/services" "^5.0.2" + "@jupyterlab/ui-components" "^2.0.2" "@lumino/algorithm" "^1.2.3" "@lumino/coreutils" "^1.4.2" - "@lumino/dragdrop" "^1.4.4" + "@lumino/dragdrop" "^1.5.1" "@lumino/messaging" "^1.3.3" - "@lumino/signaling" "^1.3.4" - "@lumino/virtualdom" "^1.4.0" - "@lumino/widgets" "^1.9.7" + "@lumino/signaling" "^1.3.5" + "@lumino/virtualdom" "^1.6.1" + "@lumino/widgets" "^1.11.1" react "~16.9.0" -"@jupyterlab/codeeditor@^2.0.0-beta.2": - version "2.0.0-beta.2" - resolved "https://registry.npmjs.org/@jupyterlab/codeeditor/-/codeeditor-2.0.0-beta.2.tgz#48cb412188c73fefd559e39943084868cf81c8be" - integrity sha512-YXlW5iJDeBPr2LMfGLfgm1RMX0FaJ03bRrvJgVmmozaKbg6VAkvTTNxtnBJpUCS6Dca71N73lDqEsbNbEbDRTg== +"@jupyterlab/codeeditor@^2.0.2": + version "2.0.2" + resolved "https://registry.npmjs.org/@jupyterlab/codeeditor/-/codeeditor-2.0.2.tgz#6ff469a068595b783bd639120db34b39d116df7f" + integrity sha512-l1SrLJN3QNXQB1WH0YrMjKsM3ZOPAYI05r7hBS0U1Kq5vpb73LQ+8w08s15y/yPcuCgibVhonIEQCyiu1wUA3w== dependencies: - "@jupyterlab/coreutils" "^4.0.0-beta.2" - "@jupyterlab/nbformat" "^2.0.0-beta.2" - "@jupyterlab/observables" "^3.0.0-beta.2" - "@jupyterlab/ui-components" "^2.0.0-beta.2" + "@jupyterlab/coreutils" "^4.0.2" + "@jupyterlab/nbformat" "^2.0.1" + "@jupyterlab/observables" "^3.0.1" + "@jupyterlab/ui-components" "^2.0.2" "@lumino/coreutils" "^1.4.2" - "@lumino/disposable" "^1.3.4" - "@lumino/dragdrop" "^1.4.4" + "@lumino/disposable" "^1.3.5" + "@lumino/dragdrop" "^1.5.1" "@lumino/messaging" "^1.3.3" - "@lumino/signaling" "^1.3.4" - "@lumino/widgets" "^1.9.7" - -"@jupyterlab/codemirror@^2.0.0-beta.2": - version "2.0.0-beta.2" - resolved "https://registry.npmjs.org/@jupyterlab/codemirror/-/codemirror-2.0.0-beta.2.tgz#3d0485940a31a005329a93f21b32ff593c7cec37" - integrity sha512-n0JZXHL3g/2KX0IkgtDLZYdRcuBkw7R/L9MrpdVp048OB1cUvX0WE8v9tIhJuhDQPY0HmiPFi9le0ij9+BWYzg== - dependencies: - "@jupyterlab/apputils" "^2.0.0-beta.2" - "@jupyterlab/codeeditor" "^2.0.0-beta.2" - "@jupyterlab/coreutils" "^4.0.0-beta.2" - "@jupyterlab/nbformat" "^2.0.0-beta.2" - "@jupyterlab/observables" "^3.0.0-beta.2" - "@jupyterlab/statusbar" "^2.0.0-beta.2" + "@lumino/signaling" "^1.3.5" + "@lumino/widgets" "^1.11.1" + +"@jupyterlab/codemirror@^2.0.2": + version "2.0.2" + resolved "https://registry.npmjs.org/@jupyterlab/codemirror/-/codemirror-2.0.2.tgz#519fa4d9fe572d430d4bf19adefd3b1a7f627d7a" + integrity sha512-IQm/yiPHJtQgJlQt/qqX0/pChGsQn/2JIe38q6R2Hi6V4DbI8WpyVOBhhKIoUqWwGNLsZgoCna2dnB+R7j0Emw== + dependencies: + "@jupyterlab/apputils" "^2.0.2" + "@jupyterlab/codeeditor" "^2.0.2" + "@jupyterlab/coreutils" "^4.0.2" + "@jupyterlab/nbformat" "^2.0.1" + "@jupyterlab/observables" "^3.0.1" + "@jupyterlab/statusbar" "^2.0.2" "@lumino/algorithm" "^1.2.3" - "@lumino/commands" "^1.9.1" + "@lumino/commands" "^1.10.1" "@lumino/coreutils" "^1.4.2" - "@lumino/disposable" "^1.3.4" - "@lumino/polling" "^1.0.3" - "@lumino/signaling" "^1.3.4" - "@lumino/widgets" "^1.9.7" + "@lumino/disposable" "^1.3.5" + "@lumino/polling" "^1.0.4" + "@lumino/signaling" "^1.3.5" + "@lumino/widgets" "^1.11.1" codemirror "~5.49.2" react "~16.9.0" -"@jupyterlab/coreutils@^4.0.0-beta.2": - version "4.0.0-beta.2" - resolved "https://registry.npmjs.org/@jupyterlab/coreutils/-/coreutils-4.0.0-beta.2.tgz#8e792538a3ea3434ce016ddee81017aba3084ee4" - integrity sha512-6sTVFlZ2d3nDyMLB9pg3WnJN0TI46KLMwzt0Im7kWxIz5IpWVeDKcuHS5U2mGdG7Qnixpw68QBg5j7nV4a81wQ== +"@jupyterlab/coreutils@^4.0.2": + version "4.0.2" + resolved "https://registry.npmjs.org/@jupyterlab/coreutils/-/coreutils-4.0.2.tgz#2ee81799249f5f4741157ac42ff50a2ee48a0475" + integrity sha512-v4RXIAeykoPjIymdCxUxPLl8lkn18jroGnDflZjvdMk21TZQQJSIrJ5bjrGByh9scco8yNg46z8m1LPguF3z8A== dependencies: "@lumino/coreutils" "^1.4.2" - "@lumino/disposable" "^1.3.4" - "@lumino/signaling" "^1.3.4" + "@lumino/disposable" "^1.3.5" + "@lumino/signaling" "^1.3.5" minimist "~1.2.0" moment "^2.24.0" path-posix "~1.0.0" url-parse "~1.4.7" -"@jupyterlab/docmanager@^2.0.0-beta.2": - version "2.0.0-beta.2" - resolved "https://registry.npmjs.org/@jupyterlab/docmanager/-/docmanager-2.0.0-beta.2.tgz#dd51c0c2a07ab4b4b0e5a7adbd63df79029af603" - integrity sha512-cd5XKEWHMQdGksxm/6MaOQXtHCqCZKj68IuGopKPx9xuqhyJxk2Vm/M9SEZDYNU+AdYe9sLU+jdLAc2miJPc3w== - dependencies: - "@jupyterlab/apputils" "^2.0.0-beta.2" - "@jupyterlab/coreutils" "^4.0.0-beta.2" - "@jupyterlab/docregistry" "^2.0.0-beta.2" - "@jupyterlab/services" "^5.0.0-beta.2" - "@jupyterlab/statusbar" "^2.0.0-beta.2" +"@jupyterlab/docmanager@^2.0.2": + version "2.0.2" + resolved "https://registry.npmjs.org/@jupyterlab/docmanager/-/docmanager-2.0.2.tgz#6eb6a0f1134a8b8717c4264e8f5166b3f3937140" + integrity sha512-59/Oa/akU2pzKF96OFOV+vz8s9xpEVowe6NIhJooOxU6AZdDsN3o2sMCVkoCsnlnwPQ8N6siGKbBP9QlPk0taQ== + dependencies: + "@jupyterlab/apputils" "^2.0.2" + "@jupyterlab/coreutils" "^4.0.2" + "@jupyterlab/docregistry" "^2.0.2" + "@jupyterlab/services" "^5.0.2" + "@jupyterlab/statusbar" "^2.0.2" "@lumino/algorithm" "^1.2.3" "@lumino/coreutils" "^1.4.2" - "@lumino/disposable" "^1.3.4" + "@lumino/disposable" "^1.3.5" "@lumino/messaging" "^1.3.3" "@lumino/properties" "^1.1.6" - "@lumino/signaling" "^1.3.4" - "@lumino/widgets" "^1.9.7" + "@lumino/signaling" "^1.3.5" + "@lumino/widgets" "^1.11.1" react "~16.9.0" -"@jupyterlab/docregistry@^2.0.0-beta.2": - version "2.0.0-beta.2" - resolved "https://registry.npmjs.org/@jupyterlab/docregistry/-/docregistry-2.0.0-beta.2.tgz#5eb3c8de954ea33dc144327e5ed1de12bf82a37e" - integrity sha512-jNNHVPnbzXEulzYIMaLrWq9lOQlg0oaM6WGyw/n7W7zSLk+72Qa4esNQlOL5WqR/3qLAs9WQ07qJlvVDXGxEWw== - dependencies: - "@jupyterlab/apputils" "^2.0.0-beta.2" - "@jupyterlab/codeeditor" "^2.0.0-beta.2" - "@jupyterlab/codemirror" "^2.0.0-beta.2" - "@jupyterlab/coreutils" "^4.0.0-beta.2" - "@jupyterlab/observables" "^3.0.0-beta.2" - "@jupyterlab/rendermime" "^2.0.0-beta.2" - "@jupyterlab/rendermime-interfaces" "^2.0.0-beta.2" - "@jupyterlab/services" "^5.0.0-beta.2" - "@jupyterlab/ui-components" "^2.0.0-beta.2" +"@jupyterlab/docregistry@^2.0.2": + version "2.0.2" + resolved "https://registry.npmjs.org/@jupyterlab/docregistry/-/docregistry-2.0.2.tgz#45ee6be76aae72e9df0a1a1bc69effaae401235b" + integrity sha512-kGk1AIzcXkpaNI1pwFbyLYiQuSdJUQ/j2A+G8WYhcY64Zwp1tayr0VvaRuEzwcDHueiBYesaarCxY7VNP+Cf3g== + dependencies: + "@jupyterlab/apputils" "^2.0.2" + "@jupyterlab/codeeditor" "^2.0.2" + "@jupyterlab/codemirror" "^2.0.2" + "@jupyterlab/coreutils" "^4.0.2" + "@jupyterlab/observables" "^3.0.1" + "@jupyterlab/rendermime" "^2.0.2" + "@jupyterlab/rendermime-interfaces" "^2.0.1" + "@jupyterlab/services" "^5.0.2" + "@jupyterlab/ui-components" "^2.0.2" "@lumino/algorithm" "^1.2.3" "@lumino/coreutils" "^1.4.2" - "@lumino/disposable" "^1.3.4" + "@lumino/disposable" "^1.3.5" "@lumino/messaging" "^1.3.3" - "@lumino/signaling" "^1.3.4" - "@lumino/widgets" "^1.9.7" - -"@jupyterlab/filebrowser@^2.0.0-beta.2": - version "2.0.0-beta.2" - resolved "https://registry.npmjs.org/@jupyterlab/filebrowser/-/filebrowser-2.0.0-beta.2.tgz#5103ce83b254f152b89cd05a2b82ad0c880c12f0" - integrity sha512-wojIzEa0Z2xLZRYi8gL+XbiGH0Si7pCbcwsyky4R6BxtFEQ9QYexQTWVuUn7uKNWAlGOPoBV1ezZ3zAbIPY3Jg== - dependencies: - "@jupyterlab/apputils" "^2.0.0-beta.2" - "@jupyterlab/coreutils" "^4.0.0-beta.2" - "@jupyterlab/docmanager" "^2.0.0-beta.2" - "@jupyterlab/docregistry" "^2.0.0-beta.2" - "@jupyterlab/services" "^5.0.0-beta.2" - "@jupyterlab/statedb" "^2.0.0-beta.2" - "@jupyterlab/statusbar" "^2.0.0-beta.2" - "@jupyterlab/ui-components" "^2.0.0-beta.2" + "@lumino/signaling" "^1.3.5" + "@lumino/widgets" "^1.11.1" + +"@jupyterlab/filebrowser@^2.0.2": + version "2.0.2" + resolved "https://registry.npmjs.org/@jupyterlab/filebrowser/-/filebrowser-2.0.2.tgz#7e19e9bfb409ec6b2242f441351ae3f6315dd13e" + integrity sha512-jztQ3NVfkjd4LqtQYxsfVmGf5D5pCk4F9/ktH2PESA3V02uQMkuRZ24u0cikdzz05cEp05Oe94/9gba9SPCE0A== + dependencies: + "@jupyterlab/apputils" "^2.0.2" + "@jupyterlab/coreutils" "^4.0.2" + "@jupyterlab/docmanager" "^2.0.2" + "@jupyterlab/docregistry" "^2.0.2" + "@jupyterlab/services" "^5.0.2" + "@jupyterlab/statedb" "^2.0.1" + "@jupyterlab/statusbar" "^2.0.2" + "@jupyterlab/ui-components" "^2.0.2" "@lumino/algorithm" "^1.2.3" "@lumino/coreutils" "^1.4.2" - "@lumino/disposable" "^1.3.4" + "@lumino/disposable" "^1.3.5" "@lumino/domutils" "^1.1.7" - "@lumino/dragdrop" "^1.4.4" + "@lumino/dragdrop" "^1.5.1" "@lumino/messaging" "^1.3.3" - "@lumino/polling" "^1.0.3" - "@lumino/signaling" "^1.3.4" - "@lumino/widgets" "^1.9.7" + "@lumino/polling" "^1.0.4" + "@lumino/signaling" "^1.3.5" + "@lumino/widgets" "^1.11.1" react "~16.9.0" -"@jupyterlab/logconsole@^2.0.0-beta.2": - version "2.0.0-beta.2" - resolved "https://registry.npmjs.org/@jupyterlab/logconsole/-/logconsole-2.0.0-beta.2.tgz#376072a837bfd0c4c51bfcd1d7759dedf3421304" - integrity sha512-t5cRiD5umIo917VikOMhyZarQOxj2MK/wMt/OlkwCPnzjA6ea2iMfi9QKMS3wdTN4mALR71/DTy64QQa7v3v5g== - dependencies: - "@jupyterlab/coreutils" "^4.0.0-beta.2" - "@jupyterlab/nbformat" "^2.0.0-beta.2" - "@jupyterlab/outputarea" "^2.0.0-beta.2" - "@jupyterlab/rendermime" "^2.0.0-beta.2" - "@jupyterlab/services" "^5.0.0-beta.2" +"@jupyterlab/logconsole@^2.0.2": + version "2.0.2" + resolved "https://registry.npmjs.org/@jupyterlab/logconsole/-/logconsole-2.0.2.tgz#206ccce17595dbe8f05ad215b4d4f1dd83725e4e" + integrity sha512-uRlzermVZIYBerYv6C/Vlh5L2MhK3DX1Rm3UzZR4h0Iz0PdDVjFffZPYd7Y1IbLCSKsERFTE38xjgls0iiZgog== + dependencies: + "@jupyterlab/coreutils" "^4.0.2" + "@jupyterlab/nbformat" "^2.0.1" + "@jupyterlab/outputarea" "^2.0.2" + "@jupyterlab/rendermime" "^2.0.2" + "@jupyterlab/services" "^5.0.2" "@lumino/coreutils" "^1.4.2" - "@lumino/disposable" "^1.3.4" + "@lumino/disposable" "^1.3.5" "@lumino/messaging" "^1.3.3" - "@lumino/signaling" "^1.3.4" - "@lumino/widgets" "^1.9.7" + "@lumino/signaling" "^1.3.5" + "@lumino/widgets" "^1.11.1" -"@jupyterlab/mainmenu@^2.0.0-beta.2": - version "2.0.0-beta.2" - resolved "https://registry.npmjs.org/@jupyterlab/mainmenu/-/mainmenu-2.0.0-beta.2.tgz#c325a1db2be125d10e84ff935e794ddb84da02e9" - integrity sha512-/5ac753pqLXU9X7Z3tcy1yUiKElJBSB0Zv9WzcL46LsKYc7hLbpSY46GP+OzYyuFeHZ+C/3JHAjgfb649l4eQw== +"@jupyterlab/mainmenu@^2.0.2": + version "2.0.2" + resolved "https://registry.npmjs.org/@jupyterlab/mainmenu/-/mainmenu-2.0.2.tgz#243a4db7dd5e2525bbd3ba52a796d92d34520553" + integrity sha512-jeDx1uYE4QpAVWy3XdJIQ73+J1Mb5YXRrQkTG4S0SsT248Kkl7uz0i2j+EE7RNJlGvJlD1t+SjSuOtegZvRpnA== dependencies: - "@jupyterlab/apputils" "^2.0.0-beta.2" - "@jupyterlab/services" "^5.0.0-beta.2" + "@jupyterlab/apputils" "^2.0.2" + "@jupyterlab/services" "^5.0.2" + "@jupyterlab/ui-components" "^2.0.2" "@lumino/algorithm" "^1.2.3" - "@lumino/commands" "^1.9.1" + "@lumino/commands" "^1.10.1" "@lumino/coreutils" "^1.4.2" - "@lumino/disposable" "^1.3.4" - "@lumino/widgets" "^1.9.7" + "@lumino/disposable" "^1.3.5" + "@lumino/widgets" "^1.11.1" -"@jupyterlab/nbformat@^2.0.0-beta.2": - version "2.0.0-beta.2" - resolved "https://registry.npmjs.org/@jupyterlab/nbformat/-/nbformat-2.0.0-beta.2.tgz#a3caa591b8cffea6d2c99bf245c12bbc55a9dd1d" - integrity sha512-Ep6PJ6c6vcJIzUq+mfbmsr6C5DuN95KR3GGBh3aaaqYdJ3DLdGUKXxyNjfoOy944OueIJghGF0iIRSi/lSWJ9Q== +"@jupyterlab/nbformat@^2.0.1": + version "2.0.1" + resolved "https://registry.npmjs.org/@jupyterlab/nbformat/-/nbformat-2.0.1.tgz#2af01e20755632f5fb8530942c470e0f31f34df4" + integrity sha512-rlf4A3PKxqDV98IeXf/VtdhqcbnKvBRGL+VNxhMOZe3e+DmjIBilRE+VpHmXovwEanOAkNl0fD5Xk3HAkqxxGQ== dependencies: "@lumino/coreutils" "^1.4.2" -"@jupyterlab/notebook@^2.0.0-beta.2": - version "2.0.0-beta.2" - resolved "https://registry.npmjs.org/@jupyterlab/notebook/-/notebook-2.0.0-beta.2.tgz#aec2459a788d0596f7e4bbeabf126cb45b96d847" - integrity sha512-tgcB2vbkusj3NBPNdnEyvDh2/H/WWCkGJrZLhzqZzxSo/X0gkzEpTxPKL+9ohh78dCBU9QymQZJ7735YSYwYcw== - dependencies: - "@jupyterlab/apputils" "^2.0.0-beta.2" - "@jupyterlab/cells" "^2.0.0-beta.2" - "@jupyterlab/codeeditor" "^2.0.0-beta.2" - "@jupyterlab/coreutils" "^4.0.0-beta.2" - "@jupyterlab/docregistry" "^2.0.0-beta.2" - "@jupyterlab/nbformat" "^2.0.0-beta.2" - "@jupyterlab/observables" "^3.0.0-beta.2" - "@jupyterlab/rendermime" "^2.0.0-beta.2" - "@jupyterlab/services" "^5.0.0-beta.2" - "@jupyterlab/statusbar" "^2.0.0-beta.2" - "@jupyterlab/ui-components" "^2.0.0-beta.2" +"@jupyterlab/notebook@^2.0.2": + version "2.0.2" + resolved "https://registry.npmjs.org/@jupyterlab/notebook/-/notebook-2.0.2.tgz#e51360c799eaf9bb22e5522136fda21563785cde" + integrity sha512-+OLNJXQpvLjscoinjSvy4m1OOryV2zs90jWkTFXwvNRaplBH3wt9e1UsrGSTFMqWHwRWoLlpphap7CkW5muwRg== + dependencies: + "@jupyterlab/apputils" "^2.0.2" + "@jupyterlab/cells" "^2.0.2" + "@jupyterlab/codeeditor" "^2.0.2" + "@jupyterlab/coreutils" "^4.0.2" + "@jupyterlab/docregistry" "^2.0.2" + "@jupyterlab/nbformat" "^2.0.1" + "@jupyterlab/observables" "^3.0.1" + "@jupyterlab/rendermime" "^2.0.2" + "@jupyterlab/services" "^5.0.2" + "@jupyterlab/statusbar" "^2.0.2" + "@jupyterlab/ui-components" "^2.0.2" "@lumino/algorithm" "^1.2.3" "@lumino/coreutils" "^1.4.2" "@lumino/domutils" "^1.1.7" - "@lumino/dragdrop" "^1.4.4" + "@lumino/dragdrop" "^1.5.1" "@lumino/messaging" "^1.3.3" "@lumino/properties" "^1.1.6" - "@lumino/signaling" "^1.3.4" - "@lumino/virtualdom" "^1.4.0" - "@lumino/widgets" "^1.9.7" + "@lumino/signaling" "^1.3.5" + "@lumino/virtualdom" "^1.6.1" + "@lumino/widgets" "^1.11.1" react "~16.9.0" -"@jupyterlab/observables@^3.0.0-beta.2": - version "3.0.0-beta.2" - resolved "https://registry.npmjs.org/@jupyterlab/observables/-/observables-3.0.0-beta.2.tgz#49cdf26a6a79a03001522e9d6b9e0de22964d28d" - integrity sha512-W3F4j0PHtvYaLok7ulUO4xkiaLhoZq7P3RGP4TVmK1Lr43nWjE7kQvMsf44ylt1xaCm+Pheth9dXuGlplWK/Aw== +"@jupyterlab/observables@^3.0.1": + version "3.0.1" + resolved "https://registry.npmjs.org/@jupyterlab/observables/-/observables-3.0.1.tgz#001ab3d64d47e97eae52d17a0190845f1586db9c" + integrity sha512-iD7w8JYBRT9UXVS3IvljvoDf0ZiHQEu1Pm+784UTa27Az0i6idyV1iWZ+xIHtV+s7ampVjMGiBbqXD6m4HRNpg== dependencies: "@lumino/algorithm" "^1.2.3" "@lumino/coreutils" "^1.4.2" - "@lumino/disposable" "^1.3.4" + "@lumino/disposable" "^1.3.5" "@lumino/messaging" "^1.3.3" - "@lumino/signaling" "^1.3.4" + "@lumino/signaling" "^1.3.5" -"@jupyterlab/outputarea@^2.0.0-beta.2": - version "2.0.0-beta.2" - resolved "https://registry.npmjs.org/@jupyterlab/outputarea/-/outputarea-2.0.0-beta.2.tgz#fbf97796aba8bb66e17b29ae5389b77231b36082" - integrity sha512-gXOo7PaOIQ7Lpn/VDuEa9ZwD+eCeOGTrP4XCWBm7h6H17iOY49R1cfSb4z8kWHAJJeU62hdGK08dLi7eciCM7w== - dependencies: - "@jupyterlab/apputils" "^2.0.0-beta.2" - "@jupyterlab/nbformat" "^2.0.0-beta.2" - "@jupyterlab/observables" "^3.0.0-beta.2" - "@jupyterlab/rendermime" "^2.0.0-beta.2" - "@jupyterlab/rendermime-interfaces" "^2.0.0-beta.2" - "@jupyterlab/services" "^5.0.0-beta.2" +"@jupyterlab/outputarea@^2.0.2": + version "2.0.2" + resolved "https://registry.npmjs.org/@jupyterlab/outputarea/-/outputarea-2.0.2.tgz#2cfd9c1ae6d159400816f0756cfcc328564115d9" + integrity sha512-bO4brGkYxJYk0OvIjBEUOmy6PjxM1Arcit1Hgx6b+p7fZYUxOlHUqhNkbIvIOs97qXTVwmKaRqTNXuN6/VvMPQ== + dependencies: + "@jupyterlab/apputils" "^2.0.2" + "@jupyterlab/nbformat" "^2.0.1" + "@jupyterlab/observables" "^3.0.1" + "@jupyterlab/rendermime" "^2.0.2" + "@jupyterlab/rendermime-interfaces" "^2.0.1" + "@jupyterlab/services" "^5.0.2" "@lumino/algorithm" "^1.2.3" "@lumino/coreutils" "^1.4.2" - "@lumino/disposable" "^1.3.4" + "@lumino/disposable" "^1.3.5" "@lumino/messaging" "^1.3.3" "@lumino/properties" "^1.1.6" - "@lumino/signaling" "^1.3.4" - "@lumino/widgets" "^1.9.7" + "@lumino/signaling" "^1.3.5" + "@lumino/widgets" "^1.11.1" -"@jupyterlab/rendermime-interfaces@^2.0.0-beta.2": - version "2.0.0-beta.2" - resolved "https://registry.npmjs.org/@jupyterlab/rendermime-interfaces/-/rendermime-interfaces-2.0.0-beta.2.tgz#3f4ae1c21af9eadbbbdd2e5506e5035d9b74c480" - integrity sha512-juYNwdo8RKGBIM6VBzQVTLPUSGHlSWFQJ7D76zfSWtwgtsQEhJ3YhPRNVgAwsizcE5noCXIttndV0LcgwD4Eng== +"@jupyterlab/rendermime-interfaces@^2.0.1": + version "2.0.1" + resolved "https://registry.npmjs.org/@jupyterlab/rendermime-interfaces/-/rendermime-interfaces-2.0.1.tgz#f4dae5690b13ad743dda2aebbfc5e1efd079be58" + integrity sha512-QYJcQNKNmrBXHXC31AvBRYk+QqKB0rZrvVXbhggFXBQiYQX1K/lnFvKjphmhhnpUhLKtgUrex+04cJ9Kek00HA== dependencies: - "@jupyterlab/ui-components" "^2.0.0-beta.2" "@lumino/coreutils" "^1.4.2" - "@lumino/widgets" "^1.9.7" - -"@jupyterlab/rendermime@^2.0.0-beta.2": - version "2.0.0-beta.2" - resolved "https://registry.npmjs.org/@jupyterlab/rendermime/-/rendermime-2.0.0-beta.2.tgz#b4107e4de1bf5b4867c24859ab6759b47053cb0b" - integrity sha512-21K7s/o2mpNXewDGEUGa6OaMeXRzn1XH8onsWBHwhOEqoNWiVKMboAXitfLLN9LwWTmrgVZAxGF7UVGH36O/vQ== - dependencies: - "@jupyterlab/apputils" "^2.0.0-beta.2" - "@jupyterlab/codemirror" "^2.0.0-beta.2" - "@jupyterlab/coreutils" "^4.0.0-beta.2" - "@jupyterlab/nbformat" "^2.0.0-beta.2" - "@jupyterlab/observables" "^3.0.0-beta.2" - "@jupyterlab/rendermime-interfaces" "^2.0.0-beta.2" - "@jupyterlab/services" "^5.0.0-beta.2" + "@lumino/widgets" "^1.11.1" + +"@jupyterlab/rendermime@^2.0.2": + version "2.0.2" + resolved "https://registry.npmjs.org/@jupyterlab/rendermime/-/rendermime-2.0.2.tgz#1e317ed136f4f798efaeae43948306c1dce4171c" + integrity sha512-JUGUteRLrwEHX5kPU1rLAIzChEwEQyxDbSCes63fgO5Hn+JXNKKQexWXeHZOm5l1JBGNiokQCz8Jy6fQHmEMYQ== + dependencies: + "@jupyterlab/apputils" "^2.0.2" + "@jupyterlab/codemirror" "^2.0.2" + "@jupyterlab/coreutils" "^4.0.2" + "@jupyterlab/nbformat" "^2.0.1" + "@jupyterlab/observables" "^3.0.1" + "@jupyterlab/rendermime-interfaces" "^2.0.1" + "@jupyterlab/services" "^5.0.2" "@lumino/algorithm" "^1.2.3" "@lumino/coreutils" "^1.4.2" "@lumino/messaging" "^1.3.3" - "@lumino/signaling" "^1.3.4" - "@lumino/widgets" "^1.9.7" + "@lumino/signaling" "^1.3.5" + "@lumino/widgets" "^1.11.1" lodash.escape "^4.0.1" marked "^0.8.0" -"@jupyterlab/services@^5.0.0-beta.2": - version "5.0.0-beta.2" - resolved "https://registry.npmjs.org/@jupyterlab/services/-/services-5.0.0-beta.2.tgz#31284f45432ed297cf202ebcce21b0aaf40ab812" - integrity sha512-ZI3Y5C1B79hanKvpJV6s/HO1Vhl6L6HcCFCCVkbRarNmsOyf2KEFXkEgSLv/OGW/bsYhQypq5jUtVjmfcMtx9Q== - dependencies: - "@jupyterlab/coreutils" "^4.0.0-beta.2" - "@jupyterlab/nbformat" "^2.0.0-beta.2" - "@jupyterlab/observables" "^3.0.0-beta.2" - "@jupyterlab/settingregistry" "^2.0.0-beta.2" - "@jupyterlab/statedb" "^2.0.0-beta.2" +"@jupyterlab/services@^5.0.2": + version "5.0.2" + resolved "https://registry.npmjs.org/@jupyterlab/services/-/services-5.0.2.tgz#9e3e398c1cf022f35c406a743b46bc60a6723192" + integrity sha512-gBwXikSRWIrj0XiuYMSXd0TXLZJrE18rTtRwrvne0T/gJPg0+4JbORPkaKfFdbX84oQv8XLOT74xUHSPDhst0A== + dependencies: + "@jupyterlab/coreutils" "^4.0.2" + "@jupyterlab/nbformat" "^2.0.1" + "@jupyterlab/observables" "^3.0.1" + "@jupyterlab/settingregistry" "^2.0.1" + "@jupyterlab/statedb" "^2.0.1" "@lumino/algorithm" "^1.2.3" "@lumino/coreutils" "^1.4.2" - "@lumino/disposable" "^1.3.4" - "@lumino/polling" "^1.0.3" - "@lumino/signaling" "^1.3.4" + "@lumino/disposable" "^1.3.5" + "@lumino/polling" "^1.0.4" + "@lumino/signaling" "^1.3.5" node-fetch "^2.6.0" ws "^7.2.0" -"@jupyterlab/settingregistry@^2.0.0-beta.2": - version "2.0.0-beta.2" - resolved "https://registry.npmjs.org/@jupyterlab/settingregistry/-/settingregistry-2.0.0-beta.2.tgz#5bf96d5fd1d6d21b91f1f309d0c1bb1ca8f23cb0" - integrity sha512-F16e45+mC7hLbmKm3mo9voEZMSoqi+fonztQOc+PBUEi70aSMqikdCRiA6Y1jBuGMEjUTBzB5Om9sNL050ddwQ== +"@jupyterlab/settingregistry@^2.0.1": + version "2.0.1" + resolved "https://registry.npmjs.org/@jupyterlab/settingregistry/-/settingregistry-2.0.1.tgz#a4bfd4afe5286c8abb327d76852f0acef6f110d3" + integrity sha512-38c5CFXLLNT1zKk0vS/UoD7TA90YpOrs/I5Zc8wY8GIl31IzTmTgre5H5cFSgvgg/imEbsYVWiUXtvTuQHGDWw== dependencies: - "@jupyterlab/statedb" "^2.0.0-beta.2" - "@lumino/commands" "^1.9.1" + "@jupyterlab/statedb" "^2.0.1" + "@lumino/commands" "^1.10.1" "@lumino/coreutils" "^1.4.2" - "@lumino/disposable" "^1.3.4" - "@lumino/signaling" "^1.3.4" + "@lumino/disposable" "^1.3.5" + "@lumino/signaling" "^1.3.5" ajv "^6.10.2" json5 "^2.1.1" -"@jupyterlab/statedb@^2.0.0-beta.2": - version "2.0.0-beta.2" - resolved "https://registry.npmjs.org/@jupyterlab/statedb/-/statedb-2.0.0-beta.2.tgz#7eacc83e873bc776d5b28eea7a360d40b21f48d3" - integrity sha512-FjqOqK6otB5UlzMT0RgVRNivNy4tvrK5RvUPKYK5MO2LnLIBrqvXGrrapsi30QOYaeoG3v0AAmFswrYbCbVkpw== +"@jupyterlab/statedb@^2.0.1": + version "2.0.1" + resolved "https://registry.npmjs.org/@jupyterlab/statedb/-/statedb-2.0.1.tgz#5a93726a96fff7e4b1c9571c771302912bd45ad4" + integrity sha512-M8Z9yc5grOa0dspEFBkB3qetAozPKbXYryOCaB2/MYBalTaZfNivJyVVnxf3xQRKolYavOn9ohONmuQq0OMFWQ== dependencies: - "@lumino/commands" "^1.9.1" + "@lumino/commands" "^1.10.1" "@lumino/coreutils" "^1.4.2" - "@lumino/disposable" "^1.3.4" + "@lumino/disposable" "^1.3.5" "@lumino/properties" "^1.1.6" - "@lumino/signaling" "^1.3.4" + "@lumino/signaling" "^1.3.5" -"@jupyterlab/statusbar@^2.0.0-beta.2": - version "2.0.0-beta.2" - resolved "https://registry.npmjs.org/@jupyterlab/statusbar/-/statusbar-2.0.0-beta.2.tgz#0090d97a60d12e92d633ba4ec0b0f716574817e6" - integrity sha512-7U7GPcTJ3smKOPGugVUPZ4mlmzSgdeWC/+PHJMMCdsnxjA7DXEg0Us78hSc38+jphpk+1M0TCCf3Hg+NSvkslw== - dependencies: - "@jupyterlab/apputils" "^2.0.0-beta.2" - "@jupyterlab/codeeditor" "^2.0.0-beta.2" - "@jupyterlab/coreutils" "^4.0.0-beta.2" - "@jupyterlab/services" "^5.0.0-beta.2" - "@jupyterlab/ui-components" "^2.0.0-beta.2" +"@jupyterlab/statusbar@^2.0.2": + version "2.0.2" + resolved "https://registry.npmjs.org/@jupyterlab/statusbar/-/statusbar-2.0.2.tgz#35924235e6a5efff72b0d1e2ade6cd36158b55d1" + integrity sha512-CGSaIm62ABWrQzAt6Jr79Px1iJMZw+LqlSVGMUDK7uPpeQ0w2Sk0V2B9bydSqJyDyzb/Ja495CYRqLu6rJn94A== + dependencies: + "@jupyterlab/apputils" "^2.0.2" + "@jupyterlab/codeeditor" "^2.0.2" + "@jupyterlab/coreutils" "^4.0.2" + "@jupyterlab/services" "^5.0.2" + "@jupyterlab/ui-components" "^2.0.2" "@lumino/algorithm" "^1.2.3" "@lumino/coreutils" "^1.4.2" - "@lumino/disposable" "^1.3.4" + "@lumino/disposable" "^1.3.5" "@lumino/messaging" "^1.3.3" - "@lumino/polling" "^1.0.3" - "@lumino/signaling" "^1.3.4" - "@lumino/widgets" "^1.9.7" + "@lumino/polling" "^1.0.4" + "@lumino/signaling" "^1.3.5" + "@lumino/widgets" "^1.11.1" + csstype "~2.6.9" react "~16.9.0" typestyle "^2.0.4" -"@jupyterlab/ui-components@^2.0.0-beta.2": - version "2.0.0-beta.2" - resolved "https://registry.npmjs.org/@jupyterlab/ui-components/-/ui-components-2.0.0-beta.2.tgz#339f7b1809ecf96d0f0ffdad33459092bede7348" - integrity sha512-oMR3Ou4kPrOvzUrvwE9q1b9fvbKdW6TdGgOZV9LNrP/HgF6xOBKHa1Vh+js9uaD9lGXlWb1YWJTREYCd0FKFnw== +"@jupyterlab/ui-components@^2.0.2": + version "2.0.2" + resolved "https://registry.npmjs.org/@jupyterlab/ui-components/-/ui-components-2.0.2.tgz#84a68bbb4fdca0d83ea2892fcf78a8a373716fa9" + integrity sha512-yQ/M3ZtA/Zo8qsvvcwe17qdeTE7xZ6U5l5M/6OVvxIMKR0qXnqSpv8w7jJAgbRusr29Dj8tHbdrEMFethlfwUg== dependencies: "@blueprintjs/core" "^3.22.2" "@blueprintjs/select" "^3.11.2" - "@jupyterlab/coreutils" "^4.0.0-beta.2" + "@jupyterlab/coreutils" "^4.0.2" "@lumino/coreutils" "^1.4.2" - "@lumino/virtualdom" "^1.4.0" - "@lumino/widgets" "^1.9.7" + "@lumino/signaling" "^1.3.5" + "@lumino/virtualdom" "^1.6.1" + "@lumino/widgets" "^1.11.1" react "~16.9.0" react-dom "~16.9.0" typestyle "^2.0.4" @@ -1252,14 +1255,14 @@ resolved "https://registry.npmjs.org/@lumino/algorithm/-/algorithm-1.2.3.tgz#4ab9883d7e9a5b1845372a752dcaee2a35a770c6" integrity sha512-XBJ/homcm7o8Y9G6MzYvf0FF7SVqUCzvkIO01G2mZhCOnkZZhZ9c4uNOcE2VjSHNxHv2WU0l7d8rdhyKhmet+A== -"@lumino/application@^1.7.7": - version "1.7.7" - resolved "https://registry.npmjs.org/@lumino/application/-/application-1.7.7.tgz#51176f038a144ef2f67cff913363114a61cade1b" - integrity sha512-IbkDJ0H2ASXDt1cF9ddMMauOQJNEYXSwx9dFLY5iLmUeSnhqfO0jfEbec1G6ChOtpTO/p1RZYBfu3SZgyF08Zw== +"@lumino/application@^1.8.4": + version "1.8.4" + resolved "https://registry.npmjs.org/@lumino/application/-/application-1.8.4.tgz#63a26c4ecf8128bf0123739e37922415016f970a" + integrity sha512-f+CgggJ/9jopHT6db76+BjsiPBHjv6fgReU/vKtRGg8rsDjNRDefoWd9bWGWRuPiGymBY8c/+9Kyq5v0UDs5vg== dependencies: - "@lumino/commands" "^1.9.1" + "@lumino/commands" "^1.10.1" "@lumino/coreutils" "^1.4.2" - "@lumino/widgets" "^1.9.7" + "@lumino/widgets" "^1.11.1" "@lumino/collections@^1.2.3": version "1.2.3" @@ -1268,6 +1271,19 @@ dependencies: "@lumino/algorithm" "^1.2.3" +"@lumino/commands@^1.10.1": + version "1.10.1" + resolved "https://registry.npmjs.org/@lumino/commands/-/commands-1.10.1.tgz#149186d23cc48215f9f7f6515321f8871797a444" + integrity sha512-HGtXtqKD1WZJszJ42u2DyM3sgxrLal66IoHSJjbn2ygcEVCKDK73NSzoaQtXFtiissMedzKl8aIRXB3uyeEOlw== + dependencies: + "@lumino/algorithm" "^1.2.3" + "@lumino/coreutils" "^1.4.2" + "@lumino/disposable" "^1.3.5" + "@lumino/domutils" "^1.1.7" + "@lumino/keyboard" "^1.1.6" + "@lumino/signaling" "^1.3.5" + "@lumino/virtualdom" "^1.6.1" + "@lumino/commands@^1.9.1": version "1.9.1" resolved "https://registry.npmjs.org/@lumino/commands/-/commands-1.9.1.tgz#0d01ccf2b48a7d5a44f0dc272072e4f2be9efb97" @@ -1293,6 +1309,14 @@ "@lumino/algorithm" "^1.2.3" "@lumino/signaling" "^1.3.4" +"@lumino/disposable@^1.3.5": + version "1.3.5" + resolved "https://registry.npmjs.org/@lumino/disposable/-/disposable-1.3.5.tgz#3562ca063117fd2a0735df170f51e41620fa21d0" + integrity sha512-IWDAd+nysBnwLhEtW7M62PVk84OEex9OEktZsS6V+19n/o8/Rw4ccL0pt0GFby01CsVK0YcELDoDaMUZsMiAmA== + dependencies: + "@lumino/algorithm" "^1.2.3" + "@lumino/signaling" "^1.3.5" + "@lumino/domutils@^1.1.0", "@lumino/domutils@^1.1.7": version "1.1.7" resolved "https://registry.npmjs.org/@lumino/domutils/-/domutils-1.1.7.tgz#9cc16cba0c1e8f31fcb734879dec050505925b16" @@ -1306,6 +1330,14 @@ "@lumino/coreutils" "^1.4.2" "@lumino/disposable" "^1.3.4" +"@lumino/dragdrop@^1.5.1": + version "1.5.1" + resolved "https://registry.npmjs.org/@lumino/dragdrop/-/dragdrop-1.5.1.tgz#502305183d430693edc112f7c234a3d9f2d89f02" + integrity sha512-MFg/hy6hHdPwBZypBue5mlrBzjoNrtBQzzJW+kbM5ftAOvS99ZRgyMMlMQcbsHd+6yib9NOQ64Hd8P8uZEWTdw== + dependencies: + "@lumino/coreutils" "^1.4.2" + "@lumino/disposable" "^1.3.5" + "@lumino/keyboard@^1.1.6": version "1.1.6" resolved "https://registry.npmjs.org/@lumino/keyboard/-/keyboard-1.1.6.tgz#bf222369bbeacf2c7d2dfe5003d52736c5a2fc3d" @@ -1319,14 +1351,14 @@ "@lumino/algorithm" "^1.2.3" "@lumino/collections" "^1.2.3" -"@lumino/polling@^1.0.3": - version "1.0.3" - resolved "https://registry.npmjs.org/@lumino/polling/-/polling-1.0.3.tgz#f66b203074dc323dd0a9e10a3e1851ba25891a18" - integrity sha512-L6dHrUjrNbACWBIsmEfiko0Js28HtCexupoSSrgbDyx9gmsmZ0sAgpacbpRbiOzFUTvHeq+1PLbxYffKvQqxGw== +"@lumino/polling@^1.0.4": + version "1.0.4" + resolved "https://registry.npmjs.org/@lumino/polling/-/polling-1.0.4.tgz#85f956933fa63c47edf808c141cdb9a7a1a49f4c" + integrity sha512-9OYIDTohToj6SLrxOr+FbeyPvirBU/r53FgmPxulcDgUVnVk4tqTSLIJAUu3mjJd9hnmZZqpSn9ppyjQAo3qSg== dependencies: "@lumino/coreutils" "^1.4.2" - "@lumino/disposable" "^1.3.4" - "@lumino/signaling" "^1.3.4" + "@lumino/disposable" "^1.3.5" + "@lumino/signaling" "^1.3.5" "@lumino/properties@^1.1.0", "@lumino/properties@^1.1.6": version "1.1.6" @@ -1340,6 +1372,13 @@ dependencies: "@lumino/algorithm" "^1.2.3" +"@lumino/signaling@^1.3.5": + version "1.3.5" + resolved "https://registry.npmjs.org/@lumino/signaling/-/signaling-1.3.5.tgz#21d77cf201c429f9824e04c19f0cc04027f963c8" + integrity sha512-6jniKrLrJOXKJmaJyU7hr6PBzE4GJ5Wms5hc/yzNKKDBxGSEPdtNJlW3wTNUuSTTtF/9ItN8A8ZC/G0yIu53Tw== + dependencies: + "@lumino/algorithm" "^1.2.3" + "@lumino/virtualdom@^1.4.0": version "1.4.0" resolved "https://registry.npmjs.org/@lumino/virtualdom/-/virtualdom-1.4.0.tgz#6083a72279d6d02ab2c3589593513f055815c18e" @@ -1347,7 +1386,31 @@ dependencies: "@lumino/algorithm" "^1.2.3" -"@lumino/widgets@^1.3.0", "@lumino/widgets@^1.6.0", "@lumino/widgets@^1.9.7": +"@lumino/virtualdom@^1.6.1": + version "1.6.1" + resolved "https://registry.npmjs.org/@lumino/virtualdom/-/virtualdom-1.6.1.tgz#7f190091e065e7e4e4814836ed5b293aa8359b2d" + integrity sha512-+KdzSw8TCPwvK6qhZr4xTyp6HymvEb2Da0xPdi4RsVUNhYf2gBI03uidXHx76Vx5OIbEgCn1B+0srxvm2ZbWsQ== + dependencies: + "@lumino/algorithm" "^1.2.3" + +"@lumino/widgets@^1.11.1": + version "1.11.1" + resolved "https://registry.npmjs.org/@lumino/widgets/-/widgets-1.11.1.tgz#2aba526f1dba7cb004786f25b3bc4a58bd8fe14d" + integrity sha512-f4QDe6lVNPcjL8Vb20BiP0gzbT1rx0/1Hc719u5oW9c0Z/xrXMWwNhnb/zYM/kBBVBe3omLmCfJOiNuE0oZl0A== + dependencies: + "@lumino/algorithm" "^1.2.3" + "@lumino/commands" "^1.10.1" + "@lumino/coreutils" "^1.4.2" + "@lumino/disposable" "^1.3.5" + "@lumino/domutils" "^1.1.7" + "@lumino/dragdrop" "^1.5.1" + "@lumino/keyboard" "^1.1.6" + "@lumino/messaging" "^1.3.3" + "@lumino/properties" "^1.1.6" + "@lumino/signaling" "^1.3.5" + "@lumino/virtualdom" "^1.6.1" + +"@lumino/widgets@^1.3.0", "@lumino/widgets@^1.6.0": version "1.9.7" resolved "https://registry.npmjs.org/@lumino/widgets/-/widgets-1.9.7.tgz#33faf3a3b3074bb5dd24e0ffc06202d3f0148371" integrity sha512-Rpcahg42vpQt3soC0XDKLztJwgBeAcg92bWhovbLSmGE+FsO649LI1BzIwZHNJKbACsfncjZMCwPgNFsoYXRbA== @@ -2836,7 +2899,7 @@ chai@^4.0.0: pathval "^1.1.0" type-detect "^4.0.5" -chalk@2.4.2, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.1, chalk@^2.4.1, chalk@^2.4.2: +chalk@2.4.2, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.3.1, chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -3493,6 +3556,11 @@ csstype@^2.2.0, csstype@^2.4.0: resolved "https://registry.npmjs.org/csstype/-/csstype-2.6.8.tgz#0fb6fc2417ffd2816a418c9336da74d7f07db431" integrity sha512-msVS9qTuMT5zwAGCVm4mxfrZ18BNc6Csd0oJAtiFMZ1FAx1CCvy2+5MDmYoix63LM/6NDbNtodCiGYGmFgO0dA== +csstype@~2.6.9: + version "2.6.9" + resolved "https://registry.npmjs.org/csstype/-/csstype-2.6.9.tgz#05141d0cd557a56b8891394c1911c40c8a98d098" + integrity sha512-xz39Sb4+OaTsULgUERcCk+TJj8ylkL4aSVDQiX/ksxbELSqwkgt4d4RD7fovIdgJGSuNYqwZEiVjYY5l0ask+Q== + currently-unhandled@^0.4.1: version "0.4.1" resolved "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" @@ -3901,6 +3969,16 @@ duplexify@^3.4.2, duplexify@^3.6.0: readable-stream "^2.0.0" stream-shift "^1.0.0" +duplicate-package-checker-webpack-plugin@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/duplicate-package-checker-webpack-plugin/-/duplicate-package-checker-webpack-plugin-3.0.0.tgz#78bb89e625fa7cf8c2a59c53f62b495fda9ba287" + integrity sha512-aO50/qPC7X2ChjRFniRiscxBLT/K01bALqfcDaf8Ih5OqQ1N4iT/Abx9Ofu3/ms446vHTm46FACIuJUmgUQcDQ== + dependencies: + chalk "^2.3.0" + find-root "^1.0.0" + lodash "^4.17.4" + semver "^5.4.1" + ecc-jsbn@~0.1.1: version "0.1.2" resolved "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" @@ -4534,6 +4612,11 @@ find-cache-dir@^2.1.0: make-dir "^2.0.0" pkg-dir "^3.0.0" +find-root@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" + integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng== + find-up@3.0.0, find-up@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" @@ -4615,7 +4698,7 @@ follow-redirects@^1.0.0: dependencies: debug "^3.0.0" -font-awesome@^4.7.0, font-awesome@~4.7.0: +font-awesome@^4.7.0: version "4.7.0" resolved "https://registry.npmjs.org/font-awesome/-/font-awesome-4.7.0.tgz#8fa8cf0411a1a31afd07b06d2902bb9fc815a133" integrity sha1-j6jPBBGhoxr9B7BtKQK7n8gVoTM= From fb87bccf9c9723cd687d4fba182c6ca13c05b114 Mon Sep 17 00:00:00 2001 From: Jason Grout Date: Mon, 9 Mar 2020 15:54:07 -0700 Subject: [PATCH 033/101] Add lerna version command to the root package.json --- package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 9ae2017e6dc..540d50f1a11 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,8 @@ "publish": "yarn run clean && yarn run build && lerna publish -m \"Publish npm packages\"", "sort-package-json": "lerna exec --parallel sort-package-json && sort-package-json", "update-dependency": "update-dependency --lerna", - "updated": "lerna updated" + "updated": "lerna updated", + "version": "yarn run clean && yarn run build && lerna version --no-push -m \"Bump version\" " }, "husky": { "hooks": { From 6027dedfa128f84936452010bb68a72473ff5689 Mon Sep 17 00:00:00 2001 From: Jason Grout Date: Mon, 9 Mar 2020 15:54:45 -0700 Subject: [PATCH 034/101] Update instructions for generating the model spec in the release docs. --- docs/source/dev_release.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/source/dev_release.md b/docs/source/dev_release.md index bb8fb66e7dd..85e8bc01d19 100644 --- a/docs/source/dev_release.md +++ b/docs/source/dev_release.md @@ -28,7 +28,8 @@ First, update the relevant model specification versions. For example, the commit Next, regenerate the model spec with the new version numbers by doing something like this in the repository root directory: ``` -python ./packages/schema/generate-spec.py > packages/schema/jupyterwidgetmodels.latest.md +python ./packages/schema/generate-spec.py -f json-pretty > packages/schema/jupyterwidgetmodels.latest.json +python ./packages/schema/generate-spec.py -f markdown > packages/schema/jupyterwidgetmodels.latest.md ``` Copy `packages/schema/jupyterwidgetmodels.latest.md` to an appropriately-named From 88ff337e185cd6f9d09248846c6a453fd1858398 Mon Sep 17 00:00:00 2001 From: Jason Grout Date: Mon, 9 Mar 2020 16:09:56 -0700 Subject: [PATCH 035/101] Update Lumino --- examples/web3/package.json | 2 +- packages/base-manager/package.json | 2 +- packages/base/package.json | 6 +++--- packages/controls/package.json | 10 +++++----- packages/html-manager/package.json | 2 +- packages/jupyterlab-manager/package.json | 14 +++++++------- widgetsnbextension/package.json | 4 ++-- 7 files changed, 20 insertions(+), 20 deletions(-) diff --git a/examples/web3/package.json b/examples/web3/package.json index 187a86946f7..95dd2dec97b 100644 --- a/examples/web3/package.json +++ b/examples/web3/package.json @@ -18,7 +18,7 @@ "@jupyter-widgets/controls": "^1.5.3", "@jupyter-widgets/html-manager": "^0.18.4", "@jupyterlab/services": "^5.0.2", - "@lumino/widgets": "^1.3.0", + "@lumino/widgets": "^1.11.1", "codemirror": "^5.48.0", "font-awesome": "^4.7.0", "http-server": "^0.11.1" diff --git a/packages/base-manager/package.json b/packages/base-manager/package.json index 1ac0ca233ce..3add9181710 100644 --- a/packages/base-manager/package.json +++ b/packages/base-manager/package.json @@ -34,7 +34,7 @@ "dependencies": { "@jupyter-widgets/base": "^2.0.2", "@jupyterlab/services": "^5.0.2", - "@lumino/coreutils": "^1.2.0", + "@lumino/coreutils": "^1.4.2", "base64-js": "^1.2.1" }, "devDependencies": { diff --git a/packages/base/package.json b/packages/base/package.json index a05fd796cac..36589c938ae 100644 --- a/packages/base/package.json +++ b/packages/base/package.json @@ -33,9 +33,9 @@ }, "dependencies": { "@jupyterlab/services": "^5.0.2", - "@lumino/coreutils": "^1.2.0", - "@lumino/messaging": "^1.2.1", - "@lumino/widgets": "^1.3.0", + "@lumino/coreutils": "^1.4.2", + "@lumino/messaging": "^1.3.3", + "@lumino/widgets": "^1.11.1", "@types/backbone": "^1.4.1", "@types/lodash": "^4.14.134", "backbone": "1.2.3", diff --git a/packages/controls/package.json b/packages/controls/package.json index 0d50286b77e..2423de12a50 100644 --- a/packages/controls/package.json +++ b/packages/controls/package.json @@ -35,11 +35,11 @@ }, "dependencies": { "@jupyter-widgets/base": "^2.0.2", - "@lumino/algorithm": "^1.1.0", - "@lumino/domutils": "^1.1.0", - "@lumino/messaging": "^1.2.1", - "@lumino/signaling": "^1.2.0", - "@lumino/widgets": "^1.3.0", + "@lumino/algorithm": "^1.2.3", + "@lumino/domutils": "^1.1.7", + "@lumino/messaging": "^1.3.3", + "@lumino/signaling": "^1.3.5", + "@lumino/widgets": "^1.11.1", "d3-format": "^1.3.0", "jquery": "^3.1.1", "nouislider": "^14.1.1" diff --git a/packages/html-manager/package.json b/packages/html-manager/package.json index 693331ad73a..0570a52e09e 100644 --- a/packages/html-manager/package.json +++ b/packages/html-manager/package.json @@ -44,7 +44,7 @@ "@jupyterlab/outputarea": "^2.0.2", "@jupyterlab/rendermime": "^2.0.2", "@jupyterlab/rendermime-interfaces": "^2.0.1", - "@lumino/widgets": "^1.6.0", + "@lumino/widgets": "^1.11.1", "ajv": "^6.10.0", "jquery": "^3.1.1" }, diff --git a/packages/jupyterlab-manager/package.json b/packages/jupyterlab-manager/package.json index 48cf63ac7d8..1b2e3f22ad2 100644 --- a/packages/jupyterlab-manager/package.json +++ b/packages/jupyterlab-manager/package.json @@ -49,13 +49,13 @@ "@jupyterlab/rendermime-interfaces": "^2.0.1", "@jupyterlab/services": "^5.0.2", "@jupyterlab/settingregistry": "^2.0.1", - "@lumino/algorithm": "^1.1.0", - "@lumino/coreutils": "^1.3.0", - "@lumino/disposable": "^1.1.1", - "@lumino/messaging": "^1.2.1", - "@lumino/properties": "^1.1.0", - "@lumino/signaling": "^1.2.0", - "@lumino/widgets": "^1.3.0", + "@lumino/algorithm": "^1.2.3", + "@lumino/coreutils": "^1.4.2", + "@lumino/disposable": "^1.3.5", + "@lumino/messaging": "^1.3.3", + "@lumino/properties": "^1.1.6", + "@lumino/signaling": "^1.3.5", + "@lumino/widgets": "^1.11.1", "@types/backbone": "^1.4.1", "jquery": "^3.1.1", "semver": "^6.1.1" diff --git a/widgetsnbextension/package.json b/widgetsnbextension/package.json index 2b5469f2448..76ef11c746d 100644 --- a/widgetsnbextension/package.json +++ b/widgetsnbextension/package.json @@ -27,8 +27,8 @@ "@jupyter-widgets/html-manager": "^0.18.4", "@jupyter-widgets/output": "^2.0.1", "@jupyterlab/services": "^5.0.2", - "@lumino/messaging": "^1.2.1", - "@lumino/widgets": "^1.3.0", + "@lumino/messaging": "^1.3.3", + "@lumino/widgets": "^1.11.1", "backbone": "1.2.3" }, "devDependencies": { From 2caf1617d98299bb115628c9b283e3b1ac24ac39 Mon Sep 17 00:00:00 2001 From: Jason Grout Date: Mon, 9 Mar 2020 16:18:53 -0700 Subject: [PATCH 036/101] Update yarn.lock --- yarn.lock | 69 ++++--------------------------------------------------- 1 file changed, 5 insertions(+), 64 deletions(-) diff --git a/yarn.lock b/yarn.lock index 6093b12dea0..792e5e11b65 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1250,7 +1250,7 @@ npmlog "^4.1.2" write-file-atomic "^2.3.0" -"@lumino/algorithm@^1.1.0", "@lumino/algorithm@^1.2.3": +"@lumino/algorithm@^1.2.3": version "1.2.3" resolved "https://registry.npmjs.org/@lumino/algorithm/-/algorithm-1.2.3.tgz#4ab9883d7e9a5b1845372a752dcaee2a35a770c6" integrity sha512-XBJ/homcm7o8Y9G6MzYvf0FF7SVqUCzvkIO01G2mZhCOnkZZhZ9c4uNOcE2VjSHNxHv2WU0l7d8rdhyKhmet+A== @@ -1284,31 +1284,11 @@ "@lumino/signaling" "^1.3.5" "@lumino/virtualdom" "^1.6.1" -"@lumino/commands@^1.9.1": - version "1.9.1" - resolved "https://registry.npmjs.org/@lumino/commands/-/commands-1.9.1.tgz#0d01ccf2b48a7d5a44f0dc272072e4f2be9efb97" - integrity sha512-cC8GwzYQ/+Af8D/G37zrYQtv5vp8i/aSoIUAQ47DO6x21uitTedE3R02fpDT51nZx56P5i4VeJOX0+oXrbBlCA== - dependencies: - "@lumino/algorithm" "^1.2.3" - "@lumino/coreutils" "^1.4.2" - "@lumino/disposable" "^1.3.4" - "@lumino/domutils" "^1.1.7" - "@lumino/keyboard" "^1.1.6" - "@lumino/signaling" "^1.3.4" - -"@lumino/coreutils@^1.2.0", "@lumino/coreutils@^1.3.0", "@lumino/coreutils@^1.4.2": +"@lumino/coreutils@^1.4.2": version "1.4.2" resolved "https://registry.npmjs.org/@lumino/coreutils/-/coreutils-1.4.2.tgz#44cd3d55bb692e876c792f1ecc0df3daa1de63e9" integrity sha512-SmQ4YDANe25rZd0bLoW7LVAHmgySjkrJmyNPnPW0GrpBt2u4/6D+EQJ8PCCMNWuJvrljBCdlmgOFsT38qYhfcw== -"@lumino/disposable@^1.1.1", "@lumino/disposable@^1.3.4": - version "1.3.4" - resolved "https://registry.npmjs.org/@lumino/disposable/-/disposable-1.3.4.tgz#fc10f61aca1925b99b08810165d46c91de84ac04" - integrity sha512-SzePyYNfR9khvjjHrieGnL2b3W7l0X7Bn2Il5VJ3R017aY5DTLr9qOBrgmCXkjmKiYPR65oLkUqPCqSTbAXb0w== - dependencies: - "@lumino/algorithm" "^1.2.3" - "@lumino/signaling" "^1.3.4" - "@lumino/disposable@^1.3.5": version "1.3.5" resolved "https://registry.npmjs.org/@lumino/disposable/-/disposable-1.3.5.tgz#3562ca063117fd2a0735df170f51e41620fa21d0" @@ -1317,19 +1297,11 @@ "@lumino/algorithm" "^1.2.3" "@lumino/signaling" "^1.3.5" -"@lumino/domutils@^1.1.0", "@lumino/domutils@^1.1.7": +"@lumino/domutils@^1.1.7": version "1.1.7" resolved "https://registry.npmjs.org/@lumino/domutils/-/domutils-1.1.7.tgz#9cc16cba0c1e8f31fcb734879dec050505925b16" integrity sha512-NPysY8XfpCvLNvDe+z1caIUPxOLXWRPQMUAjOj/EhggRyXadan6Lm/5uO6M9S5gW/v9QUXT4+1Sxe3WXz0nRCA== -"@lumino/dragdrop@^1.4.4": - version "1.4.4" - resolved "https://registry.npmjs.org/@lumino/dragdrop/-/dragdrop-1.4.4.tgz#b69d392d58cca2702e16c06931829068add17871" - integrity sha512-VlfmN6ZoJXNQPsfFnKsAO9R+3uh1RCxtkamz+gwpXp6v0LUnR1t9v4G2pogT+49MjnjIdVkqJ3EfKsB5obp60g== - dependencies: - "@lumino/coreutils" "^1.4.2" - "@lumino/disposable" "^1.3.4" - "@lumino/dragdrop@^1.5.1": version "1.5.1" resolved "https://registry.npmjs.org/@lumino/dragdrop/-/dragdrop-1.5.1.tgz#502305183d430693edc112f7c234a3d9f2d89f02" @@ -1343,7 +1315,7 @@ resolved "https://registry.npmjs.org/@lumino/keyboard/-/keyboard-1.1.6.tgz#bf222369bbeacf2c7d2dfe5003d52736c5a2fc3d" integrity sha512-W6pqe0TXRfGOoz1ZK1PRmuGZUWpmdoJArrzwmduUf0t2r06yl56S7w76gxrB7ExTidNPPaOWydGIosPgdgZf5A== -"@lumino/messaging@^1.2.1", "@lumino/messaging@^1.3.3": +"@lumino/messaging@^1.3.3": version "1.3.3" resolved "https://registry.npmjs.org/@lumino/messaging/-/messaging-1.3.3.tgz#75d3c880b11087da130554eeefa9a19572b24d22" integrity sha512-J+0m1aywl64I9/dr9fzE9IwC+eq90T5gUi1hCXP1MFnZh4aLUymmRV5zFw1CNh/vYlNnEu72xxEuhfCfuhiy8g== @@ -1360,18 +1332,11 @@ "@lumino/disposable" "^1.3.5" "@lumino/signaling" "^1.3.5" -"@lumino/properties@^1.1.0", "@lumino/properties@^1.1.6": +"@lumino/properties@^1.1.6": version "1.1.6" resolved "https://registry.npmjs.org/@lumino/properties/-/properties-1.1.6.tgz#367538d63453e99e8c94e5559748a0713d9874ac" integrity sha512-QnZa1IB7sr4Tawf0OKvwgZAptxDRK7DUAMJ71zijXNXH4FlxyThzOWXef51HHFsISKYa8Rn3rysOwtc62XkmXw== -"@lumino/signaling@^1.2.0", "@lumino/signaling@^1.3.4": - version "1.3.4" - resolved "https://registry.npmjs.org/@lumino/signaling/-/signaling-1.3.4.tgz#878d2525531f865ecbbc71e225e5c2dac09f7d0a" - integrity sha512-SESCQIsvmC8zSGzU+shFm9f7HgFWeQPQP/b6Mp7/VM6utjjt6FLAnju9cIAWKxVqNafc9lMbjHh5YPpSvOI/fg== - dependencies: - "@lumino/algorithm" "^1.2.3" - "@lumino/signaling@^1.3.5": version "1.3.5" resolved "https://registry.npmjs.org/@lumino/signaling/-/signaling-1.3.5.tgz#21d77cf201c429f9824e04c19f0cc04027f963c8" @@ -1379,13 +1344,6 @@ dependencies: "@lumino/algorithm" "^1.2.3" -"@lumino/virtualdom@^1.4.0": - version "1.4.0" - resolved "https://registry.npmjs.org/@lumino/virtualdom/-/virtualdom-1.4.0.tgz#6083a72279d6d02ab2c3589593513f055815c18e" - integrity sha512-BItNqb/XGTHEWg7DSktyJqnFXYPs2rNYxvOCr5We5MDVHtc7OdM3Q5nnYfCzE704By5aSGgBEkyFvguun3u1Ug== - dependencies: - "@lumino/algorithm" "^1.2.3" - "@lumino/virtualdom@^1.6.1": version "1.6.1" resolved "https://registry.npmjs.org/@lumino/virtualdom/-/virtualdom-1.6.1.tgz#7f190091e065e7e4e4814836ed5b293aa8359b2d" @@ -1410,23 +1368,6 @@ "@lumino/signaling" "^1.3.5" "@lumino/virtualdom" "^1.6.1" -"@lumino/widgets@^1.3.0", "@lumino/widgets@^1.6.0": - version "1.9.7" - resolved "https://registry.npmjs.org/@lumino/widgets/-/widgets-1.9.7.tgz#33faf3a3b3074bb5dd24e0ffc06202d3f0148371" - integrity sha512-Rpcahg42vpQt3soC0XDKLztJwgBeAcg92bWhovbLSmGE+FsO649LI1BzIwZHNJKbACsfncjZMCwPgNFsoYXRbA== - dependencies: - "@lumino/algorithm" "^1.2.3" - "@lumino/commands" "^1.9.1" - "@lumino/coreutils" "^1.4.2" - "@lumino/disposable" "^1.3.4" - "@lumino/domutils" "^1.1.7" - "@lumino/dragdrop" "^1.4.4" - "@lumino/keyboard" "^1.1.6" - "@lumino/messaging" "^1.3.3" - "@lumino/properties" "^1.1.6" - "@lumino/signaling" "^1.3.4" - "@lumino/virtualdom" "^1.4.0" - "@mrmlnc/readdir-enhanced@^2.2.1": version "2.2.1" resolved "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde" From 2e47fe35039a9c97b1ee1c5d2d28b593f3a1b9ef Mon Sep 17 00:00:00 2001 From: Jason Grout Date: Mon, 9 Mar 2020 16:39:58 -0700 Subject: [PATCH 037/101] Publish prereleases to the next dist-tag --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 540d50f1a11..5fab85473b8 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,7 @@ "lint:check": "yarn run prettier:check && yarn run eslint:check", "prettier": "prettier --ignore-path .gitignore --write \"**/*{.ts,.tsx,.js,.jsx,.css,.json}\"", "prettier:check": "prettier --ignore-path .gitignore --check \"**/*{.ts,.tsx,.js,.jsx,.css,.json}\"", - "publish": "yarn run clean && yarn run build && lerna publish -m \"Publish npm packages\"", + "publish": "yarn run clean && yarn run build && lerna publish --pre-dist-tag next -m \"Publish npm packages\"", "sort-package-json": "lerna exec --parallel sort-package-json && sort-package-json", "update-dependency": "update-dependency --lerna", "updated": "lerna updated", From 0ea8d23d5a328b36b00a1010ba9709bbc001a1aa Mon Sep 17 00:00:00 2001 From: Jason Grout Date: Mon, 9 Mar 2020 16:42:31 -0700 Subject: [PATCH 038/101] Publish npm packages only from the current commit --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 5fab85473b8..b86b58f17e9 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,7 @@ "lint:check": "yarn run prettier:check && yarn run eslint:check", "prettier": "prettier --ignore-path .gitignore --write \"**/*{.ts,.tsx,.js,.jsx,.css,.json}\"", "prettier:check": "prettier --ignore-path .gitignore --check \"**/*{.ts,.tsx,.js,.jsx,.css,.json}\"", - "publish": "yarn run clean && yarn run build && lerna publish --pre-dist-tag next -m \"Publish npm packages\"", + "publish": "yarn run clean && yarn run build && lerna publish --pre-dist-tag next from-git", "sort-package-json": "lerna exec --parallel sort-package-json && sort-package-json", "update-dependency": "update-dependency --lerna", "updated": "lerna updated", From a617927239f3d38bc28c40afef50cb1ee8d5ee12 Mon Sep 17 00:00:00 2001 From: Jason Grout Date: Mon, 9 Mar 2020 16:45:28 -0700 Subject: [PATCH 039/101] Update release instructions --- docs/source/dev_release.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/source/dev_release.md b/docs/source/dev_release.md index 85e8bc01d19..cf260875fa2 100644 --- a/docs/source/dev_release.md +++ b/docs/source/dev_release.md @@ -48,10 +48,12 @@ git pull origin master git reset --hard origin/master git clean -fdx yarn install +yarn run version +# Check the latest commit to make sure it is correct yarn run publish ``` -Lerna will prompt you for version numbers for each of the changed npm packages. Lerna will then change the versions appropriately (including the interdependency versions), commit, tag, and publish the new packages to npm. +Lerna will prompt you for version numbers for each of the changed npm packages in the version step. Lerna will then change the versions appropriately (including the interdependency versions), commit, and tag. The `yarn run publish` step then publishes the public packages that were versioned to npm. ### widgetsnbextension From 9e805f78fcc975e25ad37e703a47728b33263f89 Mon Sep 17 00:00:00 2001 From: Jason Grout Date: Mon, 9 Mar 2020 16:55:51 -0700 Subject: [PATCH 040/101] Update test --- packages/base/test/src/widget_test.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/base/test/src/widget_test.ts b/packages/base/test/src/widget_test.ts index 3166f1c19f5..2434ae3d162 100644 --- a/packages/base/test/src/widget_test.ts +++ b/packages/base/test/src/widget_test.ts @@ -602,10 +602,10 @@ describe('WidgetModel', function() { expect(this.widget.get_state()).to.deep.equal({ _model_module: '@jupyter-widgets/base', _model_name: 'WidgetModel', - _model_module_version: '1.2.0', + _model_module_version: '2.0.0', _view_module: '@jupyter-widgets/base', _view_name: null, - _view_module_version: '1.2.0', + _view_module_version: '2.0.0', _view_count: null, a: 'get_state test' }); From b568375aca6333c4cc3bda4696ad853eb2802799 Mon Sep 17 00:00:00 2001 From: "Yuan (Bob) Gong" Date: Tue, 10 Mar 2020 13:20:45 +0800 Subject: [PATCH 041/101] Update libembed-amd.ts --- packages/html-manager/src/libembed-amd.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/html-manager/src/libembed-amd.ts b/packages/html-manager/src/libembed-amd.ts index d8906b84c2c..2d63c908e70 100644 --- a/packages/html-manager/src/libembed-amd.ts +++ b/packages/html-manager/src/libembed-amd.ts @@ -11,7 +11,7 @@ const scripts = document.getElementsByTagName('script'); Array.prototype.forEach.call(scripts, (script: HTMLScriptElement) => { cdn = script.getAttribute('data-jupyter-widgets-cdn') || cdn; onlyCDN = - onlyCDN || script.getAttribute('data-jupyter-widgets-cdn-only') != null; + onlyCDN || script.hasAttribute('data-jupyter-widgets-cdn-only'); }); /** From a01f258dad4672183ff8fb783553ffc2e442b36a Mon Sep 17 00:00:00 2001 From: Jason Grout Date: Tue, 10 Mar 2020 06:42:19 -0700 Subject: [PATCH 042/101] Bump version - @jupyter-widgets/example-web1@6.0.0-alpha.0 - @jupyter-widgets/example-web2@6.0.0-alpha.0 - @jupyter-widgets/example-web3@6.0.0-alpha.0 - @jupyter-widgets/example-web4@6.0.0-alpha.0 - @jupyter-widgets/base-manager@1.0.0-alpha.0 - @jupyter-widgets/base@4.0.0-alpha.0 - @jupyter-widgets/controls@3.0.0-alpha.0 - @jupyter-widgets/html-manager@0.20.0-alpha.0 - @jupyter-widgets/jupyterlab-manager@3.0.0-alpha.0 - @jupyter-widgets/output@4.0.0-alpha.0 - @jupyter-widgets/schema@0.5.0-alpha.0 - @jupyter-widgets/notebook-manager@6.0.0-alpha.0 --- examples/web1/package.json | 8 ++++---- examples/web2/package.json | 8 ++++---- examples/web3/package.json | 8 ++++---- examples/web4/package.json | 4 ++-- packages/base-manager/package.json | 4 ++-- packages/base/package.json | 2 +- packages/controls/package.json | 4 ++-- packages/html-manager/package.json | 12 ++++++------ packages/jupyterlab-manager/package.json | 10 +++++----- packages/output/package.json | 4 ++-- packages/schema/package.json | 2 +- widgetsnbextension/package.json | 12 ++++++------ 12 files changed, 39 insertions(+), 39 deletions(-) diff --git a/examples/web1/package.json b/examples/web1/package.json index c844ba6aab1..0ae11650e90 100644 --- a/examples/web1/package.json +++ b/examples/web1/package.json @@ -1,6 +1,6 @@ { "name": "@jupyter-widgets/example-web1", - "version": "4.0.3", + "version": "6.0.0-alpha.0", "private": true, "description": "Project that tests the ability to npm install jupyter-js-widgets within an npm project.", "license": "BSD-3-Clause", @@ -16,9 +16,9 @@ "test:firefox:headless": "npm run test:default -- --browsers=FirefoxHeadless" }, "dependencies": { - "@jupyter-widgets/base": "^2.0.2", - "@jupyter-widgets/base-manager": "^0.1.0", - "@jupyter-widgets/controls": "^1.5.3" + "@jupyter-widgets/base": "^4.0.0-alpha.0", + "@jupyter-widgets/base-manager": "^1.0.0-alpha.0", + "@jupyter-widgets/controls": "^3.0.0-alpha.0" }, "devDependencies": { "chai": "^4.0.0", diff --git a/examples/web2/package.json b/examples/web2/package.json index cf5f6d08216..4b004d15286 100644 --- a/examples/web2/package.json +++ b/examples/web2/package.json @@ -1,6 +1,6 @@ { "name": "@jupyter-widgets/example-web2", - "version": "4.0.3", + "version": "6.0.0-alpha.0", "private": true, "description": "Project that tests the ability to npm install jupyter-js-widgets within an npm project.", "license": "BSD-3-Clause", @@ -13,9 +13,9 @@ "test:default": "echo \"No test specified\"" }, "dependencies": { - "@jupyter-widgets/base": "^2.0.2", - "@jupyter-widgets/base-manager": "^0.1.0", - "@jupyter-widgets/controls": "^1.5.3", + "@jupyter-widgets/base": "^4.0.0-alpha.0", + "@jupyter-widgets/base-manager": "^1.0.0-alpha.0", + "@jupyter-widgets/controls": "^3.0.0-alpha.0", "codemirror": "^5.48.0", "font-awesome": "^4.7.0" }, diff --git a/examples/web3/package.json b/examples/web3/package.json index 95dd2dec97b..b7e750fda36 100644 --- a/examples/web3/package.json +++ b/examples/web3/package.json @@ -1,6 +1,6 @@ { "name": "@jupyter-widgets/example-web3", - "version": "4.0.3", + "version": "6.0.0-alpha.0", "private": true, "description": "Project that tests the ability to npm install jupyter-js-widgets within an npm project.", "license": "BSD-3-Clause", @@ -14,9 +14,9 @@ "test:default": "echo \"No test specified\"" }, "dependencies": { - "@jupyter-widgets/base": "^2.0.2", - "@jupyter-widgets/controls": "^1.5.3", - "@jupyter-widgets/html-manager": "^0.18.4", + "@jupyter-widgets/base": "^4.0.0-alpha.0", + "@jupyter-widgets/controls": "^3.0.0-alpha.0", + "@jupyter-widgets/html-manager": "^0.20.0-alpha.0", "@jupyterlab/services": "^5.0.2", "@lumino/widgets": "^1.11.1", "codemirror": "^5.48.0", diff --git a/examples/web4/package.json b/examples/web4/package.json index 4f3930a2662..20108329949 100644 --- a/examples/web4/package.json +++ b/examples/web4/package.json @@ -1,6 +1,6 @@ { "name": "@jupyter-widgets/example-web4", - "version": "4.0.3", + "version": "6.0.0-alpha.0", "private": true, "description": "Project that tests the ability to npm install jupyter-js-widgets within an npm project.", "license": "BSD-3-Clause", @@ -13,7 +13,7 @@ "test:default": "echo \"No test specified\"" }, "dependencies": { - "@jupyter-widgets/html-manager": "^0.18.4", + "@jupyter-widgets/html-manager": "^0.20.0-alpha.0", "font-awesome": "^4.7.0" }, "devDependencies": { diff --git a/packages/base-manager/package.json b/packages/base-manager/package.json index 3add9181710..4d9456ece84 100644 --- a/packages/base-manager/package.json +++ b/packages/base-manager/package.json @@ -1,6 +1,6 @@ { "name": "@jupyter-widgets/base-manager", - "version": "0.1.0", + "version": "1.0.0-alpha.0", "description": "Jupyter interactive widgets - base manager", "repository": { "type": "git", @@ -32,7 +32,7 @@ "test:unit:ie": "npm run test:unit:default -- --browsers=IE" }, "dependencies": { - "@jupyter-widgets/base": "^2.0.2", + "@jupyter-widgets/base": "^4.0.0-alpha.0", "@jupyterlab/services": "^5.0.2", "@lumino/coreutils": "^1.4.2", "base64-js": "^1.2.1" diff --git a/packages/base/package.json b/packages/base/package.json index 36589c938ae..1e72e34adda 100644 --- a/packages/base/package.json +++ b/packages/base/package.json @@ -1,6 +1,6 @@ { "name": "@jupyter-widgets/base", - "version": "2.0.2", + "version": "4.0.0-alpha.0", "description": "Jupyter interactive widgets", "repository": { "type": "git", diff --git a/packages/controls/package.json b/packages/controls/package.json index 2423de12a50..0c486420fa3 100644 --- a/packages/controls/package.json +++ b/packages/controls/package.json @@ -1,6 +1,6 @@ { "name": "@jupyter-widgets/controls", - "version": "1.5.3", + "version": "3.0.0-alpha.0", "description": "Jupyter interactive widgets", "repository": { "type": "git", @@ -34,7 +34,7 @@ "test:unit:ie": "npm run test:unit:default -- --browsers=IE" }, "dependencies": { - "@jupyter-widgets/base": "^2.0.2", + "@jupyter-widgets/base": "^4.0.0-alpha.0", "@lumino/algorithm": "^1.2.3", "@lumino/domutils": "^1.1.7", "@lumino/messaging": "^1.3.3", diff --git a/packages/html-manager/package.json b/packages/html-manager/package.json index 0570a52e09e..fcae09123e8 100644 --- a/packages/html-manager/package.json +++ b/packages/html-manager/package.json @@ -1,6 +1,6 @@ { "name": "@jupyter-widgets/html-manager", - "version": "0.18.4", + "version": "0.20.0-alpha.0", "description": "Standalone package for rendering Jupyter widgets outside notebooks", "homepage": "https://github.com/jupyter-widgets/ipywidgets#readme", "bugs": { @@ -36,11 +36,11 @@ }, "dependencies": { "@fortawesome/fontawesome-free": "^5.12.0", - "@jupyter-widgets/base": "^2.0.2", - "@jupyter-widgets/base-manager": "^0.1.0", - "@jupyter-widgets/controls": "^1.5.3", - "@jupyter-widgets/output": "^2.0.1", - "@jupyter-widgets/schema": "^0.4.0", + "@jupyter-widgets/base": "^4.0.0-alpha.0", + "@jupyter-widgets/base-manager": "^1.0.0-alpha.0", + "@jupyter-widgets/controls": "^3.0.0-alpha.0", + "@jupyter-widgets/output": "^4.0.0-alpha.0", + "@jupyter-widgets/schema": "^0.5.0-alpha.0", "@jupyterlab/outputarea": "^2.0.2", "@jupyterlab/rendermime": "^2.0.2", "@jupyterlab/rendermime-interfaces": "^2.0.1", diff --git a/packages/jupyterlab-manager/package.json b/packages/jupyterlab-manager/package.json index 1b2e3f22ad2..6b9c8ace5cc 100644 --- a/packages/jupyterlab-manager/package.json +++ b/packages/jupyterlab-manager/package.json @@ -1,6 +1,6 @@ { "name": "@jupyter-widgets/jupyterlab-manager", - "version": "1.1.0", + "version": "3.0.0-alpha.0", "description": "The JupyterLab extension providing Jupyter widgets.", "keywords": [ "jupyter", @@ -34,10 +34,10 @@ "prepublish": "npm run clean && npm run build" }, "dependencies": { - "@jupyter-widgets/base": "^2.0.2", - "@jupyter-widgets/base-manager": "^0.1.0", - "@jupyter-widgets/controls": "^1.5.3", - "@jupyter-widgets/output": "^2.0.1", + "@jupyter-widgets/base": "^4.0.0-alpha.0", + "@jupyter-widgets/base-manager": "^1.0.0-alpha.0", + "@jupyter-widgets/controls": "^3.0.0-alpha.0", + "@jupyter-widgets/output": "^4.0.0-alpha.0", "@jupyterlab/application": "^2.0.2", "@jupyterlab/docregistry": "^2.0.2", "@jupyterlab/logconsole": "^2.0.2", diff --git a/packages/output/package.json b/packages/output/package.json index fc825133804..bea3434c0f7 100644 --- a/packages/output/package.json +++ b/packages/output/package.json @@ -1,6 +1,6 @@ { "name": "@jupyter-widgets/output", - "version": "2.0.1", + "version": "4.0.0-alpha.0", "description": "Jupyter widget wrapping cell output", "bugs": { "url": "https://github.com/jupyter-widgets/ipywidgets/issues" @@ -25,7 +25,7 @@ "test": "echo \"Error: no test specified\" && exit 1" }, "dependencies": { - "@jupyter-widgets/base": "^2.0.2" + "@jupyter-widgets/base": "^4.0.0-alpha.0" }, "devDependencies": { "rimraf": "^2.6.1", diff --git a/packages/schema/package.json b/packages/schema/package.json index b4ffabdd98f..d0aecddde88 100644 --- a/packages/schema/package.json +++ b/packages/schema/package.json @@ -1,6 +1,6 @@ { "name": "@jupyter-widgets/schema", - "version": "0.4.0", + "version": "0.5.0-alpha.0", "description": "Schemas for the Jupyter interactive Widgets", "main": "index.js", "scripts": { diff --git a/widgetsnbextension/package.json b/widgetsnbextension/package.json index 76ef11c746d..af6f770c460 100644 --- a/widgetsnbextension/package.json +++ b/widgetsnbextension/package.json @@ -1,6 +1,6 @@ { "name": "@jupyter-widgets/notebook-manager", - "version": "4.0.4", + "version": "6.0.0-alpha.0", "private": true, "description": "Jupyter Widgets nbextension", "homepage": "https://github.com/jupyter-widgets/ipywidgets#readme", @@ -21,11 +21,11 @@ "test": "echo \"Error: no test specified\" && exit 1" }, "dependencies": { - "@jupyter-widgets/base": "^2.0.2", - "@jupyter-widgets/base-manager": "^0.1.0", - "@jupyter-widgets/controls": "^1.5.3", - "@jupyter-widgets/html-manager": "^0.18.4", - "@jupyter-widgets/output": "^2.0.1", + "@jupyter-widgets/base": "^4.0.0-alpha.0", + "@jupyter-widgets/base-manager": "^1.0.0-alpha.0", + "@jupyter-widgets/controls": "^3.0.0-alpha.0", + "@jupyter-widgets/html-manager": "^0.20.0-alpha.0", + "@jupyter-widgets/output": "^4.0.0-alpha.0", "@jupyterlab/services": "^5.0.2", "@lumino/messaging": "^1.3.3", "@lumino/widgets": "^1.11.1", From 6fbe5cb7ab0cc997de5b468efaa7225cff1f340e Mon Sep 17 00:00:00 2001 From: Jason Grout Date: Tue, 10 Mar 2020 07:37:35 -0700 Subject: [PATCH 043/101] Make sure to publish with public access for the new package --- packages/base-manager/package.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/base-manager/package.json b/packages/base-manager/package.json index 4d9456ece84..dad2259aa63 100644 --- a/packages/base-manager/package.json +++ b/packages/base-manager/package.json @@ -64,5 +64,8 @@ "sinon-chai": "^3.3.0", "typescript": "~3.7.4", "webpack": "^4.41.5" + }, + "publishConfig": { + "access": "public" } } From 5dd36e6810ec8e2bc2880c7f4a2be19fbe8ec4a3 Mon Sep 17 00:00:00 2001 From: Jason Grout Date: Tue, 10 Mar 2020 08:10:27 -0700 Subject: [PATCH 044/101] ipywidgets 8.0.0a0 and widgetsnbextension 4.0.0a0 dist/ipywidgets-8.0.0a0-py3-none-any.whl md5: c67df5cd260a6a0b9d8e7e8066d51f01 sha1: 46705759a8eb4fe40113e0b4078e48bc6253d2e6 sha256: 9cb5590e583b8ea309a2d8e88fb02e44d054df2a77891f7d3356b0b883b99d3d dist/ipywidgets-8.0.0a0.tar.gz md5: 39fbc46deaa29982dd30122ab39b6b2c sha1: 4a1324f7603cc0b66e00f1e2644d6bdc5a19537b sha256: 87b30e4dfd68a7c4e3c6462eedb95ac7d1a776cc182f87168d960151151de31c widgetsnbextension/dist/widgetsnbextension-4.0.0a0-py3-none-any.whl md5: 14eda06f8c0ac387266be7f5f3f063e2 sha1: 0a18aea28f72547cdc76397c11c57157482a9734 sha256: cb6181b4037da02deeabab39d5cb1113a7390aee7468b1f8237c2abbd6df6107 widgetsnbextension/dist/widgetsnbextension-4.0.0a0.tar.gz md5: 79de983a9a0cc3983c1c0b0498aabb45 sha1: 32081e6dcc2d3cae4b0ba29e7416e481a7724745 sha256: fee3b6ec261393db5b4ec7c4fc96bf85c146cc6e5f38069c27d54fb7892bbb15 --- docs/source/dev_release.md | 4 ++-- ipywidgets/_version.py | 4 ++-- setup.cfg | 3 --- setup.py | 2 +- widgetsnbextension/setup.cfg | 3 --- widgetsnbextension/widgetsnbextension/_version.py | 2 +- 6 files changed, 6 insertions(+), 12 deletions(-) diff --git a/docs/source/dev_release.md b/docs/source/dev_release.md index cf260875fa2..a307ce6ea09 100644 --- a/docs/source/dev_release.md +++ b/docs/source/dev_release.md @@ -60,7 +60,7 @@ Lerna will prompt you for version numbers for each of the changed npm packages i Go into the `widgetsnbextension` directory. Change `widgetsnbextension/_version.py` to reflect the new version number. ``` python setup.py sdist -python setup.py bdist_wheel --universal +python setup.py bdist_wheel twine upload dist/* ``` @@ -75,7 +75,7 @@ Change `ipywidgets/_version.py` to reflect the new version number, and if necess ``` python setup.py sdist -python setup.py bdist_wheel --universal +python setup.py bdist_wheel twine upload dist/* ``` diff --git a/ipywidgets/_version.py b/ipywidgets/_version.py index ac6daa19880..c0b2c3f7a33 100644 --- a/ipywidgets/_version.py +++ b/ipywidgets/_version.py @@ -1,7 +1,7 @@ # Copyright (c) Jupyter Development Team. # Distributed under the terms of the Modified BSD License. -version_info = (7, 5, 1, 'final', 0) +version_info = (8, 0, 0, 'alpha', 0) _specifier_ = {'alpha': 'a', 'beta': 'b', 'candidate': 'rc', 'final': ''} @@ -14,4 +14,4 @@ __jupyter_widgets_controls_version__ = '2.0.0' # A compatible @jupyter-widgets/html-manager npm package semver range -__html_manager_version__ = '^0.18.0' +__html_manager_version__ = '^0.20.0-alpha.0' diff --git a/setup.cfg b/setup.cfg index 5c6311daf8f..0c9e0fc1447 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,5 +1,2 @@ -[bdist_wheel] -universal=1 - [metadata] license_file = LICENSE diff --git a/setup.py b/setup.py index c1ee5b6273c..5898e7b816e 100644 --- a/setup.py +++ b/setup.py @@ -117,7 +117,7 @@ # only if notebook 4.x is installed in this # interpreter, to allow ipywidgets to be # installed on bare kernels. - 'widgetsnbextension~=3.5.0', + 'widgetsnbextension~=4.0a0', ] extras_require = setuptools_args['extras_require'] = { diff --git a/widgetsnbextension/setup.cfg b/widgetsnbextension/setup.cfg index 5c6311daf8f..0c9e0fc1447 100644 --- a/widgetsnbextension/setup.cfg +++ b/widgetsnbextension/setup.cfg @@ -1,5 +1,2 @@ -[bdist_wheel] -universal=1 - [metadata] license_file = LICENSE diff --git a/widgetsnbextension/widgetsnbextension/_version.py b/widgetsnbextension/widgetsnbextension/_version.py index e8c36227add..d622e8b7cc2 100644 --- a/widgetsnbextension/widgetsnbextension/_version.py +++ b/widgetsnbextension/widgetsnbextension/_version.py @@ -1,4 +1,4 @@ -version_info = (3, 5, 1, 'final', 0) +version_info = (4, 0, 0, 'alpha', 0) _specifier_ = {'alpha': 'a', 'beta': 'b', 'candidate': 'rc', 'final': ''} From c0c7ceaf49e9f4b9d3d31279f712d0e644779aca Mon Sep 17 00:00:00 2001 From: Jason Grout Date: Wed, 11 Mar 2020 05:19:42 -0700 Subject: [PATCH 045/101] Update GitHub action checkout to v2 for better performance --- .github/workflows/lint.yml | 2 +- .github/workflows/tests.yml | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index b8698ecfd8e..66548203767 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -8,7 +8,7 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v1 + - uses: actions/checkout@v2 - name: Use Node.js 10.x uses: actions/setup-node@v1 with: diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index f6b748693fa..fa92b5382b4 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -7,7 +7,7 @@ jobs: name: Documentation runs-on: ubuntu-latest steps: - - uses: actions/checkout@v1 + - uses: actions/checkout@v2 - name: Set up Python uses: actions/setup-python@v1 with: @@ -33,7 +33,7 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v1 + - uses: actions/checkout@v2 - name: Use Node.js 10.x uses: actions/setup-node@v1 with: @@ -87,7 +87,7 @@ jobs: python-version: [3.5, 3.6, 3.7, 3.8] steps: - - uses: actions/checkout@v1 + - uses: actions/checkout@v2 - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v1 with: @@ -110,7 +110,7 @@ jobs: name: Message Specification runs-on: ubuntu-latest steps: - - uses: actions/checkout@v1 + - uses: actions/checkout@v2 - name: Set up Python uses: actions/setup-python@v1 with: From 73338855c64849c6d1da48d9ccee26f240eff329 Mon Sep 17 00:00:00 2001 From: Jason Grout Date: Wed, 11 Mar 2020 22:24:20 -0700 Subject: [PATCH 046/101] Fix options initialization logic for selection widgets --- ipywidgets/widgets/widget_selection.py | 1 + 1 file changed, 1 insertion(+) diff --git a/ipywidgets/widgets/widget_selection.py b/ipywidgets/widgets/widget_selection.py index d9b2ee2ad4d..0304ffd355f 100644 --- a/ipywidgets/widgets/widget_selection.py +++ b/ipywidgets/widgets/widget_selection.py @@ -166,6 +166,7 @@ def __init__(self, *args, **kwargs): # Select the first item by default, if we can if 'index' not in kwargs and 'value' not in kwargs and 'label' not in kwargs: + options = self._options_full nonempty = (len(options) > 0) kwargs['index'] = 0 if nonempty else None kwargs['label'], kwargs['value'] = options[0] if nonempty else (None, None) From bc7566f04bf2efb6dab36a3866468d39f72d7fe1 Mon Sep 17 00:00:00 2001 From: Jason Grout Date: Tue, 25 Feb 2020 11:13:48 -0800 Subject: [PATCH 047/101] Change fontawesome support to work for fontawesome 4 and 5. JupyterLab and notebook are upgrading to fontawesome 5 (with the v4 backwards compatibility shim). However, in some places, our CSS is very specific to version 4. This commit modifies these places to use syntax that should for both fontawesome 4 and 5. It involves some DOM structure changes, but that is a private implementation detail, so is backwards compatible with our public API. This is a forward-port of https://github.com/jupyter-widgets/ipywidgets/pull/2793 and 5941cba85fb0959572d59af5301b34d89e18e653 Fixes #2794 --- packages/controls/css/widgets-base.css | 26 ++--------------------- packages/controls/src/lumino/accordion.ts | 14 +++++++++++- packages/controls/src/widget_bool.ts | 14 ++++++++---- 3 files changed, 25 insertions(+), 29 deletions(-) diff --git a/packages/controls/css/widgets-base.css b/packages/controls/css/widgets-base.css index 6c4843d7b66..181f0064c06 100644 --- a/packages/controls/css/widgets-base.css +++ b/packages/controls/css/widgets-base.css @@ -395,23 +395,13 @@ line-height: var(--jp-widgets-inline-height); margin-right: var(--jp-widgets-inline-margin); margin-left: var(--jp-widgets-inline-margin); - - /* from the fa class in FontAwesome: https://github.com/FortAwesome/Font-Awesome/blob/49100c7c3a7b58d50baa71efef11af41a66b03d3/css/font-awesome.css#L14 */ - display: inline-block; - font: normal normal normal 14px/1 FontAwesome; - font-size: inherit; - text-rendering: auto; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; } .widget-valid.mod-valid i:before { - content: '\f00c'; color: green; } .widget-valid.mod-invalid i:before { - content: '\f00d'; color: red; } @@ -953,6 +943,8 @@ margin-left: 4px; } +/* This font-awesome strategy may not work across FA4 and FA5, but we don't +actually support closable tabs, so it really doesn't matter */ .jupyter-widgets.widget-tab > .p-TabBar .p-mod-closable @@ -998,20 +990,6 @@ border-bottom: none; } -.p-Collapse .p-Collapse-header::before { - content: '\f0da\00A0'; /* caret-right, non-breaking space */ - display: inline-block; - font: normal normal normal 14px/1 FontAwesome; - font-size: inherit; - text-rendering: auto; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -.p-Collapse-open > .p-Collapse-header::before { - content: '\f0d7\00A0'; /* caret-down, non-breaking space */ -} - .p-Collapse-contents { padding: var(--jp-widgets-container-padding); background-color: var(--jp-layout-color1); diff --git a/packages/controls/src/lumino/accordion.ts b/packages/controls/src/lumino/accordion.ts index 472a6c290d1..8875d84a1f1 100644 --- a/packages/controls/src/lumino/accordion.ts +++ b/packages/controls/src/lumino/accordion.ts @@ -40,6 +40,13 @@ export class Collapse extends Widget { this._header = new Widget(); this._header.addClass(COLLAPSE_HEADER_CLASS); this._header.node.addEventListener('click', this); + // Fontawesome icon for caret + const icon = document.createElement('i'); + icon.classList.add('fa', 'fa-fw', 'fa-caret-right'); + this._header.node.appendChild(icon); + // Label content + this._header.node.appendChild(document.createElement('span')); + this._content = new Panel(); this._content.addClass(COLLAPSE_CONTENTS_CLASS); @@ -111,14 +118,19 @@ export class Collapse extends Widget { this._content.hide(); } this.removeClass(COLLAPSE_CLASS_OPEN); + this._header.node.children[0].classList.add('fa-caret-right'); + this._header.node.children[0].classList.remove('fa-caret-down'); this._collapseChanged.emit(void 0); } + private _uncollapse(): void { this._collapsed = false; if (this._content) { this._content.show(); } this.addClass(COLLAPSE_CLASS_OPEN); + this._header.node.children[0].classList.add('fa-caret-down'); + this._header.node.children[0].classList.remove('fa-caret-right'); this._collapseChanged.emit(void 0); } @@ -150,7 +162,7 @@ export class Collapse extends Widget { * Handle the `changed` signal of a title object. */ private _onTitleChanged(sender: Title): void { - this._header.node.textContent = this._widget.title.label; + this._header.node.children[1].textContent = this._widget.title.label; } private _onChildDisposed(sender: Widget): void { diff --git a/packages/controls/src/widget_bool.ts b/packages/controls/src/widget_bool.ts index 4209832969f..f65748e2826 100644 --- a/packages/controls/src/widget_bool.ts +++ b/packages/controls/src/widget_bool.ts @@ -301,13 +301,14 @@ export class ValidView extends DescriptionView { /** * Called when view is rendered. */ - render(): void { + render() { super.render(); this.el.classList.add('jupyter-widgets'); this.el.classList.add('widget-valid'); this.el.classList.add('widget-inline-hbox'); - const icon = document.createElement('i'); - this.el.appendChild(icon); + this.icon = document.createElement('i'); + this.icon.classList.add('fa', 'fa-fw'); + this.el.appendChild(this.icon); this.readout = document.createElement('span'); this.readout.classList.add('widget-valid-readout'); this.readout.classList.add('widget-readout'); @@ -321,15 +322,20 @@ export class ValidView extends DescriptionView { * Called when the model is changed. The model may have been * changed by another view or by a state update from the back-end. */ - update(): void { + update() { this.el.classList.remove('mod-valid'); this.el.classList.remove('mod-invalid'); + this.icon.classList.remove('fa-check'); + this.icon.classList.remove('fa-times'); this.readout.textContent = this.model.get('readout'); if (this.model.get('value')) { this.el.classList.add('mod-valid'); + this.icon.classList.add('fa-check'); } else { this.el.classList.add('mod-invalid'); + this.icon.classList.add('fa-times'); } } readout: HTMLSpanElement; + icon: HTMLElement; } From 32fbc3615f54d29cc90b60ac50a171b73d533dc1 Mon Sep 17 00:00:00 2001 From: Jason Grout Date: Mon, 16 Mar 2020 21:44:05 -0700 Subject: [PATCH 048/101] add function return types --- packages/controls/src/widget_bool.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/controls/src/widget_bool.ts b/packages/controls/src/widget_bool.ts index f65748e2826..52a906da9a2 100644 --- a/packages/controls/src/widget_bool.ts +++ b/packages/controls/src/widget_bool.ts @@ -301,7 +301,7 @@ export class ValidView extends DescriptionView { /** * Called when view is rendered. */ - render() { + render(): void { super.render(); this.el.classList.add('jupyter-widgets'); this.el.classList.add('widget-valid'); @@ -322,7 +322,7 @@ export class ValidView extends DescriptionView { * Called when the model is changed. The model may have been * changed by another view or by a state update from the back-end. */ - update() { + update(): void { this.el.classList.remove('mod-valid'); this.el.classList.remove('mod-invalid'); this.icon.classList.remove('fa-check'); From cab25ca612f5335a1eb15df38aeaa7e563c46f64 Mon Sep 17 00:00:00 2001 From: Vidar Tonaas Fauske Date: Tue, 17 Mar 2020 12:25:57 +0000 Subject: [PATCH 049/101] Remove use of traitlets.Bunch --- ipywidgets/widgets/widget_selection.py | 27 +++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/ipywidgets/widgets/widget_selection.py b/ipywidgets/widgets/widget_selection.py index 0304ffd355f..31987ad667f 100644 --- a/ipywidgets/widgets/widget_selection.py +++ b/ipywidgets/widgets/widget_selection.py @@ -16,7 +16,7 @@ from .trait_types import InstanceDict, TypedTuple from .widget import register, widget_serialization from .docutils import doc_subst -from traitlets import (Unicode, Bool, Bunch, Int, Any, Dict, TraitError, CaselessStrEnum, +from traitlets import (Unicode, Bool, Int, Any, Dict, TraitError, CaselessStrEnum, Tuple, Union, observe, validate) _doc_snippets = {} @@ -94,6 +94,13 @@ """ +def _exhaust_iterable(x): + """Exhaust any non-mapping iterable into a tuple""" + if isinstance(x, Iterable) and not isinstance(x, Mapping): + return tuple(x) + return x + + def _make_options(x): """Standardize the options tuple format. @@ -161,7 +168,8 @@ def __init__(self, *args, **kwargs): # We have to make the basic options bookkeeping consistent # so we don't have errors the first time validators run self._initializing_traits_ = True - kwargs['options'] = self._validate_options(Bunch(value = kwargs.get('options', ()))) + kwargs['options'] = _exhaust_iterable(kwargs.get('options', ())) + self._options_full = _make_options(kwargs['options']) self._propagate_options(None) # Select the first item by default, if we can @@ -177,8 +185,7 @@ def __init__(self, *args, **kwargs): @validate('options') def _validate_options(self, proposal): # if an iterator is provided, exhaust it - if isinstance(proposal.value, Iterable) and not isinstance(proposal.value, Mapping): - proposal.value = tuple(proposal.value) + proposal.value = _exhaust_iterable(proposal.value) # throws an error if there is a problem converting to full form self._options_full = _make_options(proposal.value) return proposal.value @@ -302,7 +309,8 @@ def __init__(self, *args, **kwargs): # We have to make the basic options bookkeeping consistent # so we don't have errors the first time validators run self._initializing_traits_ = True - kwargs['options'] = self._validate_options(Bunch(value = kwargs.get('options', ()))) + kwargs['options'] = _exhaust_iterable(kwargs.get('options', ())) + self._options_full = _make_options(kwargs['options']) self._propagate_options(None) super().__init__(*args, **kwargs) @@ -310,8 +318,7 @@ def __init__(self, *args, **kwargs): @validate('options') def _validate_options(self, proposal): - if isinstance(proposal.value, Iterable) and not isinstance(proposal.value, Mapping): - proposal.value = tuple(proposal.value) + proposal.value = _exhaust_iterable(proposal.value) # throws an error if there is a problem converting to full form self._options_full = _make_options(proposal.value) return proposal.value @@ -513,8 +520,7 @@ def __init__(self, *args, **kwargs): @validate('options') def _validate_options(self, proposal): - if isinstance(proposal.value, Iterable) and not isinstance(proposal.value, Mapping): - proposal.value = tuple(proposal.value) + proposal.value = _exhaust_iterable(proposal.value) self._options_full = _make_options(proposal.value) if len(self._options_full) == 0: raise TraitError("Option list must be nonempty") @@ -537,8 +543,7 @@ def __init__(self, *args, **kwargs): @validate('options') def _validate_options(self, proposal): - if isinstance(proposal.value, Iterable) and not isinstance(proposal.value, Mapping): - proposal.value = tuple(proposal.value) + proposal.value = _exhaust_iterable(proposal.value) # throws an error if there is a problem converting to full form self._options_full = _make_options(proposal.value) if len(self._options_full) == 0: From fd1323f0d685ed429e4c9323ac42902104692a23 Mon Sep 17 00:00:00 2001 From: Jason Grout Date: Tue, 17 Mar 2020 09:33:48 -0700 Subject: [PATCH 050/101] Move valid widget css to i element. While it could work with the :before, the fontawesome examples use the i. --- packages/controls/css/widgets-base.css | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/controls/css/widgets-base.css b/packages/controls/css/widgets-base.css index 181f0064c06..b7990894f49 100644 --- a/packages/controls/css/widgets-base.css +++ b/packages/controls/css/widgets-base.css @@ -391,17 +391,17 @@ font-size: var(--jp-widgets-font-size); } -.widget-valid i:before { +.widget-valid i { line-height: var(--jp-widgets-inline-height); margin-right: var(--jp-widgets-inline-margin); margin-left: var(--jp-widgets-inline-margin); } -.widget-valid.mod-valid i:before { +.widget-valid.mod-valid i { color: green; } -.widget-valid.mod-invalid i:before { +.widget-valid.mod-invalid i { color: red; } From a99b8f14639dd3ea40b61d7290ce5cffd2eb3188 Mon Sep 17 00:00:00 2001 From: umerhasan17 Date: Wed, 18 Mar 2020 01:26:58 +0000 Subject: [PATCH 051/101] Edits to documentation to fix spelling & grammar --- docs/source/embedding.md | 4 ++-- docs/source/examples/Layout Example.ipynb | 2 +- docs/source/examples/Widget Low Level.ipynb | 18 +++++++++--------- docs/source/migration_guides.md | 2 +- 4 files changed, 13 insertions(+), 13 deletions(-) diff --git a/docs/source/embedding.md b/docs/source/embedding.md index f7e9d5c7177..7685f547f76 100644 --- a/docs/source/embedding.md +++ b/docs/source/embedding.md @@ -51,7 +51,7 @@ This HTML snippet is composed of multiple `