diff --git a/jupyter-js-widgets/package.json b/jupyter-js-widgets/package.json index 5dc9bea0e00..1b8613a8775 100644 --- a/jupyter-js-widgets/package.json +++ b/jupyter-js-widgets/package.json @@ -96,7 +96,7 @@ "font-awesome": "^4.5.0", "jquery": "^3.1.1", "jquery-ui": "^1.12.1", - "jupyter-widgets-schema": "^0.1.1", + "jupyter-widgets-schema": "^0.2.0", "lolex": "^1.4.0", "scriptjs": "^2.5.8", "semver": "^5.1.0", diff --git a/jupyter-js-widgets/src-embed/embed-webpack.ts b/jupyter-js-widgets/src-embed/embed-webpack.ts index ce5f4416e9d..e2a3b2c3f5d 100644 --- a/jupyter-js-widgets/src-embed/embed-webpack.ts +++ b/jupyter-js-widgets/src-embed/embed-webpack.ts @@ -19,8 +19,8 @@ require('../css/widgets.css'); // Load json schema validator var Ajv = require('ajv'); -var widget_state_schema = require('jupyter-widgets-schema').v1.state; -var widget_view_schema = require('jupyter-widgets-schema').v1.view; +var widget_state_schema = require('jupyter-widgets-schema').v2.state; +var widget_view_schema = require('jupyter-widgets-schema').v2.view; // Magic global widget rendering function: import * as widgets from '../../jupyter-js-widgets/lib/index'; diff --git a/jupyter-widgets-schema/package.json b/jupyter-widgets-schema/package.json index 9a47ac1bd01..55c749b1399 100644 --- a/jupyter-widgets-schema/package.json +++ b/jupyter-widgets-schema/package.json @@ -1,6 +1,6 @@ { "name": "jupyter-widgets-schema", - "version": "0.1.1", + "version": "0.2.0", "description": "Schemas for the Jupyter interactive Widgets", "main": "index.js", "scripts": { diff --git a/jupyter-widgets-schema/v2/state.schema.json b/jupyter-widgets-schema/v2/state.schema.json new file mode 100644 index 00000000000..97913289842 --- /dev/null +++ b/jupyter-widgets-schema/v2/state.schema.json @@ -0,0 +1,64 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "description": "Jupyter Interactive Widget State JSON schema.", + "type": "object", + "properties" : { + "version_major" : { + "description": "Format version (major)", + "type": "number", + "minimum": 2, + "maximum": 2 + }, + "version_minor" : { + "description": "Format version (minor)", + "type": "number" + }, + "state": { + "description": "Model State for All Widget Models", + "type": "object", + "additionalProperties" : { + "type": "object", + "properties": { + "model_name": { + "description" : "Name of the JavaScript class holding the model implementation", + "type": "string" + }, + "model_module": { + "description" : "Name of the JavaScript module holding the model implementation", + "type": "string" + }, + "model_module_version": { + "description" : "Semver range for the JavaScript module holding the model implementation", + "type": "string" + }, + "state": { + "description" : "Serialized state of the model", + "type": "object" + }, + "buffer_paths": { + "description" : "Array of paths in the state for the corresponding buffers", + "type": "array", + "items": { + "description": "A path for a binary buffer value.", + "type": "array", + "items": { + "description": "An object key or array index", + "anyOf": [{"type": "string"}, {"type": "number"}] + } + } + }, + "buffers": { + "description" : "Array of base64-encoded binary buffers", + "type": "array", + "items": { + "description": "A base64-encoded binary buffer", + "type": "string" + } + } + }, + "required": [ "model_name", "model_module", "state" ] + } + } + }, + "required": [ "version_major", "version_minor", "state" ] +} diff --git a/jupyter-widgets-schema/v2/view.schema.json b/jupyter-widgets-schema/v2/view.schema.json new file mode 100644 index 00000000000..66ae9222961 --- /dev/null +++ b/jupyter-widgets-schema/v2/view.schema.json @@ -0,0 +1,22 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "description": "Jupyter Interactive Widget View JSON schema.", + "type": "object", + "properties" : { + "version_major" : { + "description": "Format version (major)", + "type": "number", + "minimum": 2, + "maximum": 2 + }, + "version_minor" : { + "description": "Format version (minor)", + "type": "number" + }, + "model_id": { + "description": "Unique identifier of the widget model to be displayed", + "type": "string" + } + }, + "required": [ "model_id" ] +} diff --git a/widgetsnbextension/src/embed_widgets.js b/widgetsnbextension/src/embed_widgets.js index 1ea2a71dbca..b887afa37d0 100644 --- a/widgetsnbextension/src/embed_widgets.js +++ b/widgetsnbextension/src/embed_widgets.js @@ -13,7 +13,7 @@ var embed_widgets = function() { 'drop_defaults': true }).then(function(state) { var data = JSON.stringify({ - version_major: 1, + version_major: 2, version_minor: 0, state: state }, null, ' '); diff --git a/widgetsnbextension/src/manager.js b/widgetsnbextension/src/manager.js index 402ef749363..ed34b6d0336 100644 --- a/widgetsnbextension/src/manager.js +++ b/widgetsnbextension/src/manager.js @@ -164,7 +164,7 @@ WidgetManager.prototype._init_actions = function() { }).then(function(state) { Jupyter.notebook.metadata.widgets = { 'application/vnd.jupyter.widget-state+json' : { - version_major: 1, + version_major: 2, version_minor: 0, state: state }