From b827888675c6d6b758036ea98a032a6c0956a2d3 Mon Sep 17 00:00:00 2001 From: blois Date: Thu, 2 Sep 2021 16:07:23 -0700 Subject: [PATCH] Add prettier and format all files. (#3) Adds a `fix` command and includes prettier in the `test` command. --- .eslintrc.js | 11 +- .prettierignore | 3 + .prettierrc.json | 4 + CONTRIBUTING.md | 2 +- README.md | 16 +- build.js | 2 +- jest.config.js | 4 +- karma.conf.js | 38 +- package-lock.json | 111 + package.json | 6 +- src/amd.spec.ts | 18 +- src/amd.ts | 59 +- src/api.ts | 15 +- src/index.css | 2 +- src/index.ts | 16 +- src/manager.ts | 113 +- src/swizzle.spec.ts | 23 +- src/swizzle.ts | 12 +- src/typings.d.ts | 2 +- test/index.html | 37 +- test/jupyter_threejs_state.json | 211 +- test/leaflet_state.json | 3650 +++++++++++++++---------------- test/manager.spec.js | 69 +- test/server/server.ts | 43 +- test/server/tsconfig.json | 24 +- tsconfig.json | 29 +- 26 files changed, 2308 insertions(+), 2212 deletions(-) create mode 100644 .prettierignore create mode 100644 .prettierrc.json diff --git a/.eslintrc.js b/.eslintrc.js index ddd0045..dcafe16 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -18,11 +18,6 @@ module.exports = { root: true, parser: '@typescript-eslint/parser', - plugins: [ - '@typescript-eslint', - ], - extends: [ - 'eslint:recommended', - 'plugin:@typescript-eslint/recommended', - ], -}; \ No newline at end of file + plugins: ['@typescript-eslint'], + extends: ['eslint:recommended', 'plugin:@typescript-eslint/recommended'], +}; diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..0f6d69f --- /dev/null +++ b/.prettierignore @@ -0,0 +1,3 @@ +node_modules/ +dist/ +lib/ \ No newline at end of file diff --git a/.prettierrc.json b/.prettierrc.json new file mode 100644 index 0000000..7f5dba4 --- /dev/null +++ b/.prettierrc.json @@ -0,0 +1,4 @@ +{ + "bracketSpacing": false, + "singleQuote": true +} diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 9d7656b..e5c3b28 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -26,4 +26,4 @@ information on using pull requests. ## Community Guidelines This project follows -[Google's Open Source Community Guidelines](https://opensource.google/conduct/). \ No newline at end of file +[Google's Open Source Community Guidelines](https://opensource.google/conduct/). diff --git a/README.md b/README.md index eb208a1..1a92859 100644 --- a/README.md +++ b/README.md @@ -6,14 +6,13 @@ implementation to allow users to arbitrary widgets from arbitrary sources. This project includes an implementation of a widget manager which loads widgets from a CDN. - ## Pluggable Widget Manager API + Colab frontend should expose an API for users to specify what widget manager they would like to use. The API should be as minimal as possible and avoid being tied to specific Jupyter Widgers versions. The notebook author should have the flexibility to determine the Jupyter Widgets version they would like to use. Later viewers of the notebook will see the widgets rendered with the same Jupyter Widgets version as the original author. - #### API Proposal Expose a global method for registering a custom widget manager: @@ -24,13 +23,14 @@ google.colab.widgets.installCustomManager(url: string, args: any): void This API can be invoked at any point by Javascript outputs to change the widget manager for all subsequent outputs. This API can be wrapped in a Python API to make it easier to invoke from a kernel. - The URL must resolve to an ES6 module exporting the WidgetManagerModule interface: ```typescript interface WidgetManagerModule { - createWidgetManager(state: WidgetEnvironment, arguments?: unknown): - IWidgetManager; + createWidgetManager( + state: WidgetEnvironment, + arguments?: unknown + ): IWidgetManager; } interface IWidgetManager { @@ -40,14 +40,14 @@ interface IWidgetManager { After a custom widget manager has been registered and a Jupyter Widget is being rendered to the outputs then the custom widget manager module will be loaded, the widget manager will be created and all widgets within that window will be created with that manager. - Once a custom widget manager has been registered then a manager will be instantiated when any widgets need to be rendered in the notebook. -The full API details are included in Colab's [outputframe declaration file](https://github.com/googlecolab/colabtools/blob/07b38dfa2869780ff2128cf7c1ad4414d1b4109c/packages/outputframe/lib/index.d.ts#L154-L210). +The full API details are included in Colab's [outputframe declaration file](https://github.com/googlecolab/colabtools/blob/07b38dfa2869780ff2128cf7c1ad4414d1b4109c/packages/outputframe/lib/index.d.ts#L154-L210). # Development Install and run the development server: + ```shell npm install npm run server @@ -78,7 +78,9 @@ npm run tests ``` Alternatively functional tests can be executed and debugged with: + ``` npm run test:karma:dev ``` + Then navigate to http://localhost:9876/. diff --git a/build.js b/build.js index 9c5c5d2..6295db8 100644 --- a/build.js +++ b/build.js @@ -36,4 +36,4 @@ const esbuild = require('esbuild'); format: 'esm', minify: true, }); -})(); \ No newline at end of file +})(); diff --git a/jest.config.js b/jest.config.js index 075529f..01094b1 100644 --- a/jest.config.js +++ b/jest.config.js @@ -18,9 +18,9 @@ module.exports = { roots: ['./src'], transform: { - "^.+\\.tsx?$": "esbuild-jest", + '^.+\\.tsx?$': 'esbuild-jest', }, testRegex: '(/__tests__/.*|(\\.|/)(test|spec))\\.tsx?$', moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'], testEnvironment: 'jsdom', -} \ No newline at end of file +}; diff --git a/karma.conf.js b/karma.conf.js index a7116cc..3d42c52 100644 --- a/karma.conf.js +++ b/karma.conf.js @@ -15,72 +15,62 @@ * limitations under the License. */ -module.exports = function(config) { +module.exports = function (config) { config.set({ - // base path that will be used to resolve all patterns (eg. files, exclude) basePath: '', - // frameworks to use // available frameworks: https://www.npmjs.com/search?q=keywords:karma-adapter frameworks: ['jasmine'], - // list of files / patterns to load in the browser files: [ - {pattern: "dist/manager.dev.js", included: false, served: true, type: "module"}, - {pattern: "test/**/*.js", type: "module", included: true}, - {pattern: "test/**/*.json", included: false, served: true}, + { + pattern: 'dist/manager.dev.js', + included: false, + served: true, + type: 'module', + }, + {pattern: 'test/**/*.js', type: 'module', included: true}, + {pattern: 'test/**/*.json', included: false, served: true}, ], - // list of files / patterns to exclude - exclude: [ - 'test/server/**', - ], - + exclude: ['test/server/**'], // preprocess matching files before serving them to the browser // available preprocessors: https://www.npmjs.com/search?q=keywords:karma-preprocessor - preprocessors: { - }, - + preprocessors: {}, // test results reporter to use // possible values: 'dots', 'progress' // available reporters: https://www.npmjs.com/search?q=keywords:karma-reporter reporters: ['dots', 'progress', 'kjhtml'], - // web server port port: 9876, - // enable / disable colors in the output (reporters and logs) colors: true, - // level of logging // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG logLevel: config.LOG_INFO, - // enable / disable watching file and executing tests whenever any file changes autoWatch: true, - // start these browsers // available browser launchers: https://www.npmjs.com/search?q=keywords:karma-launcher browsers: ['ChromeHeadless'], - // Continuous Integration mode // if true, Karma captures browsers, runs the tests and exits singleRun: false, // Concurrency level // how many browser instances should be started simultaneously - concurrency: Infinity - }) -} + concurrency: Infinity, + }); +}; diff --git a/package-lock.json b/package-lock.json index 61adf8a..12d9e1c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1844,6 +1844,105 @@ "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", "dev": true }, + "@trivago/prettier-plugin-sort-imports": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@trivago/prettier-plugin-sort-imports/-/prettier-plugin-sort-imports-2.0.4.tgz", + "integrity": "sha512-SCVUhQdbjn/Z4AY7b9JO00fZCeXxiVuarVxYP0n6cX2ijiQkE5HmGrOk32n0u385OebzQ9bZcrc51lAGLjXnFQ==", + "dev": true, + "requires": { + "@babel/core": "7.13.10", + "@babel/generator": "7.13.9", + "@babel/parser": "7.13.10", + "@babel/traverse": "7.13.0", + "@babel/types": "7.13.0", + "@types/lodash": "4.14.168", + "javascript-natural-sort": "0.7.1", + "lodash": "4.17.21" + }, + "dependencies": { + "@babel/core": { + "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.13.10.tgz", + "integrity": "sha512-bfIYcT0BdKeAZrovpMqX2Mx5NrgAckGbwT982AkdS5GNfn3KMGiprlBAtmBcFZRUmpaufS6WZFP8trvx8ptFDw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.12.13", + "@babel/generator": "^7.13.9", + "@babel/helper-compilation-targets": "^7.13.10", + "@babel/helper-module-transforms": "^7.13.0", + "@babel/helpers": "^7.13.10", + "@babel/parser": "^7.13.10", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.1.2", + "lodash": "^4.17.19", + "semver": "^6.3.0", + "source-map": "^0.5.0" + } + }, + "@babel/generator": { + "version": "7.13.9", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.13.9.tgz", + "integrity": "sha512-mHOOmY0Axl/JCTkxTU6Lf5sWOg/v8nUa+Xkt4zMTftX0wqmb6Sh7J8gvcehBw7q0AhrhAR+FDacKjCZ2X8K+Sw==", + "dev": true, + "requires": { + "@babel/types": "^7.13.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/parser": { + "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.13.10.tgz", + "integrity": "sha512-0s7Mlrw9uTWkYua7xWr99Wpk2bnGa0ANleKfksYAES8LpWH4gW1OUr42vqKNf0us5UQNfru2wPqMqRITzq/SIQ==", + "dev": true + }, + "@babel/traverse": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.13.0.tgz", + "integrity": "sha512-xys5xi5JEhzC3RzEmSGrs/b3pJW/o87SypZ+G/PhaE7uqVQNv/jlmVIBXuoh5atqQ434LfXV+sf23Oxj0bchJQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.12.13", + "@babel/generator": "^7.13.0", + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/parser": "^7.13.0", + "@babel/types": "^7.13.0", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.19" + } + }, + "@babel/types": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.0.tgz", + "integrity": "sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.12.11", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, "@types/babel__core": { "version": "7.1.15", "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.15.tgz", @@ -5703,6 +5802,12 @@ "integrity": "sha512-zl0nZWDrmbCiKns0NcjkFGYkVTGCPUgoHypTaj+G2AzaWus7QGoXARSlYsSle2VRpSdfJmM+hzmFKzQNhF2kHg==", "dev": true }, + "javascript-natural-sort": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/javascript-natural-sort/-/javascript-natural-sort-0.7.1.tgz", + "integrity": "sha1-+eIwPUUH9tdDVac2ZNFED7Wg71k=", + "dev": true + }, "jest": { "version": "27.0.6", "resolved": "https://registry.npmjs.org/jest/-/jest-27.0.6.tgz", @@ -9428,6 +9533,12 @@ "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", "dev": true }, + "prettier": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.3.2.tgz", + "integrity": "sha512-lnJzDfJ66zkMy58OL5/NY5zp70S7Nz6KqcKkXYzn2tMVrNxvbqaBpg7H3qHaLxCJ5lNMsGuM8+ohS7cZrthdLQ==", + "dev": true + }, "pretty-format": { "version": "26.6.2", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", diff --git a/package.json b/package.json index 078c64b..f524e99 100644 --- a/package.json +++ b/package.json @@ -12,18 +12,21 @@ "clean": "rimraf dist && rimraf lib", "compile:test": "tsc -p test/server", "compile": "tsc", + "fix": "npx prettier --write .", "lint": "node node_modules/eslint/bin/eslint.js src --ext .js,.jsx,.ts,.tsx", "prepare": "npm run clean && npm run build", "server": "npm run compile:test && node test/server/lib/server.js", "test:jest": "node node_modules/.bin/jest", "test:karma:dev": "./node_modules/karma/bin/karma start karma.conf.js", "test:karma": "npm run build && ./node_modules/karma/bin/karma start karma.conf.js --single-run", - "test": "npm run test:jest && npm run test:karma" + "test:prettier": "npx prettier --check .", + "test": "npm run test:jest && npm run test:karma && npm run test:prettier" }, "devDependencies": { "@jupyter-widgets/base": "^5.0.0-alpha.3", "@jupyter-widgets/base-manager": "1.0.0-alpha.2", "@jupyter-widgets/controls": "^4.0.0-alpha.3", + "@trivago/prettier-plugin-sort-imports": "^2.0.4", "@types/jest": "^26.0.24", "@types/mocha": "^9.0.0", "@types/node": "^14.14.10", @@ -43,6 +46,7 @@ "karma-jasmine-html-reporter": "^1.7.0", "karma-typescript": "^5.5.1", "mocha": "^9.0.3", + "prettier": "^2.3.2", "rimraf": "^2.6.1", "ts-jest": "^27.0.4", "tslint": "^5.8.0", diff --git a/src/amd.spec.ts b/src/amd.spec.ts index 338c917..8159552 100644 --- a/src/amd.spec.ts +++ b/src/amd.spec.ts @@ -14,14 +14,20 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - -import { expect } from '@jest/globals'; import {Loader} from './amd'; +import {expect} from '@jest/globals'; test('getHostedModuleUrl', () => { const loader = new Loader(); expect(loader.resolveModule('foo').pathname).toBe('/npm/foo@*/dist/index.js'); - expect(loader.resolveModule('@jupyter-widgets/base').pathname).toBe('/npm/@jupyter-widgets/base@*/dist/index.js'); - expect(loader.resolveModule('@jupyter-widgets/base', '4.0.0').pathname).toBe('/npm/@jupyter-widgets/base@4.0.0/dist/index.js'); - expect(loader.resolveModule('@jupyter-widgets/base/css/index.css', '4.0.0').pathname).toBe('/npm/@jupyter-widgets/base@4.0.0/css/index.css'); -}); \ No newline at end of file + expect(loader.resolveModule('@jupyter-widgets/base').pathname).toBe( + '/npm/@jupyter-widgets/base@*/dist/index.js' + ); + expect(loader.resolveModule('@jupyter-widgets/base', '4.0.0').pathname).toBe( + '/npm/@jupyter-widgets/base@4.0.0/dist/index.js' + ); + expect( + loader.resolveModule('@jupyter-widgets/base/css/index.css', '4.0.0') + .pathname + ).toBe('/npm/@jupyter-widgets/base@4.0.0/css/index.css'); +}); diff --git a/src/amd.ts b/src/amd.ts index 1dc9b89..440254d 100644 --- a/src/amd.ts +++ b/src/amd.ts @@ -35,13 +35,20 @@ export class Loader { const url = this.resolveModule(moduleName, moduleVersion); const script = await (await fetch(url.toString())).text(); const fn = new Function('define', script); - let module: Module|undefined; - const define = (first: string|string[], second: string[]|(()=>unknown)|unknown, third?: (()=>unknown)|unknown) => { + let module: Module | undefined; + const define = ( + first: string | string[], + second: string[] | (() => unknown) | unknown, + third?: (() => unknown) | unknown + ) => { if (typeof first === 'string') { module = this.define(first, second as string[], third); - } - else { - module = this.define(moduleName, first as string[], second as (()=>unknown)|unknown); + } else { + module = this.define( + moduleName, + first as string[], + second as (() => unknown) | unknown + ); } }; fn.call({define}, define); @@ -50,9 +57,11 @@ export class Loader { }); // Serialize script loading to keep only one module loading at a time. /* eslint @typescript-eslint/no-empty-function: "off" */ - this.loadQueue = loaded.then(() => {}).catch(() => { - // ignore errors for later loads. - }); + this.loadQueue = loaded + .then(() => {}) + .catch(() => { + // ignore errors for later loads. + }); definition = { loaded, @@ -78,22 +87,32 @@ export class Loader { } if (!module.exports) { module.exports = (async () => { - const requirements = await Promise.all(module.dependencies.map((dependency) => { - const definition = this.definitions.get(dependency); - if (!definition) { - throw new Error(`Unknown dependency ${dependency}`); - } - return this.loadModule(dependency, definition); - })); + const requirements = await Promise.all( + module.dependencies.map((dependency) => { + const definition = this.definitions.get(dependency); + if (!definition) { + throw new Error(`Unknown dependency ${dependency}`); + } + return this.loadModule(dependency, definition); + }) + ); return module.factory.apply(window, requirements); })(); } return module.exports; } - define(moduleId: string, dependencies: string[], definition: () => unknown): Module; + define( + moduleId: string, + dependencies: string[], + definition: () => unknown + ): Module; define(moduleId: string, dependencies: string[], definition: unknown): Module; - define(moduleId: string, dependencies: string[], factory?: (()=>unknown)|unknown): Module { + define( + moduleId: string, + dependencies: string[], + factory?: (() => unknown) | unknown + ): Module { if (!(factory instanceof Function)) { factory = () => factory; } @@ -128,7 +147,9 @@ function getHostedModuleUrl(moduleName: string, moduleVersion?: string): URL { if (version.startsWith('^')) { version = version.substr(1); } - return new URL(`https://cdn.jsdelivr.net/npm/${packageName}@${version}/${filename}`); + return new URL( + `https://cdn.jsdelivr.net/npm/${packageName}@${version}/${filename}` + ); } interface Definition { @@ -139,4 +160,4 @@ interface Module { dependencies: string[]; factory: (...args: unknown[]) => unknown; exports?: Promise; -} \ No newline at end of file +} diff --git a/src/api.ts b/src/api.ts index 1922807..54d8624 100644 --- a/src/api.ts +++ b/src/api.ts @@ -28,8 +28,10 @@ * ``` */ export declare interface WidgetManagerModule { - createWidgetManager(state: WidgetEnvironment, arguments?: unknown): - IWidgetManager; + createWidgetManager( + state: WidgetEnvironment, + arguments?: unknown + ): IWidgetManager; } /** @@ -39,7 +41,7 @@ export declare interface WidgetEnvironment { /** * @param modelId The ID of the model for which the model state is desired. */ - getModelState(modelId: string): Promise; + getModelState(modelId: string): Promise; /** * Open a new comm channel to the kernel. @@ -53,7 +55,11 @@ export declare interface WidgetEnvironment { * @param buffers Any binary data to be sent with the open message. * @return The established comm channel. */ - openCommChannel(targetName: string, data?: unknown, buffers?: ArrayBuffer[]): Promise; + openCommChannel( + targetName: string, + data?: unknown, + buffers?: ArrayBuffer[] + ): Promise; } export declare interface IWidgetManager { @@ -99,4 +105,3 @@ export interface Message { /** Optional binary buffers transferred with the message. */ readonly buffers?: ArrayBuffer[]; } - diff --git a/src/index.css b/src/index.css index 0c47975..034699b 100644 --- a/src/index.css +++ b/src/index.css @@ -1,4 +1,4 @@ /* Import the default widgets CSS */ @import '@jupyter-widgets/controls/css/widgets.css'; -/* Any additional CSS styles needed go here */ \ No newline at end of file +/* Any additional CSS styles needed go here */ diff --git a/src/index.ts b/src/index.ts index 21f85b3..b3f7690 100644 --- a/src/index.ts +++ b/src/index.ts @@ -14,16 +14,17 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - -import { IWidgetManager, WidgetEnvironment } from './api'; -import { Manager } from './manager'; import css from '../lib/index.css.txt'; -import { Loader } from './amd'; +import {Loader} from './amd'; +import {IWidgetManager, WidgetEnvironment} from './api'; +import {Manager} from './manager'; /** * Implementation of the WidgetManagerModule interface. */ -export function createWidgetManager(environment: WidgetEnvironment): IWidgetManager { +export function createWidgetManager( + environment: WidgetEnvironment +): IWidgetManager { const loader = new Loader(); return new Manager(environment, loader); } @@ -36,5 +37,6 @@ document.head.appendChild(style); // Some widgets rely on icons from font-awesome, so add that as well. const fontAwesome = document.createElement('link'); fontAwesome.rel = 'stylesheet'; -fontAwesome.href = 'https://cdn.jsdelivr.net/npm/font-awesome@4.7.0/css/font-awesome.min.css'; -document.head.appendChild(fontAwesome); \ No newline at end of file +fontAwesome.href = + 'https://cdn.jsdelivr.net/npm/font-awesome@4.7.0/css/font-awesome.min.css'; +document.head.appendChild(fontAwesome); diff --git a/src/manager.ts b/src/manager.ts index db723c2..8b775f3 100644 --- a/src/manager.ts +++ b/src/manager.ts @@ -14,17 +14,15 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - -import { WidgetModel, WidgetView, IClassicComm } from '@jupyter-widgets/base'; +import {Loader} from './amd'; +import {IComm, IWidgetManager, WidgetEnvironment} from './api'; +import {swizzle} from './swizzle'; +import {WidgetModel, WidgetView, IClassicComm} from '@jupyter-widgets/base'; import * as base from '@jupyter-widgets/base'; +import {ManagerBase} from '@jupyter-widgets/base-manager'; import * as controls from '@jupyter-widgets/controls'; -import { ManagerBase } from '@jupyter-widgets/base-manager'; -import { JSONObject } from '@lumino/coreutils'; -import { Widget } from '@lumino/widgets'; - -import { Loader } from './amd'; -import { IComm, IWidgetManager, WidgetEnvironment } from './api'; -import { swizzle } from './swizzle'; +import {JSONObject} from '@lumino/coreutils'; +import {Widget} from '@lumino/widgets'; export class Manager extends ManagerBase implements IWidgetManager { private readonly models = new Map>(); @@ -38,13 +36,17 @@ export class Manager extends ManagerBase implements IWidgetManager { // Backbone's extend cannot iterate static properties on ES6 classes and // misses propagating them when subclassing. const backboneExtend = base.WidgetModel.extend; - const extend = function (this: object, proto: object, statics: unknown): any { + const extend = function ( + this: object, + proto: object, + statics: unknown + ): any { const result = backboneExtend.call(this, proto, statics); // Use prototype inheritance of the classes so the statics are correctly // inherited. Object.setPrototypeOf(result, this); return result; - } + }; base.WidgetModel.extend = controls.ButtonModel.extend = extend; this.loader.define('@jupyter-widgets/base', [], () => { @@ -78,20 +80,40 @@ export class Manager extends ManagerBase implements IWidgetManager { }); } - protected async loadClass(className: string, moduleName: string, moduleVersion: string): Promise { + protected async loadClass( + className: string, + moduleName: string, + moduleVersion: string + ): Promise { const exports = await this.loader.load(moduleName, moduleVersion); - return (exports as {[key: string]:(typeof WidgetModel| typeof WidgetView)}) [className]; + return (exports as {[key: string]: typeof WidgetModel | typeof WidgetView})[ + className + ]; } - protected async _create_comm(comm_target_name: string, model_id?: string, data?: JSONObject, metadata?: JSONObject, buffers?: ArrayBuffer[] | ArrayBufferView[]): Promise { + protected async _create_comm( + comm_target_name: string, + model_id?: string, + data?: JSONObject, + metadata?: JSONObject, + buffers?: ArrayBuffer[] | ArrayBufferView[] + ): Promise { const sendBuffers = buffers?.map((buffer) => { if (ArrayBuffer.isView(buffer)) { - return new Uint8Array(buffer.buffer, buffer.byteOffset, buffer.byteLength); + return new Uint8Array( + buffer.buffer, + buffer.byteOffset, + buffer.byteLength + ); } return buffer; }); - const comm = await this.environment.openCommChannel(comm_target_name, data, sendBuffers); + const comm = await this.environment.openCommChannel( + comm_target_name, + data, + sendBuffers + ); return new ClassicComm(model_id || '', comm); } @@ -115,13 +137,16 @@ export class Manager extends ManagerBase implements IWidgetManager { comm = new ClassicComm(modelId, state.comm); } - const model = await this.new_model({ - model_name: state.modelName, - model_module: state.modelModule, - model_module_version: state.modelModuleVersion, - model_id: modelId, - comm, - }, state.state); + const model = await this.new_model( + { + model_name: state.modelName, + model_module: state.modelModule, + model_module_version: state.modelModuleVersion, + model_id: modelId, + comm, + }, + state.state + ); return model; })(); this.models.set(modelId, modelPromise); @@ -149,18 +174,32 @@ class ClassicComm implements IClassicComm { return ''; } - open(data: any, callbacks: any, metadata?: any, buffers?: ArrayBuffer[] | ArrayBufferView[]): string { + open( + data: any, + callbacks: any, + metadata?: any, + buffers?: ArrayBuffer[] | ArrayBufferView[] + ): string { // Comm channels should be opened through Manager._create_comm. throw new Error('Method not implemented.'); } /* eslint @typescript-eslint/no-explicit-any: "off" */ - send(data: unknown, callbacks: any, metadata?: unknown, buffers?: ArrayBuffer[] | ArrayBufferView[]): string { + send( + data: unknown, + callbacks: any, + metadata?: unknown, + buffers?: ArrayBuffer[] | ArrayBufferView[] + ): string { let opts = undefined; if (buffers) { const sendBuffers = buffers.map((buffer) => { if (ArrayBuffer.isView(buffer)) { - return new Uint8Array(buffer.buffer, buffer.byteOffset, buffer.byteLength); + return new Uint8Array( + buffer.buffer, + buffer.byteOffset, + buffer.byteLength + ); } return buffer; }); @@ -171,20 +210,25 @@ class ClassicComm implements IClassicComm { callbacks.iopub.status({ content: { execution_state: 'idle', - } + }, }); } }); return ''; } - close(data?: unknown, callbacks?: unknown, metadata?: unknown, buffers?: ArrayBuffer[] | ArrayBufferView[]): string { + close( + data?: unknown, + callbacks?: unknown, + metadata?: unknown, + buffers?: ArrayBuffer[] | ArrayBufferView[] + ): string { // Currently does not support data in the close. this.comm.close(); return ''; } on_msg(callback: (x: unknown) => void) { - (async() => { + (async () => { for await (const message of this.comm.messages) { let buffers; if (message.buffers) { @@ -198,7 +242,7 @@ class ClassicComm implements IClassicComm { comm_id: this.id, data: message.data, }, - buffers: buffers + buffers: buffers, }); } catch (error) { console.error(error); @@ -208,10 +252,11 @@ class ClassicComm implements IClassicComm { } on_close(callback: (x: unknown) => void): void { - (async() => { + (async () => { // Wait for all messages to complete. /* eslint no-empty: "off", @typescript-eslint/no-unused-vars: "off" */ - for await (const message of this.comm.messages) {} + for await (const message of this.comm.messages) { + } callback(undefined); })(); } @@ -251,7 +296,7 @@ class LuminoLifecycleAdapter extends HTMLElement { type: 'after-detach', isConflatable: false, conflate: () => false, - }) + }); } } } @@ -259,4 +304,4 @@ try { window.customElements.define('colab-lumino-adapter', LuminoLifecycleAdapter); } catch (error: unknown) { // May have already been defined. -} \ No newline at end of file +} diff --git a/src/swizzle.spec.ts b/src/swizzle.spec.ts index c8caa43..b0140bc 100644 --- a/src/swizzle.spec.ts +++ b/src/swizzle.spec.ts @@ -14,9 +14,8 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - -import { expect } from '@jest/globals'; import {swizzle} from './swizzle'; +import {expect} from '@jest/globals'; import * as Backbone from 'backbone'; class BaseES6 { @@ -39,7 +38,7 @@ describe('swizzle', () => { describe('handles subclassing ES6 classes', () => { class Subclass extends swizzle(BaseES6) { static staticProperty = 'the derived static'; - getValue () { + getValue() { return 'the derived class'; } } @@ -66,13 +65,17 @@ describe('swizzle', () => { }); describe('constructors can be overridden backbone.extend', () => { - const Subclass = Backbone.Model.extend.call(swizzle(BaseES6), { - getValue: function () { - return 'the derived class'; + const Subclass = Backbone.Model.extend.call( + swizzle(BaseES6), + { + getValue: function () { + return 'the derived class'; + }, }, - }, { - staticProperty: 'the derived static', - }); + { + staticProperty: 'the derived static', + } + ); const instance = new Subclass('constructor param'); it('passes constructor params', () => { expect(instance.constructorParam).toBe('constructor param'); @@ -93,4 +96,4 @@ describe('swizzle', () => { expect(instance.staticValueAtConstruction).toBe('the derived static'); }); }); -}); \ No newline at end of file +}); diff --git a/src/swizzle.ts b/src/swizzle.ts index e61c0a7..d90af82 100644 --- a/src/swizzle.ts +++ b/src/swizzle.ts @@ -17,7 +17,7 @@ /* eslint @typescript-eslint/no-explicit-any: "off" */ interface Constructable { - new(...args: A): T; + new (...args: A): T; } // Make an ES6 class subclassable via Backbone's extend() call. @@ -25,19 +25,21 @@ interface Constructable { // Backbone does not do this when creating the parent object: // https://github.com/jashkenas/backbone/blob/153dc41616a1f2663e4a86b705fefd412ecb4a7a/backbone.js#L2060 /* eslint @typescript-eslint/no-explicit-any: "off" */ -export function swizzle(base: Constructable): Constructable { +export function swizzle( + base: Constructable +): Constructable { /* eslint @typescript-eslint/no-explicit-any: "off" */ - const Constructor = (function(this: any, ...args: A): T { + const Constructor = function (this: any, ...args: A): T { // ES6 new.target will be specified if being constructed via the `new` // keyword. if (new.target) { return Reflect.construct(base, [...args], new.target); } return Reflect.construct(base, [...args], this.constructor); - }) as unknown as Constructable; + } as unknown as Constructable; Object.setPrototypeOf(Constructor.prototype, base.prototype); Object.setPrototypeOf(Constructor, base); return Constructor; -} \ No newline at end of file +} diff --git a/src/typings.d.ts b/src/typings.d.ts index 5babfe2..532f0c7 100644 --- a/src/typings.d.ts +++ b/src/typings.d.ts @@ -18,4 +18,4 @@ declare module '*.txt' { const content: string; export default content; -} \ No newline at end of file +} diff --git a/test/index.html b/test/index.html index 75bef55..798d8c6 100644 --- a/test/index.html +++ b/test/index.html @@ -1,26 +1,27 @@ - + - + manager.render(modelId, document.body); + -
Something
- \ No newline at end of file +
Something
+ + diff --git a/test/jupyter_threejs_state.json b/test/jupyter_threejs_state.json index 675451b..5832c70 100644 --- a/test/jupyter_threejs_state.json +++ b/test/jupyter_threejs_state.json @@ -1,143 +1,106 @@ { "pythree_example_model_001": { - "model_module": "jupyter-threejs", - "model_module_version": "^2.1.0", - "model_name": "SphereGeometryModel", - "state": { - "_view_module": null, - "_view_module_version": "" - } + "model_module": "jupyter-threejs", + "model_module_version": "^2.1.0", + "model_name": "SphereGeometryModel", + "state": { + "_view_module": null, + "_view_module_version": "" + } }, "pythree_example_model_002": { - "model_module": "jupyter-threejs", - "model_module_version": "^2.1.0", - "model_name": "MeshBasicMaterialModel", - "state": { - "_view_module": null, - "_view_module_version": "", - "color": "blue" - } + "model_module": "jupyter-threejs", + "model_module_version": "^2.1.0", + "model_name": "MeshBasicMaterialModel", + "state": { + "_view_module": null, + "_view_module_version": "", + "color": "blue" + } }, "pythree_example_model_003": { - "model_module": "jupyter-threejs", - "model_module_version": "^2.1.0", - "model_name": "MeshModel", - "state": { - "_view_module": null, - "_view_module_version": "", - "geometry": "IPY_MODEL_pythree_example_model_001", - "material": "IPY_MODEL_pythree_example_model_002", - "morphTargetInfluences": [] - } + "model_module": "jupyter-threejs", + "model_module_version": "^2.1.0", + "model_name": "MeshModel", + "state": { + "_view_module": null, + "_view_module_version": "", + "geometry": "IPY_MODEL_pythree_example_model_001", + "material": "IPY_MODEL_pythree_example_model_002", + "morphTargetInfluences": [] + } }, "pythree_example_model_004": { - "model_module": "jupyter-threejs", - "model_module_version": "^2.1.0", - "model_name": "PerspectiveCameraModel", - "state": { - "_view_module": null, - "_view_module_version": "", - "matrix": [ - 1, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - 5, - 5, - 1 - ], - "position": [ - 0, - 5, - 5 - ], - "projectionMatrix": [ - 2.1445069205095586, - 0, - 0, - 0, - 0, - 2.1445069205095586, - 0, - 0, - 0, - 0, - -1.00010000500025, - -1, - 0, - 0, - -0.200010000500025, - 0 - ] - } + "model_module": "jupyter-threejs", + "model_module_version": "^2.1.0", + "model_name": "PerspectiveCameraModel", + "state": { + "_view_module": null, + "_view_module_version": "", + "matrix": [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 5, 5, 1], + "position": [0, 5, 5], + "projectionMatrix": [ + 2.1445069205095586, 0, 0, 0, 0, 2.1445069205095586, 0, 0, 0, 0, + -1.00010000500025, -1, 0, 0, -0.200010000500025, 0 + ] + } }, "pythree_example_model_005": { - "model_module": "jupyter-threejs", - "model_module_version": "^2.1.0", - "model_name": "SceneModel", - "state": { - "_view_module": null, - "_view_module_version": "", - "background": "red", - "children": [ - "IPY_MODEL_pythree_example_model_003", - "IPY_MODEL_pythree_example_model_004" - ] - } + "model_module": "jupyter-threejs", + "model_module_version": "^2.1.0", + "model_name": "SceneModel", + "state": { + "_view_module": null, + "_view_module_version": "", + "background": "red", + "children": [ + "IPY_MODEL_pythree_example_model_003", + "IPY_MODEL_pythree_example_model_004" + ] + } }, "pythree_example_model_006": { - "model_module": "jupyter-threejs", - "model_module_version": "^2.1.0", - "model_name": "OrbitControlsModel", - "state": { - "_view_module": null, - "_view_module_version": "", - "controlling": "IPY_MODEL_pythree_example_model_004", - "maxAzimuthAngle": "inf", - "maxDistance": "inf", - "maxZoom": "inf", - "minAzimuthAngle": "-inf" - } + "model_module": "jupyter-threejs", + "model_module_version": "^2.1.0", + "model_name": "OrbitControlsModel", + "state": { + "_view_module": null, + "_view_module_version": "", + "controlling": "IPY_MODEL_pythree_example_model_004", + "maxAzimuthAngle": "inf", + "maxDistance": "inf", + "maxZoom": "inf", + "minAzimuthAngle": "-inf" + } }, "pythree_example_model_007": { - "model_module": "jupyter-threejs", - "model_module_version": "^2.1.0", - "model_name": "RendererModel", - "state": { - "_alpha": true, - "_webgl_version": 2, - "camera": "IPY_MODEL_pythree_example_model_004", - "clearOpacity": 0, - "controls": [ - "IPY_MODEL_pythree_example_model_006" - ], - "layout": "IPY_MODEL_pythree_example_model_008", - "scene": "IPY_MODEL_pythree_example_model_005", - "shadowMap": "IPY_MODEL_pythree_example_model_009" - } + "model_module": "jupyter-threejs", + "model_module_version": "^2.1.0", + "model_name": "RendererModel", + "state": { + "_alpha": true, + "_webgl_version": 2, + "camera": "IPY_MODEL_pythree_example_model_004", + "clearOpacity": 0, + "controls": ["IPY_MODEL_pythree_example_model_006"], + "layout": "IPY_MODEL_pythree_example_model_008", + "scene": "IPY_MODEL_pythree_example_model_005", + "shadowMap": "IPY_MODEL_pythree_example_model_009" + } }, "pythree_example_model_008": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": {} + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": {} }, "pythree_example_model_009": { - "model_module": "jupyter-threejs", - "model_module_version": "^2.1.0", - "model_name": "WebGLShadowMapModel", - "state": { - "_view_module": null, - "_view_module_version": "" - } + "model_module": "jupyter-threejs", + "model_module_version": "^2.1.0", + "model_name": "WebGLShadowMapModel", + "state": { + "_view_module": null, + "_view_module_version": "" + } } -} \ No newline at end of file +} diff --git a/test/leaflet_state.json b/test/leaflet_state.json index 85dcb4a..1e29253 100644 --- a/test/leaflet_state.json +++ b/test/leaflet_state.json @@ -1,1858 +1,1796 @@ { - "faa0370943904adaba3a65c9a9c28e7f": { - "model_module": "jupyter-leaflet", - "model_name": "LeafletMapModel", - "state": { - "_view_name": "LeafletMapView", - "keyboard_pan_offset": 80, - "tap": true, - "_view_module": "jupyter-leaflet", - "max_zoom": 18, - "_model_module_version": "^0.12.4", - "_view_count": null, - "min_zoom": 1, - "bounce_at_zoom_limits": true, - "keyboard": true, - "north": 0, - "scroll_wheel_zoom": false, - "dragging": true, - "_model_module": "jupyter-leaflet", - "close_popup_on_click": true, - "fullscreen": false, - "style": "IPY_MODEL_528f0499f48743a8aab05cdb29963956", - "layout": "IPY_MODEL_9d1e18a63d5847c09f65b5097436fb0b", - "inertia_max_speed": 1500, - "box_zoom": true, - "controls": [ - "IPY_MODEL_9e689d988abd486a8b09158c9e10dc07", - "IPY_MODEL_8d48de7f99604d6da0bc2fa54dba2e6e" - ], - "default_style": "IPY_MODEL_9ee3b8a2c715462688e02c8486b29d64", - "east": 0, - "double_click_zoom": true, - "interpolation": "bilinear", - "layers": [ - "IPY_MODEL_5ac6b3bdcfeb4ed8ba4769577a1cb943" - ], - "dragging_style": "IPY_MODEL_8a215f04298e4f0aa56d3e8ed2581d3d", - "_dom_classes": [], - "zoom_animation_threshold": 4, - "_model_name": "LeafletMapModel", - "zoom_start": 12, - "modisdate": "yesterday", - "keyboard_zoom_offset": 1, - "inertia_deceleration": 3000, - "inertia": true, - "crs": "EPSG3857", - "center": [ - 52.204793, - 360.121558 - ], - "zoom": 4, - "world_copy_jump": false, - "_view_module_version": "^0.12.4", - "tap_tolerance": 15, - "west": 0, - "touch_zoom": true, - "options": [ - "bounce_at_zoom_limits", - "box_zoom", - "center", - "close_popup_on_click", - "double_click_zoom", - "dragging", - "fullscreen", - "inertia", - "inertia_deceleration", - "inertia_max_speed", - "interpolation", - "keyboard", - "keyboard_pan_offset", - "keyboard_zoom_offset", - "max_zoom", - "min_zoom", - "scroll_wheel_zoom", - "tap", - "tap_tolerance", - "touch_zoom", - "world_copy_jump", - "zoom", - "zoom_animation_threshold", - "zoom_start" - ], - "south": 0 - } - }, - "9d1e18a63d5847c09f65b5097436fb0b": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "ed8b79e7b266419981ca163a39b8e84d": { - "model_module": "@jupyter-widgets/controls", - "model_name": "VBoxModel", - "state": { - "_view_name": "VBoxView", - "_dom_classes": [], - "_model_name": "VBoxModel", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.5.0", - "box_style": "", - "layout": "IPY_MODEL_cfa51ae0b686483d9e6af5ded299e797", - "_model_module": "@jupyter-widgets/controls", - "children": [ - "IPY_MODEL_365a9442d01e4385b873e1dfe52feb70", - "IPY_MODEL_9447dbf2ceda462f8935eab8b617bfae", - "IPY_MODEL_7477689a59354b559db709132bbf7ebc" - ] - } - }, - "cfa51ae0b686483d9e6af5ded299e797": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "365a9442d01e4385b873e1dfe52feb70": { - "model_module": "@jupyter-widgets/controls", - "model_name": "VBoxModel", - "state": { - "_view_name": "VBoxView", - "_dom_classes": [], - "_model_name": "VBoxModel", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.5.0", - "box_style": "", - "layout": "IPY_MODEL_100eb6ce562243cc8d5b70aad0f59f58", - "_model_module": "@jupyter-widgets/controls", - "children": [ - "IPY_MODEL_19b20aa775cf428883c2e7dfd5cc3bd0", - "IPY_MODEL_4b54c82f7c7049049030ed6a426871dc" - ] - } - }, - "9447dbf2ceda462f8935eab8b617bfae": { - "model_module": "ipyvolume", - "model_name": "FigureModel", - "state": { - "_view_name": "FigureView", - "xlim": [ - 0, - 128 - ], - "show": "Volume", - "camera_control": "trackball", - "_view_module": "ipyvolume", - "ambient_coefficient": 0.5, - "_view_count": null, - "style": { - "box": { - "visible": true - }, - "axes": { - "color": "black", - "visible": true, - "ticklabel": { - "color": "black" - }, - "label": { - "color": "black" - } - }, - "background-color": "white" - }, - "meshes": [], - "matrix_world": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 - ], - "_model_module": "ipyvolume", - "ylim": [ - 0, - 128 - ], - "animation_exponent": 1, - "layout": "IPY_MODEL_af8f54e0b1644171a2ef24959367b58a", - "camera_fov": 45, - "specular_exponent": 5, - "render_continuous": false, - "panorama_mode": "no", - "width": 400, - "camera": "IPY_MODEL_866ab03c46e440f7801230d57716869b", - "diffuse_coefficient": 0.8, - "zlabel": "z", - "capture_fps": null, - "downscale": 1, - "_dom_classes": [], - "_model_name": "FigureModel", - "selection_mode": "replace", - "ylabel": "y", - "matrix_projection": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 - ], - "stereo": false, - "_model_module_version": "~0.5.2", - "specular_coefficient": 0.5, - "height": 500, - "animation": 1000, - "eye_separation": 6.4, - "selector": "lasso", - "scene": "IPY_MODEL_68f6502f5a3b46e294f8ed64c4ded169", - "zlim": [ - 0, - 128 - ], - "camera_center": [ - 0, - 0, - 0 - ], - "scatters": [], - "_view_module_version": "~0.5.2", - "xlabel": "x", - "volumes": [ - "IPY_MODEL_92610383004a4f27af081962e62d46f8" - ], - "displayscale": 1, - "cube_resolution": 512, - "mouse_mode": "normal" - } - }, - "7477689a59354b559db709132bbf7ebc": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HBoxModel", - "state": { - "_view_name": "HBoxView", - "_dom_classes": [], - "_model_name": "HBoxModel", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.5.0", - "box_style": "", - "layout": "IPY_MODEL_488d6d91b19e4cb7bb78d107f141db56", - "_model_module": "@jupyter-widgets/controls", - "children": [ - "IPY_MODEL_97dbb363ff564cceb42e2ccb4a4950ff", - "IPY_MODEL_b8f9849acedc46228ddd4d6acdb22e22" - ] - } - }, - "100eb6ce562243cc8d5b70aad0f59f58": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "19b20aa775cf428883c2e7dfd5cc3bd0": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HBoxModel", - "state": { - "_view_name": "HBoxView", - "_dom_classes": [], - "_model_name": "HBoxModel", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.5.0", - "box_style": "", - "layout": "IPY_MODEL_f0dc675ecb5f4325ae48ca250e29cd5e", - "_model_module": "@jupyter-widgets/controls", - "children": [ - "IPY_MODEL_02d4eb26fb22419d96533c6679dae3a1", - "IPY_MODEL_8c2d51efdcfa4427924009c0b0546c7c", - "IPY_MODEL_cf4babd2876747ac8bd0c6f282d42edf", - "IPY_MODEL_74d38f08eadb4fa49c7850dcbf94f133" - ] - } - }, - "4b54c82f7c7049049030ed6a426871dc": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HBoxModel", - "state": { - "_view_name": "HBoxView", - "_dom_classes": [], - "_model_name": "HBoxModel", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.5.0", - "box_style": "", - "layout": "IPY_MODEL_f69e48b53b7c46f498c4bface2dd01e8", - "_model_module": "@jupyter-widgets/controls", - "children": [ - "IPY_MODEL_a9cbe234131c45b1a281c4db15e99413", - "IPY_MODEL_78a5d136a1f64174845163009a758048", - "IPY_MODEL_4388082b3f5a4f7499c7a64c69683430", - "IPY_MODEL_34e05629fda64857b27a55a6fb3966ff" - ] - } - }, - "488d6d91b19e4cb7bb78d107f141db56": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "97dbb363ff564cceb42e2ccb4a4950ff": { - "model_module": "@jupyter-widgets/controls", - "model_name": "FloatLogSliderModel", - "state": { - "_view_name": "FloatLogSliderView", - "orientation": "horizontal", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_view_count": null, - "disabled": false, - "readout_format": ".3g", - "_model_module": "@jupyter-widgets/controls", - "style": "IPY_MODEL_4f3473b3f5cc4f62a610db6c40461dd4", - "layout": "IPY_MODEL_8ed0972e56764df4ad5ca6e335a0e0c0", - "min": -2, - "continuous_update": true, - "description_tooltip": null, - "_dom_classes": [], - "description": "opacity", - "_model_name": "FloatLogSliderModel", - "max": 2, - "readout": true, - "step": 0.1, - "base": 10, - "value": 1, - "_view_module_version": "1.5.0" - } - }, - "b8f9849acedc46228ddd4d6acdb22e22": { - "model_module": "@jupyter-widgets/controls", - "model_name": "FloatLogSliderModel", - "state": { - "_view_name": "FloatLogSliderView", - "orientation": "horizontal", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_view_count": null, - "disabled": false, - "readout_format": ".3g", - "_model_module": "@jupyter-widgets/controls", - "style": "IPY_MODEL_bbb62806ad2c450ba5b0e471ef86fdb3", - "layout": "IPY_MODEL_a79ca8a3ba1a4c128ed076a55e7d26d3", - "min": -1, - "continuous_update": true, - "description_tooltip": null, - "_dom_classes": [], - "description": "brightness", - "_model_name": "FloatLogSliderModel", - "max": 1, - "readout": true, - "step": 0.1, - "base": 10, - "value": 1, - "_view_module_version": "1.5.0" - } - }, - "f0dc675ecb5f4325ae48ca250e29cd5e": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "02d4eb26fb22419d96533c6679dae3a1": { - "model_module": "@jupyter-widgets/controls", - "model_name": "LabelModel", - "state": { - "_view_name": "LabelView", - "style": "IPY_MODEL_60b66f00eb1e459d9d1384ed36238097", - "_dom_classes": [], - "description": "", - "_model_name": "LabelModel", - "placeholder": "​", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": "levels:", - "_view_count": null, - "_view_module_version": "1.5.0", - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_e6ca23c5433d4cdb9160d74970d7afcc" - } - }, - "8c2d51efdcfa4427924009c0b0546c7c": { - "model_module": "@jupyter-widgets/controls", - "model_name": "FloatSliderModel", - "state": { - "_view_name": "FloatSliderView", - "style": "IPY_MODEL_2b7ee84a8e7f49bfbd1326008de861b8", - "_dom_classes": [], - "description": "", - "step": 0.001, - "_model_name": "FloatSliderModel", - "orientation": "horizontal", - "max": 1, - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": 0.25, - "_view_count": null, - "disabled": false, - "_view_module_version": "1.5.0", - "min": 0, - "continuous_update": true, - "readout_format": ".2f", - "description_tooltip": null, - "readout": true, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_39689dcb46a84e1499b45103b73b313a" - } - }, - "cf4babd2876747ac8bd0c6f282d42edf": { - "model_module": "@jupyter-widgets/controls", - "model_name": "FloatSliderModel", - "state": { - "_view_name": "FloatSliderView", - "style": "IPY_MODEL_2989acf9d262489f9f038294eb506507", - "_dom_classes": [], - "description": "", - "step": 0.001, - "_model_name": "FloatSliderModel", - "orientation": "horizontal", - "max": 1, - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": 0.75, - "_view_count": null, - "disabled": false, - "_view_module_version": "1.5.0", - "min": 0, - "continuous_update": true, - "readout_format": ".2f", - "description_tooltip": null, - "readout": true, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_a15e6cf4f5694dd8bd8b7673e0f3ac55" - } - }, - "74d38f08eadb4fa49c7850dcbf94f133": { - "model_module": "@jupyter-widgets/controls", - "model_name": "FloatSliderModel", - "state": { - "_view_name": "FloatSliderView", - "style": "IPY_MODEL_73e2d14fea6d449d878803d1a08d2956", - "_dom_classes": [], - "description": "", - "step": 0.001, - "_model_name": "FloatSliderModel", - "orientation": "horizontal", - "max": 1, - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": 0, - "_view_count": null, - "disabled": false, - "_view_module_version": "1.5.0", - "min": 0, - "continuous_update": true, - "readout_format": ".2f", - "description_tooltip": null, - "readout": true, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_af00703ee841496e9acddae379137791" - } - }, - "f69e48b53b7c46f498c4bface2dd01e8": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "a9cbe234131c45b1a281c4db15e99413": { - "model_module": "@jupyter-widgets/controls", - "model_name": "LabelModel", - "state": { - "_view_name": "LabelView", - "style": "IPY_MODEL_767ef02d73824074b53829d92b0eccc5", - "_dom_classes": [], - "description": "", - "_model_name": "LabelModel", - "placeholder": "​", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": "opacities:", - "_view_count": null, - "_view_module_version": "1.5.0", - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_f6d3348ed360411da83bb289fea09846" - } - }, - "78a5d136a1f64174845163009a758048": { - "model_module": "@jupyter-widgets/controls", - "model_name": "FloatSliderModel", - "state": { - "_view_name": "FloatSliderView", - "style": "IPY_MODEL_45a664907a2e4c388abdfdefd4b9377a", - "_dom_classes": [], - "description": "", - "step": 0.001, - "_model_name": "FloatSliderModel", - "orientation": "horizontal", - "max": 0.2, - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": 0.03, - "_view_count": null, - "disabled": false, - "_view_module_version": "1.5.0", - "min": 0, - "continuous_update": true, - "readout_format": ".2f", - "description_tooltip": null, - "readout": true, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_947e562976c449718578676a34739494" - } - }, - "4388082b3f5a4f7499c7a64c69683430": { - "model_module": "@jupyter-widgets/controls", - "model_name": "FloatSliderModel", - "state": { - "_view_name": "FloatSliderView", - "style": "IPY_MODEL_389cbfc5e0dd4bfd99a1881f0b408156", - "_dom_classes": [], - "description": "", - "step": 0.001, - "_model_name": "FloatSliderModel", - "orientation": "horizontal", - "max": 0.2, - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": 0.03, - "_view_count": null, - "disabled": false, - "_view_module_version": "1.5.0", - "min": 0, - "continuous_update": true, - "readout_format": ".2f", - "description_tooltip": null, - "readout": true, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_b44b6db482b04c55bf7345caa48419e7" - } - }, - "34e05629fda64857b27a55a6fb3966ff": { - "model_module": "@jupyter-widgets/controls", - "model_name": "FloatSliderModel", - "state": { - "_view_name": "FloatSliderView", - "style": "IPY_MODEL_bf0d78a072ca4ecd8ab2da9d609af582", - "_dom_classes": [], - "description": "", - "step": 0.001, - "_model_name": "FloatSliderModel", - "orientation": "horizontal", - "max": 0.2, - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": 0.03, - "_view_count": null, - "disabled": false, - "_view_module_version": "1.5.0", - "min": 0, - "continuous_update": true, - "readout_format": ".2f", - "description_tooltip": null, - "readout": true, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_454bb9c66647447bb5af1b8c0c44b089" - } - }, - "4f3473b3f5cc4f62a610db6c40461dd4": { - "model_module": "@jupyter-widgets/controls", - "model_name": "SliderStyleModel", - "state": { - "_view_name": "StyleView", - "handle_color": null, - "_model_name": "SliderStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "8ed0972e56764df4ad5ca6e335a0e0c0": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "bbb62806ad2c450ba5b0e471ef86fdb3": { - "model_module": "@jupyter-widgets/controls", - "model_name": "SliderStyleModel", - "state": { - "_view_name": "StyleView", - "handle_color": null, - "_model_name": "SliderStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "a79ca8a3ba1a4c128ed076a55e7d26d3": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "60b66f00eb1e459d9d1384ed36238097": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "state": { - "_view_name": "StyleView", - "_model_name": "DescriptionStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "e6ca23c5433d4cdb9160d74970d7afcc": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "2b7ee84a8e7f49bfbd1326008de861b8": { - "model_module": "@jupyter-widgets/controls", - "model_name": "SliderStyleModel", - "state": { - "_view_name": "StyleView", - "handle_color": null, - "_model_name": "SliderStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "39689dcb46a84e1499b45103b73b313a": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "2989acf9d262489f9f038294eb506507": { - "model_module": "@jupyter-widgets/controls", - "model_name": "SliderStyleModel", - "state": { - "_view_name": "StyleView", - "handle_color": null, - "_model_name": "SliderStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "a15e6cf4f5694dd8bd8b7673e0f3ac55": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "73e2d14fea6d449d878803d1a08d2956": { - "model_module": "@jupyter-widgets/controls", - "model_name": "SliderStyleModel", - "state": { - "_view_name": "StyleView", - "handle_color": null, - "_model_name": "SliderStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "af00703ee841496e9acddae379137791": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "767ef02d73824074b53829d92b0eccc5": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "state": { - "_view_name": "StyleView", - "_model_name": "DescriptionStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "f6d3348ed360411da83bb289fea09846": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "45a664907a2e4c388abdfdefd4b9377a": { - "model_module": "@jupyter-widgets/controls", - "model_name": "SliderStyleModel", - "state": { - "_view_name": "StyleView", - "handle_color": null, - "_model_name": "SliderStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "947e562976c449718578676a34739494": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "389cbfc5e0dd4bfd99a1881f0b408156": { - "model_module": "@jupyter-widgets/controls", - "model_name": "SliderStyleModel", - "state": { - "_view_name": "StyleView", - "handle_color": null, - "_model_name": "SliderStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "b44b6db482b04c55bf7345caa48419e7": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "bf0d78a072ca4ecd8ab2da9d609af582": { - "model_module": "@jupyter-widgets/controls", - "model_name": "SliderStyleModel", - "state": { - "_view_name": "StyleView", - "handle_color": null, - "_model_name": "SliderStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "454bb9c66647447bb5af1b8c0c44b089": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "af8f54e0b1644171a2ef24959367b58a": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "c47964ff73464a8196f6cab80137839f": { - "model_module": "jupyter-leaflet", - "model_name": "LeafletTileLayerModel", - "state": { - "_view_name": "LeafletTileLayerView", - "_view_module": "jupyter-leaflet", - "max_zoom": 9, - "_model_module_version": "^0.14.0", - "_view_count": null, - "visible": true, - "min_zoom": 1, - "tms": false, - "_model_module": "jupyter-leaflet", - "loading": false, - "bottom": true, - "no_wrap": false, - "tile_size": 256, - "popup_min_width": 50, - "opacity": 1, - "popup": null, - "attribution": "\nImagery provided by services from the Global Imagery Browse Services (GIBS), operated by the NASA/GSFC/Earth Science Data and Information System (ESDIS) with funding provided by NASA/HQ.\n", - "_model_name": "LeafletTileLayerModel", - "max_native_zoom": 18, - "base": false, - "min_native_zoom": 0, - "show_loading": false, - "name": "NASAGIBS.ModisTerraTrueColorCR", - "url": "https://gibs.earthdata.nasa.gov/wmts/epsg3857/best/MODIS_Terra_CorrectedReflectance_TrueColor/default/2017-04-08/GoogleMapsCompatible_Level9/{z}/{y}/{x}.jpg", - "popup_max_height": null, - "popup_max_width": 300, - "detect_retina": false, - "_view_module_version": "^0.14.0", - "options": [ - "attribution", - "detect_retina", - "max_native_zoom", - "max_zoom", - "min_native_zoom", - "min_zoom", - "no_wrap", - "tile_size", - "tms" - ] - } - }, - "3d00982c2f0d45568fa1f006f954f07f": { - "model_module": "jupyter-leaflet", - "model_name": "LeafletMapStyleModel", - "state": { - "_view_name": "StyleView", - "_model_name": "LeafletMapStyleModel", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "^0.14.0", - "_view_count": null, - "cursor": "grab", - "_view_module_version": "1.2.0", - "_model_module": "jupyter-leaflet" - } - }, - "bca6b492296948ffaf8648e0a9821974": { - "model_module": "jupyter-leaflet", - "model_name": "LeafletMapStyleModel", - "state": { - "_view_name": "StyleView", - "_model_name": "LeafletMapStyleModel", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "^0.14.0", - "_view_count": null, - "cursor": "move", - "_view_module_version": "1.2.0", - "_model_module": "jupyter-leaflet" - } - }, - "57e88daade524f2897f3bc422fa7dd9d": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "1ec10448de0c43be8272046e2309278d": { - "model_module": "jupyter-leaflet", - "model_name": "LeafletMapStyleModel", - "state": { - "_view_name": "StyleView", - "_model_name": "LeafletMapStyleModel", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "^0.14.0", - "_view_count": null, - "cursor": "grab", - "_view_module_version": "1.2.0", - "_model_module": "jupyter-leaflet" - } - }, - "34baf5762f2344e19200892a8efafc27": { - "model_module": "jupyter-leaflet", - "model_name": "LeafletMapModel", - "state": { - "_view_name": "LeafletMapView", - "keyboard_pan_offset": 80, - "right": 0, - "tap": true, - "_view_module": "jupyter-leaflet", - "max_zoom": 18, - "_model_module_version": "^0.14.0", - "_view_count": null, - "zoom_snap": 1, - "min_zoom": 1, - "bounce_at_zoom_limits": true, - "keyboard": true, - "north": 0, - "scroll_wheel_zoom": false, - "dragging": true, - "_model_module": "jupyter-leaflet", - "zoom_delta": 1, - "close_popup_on_click": true, - "fullscreen": false, - "style": "IPY_MODEL_1ec10448de0c43be8272046e2309278d", - "layout": "IPY_MODEL_57e88daade524f2897f3bc422fa7dd9d", - "bottom": 0, - "inertia_max_speed": 1500, - "top": 9007199254740991, - "box_zoom": true, - "controls": [ - "IPY_MODEL_41f57cfcf4674b5298525dfd6ae9ee93", - "IPY_MODEL_8b3aad421d6f43718708c75e4aa0f9ce" - ], - "default_style": "IPY_MODEL_3d00982c2f0d45568fa1f006f954f07f", - "east": 0, - "double_click_zoom": true, - "interpolation": "bilinear", - "layers": [ - "IPY_MODEL_c47964ff73464a8196f6cab80137839f" - ], - "dragging_style": "IPY_MODEL_bca6b492296948ffaf8648e0a9821974", - "_dom_classes": [], - "zoom_animation_threshold": 4, - "_model_name": "LeafletMapModel", - "zoom_start": 12, - "modisdate": "yesterday", - "keyboard_zoom_offset": 1, - "inertia_deceleration": 3000, - "inertia": true, - "crs": { - "name": "EPSG3857", - "custom": false - }, - "center": [ - 52.204793, - 360.121558 - ], - "zoom": 4, - "world_copy_jump": false, - "_view_module_version": "^0.14.0", - "window_url": "", - "tap_tolerance": 15, - "west": 0, - "touch_zoom": true, - "options": [ - "bounce_at_zoom_limits", - "box_zoom", - "center", - "close_popup_on_click", - "double_click_zoom", - "dragging", - "fullscreen", - "inertia", - "inertia_deceleration", - "inertia_max_speed", - "interpolation", - "keyboard", - "keyboard_pan_offset", - "keyboard_zoom_offset", - "max_zoom", - "min_zoom", - "scroll_wheel_zoom", - "tap", - "tap_tolerance", - "touch_zoom", - "world_copy_jump", - "zoom", - "zoom_animation_threshold", - "zoom_delta", - "zoom_snap", - "zoom_start" - ], - "south": 0, - "left": 9007199254740991 - } - }, - "41f57cfcf4674b5298525dfd6ae9ee93": { - "model_module": "jupyter-leaflet", - "model_name": "LeafletZoomControlModel", - "state": { - "_view_name": "LeafletZoomControlView", - "zoom_in_title": "Zoom in", - "_model_name": "LeafletZoomControlModel", - "_view_module": "jupyter-leaflet", - "_model_module_version": "^0.14.0", - "_view_count": null, - "_view_module_version": "^0.14.0", - "zoom_out_title": "Zoom out", - "position": "topleft", - "zoom_in_text": "+", - "_model_module": "jupyter-leaflet", - "options": [ - "position", - "zoom_in_text", - "zoom_in_title", - "zoom_out_text", - "zoom_out_title" - ], - "zoom_out_text": "-" - } - }, - "8b3aad421d6f43718708c75e4aa0f9ce": { - "model_module": "jupyter-leaflet", - "model_name": "LeafletAttributionControlModel", - "state": { - "_view_name": "LeafletAttributionControlView", - "prefix": "ipyleaflet", - "_model_name": "LeafletAttributionControlModel", - "_view_module": "jupyter-leaflet", - "_model_module_version": "^0.14.0", - "_view_count": null, - "_view_module_version": "^0.14.0", - "position": "bottomright", - "_model_module": "jupyter-leaflet", - "options": [ - "position", - "prefix" - ] - } + "faa0370943904adaba3a65c9a9c28e7f": { + "model_module": "jupyter-leaflet", + "model_name": "LeafletMapModel", + "state": { + "_view_name": "LeafletMapView", + "keyboard_pan_offset": 80, + "tap": true, + "_view_module": "jupyter-leaflet", + "max_zoom": 18, + "_model_module_version": "^0.12.4", + "_view_count": null, + "min_zoom": 1, + "bounce_at_zoom_limits": true, + "keyboard": true, + "north": 0, + "scroll_wheel_zoom": false, + "dragging": true, + "_model_module": "jupyter-leaflet", + "close_popup_on_click": true, + "fullscreen": false, + "style": "IPY_MODEL_528f0499f48743a8aab05cdb29963956", + "layout": "IPY_MODEL_9d1e18a63d5847c09f65b5097436fb0b", + "inertia_max_speed": 1500, + "box_zoom": true, + "controls": [ + "IPY_MODEL_9e689d988abd486a8b09158c9e10dc07", + "IPY_MODEL_8d48de7f99604d6da0bc2fa54dba2e6e" + ], + "default_style": "IPY_MODEL_9ee3b8a2c715462688e02c8486b29d64", + "east": 0, + "double_click_zoom": true, + "interpolation": "bilinear", + "layers": ["IPY_MODEL_5ac6b3bdcfeb4ed8ba4769577a1cb943"], + "dragging_style": "IPY_MODEL_8a215f04298e4f0aa56d3e8ed2581d3d", + "_dom_classes": [], + "zoom_animation_threshold": 4, + "_model_name": "LeafletMapModel", + "zoom_start": 12, + "modisdate": "yesterday", + "keyboard_zoom_offset": 1, + "inertia_deceleration": 3000, + "inertia": true, + "crs": "EPSG3857", + "center": [52.204793, 360.121558], + "zoom": 4, + "world_copy_jump": false, + "_view_module_version": "^0.12.4", + "tap_tolerance": 15, + "west": 0, + "touch_zoom": true, + "options": [ + "bounce_at_zoom_limits", + "box_zoom", + "center", + "close_popup_on_click", + "double_click_zoom", + "dragging", + "fullscreen", + "inertia", + "inertia_deceleration", + "inertia_max_speed", + "interpolation", + "keyboard", + "keyboard_pan_offset", + "keyboard_zoom_offset", + "max_zoom", + "min_zoom", + "scroll_wheel_zoom", + "tap", + "tap_tolerance", + "touch_zoom", + "world_copy_jump", + "zoom", + "zoom_animation_threshold", + "zoom_start" + ], + "south": 0 } -} \ No newline at end of file + }, + "9d1e18a63d5847c09f65b5097436fb0b": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "state": { + "_view_name": "LayoutView", + "grid_template_rows": null, + "right": null, + "justify_content": null, + "_view_module": "@jupyter-widgets/base", + "overflow": null, + "_model_module_version": "1.2.0", + "_view_count": null, + "flex_flow": null, + "width": null, + "min_width": null, + "border": null, + "align_items": null, + "bottom": null, + "_model_module": "@jupyter-widgets/base", + "top": null, + "grid_column": null, + "overflow_y": null, + "overflow_x": null, + "grid_auto_flow": null, + "grid_area": null, + "grid_template_columns": null, + "flex": null, + "_model_name": "LayoutModel", + "justify_items": null, + "grid_row": null, + "max_height": null, + "align_content": null, + "visibility": null, + "align_self": null, + "height": null, + "min_height": null, + "padding": null, + "grid_auto_rows": null, + "grid_gap": null, + "max_width": null, + "order": null, + "_view_module_version": "1.2.0", + "grid_template_areas": null, + "object_position": null, + "object_fit": null, + "grid_auto_columns": null, + "margin": null, + "display": null, + "left": null + } + }, + "ed8b79e7b266419981ca163a39b8e84d": { + "model_module": "@jupyter-widgets/controls", + "model_name": "VBoxModel", + "state": { + "_view_name": "VBoxView", + "_dom_classes": [], + "_model_name": "VBoxModel", + "_view_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_view_count": null, + "_view_module_version": "1.5.0", + "box_style": "", + "layout": "IPY_MODEL_cfa51ae0b686483d9e6af5ded299e797", + "_model_module": "@jupyter-widgets/controls", + "children": [ + "IPY_MODEL_365a9442d01e4385b873e1dfe52feb70", + "IPY_MODEL_9447dbf2ceda462f8935eab8b617bfae", + "IPY_MODEL_7477689a59354b559db709132bbf7ebc" + ] + } + }, + "cfa51ae0b686483d9e6af5ded299e797": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "state": { + "_view_name": "LayoutView", + "grid_template_rows": null, + "right": null, + "justify_content": null, + "_view_module": "@jupyter-widgets/base", + "overflow": null, + "_model_module_version": "1.2.0", + "_view_count": null, + "flex_flow": null, + "width": null, + "min_width": null, + "border": null, + "align_items": null, + "bottom": null, + "_model_module": "@jupyter-widgets/base", + "top": null, + "grid_column": null, + "overflow_y": null, + "overflow_x": null, + "grid_auto_flow": null, + "grid_area": null, + "grid_template_columns": null, + "flex": null, + "_model_name": "LayoutModel", + "justify_items": null, + "grid_row": null, + "max_height": null, + "align_content": null, + "visibility": null, + "align_self": null, + "height": null, + "min_height": null, + "padding": null, + "grid_auto_rows": null, + "grid_gap": null, + "max_width": null, + "order": null, + "_view_module_version": "1.2.0", + "grid_template_areas": null, + "object_position": null, + "object_fit": null, + "grid_auto_columns": null, + "margin": null, + "display": null, + "left": null + } + }, + "365a9442d01e4385b873e1dfe52feb70": { + "model_module": "@jupyter-widgets/controls", + "model_name": "VBoxModel", + "state": { + "_view_name": "VBoxView", + "_dom_classes": [], + "_model_name": "VBoxModel", + "_view_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_view_count": null, + "_view_module_version": "1.5.0", + "box_style": "", + "layout": "IPY_MODEL_100eb6ce562243cc8d5b70aad0f59f58", + "_model_module": "@jupyter-widgets/controls", + "children": [ + "IPY_MODEL_19b20aa775cf428883c2e7dfd5cc3bd0", + "IPY_MODEL_4b54c82f7c7049049030ed6a426871dc" + ] + } + }, + "9447dbf2ceda462f8935eab8b617bfae": { + "model_module": "ipyvolume", + "model_name": "FigureModel", + "state": { + "_view_name": "FigureView", + "xlim": [0, 128], + "show": "Volume", + "camera_control": "trackball", + "_view_module": "ipyvolume", + "ambient_coefficient": 0.5, + "_view_count": null, + "style": { + "box": { + "visible": true + }, + "axes": { + "color": "black", + "visible": true, + "ticklabel": { + "color": "black" + }, + "label": { + "color": "black" + } + }, + "background-color": "white" + }, + "meshes": [], + "matrix_world": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + "_model_module": "ipyvolume", + "ylim": [0, 128], + "animation_exponent": 1, + "layout": "IPY_MODEL_af8f54e0b1644171a2ef24959367b58a", + "camera_fov": 45, + "specular_exponent": 5, + "render_continuous": false, + "panorama_mode": "no", + "width": 400, + "camera": "IPY_MODEL_866ab03c46e440f7801230d57716869b", + "diffuse_coefficient": 0.8, + "zlabel": "z", + "capture_fps": null, + "downscale": 1, + "_dom_classes": [], + "_model_name": "FigureModel", + "selection_mode": "replace", + "ylabel": "y", + "matrix_projection": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + "stereo": false, + "_model_module_version": "~0.5.2", + "specular_coefficient": 0.5, + "height": 500, + "animation": 1000, + "eye_separation": 6.4, + "selector": "lasso", + "scene": "IPY_MODEL_68f6502f5a3b46e294f8ed64c4ded169", + "zlim": [0, 128], + "camera_center": [0, 0, 0], + "scatters": [], + "_view_module_version": "~0.5.2", + "xlabel": "x", + "volumes": ["IPY_MODEL_92610383004a4f27af081962e62d46f8"], + "displayscale": 1, + "cube_resolution": 512, + "mouse_mode": "normal" + } + }, + "7477689a59354b559db709132bbf7ebc": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HBoxModel", + "state": { + "_view_name": "HBoxView", + "_dom_classes": [], + "_model_name": "HBoxModel", + "_view_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_view_count": null, + "_view_module_version": "1.5.0", + "box_style": "", + "layout": "IPY_MODEL_488d6d91b19e4cb7bb78d107f141db56", + "_model_module": "@jupyter-widgets/controls", + "children": [ + "IPY_MODEL_97dbb363ff564cceb42e2ccb4a4950ff", + "IPY_MODEL_b8f9849acedc46228ddd4d6acdb22e22" + ] + } + }, + "100eb6ce562243cc8d5b70aad0f59f58": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "state": { + "_view_name": "LayoutView", + "grid_template_rows": null, + "right": null, + "justify_content": null, + "_view_module": "@jupyter-widgets/base", + "overflow": null, + "_model_module_version": "1.2.0", + "_view_count": null, + "flex_flow": null, + "width": null, + "min_width": null, + "border": null, + "align_items": null, + "bottom": null, + "_model_module": "@jupyter-widgets/base", + "top": null, + "grid_column": null, + "overflow_y": null, + "overflow_x": null, + "grid_auto_flow": null, + "grid_area": null, + "grid_template_columns": null, + "flex": null, + "_model_name": "LayoutModel", + "justify_items": null, + "grid_row": null, + "max_height": null, + "align_content": null, + "visibility": null, + "align_self": null, + "height": null, + "min_height": null, + "padding": null, + "grid_auto_rows": null, + "grid_gap": null, + "max_width": null, + "order": null, + "_view_module_version": "1.2.0", + "grid_template_areas": null, + "object_position": null, + "object_fit": null, + "grid_auto_columns": null, + "margin": null, + "display": null, + "left": null + } + }, + "19b20aa775cf428883c2e7dfd5cc3bd0": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HBoxModel", + "state": { + "_view_name": "HBoxView", + "_dom_classes": [], + "_model_name": "HBoxModel", + "_view_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_view_count": null, + "_view_module_version": "1.5.0", + "box_style": "", + "layout": "IPY_MODEL_f0dc675ecb5f4325ae48ca250e29cd5e", + "_model_module": "@jupyter-widgets/controls", + "children": [ + "IPY_MODEL_02d4eb26fb22419d96533c6679dae3a1", + "IPY_MODEL_8c2d51efdcfa4427924009c0b0546c7c", + "IPY_MODEL_cf4babd2876747ac8bd0c6f282d42edf", + "IPY_MODEL_74d38f08eadb4fa49c7850dcbf94f133" + ] + } + }, + "4b54c82f7c7049049030ed6a426871dc": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HBoxModel", + "state": { + "_view_name": "HBoxView", + "_dom_classes": [], + "_model_name": "HBoxModel", + "_view_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_view_count": null, + "_view_module_version": "1.5.0", + "box_style": "", + "layout": "IPY_MODEL_f69e48b53b7c46f498c4bface2dd01e8", + "_model_module": "@jupyter-widgets/controls", + "children": [ + "IPY_MODEL_a9cbe234131c45b1a281c4db15e99413", + "IPY_MODEL_78a5d136a1f64174845163009a758048", + "IPY_MODEL_4388082b3f5a4f7499c7a64c69683430", + "IPY_MODEL_34e05629fda64857b27a55a6fb3966ff" + ] + } + }, + "488d6d91b19e4cb7bb78d107f141db56": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "state": { + "_view_name": "LayoutView", + "grid_template_rows": null, + "right": null, + "justify_content": null, + "_view_module": "@jupyter-widgets/base", + "overflow": null, + "_model_module_version": "1.2.0", + "_view_count": null, + "flex_flow": null, + "width": null, + "min_width": null, + "border": null, + "align_items": null, + "bottom": null, + "_model_module": "@jupyter-widgets/base", + "top": null, + "grid_column": null, + "overflow_y": null, + "overflow_x": null, + "grid_auto_flow": null, + "grid_area": null, + "grid_template_columns": null, + "flex": null, + "_model_name": "LayoutModel", + "justify_items": null, + "grid_row": null, + "max_height": null, + "align_content": null, + "visibility": null, + "align_self": null, + "height": null, + "min_height": null, + "padding": null, + "grid_auto_rows": null, + "grid_gap": null, + "max_width": null, + "order": null, + "_view_module_version": "1.2.0", + "grid_template_areas": null, + "object_position": null, + "object_fit": null, + "grid_auto_columns": null, + "margin": null, + "display": null, + "left": null + } + }, + "97dbb363ff564cceb42e2ccb4a4950ff": { + "model_module": "@jupyter-widgets/controls", + "model_name": "FloatLogSliderModel", + "state": { + "_view_name": "FloatLogSliderView", + "orientation": "horizontal", + "_view_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_view_count": null, + "disabled": false, + "readout_format": ".3g", + "_model_module": "@jupyter-widgets/controls", + "style": "IPY_MODEL_4f3473b3f5cc4f62a610db6c40461dd4", + "layout": "IPY_MODEL_8ed0972e56764df4ad5ca6e335a0e0c0", + "min": -2, + "continuous_update": true, + "description_tooltip": null, + "_dom_classes": [], + "description": "opacity", + "_model_name": "FloatLogSliderModel", + "max": 2, + "readout": true, + "step": 0.1, + "base": 10, + "value": 1, + "_view_module_version": "1.5.0" + } + }, + "b8f9849acedc46228ddd4d6acdb22e22": { + "model_module": "@jupyter-widgets/controls", + "model_name": "FloatLogSliderModel", + "state": { + "_view_name": "FloatLogSliderView", + "orientation": "horizontal", + "_view_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_view_count": null, + "disabled": false, + "readout_format": ".3g", + "_model_module": "@jupyter-widgets/controls", + "style": "IPY_MODEL_bbb62806ad2c450ba5b0e471ef86fdb3", + "layout": "IPY_MODEL_a79ca8a3ba1a4c128ed076a55e7d26d3", + "min": -1, + "continuous_update": true, + "description_tooltip": null, + "_dom_classes": [], + "description": "brightness", + "_model_name": "FloatLogSliderModel", + "max": 1, + "readout": true, + "step": 0.1, + "base": 10, + "value": 1, + "_view_module_version": "1.5.0" + } + }, + "f0dc675ecb5f4325ae48ca250e29cd5e": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "state": { + "_view_name": "LayoutView", + "grid_template_rows": null, + "right": null, + "justify_content": null, + "_view_module": "@jupyter-widgets/base", + "overflow": null, + "_model_module_version": "1.2.0", + "_view_count": null, + "flex_flow": null, + "width": null, + "min_width": null, + "border": null, + "align_items": null, + "bottom": null, + "_model_module": "@jupyter-widgets/base", + "top": null, + "grid_column": null, + "overflow_y": null, + "overflow_x": null, + "grid_auto_flow": null, + "grid_area": null, + "grid_template_columns": null, + "flex": null, + "_model_name": "LayoutModel", + "justify_items": null, + "grid_row": null, + "max_height": null, + "align_content": null, + "visibility": null, + "align_self": null, + "height": null, + "min_height": null, + "padding": null, + "grid_auto_rows": null, + "grid_gap": null, + "max_width": null, + "order": null, + "_view_module_version": "1.2.0", + "grid_template_areas": null, + "object_position": null, + "object_fit": null, + "grid_auto_columns": null, + "margin": null, + "display": null, + "left": null + } + }, + "02d4eb26fb22419d96533c6679dae3a1": { + "model_module": "@jupyter-widgets/controls", + "model_name": "LabelModel", + "state": { + "_view_name": "LabelView", + "style": "IPY_MODEL_60b66f00eb1e459d9d1384ed36238097", + "_dom_classes": [], + "description": "", + "_model_name": "LabelModel", + "placeholder": "​", + "_view_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "value": "levels:", + "_view_count": null, + "_view_module_version": "1.5.0", + "description_tooltip": null, + "_model_module": "@jupyter-widgets/controls", + "layout": "IPY_MODEL_e6ca23c5433d4cdb9160d74970d7afcc" + } + }, + "8c2d51efdcfa4427924009c0b0546c7c": { + "model_module": "@jupyter-widgets/controls", + "model_name": "FloatSliderModel", + "state": { + "_view_name": "FloatSliderView", + "style": "IPY_MODEL_2b7ee84a8e7f49bfbd1326008de861b8", + "_dom_classes": [], + "description": "", + "step": 0.001, + "_model_name": "FloatSliderModel", + "orientation": "horizontal", + "max": 1, + "_view_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "value": 0.25, + "_view_count": null, + "disabled": false, + "_view_module_version": "1.5.0", + "min": 0, + "continuous_update": true, + "readout_format": ".2f", + "description_tooltip": null, + "readout": true, + "_model_module": "@jupyter-widgets/controls", + "layout": "IPY_MODEL_39689dcb46a84e1499b45103b73b313a" + } + }, + "cf4babd2876747ac8bd0c6f282d42edf": { + "model_module": "@jupyter-widgets/controls", + "model_name": "FloatSliderModel", + "state": { + "_view_name": "FloatSliderView", + "style": "IPY_MODEL_2989acf9d262489f9f038294eb506507", + "_dom_classes": [], + "description": "", + "step": 0.001, + "_model_name": "FloatSliderModel", + "orientation": "horizontal", + "max": 1, + "_view_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "value": 0.75, + "_view_count": null, + "disabled": false, + "_view_module_version": "1.5.0", + "min": 0, + "continuous_update": true, + "readout_format": ".2f", + "description_tooltip": null, + "readout": true, + "_model_module": "@jupyter-widgets/controls", + "layout": "IPY_MODEL_a15e6cf4f5694dd8bd8b7673e0f3ac55" + } + }, + "74d38f08eadb4fa49c7850dcbf94f133": { + "model_module": "@jupyter-widgets/controls", + "model_name": "FloatSliderModel", + "state": { + "_view_name": "FloatSliderView", + "style": "IPY_MODEL_73e2d14fea6d449d878803d1a08d2956", + "_dom_classes": [], + "description": "", + "step": 0.001, + "_model_name": "FloatSliderModel", + "orientation": "horizontal", + "max": 1, + "_view_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "value": 0, + "_view_count": null, + "disabled": false, + "_view_module_version": "1.5.0", + "min": 0, + "continuous_update": true, + "readout_format": ".2f", + "description_tooltip": null, + "readout": true, + "_model_module": "@jupyter-widgets/controls", + "layout": "IPY_MODEL_af00703ee841496e9acddae379137791" + } + }, + "f69e48b53b7c46f498c4bface2dd01e8": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "state": { + "_view_name": "LayoutView", + "grid_template_rows": null, + "right": null, + "justify_content": null, + "_view_module": "@jupyter-widgets/base", + "overflow": null, + "_model_module_version": "1.2.0", + "_view_count": null, + "flex_flow": null, + "width": null, + "min_width": null, + "border": null, + "align_items": null, + "bottom": null, + "_model_module": "@jupyter-widgets/base", + "top": null, + "grid_column": null, + "overflow_y": null, + "overflow_x": null, + "grid_auto_flow": null, + "grid_area": null, + "grid_template_columns": null, + "flex": null, + "_model_name": "LayoutModel", + "justify_items": null, + "grid_row": null, + "max_height": null, + "align_content": null, + "visibility": null, + "align_self": null, + "height": null, + "min_height": null, + "padding": null, + "grid_auto_rows": null, + "grid_gap": null, + "max_width": null, + "order": null, + "_view_module_version": "1.2.0", + "grid_template_areas": null, + "object_position": null, + "object_fit": null, + "grid_auto_columns": null, + "margin": null, + "display": null, + "left": null + } + }, + "a9cbe234131c45b1a281c4db15e99413": { + "model_module": "@jupyter-widgets/controls", + "model_name": "LabelModel", + "state": { + "_view_name": "LabelView", + "style": "IPY_MODEL_767ef02d73824074b53829d92b0eccc5", + "_dom_classes": [], + "description": "", + "_model_name": "LabelModel", + "placeholder": "​", + "_view_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "value": "opacities:", + "_view_count": null, + "_view_module_version": "1.5.0", + "description_tooltip": null, + "_model_module": "@jupyter-widgets/controls", + "layout": "IPY_MODEL_f6d3348ed360411da83bb289fea09846" + } + }, + "78a5d136a1f64174845163009a758048": { + "model_module": "@jupyter-widgets/controls", + "model_name": "FloatSliderModel", + "state": { + "_view_name": "FloatSliderView", + "style": "IPY_MODEL_45a664907a2e4c388abdfdefd4b9377a", + "_dom_classes": [], + "description": "", + "step": 0.001, + "_model_name": "FloatSliderModel", + "orientation": "horizontal", + "max": 0.2, + "_view_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "value": 0.03, + "_view_count": null, + "disabled": false, + "_view_module_version": "1.5.0", + "min": 0, + "continuous_update": true, + "readout_format": ".2f", + "description_tooltip": null, + "readout": true, + "_model_module": "@jupyter-widgets/controls", + "layout": "IPY_MODEL_947e562976c449718578676a34739494" + } + }, + "4388082b3f5a4f7499c7a64c69683430": { + "model_module": "@jupyter-widgets/controls", + "model_name": "FloatSliderModel", + "state": { + "_view_name": "FloatSliderView", + "style": "IPY_MODEL_389cbfc5e0dd4bfd99a1881f0b408156", + "_dom_classes": [], + "description": "", + "step": 0.001, + "_model_name": "FloatSliderModel", + "orientation": "horizontal", + "max": 0.2, + "_view_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "value": 0.03, + "_view_count": null, + "disabled": false, + "_view_module_version": "1.5.0", + "min": 0, + "continuous_update": true, + "readout_format": ".2f", + "description_tooltip": null, + "readout": true, + "_model_module": "@jupyter-widgets/controls", + "layout": "IPY_MODEL_b44b6db482b04c55bf7345caa48419e7" + } + }, + "34e05629fda64857b27a55a6fb3966ff": { + "model_module": "@jupyter-widgets/controls", + "model_name": "FloatSliderModel", + "state": { + "_view_name": "FloatSliderView", + "style": "IPY_MODEL_bf0d78a072ca4ecd8ab2da9d609af582", + "_dom_classes": [], + "description": "", + "step": 0.001, + "_model_name": "FloatSliderModel", + "orientation": "horizontal", + "max": 0.2, + "_view_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "value": 0.03, + "_view_count": null, + "disabled": false, + "_view_module_version": "1.5.0", + "min": 0, + "continuous_update": true, + "readout_format": ".2f", + "description_tooltip": null, + "readout": true, + "_model_module": "@jupyter-widgets/controls", + "layout": "IPY_MODEL_454bb9c66647447bb5af1b8c0c44b089" + } + }, + "4f3473b3f5cc4f62a610db6c40461dd4": { + "model_module": "@jupyter-widgets/controls", + "model_name": "SliderStyleModel", + "state": { + "_view_name": "StyleView", + "handle_color": null, + "_model_name": "SliderStyleModel", + "description_width": "", + "_view_module": "@jupyter-widgets/base", + "_model_module_version": "1.5.0", + "_view_count": null, + "_view_module_version": "1.2.0", + "_model_module": "@jupyter-widgets/controls" + } + }, + "8ed0972e56764df4ad5ca6e335a0e0c0": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "state": { + "_view_name": "LayoutView", + "grid_template_rows": null, + "right": null, + "justify_content": null, + "_view_module": "@jupyter-widgets/base", + "overflow": null, + "_model_module_version": "1.2.0", + "_view_count": null, + "flex_flow": null, + "width": null, + "min_width": null, + "border": null, + "align_items": null, + "bottom": null, + "_model_module": "@jupyter-widgets/base", + "top": null, + "grid_column": null, + "overflow_y": null, + "overflow_x": null, + "grid_auto_flow": null, + "grid_area": null, + "grid_template_columns": null, + "flex": null, + "_model_name": "LayoutModel", + "justify_items": null, + "grid_row": null, + "max_height": null, + "align_content": null, + "visibility": null, + "align_self": null, + "height": null, + "min_height": null, + "padding": null, + "grid_auto_rows": null, + "grid_gap": null, + "max_width": null, + "order": null, + "_view_module_version": "1.2.0", + "grid_template_areas": null, + "object_position": null, + "object_fit": null, + "grid_auto_columns": null, + "margin": null, + "display": null, + "left": null + } + }, + "bbb62806ad2c450ba5b0e471ef86fdb3": { + "model_module": "@jupyter-widgets/controls", + "model_name": "SliderStyleModel", + "state": { + "_view_name": "StyleView", + "handle_color": null, + "_model_name": "SliderStyleModel", + "description_width": "", + "_view_module": "@jupyter-widgets/base", + "_model_module_version": "1.5.0", + "_view_count": null, + "_view_module_version": "1.2.0", + "_model_module": "@jupyter-widgets/controls" + } + }, + "a79ca8a3ba1a4c128ed076a55e7d26d3": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "state": { + "_view_name": "LayoutView", + "grid_template_rows": null, + "right": null, + "justify_content": null, + "_view_module": "@jupyter-widgets/base", + "overflow": null, + "_model_module_version": "1.2.0", + "_view_count": null, + "flex_flow": null, + "width": null, + "min_width": null, + "border": null, + "align_items": null, + "bottom": null, + "_model_module": "@jupyter-widgets/base", + "top": null, + "grid_column": null, + "overflow_y": null, + "overflow_x": null, + "grid_auto_flow": null, + "grid_area": null, + "grid_template_columns": null, + "flex": null, + "_model_name": "LayoutModel", + "justify_items": null, + "grid_row": null, + "max_height": null, + "align_content": null, + "visibility": null, + "align_self": null, + "height": null, + "min_height": null, + "padding": null, + "grid_auto_rows": null, + "grid_gap": null, + "max_width": null, + "order": null, + "_view_module_version": "1.2.0", + "grid_template_areas": null, + "object_position": null, + "object_fit": null, + "grid_auto_columns": null, + "margin": null, + "display": null, + "left": null + } + }, + "60b66f00eb1e459d9d1384ed36238097": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "state": { + "_view_name": "StyleView", + "_model_name": "DescriptionStyleModel", + "description_width": "", + "_view_module": "@jupyter-widgets/base", + "_model_module_version": "1.5.0", + "_view_count": null, + "_view_module_version": "1.2.0", + "_model_module": "@jupyter-widgets/controls" + } + }, + "e6ca23c5433d4cdb9160d74970d7afcc": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "state": { + "_view_name": "LayoutView", + "grid_template_rows": null, + "right": null, + "justify_content": null, + "_view_module": "@jupyter-widgets/base", + "overflow": null, + "_model_module_version": "1.2.0", + "_view_count": null, + "flex_flow": null, + "width": null, + "min_width": null, + "border": null, + "align_items": null, + "bottom": null, + "_model_module": "@jupyter-widgets/base", + "top": null, + "grid_column": null, + "overflow_y": null, + "overflow_x": null, + "grid_auto_flow": null, + "grid_area": null, + "grid_template_columns": null, + "flex": null, + "_model_name": "LayoutModel", + "justify_items": null, + "grid_row": null, + "max_height": null, + "align_content": null, + "visibility": null, + "align_self": null, + "height": null, + "min_height": null, + "padding": null, + "grid_auto_rows": null, + "grid_gap": null, + "max_width": null, + "order": null, + "_view_module_version": "1.2.0", + "grid_template_areas": null, + "object_position": null, + "object_fit": null, + "grid_auto_columns": null, + "margin": null, + "display": null, + "left": null + } + }, + "2b7ee84a8e7f49bfbd1326008de861b8": { + "model_module": "@jupyter-widgets/controls", + "model_name": "SliderStyleModel", + "state": { + "_view_name": "StyleView", + "handle_color": null, + "_model_name": "SliderStyleModel", + "description_width": "", + "_view_module": "@jupyter-widgets/base", + "_model_module_version": "1.5.0", + "_view_count": null, + "_view_module_version": "1.2.0", + "_model_module": "@jupyter-widgets/controls" + } + }, + "39689dcb46a84e1499b45103b73b313a": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "state": { + "_view_name": "LayoutView", + "grid_template_rows": null, + "right": null, + "justify_content": null, + "_view_module": "@jupyter-widgets/base", + "overflow": null, + "_model_module_version": "1.2.0", + "_view_count": null, + "flex_flow": null, + "width": null, + "min_width": null, + "border": null, + "align_items": null, + "bottom": null, + "_model_module": "@jupyter-widgets/base", + "top": null, + "grid_column": null, + "overflow_y": null, + "overflow_x": null, + "grid_auto_flow": null, + "grid_area": null, + "grid_template_columns": null, + "flex": null, + "_model_name": "LayoutModel", + "justify_items": null, + "grid_row": null, + "max_height": null, + "align_content": null, + "visibility": null, + "align_self": null, + "height": null, + "min_height": null, + "padding": null, + "grid_auto_rows": null, + "grid_gap": null, + "max_width": null, + "order": null, + "_view_module_version": "1.2.0", + "grid_template_areas": null, + "object_position": null, + "object_fit": null, + "grid_auto_columns": null, + "margin": null, + "display": null, + "left": null + } + }, + "2989acf9d262489f9f038294eb506507": { + "model_module": "@jupyter-widgets/controls", + "model_name": "SliderStyleModel", + "state": { + "_view_name": "StyleView", + "handle_color": null, + "_model_name": "SliderStyleModel", + "description_width": "", + "_view_module": "@jupyter-widgets/base", + "_model_module_version": "1.5.0", + "_view_count": null, + "_view_module_version": "1.2.0", + "_model_module": "@jupyter-widgets/controls" + } + }, + "a15e6cf4f5694dd8bd8b7673e0f3ac55": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "state": { + "_view_name": "LayoutView", + "grid_template_rows": null, + "right": null, + "justify_content": null, + "_view_module": "@jupyter-widgets/base", + "overflow": null, + "_model_module_version": "1.2.0", + "_view_count": null, + "flex_flow": null, + "width": null, + "min_width": null, + "border": null, + "align_items": null, + "bottom": null, + "_model_module": "@jupyter-widgets/base", + "top": null, + "grid_column": null, + "overflow_y": null, + "overflow_x": null, + "grid_auto_flow": null, + "grid_area": null, + "grid_template_columns": null, + "flex": null, + "_model_name": "LayoutModel", + "justify_items": null, + "grid_row": null, + "max_height": null, + "align_content": null, + "visibility": null, + "align_self": null, + "height": null, + "min_height": null, + "padding": null, + "grid_auto_rows": null, + "grid_gap": null, + "max_width": null, + "order": null, + "_view_module_version": "1.2.0", + "grid_template_areas": null, + "object_position": null, + "object_fit": null, + "grid_auto_columns": null, + "margin": null, + "display": null, + "left": null + } + }, + "73e2d14fea6d449d878803d1a08d2956": { + "model_module": "@jupyter-widgets/controls", + "model_name": "SliderStyleModel", + "state": { + "_view_name": "StyleView", + "handle_color": null, + "_model_name": "SliderStyleModel", + "description_width": "", + "_view_module": "@jupyter-widgets/base", + "_model_module_version": "1.5.0", + "_view_count": null, + "_view_module_version": "1.2.0", + "_model_module": "@jupyter-widgets/controls" + } + }, + "af00703ee841496e9acddae379137791": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "state": { + "_view_name": "LayoutView", + "grid_template_rows": null, + "right": null, + "justify_content": null, + "_view_module": "@jupyter-widgets/base", + "overflow": null, + "_model_module_version": "1.2.0", + "_view_count": null, + "flex_flow": null, + "width": null, + "min_width": null, + "border": null, + "align_items": null, + "bottom": null, + "_model_module": "@jupyter-widgets/base", + "top": null, + "grid_column": null, + "overflow_y": null, + "overflow_x": null, + "grid_auto_flow": null, + "grid_area": null, + "grid_template_columns": null, + "flex": null, + "_model_name": "LayoutModel", + "justify_items": null, + "grid_row": null, + "max_height": null, + "align_content": null, + "visibility": null, + "align_self": null, + "height": null, + "min_height": null, + "padding": null, + "grid_auto_rows": null, + "grid_gap": null, + "max_width": null, + "order": null, + "_view_module_version": "1.2.0", + "grid_template_areas": null, + "object_position": null, + "object_fit": null, + "grid_auto_columns": null, + "margin": null, + "display": null, + "left": null + } + }, + "767ef02d73824074b53829d92b0eccc5": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "state": { + "_view_name": "StyleView", + "_model_name": "DescriptionStyleModel", + "description_width": "", + "_view_module": "@jupyter-widgets/base", + "_model_module_version": "1.5.0", + "_view_count": null, + "_view_module_version": "1.2.0", + "_model_module": "@jupyter-widgets/controls" + } + }, + "f6d3348ed360411da83bb289fea09846": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "state": { + "_view_name": "LayoutView", + "grid_template_rows": null, + "right": null, + "justify_content": null, + "_view_module": "@jupyter-widgets/base", + "overflow": null, + "_model_module_version": "1.2.0", + "_view_count": null, + "flex_flow": null, + "width": null, + "min_width": null, + "border": null, + "align_items": null, + "bottom": null, + "_model_module": "@jupyter-widgets/base", + "top": null, + "grid_column": null, + "overflow_y": null, + "overflow_x": null, + "grid_auto_flow": null, + "grid_area": null, + "grid_template_columns": null, + "flex": null, + "_model_name": "LayoutModel", + "justify_items": null, + "grid_row": null, + "max_height": null, + "align_content": null, + "visibility": null, + "align_self": null, + "height": null, + "min_height": null, + "padding": null, + "grid_auto_rows": null, + "grid_gap": null, + "max_width": null, + "order": null, + "_view_module_version": "1.2.0", + "grid_template_areas": null, + "object_position": null, + "object_fit": null, + "grid_auto_columns": null, + "margin": null, + "display": null, + "left": null + } + }, + "45a664907a2e4c388abdfdefd4b9377a": { + "model_module": "@jupyter-widgets/controls", + "model_name": "SliderStyleModel", + "state": { + "_view_name": "StyleView", + "handle_color": null, + "_model_name": "SliderStyleModel", + "description_width": "", + "_view_module": "@jupyter-widgets/base", + "_model_module_version": "1.5.0", + "_view_count": null, + "_view_module_version": "1.2.0", + "_model_module": "@jupyter-widgets/controls" + } + }, + "947e562976c449718578676a34739494": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "state": { + "_view_name": "LayoutView", + "grid_template_rows": null, + "right": null, + "justify_content": null, + "_view_module": "@jupyter-widgets/base", + "overflow": null, + "_model_module_version": "1.2.0", + "_view_count": null, + "flex_flow": null, + "width": null, + "min_width": null, + "border": null, + "align_items": null, + "bottom": null, + "_model_module": "@jupyter-widgets/base", + "top": null, + "grid_column": null, + "overflow_y": null, + "overflow_x": null, + "grid_auto_flow": null, + "grid_area": null, + "grid_template_columns": null, + "flex": null, + "_model_name": "LayoutModel", + "justify_items": null, + "grid_row": null, + "max_height": null, + "align_content": null, + "visibility": null, + "align_self": null, + "height": null, + "min_height": null, + "padding": null, + "grid_auto_rows": null, + "grid_gap": null, + "max_width": null, + "order": null, + "_view_module_version": "1.2.0", + "grid_template_areas": null, + "object_position": null, + "object_fit": null, + "grid_auto_columns": null, + "margin": null, + "display": null, + "left": null + } + }, + "389cbfc5e0dd4bfd99a1881f0b408156": { + "model_module": "@jupyter-widgets/controls", + "model_name": "SliderStyleModel", + "state": { + "_view_name": "StyleView", + "handle_color": null, + "_model_name": "SliderStyleModel", + "description_width": "", + "_view_module": "@jupyter-widgets/base", + "_model_module_version": "1.5.0", + "_view_count": null, + "_view_module_version": "1.2.0", + "_model_module": "@jupyter-widgets/controls" + } + }, + "b44b6db482b04c55bf7345caa48419e7": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "state": { + "_view_name": "LayoutView", + "grid_template_rows": null, + "right": null, + "justify_content": null, + "_view_module": "@jupyter-widgets/base", + "overflow": null, + "_model_module_version": "1.2.0", + "_view_count": null, + "flex_flow": null, + "width": null, + "min_width": null, + "border": null, + "align_items": null, + "bottom": null, + "_model_module": "@jupyter-widgets/base", + "top": null, + "grid_column": null, + "overflow_y": null, + "overflow_x": null, + "grid_auto_flow": null, + "grid_area": null, + "grid_template_columns": null, + "flex": null, + "_model_name": "LayoutModel", + "justify_items": null, + "grid_row": null, + "max_height": null, + "align_content": null, + "visibility": null, + "align_self": null, + "height": null, + "min_height": null, + "padding": null, + "grid_auto_rows": null, + "grid_gap": null, + "max_width": null, + "order": null, + "_view_module_version": "1.2.0", + "grid_template_areas": null, + "object_position": null, + "object_fit": null, + "grid_auto_columns": null, + "margin": null, + "display": null, + "left": null + } + }, + "bf0d78a072ca4ecd8ab2da9d609af582": { + "model_module": "@jupyter-widgets/controls", + "model_name": "SliderStyleModel", + "state": { + "_view_name": "StyleView", + "handle_color": null, + "_model_name": "SliderStyleModel", + "description_width": "", + "_view_module": "@jupyter-widgets/base", + "_model_module_version": "1.5.0", + "_view_count": null, + "_view_module_version": "1.2.0", + "_model_module": "@jupyter-widgets/controls" + } + }, + "454bb9c66647447bb5af1b8c0c44b089": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "state": { + "_view_name": "LayoutView", + "grid_template_rows": null, + "right": null, + "justify_content": null, + "_view_module": "@jupyter-widgets/base", + "overflow": null, + "_model_module_version": "1.2.0", + "_view_count": null, + "flex_flow": null, + "width": null, + "min_width": null, + "border": null, + "align_items": null, + "bottom": null, + "_model_module": "@jupyter-widgets/base", + "top": null, + "grid_column": null, + "overflow_y": null, + "overflow_x": null, + "grid_auto_flow": null, + "grid_area": null, + "grid_template_columns": null, + "flex": null, + "_model_name": "LayoutModel", + "justify_items": null, + "grid_row": null, + "max_height": null, + "align_content": null, + "visibility": null, + "align_self": null, + "height": null, + "min_height": null, + "padding": null, + "grid_auto_rows": null, + "grid_gap": null, + "max_width": null, + "order": null, + "_view_module_version": "1.2.0", + "grid_template_areas": null, + "object_position": null, + "object_fit": null, + "grid_auto_columns": null, + "margin": null, + "display": null, + "left": null + } + }, + "af8f54e0b1644171a2ef24959367b58a": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "state": { + "_view_name": "LayoutView", + "grid_template_rows": null, + "right": null, + "justify_content": null, + "_view_module": "@jupyter-widgets/base", + "overflow": null, + "_model_module_version": "1.2.0", + "_view_count": null, + "flex_flow": null, + "width": null, + "min_width": null, + "border": null, + "align_items": null, + "bottom": null, + "_model_module": "@jupyter-widgets/base", + "top": null, + "grid_column": null, + "overflow_y": null, + "overflow_x": null, + "grid_auto_flow": null, + "grid_area": null, + "grid_template_columns": null, + "flex": null, + "_model_name": "LayoutModel", + "justify_items": null, + "grid_row": null, + "max_height": null, + "align_content": null, + "visibility": null, + "align_self": null, + "height": null, + "min_height": null, + "padding": null, + "grid_auto_rows": null, + "grid_gap": null, + "max_width": null, + "order": null, + "_view_module_version": "1.2.0", + "grid_template_areas": null, + "object_position": null, + "object_fit": null, + "grid_auto_columns": null, + "margin": null, + "display": null, + "left": null + } + }, + "c47964ff73464a8196f6cab80137839f": { + "model_module": "jupyter-leaflet", + "model_name": "LeafletTileLayerModel", + "state": { + "_view_name": "LeafletTileLayerView", + "_view_module": "jupyter-leaflet", + "max_zoom": 9, + "_model_module_version": "^0.14.0", + "_view_count": null, + "visible": true, + "min_zoom": 1, + "tms": false, + "_model_module": "jupyter-leaflet", + "loading": false, + "bottom": true, + "no_wrap": false, + "tile_size": 256, + "popup_min_width": 50, + "opacity": 1, + "popup": null, + "attribution": "\nImagery provided by services from the Global Imagery Browse Services (GIBS), operated by the NASA/GSFC/Earth Science Data and Information System (ESDIS) with funding provided by NASA/HQ.\n", + "_model_name": "LeafletTileLayerModel", + "max_native_zoom": 18, + "base": false, + "min_native_zoom": 0, + "show_loading": false, + "name": "NASAGIBS.ModisTerraTrueColorCR", + "url": "https://gibs.earthdata.nasa.gov/wmts/epsg3857/best/MODIS_Terra_CorrectedReflectance_TrueColor/default/2017-04-08/GoogleMapsCompatible_Level9/{z}/{y}/{x}.jpg", + "popup_max_height": null, + "popup_max_width": 300, + "detect_retina": false, + "_view_module_version": "^0.14.0", + "options": [ + "attribution", + "detect_retina", + "max_native_zoom", + "max_zoom", + "min_native_zoom", + "min_zoom", + "no_wrap", + "tile_size", + "tms" + ] + } + }, + "3d00982c2f0d45568fa1f006f954f07f": { + "model_module": "jupyter-leaflet", + "model_name": "LeafletMapStyleModel", + "state": { + "_view_name": "StyleView", + "_model_name": "LeafletMapStyleModel", + "_view_module": "@jupyter-widgets/base", + "_model_module_version": "^0.14.0", + "_view_count": null, + "cursor": "grab", + "_view_module_version": "1.2.0", + "_model_module": "jupyter-leaflet" + } + }, + "bca6b492296948ffaf8648e0a9821974": { + "model_module": "jupyter-leaflet", + "model_name": "LeafletMapStyleModel", + "state": { + "_view_name": "StyleView", + "_model_name": "LeafletMapStyleModel", + "_view_module": "@jupyter-widgets/base", + "_model_module_version": "^0.14.0", + "_view_count": null, + "cursor": "move", + "_view_module_version": "1.2.0", + "_model_module": "jupyter-leaflet" + } + }, + "57e88daade524f2897f3bc422fa7dd9d": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "state": { + "_view_name": "LayoutView", + "grid_template_rows": null, + "right": null, + "justify_content": null, + "_view_module": "@jupyter-widgets/base", + "overflow": null, + "_model_module_version": "1.2.0", + "_view_count": null, + "flex_flow": null, + "width": null, + "min_width": null, + "border": null, + "align_items": null, + "bottom": null, + "_model_module": "@jupyter-widgets/base", + "top": null, + "grid_column": null, + "overflow_y": null, + "overflow_x": null, + "grid_auto_flow": null, + "grid_area": null, + "grid_template_columns": null, + "flex": null, + "_model_name": "LayoutModel", + "justify_items": null, + "grid_row": null, + "max_height": null, + "align_content": null, + "visibility": null, + "align_self": null, + "height": null, + "min_height": null, + "padding": null, + "grid_auto_rows": null, + "grid_gap": null, + "max_width": null, + "order": null, + "_view_module_version": "1.2.0", + "grid_template_areas": null, + "object_position": null, + "object_fit": null, + "grid_auto_columns": null, + "margin": null, + "display": null, + "left": null + } + }, + "1ec10448de0c43be8272046e2309278d": { + "model_module": "jupyter-leaflet", + "model_name": "LeafletMapStyleModel", + "state": { + "_view_name": "StyleView", + "_model_name": "LeafletMapStyleModel", + "_view_module": "@jupyter-widgets/base", + "_model_module_version": "^0.14.0", + "_view_count": null, + "cursor": "grab", + "_view_module_version": "1.2.0", + "_model_module": "jupyter-leaflet" + } + }, + "34baf5762f2344e19200892a8efafc27": { + "model_module": "jupyter-leaflet", + "model_name": "LeafletMapModel", + "state": { + "_view_name": "LeafletMapView", + "keyboard_pan_offset": 80, + "right": 0, + "tap": true, + "_view_module": "jupyter-leaflet", + "max_zoom": 18, + "_model_module_version": "^0.14.0", + "_view_count": null, + "zoom_snap": 1, + "min_zoom": 1, + "bounce_at_zoom_limits": true, + "keyboard": true, + "north": 0, + "scroll_wheel_zoom": false, + "dragging": true, + "_model_module": "jupyter-leaflet", + "zoom_delta": 1, + "close_popup_on_click": true, + "fullscreen": false, + "style": "IPY_MODEL_1ec10448de0c43be8272046e2309278d", + "layout": "IPY_MODEL_57e88daade524f2897f3bc422fa7dd9d", + "bottom": 0, + "inertia_max_speed": 1500, + "top": 9007199254740991, + "box_zoom": true, + "controls": [ + "IPY_MODEL_41f57cfcf4674b5298525dfd6ae9ee93", + "IPY_MODEL_8b3aad421d6f43718708c75e4aa0f9ce" + ], + "default_style": "IPY_MODEL_3d00982c2f0d45568fa1f006f954f07f", + "east": 0, + "double_click_zoom": true, + "interpolation": "bilinear", + "layers": ["IPY_MODEL_c47964ff73464a8196f6cab80137839f"], + "dragging_style": "IPY_MODEL_bca6b492296948ffaf8648e0a9821974", + "_dom_classes": [], + "zoom_animation_threshold": 4, + "_model_name": "LeafletMapModel", + "zoom_start": 12, + "modisdate": "yesterday", + "keyboard_zoom_offset": 1, + "inertia_deceleration": 3000, + "inertia": true, + "crs": { + "name": "EPSG3857", + "custom": false + }, + "center": [52.204793, 360.121558], + "zoom": 4, + "world_copy_jump": false, + "_view_module_version": "^0.14.0", + "window_url": "", + "tap_tolerance": 15, + "west": 0, + "touch_zoom": true, + "options": [ + "bounce_at_zoom_limits", + "box_zoom", + "center", + "close_popup_on_click", + "double_click_zoom", + "dragging", + "fullscreen", + "inertia", + "inertia_deceleration", + "inertia_max_speed", + "interpolation", + "keyboard", + "keyboard_pan_offset", + "keyboard_zoom_offset", + "max_zoom", + "min_zoom", + "scroll_wheel_zoom", + "tap", + "tap_tolerance", + "touch_zoom", + "world_copy_jump", + "zoom", + "zoom_animation_threshold", + "zoom_delta", + "zoom_snap", + "zoom_start" + ], + "south": 0, + "left": 9007199254740991 + } + }, + "41f57cfcf4674b5298525dfd6ae9ee93": { + "model_module": "jupyter-leaflet", + "model_name": "LeafletZoomControlModel", + "state": { + "_view_name": "LeafletZoomControlView", + "zoom_in_title": "Zoom in", + "_model_name": "LeafletZoomControlModel", + "_view_module": "jupyter-leaflet", + "_model_module_version": "^0.14.0", + "_view_count": null, + "_view_module_version": "^0.14.0", + "zoom_out_title": "Zoom out", + "position": "topleft", + "zoom_in_text": "+", + "_model_module": "jupyter-leaflet", + "options": [ + "position", + "zoom_in_text", + "zoom_in_title", + "zoom_out_text", + "zoom_out_title" + ], + "zoom_out_text": "-" + } + }, + "8b3aad421d6f43718708c75e4aa0f9ce": { + "model_module": "jupyter-leaflet", + "model_name": "LeafletAttributionControlModel", + "state": { + "_view_name": "LeafletAttributionControlView", + "prefix": "ipyleaflet", + "_model_name": "LeafletAttributionControlModel", + "_view_module": "jupyter-leaflet", + "_model_module_version": "^0.14.0", + "_view_count": null, + "_view_module_version": "^0.14.0", + "position": "bottomright", + "_model_module": "jupyter-leaflet", + "options": ["position", "prefix"] + } + } +} diff --git a/test/manager.spec.js b/test/manager.spec.js index 2efb555..533aa3c 100644 --- a/test/manager.spec.js +++ b/test/manager.spec.js @@ -14,7 +14,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - import {createWidgetManager} from '../dist/manager.dev.js'; /** @@ -33,7 +32,7 @@ class FakeState { modelName: state.model_name, modelModuleVersion: state.model_module_version, state: state.state, - } + }; } } @@ -49,7 +48,9 @@ describe('widget manager', () => { it('can render a threejs scene', async () => { const modelId = 'pythree_example_model_007'; - const state = await (await fetch('/base/test/jupyter_threejs_state.json')).json(); + const state = await ( + await fetch('/base/test/jupyter_threejs_state.json') + ).json(); const provider = new FakeState(state); const manager = createWidgetManager(provider); @@ -73,56 +74,60 @@ describe('widget manager', () => { it('throws for invalid specs', async () => { const provider = new FakeState({ - '123': { + 123: { state: {}, - } + }, }); const oldHandler = window.onerror; window.onerror = () => {}; const manager = createWidgetManager(provider); await expectAsync(manager.render('123', container)).toBeRejected(); - await new Promise((resolve)=> setTimeout(resolve, 100)); + await new Promise((resolve) => setTimeout(resolve, 100)); window.onerror = oldHandler; }); it('has proper lifecycle events', async () => { const provider = new FakeState({ - '123': { + 123: { state: { - "_view_module": "custom-widget", - "_view_name": "View", + _view_module: 'custom-widget', + _view_name: 'View', }, - "model_module": "custom-widget", - "model_name": "Model", - } + model_module: 'custom-widget', + model_name: 'Model', + }, }); const manager = createWidgetManager(provider); let modelClass; let viewClass; - manager.loader.define('custom-widget', ['@jupyter-widgets/base'], (base) => { - class Model extends base.DOMWidgetModel { - constructor(...args) { - super(...args); + manager.loader.define( + 'custom-widget', + ['@jupyter-widgets/base'], + (base) => { + class Model extends base.DOMWidgetModel { + constructor(...args) { + super(...args); + } } - } - class View extends base.DOMWidgetView { - constructor(...args) { - super(...args); - this.hasBeenDisplayed = false; - this.displayed.then(() => { - this.hasBeenDisplayed = true; - }); + class View extends base.DOMWidgetView { + constructor(...args) { + super(...args); + this.hasBeenDisplayed = false; + this.displayed.then(() => { + this.hasBeenDisplayed = true; + }); + } } - } - modelClass = Model; - viewClass = View; + modelClass = Model; + viewClass = View; - return { - Model, - View, + return { + Model, + View, + }; } - }); + ); container.remove(); @@ -136,4 +141,4 @@ describe('widget manager', () => { await new Promise((resolve) => setTimeout(resolve, 0)); expect(view.hasBeenDisplayed).toBe(true); }); -}); \ No newline at end of file +}); diff --git a/test/server/server.ts b/test/server/server.ts index 4c97531..89946b7 100644 --- a/test/server/server.ts +++ b/test/server/server.ts @@ -20,9 +20,9 @@ * file, for easier debugging. */ import fs from 'fs'; -import { IncomingMessage, ServerResponse } from 'http'; +import {IncomingMessage, ServerResponse} from 'http'; import http from 'http'; -import { AddressInfo } from 'net'; +import {AddressInfo} from 'net'; import path from 'path'; const esbuild = require('esbuild'); @@ -50,7 +50,9 @@ async function serveDev(response: ServerResponse) { async function serveTest(request: IncomingMessage, response: ServerResponse) { const testFolder = path.resolve(path.normalize('./test/')); - const toServe = path.resolve(path.normalize(path.join('./test/', request.url!))); + const toServe = path.resolve( + path.normalize(path.join('./test/', request.url!)) + ); if (!toServe.startsWith(testFolder)) { throw new Error('not allowed'); } @@ -68,22 +70,23 @@ async function serveTest(request: IncomingMessage, response: ServerResponse) { response.end(contents); } -const server = http.createServer({}, async (request, response) => { - - console.log(request.url); - try { - if (request.url === '/manager.dev.js') { - await serveDev(response); +const server = http + .createServer({}, async (request, response) => { + console.log(request.url); + try { + if (request.url === '/manager.dev.js') { + await serveDev(response); + return; + } + await serveTest(request, response); return; + } catch (error) { + response.writeHead(500, 'Error'); + response.end(String(error)); + console.error(error); } - await serveTest(request, response); - return; - } catch (error) { - response.writeHead(500, 'Error'); - response.end(String(error)); - console.error(error); - } -}).listen(9897, '127.0.0.1', () => { - const address = server.address() as AddressInfo; - console.log(`Listening on http://127.0.0.1:${address.port}`); -}); \ No newline at end of file + }) + .listen(9897, '127.0.0.1', () => { + const address = server.address() as AddressInfo; + console.log(`Listening on http://127.0.0.1:${address.port}`); + }); diff --git a/test/server/tsconfig.json b/test/server/tsconfig.json index 3b7e25f..8076181 100644 --- a/test/server/tsconfig.json +++ b/test/server/tsconfig.json @@ -1,17 +1,15 @@ { "compilerOptions": { - "sourceMap": true, - "strict": true, - "module": "commonjs", - "moduleResolution": "node", - "target": "es5", - "skipLibCheck": true, - "esModuleInterop": true, - "experimentalDecorators": true, - "outDir": "lib", - "lib": ["ES2018"] + "sourceMap": true, + "strict": true, + "module": "commonjs", + "moduleResolution": "node", + "target": "es5", + "skipLibCheck": true, + "esModuleInterop": true, + "experimentalDecorators": true, + "outDir": "lib", + "lib": ["ES2018"] }, - "include": [ - "./**/*" - ] + "include": ["./**/*"] } diff --git a/tsconfig.json b/tsconfig.json index b65c257..f675e5c 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,21 +1,16 @@ { "compilerOptions": { - "sourceMap": true, - "strict": true, - "module": "commonjs", - "moduleResolution": "node", - "target": "es5", - "skipLibCheck": true, - "esModuleInterop": true, - "experimentalDecorators": true, - "outDir": "lib", - "lib": ["ES2018", "dom"] + "sourceMap": true, + "strict": true, + "module": "commonjs", + "moduleResolution": "node", + "target": "es5", + "skipLibCheck": true, + "esModuleInterop": true, + "experimentalDecorators": true, + "outDir": "lib", + "lib": ["ES2018", "dom"] }, - "include": [ - "./src/**/*.ts" - ], - "exclude": [ - "node_modules", - "**/*.spec.ts" - ] + "include": ["./src/**/*.ts"], + "exclude": ["node_modules", "**/*.spec.ts"] }