diff --git a/.ncurc.yml b/.ncurc.yml
index d675bc11b2..3ac07e871d 100644
--- a/.ncurc.yml
+++ b/.ncurc.yml
@@ -4,3 +4,5 @@ reject:
- delay
# Now ESM and depends on top-level await.
- tempfile
+ # Version 7 had breaking changes not worth the effort.
+ - conventional-changelog
diff --git a/bower.json b/bower.json
index 1760d1517b..a0d5ba007e 100644
--- a/bower.json
+++ b/bower.json
@@ -12,29 +12,22 @@
},
"license": "MIT",
"dependencies": {
- "ace": "ajaxorg/ace-builds#v1.4.6",
- "async": "2.1.4",
- "babel-standalone": "6.19.0",
- "bowser": "1.0.0",
+ "ace": "ajaxorg/ace-builds#v1.43.2",
"chroma-js": "1.1.1",
"ckeditor": "4.7.3",
"colors": "3.0.0",
"d3": "3.5.17",
"d3-plugins": "cheminfo/d3-plugins#ea652308c616f3accde0a418f7ccc6254a932985",
"eventEmitter": "^5.2.3",
- "fancytree": "2.20.0",
+ "fancytree": "2.38.5",
"farbtastic": "2.0.0-alpha.1",
- "fetch": "2.0.1",
"file-saver.js": "cheminfo-js/file-saver.js#6a90cb37e56fbb110f03c70c90ebceb9312650db",
"flag-icon-css": "2.8.0",
"jit": "2.0.2",
"jqgrid_edit": "git://github.com/NPellet/jqGrid#4.5.6",
- "jquery": "2.2.4",
- "jquery-cookie": "1.4.1",
- "jquery-mousewheel": "3.1.13",
+ "jquery-mousewheel": "3.2.2",
"jquery-qrcode": "cheminfo/jquery-qrcode#efece6cf4e32d1151436a146a2ac0e2197e0837b",
"jquery-tmpl": "BorisMoore/jquery-tmpl#vBeta1.0.0",
- "jquery-ui": "1.12.1",
"jquery.panzoom": "cheminfo/jquery.panzoom#626f65a0180211aafc9b5d57696ac56350be6bf1",
"jquery.threedubmedia": "git://github.com/threedubmedia/jquery.threedubmedia",
"jsbarcode": "3.5.7",
@@ -42,7 +35,6 @@
"jsme": "bcdc8f0d475eb72c2d75d20afae0b7ca4ebde273",
"jsmol": "v1.2.0",
"json-chart": "1.1.0",
- "jsoneditor": "5.5.11",
"jszip": "3.1.3",
"leaflet": "1.0.2",
"leaflet-omnivore": "0.3.2",
@@ -50,23 +42,22 @@
"loglevel": "1.4.1",
"marked": "0.3.6",
"ml": "0.2.1",
- "modernizr": "2.8.3",
"moment": "2.17.1",
"moment-duration-format": "~1.3.0",
"nmr-simulation": "0.2.1",
"notifyjs": "0.4.2",
"numeral": "2.0.6",
- "onde": "cheminfo/onde#126c1571a3b212abbefb5351ad9b192cef35e7a1",
+ "onde": "cheminfo/onde#9ed3407d02ca323b8dce8d2456eb54b49a804344",
"papa-parse": "4.1.2",
"pouchdb": "3.3.1",
"requirejs": "2.3.6",
"select2": "4.0.3",
"setImmediate": "YuzuJS/setImmediate#1.0.5",
"slickgrid": "cheminfo/SlickGrid#6423d3d4c9e09180ad83a9166d149e3e4124320d",
- "spectrum": "1.8.0",
- "sprintf": "1.0.3",
+ "spectrum": "101b05c1d977fbc529ae4c3b6865b1f7ab70c6e0",
+ "sprintf": "1.1.3",
"threejs": "r71",
- "ui-contextmenu": "1.14.0",
+ "ui-contextmenu": "1.18.1",
"uri.js": "1.18.4",
"web-animations-js": "2.2.2",
"x2js": "1.2.0",
@@ -75,7 +66,6 @@
},
"resolutions": {
"jsgraph": "2.2.36",
- "jquery": "2.2.4",
"eventEmitter": "^5.1.0"
},
"private": true
diff --git a/gruntfile.js b/gruntfile.js
index 5274dac127..d2027cdb90 100644
--- a/gruntfile.js
+++ b/gruntfile.js
@@ -192,7 +192,7 @@ module.exports = function (grunt) {
src: [
'./d3/d3*',
[
- './fancytree/dist/jquery.fancytree*.js',
+ './fancytree/dist/modules/jquery.fancytree*.js',
'./fancytree/dist/skin-lion/*',
],
[
@@ -200,13 +200,6 @@ module.exports = function (grunt) {
'./jqgrid_edit/js/i18n/grid.locale-en.js',
'./jqgrid_edit/css/*.css',
],
- './jquery/dist/*',
- [
- './jquery-ui/ui/*.js',
- './jquery-ui/ui/effects/*.js',
- './jquery-ui/ui/widgets/*.js',
- './jquery-ui/themes/base/**',
- ],
'./threejs/build/three.min.js',
'./ace/src/**',
[
@@ -228,7 +221,6 @@ module.exports = function (grunt) {
'./leaflet/dist/**',
'./leaflet-omnivore/leaflet-omnivore.min.js',
],
- './jsoneditor/dist/**',
'./jit/Jit/**/*',
'./ui-contextmenu/jquery.ui-contextmenu*',
'./papa-parse/papaparse*',
@@ -238,10 +230,7 @@ module.exports = function (grunt) {
'./onde/src/*',
['./spectrum/spectrum.js', './spectrum/spectrum.css'],
'./superagent/superagent.js',
- './modernizr/modernizr.js',
'./lodash/dist/**',
- './bowser/bowser*',
- './jquery-cookie/jquery.cookie.js',
'./chemcalc/lib.js',
'./jsgraph/dist/**',
'./jsme/**',
@@ -253,7 +242,6 @@ module.exports = function (grunt) {
'./jquery-tmpl/**',
'./setImmediate/setImmediate.js',
'./chroma-js/chroma*',
- './async/dist/**',
'./loglevel/dist/**',
'./marked/lib/marked.js',
'./highlight.js/build/highlight.pack.js',
@@ -274,11 +262,7 @@ module.exports = function (grunt) {
'./flag-icon-css/css/flag-icon.min.css',
'./flag-icon-css/flags/**',
'./jquery-qrcode/jquery.qrcode.min.js',
- './mathjs/dist/**',
'./nmr-simulation/**',
- './katex/dist/**',
- './babel-standalone/**',
- './fetch/fetch.js',
'./js-yaml/dist/**',
'./canvg/dist/**',
'./eventEmitter/*.js',
@@ -289,10 +273,13 @@ module.exports = function (grunt) {
expand: true,
cwd: './node_modules',
src: [
- './katex/dist/**',
'./angularplasmid/dist/**',
- './mathjs/dist/math.min.js',
- './mathjs/dist/math.min.map',
+ './jquery/dist/*',
+ ['./jquery-ui/dist/*.js', './jquery-ui/themes/base/**'],
+ './jsoneditor/dist/**',
+ './katex/dist/**',
+ './jquery-migrate/dist/*',
+ './mathjs/lib/browser/**',
'./openchemlib/dist/**',
[
'./quill/dist/*.js*',
@@ -300,7 +287,6 @@ module.exports = function (grunt) {
'./quill-resize-module/dist/resize.*',
'./quill-table-better/dist/quill-table-better.*',
],
- './d3-hierarchy/dist/d3-hierarchy.min.js',
'./@fortawesome/fontawesome-free/css/all.min.css',
'./@fortawesome/fontawesome-free/webfonts/*',
],
diff --git a/package-lock.json b/package-lock.json
index c81339cbdc..ae54ce16f6 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,29 +1,32 @@
{
"name": "visualizer",
- "version": "2.171.1",
+ "version": "2.172.1",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "visualizer",
- "version": "2.171.1",
+ "version": "2.172.1",
"hasInstallScript": true,
"license": "MIT",
"dependencies": {
- "@babel/preset-env": "^7.28.0",
- "@fortawesome/fontawesome-free": "^6.7.2",
+ "@babel/preset-env": "^7.28.3",
+ "@fortawesome/fontawesome-free": "^7.0.0",
"angularplasmid": "^1.0.5",
"babel-preset-minify": "^0.5.2",
"country-data": "0.0.31",
- "d3-hierarchy": "^1.1.9",
"delay": "^4.4.1",
"eslint-plugin-import": "^2.32.0",
- "katex": "^0.10.0",
- "mathjs": "^5.10.3",
- "mf-parser": "^1.5.0",
+ "jquery": "^3.7.1",
+ "jquery-migrate": "^3.5.2",
+ "jquery-ui": "^1.14.1",
+ "jsoneditor": "^10.3.0",
+ "katex": "^0.16.22",
+ "mathjs": "^14.6.0",
+ "mf-parser": "^3.6.0",
"mime-types": "^2.1.35",
"node-jsgraph": "2.4.15",
- "openchemlib": "^9.6.0",
+ "openchemlib": "^9.7.0",
"quill": "^2.0.3",
"quill-resize-module": "^2.0.4",
"quill-table-better": "^1.2.1",
@@ -33,15 +36,15 @@
"twig": "^1.17.1"
},
"devDependencies": {
- "@babel/types": "^7.28.1",
+ "@babel/types": "^7.28.2",
"@rollup/plugin-commonjs": "^28.0.6",
"@rollup/plugin-json": "^6.1.0",
"@rollup/plugin-node-resolve": "^16.0.1",
"add-stream": "^1.0.0",
"bower": "^1.8.14",
"conventional-changelog": "^6.0.0",
- "eslint": "^9.31.0",
- "eslint-config-cheminfo": "^14.1.1",
+ "eslint": "^9.33.0",
+ "eslint-config-cheminfo": "^15.0.1",
"extend": "^3.0.2",
"globals": "^16.3.0",
"grunt": "^1.6.1",
@@ -54,7 +57,7 @@
"lodash": "^4.17.21",
"mkpath": "^1.0.0",
"prettier": "^3.6.2",
- "rollup": "^4.45.1",
+ "rollup": "^4.46.3",
"rollup-plugin-polyfill-node": "^0.13.0",
"semver": "^5.7.2",
"tempfile": "^3.0.0",
@@ -140,13 +143,13 @@
}
},
"node_modules/@babel/generator": {
- "version": "7.28.0",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.0.tgz",
- "integrity": "sha512-lJjzvrbEeWrhB4P3QBsH7tey117PjLZnDbLiQEKjQ/fNJTjuq4HSqgFA+UNSwZT8D7dxxbnuSBMsa1lrWzKlQg==",
+ "version": "7.28.3",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.3.tgz",
+ "integrity": "sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==",
"license": "MIT",
"dependencies": {
- "@babel/parser": "^7.28.0",
- "@babel/types": "^7.28.0",
+ "@babel/parser": "^7.28.3",
+ "@babel/types": "^7.28.2",
"@jridgewell/gen-mapping": "^0.3.12",
"@jridgewell/trace-mapping": "^0.3.28",
"jsesc": "^3.0.2"
@@ -193,17 +196,17 @@
}
},
"node_modules/@babel/helper-create-class-features-plugin": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.27.1.tgz",
- "integrity": "sha512-QwGAmuvM17btKU5VqXfb+Giw4JcN0hjuufz3DYnpeVDvZLAObloM77bhMXiqry3Iio+Ai4phVRDwl6WU10+r5A==",
+ "version": "7.28.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.28.3.tgz",
+ "integrity": "sha512-V9f6ZFIYSLNEbuGA/92uOvYsGCJNsuA8ESZ4ldc09bWk/j8H8TKiPw8Mk1eG6olpnO0ALHJmYfZvF4MEE4gajg==",
"license": "MIT",
"dependencies": {
- "@babel/helper-annotate-as-pure": "^7.27.1",
+ "@babel/helper-annotate-as-pure": "^7.27.3",
"@babel/helper-member-expression-to-functions": "^7.27.1",
"@babel/helper-optimise-call-expression": "^7.27.1",
"@babel/helper-replace-supers": "^7.27.1",
"@babel/helper-skip-transparent-expression-wrappers": "^7.27.1",
- "@babel/traverse": "^7.27.1",
+ "@babel/traverse": "^7.28.3",
"semver": "^6.3.1"
},
"engines": {
@@ -440,12 +443,12 @@
}
},
"node_modules/@babel/parser": {
- "version": "7.28.0",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.0.tgz",
- "integrity": "sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g==",
+ "version": "7.28.3",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.3.tgz",
+ "integrity": "sha512-7+Ey1mAgYqFAx2h0RuoxcQT5+MlG3GTV0TQrgr7/ZliKsm/MNDxVVutlWaziMq7wJNAz8MTqz55XLpWvva6StA==",
"license": "MIT",
"dependencies": {
- "@babel/types": "^7.28.0"
+ "@babel/types": "^7.28.2"
},
"bin": {
"parser": "bin/babel-parser.js"
@@ -518,13 +521,13 @@
}
},
"node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.27.1.tgz",
- "integrity": "sha512-6BpaYGDavZqkI6yT+KSPdpZFfpnd68UKXbcjI9pJ13pvHhPrCKWOOLp+ysvMeA+DxnhuPpgIaRpxRxo5A9t5jw==",
+ "version": "7.28.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.28.3.tgz",
+ "integrity": "sha512-b6YTX108evsvE4YgWyQ921ZAFFQm3Bn+CA3+ZXlNVnPhx+UfsVURoPjfGAPCjBgrqo30yX/C2nZGX96DxvR9Iw==",
"license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.27.1",
- "@babel/traverse": "^7.27.1"
+ "@babel/traverse": "^7.28.3"
},
"engines": {
"node": ">=6.9.0"
@@ -687,12 +690,12 @@
}
},
"node_modules/@babel/plugin-transform-class-static-block": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.27.1.tgz",
- "integrity": "sha512-s734HmYU78MVzZ++joYM+NkJusItbdRcbm+AGRgJCt3iA+yux0QpD9cBVdz3tKyrjVYWRl7j0mHSmv4lhV0aoA==",
+ "version": "7.28.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.28.3.tgz",
+ "integrity": "sha512-LtPXlBbRoc4Njl/oh1CeD/3jC+atytbnf/UqLoqTDcEYGUPj022+rvfkbDYieUrSj3CaV4yHDByPE+T2HwfsJg==",
"license": "MIT",
"dependencies": {
- "@babel/helper-create-class-features-plugin": "^7.27.1",
+ "@babel/helper-create-class-features-plugin": "^7.28.3",
"@babel/helper-plugin-utils": "^7.27.1"
},
"engines": {
@@ -703,9 +706,9 @@
}
},
"node_modules/@babel/plugin-transform-classes": {
- "version": "7.28.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.28.0.tgz",
- "integrity": "sha512-IjM1IoJNw72AZFlj33Cu8X0q2XK/6AaVC3jQu+cgQ5lThWD5ajnuUAml80dqRmOhmPkTH8uAwnpMu9Rvj0LTRA==",
+ "version": "7.28.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.28.3.tgz",
+ "integrity": "sha512-DoEWC5SuxuARF2KdKmGUq3ghfPMO6ZzR12Dnp5gubwbeWJo4dbNWXJPVlwvh4Zlq6Z7YVvL8VFxeSOJgjsx4Sg==",
"license": "MIT",
"dependencies": {
"@babel/helper-annotate-as-pure": "^7.27.3",
@@ -713,7 +716,7 @@
"@babel/helper-globals": "^7.28.0",
"@babel/helper-plugin-utils": "^7.27.1",
"@babel/helper-replace-supers": "^7.27.1",
- "@babel/traverse": "^7.28.0"
+ "@babel/traverse": "^7.28.3"
},
"engines": {
"node": ">=6.9.0"
@@ -1212,9 +1215,9 @@
}
},
"node_modules/@babel/plugin-transform-regenerator": {
- "version": "7.28.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.28.1.tgz",
- "integrity": "sha512-P0QiV/taaa3kXpLY+sXla5zec4E+4t4Aqc9ggHlfZ7a2cp8/x/Gv08jfwEtn9gnnYIMvHx6aoOZ8XJL8eU71Dg==",
+ "version": "7.28.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.28.3.tgz",
+ "integrity": "sha512-K3/M/a4+ESb5LEldjQb+XSrpY0nF+ZBFlTCbSnKaYAMfD8v33O6PMs4uYnOk19HlcsI8WMu3McdFPTiQHF/1/A==",
"license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.27.1"
@@ -1397,9 +1400,9 @@
}
},
"node_modules/@babel/preset-env": {
- "version": "7.28.0",
- "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.28.0.tgz",
- "integrity": "sha512-VmaxeGOwuDqzLl5JUkIRM1X2Qu2uKGxHEQWh+cvvbl7JuJRgKGJSfsEF/bUaxFhJl/XAyxBe7q7qSuTbKFuCyg==",
+ "version": "7.28.3",
+ "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.28.3.tgz",
+ "integrity": "sha512-ROiDcM+GbYVPYBOeCR6uBXKkQpBExLl8k9HO1ygXEyds39j+vCCsjmj7S8GOniZQlEs81QlkdJZe76IpLSiqpg==",
"license": "MIT",
"dependencies": {
"@babel/compat-data": "^7.28.0",
@@ -1410,7 +1413,7 @@
"@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.27.1",
"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.27.1",
"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.27.1",
- "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.27.1",
+ "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.28.3",
"@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2",
"@babel/plugin-syntax-import-assertions": "^7.27.1",
"@babel/plugin-syntax-import-attributes": "^7.27.1",
@@ -1421,8 +1424,8 @@
"@babel/plugin-transform-block-scoped-functions": "^7.27.1",
"@babel/plugin-transform-block-scoping": "^7.28.0",
"@babel/plugin-transform-class-properties": "^7.27.1",
- "@babel/plugin-transform-class-static-block": "^7.27.1",
- "@babel/plugin-transform-classes": "^7.28.0",
+ "@babel/plugin-transform-class-static-block": "^7.28.3",
+ "@babel/plugin-transform-classes": "^7.28.3",
"@babel/plugin-transform-computed-properties": "^7.27.1",
"@babel/plugin-transform-destructuring": "^7.28.0",
"@babel/plugin-transform-dotall-regex": "^7.27.1",
@@ -1454,7 +1457,7 @@
"@babel/plugin-transform-private-methods": "^7.27.1",
"@babel/plugin-transform-private-property-in-object": "^7.27.1",
"@babel/plugin-transform-property-literals": "^7.27.1",
- "@babel/plugin-transform-regenerator": "^7.28.0",
+ "@babel/plugin-transform-regenerator": "^7.28.3",
"@babel/plugin-transform-regexp-modifiers": "^7.27.1",
"@babel/plugin-transform-reserved-words": "^7.27.1",
"@babel/plugin-transform-shorthand-properties": "^7.27.1",
@@ -1530,17 +1533,17 @@
}
},
"node_modules/@babel/traverse": {
- "version": "7.28.0",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.0.tgz",
- "integrity": "sha512-mGe7UK5wWyh0bKRfupsUchrQGqvDbZDbKJw+kcRGSmdHVYrv+ltd0pnpDTVpiTqnaBru9iEvA8pz8W46v0Amwg==",
+ "version": "7.28.3",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.3.tgz",
+ "integrity": "sha512-7w4kZYHneL3A6NP2nxzHvT3HCZ7puDZZjFMqDpBPECub79sTtSO5CGXDkKrTQq8ksAwfD/XI2MRFX23njdDaIQ==",
"license": "MIT",
"dependencies": {
"@babel/code-frame": "^7.27.1",
- "@babel/generator": "^7.28.0",
+ "@babel/generator": "^7.28.3",
"@babel/helper-globals": "^7.28.0",
- "@babel/parser": "^7.28.0",
+ "@babel/parser": "^7.28.3",
"@babel/template": "^7.27.2",
- "@babel/types": "^7.28.0",
+ "@babel/types": "^7.28.2",
"debug": "^4.3.1"
},
"engines": {
@@ -1548,9 +1551,9 @@
}
},
"node_modules/@babel/types": {
- "version": "7.28.1",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.1.tgz",
- "integrity": "sha512-x0LvFTekgSX+83TI28Y9wYPUfzrnl2aT5+5QLnO6v7mSJYtEEevuDRN0F0uSHRk1G1IWZC43o00Y0xDDrpBGPQ==",
+ "version": "7.28.2",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.2.tgz",
+ "integrity": "sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ==",
"license": "MIT",
"dependencies": {
"@babel/helper-string-parser": "^7.27.1",
@@ -1600,24 +1603,26 @@
}
},
"node_modules/@es-joy/jsdoccomment": {
- "version": "0.49.0",
- "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.49.0.tgz",
- "integrity": "sha512-xjZTSFgECpb9Ohuk5yMX5RhUEbfeQcuOp8IF60e+wyzWEF0M5xeSgqsfLtvPEX8BIyOX9saZqzuGPmZ8oWc+5Q==",
+ "version": "0.52.0",
+ "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.52.0.tgz",
+ "integrity": "sha512-BXuN7BII+8AyNtn57euU2Yxo9yA/KUDNzrpXyi3pfqKmBhhysR6ZWOebFh3vyPoqA3/j1SOvGgucElMGwlXing==",
"dev": true,
"license": "MIT",
"dependencies": {
+ "@types/estree": "^1.0.8",
+ "@typescript-eslint/types": "^8.34.1",
"comment-parser": "1.4.1",
"esquery": "^1.6.0",
"jsdoc-type-pratt-parser": "~4.1.0"
},
"engines": {
- "node": ">=16"
+ "node": ">=20.11.0"
}
},
"node_modules/@eslint-community/eslint-utils": {
- "version": "4.6.1",
- "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.6.1.tgz",
- "integrity": "sha512-KTsJMmobmbrFLe3LDh0PC2FXpcSYJt/MLjlkh/9LEnmKYLSYmT/0EW9JWANjeoemiuZrmogti0tW5Ch+qNUYDw==",
+ "version": "4.7.0",
+ "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz",
+ "integrity": "sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==",
"license": "MIT",
"dependencies": {
"eslint-visitor-keys": "^3.4.3"
@@ -1668,18 +1673,18 @@
}
},
"node_modules/@eslint/config-helpers": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.3.0.tgz",
- "integrity": "sha512-ViuymvFmcJi04qdZeDc2whTHryouGcDlaxPqarTD0ZE10ISpxGUVZGZDx4w01upyIynL3iu6IXH2bS1NhclQMw==",
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.3.1.tgz",
+ "integrity": "sha512-xR93k9WhrDYpXHORXpxVL5oHj3Era7wo6k/Wd8/IsQNnZUTzkGS29lyn3nAT05v6ltUuTFVCCYDEGfy2Or/sPA==",
"license": "Apache-2.0",
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
}
},
"node_modules/@eslint/core": {
- "version": "0.15.1",
- "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.15.1.tgz",
- "integrity": "sha512-bkOp+iumZCCbt1K1CmWf0R9pM5yKpDv+ZXtvSyQpudrI9kuFLp+bM2WOPXImuD/ceQuaa8f5pj93Y7zyECIGNA==",
+ "version": "0.15.2",
+ "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.15.2.tgz",
+ "integrity": "sha512-78Md3/Rrxh83gCxoUc0EiciuOHsIITzLy53m3d9UyiW8y9Dj2D29FeETqyKA+BRK76tnTp6RXWb3pCay8Oyomg==",
"license": "Apache-2.0",
"dependencies": {
"@types/json-schema": "^7.0.15"
@@ -1724,9 +1729,9 @@
}
},
"node_modules/@eslint/js": {
- "version": "9.31.0",
- "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.31.0.tgz",
- "integrity": "sha512-LOm5OVt7D4qiKCqoiPbA7LWmI+tbw1VbTUowBcUMgQSuM6poJufkFkYDcQpo5KfgD39TnNySV26QjOh7VFpSyw==",
+ "version": "9.33.0",
+ "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.33.0.tgz",
+ "integrity": "sha512-5K1/mKhWaMfreBGJTwval43JJmkip0RmM+3+IuqupeSKNC/Th2Kc7ucaq5ovTSra/OOKB9c58CGSz3QMVbWt0A==",
"license": "MIT",
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -1745,12 +1750,12 @@
}
},
"node_modules/@eslint/plugin-kit": {
- "version": "0.3.4",
- "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.3.4.tgz",
- "integrity": "sha512-Ul5l+lHEcw3L5+k8POx6r74mxEYKG5kOb6Xpy2gCRW6zweT6TEhAf8vhxGgjhqrd/VO/Dirhsb+1hNpD1ue9hw==",
+ "version": "0.3.5",
+ "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.3.5.tgz",
+ "integrity": "sha512-Z5kJ+wU3oA7MMIqVR9tyZRtjYPr4OC004Q4Rw7pgOKUOKkJfZ3O24nz3WYfGRpMDNmcOi3TwQOmgm7B7Tpii0w==",
"license": "Apache-2.0",
"dependencies": {
- "@eslint/core": "^0.15.1",
+ "@eslint/core": "^0.15.2",
"levn": "^0.4.1"
},
"engines": {
@@ -1758,9 +1763,9 @@
}
},
"node_modules/@fortawesome/fontawesome-free": {
- "version": "6.7.2",
- "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-6.7.2.tgz",
- "integrity": "sha512-JUOtgFW6k9u4Y+xeIaEiLr3+cjoUPiAuLXoyKOJSia6Duzb7pq+A76P9ZdPDoAoxHdHzq6gE9/jKBGXlZT8FbA==",
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-7.0.0.tgz",
+ "integrity": "sha512-X48nISrSOa89zu2VMljC4XaRf8NmgTwQBVHfS2Nu5G00ZwM31oOVrAtGxZF3b6wDYf9lJsf/Eq4cCSFKIkOWPQ==",
"license": "(CC-BY-4.0 AND OFL-1.1 AND MIT)",
"engines": {
"node": ">=6"
@@ -1888,6 +1893,44 @@
"@jridgewell/sourcemap-codec": "^1.4.14"
}
},
+ "node_modules/@nodelib/fs.scandir": {
+ "version": "2.1.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
+ "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@nodelib/fs.stat": "2.0.5",
+ "run-parallel": "^1.1.9"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nodelib/fs.stat": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+ "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nodelib/fs.walk": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
+ "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@nodelib/fs.scandir": "2.1.5",
+ "fastq": "^1.6.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
"node_modules/@rollup/plugin-commonjs": {
"version": "28.0.6",
"resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-28.0.6.tgz",
@@ -2049,9 +2092,9 @@
}
},
"node_modules/@rollup/rollup-android-arm-eabi": {
- "version": "4.45.1",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.45.1.tgz",
- "integrity": "sha512-NEySIFvMY0ZQO+utJkgoMiCAjMrGvnbDLHvcmlA33UXJpYBCvlBEbMMtV837uCkS+plG2umfhn0T5mMAxGrlRA==",
+ "version": "4.46.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.46.3.tgz",
+ "integrity": "sha512-UmTdvXnLlqQNOCJnyksjPs1G4GqXNGW1LrzCe8+8QoaLhhDeTXYBgJ3k6x61WIhlHX2U+VzEJ55TtIjR/HTySA==",
"cpu": [
"arm"
],
@@ -2063,9 +2106,9 @@
]
},
"node_modules/@rollup/rollup-android-arm64": {
- "version": "4.45.1",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.45.1.tgz",
- "integrity": "sha512-ujQ+sMXJkg4LRJaYreaVx7Z/VMgBBd89wGS4qMrdtfUFZ+TSY5Rs9asgjitLwzeIbhwdEhyj29zhst3L1lKsRQ==",
+ "version": "4.46.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.46.3.tgz",
+ "integrity": "sha512-8NoxqLpXm7VyeI0ocidh335D6OKT0UJ6fHdnIxf3+6oOerZZc+O7r+UhvROji6OspyPm+rrIdb1gTXtVIqn+Sg==",
"cpu": [
"arm64"
],
@@ -2077,9 +2120,9 @@
]
},
"node_modules/@rollup/rollup-darwin-arm64": {
- "version": "4.45.1",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.45.1.tgz",
- "integrity": "sha512-FSncqHvqTm3lC6Y13xncsdOYfxGSLnP+73k815EfNmpewPs+EyM49haPS105Rh4aF5mJKywk9X0ogzLXZzN9lA==",
+ "version": "4.46.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.46.3.tgz",
+ "integrity": "sha512-csnNavqZVs1+7/hUKtgjMECsNG2cdB8F7XBHP6FfQjqhjF8rzMzb3SLyy/1BG7YSfQ+bG75Ph7DyedbUqwq1rA==",
"cpu": [
"arm64"
],
@@ -2091,9 +2134,9 @@
]
},
"node_modules/@rollup/rollup-darwin-x64": {
- "version": "4.45.1",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.45.1.tgz",
- "integrity": "sha512-2/vVn/husP5XI7Fsf/RlhDaQJ7x9zjvC81anIVbr4b/f0xtSmXQTFcGIQ/B1cXIYM6h2nAhJkdMHTnD7OtQ9Og==",
+ "version": "4.46.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.46.3.tgz",
+ "integrity": "sha512-r2MXNjbuYabSIX5yQqnT8SGSQ26XQc8fmp6UhlYJd95PZJkQD1u82fWP7HqvGUf33IsOC6qsiV+vcuD4SDP6iw==",
"cpu": [
"x64"
],
@@ -2105,9 +2148,9 @@
]
},
"node_modules/@rollup/rollup-freebsd-arm64": {
- "version": "4.45.1",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.45.1.tgz",
- "integrity": "sha512-4g1kaDxQItZsrkVTdYQ0bxu4ZIQ32cotoQbmsAnW1jAE4XCMbcBPDirX5fyUzdhVCKgPcrwWuucI8yrVRBw2+g==",
+ "version": "4.46.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.46.3.tgz",
+ "integrity": "sha512-uluObTmgPJDuJh9xqxyr7MV61Imq+0IvVsAlWyvxAaBSNzCcmZlhfYcRhCdMaCsy46ccZa7vtDDripgs9Jkqsw==",
"cpu": [
"arm64"
],
@@ -2119,9 +2162,9 @@
]
},
"node_modules/@rollup/rollup-freebsd-x64": {
- "version": "4.45.1",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.45.1.tgz",
- "integrity": "sha512-L/6JsfiL74i3uK1Ti2ZFSNsp5NMiM4/kbbGEcOCps99aZx3g8SJMO1/9Y0n/qKlWZfn6sScf98lEOUe2mBvW9A==",
+ "version": "4.46.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.46.3.tgz",
+ "integrity": "sha512-AVJXEq9RVHQnejdbFvh1eWEoobohUYN3nqJIPI4mNTMpsyYN01VvcAClxflyk2HIxvLpRcRggpX1m9hkXkpC/A==",
"cpu": [
"x64"
],
@@ -2133,9 +2176,9 @@
]
},
"node_modules/@rollup/rollup-linux-arm-gnueabihf": {
- "version": "4.45.1",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.45.1.tgz",
- "integrity": "sha512-RkdOTu2jK7brlu+ZwjMIZfdV2sSYHK2qR08FUWcIoqJC2eywHbXr0L8T/pONFwkGukQqERDheaGTeedG+rra6Q==",
+ "version": "4.46.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.46.3.tgz",
+ "integrity": "sha512-byyflM+huiwHlKi7VHLAYTKr67X199+V+mt1iRgJenAI594vcmGGddWlu6eHujmcdl6TqSNnvqaXJqZdnEWRGA==",
"cpu": [
"arm"
],
@@ -2147,9 +2190,9 @@
]
},
"node_modules/@rollup/rollup-linux-arm-musleabihf": {
- "version": "4.45.1",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.45.1.tgz",
- "integrity": "sha512-3kJ8pgfBt6CIIr1o+HQA7OZ9mp/zDk3ctekGl9qn/pRBgrRgfwiffaUmqioUGN9hv0OHv2gxmvdKOkARCtRb8Q==",
+ "version": "4.46.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.46.3.tgz",
+ "integrity": "sha512-aLm3NMIjr4Y9LklrH5cu7yybBqoVCdr4Nvnm8WB7PKCn34fMCGypVNpGK0JQWdPAzR/FnoEoFtlRqZbBBLhVoQ==",
"cpu": [
"arm"
],
@@ -2161,9 +2204,9 @@
]
},
"node_modules/@rollup/rollup-linux-arm64-gnu": {
- "version": "4.45.1",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.45.1.tgz",
- "integrity": "sha512-k3dOKCfIVixWjG7OXTCOmDfJj3vbdhN0QYEqB+OuGArOChek22hn7Uy5A/gTDNAcCy5v2YcXRJ/Qcnm4/ma1xw==",
+ "version": "4.46.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.46.3.tgz",
+ "integrity": "sha512-VtilE6eznJRDIoFOzaagQodUksTEfLIsvXymS+UdJiSXrPW7Ai+WG4uapAc3F7Hgs791TwdGh4xyOzbuzIZrnw==",
"cpu": [
"arm64"
],
@@ -2175,9 +2218,9 @@
]
},
"node_modules/@rollup/rollup-linux-arm64-musl": {
- "version": "4.45.1",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.45.1.tgz",
- "integrity": "sha512-PmI1vxQetnM58ZmDFl9/Uk2lpBBby6B6rF4muJc65uZbxCs0EA7hhKCk2PKlmZKuyVSHAyIw3+/SiuMLxKxWog==",
+ "version": "4.46.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.46.3.tgz",
+ "integrity": "sha512-dG3JuS6+cRAL0GQ925Vppafi0qwZnkHdPeuZIxIPXqkCLP02l7ka+OCyBoDEv8S+nKHxfjvjW4OZ7hTdHkx8/w==",
"cpu": [
"arm64"
],
@@ -2189,9 +2232,9 @@
]
},
"node_modules/@rollup/rollup-linux-loongarch64-gnu": {
- "version": "4.45.1",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.45.1.tgz",
- "integrity": "sha512-9UmI0VzGmNJ28ibHW2GpE2nF0PBQqsyiS4kcJ5vK+wuwGnV5RlqdczVocDSUfGX/Na7/XINRVoUgJyFIgipoRg==",
+ "version": "4.46.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.46.3.tgz",
+ "integrity": "sha512-iU8DxnxEKJptf8Vcx4XvAUdpkZfaz0KWfRrnIRrOndL0SvzEte+MTM7nDH4A2Now4FvTZ01yFAgj6TX/mZl8hQ==",
"cpu": [
"loong64"
],
@@ -2202,10 +2245,10 @@
"linux"
]
},
- "node_modules/@rollup/rollup-linux-powerpc64le-gnu": {
- "version": "4.45.1",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.45.1.tgz",
- "integrity": "sha512-7nR2KY8oEOUTD3pBAxIBBbZr0U7U+R9HDTPNy+5nVVHDXI4ikYniH1oxQz9VoB5PbBU1CZuDGHkLJkd3zLMWsg==",
+ "node_modules/@rollup/rollup-linux-ppc64-gnu": {
+ "version": "4.46.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.46.3.tgz",
+ "integrity": "sha512-VrQZp9tkk0yozJoQvQcqlWiqaPnLM6uY1qPYXvukKePb0fqaiQtOdMJSxNFUZFsGw5oA5vvVokjHrx8a9Qsz2A==",
"cpu": [
"ppc64"
],
@@ -2217,9 +2260,9 @@
]
},
"node_modules/@rollup/rollup-linux-riscv64-gnu": {
- "version": "4.45.1",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.45.1.tgz",
- "integrity": "sha512-nlcl3jgUultKROfZijKjRQLUu9Ma0PeNv/VFHkZiKbXTBQXhpytS8CIj5/NfBeECZtY2FJQubm6ltIxm/ftxpw==",
+ "version": "4.46.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.46.3.tgz",
+ "integrity": "sha512-uf2eucWSUb+M7b0poZ/08LsbcRgaDYL8NCGjUeFMwCWFwOuFcZ8D9ayPl25P3pl+D2FH45EbHdfyUesQ2Lt9wA==",
"cpu": [
"riscv64"
],
@@ -2231,9 +2274,9 @@
]
},
"node_modules/@rollup/rollup-linux-riscv64-musl": {
- "version": "4.45.1",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.45.1.tgz",
- "integrity": "sha512-HJV65KLS51rW0VY6rvZkiieiBnurSzpzore1bMKAhunQiECPuxsROvyeaot/tcK3A3aGnI+qTHqisrpSgQrpgA==",
+ "version": "4.46.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.46.3.tgz",
+ "integrity": "sha512-7tnUcDvN8DHm/9ra+/nF7lLzYHDeODKKKrh6JmZejbh1FnCNZS8zMkZY5J4sEipy2OW1d1Ncc4gNHUd0DLqkSg==",
"cpu": [
"riscv64"
],
@@ -2245,9 +2288,9 @@
]
},
"node_modules/@rollup/rollup-linux-s390x-gnu": {
- "version": "4.45.1",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.45.1.tgz",
- "integrity": "sha512-NITBOCv3Qqc6hhwFt7jLV78VEO/il4YcBzoMGGNxznLgRQf43VQDae0aAzKiBeEPIxnDrACiMgbqjuihx08OOw==",
+ "version": "4.46.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.46.3.tgz",
+ "integrity": "sha512-MUpAOallJim8CsJK+4Lc9tQzlfPbHxWDrGXZm2z6biaadNpvh3a5ewcdat478W+tXDoUiHwErX/dOql7ETcLqg==",
"cpu": [
"s390x"
],
@@ -2259,9 +2302,9 @@
]
},
"node_modules/@rollup/rollup-linux-x64-gnu": {
- "version": "4.45.1",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.45.1.tgz",
- "integrity": "sha512-+E/lYl6qu1zqgPEnTrs4WysQtvc/Sh4fC2nByfFExqgYrqkKWp1tWIbe+ELhixnenSpBbLXNi6vbEEJ8M7fiHw==",
+ "version": "4.46.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.46.3.tgz",
+ "integrity": "sha512-F42IgZI4JicE2vM2PWCe0N5mR5vR0gIdORPqhGQ32/u1S1v3kLtbZ0C/mi9FFk7C5T0PgdeyWEPajPjaUpyoKg==",
"cpu": [
"x64"
],
@@ -2273,9 +2316,9 @@
]
},
"node_modules/@rollup/rollup-linux-x64-musl": {
- "version": "4.45.1",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.45.1.tgz",
- "integrity": "sha512-a6WIAp89p3kpNoYStITT9RbTbTnqarU7D8N8F2CV+4Cl9fwCOZraLVuVFvlpsW0SbIiYtEnhCZBPLoNdRkjQFw==",
+ "version": "4.46.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.46.3.tgz",
+ "integrity": "sha512-oLc+JrwwvbimJUInzx56Q3ujL3Kkhxehg7O1gWAYzm8hImCd5ld1F2Gry5YDjR21MNb5WCKhC9hXgU7rRlyegQ==",
"cpu": [
"x64"
],
@@ -2287,9 +2330,9 @@
]
},
"node_modules/@rollup/rollup-win32-arm64-msvc": {
- "version": "4.45.1",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.45.1.tgz",
- "integrity": "sha512-T5Bi/NS3fQiJeYdGvRpTAP5P02kqSOpqiopwhj0uaXB6nzs5JVi2XMJb18JUSKhCOX8+UE1UKQufyD6Or48dJg==",
+ "version": "4.46.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.46.3.tgz",
+ "integrity": "sha512-lOrQ+BVRstruD1fkWg9yjmumhowR0oLAAzavB7yFSaGltY8klttmZtCLvOXCmGE9mLIn8IBV/IFrQOWz5xbFPg==",
"cpu": [
"arm64"
],
@@ -2301,9 +2344,9 @@
]
},
"node_modules/@rollup/rollup-win32-ia32-msvc": {
- "version": "4.45.1",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.45.1.tgz",
- "integrity": "sha512-lxV2Pako3ujjuUe9jiU3/s7KSrDfH6IgTSQOnDWr9aJ92YsFd7EurmClK0ly/t8dzMkDtd04g60WX6yl0sGfdw==",
+ "version": "4.46.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.46.3.tgz",
+ "integrity": "sha512-vvrVKPRS4GduGR7VMH8EylCBqsDcw6U+/0nPDuIjXQRbHJc6xOBj+frx8ksfZAh6+Fptw5wHrN7etlMmQnPQVg==",
"cpu": [
"ia32"
],
@@ -2315,9 +2358,9 @@
]
},
"node_modules/@rollup/rollup-win32-x64-msvc": {
- "version": "4.45.1",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.45.1.tgz",
- "integrity": "sha512-M/fKi4sasCdM8i0aWJjCSFm2qEnYRR8AMLG2kxp6wD13+tMGA4Z1tVAuHkNRjud5SW2EM3naLuK35w9twvf6aA==",
+ "version": "4.46.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.46.3.tgz",
+ "integrity": "sha512-fi3cPxCnu3ZeM3EwKZPgXbWoGzm2XHgB/WShKI81uj8wG0+laobmqy5wbgEwzstlbLu4MyO8C19FyhhWseYKNQ==",
"cpu": [
"x64"
],
@@ -2334,6 +2377,12 @@
"integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==",
"license": "MIT"
},
+ "node_modules/@sphinxxxx/color-conversion": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/@sphinxxxx/color-conversion/-/color-conversion-2.2.2.tgz",
+ "integrity": "sha512-XExJS3cLqgrmNBIP3bBw6+1oQ1ksGjFh0+oClDKFYpCCqx/hlqwWO5KO/S63fzUo67SxI9dMrF0y5T/Ey7h8Zw==",
+ "license": "ISC"
+ },
"node_modules/@types/estree": {
"version": "1.0.8",
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz",
@@ -2388,6 +2437,210 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/@typescript-eslint/project-service": {
+ "version": "8.39.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.39.1.tgz",
+ "integrity": "sha512-8fZxek3ONTwBu9ptw5nCKqZOSkXshZB7uAxuFF0J/wTMkKydjXCzqqga7MlFMpHi9DoG4BadhmTkITBcg8Aybw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/tsconfig-utils": "^8.39.1",
+ "@typescript-eslint/types": "^8.39.1",
+ "debug": "^4.3.4"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "typescript": ">=4.8.4 <6.0.0"
+ }
+ },
+ "node_modules/@typescript-eslint/scope-manager": {
+ "version": "8.39.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.39.1.tgz",
+ "integrity": "sha512-RkBKGBrjgskFGWuyUGz/EtD8AF/GW49S21J8dvMzpJitOF1slLEbbHnNEtAHtnDAnx8qDEdRrULRnWVx27wGBw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/types": "8.39.1",
+ "@typescript-eslint/visitor-keys": "8.39.1"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@typescript-eslint/tsconfig-utils": {
+ "version": "8.39.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.39.1.tgz",
+ "integrity": "sha512-ePUPGVtTMR8XMU2Hee8kD0Pu4NDE1CN9Q1sxGSGd/mbOtGZDM7pnhXNJnzW63zk/q+Z54zVzj44HtwXln5CvHA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "typescript": ">=4.8.4 <6.0.0"
+ }
+ },
+ "node_modules/@typescript-eslint/types": {
+ "version": "8.39.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.39.1.tgz",
+ "integrity": "sha512-7sPDKQQp+S11laqTrhHqeAbsCfMkwJMrV7oTDvtDds4mEofJYir414bYKUEb8YPUm9QL3U+8f6L6YExSoAGdQw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@typescript-eslint/typescript-estree": {
+ "version": "8.39.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.39.1.tgz",
+ "integrity": "sha512-EKkpcPuIux48dddVDXyQBlKdeTPMmALqBUbEk38McWv0qVEZwOpVJBi7ugK5qVNgeuYjGNQxrrnoM/5+TI/BPw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/project-service": "8.39.1",
+ "@typescript-eslint/tsconfig-utils": "8.39.1",
+ "@typescript-eslint/types": "8.39.1",
+ "@typescript-eslint/visitor-keys": "8.39.1",
+ "debug": "^4.3.4",
+ "fast-glob": "^3.3.2",
+ "is-glob": "^4.0.3",
+ "minimatch": "^9.0.4",
+ "semver": "^7.6.0",
+ "ts-api-utils": "^2.1.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "typescript": ">=4.8.4 <6.0.0"
+ }
+ },
+ "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
+ "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": {
+ "version": "9.0.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
+ "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": {
+ "version": "7.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz",
+ "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==",
+ "dev": true,
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@typescript-eslint/utils": {
+ "version": "8.39.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.39.1.tgz",
+ "integrity": "sha512-VF5tZ2XnUSTuiqZFXCZfZs1cgkdd3O/sSYmdo2EpSyDlC86UM/8YytTmKnehOW3TGAlivqTDT6bS87B/GQ/jyg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@eslint-community/eslint-utils": "^4.7.0",
+ "@typescript-eslint/scope-manager": "8.39.1",
+ "@typescript-eslint/types": "8.39.1",
+ "@typescript-eslint/typescript-estree": "8.39.1"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^8.57.0 || ^9.0.0",
+ "typescript": ">=4.8.4 <6.0.0"
+ }
+ },
+ "node_modules/@typescript-eslint/visitor-keys": {
+ "version": "8.39.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.39.1.tgz",
+ "integrity": "sha512-W8FQi6kEh2e8zVhQ0eeRnxdvIoOkAp/CPAahcNio6nO9dsIwb9b34z90KOlheoyuVf6LSOEdjlkxSkapNEc+4A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/types": "8.39.1",
+ "eslint-visitor-keys": "^4.2.1"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@vitest/eslint-plugin": {
+ "version": "1.3.4",
+ "resolved": "https://registry.npmjs.org/@vitest/eslint-plugin/-/eslint-plugin-1.3.4.tgz",
+ "integrity": "sha512-EOg8d0jn3BAiKnR55WkFxmxfWA3nmzrbIIuOXyTe6A72duryNgyU+bdBEauA97Aab3ho9kLmAwgPX63Ckj4QEg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/utils": "^8.24.1"
+ },
+ "peerDependencies": {
+ "eslint": ">= 8.57.0",
+ "typescript": ">= 5.0.0",
+ "vitest": "*"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ },
+ "vitest": {
+ "optional": true
+ }
+ }
+ },
"node_modules/abbrev": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
@@ -2395,6 +2648,12 @@
"dev": true,
"license": "ISC"
},
+ "node_modules/ace-builds": {
+ "version": "1.43.2",
+ "resolved": "https://registry.npmjs.org/ace-builds/-/ace-builds-1.43.2.tgz",
+ "integrity": "sha512-3wzJUJX0RpMc03jo0V8Q3bSb/cKPnS7Nqqw8fVHsCCHweKMiTIxT3fP46EhjmVy6MCuxwP801ere+RW245phGw==",
+ "license": "BSD-3-Clause"
+ },
"node_modules/acorn": {
"version": "8.15.0",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz",
@@ -2645,9 +2904,9 @@
"license": "MIT"
},
"node_modules/atom-sorter": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/atom-sorter/-/atom-sorter-1.2.0.tgz",
- "integrity": "sha512-WaEaDUy0UCnOEWSCa7dm2Ij41CiZEXveRUrv4H0PIJ42v2etWih7kwiGqzsEerm8Lp6zc7VOVUm/x4qIReBGbw==",
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/atom-sorter/-/atom-sorter-2.2.1.tgz",
+ "integrity": "sha512-+Lyyb6iXLHEb/ZYkpuvdEUgZ62+oA96p3rJG5lsttwl9vig1UqD8sAUnGQjrDFcVNUywFBhiW57Nns65M7TXEA==",
"license": "MIT"
},
"node_modules/available-typed-arrays": {
@@ -3152,19 +3411,23 @@
"url": "https://github.com/chalk/chalk?sponsor=1"
}
},
+ "node_modules/change-case": {
+ "version": "5.4.4",
+ "resolved": "https://registry.npmjs.org/change-case/-/change-case-5.4.4.tgz",
+ "integrity": "sha512-HRQyTk2/YPEkt9TnUPbOpr64Uw3KOicFWPVBb+xiHvd6eBx/qPr9xqfBFDT8P2vWsvvz4jbEkfDe71W3VyNu2w==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/chemical-elements": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/chemical-elements/-/chemical-elements-1.3.0.tgz",
- "integrity": "sha512-364wypF24rEbKviTfW5T+pCUK5zOQAY7CYfB1XWDI+eiS44oifdkR7i2RldDL8dDIV9BBQs3tLyv6Btu6hvBCg==",
- "license": "MIT",
- "dependencies": {
- "papaparse": "^5.3.2"
- }
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/chemical-elements/-/chemical-elements-2.2.1.tgz",
+ "integrity": "sha512-Khr3m8RhBbNwDb2MSo9Zb9O+dcUuFourUC0hK+YxNhAtEhOwJPVTMDQeDi1vUwH44tUeNRNKriUs2QQFNQvxgg==",
+ "license": "MIT"
},
"node_modules/chemical-groups": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/chemical-groups/-/chemical-groups-1.3.0.tgz",
- "integrity": "sha512-iptPGur5faUv+zvP05VHZ9ATMteSjjiQgefjX30pM1LlKM8jIFCyUYg79XSTJiFj4bHR+hF7R3UsNDPRpd43qA==",
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/chemical-groups/-/chemical-groups-2.2.3.tgz",
+ "integrity": "sha512-rIhA7dC2OJNbQeEFM6+3u81hItYWkaYbWh7awn3hy9RI1qCvhQgdTkrvt7zlLCmcp2nuMzJZUXSju6etBsf6lA==",
"license": "MIT"
},
"node_modules/ci-info": {
@@ -3261,10 +3524,13 @@
}
},
"node_modules/commander": {
- "version": "2.20.3",
- "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
- "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
- "license": "MIT"
+ "version": "8.3.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz",
+ "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 12"
+ }
},
"node_modules/comment-parser": {
"version": "1.4.1",
@@ -3295,12 +3561,16 @@
}
},
"node_modules/complex.js": {
- "version": "2.0.11",
- "resolved": "https://registry.npmjs.org/complex.js/-/complex.js-2.0.11.tgz",
- "integrity": "sha512-6IArJLApNtdg1P1dFtn3dnyzoZBEF0MwMnrfF1exSBRpZYoy4yieMkpZhQDC0uwctw48vii0CFVyHfpgZ/DfGw==",
- "license": "MIT OR GPL-2.0",
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/complex.js/-/complex.js-2.4.2.tgz",
+ "integrity": "sha512-qtx7HRhPGSCBtGiST4/WGHuW+zeaND/6Ld+db6PbrulIB1i2Ev/2UPiqcmpQNPSyfBKraC0EOvOKCB5dGZKt3g==",
+ "license": "MIT",
"engines": {
"node": "*"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/rawify"
}
},
"node_modules/component-emitter": {
@@ -3592,12 +3862,6 @@
"integrity": "sha512-fPZJ3jqM68+AAgqQ7UaGbgHL/39rp6l7GyqS2k1HJPu/kpS8D07x/+Uup6a9tCUKIlOFcRrDCf1qxSt8jnI5BA==",
"license": "BSD-2-Clause"
},
- "node_modules/d3-hierarchy": {
- "version": "1.1.9",
- "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-1.1.9.tgz",
- "integrity": "sha512-j8tPxlqh1srJHAtxfvOUwKNYJkQuBFdM1+JAUfq6xqH5eAqf93L7oG1NVqDa4CpFZNvnNKtCYEUC8KY9yEn9lQ==",
- "license": "BSD-3-Clause"
- },
"node_modules/data-view-buffer": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz",
@@ -3677,9 +3941,9 @@
}
},
"node_modules/decimal.js": {
- "version": "10.2.0",
- "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.2.0.tgz",
- "integrity": "sha512-vDPw+rDgn3bZe1+F/pyEwb1oMG2XTlRVgAa6B4KccTEpYgF8w6eQllVbQcfIJnZyvzFtFpxnpGtx8dd7DJp/Rw==",
+ "version": "10.6.0",
+ "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.6.0.tgz",
+ "integrity": "sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==",
"license": "MIT"
},
"node_modules/deep-is": {
@@ -4079,19 +4343,19 @@
}
},
"node_modules/eslint": {
- "version": "9.31.0",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.31.0.tgz",
- "integrity": "sha512-QldCVh/ztyKJJZLr4jXNUByx3gR+TDYZCRXEktiZoUR3PGy4qCmSbkxcIle8GEwGpb5JBZazlaJ/CxLidXdEbQ==",
+ "version": "9.33.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.33.0.tgz",
+ "integrity": "sha512-TS9bTNIryDzStCpJN93aC5VRSW3uTx9sClUn4B87pwiCaJh220otoI0X8mJKr+VcPtniMdN8GKjlwgWGUv5ZKA==",
"license": "MIT",
"dependencies": {
"@eslint-community/eslint-utils": "^4.2.0",
"@eslint-community/regexpp": "^4.12.1",
"@eslint/config-array": "^0.21.0",
- "@eslint/config-helpers": "^0.3.0",
- "@eslint/core": "^0.15.0",
+ "@eslint/config-helpers": "^0.3.1",
+ "@eslint/core": "^0.15.2",
"@eslint/eslintrc": "^3.3.1",
- "@eslint/js": "9.31.0",
- "@eslint/plugin-kit": "^0.3.1",
+ "@eslint/js": "9.33.0",
+ "@eslint/plugin-kit": "^0.3.5",
"@humanfs/node": "^0.16.6",
"@humanwhocodes/module-importer": "^1.0.1",
"@humanwhocodes/retry": "^0.4.2",
@@ -4139,19 +4403,20 @@
}
},
"node_modules/eslint-config-cheminfo": {
- "version": "14.1.1",
- "resolved": "https://registry.npmjs.org/eslint-config-cheminfo/-/eslint-config-cheminfo-14.1.1.tgz",
- "integrity": "sha512-y0I6J5P+h+sU8ZycY0kH1qNHUcu18Rf97BwQBj33j5H28mu+ritgEBX15Gr+CPbQFSb23dgd7nWc+jfdhU9QLw==",
+ "version": "15.0.1",
+ "resolved": "https://registry.npmjs.org/eslint-config-cheminfo/-/eslint-config-cheminfo-15.0.1.tgz",
+ "integrity": "sha512-Bl4LizcVW2ybURIHz4fROj/rcyVQnsJreaUBH6aD8RvpoZxbL8wuDMp/DcwaaYR10RTt/MV8TPYkncRbTpa1Mg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "eslint-plugin-import": "^2.31.0",
- "eslint-plugin-jsdoc": "^50.6.11",
- "eslint-plugin-unicorn": "^59.0.1",
- "globals": "^16.1.0"
+ "@vitest/eslint-plugin": "^1.3.4",
+ "eslint-plugin-import": "^2.32.0",
+ "eslint-plugin-jsdoc": "^51.4.1",
+ "eslint-plugin-unicorn": "^60.0.0",
+ "globals": "^16.3.0"
},
"peerDependencies": {
- "eslint": "^9.22.0"
+ "eslint": "^9.30.1"
}
},
"node_modules/eslint-import-resolver-node": {
@@ -4252,34 +4517,34 @@
}
},
"node_modules/eslint-plugin-jsdoc": {
- "version": "50.6.11",
- "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-50.6.11.tgz",
- "integrity": "sha512-k4+MnBCGR8cuIB5MZ++FGd4gbXxjob2rX1Nq0q3nWFF4xSGZENTgTLZSjb+u9B8SAnP6lpGV2FJrBjllV3pVSg==",
+ "version": "51.4.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-51.4.1.tgz",
+ "integrity": "sha512-y4CA9OkachG8v5nAtrwvcvjIbdcKgSyS6U//IfQr4FZFFyeBFwZFf/tfSsMr46mWDJgidZjBTqoCRlXywfFBMg==",
"dev": true,
"license": "BSD-3-Clause",
"dependencies": {
- "@es-joy/jsdoccomment": "~0.49.0",
+ "@es-joy/jsdoccomment": "~0.52.0",
"are-docs-informative": "^0.0.2",
"comment-parser": "1.4.1",
- "debug": "^4.3.6",
+ "debug": "^4.4.1",
"escape-string-regexp": "^4.0.0",
- "espree": "^10.1.0",
+ "espree": "^10.4.0",
"esquery": "^1.6.0",
"parse-imports-exports": "^0.2.4",
- "semver": "^7.6.3",
+ "semver": "^7.7.2",
"spdx-expression-parse": "^4.0.0"
},
"engines": {
- "node": ">=18"
+ "node": ">=20.11.0"
},
"peerDependencies": {
"eslint": "^7.0.0 || ^8.0.0 || ^9.0.0"
}
},
"node_modules/eslint-plugin-jsdoc/node_modules/semver": {
- "version": "7.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz",
- "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==",
+ "version": "7.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz",
+ "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==",
"dev": true,
"license": "ISC",
"bin": {
@@ -4290,65 +4555,39 @@
}
},
"node_modules/eslint-plugin-unicorn": {
- "version": "59.0.1",
- "resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-59.0.1.tgz",
- "integrity": "sha512-EtNXYuWPUmkgSU2E7Ttn57LbRREQesIP1BiLn7OZLKodopKfDXfBUkC/0j6mpw2JExwf43Uf3qLSvrSvppgy8Q==",
+ "version": "60.0.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-60.0.0.tgz",
+ "integrity": "sha512-QUzTefvP8stfSXsqKQ+vBQSEsXIlAiCduS/V1Em+FKgL9c21U/IIm20/e3MFy1jyCf14tHAhqC1sX8OTy6VUCg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-validator-identifier": "^7.25.9",
- "@eslint-community/eslint-utils": "^4.5.1",
- "@eslint/plugin-kit": "^0.2.7",
- "ci-info": "^4.2.0",
+ "@babel/helper-validator-identifier": "^7.27.1",
+ "@eslint-community/eslint-utils": "^4.7.0",
+ "@eslint/plugin-kit": "^0.3.3",
+ "change-case": "^5.4.4",
+ "ci-info": "^4.3.0",
"clean-regexp": "^1.0.0",
- "core-js-compat": "^3.41.0",
+ "core-js-compat": "^3.44.0",
"esquery": "^1.6.0",
"find-up-simple": "^1.0.1",
- "globals": "^16.0.0",
+ "globals": "^16.3.0",
"indent-string": "^5.0.0",
"is-builtin-module": "^5.0.0",
"jsesc": "^3.1.0",
"pluralize": "^8.0.0",
"regexp-tree": "^0.1.27",
"regjsparser": "^0.12.0",
- "semver": "^7.7.1",
+ "semver": "^7.7.2",
"strip-indent": "^4.0.0"
},
"engines": {
- "node": "^18.20.0 || ^20.10.0 || >=21.0.0"
+ "node": "^20.10.0 || >=21.0.0"
},
"funding": {
"url": "https://github.com/sindresorhus/eslint-plugin-unicorn?sponsor=1"
},
"peerDependencies": {
- "eslint": ">=9.22.0"
- }
- },
- "node_modules/eslint-plugin-unicorn/node_modules/@eslint/core": {
- "version": "0.13.0",
- "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.13.0.tgz",
- "integrity": "sha512-yfkgDw1KR66rkT5A8ci4irzDysN7FRpq3ttJolR88OqQikAWqwA8j5VZyas+vjyBNFIJ7MfybJ9plMILI2UrCw==",
- "dev": true,
- "license": "Apache-2.0",
- "dependencies": {
- "@types/json-schema": "^7.0.15"
- },
- "engines": {
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
- }
- },
- "node_modules/eslint-plugin-unicorn/node_modules/@eslint/plugin-kit": {
- "version": "0.2.8",
- "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.8.tgz",
- "integrity": "sha512-ZAoA40rNMPwSm+AeHpCq8STiNAwzWLJuP8Xv4CHIc9wv/PSuExjMrmjfYNj682vW0OOiZ1HKxzvjQr9XZIisQA==",
- "dev": true,
- "license": "Apache-2.0",
- "dependencies": {
- "@eslint/core": "^0.13.0",
- "levn": "^0.4.1"
- },
- "engines": {
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ "eslint": ">=9.29.0"
}
},
"node_modules/eslint-plugin-unicorn/node_modules/semver": {
@@ -4525,6 +4764,36 @@
"integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==",
"license": "Apache-2.0"
},
+ "node_modules/fast-glob": {
+ "version": "3.3.3",
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz",
+ "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@nodelib/fs.stat": "^2.0.2",
+ "@nodelib/fs.walk": "^1.2.3",
+ "glob-parent": "^5.1.2",
+ "merge2": "^1.3.0",
+ "micromatch": "^4.0.8"
+ },
+ "engines": {
+ "node": ">=8.6.0"
+ }
+ },
+ "node_modules/fast-glob/node_modules/glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "is-glob": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
"node_modules/fast-json-stable-stringify": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
@@ -4537,6 +4806,16 @@
"integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
"license": "MIT"
},
+ "node_modules/fastq": {
+ "version": "1.19.1",
+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz",
+ "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "reusify": "^1.0.4"
+ }
+ },
"node_modules/file-entry-cache": {
"version": "8.0.0",
"resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz",
@@ -4741,12 +5020,16 @@
}
},
"node_modules/fraction.js": {
- "version": "4.0.12",
- "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.0.12.tgz",
- "integrity": "sha512-8Z1K0VTG4hzYY7kA/1sj4/r1/RWLBD3xwReT/RCrUCbzPszjNQCCsy3ktkU/eaEqX3MYa4pY37a52eiBlPMlhA==",
- "license": "MIT OR GPL-2.0",
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-5.3.1.tgz",
+ "integrity": "sha512-PhqCuhSKIGbbkJ+cojHv47eEWClU71FIOhiUsYdZYTwhIzCeIN8rXeEjserTvPat5JLJChumn8chHz64WkZgTw==",
+ "license": "MIT",
"engines": {
"node": "*"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/rawify"
}
},
"node_modules/fs.realpath": {
@@ -6195,6 +6478,39 @@
"integrity": "sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw==",
"license": "MIT"
},
+ "node_modules/jmespath": {
+ "version": "0.16.0",
+ "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.16.0.tgz",
+ "integrity": "sha512-9FzQjJ7MATs1tSpnco1K6ayiYE3figslrXA72G2HQ/n76RzvYlofyi5QM+iX4YRs/pu3yzxlVQSST23+dMDknw==",
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">= 0.6.0"
+ }
+ },
+ "node_modules/jquery": {
+ "version": "3.7.1",
+ "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.7.1.tgz",
+ "integrity": "sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==",
+ "license": "MIT"
+ },
+ "node_modules/jquery-migrate": {
+ "version": "3.5.2",
+ "resolved": "https://registry.npmjs.org/jquery-migrate/-/jquery-migrate-3.5.2.tgz",
+ "integrity": "sha512-GGvcVWK3aei2/98r7pA4UkOYvs4xVeCGvquNXADFUp9+Sr6VeOw0ktlQ9z4YlBbEFpsXBlRioAgpH/fLWinj4Q==",
+ "license": "MIT",
+ "peerDependencies": {
+ "jquery": ">=3 <4"
+ }
+ },
+ "node_modules/jquery-ui": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/jquery-ui/-/jquery-ui-1.14.1.tgz",
+ "integrity": "sha512-DhzsYH8VeIvOaxwi+B/2BCsFFT5EGjShdzOcm5DssWjtcpGWIMsn66rJciDA6jBruzNiLf1q0KvwMoX1uGNvnQ==",
+ "license": "MIT",
+ "dependencies": {
+ "jquery": ">=1.12.0 <5.0.0"
+ }
+ },
"node_modules/js-tokens": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
@@ -6247,6 +6563,12 @@
"integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
"license": "MIT"
},
+ "node_modules/json-source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/json-source-map/-/json-source-map-0.6.1.tgz",
+ "integrity": "sha512-1QoztHPsMQqhDq0hlXY5ZqcEdUzxQEIxgFkKl4WUp2pgShObl+9ovi4kRh2TfvAfxAoHOJ9vIMEqk3k4iex7tg==",
+ "license": "MIT"
+ },
"node_modules/json-stable-stringify-without-jsonify": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
@@ -6266,13 +6588,42 @@
"node": ">=6"
}
},
+ "node_modules/jsoneditor": {
+ "version": "10.3.0",
+ "resolved": "https://registry.npmjs.org/jsoneditor/-/jsoneditor-10.3.0.tgz",
+ "integrity": "sha512-KYuX34Tgze1SU3rIrwF0Y3fewrTYq1dSLHT2FXLPIUhFObmtSD+NML2hqXX7rtwGs2dfLUwsK8gn3WbhFT5CtQ==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "ace-builds": "^1.36.2",
+ "ajv": "^6.12.6",
+ "javascript-natural-sort": "^0.7.1",
+ "jmespath": "^0.16.0",
+ "json-source-map": "^0.6.1",
+ "jsonrepair": "^3.8.1",
+ "picomodal": "^3.0.0",
+ "vanilla-picker": "^2.12.3"
+ }
+ },
+ "node_modules/jsonrepair": {
+ "version": "3.13.0",
+ "resolved": "https://registry.npmjs.org/jsonrepair/-/jsonrepair-3.13.0.tgz",
+ "integrity": "sha512-5YRzlAQ7tuzV1nAJu3LvDlrKtBFIALHN2+a+I1MGJCt3ldRDBF/bZuvIPzae8Epot6KBXd0awRZZcuoeAsZ/mw==",
+ "license": "ISC",
+ "bin": {
+ "jsonrepair": "bin/cli.js"
+ }
+ },
"node_modules/katex": {
- "version": "0.10.2",
- "resolved": "https://registry.npmjs.org/katex/-/katex-0.10.2.tgz",
- "integrity": "sha512-cQOmyIRoMloCoSIOZ1+gEwsksdJZ1EW4SWm3QzxSza/QsnZr6D4U1V9S4q+B/OLm2OQ8TCBecQ8MaIfnScI7cw==",
+ "version": "0.16.22",
+ "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.22.tgz",
+ "integrity": "sha512-XCHRdUw4lf3SKBaJe4EvgqIuWwkPSo9XoeO8GjQW94Bp7TWv9hNhzZjZ+OH9yf1UmLygb7DIT5GSFQiyt16zYg==",
+ "funding": [
+ "https://opencollective.com/katex",
+ "https://github.com/sponsors/katex"
+ ],
"license": "MIT",
"dependencies": {
- "commander": "^2.19.0"
+ "commander": "^8.3.0"
},
"bin": {
"katex": "cli.js"
@@ -6465,25 +6816,26 @@
}
},
"node_modules/mathjs": {
- "version": "5.10.3",
- "resolved": "https://registry.npmjs.org/mathjs/-/mathjs-5.10.3.tgz",
- "integrity": "sha512-ySjg30BC3dYjQm73ILZtwcWzFJde0VU6otkXW/57IjjuYRa3Qaf0Kb8pydEuBZYtqW2OxreAtsricrAmOj3jIw==",
+ "version": "14.6.0",
+ "resolved": "https://registry.npmjs.org/mathjs/-/mathjs-14.6.0.tgz",
+ "integrity": "sha512-5vI2BLB5GKQmiSK9BH6hVkZ+GgqpdnOgEfmHl7mqVmdQObLynr63KueyYYLCQMzj66q69mV2XZZGQqqxeftQbA==",
"license": "Apache-2.0",
"dependencies": {
- "complex.js": "2.0.11",
- "decimal.js": "10.2.0",
- "escape-latex": "1.2.0",
- "fraction.js": "4.0.12",
- "javascript-natural-sort": "0.7.1",
- "seed-random": "2.2.0",
- "tiny-emitter": "2.1.0",
- "typed-function": "1.1.0"
+ "@babel/runtime": "^7.26.10",
+ "complex.js": "^2.2.5",
+ "decimal.js": "^10.4.3",
+ "escape-latex": "^1.2.0",
+ "fraction.js": "^5.2.1",
+ "javascript-natural-sort": "^0.7.1",
+ "seedrandom": "^3.0.5",
+ "tiny-emitter": "^2.1.0",
+ "typed-function": "^4.2.1"
},
"bin": {
"mathjs": "bin/cli.js"
},
"engines": {
- "node": ">= 6"
+ "node": ">= 18"
}
},
"node_modules/meow": {
@@ -6499,6 +6851,16 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/merge2": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
+ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 8"
+ }
+ },
"node_modules/methods": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
@@ -6509,14 +6871,14 @@
}
},
"node_modules/mf-parser": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/mf-parser/-/mf-parser-1.5.0.tgz",
- "integrity": "sha512-GErJnRZX8Bkd7Jqx1Ua8jFS0LYgAb9MQvQGvsRAva2jh1RBzWoN+jvPX7NpAQhyfxzV/KG1Zn9R7ZlvMxx91mg==",
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/mf-parser/-/mf-parser-3.6.0.tgz",
+ "integrity": "sha512-vBE7hE8ZB2rtMPxJZHgfuMQIF98ebqXUDTtG/EzapRJ/CDurI/bEo8ZEyQI+ZKznGXr6HGcnBdoE2+U52v/JtA==",
"license": "MIT",
"dependencies": {
- "atom-sorter": "^1.2.0",
- "chemical-elements": "^1.3.0",
- "chemical-groups": "^1.3.0"
+ "atom-sorter": "^2.2.1",
+ "chemical-elements": "^2.2.1",
+ "chemical-groups": "^2.2.3"
}
},
"node_modules/micromatch": {
@@ -6834,9 +7196,9 @@
}
},
"node_modules/openchemlib": {
- "version": "9.6.0",
- "resolved": "https://registry.npmjs.org/openchemlib/-/openchemlib-9.6.0.tgz",
- "integrity": "sha512-SAMLSwOQTCDNpfNu/WTQpzLMYTRj/xwetMPRoAGHeR2J162RP/OI6vHpVcC7L4V7ThMW3ZhMf7GdH04yndmHtw==",
+ "version": "9.7.0",
+ "resolved": "https://registry.npmjs.org/openchemlib/-/openchemlib-9.7.0.tgz",
+ "integrity": "sha512-IMO5O+151rrfakuTkEpCsZvMXFqfCGWrXarlEBukiAqDYhxqSG0LtyzZdtTn0ETSY8Nz+oTLGs1iJ2tRRUK7lA==",
"license": "BSD-3-Clause"
},
"node_modules/optionator": {
@@ -6935,12 +7297,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/papaparse": {
- "version": "5.5.2",
- "resolved": "https://registry.npmjs.org/papaparse/-/papaparse-5.5.2.tgz",
- "integrity": "sha512-PZXg8UuAc4PcVwLosEEDYjPyfWnTEhOrUfdv+3Bx+NuAb+5NhDmXzg5fHWmdCh1mP5p7JAZfFr3IMQfcntNAdA==",
- "license": "MIT"
- },
"node_modules/parchment": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/parchment/-/parchment-3.0.0.tgz",
@@ -7084,6 +7440,12 @@
"url": "https://github.com/sponsors/jonschlinkert"
}
},
+ "node_modules/picomodal": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/picomodal/-/picomodal-3.0.0.tgz",
+ "integrity": "sha512-FoR3TDfuLlqUvcEeK5ifpKSVVns6B4BQvc8SDF6THVMuadya6LLtji0QgUDSStw0ZR2J7I6UGi5V2V23rnPWTw==",
+ "license": "MIT"
+ },
"node_modules/pluralize": {
"version": "8.0.0",
"resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz",
@@ -7194,6 +7556,27 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/queue-microtask": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
+ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT"
+ },
"node_modules/quill": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/quill/-/quill-2.0.3.tgz",
@@ -7524,6 +7907,17 @@
"node": ">=4"
}
},
+ "node_modules/reusify": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz",
+ "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "iojs": ">=1.0.0",
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/rimraf": {
"version": "2.7.1",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
@@ -7539,9 +7933,9 @@
}
},
"node_modules/rollup": {
- "version": "4.45.1",
- "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.45.1.tgz",
- "integrity": "sha512-4iya7Jb76fVpQyLoiVpzUrsjQ12r3dM7fIVz+4NwoYvZOShknRmiv+iu9CClZml5ZLGb0XMcYLutK6w9tgxHDw==",
+ "version": "4.46.3",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.46.3.tgz",
+ "integrity": "sha512-RZn2XTjXb8t5g13f5YclGoilU/kwT696DIkY3sywjdZidNSi3+vseaQov7D7BZXVJCPv3pDWUN69C78GGbXsKw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -7555,26 +7949,26 @@
"npm": ">=8.0.0"
},
"optionalDependencies": {
- "@rollup/rollup-android-arm-eabi": "4.45.1",
- "@rollup/rollup-android-arm64": "4.45.1",
- "@rollup/rollup-darwin-arm64": "4.45.1",
- "@rollup/rollup-darwin-x64": "4.45.1",
- "@rollup/rollup-freebsd-arm64": "4.45.1",
- "@rollup/rollup-freebsd-x64": "4.45.1",
- "@rollup/rollup-linux-arm-gnueabihf": "4.45.1",
- "@rollup/rollup-linux-arm-musleabihf": "4.45.1",
- "@rollup/rollup-linux-arm64-gnu": "4.45.1",
- "@rollup/rollup-linux-arm64-musl": "4.45.1",
- "@rollup/rollup-linux-loongarch64-gnu": "4.45.1",
- "@rollup/rollup-linux-powerpc64le-gnu": "4.45.1",
- "@rollup/rollup-linux-riscv64-gnu": "4.45.1",
- "@rollup/rollup-linux-riscv64-musl": "4.45.1",
- "@rollup/rollup-linux-s390x-gnu": "4.45.1",
- "@rollup/rollup-linux-x64-gnu": "4.45.1",
- "@rollup/rollup-linux-x64-musl": "4.45.1",
- "@rollup/rollup-win32-arm64-msvc": "4.45.1",
- "@rollup/rollup-win32-ia32-msvc": "4.45.1",
- "@rollup/rollup-win32-x64-msvc": "4.45.1",
+ "@rollup/rollup-android-arm-eabi": "4.46.3",
+ "@rollup/rollup-android-arm64": "4.46.3",
+ "@rollup/rollup-darwin-arm64": "4.46.3",
+ "@rollup/rollup-darwin-x64": "4.46.3",
+ "@rollup/rollup-freebsd-arm64": "4.46.3",
+ "@rollup/rollup-freebsd-x64": "4.46.3",
+ "@rollup/rollup-linux-arm-gnueabihf": "4.46.3",
+ "@rollup/rollup-linux-arm-musleabihf": "4.46.3",
+ "@rollup/rollup-linux-arm64-gnu": "4.46.3",
+ "@rollup/rollup-linux-arm64-musl": "4.46.3",
+ "@rollup/rollup-linux-loongarch64-gnu": "4.46.3",
+ "@rollup/rollup-linux-ppc64-gnu": "4.46.3",
+ "@rollup/rollup-linux-riscv64-gnu": "4.46.3",
+ "@rollup/rollup-linux-riscv64-musl": "4.46.3",
+ "@rollup/rollup-linux-s390x-gnu": "4.46.3",
+ "@rollup/rollup-linux-x64-gnu": "4.46.3",
+ "@rollup/rollup-linux-x64-musl": "4.46.3",
+ "@rollup/rollup-win32-arm64-msvc": "4.46.3",
+ "@rollup/rollup-win32-ia32-msvc": "4.46.3",
+ "@rollup/rollup-win32-x64-msvc": "4.46.3",
"fsevents": "~2.3.2"
}
},
@@ -7591,6 +7985,30 @@
"rollup": "^1.20.0 || ^2.0.0 || ^3.0.0 || ^4.0.0"
}
},
+ "node_modules/run-parallel": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
+ "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "queue-microtask": "^1.2.2"
+ }
+ },
"node_modules/rxn-parser": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/rxn-parser/-/rxn-parser-0.1.2.tgz",
@@ -7710,10 +8128,10 @@
"postcss": "^7.0.27"
}
},
- "node_modules/seed-random": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/seed-random/-/seed-random-2.2.0.tgz",
- "integrity": "sha512-34EQV6AAHQGhoc0tn/96a9Fsi6v2xdqe/dMUwljGRaFOzR3EgRmECvD0O8vi8X+/uQ50LGHfkNu/Eue5TPKZkQ==",
+ "node_modules/seedrandom": {
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/seedrandom/-/seedrandom-3.0.5.tgz",
+ "integrity": "sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg==",
"license": "MIT"
},
"node_modules/semver": {
@@ -8167,6 +8585,19 @@
"node": ">=8.0"
}
},
+ "node_modules/ts-api-utils": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz",
+ "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18.12"
+ },
+ "peerDependencies": {
+ "typescript": ">=4.8.4"
+ }
+ },
"node_modules/tsconfig-paths": {
"version": "3.15.0",
"resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz",
@@ -8321,11 +8752,27 @@
}
},
"node_modules/typed-function": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/typed-function/-/typed-function-1.1.0.tgz",
- "integrity": "sha512-TuQzwiT4DDg19beHam3E66oRXhyqlyfgjHB/5fcvsRXbfmWPJfto9B4a0TBdTrQAPGlGmXh/k7iUI+WsObgORA==",
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/typed-function/-/typed-function-4.2.1.tgz",
+ "integrity": "sha512-EGjWssW7Tsk4DGfE+5yluuljS1OGYWiI1J6e8puZz9nTMM51Oug8CD5Zo4gWMsOhq5BI+1bF+rWTm4Vbj3ivRA==",
+ "license": "MIT",
"engines": {
- "node": ">= 6"
+ "node": ">= 18"
+ }
+ },
+ "node_modules/typescript": {
+ "version": "5.9.2",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.2.tgz",
+ "integrity": "sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "peer": true,
+ "bin": {
+ "tsc": "bin/tsc",
+ "tsserver": "bin/tsserver"
+ },
+ "engines": {
+ "node": ">=14.17"
}
},
"node_modules/uglify-js": {
@@ -8540,6 +8987,15 @@
"spdx-license-ids": "^3.0.0"
}
},
+ "node_modules/vanilla-picker": {
+ "version": "2.12.3",
+ "resolved": "https://registry.npmjs.org/vanilla-picker/-/vanilla-picker-2.12.3.tgz",
+ "integrity": "sha512-qVkT1E7yMbUsB2mmJNFmaXMWE2hF8ffqzMMwe9zdAikd8u2VfnsVY2HQcOUi2F38bgbxzlJBEdS1UUhOXdF9GQ==",
+ "license": "ISC",
+ "dependencies": {
+ "@sphinxxxx/color-conversion": "^2.2.2"
+ }
+ },
"node_modules/walk": {
"version": "2.3.15",
"resolved": "https://registry.npmjs.org/walk/-/walk-2.3.15.tgz",
diff --git a/package.json b/package.json
index 2ad88d9062..86f9bef580 100644
--- a/package.json
+++ b/package.json
@@ -40,15 +40,15 @@
"url": "https://github.com/NPellet/visualizer.git"
},
"devDependencies": {
- "@babel/types": "^7.28.1",
+ "@babel/types": "^7.28.2",
"@rollup/plugin-commonjs": "^28.0.6",
"@rollup/plugin-json": "^6.1.0",
"@rollup/plugin-node-resolve": "^16.0.1",
"add-stream": "^1.0.0",
"bower": "^1.8.14",
"conventional-changelog": "^6.0.0",
- "eslint": "^9.31.0",
- "eslint-config-cheminfo": "^14.1.1",
+ "eslint": "^9.33.0",
+ "eslint-config-cheminfo": "^15.0.1",
"extend": "^3.0.2",
"globals": "^16.3.0",
"grunt": "^1.6.1",
@@ -61,7 +61,7 @@
"lodash": "^4.17.21",
"mkpath": "^1.0.0",
"prettier": "^3.6.2",
- "rollup": "^4.45.1",
+ "rollup": "^4.46.3",
"rollup-plugin-polyfill-node": "^0.13.0",
"semver": "^5.7.2",
"tempfile": "^3.0.0",
@@ -69,20 +69,23 @@
},
"private": true,
"dependencies": {
- "@babel/preset-env": "^7.28.0",
- "@fortawesome/fontawesome-free": "^6.7.2",
+ "@babel/preset-env": "^7.28.3",
+ "@fortawesome/fontawesome-free": "^7.0.0",
"angularplasmid": "^1.0.5",
"babel-preset-minify": "^0.5.2",
"country-data": "0.0.31",
- "d3-hierarchy": "^1.1.9",
"delay": "^4.4.1",
"eslint-plugin-import": "^2.32.0",
- "katex": "^0.10.0",
- "mathjs": "^5.10.3",
- "mf-parser": "^1.5.0",
+ "jquery": "^3.7.1",
+ "jquery-migrate": "^3.5.2",
+ "jquery-ui": "^1.14.1",
+ "jsoneditor": "^10.3.0",
+ "katex": "^0.16.22",
+ "mathjs": "^14.6.0",
+ "mf-parser": "^3.6.0",
"mime-types": "^2.1.35",
"node-jsgraph": "2.4.15",
- "openchemlib": "^9.6.0",
+ "openchemlib": "^9.7.0",
"quill": "^2.0.3",
"quill-resize-module": "^2.0.4",
"quill-table-better": "^1.2.1",
@@ -92,6 +95,6 @@
"twig": "^1.17.1"
},
"volta": {
- "node": "20.19.1"
+ "node": "20.19.4"
}
}
diff --git a/rollup.config.mjs b/rollup.config.mjs
index 8f175a6641..84bf4de86c 100644
--- a/rollup.config.mjs
+++ b/rollup.config.mjs
@@ -25,7 +25,7 @@ export default [
plugins,
},
{
- input: 'node_modules/mf-parser/src/index.js',
+ input: 'node_modules/mf-parser/lib/src/index.js',
output: {
file: 'src/browserified/MFParser/index.js',
format: 'umd',
diff --git a/src/css/main.css b/src/css/main.css
index e681cdf6f9..746575e008 100644
--- a/src/css/main.css
+++ b/src/css/main.css
@@ -288,7 +288,7 @@ div.ci-module-header-toolbar ul {
}
div.ci-module-header-toolbar ul li {
- margin: 0 0 0 10px;
+ margin: 0 0 0 5px;
list-style-type: none;
cursor: pointer;
color: #666666;
diff --git a/src/init.js b/src/init.js
index 07902ebc92..a47c0f81f4 100644
--- a/src/init.js
+++ b/src/init.js
@@ -6,31 +6,24 @@ require.config({
ace: 'components/ace/src',
angularplasmid:
'node_modules/angularplasmid/dist/angularplasmid.complete.min',
- async: 'components/async/dist/async',
- babel: 'components/babel-standalone/babel.min',
- bowser: 'components/bowser/bowser',
canvg: 'components/canvg/dist/canvg.bundle',
chroma: 'components/chroma-js/chroma.min',
ckeditor: 'components/ckeditor/ckeditor',
countryData: 'browserified/country-data/index',
delay: 'browserified/delay/index',
d3: 'components/d3/d3.min',
- 'd3-hierarchy': 'node_modules/d3-hierarchy/dist/d3-hierarchy.min',
eventEmitter: 'components/eventEmitter/EventEmitter.min',
- fancytree: 'components/fancytree/dist/jquery.fancytree-all',
- fetch: 'components/fetch/fetch',
'file-saver': 'components/file-saver.js/FileSaver',
forms: 'lib/forms',
highlightjs: 'lib/highlight.js/highlight.pack',
jcampconverter: 'lib/jcampconverter/jcampconverter.7.3.1.min',
jqgrid: 'components/jqgrid_edit/js/jquery.jqGrid',
jsbarcode: 'components/jsbarcode/dist/JsBarcode.all.min',
- jquery: 'components/jquery/dist/jquery',
- 'jquery-cookie': 'components/jquery-cookie/jquery.cookie',
+ jquery: 'node_modules/jquery/dist/jquery',
+ 'jquery-migrate': 'node_modules/jquery-migrate/dist/jquery-migrate',
'jquery-tmpl': 'components/jquery-tmpl/jquery.tmpl.min',
- 'jquery-ui': 'components/jquery-ui',
+ 'jquery-ui': 'node_modules/jquery-ui/dist/jquery-ui',
jsgraph: 'components/jsgraph/dist/jsgraph-es6',
- jsoneditor: 'components/jsoneditor/dist/jsoneditor-minimalist.min',
'json-chart': 'components/json-chart/dist/json-chart.min',
jszip: 'components/jszip/dist/jszip.min',
'js-yaml': 'components/js-yaml/dist/js-yaml.min',
@@ -40,13 +33,12 @@ require.config({
'markdown-js': 'components/markdown-js/lib/markdown',
marked: 'components/marked/lib/marked',
// mathjax: 'components/MathJax/MathJax.js?config=TeX-AMS-MML_HTMLorMML&delayStartupUntil=configured',
- mathjs: 'node_modules/mathjs/dist/math.min',
+ mathjs: 'node_modules/mathjs/lib/browser/math',
'mime-types': 'browserified/mime-types/index',
moment: 'components/moment/moment',
'moment-duration-format':
'components/moment-duration-format/lib/moment-duration-format',
notifyjs: 'components/notifyjs/dist/notify',
- modernizr: 'components/modernizr/modernizr',
msa: 'lib/msa/msa.min',
'nmr-simulation': 'components/nmr-simulation/dist/nmr-simulation',
numeral: 'components/numeral/numeral',
@@ -72,14 +64,6 @@ require.config({
uri: 'components/uri.js/src',
'web-animations': 'components/web-animations-js/web-animations.min',
x2js: 'components/x2js/xml2json.min',
- BiojsSequence: 'lib/biojs-1.0/src/main/javascript/Biojs.Sequence',
- BiojsTooltip: 'lib/biojs-1.0/src/main/javascript/Biojs.Tooltip',
- BiojsFeatureViewer: 'lib/biojs-1.0/src/main/javascript/Biojs.FeatureViewer',
- BiojsCore: 'lib/biojs-1.0/src/main/javascript/Biojs',
- BiojsMyFeatureViewer:
- 'modules/types/bio/feature_viewer/Biojs.MyFeatureViewer',
- BiojsDasProteinFeatureViewer:
- 'lib/biojs-1.0/src/main/javascript/Biojs.DasProteinFeatureViewer',
},
shim: {
canvg: {
@@ -88,9 +72,6 @@ require.config({
katex: {
exports: 'katex',
},
- fetch: {
- exports: 'fetch',
- },
// mathjax: {
// exports: 'MathJax',
// init: function () {
@@ -118,21 +99,19 @@ require.config({
ckeditor: {
exports: 'CKEDITOR',
},
- modernizr: {
- exports: 'Modernizr',
- },
'lib/parser/Parser': {
exports: 'Parser',
},
quillResizeModule: ['quillPrivate', 'quill'],
quillTableBetterModule: ['quillPrivate', 'quill'],
- 'jquery-cookie': 'jquery',
select2: ['jquery'],
jsbarcode: ['jquery'],
'lib/threejs/TrackballControls': ['threejs'],
+ 'jquery-migrate': ['jquery'],
+ 'jquery-ui': ['jquery'],
jqgrid: ['jquery', 'components/jqgrid_edit/js/i18n/grid.locale-en'],
'lib/couchdb/jquery.couch': ['jquery'],
- slickgrid_core: ['jquery', 'jquery-ui/ui/widgets/sortable', 'jquery-tmpl'],
+ slickgrid_core: ['jquery', 'jquery-ui', 'jquery-tmpl'],
slickgrid: {
deps: [
'slickgrid_core',
@@ -162,31 +141,13 @@ require.config({
deps: ['lib/pixastic/pixastic/pixastic.core'],
exports: 'Pixastic',
},
- fancytree: [
- 'jquery-ui/ui/effects/effect-blind',
- 'jquery-ui/ui/widgets/droppable',
- 'jquery-ui/ui/widgets/draggable',
- ],
'moment-duration-format': ['moment'],
- BiojsCore: {
- exports: 'Biojs',
- },
- BiojsSequence: ['BiojsCore'],
- BiojsTooltip: ['BiojsCore'],
- BiojsMyFeatureViewer: ['BiojsFeatureViewer'],
- BiojsFeatureViewer: [
- 'BiojsCore',
- 'lib/biojs-1.0/src/main/resources/dependencies/jquery/jquery.tooltip',
- 'lib/biojs-1.0/src/main/resources/dependencies/graphics/raphael-2.1.2',
- 'lib/biojs-1.0/src/main/resources/dependencies/graphics/canvg',
- 'lib/biojs-1.0/src/main/resources/dependencies/graphics/rgbcolor',
- ],
- BiojsDasProteinFeatureViewer: ['BiojsMyFeatureViewer'],
},
map: {
'*': {
quill: 'quillPrivate',
Quill: 'quillPrivate',
+ 'components/fancytree/dist/modules/jquery.fancytree.ui-deps': 'jquery-ui',
},
quillPrivate: {
quill: 'quill',
@@ -219,8 +180,10 @@ require([
'uri/URI.fragmentQuery',
'components/setImmediate/setImmediate',
'lib/regenerator/regenerator-runtime',
+ 'jquery-ui',
+ // Uncomment to enable jquery-migrate deprecations warnings.
+ // 'jquery-migrate',
], function (Version, $, Datas, EntryPoint, URI) {
- $.browser = { msie: false }; // Property used by old libraries and not present in jQuery anymore
$(document).ready(() => {
const url = new URI(window.location.href);
const type =
diff --git a/src/lib/biojs-1.0/README.md b/src/lib/biojs-1.0/README.md
deleted file mode 100755
index 739cb63937..0000000000
--- a/src/lib/biojs-1.0/README.md
+++ /dev/null
@@ -1,48 +0,0 @@
-# Overview
-The aim of this project is to create a library of graphical components easy to reuse to represent biological information. A library easy to maintain and develop by identifying minimal functional units that could be used as building blocks for more complex applications. A browser independent JavaScript library easy to integrate in web applications regardless the programming language used to develop the server side.
-
-* [Registry of components](http://www.ebi.ac.uk/Tools/biojs/registry)
-* [Documentation for developers](https://github.com/biojs/biojs/wiki/Documentation)
-
-# Objectives
-* Represent consistently biological information across different projects
-* Ease discovery, test and integration of graphical components
-* Standardize and facilitate components development
-
-# Use a BioJS component
-* Search and select a component in a BioJS registry. i.e. [EBI BioJS registry](http://www.ebi.ac.uk/Tools/biojs/registry/components.html)
-* Look at the "overview" section to see an example of how a component works
-* Check the "options", "methods" and "events" sections to see more information about the functionality provided by a component
-* Find inside the "installation" section the code and dependencies you will need to make a component working in a web page
-
-# Develop a component
-BioJS components are framework agnostic, only requiring the code to be written in JavaScript. The developer of a new component is thus free to use any framework (e.g. [JQuery](http://jquery.com/), [YUI](http://yuilibrary.com/)) and to include any other library (e.g. [Raphael](http://raphaeljs.com/), [D3](http://d3js.org/)).
-
-Any component by definition extends the BioJS reference implementation incorporating the rules provided by the [BioJS specification](https://docs.google.com/document/d/1gG036Bvwl4i-KX5BTHddGzeE_5eospL-864BrnsAS_s/edit). The BioJS specification defines:
-
-* the component architecture
-* a protocol to handle events that allows communication between components
-* the component extension through Object Oriented Inheritance
-* the code documentation format
-* documentation on how to include examples to test the component functionality
-
-# Create a new component from scratch
-
-We would recommend you to follow our [tutorials](https://github.com/biojs/biojs/wiki/Documentation#tutorials) and read the [BioJS documentation](https://github.com/biojs/biojs/wiki/Documentation).
-
-Visualization components can be as complex as you want. However we encourage you to identify the minimal parts that make sense to isolate building components that can be reused independently or as a part of another more complex components.
-
-Before coding we suggest to collect [requirements](https://github.com/biojs/biojs/wiki/Documentation#requirements) that will help you to think about how to implement a component. You could use our [template](https://docs.google.com/document/d/1LLyUK0jEc8KXAtlmUc7vX68wvR3k8AoSdkLVSKcK1M0/edit) to collect requirements or you could follow your own. If would like to share your requirements document we will be happy to include it in the list of component requirements.
-
-# Wrap JavaScript functionality as BioJS
-
-If you already have some JavaScript functionality you could make it BioJS creating a wrapper on top of it. A wrapper is simply a new BioJS components using your JavaScript functionality as a dependency. We do not have a specific tutorial for this, but you could use the tutorials we have to create a component.
-
-# Feedback
-Please feel free to send us feature requests and/or ideas of what it should be considered in the development of BioJS through the [issue tracker](https://github.com/biojs/biojs/issues) or the [BioJS mailing list](https://groups.google.com/forum/#!forum/biojs).
-
-Join the BioJS mailing list if you would like to send us an email to participate or provide feedback about the project.
-
-# Code license
-[Apache License 2.0](http://www.apache.org/licenses/LICENSE-2.0)
-
diff --git a/src/lib/biojs-1.0/pom.xml b/src/lib/biojs-1.0/pom.xml
deleted file mode 100755
index 7522585f1d..0000000000
--- a/src/lib/biojs-1.0/pom.xml
+++ /dev/null
@@ -1,182 +0,0 @@
-
WARNING: The CSS value for the position will be changed to relative.
- * - * @class - * @extends Biojs - * - * @author Gustavo A. Salazar - * @version 1.0.0 - * @category 1 - * - * @requires jQuery Core 1.7.2 - * @dependency - * - * @requires jQuery UI 1.8.2 - * @dependency - * - * @requires jQuery UI CSS 1.8.2 - * @dependency - * - * @requires jquery.watcher.js - * @dependency - * - * @requires Selector CSS - * @dependency - * - * @param {Object} options An object with the options for the Chromosome component. - * - * @option {string} target - * Identifier of the DIV tag where the component should be displayed. - * - * @option {boolean} resize_left - * to indicate if the selector can be resizable from the left side. default value: true - * - * @option {boolean} resize_right - * to indicate if the selector can be resizable from the right side. default value: true - * - * @option {boolean} resize_top - * to indicate if the selector can be resizable from the top side. default value: true - * - * @option {boolean} resize_bottom - * to indicate if the selector can be resizable from the bottom side. default value: true - * - * @option {array} area - * an array with 4 elements(integers) to indicate the start position of the area selector. - * The first two elements indicate the X and Y position of the top-left corner, - * the last 2 elements indicate the bottom-right position. - * The position are relative to the target element. - * - * @example - * var instance = new Biojs.AreaSelector({ - * target: "YourOwnDivId", - * area: [10,10,40,40] - * }); - - * - */ - -Biojs.AreaSelector = Biojs.extend ( -/** @lends Biojs.AreaSelector# */ -{ - constructor: function (options) { - var self=this; - $("#"+self.opt.target).css("position","relative"); - var innerCode="' + data[key].value + '
' ); - } - } - } - - this.raiseEvent( Biojs.ChEBICompound.EVT_ON_SUMMARY_LOADED,{ - id: data.Identifier - }); - } - - Biojs.console.log("_setSummary done"); - }, - - _buildTabPanel: function( container, onVisibilityChangeCb ) { - - container.html(''); - - var content = jQuery('').appendTo(container); - var expand = jQuery('').appendTo(container); - var collapse = jQuery('').appendTo(container); - - var buttonsWidth = parseInt( jQuery('.toggle').css('width'), 10 ); - var contentWidth = container.width() - buttonsWidth; - - container.css( 'left', 0 ) - .find('.toggle') - .click( function(){ - // Animate show/hide this tab - container.animate({ - left: ( parseInt( container.css('left'), 10 ) == 0 ? buttonsWidth - container.outerWidth() : 0 ) + "px" - }, - // to call once the animation is complete - function() { - - var visibleWidth = parseInt( container.css('left'), 10 ) == 0 ? container.width() : buttonsWidth; - - container.find('.toggle').toggle(); - - if ( "function" == typeof onVisibilityChangeCb ) { - onVisibilityChangeCb.call( this, collapse.is(':visible'), visibleWidth ); - } - } - ); - }) - .css({ - 'float':'right', - 'position':'relative' - }); - - Biojs.console.log('content width '+ contentWidth); - - content.css({ - 'width': contentWidth + "px", - 'height': container.height() + "px", - 'word-wrap': 'break-word' - }); - - return content; - }, - - getHTML: function () { - return this._container; - } - -},{ - //Events - EVT_ON_IMAGE_LOADED: "onImageLoaded", - EVT_ON_SUMMARY_LOADED: "onSummaryLoaded", - EVT_ON_REQUEST_ERROR: "onRequestError" - -}); \ No newline at end of file diff --git a/src/lib/biojs-1.0/src/main/javascript/Biojs.ChEMBLCompound.js b/src/lib/biojs-1.0/src/main/javascript/Biojs.ChEMBLCompound.js deleted file mode 100755 index 6b20f71b2d..0000000000 --- a/src/lib/biojs-1.0/src/main/javascript/Biojs.ChEMBLCompound.js +++ /dev/null @@ -1,297 +0,0 @@ -/** - * - * - * @class - * @extends Biojs - * - * @author John Gomez - * @version 1.0.0 - * @category 2 - * - * @requires Server side proxy - * - * @param {Object} options An object with the options for the component. - * - * @option {string} [imageUrl="http://www.ebi.ac.uk/chebi/displayImage.do"] - * Url of the web service in order to require the compound image. - * To get a compound image, 'imageUrl + id' will be used as URI. - * - * @option {string} id - * ChEBI identifier of the compound to be displayed (i.e. '4991'). - * - * @option {int} [height=400] - * The height in pixels of how big this image should be displayed. - * - * @option {int} [width=400] - * The width in pixels of how big this image should be displayed. - * - * @example - * var instance = new Biojs.ChEMBLCompound({ - * target: 'YourOwnDivId', - * id: 'CHEMBL67' - * }); - * - * - */ -Biojs.ChEMBLCompound = Biojs.extend( -/** @lends Biojs.ChEMBLCompound# */ -{ - constructor: function(options){ - Biojs.console.enable(); - //constructor of Biojs.ChEMBLCompound - - jQuery("#"+this.opt.target).css("padding","0px") - .css("width",this.opt.width) - .css("height",this.opt.height) - .css("overflow","hidden"); - - if (this.opt.id !== undefined) { - this.setId(this.opt.id); - } - }, - - opt: { - target: 'YourOwnDivId', - id: undefined, - imageUrl: 'https://www.ebi.ac.uk/chembldb/index.php/compound/displayimage/', - detailsUrl: 'https://www.ebi.ac.uk/chemblws/compounds/', - proxyUrl: '../biojs/dependencies/proxy/proxy.php', - - height: 400, - width: 597, - scale: false, - imageIndex: 0 - }, - - eventTypes : [ - /** - * @name Biojs.ChEMBLCompound#onRequestError - * @event - * @param {function} actionPerformed An function which receives an {@link Biojs.Event} object as argument. - * @eventData {Object} source The component which did triggered the event. - * @eventData {string} file The name of the loaded file. - * @eventData {string} result A string with either value 'success' or 'failure'. - * @eventData {string} message Error message in case of result be 'failure'. - * - * @example - * instance.onRequestError( - * function( e ) { - * alert( e.message ); - * } - * ); - * - * */ - "onRequestError", - /** - * @name Biojs.ChEMBLCompound#onLoadedImage - * @event - * @param {function} actionPerformed An function which receives an {@link Biojs.Event} object as argument. - * @eventData {Object} source The component which did triggered the event. - * @eventData {string} id The identifier of the loaded file. - * - * @example - * instance.onLoadedImage( - * function( e ) { - * alert( e.id + " loaded." ); - * } - * ); - * - * */ - "onLoadedImage" - ], - - /** - * - * - * @example - * instance.setId('4991'); - * - */ - setId: function(chEMBLId) { - self = this; - self.opt.id = chEMBLId; - - var dimension = Math.round(self.opt.width * 0.7); - var url = self.opt.imageUrl + chEMBLId; - var image = 'ACGACTAGCATCAGCATCGACACGACTAGCACTGGACTGAATCGACATCGACATGC - * ...- * - * @example - * var instance = new Biojs.DNAContentViewer({ - * target: "YourOwnDivId", - * selectionBackgroundColor: '#99FF00', - * dataSet: "../biojs/data/DNAContentViewerData.txt" - * }); - * - */ - - -Biojs.DNAContentViewer = Biojs.extend( - /** @lends Biojs.DNAContentViewer# */ - - - { - zoomSlider: '', - slider_stop: 0, - slider_start: 0, - track: [], - track_bins: [], - width: 1, - height: 1, - data_last_start: 1, - data_first_start: 1, - max: 0, - data: [], - main_data: [], - - - constructor: function (options) { - - var self = this; - self.vis = null; - self.color = null; - self.foci = []; - - - this.track; // data - this.track_bins; // data - - - this._container = $("#DNAContentFeaturePainter-holder"); - $(this._container).addClass("graph"); - - - // Apply options values - this._container.css({ - 'font-family': self.opt.fontFamily, // this is one example of the use of self instead of this - 'background-color': self.opt.backgroundColor, - 'color': self.opt.fontColor, - 'font-size': '36px', - 'text-align': 'center', - 'vertical-align': 'middle', -// 'left':'10px', - 'width': '600px', - 'height': '100px', - 'bottom': '0px' - - }); - - // Disable text selection and - // Change the selection mouse pointer - // from text to hand. - this._container.css({ - '-moz-user-select': 'none', - '-webkit-user-select': 'none', - 'user-select': 'none' - }); - - this.paintDNAContentContent(self.opt.dataSet); - - }, - - /** - * Default values for the options - * @name Biojs.DNAContentViewer-opt - */ - opt: { - target: "YourOwnDivId", - dataSet: "", - fontFamily: '"Andale mono", courier, monospace', - fontColor: "white", - backgroundColor: "#7BBFE9", - selectionFontColor: "black", - selectionBackgroundColor: "yellow", - width: "100%", - height: "130", - radius: 10 - }, - - /** - * Array containing the supported event names - * @name Biojs.DNAContentViewer-eventTypes - */ - eventTypes: [ - /** - * No events added for now but can be added in future - */ - ], - - - /** - * Repaints everything: ruler, shapes, and legend. - * @param {boolean} [withoutZoom=false] When false, it zooms according to the slider values. - * @param {int} [newStart] Zoom from this sequence start value. - * @param {int} [newStop] Zoom to this sequence end value. - * - * @example - * instance._updateDraw(); - * - */ - _updateDraw: function (withoutZoom, newStart, newStop) { - //recalculate start and stop - - if (newStart && newStop) { - - this.slider_start += newStart; - this.slider_stop += newStop; - this._calculateContent(this.slider_start, this.slider_stop); - } - else { - this._calculateContent(); - - } - - if (this.slider_start < this.data_first_start) { - if (newStart == newStop) { - this.slider_stop += this.data_first_start - this.slider_start; - } - this.slider_start = this.data_first_start; - - } - - if (this.slider_stop > this.data_last_start) { - if (newStart == newStop) { - this.slider_start += this.data_last_start - this.slider_stop; - } - this.slider_stop = this.data_last_start; - } - - this._paintDNAContentGraph(undefined, this.slider_start, this.slider_stop); - }, - - /** - * Paint the features according to the values specified in the json object defined when creating the object. - * This method initializes the holder, paints the slider and print button depending on the options, and - * paints the features and legend. - * - * @example - * instance.paintDNAContentContent("../biojs/data/DNAContentViewerData.txt"); - * - * @param {string} dataSet Location of the file with the input text file in raw sequence format. - *
ACGACTACGACTAGCATCAGCATCAGCACTAGCATCAGCACTAGCACTAGCACTAGCATCAGCACTAGCACTAGCACTGACACT...- */ - paintDNAContentContent: function (dataSet) { - if (dataSet != undefined) { - this._setDataSource(dataSet); - this._init(); - } else { - this.$errorMsg = jQuery('') - .html('There was an unexpected failure, the image cannot be displayed. data is undefined.') - .dialog({ - autoOpen: true, - title: 'Error', - modal: true - }); - throw "Error"; - } - - }, - - /** - * Private: Initializes the component. - */ - _init: function () { - Biojs.DNAContentViewer.myself = this; - //First create the slider, button, and holder - var painter_div = jQuery("#" + this.opt.target); - painter_div.text(''); - painter_div.append(this._withSliderOnly(100)); - - painter_div.append(''); - - var holder = document.getElementById("DNAContentPainter-holder"); - if (!holder) { - this.$errorMsg = jQuery('') - .html('There was an unexpected failure, the image cannot be displayed.') - .dialog({ - autoOpen: true, - title: 'Error', - modal: true - }); - throw "Error"; - } - holder.innerHTML = ""; - holder.style.height = "200px"; - holder.style.width = "700px"; - var self = this; - this.width = $("#DNAContentPainter-holder").width(), - this.height = $("#DNAContentPainter-holder").height(), - this.r = self.opt.radius; - - self.opt.width = self.opt.width.toString(); - if (self.opt.width.indexOf("%") != -1) - this.width = this.width * (self.opt.width.substring(0, self.opt.width.length - 1) * 1) / 100.0; - else - this.width = self.opt.width * 1; - self.opt.width = parseInt(this.width); - - self.opt.height = self.opt.height.toString(); - if (self.opt.height.indexOf("%") != -1) - this.height = this.height * (self.opt.height.substring(0, self.opt.height.length - 1) * 1) / 100.0; - else - this.height = self.opt.height * 1; - self.opt.height = parseInt(this.height); - - - self.color = function () { - return d3.scale.ordinal().range(self.colors); - }(); - - d3.text(self.opt.dataSet, function (data, error) { - self.track = data; - var length = data.length - 1; - self._paintLegend(); - self._updateLegend(self._Statsforchunk(self.track)); - self.slider_start = 0; - self.slider_stop = length; - self.data_last_start = length; - self.data_first_start = 0; - - self._paintSlider(); - self._paintMarkersGraph(); - self._updateDraw(); - }); - - }, - - /** - * Private: Function to create slider only. - * @param {int} sizeX Width. - * @ignore - */ - _withSliderOnly: function (sizeX) { - var text = - '
' + - ' | ' + - '' + - ' | ' + - '' + - ' | ' + - '
EBI global search results
"); - //container.blink({delay: 500}); - if(typeof response != "string"){ - /* Print results */ - var ul = jQuery(""+response+"
").appendTo(search_extras); - } - - - - /* COLLAPSIBLE style */ - } else if (this.opt.style.toLowerCase() == Biojs.EbiGlobalSearch.VIEW_COLLAPSIBLE) { - var self = this; - var ebi_search_results = jQuery("#" + Biojs.EbiGlobalSearch.EBI_SEARCH_RESULTS); - jQuery(ebi_search_results).find("h3").removeClass("loading"); - jQuery(ebi_search_results).find("ul").remove(); - jQuery(ebi_search_results).find("p").remove(); - if(typeof response != "string"){ - /* Print results */ - var p = jQuery("Other results for \"" + this.opt.query + "\"
"); - p.appendTo(ebi_search_results); - var ul = jQuery(""+response+"
").appendTo(ebi_search_results); - } - - /* EXPANDED style or any other style selected */ - } else { - var ebi_search_results = jQuery("#" + Biojs.EbiGlobalSearch.EBI_SEARCH_RESULTS); - jQuery(ebi_search_results).find("h3").removeClass("loading"); - if(typeof response != "string"){ - /* Print results */ - var p = jQuery("Other results for \"" + this.opt.query + "\"
"); - p.appendTo(ebi_search_results); - var ul = jQuery(""+response+"
").appendTo(ebi_search_results); - } - } - - - - }, - - /** - * Array containing the supported event names - * @name Biojs.EbiGlobalSearch-eventTypes - */ - eventTypes: [ - /** - * @name Biojs.EbiGlobalSearch#onError - * @event - * @param {function} actionPerformed A function which receives an {@link Biojs.Event} object as argument. - * @eventData {string} message Error message in case of result be 'failure'. - * - * @example - * instance.onError( - * function( e ) { - * alert( e.message ); - * } - * ); - * - **/ - "onError", - - - /** - * @name Biojs.EbiGlobalSearch#onResults - * @event - * @param {function} actionPerformed A function which receives an {@link Biojs.Event} object as argument. - * @eventData {int} resutls Number of total results. - * @eventData {int} items Number of items. - * @example - * instance.onResults( - * function( objEvent ) { - * alert( objEvent.resutls + " results for " + objEvent.servicesWithResults + " services of " + objEvent.services + " services queried" ); - * } - * ); - * - **/ - "onResults" - ] - - - -},{ - // Some static values - - // Query errors - QUERY_ERROR_UNDEFINED: "Query undefined", - QUERY_ERROR_USER_MESSAGE: "Sorry, we could not process your request", - - // Events - EVT_ON_ERROR: "onError", - EVT_ON_RESULTS: "onResults", - - // IDs - EBI_SEARCH_RESULTS: 'ebi_search_results', - SEARCH_EXTRAS: 'search-extras', - - //views - VIEW_BASIC: 'basic', - VIEW_COLLAPSIBLE: 'collapsible', - VIEW_EXPANDED: 'expanded' - - - -}); diff --git a/src/lib/biojs-1.0/src/main/javascript/Biojs.ExpressionAtlasBaselineSummary.js b/src/lib/biojs-1.0/src/main/javascript/Biojs.ExpressionAtlasBaselineSummary.js deleted file mode 100755 index 07958fb2c9..0000000000 --- a/src/lib/biojs-1.0/src/main/javascript/Biojs.ExpressionAtlasBaselineSummary.js +++ /dev/null @@ -1,231 +0,0 @@ -/** - * This is the ExpressionAtlas component for displaying baseline expression of genes - * based on RNA-seq experiments in the ExpressionAtlas database. - * - * @class - * @extends Biojs - * - * @author ExpressionAtlas Team - * @version 1.0.3 - * @category 3 - * - * @requires jQuery Core 1.9.1 - * @dependency - * - * @param {Object} options An object with the options for ExpressionAtlasBaselineSummary component. - * - * @option {string} [featuresUrl='http://www.ebi.ac.uk/gxa/widgets/heatmap/protein'] - * The query URL pointing to the ExpressionAtlas for retrieving gene page results - * displayed as part of this widget. It is usually composed to include the identifier - * of the gene you are interested in, see example. - * - * @option {string} geneQuery - * ENSEMBL gene ids or UniProt ids. If more than one identifier follow this format "P00846+P99999" - * - * @option {string} [propertyType=''] - * To narrow to search scope of a query term, please provide a type. - * - * @option {string} [geneSetMatch=false] - * If true collapse multiple returned gene profiles into one single line of average expression. - * - * @option {string} target - * Identifier of the DIV tag where the component should be displayed. - * - * @option {string} [rootContext='../biojs/dependencies/proxy/proxy.php?url%3dhttp://www.ebi.ac.uk/gxa'] - * Specifies the root context path to be used by the widget content, - * i.e. this is the location of the content proxy pointing to ExpressionAtlas - * - * @option {string} [proxyUrl='../biojs/dependencies/proxy/proxy.php'] - * This component needs to request data from a web service. To bypass the same origin policy - * (http://en.wikipedia.org/wiki/Same_origin_policy) this component needs a proxy. - * You could use your own proxy by modifying this value or one of the BioJS proxies: - * '../biojs/dependencies/proxy/proxy.php' or '../biojs/dependencies/proxy/proxy.jsp' - * - * @example - * var instance = new Biojs.ExpressionAtlasBaselineSummary({ - * geneQuery:"ENSG00000187003+ENSG00000185264", - * propertyType:"bioentity_identifier", - * geneSetMatch:false, - * target : "YourOwnDivId" - * }); - * - */ - - -Biojs.ExpressionAtlasBaselineSummary = Biojs.extend( - /** @lends Biojs.ExpressionAtlasBaselineSummary# */ - { - - /** - * Constructor to initialize the component - * @name Biojs.ExpressionAtlasBaselineSummary-constructor - */ - constructor:function (options) { - //Biojs.console.enable(); - this._containerDiv = jQuery("#" + this.opt.target); - this.setQuery(this.opt.geneQuery, this.opt.propertyType, this.opt.geneSetMatch); - }, - - /** - * Set ENSEMBL gene ids or UniProt ids. - * @param {string} geneQuery ENSEMBL gene ids or UniProt ids. If more than one identifier follow this format "P00846+P99999". - * @param {string} propertyType Property to narrow to search scope of a query term, please provide a type. - * @param {boolean} geneSetMatch If true collapse multiple returned gene profiles into one single line of average expression. - * - * @example - * instance.setQuery("ENSG00000187003+ENSG00000185264","bioentity_identifier",false); - * - * @example - * instance.setQuery("Q61171","",false); - * - * @example - * instance.setQuery("P37173+Q9UER7+P10600+P35243+Q93074+P16234","",false); - * - * @example - * instance.setQuery("ENSG000000000000","bioentity_identifier",false); - * - */ - setQuery: function(geneQuery, propertyType, geneSetMatch){ - this.opt.geneQuery = geneQuery; - this.opt.propertyType = propertyType; - this.opt.geneSetMatch = geneSetMatch; - this._containerDiv.empty(); - - /* Check if it is Uniprot or Ensembl ID. Correct propertyType if necessary */ - var listOfIds = geneQuery.split("+"); - this._identifierDb = this._checkIdentifier(listOfIds[0]); - if(this._identifierDb == Biojs.ExpressionAtlasBaselineSummary.ID_UNIPROT){ - this.opt.propertyType = ""; - } else if (this._identifierDb == Biojs.ExpressionAtlasBaselineSummary.ID_ENSEMBL){ - this.opt.propertyType = "bioentity_identifier"; - } - - /* Set url */ - var url = this.opt.featuresUrl + "?geneQuery=" + this.opt.geneQuery; - if(this.opt.propertyType != ""){ - url = url + "&propertyType=" + this.opt.propertyType; - } - if(this.opt.geneSetMatch == true){ - url = url + "&geneSetMatch=true"; - } - if (this.opt.proxyUrl != "") { - url = this.opt.proxyUrl + "?url=" + url; - } - - /* Set url and start the request */ - var self = this; - var httpRequest = { - url:url, - data:{rootContext:this.opt.rootContext}, - method:"GET", - /** @ignore No need to document this object */ - beforeSend:function () { - self._containerDiv.html(""+p+" | "+self.expressions[p].join(" | ")+" |
---|---|---|
Column to Use: | "; - var col = (self.column!=-1)?self.column:0; - for (var i=0; i< columns; i++){ - var selected=(i==col)?"checked":""; - loadedText += ''; - selected=""; - } - loadedText += " |
'+self.getFormatedTable(5)+'
Min: | "; - loadedText +=''; - loadedText +=" | |
---|---|---|
Center: | "; - loadedText +=''; - loadedText +=" | |
Max: | "; - loadedText +=''; - loadedText +=" |
'+loadedText+'
Segment, accession or identification.
- *
- * General configuration used mainly to paint the ruler, grid lines, and slider. - * Elements such as XXXNonOverlapping, XXXCentered, and XXXRows are necessary only it you want to enable changing styles without retrieving the data - * from the server again. - *
- *- * aboveRuler: <int>, //pixels above the ruler - * belowRuler: <int>, //pixels below the ruler - * dasReference: <String>, //das reference URL - * dasSources: <String>, //das annotations URLs separated by commas - * gridLineHeight: <int>, //row height (used for rows and nonOverlapping styles) - * horizontalGrid: <boolean>, //should horizontal grid lines be displayed? - * horizontalGridNumLines: <int>, //number of horizontal grid lines - * leftMargin: <int>, //pixels for the holder's left margin - * nonOverlapping: <boolean>, //is nonOverlapping style requested? - * pixelsDivision: <int>, //number of pixels between every main division in the ruler - * requestedStart: <int>, //requested start position - * requestedStop: <int>, //requested stop position - * rightMargin: <int>, //pixels for the holder's right margin - * rulerLength: <int>, //ruler length in pixels - * rulerY: <int>, //ruler y position in pixels - * sequenceLength: <int>, //sequence length (number of amino acids) - * sequenceLineY: <int>, //sequence line y position (blue line representing the sequence) - * sizeX: <int>, //holder's width in pixels - * sizeY: <int>, //holder's height in pixels - * sizeYKey: <int>, //key holder's height in pixels - * start: <int>, //first amino acid to show - * stop: <int>, //last amino acid to show - * style: <String>, // style in use from centered, rows, or nonOverlapping - * unitSize: <int>, //number of pixels used to represent one amino acid - * verticalGrid: <boolean> //are vertical grid lines displayed? - * verticalGridLineLength: <int> //vertical grid lines' length - * horizontalGridNumLinesCentered: <int>, //number of horizontal grid line for the centered style - * horizontalGridNumLinesNonOverlapping: <int>, //number of horizontal grid line for the nonOverlapping style - * horizontalGridNumLinesRows: <int>, //number of horizontal grid line for the rows style - * sequenceLineYCentered: <int>, //sequence line y position for centered style (blue line representing the sequence) - * sequenceLineYNonOverlapping: <int>, //sequence line y position for nonOverlapping style (blue line representing the sequence) - * sequenceLineYRows: <int>, //sequence line y position for rows style (blue line representing the sequence) - * sizeYCentered: <int>, //holder's height in pixels for the centered style - * sizeYNonOverlapping: <int>, //holder's height in pixels for the nonOverlapping style - * sizeYRows: <int>, //holder's height in pixels for the rows style - * verticalGridLineLengthCentered: <int> //vertical grid lines' length for the centered style - * verticalGridLineLengthNonOverlapping: <int> //vertical grid lines' length for the nonOverlapping style - * verticalGridLineLengthRows: <int> //vertical grid lines' length for the rows style - *- *
Each element corresponds to an annotation, it includes elements representing the annotation itself as well as elements representing - * the SVG properties, i.e. those related to the shape. Elements such as XXXNonOverlapping, XXXCentered, and XXXRows are necessary - * only it you want to enable changing styles without retrieving the data from the server again - *
- *- * cx: <int> //shape x position (for all shapes but rectangles) - * cy: <int> //shape y position (for all shapes but rectangles) - * evidenceCode: <String>, //annotation evidence code, e.g. "ECO:0000001" - * evidenceText: <String>, //annotation evidence text, e.g. "inferred by curator" - * featureEnd: <int> //annotation stop - * featureId: <String> //annotation id, e.g. "UNIPROTKB_P05067_SIGNAL_1_17" - * featureLabel: <String> //annotation label, e.g. "Signal" - * featureStart: <int> //annotation start - * featureTypeLabel: <String> //annotation type label, e.g. "signal_peptide" - * fill: <hexa color> //e.g. "#AA8CF0" - * fillOpacity: <float> //transparency, e.g. 0.5 - * height: <int> //shape's height in pixels (for rectangles) - * path: <String> //shape path (empty if it is not a path) - * r: <radius> //shape's radius in pixels (all but rectangles) - * stroke: <hexa color> //e.g. #AA8CF0" - * strokeWidth: <int> //stroke width - * text: <String> //for shapes corresponding to text - * type: <String> //shape type (one of: rect, triangle, circle, diamond, wave, hexagon) - * typeCategory: <String>, //type category, e.g. domain - * typeCode: <String> //annotation controlled vocabulary id, e.g. "SO:0000418" - * typeLabel: <String> //annotation label to be displayed in the tool tip - * width: <int> //shape's width in pixels - * x: <int> //shape x position in pixels - * y: <int> //shape y position in pixels - * centeredStyle: <Object>, //{"heightOrRadius":<int>,"y":<int>} height and y position for the centered style - * nonOverlappingStyle: <Object>, //{"heightOrRadius":<int>,"y":<int>} height and y position for the nonOverlapping style - * rowsStyle: <Object>, //{"heightOrRadius":<int>,"y":<int>} height and y position for the rows style - *- *
Information to be displayed in the keyElements such as XXXNonOverlapping, XXXCentered, and XXXRows are necessary only it you want to enable changing - * styles without retrieving the data from the server again. - *
- *- * key: <Array{label object, shape object}> //annotation types with the number of features showed in the segment - * segment: <Object> //requested segment without the limits, just the identifier or accession - *- *
Detail for elements in the key array
- *- * label: <Object>, // - * text: <String> //annotation type name - * total: <int> //total annotations displayed for that type - * xPos: <int> //x position in pixels - * yPos: <int> //y position in pixels - * yPosCentered: <int> //y position in pixels for the centered style - * yPosNonOverlapping: <int> //y position in pixels for the nonOverlapping style - * yPosRows: <int> //y position in pixels for the rows style - * shape: <Object> //corresponding shape - * cx: <int> //shape x position (for all shapes but rectangles) - * cy: <int> //shape y position (for all shapes but rectangles) - * fill: <hexa color> //e.g. "#AA8CF0" - * fillOpacity: <float> //transparency, e.g. 0.5 - * height: <int> //shape's height in pixels (for rectangles) - * path: <String> //shape path (empty if it is not a path) - * r: <radius> //shape's radius height in pixels (all but rectangles) - * stroke: <hexa color> //e.g. #AA8CF0" - * strokeWidth: <int> //stroke width - * text: <String> //for shapes corresponding to text - * type: <String> //shape type (one of: rect, triangle, circle, diamond, wave, hexagon) - * typeLabel: <String> //annotation type name - * width: <int> //shape's width in pixels - * x: <int> //shape x position in pixels (it is probably a good idea to keep both cx and x, even for non-rectangles) - * y: <int> //shape y position in pixels (it is probably a good idea to keep both cy and y, even for non-rectangles) - * centeredStyle: <Object>, //{"heightOrRadius":<int>,"y":<int>} height and y position for the centered style - * nonOverlappingStyle: <Object>, //{"heightOrRadius":<int>,"y":<int>} height and y position for the nonOverlapping style - * rowsStyle: <Object>, //{"heightOrRadius":<int>,"y":<int>} height and y position for the rows style - *- *
Detail for the segment element
- *- * text: <String>, //Accession or identifier, e.g. A4_HUMAN - * xPos: <int>, //x position in pixels - * yPos: <int>, //y position in pixels - * yPosCentered:<int>, //y position in pixels for the centered style - * yPosNonOverlapping:<int>, //y position in pixels for the nonOverlapping style - * yPosRows:<int>, //y position in pixels for the rows style - *- *
' + - '' + - ' | ' + - '' +
- ' ' +
- '' +
- ' ' +
- ' | ' +
- '
' + - '' + - ' | ' + - '
' +
- ' ' +
- '' +
- ' ' +
- ' | ' +
- '
'+ feature.LINK.text; - this._imageContainer.append(caption); - } else if ( Biojs.GeneExpressionSummary.TYPE_PROVENANCE == feature.TYPE.id && self.opt.legend == true) { - var footer = ''; - for ( n in feature.NOTE ) { - footer += feature.NOTE[n].text + ' '; - } - footer += ''+ feature.LINK.href + ''; - this._footerContainer.append(footer); - - } else { - var summary = '
- * [{ - * "col": 0, - * "row": 0, - * "label": "M", - * "score": 27, - * "row_label": "A" - * }, { - * "col": 0, - * "row": 1, - * "label": "M", - * "score": 5, - * "row_label": "C" - * }, { - * "col": 1, - * "row": 0, - * "label": "M", - * "score": 43, - * "row_label": "D" - * }, { - * "col": 1, - * "row": 1, - * "label": "M", - * "score": 58, - * "row_label": "E" - * }] - *- * - * @option {Onject} [user_defined_config={colorLow: 'blue', colorMed: 'white', colorHigh: 'red'}] - * Configuration options for the component - * - * @option {Onject} [show_zoom_panel=true] - * Display the zoom panel. default: true - * - * @option {Onject} [showScale=true] - * Display the scale object. default: true - * - * @example - * var painter = new Biojs.HeatmapViewer({ - * jsonData: - * [{ - * "col": 0, - * "row": 0, - * "label": "M", - * "score": 27, - * "row_label": "A" - * }, { - * "col": 0, - * "row": 1, - * "label": "M", - * "score": 5, - * "row_label": "C" - * }, { - * "col": 1, - * "row": 0, - * "label": "M", - * "score": 43, - * "row_label": "D" - * }, { - * "col": 1, - * "row": 1, - * "label": "M", - * "score": 58, - * "row_label": "E" - * }], - * user_defined_config: { - * colorLow: 'blue', - * colorMed: 'white', - * colorHigh: 'red' - * }, - * target: 'YourOwnDivId' - * }); - * - */ - -Biojs.HeatmapViewer = Biojs.extend( - /** @lends Biojs.HeatmapViewer */ - { - - /** - * public variables - */ - target: undefined, - - /** - * private variables - */ - _MAIN_HEAT_MAP_DIV: 'main_heatmap_div', - _ZOOM_HEAT_MAP_DIV: 'zoom_heatmap_div', - _SLIDER_DIV: 'slider_heatmap_div', - _SCALE_DIV: 'scale_div', - - _origData: undefined, - _zoomedData: undefined, - - viewer_config: { - dimensions: {}, - displayDiv: '', - colorLow: 'green', - colorMed: 'white', - colorHigh: 'red', - scoreLow: -100, - scoreMed: 0, - scoreHigh: 100, - offset: 0, - x_axis: [], - y_axis: [], - canvas_margin: { - top: 30, - right: 30, - bottom: 30, - left: 30 - }, - labels: { - max_font_size: 20, - min_font_size: 11 - }, - main_heatmap: { - min_cell_width: 2, - max_cell_width: 100, - orig_cell_width: 0 - }, - zoom_area: { - cell_width: 20 - }, - slider: { - start_value: 0, - increments: 50 - } - - }, - - constructor: function(options) { - this._origData = this.opt.jsonData; - this.target = this.opt.target; - this._init(); - this._draw(); - - }, - - opt: { - /** - * Default values for the options: - * target: "YourOwnDivId", - * jsonData: {}, - * showScale: true, - * showExportToImageButton: false, - * @name Biojs.HeatmapViewer-opt - */ - target: 'YourOwnDivId', - jsonData: {}, - showScale: true, - showExportToImageButton: false, - show_zoom_panel: true - }, - - eventTypes: [ - - /* Event Names - The parent class Biojs build the event handlers automatically - with the names defined here. Use this.raiseEvent(
- * { - * url: <url>, - * proxyUrl: <proxy>, - * paramsMap: { "iDisplayStart": <newName1>, "iDisplayLength": <newName2>, ... }, - * filter: <flag>, - * version: <MITAB_VERSION>, - * totalRecords:<number> - * } - *- * where: - *
- * { - * psiquicUrl: 'http://www.ebi.ac.uk/Tools/webservices/psicquic/intact/webservices/current/search/query', - * proxyUrl: '../biojs/dependencies/proxy/proxy.php', - * version: "MITAB_VERSION_2_5_EXT", - * query: "species:human", - * filter: false - * } - *- * - *
- * ...soon - *- * - * @example - * var myTable = new Biojs.InteractionsTable({ - * target: "YourOwnDivId", - * dataSet: { - * psicquicUrl: 'http://www.ebi.ac.uk/Tools/webservices/psicquic/intact/webservices/current/search/query', - * proxyUrl: '../biojs/dependencies/proxy/proxy.php', - * query: "brca2", - * version: "MITAB_VERSION_2_5", - * filter: false - * }, - * rowSelection: true - * }); - * - */ -Biojs.InteractionsTable = Biojs.Table.extend( -/** @lends Biojs.InteractionsTable# */ -{ - constructor: function (options) { - //Biojs.console.enable(); - - options.dataSet.version = (options.dataSet.version != undefined) ? options.dataSet.version : Biojs.InteractionsTable.MITAB_VERSION_2_5 - - this._useVersion ( options.dataSet.version ); - - // Calling super's constructor - this.base(options); - - }, - - /** - * Default values for the options - * @name Biojs.InteractionsTable-opt - */ - opt: { - target: "YourOwnDivId", - rowSelection: false, - version: "MITAB_VERSION_2_5", - psiquicUrl: 'http://www.ebi.ac.uk/Tools/webservices/psicquic/intact/webservices/current/search/query', - proxyUrl: '../biojs/dependencies/proxy/proxy.php' - }, - - /** - * Array containing the supported event names - * @name Biojs.InteractionsTable-eventTypes - */ - eventTypes: [], - - /** - * Do a query to PSICQUIC server by using the provided query in MIQL. - * Uses the structure of the URL to fetch data from PSICQUIC. - * @param {string} columns Column indexes to be hided. - * - * @example - * myTable.setQuery("species:human"); - * - */ - setQuery: function ( query ) { - - // remove this properties to set a new query - delete this.opt.dataSet.url; - delete this.opt.totalRecords; - - // set the new query - this.opt.dataSet.query = query; - - // request data - this.setDataSource(this.opt.dataSet); - }, - - /** - * Get the actual query. - * Uses the structure of the URL to fetch data from PSICQUIC. - * - * @return {string} Current query. - * - * @example - * alert( "The query is " + myTable.getQuery() ); - */ - getQuery: function () { - return unescape(this.opt.dataSet.query); - }, - - /* - * Function: Biojs.InteractionTable._requestQueryCount - * Purpose: Request total rows counting with the provided query for pagination purposes. - * Since the PSIQUIC service does not provides the total row count with retrieved data, - * it's necessary to do another request in order to get it. - * Inputs: dataSet -> {Object} Settings of the data set. - * action -> {function} Callback function having the dataSet as argument. - */ - _requestQueryCount: function ( dataSet, action ) { - var self = this; - - dataSet.url = dataSet.psicquicUrl + '/' + dataSet.query; - dataSet.paramsMap = { "iDisplayStart": "firstResult", "iDisplayLength": "maxResults" }; - - jQuery.ajax({ - url: dataSet.proxyUrl, - dataType: "text", - data: [{ name: "url", value: dataSet.url + '?format=count' }], - success: function ( data ) { - dataSet.totalRecords = parseInt(data) | 0; - action.call( self, dataSet ); - } - }); - }, - - /** - * Rebuild the table - * - * @example - * myTable.setDataSource({ - * psicquicUrl: 'http://www.ebi.ac.uk/Tools/webservices/psicquic/intact/webservices/current/search/query', - * proxyUrl: '../biojs/dependencies/proxy/proxy.php', - * query: "pubid:(10837477 OR 12029088)", - * version: "MITAB_VERSION_2_5", - * filter: false - * }); - * - */ - setDataSource: function ( dataSet ) { - - if ( dataSet instanceof Array ) { - // Local data - // invoke parent's setDataSource - this.base( dataSet ); - - } else { - // Remote data - if ( dataSet.hasOwnProperty("totalRecords") && dataSet.hasOwnProperty("url") ) { - // Already have the number of records for pagination - // then, invoke parent's setDataSource - this.base( dataSet ); - - } else { - // Set the new query - this.opt.dataSet = {}; - this.opt.dataSet.psicquicUrl = dataSet.psicquicUrl; - this.opt.dataSet.proxyUrl = dataSet.proxyUrl; - this.opt.dataSet.version = dataSet.version; - this.opt.dataSet.filter = dataSet.filter; - this.opt.dataSet.query = escape(dataSet.query); - this.opt.dataSet.url = dataSet.psicquicUrl + '/' + dataSet.query; - this.opt.dataSet.paramsMap = { "iDisplayStart": "firstResult", "iDisplayLength": "maxResults" }; - // Request query counting rows and apply setDataSource then - this._requestQueryCount( this.opt.dataSet, this.base ); - } - } - }, - /* - * Function: Biojs.InteractionTable._decodeToJSON - * Purpose: Overrides the parent method to decode the received MITAB data into the expected JSON format. - * Returns: {Object} formatted in the expected JSON. - * Inputs: data -> {*} MITAB data received from the PSIQUIC server or another one. - */ - _decodeToJSON: function ( mitabData ) { - Biojs.console.log("DATA DECODING FROM MITAB to JSON"); - - var jsonData = {}; - var decoder = new Biojs.InteractionsTable.MITabTxtDecoder(mitabData); - - jsonData.aaData = decoder.decodeData(); - jsonData.iTotalRecords = this.getTotalRecords(); - jsonData.iTotalDisplayRecords = this.getTotalRecords(); - - delete decoder; - return jsonData; - }, - - /* - * Function: Biojs.InteractionTable._useVersion - * Purpose: Set the columns depending on the MITAB format version. - * Returns: - * Inputs: {string|int} Either the name or the number of columns of the MITAB version. - * Use values defined in the static members of Biojs.InteractionsTable declared at the end of this class. - */ - _useVersion: function (version) { - - var length = ( (typeof version) == "string" ) ? Biojs.InteractionsTable[version] : version; - - var columnsToHide = []; - - switch (length) { - - case Biojs.InteractionsTable.MITAB_VERSION_2_7: - for ( var i = 36; i < 42; i++ ) { - this.opt.columns[i] = Biojs.InteractionsTable.MITAB_COLUMNS[i]; - } - columnsToHide = [36,37,38,39,40,41]; - - case Biojs.InteractionsTable.MITAB_VERSION_2_6: - for ( var i = 31; i < 36; i++ ) { - this.opt.columns[i] = Biojs.InteractionsTable.MITAB_COLUMNS[i]; - } - columnsToHide = columnsToHide.concat([31,32,33,34,35]); - - case Biojs.InteractionsTable.MITAB_VERSION_2_5_EXT: - for ( var i = 15; i < 31; i++ ) { - this.opt.columns[i] = Biojs.InteractionsTable.MITAB_COLUMNS[i]; - } - columnsToHide = columnsToHide.concat([15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30]); - - // Complex expansion - this.opt.columns[15].render = this._columnRender.showDescXRef; - - // Biological Role A - this.opt.columns[16].render = this._columnRender.showDescXRef; - - // Biological Role B - this.opt.columns[17].render = this._columnRender.showDescXRef; - - // Experimental Role A - this.opt.columns[18].render = this._columnRender.showRowDescXRef; - - // Experimental Role B - this.opt.columns[19].render = this._columnRender.showRowDescXRef; - - // Interactor Type A - this.opt.columns[20].render = this._columnRender.showDescXRef; - - // Interactor Type B - this.opt.columns[21].render = this._columnRender.showDescXRef; - - // XRef Interactor Type A - this.opt.columns[22].render = this._columnRender.showDescXRef; - - // Xref Interactor Type B - this.opt.columns[23].render = this._columnRender.showDescXRef; - - // XRef Interaction - this.opt.columns[24].render = this._columnRender.showDescXRef; - - // Annotation Interactor A - this.opt.columns[25].render = this._columnRender.showRowDescXRef; - - // Annotations Interactor B - this.opt.columns[26].render = this._columnRender.showRowDescXRef; - - // Annotations Interaction - this.opt.columns[27].render = this._columnRender.showRowDescXRef; - - // NCBI Taxonomy - this.opt.columns[28].render = this._columnRender.showDescXRef; - - // Parameters - this.opt.columns[29].render = this._columnRender.showRowDescXRef; - - // Creation Date - this.opt.columns[30].render = this._columnRender.showRowDescXRef; - - case Biojs.InteractionsTable.MITAB_VERSION_2_5: - - for ( var i = 0; i < 15; i++ ) { - this.opt.columns[i] = Biojs.InteractionsTable.MITAB_COLUMNS[i]; - } - columnsToHide = columnsToHide.concat([2,3,7,8,11,12,13]); - - this.opt.columns[0].render = this._columnRender.showProteinXRef; - this.opt.columns[1].render = this._columnRender.showProteinXRef; - this.opt.columns[2].render = this._columnRender.showValueXRef; - this.opt.columns[3].render = this._columnRender.showValueXRef; - this.opt.columns[4].render = this._columnRender.showValueXRef; - this.opt.columns[5].render = this._columnRender.showValueXRef; - - this.opt.columns[6].render = this._columnRender.showDescXRef; - - // NCBI Taxon - this.opt.columns[9].render = this._columnRender.showDescXRef; - this.opt.columns[10].render = this._columnRender.showDescXRef; - - // Interaction type - this.opt.columns[11].render = this._columnRender.showDescXRef; - - // source - this.opt.columns[12].render = this._columnRender.showDescXRef; - - // Interaction AC - this.opt.columns[13].render = this._columnRender.showInteractionXRef; - - // Confidence Score - this.opt.columns[14].render = this._columnRender.showRawValueXRef; - - break; - - default : - Biojs.console.log("Wrong version <"+length+"> "); - } - - - this.opt.hideColumns = columnsToHide; - - }, - - /* - * Object: Biojs.InteractionTable._columnRender.showProteinXRef - * Purpose: Store the render functions to format values on the table cells. - */ - _columnRender: { - - /** - * @ignore - * - * Function: Biojs.InteractionTable._columnRender - * Purpose: Format the string
{ - "location": [ "Some part of the page" ], - "action": ["Action 1", "Action 2", "Action 3" ], - "target": [ { - "name": "First Target", - "conditions": [ { - "name": "Select from", - "type": "selects", - "amount": 1, - "values": ["An Option","another option" ] - }, { - "name": "number", - "type": "numeric_comparison" - }, { - "name": "some text", - "type": "text_comparison" - } ] - } ] -}- * - * @example - * var instance = new Biojs.Ruler({ - * target: "YourOwnDivId", - * allowOrdering:true, - * rules:{ - * "location": [ - * "all proteins", - * "protein1", - * "protein2", - * "protein3", - * "protein4" - * ], - * "target": [ - * { - * "name": "Proteins", - * "action": [ - * {name:"Show",type:"single"}, - * {name:"Hide",type:"single"}, - * {name:"Highlight",type:"single"}, - * {name:"Color",type:"color"}, - * {name:"Color Range",type:"colorRange"}, - * {name:"Show Label",type:"select",options:["ID","Functional Class","Organism","Gene Name"]} - * ], - * "conditions": [ - * { - * "name": "interactions with", - * "type": "selects", - * "amount": 1, - * "values": [ - * "protein1", - * "protein2", - * "protein3", - * "protein4" - * ] - * }, - * { - * "name": "number of interactions", - * "type": "numeric_comparison" - * }, - * { - * "name": "accession number", - * "type": "text_comparison" - * } - * ] - * }, - * { - * "name": "Interactions", - * "action": [ - * {name:"Show",type:"single"}, - * {name:"Hide",type:"single"}, - * {name:"Highlight",type:"single"}, - * {name:"Color",type:"color"}, - * ], - * "conditions": [ - * { - * "name": "protein", - * "type": "selects", - * "amount": 1, - * "values": [ - * "protein1", - * "protein2", - * "protein3", - * "protein4" - * ] - * }, - * { - * "name": "proteins", - * "type": "selects", - * "amount": 2, - * "values": [ - * "protein1", - * "protein2", - * "protein3", - * "protein4" - * ] - * }, - * { - * "name": "score", - * "type": "numeric_comparison" - * } - * ] - * } - * ] - * } - * }); - * - */ -Biojs.Ruler = Biojs.extend ( -/** @lends Biojs.Ruler# */ -{ - _number: 1, - constructor: function (options) { - var self=this; - var target =self.opt.target; - var innerCode = '
'; - var gotRule =!(typeof rule=="undefined"); - var selectedTarget=0; - - if (typeof self.opt.rules.location !='undefined' && self.opt.rules.location.length>0){ - code_rule+= "In"; - code_rule+= self._getSelect('location_'+number,self.opt.rules.location,"", - gotRule?rule.location:rule - ); - } - - if (gotRule) - for (var i in self.opt.rules.target) - if (self.opt.rules.target[i].name==rule.target) - selectedTarget=i; - - code_rule+= ' '+ self._getActionSpan(number,selectedTarget,rule)+''; - code_rule+= ' the '; - code_rule+= self._getSelect('target_'+number,self.opt.rules.target,"name", - gotRule?rule.target:rule - ); - code_rule+= ' with '; - - var visible=gotRule?"none":"inline"; - for (var i in self.opt.rules.target){ - visible=gotRule? - ((self.opt.rules.target[i].name==rule.target)?"inline":"none"): - visible; - code_rule+= self._getConditionsSpan(number,self.opt.rules.target[i],visible,rule); - visible="none"; - } - code_rule+= ' | '; - code_rule+= 'APPLY | '; - code_rule+= '
'+rule.action.name+' '+parameter_span+' the '+rule.target+' with '+rule.condition+' '+rule.parameters.join(" ")+' | remove edit | 0 |
- * [ - * // Highlight aminoacids from 'start' to 'end' of the current strand using the specified 'color' (optional) and 'background' (optional). - * { start: <startVal1>, end: <endVal1> [, id:<idVal1>] [, color: <HTMLColor>] [, background: <HTMLColor>]}, - * // - * // Any others highlights - * ..., - * // - * { start: <startValN>, end: <endValN> [, id:<idValN>] [, color: <HTMLColor>] [, background: <HTMLColor>]} - * ]- * - *
- * highlights : [ - * { start:30, end:42, color:"white", background:"green", id:"spin1" }, - * { start:139, end:140 }, - * { start:631, end:633, color:"white", background:"blue" } - * ] - *- * - * @option {Object} [columns={size:40,spacedEach:10}] - * Options for displaying the columns. Syntax: { size: <numCols>, spacedEach: <numCols>} - * - * @option {Object} [selection] - * Positions for the current selected region. Syntax: { start: <startValue>, end: <endValue>} - * - * @option {Object[]} [annotations] - * Set of overlapping annotations. Must be an array of objects following the syntax: - *
- * [ - * // An annotation: - * { name: <name>, - * html: <message>, - * color: <color_code>, - * regions: [{ start: <startVal1>, end: <endVal1> color: <HTMLColor>}, ...,{ start: <startValN>, end: <endValN>, color: <HTMLColor>}] - * }, - * - * // ... - * // more annotations here - * // ... - * ] - *- * where: - *
- * formatOptions : { - * title:false, - * footer:false - * } - *- * - * @example - * var theSequence = "METLCQRLNVCQDKILTHYENDSTDLRDHIDYWKHMRLECAIYYKAREMGFKHINHQVVPTLAVSKNKALQAIELQLTLETIYNSQYSNEKWTLQDVSLEVYLTAPTGCIKKHGYTVEVQFDGDICNTMHYTNWTHIYICEEAojs SVTVVEGQVDYYGLYYVHEGIRTYFVQFKDDAEKYSKNKVWEVHAGGQVILCPTSVFSSNEVSSPEIIRQHLANHPAATHTKAVALGTEETQTTIQRPRSEPDTGNPCHTTKLLHRDSVDSAPILTAFNSSHKGRINCNSNTTPIVHLKGDANTLKCLRYRFKKHCTLYTAVSSTWHWTGHNVKHKSAIVTLTYDSEWQRDQFLSQVKIPKTITVSTGFMSI"; - * var mySequence = new Biojs.Sequence({ - * sequence : theSequence, - * target : "YourOwnDivId", - * format : 'CODATA', - * id : 'P918283', - * annotations: [ - * { name:"CATH", - * color:"#F0F020", - * html: "Using color code #F0F020 ", - * regions: [{start: 122, end: 135}] - * }, - * { name:"TEST", - * html:"<br> Example of <b>HTML</b>", - * color:"green", - * regions: [ - * {start: 285, end: 292}, - * {start: 293, end: 314, color: "#2E4988"}] - * } - * ], - * highlights : [ - * { start:30, end:42, color:"white", background:"green", id:"spin1" }, - * { start:139, end:140 }, - * { start:631, end:633, color:"white", background:"blue" } - * ] - * }); - * - */ - -Biojs.Sequence = Biojs.extend( -/** @lends Biojs.Sequence# */ -{ - constructor: function (options) { - var self = this; - - this._container = jQuery( "#" + this.opt.target ); - - // Lazy initialization - this._container.ready(function() { - self._initialize(); - }); - }, - - /** - * Default values for the options - * @name Biojs.Sequence-opt - */ - opt : { - - sequence : "", - id : "", - target : "", - format : "FASTA", - selection: { start: 0, end: 0 }, - columns: { size: 35, spacedEach: 10 }, - highlights : [], - annotations: [], - sequenceUrl: 'http://www.ebi.ac.uk/das-srv/uniprot/das/uniprot/sequence', - - // Styles - selectionColor : 'Yellow', - selectionFontColor : 'black', - highlightFontColor : 'red', - highlightBackgroundColor : 'white', - fontFamily: '"Andale mono", courier, monospace', - fontSize: '12px', - fontColor : 'inherit', - backgroundColor : 'inherit', - width: undefined, - height: undefined, - formatSelectorVisible: true - }, - - /** - * Array containing the supported event names - * @name Biojs.Sequence-eventTypes - */ - eventTypes : [ - /** - * @name Biojs.Sequence#onSelectionChanged - * @event - * @param {function} actionPerformed An function which receives an {@link Biojs.Event} object as argument. - * @eventData {Object} source The component which did triggered the event. - * @eventData {string} type The name of the event. - * @eventData {int} start A number indicating the start of the selection. - * @eventData {int} end A number indicating the ending of selection. - * @example - * mySequence.onSelectionChanged( - * function( objEvent ) { - * alert("Selected: " + objEvent.start + ", " + objEvent.end ); - * } - * ); - * - * */ - "onSelectionChanged", - - /** - * @name Biojs.Sequence#onSelectionChange - * @event - * @param {function} actionPerformed An function which receives an {@link Biojs.Event} object as argument. - * @eventData {Object} source The component which did triggered the event. - * @eventData {string} type The name of the event. - * @eventData {int} start A number indicating the start of the selection. - * @eventData {int} end A number indicating the ending of selection. - * @example - * mySequence.onSelectionChange( - * function( objEvent ) { - * alert("Selection in progress: " + objEvent.start + ", " + objEvent.end ); - * } - * ); - * - * - * */ - "onSelectionChange", - - /** - * @name Biojs.Sequence#onAnnotationClicked - * @event - * @param {function} actionPerformed An function which receives an {@link Biojs.Event} object as argument. - * @eventData {Object} source The component which did triggered the event. - * @eventData {string} type The name of the event. - * @eventData {string} name The name of the selected annotation. - * @eventData {int} pos A number indicating the position of the selected amino acid. - * @example - * mySequence.onAnnotationClicked( - * function( objEvent ) { - * alert("Clicked " + objEvent.name + " on position " + objEvent.pos ); - * } - * ); - * - * */ - "onAnnotationClicked" - ], - - // internal members - _headerDiv : null, - _contentDiv : null, - - // Methods - - _initialize: function () { - - if ( this.opt.width !== undefined ) { - this._container.width( this.opt.width ); - } - - if ( this.opt.height !== undefined ) { - this._container.height( this.opt.height ); - } - - // Disable text selection - - this._container.css({ - '-moz-user-select':'none', - '-webkit-user-select':'none', - 'user-select':'none' - }); - - // DIV for the format selector - this._buildFormatSelector(); - - // DIV for the sequence - this._contentDiv = jQuery('').appendTo(this._container); - this._contentDiv.css({ - 'font-family': this.opt.fontFamily, - 'font-size': this.opt.fontSize, - 'text-align': 'left' - }); - - // Initialize highlighting - this._highlights = this.opt.highlights; - - // Initialize annotations - this._annotations = this.opt.annotations; - - //Initialize tooltip - jQuery('') - .css({ - 'position': "absolute", - 'z-index': "999999", - 'color': "#fff", - 'font-size': "12px", - 'width': "auto", - 'display': 'none' - }) - .addClass("tooltip") - .appendTo("body") - .hide(); - - if ( ! Biojs.Utils.isEmpty(this.opt.sequence) ) { - this._redraw(); - - } else if ( ! Biojs.Utils.isEmpty(this.opt.id) ) { - this._requestSequence( this.opt.id ); - - } else { - this.clearSequence("No sequence available", "../biojs/css/images/warning_icon.png"); - } - - }, - - - /** - * Shows the columns indicated by the indexes array. - * @param {string} seq The sequence strand. - * @param {string} [identifier] Sequence identifier. - * - * @example - * mySequence.setSequence("P99999"); - * - */ - setSequence: function ( seq, identifier ) { - - if ( seq.match(/^([A-N,R-Z][0-9][A-Z][A-Z, 0-9][A-Z, 0-9][0-9])|([O,P,Q][0-9][A-Z, 0-9][A-Z, 0-9][A-Z, 0-9][0-9])(\.\d+)?$/i) ) { - this._requestSequence( arguments[0] ); - - } else { - this.opt.sequence = seq; - this.opt.id = identifier; - this._highlights = []; - this._highlightsCount = 0; - this.opt.selection = { start: 0, end: 0 }; - this._annotations = []; - - this._contentDiv.children().remove(); - this._redraw(); - } - }, - - _requestSequence: function ( accession ) { - var self = this; - - Biojs.console.log("Requesting sequence for: " + accession ); - - jQuery.ajax({ - url: self.opt.sequenceUrl, - dataType: "xml", - data: { segment: accession }, - success: function ( xml ) { - try { - - var sequenceNode = jQuery(xml).find('SEQUENCE:first'); - self.setSequence( sequenceNode.text(), sequenceNode.attr("id"), sequenceNode.attr("label") ); - - } catch (e) { - Biojs.console.log("Error decoding response data: " + e.message ); - self.clearSequence("No sequence available", "../biojs/css/images/warning_icon.png"); - } - - }, - error: function (jqXHR, textStatus, errorThrown) { - Biojs.console.log("Error decoding response data: " + textStatus ); - self.clearSequence("Error requesting the sequence to the server " + this.url , "../biojs/css/images/warning_icon.png"); - } - }); - }, - - /** - * Shows the columns indicated by the indexes array. - * @param {string} [showMessage] Message to be showed. - * @param {string} [icon] Icon to be showed a side of the message - * - * @example - * mySequence.clearSequence("No sequence available", "../biojs/css/images/warning_icon.png"); - * - */ - clearSequence: function ( showMessage, icon ) { - - var message = undefined; - - this.opt.sequence = ""; - this.opt.id = ""; - this._highlights = []; - this._highlightsCount = 0; - this.opt.selection = { start: 0, end: 0 }; - this._annotations = []; - this._contentDiv.children().remove(); - - this._headerDiv.hide(); - - if ( undefined !== showMessage ) { - message = jQuery('
" + str + ""; - } - - return str; - }, - /* - * Function: Biojs.Sequence._formatIndex - * Purpose: Build the HTML corresponding to counting numbers (top, left, right) in the strand. - * Returns: - - * Inputs: number -> {int} The number - * size -> {int} Number of bins to suit the number. - * fillingChar -> {char} Character to be used for filling out blank bins. - * alignLeft -> {bool} Tell if aligned to the left. - */ - _formatIndex : function( number, size, fillingChar, alignLeft) { - var str = number.toString(); - var filling = ''; - var padding = size - str.length; - if ( padding > 0 ) { - while ( padding-- > 0 ) { - filling += (""+fillingChar+""); - } - if (alignLeft){ - str = number+filling; - } else { - str = filling+number; - } - } - return str; - }, - /* - * Function: Biojs.Sequence._addSpanEvents - * Purpose: Add the event handlers to the strand. - * Returns: - - * Inputs: - - */ - _addSpanEvents : function() { - var self = this; - var isMouseDown = false; - var currentPos; - - self._contentDiv.find('.sequence').each( function () { - - // Register the starting position - jQuery(this).mousedown(function() { - var id = jQuery(this).attr('id'); - currentPos = parseInt(id.substr(id.indexOf("_") + 1)); - clickPos = currentPos; - self._setSelection(clickPos,currentPos); - isMouseDown = true; - - // Selection is happening, raise an event - self.raiseEvent( - Biojs.Sequence.EVT_ON_SELECTION_CHANGE, - { - "start" : self.opt.selection.start, - "end" : self.opt.selection.end - } - ); - - }).mouseover(function() { - // Update selection - // Show tooltip containing the position - var id = jQuery(this).attr('id'); - currentPos = parseInt(id.substr(id.indexOf("_") + 1)); - - if(isMouseDown) { - if( currentPos > clickPos ) { - self._setSelection(clickPos, currentPos); - } else { - self._setSelection(currentPos, clickPos); - } - - // Selection is happening, raise an event - self.raiseEvent( Biojs.Sequence.EVT_ON_SELECTION_CHANGE, { - "start" : self.opt.selection.start, - "end" : self.opt.selection.end - }); - } - - }).mouseup(function() { - isMouseDown = false; - // Selection is done, raise an event - self.raiseEvent( Biojs.Sequence.EVT_ON_SELECTION_CHANGED, { - "start" : self.opt.selection.start, - "end" : self.opt.selection.end - }); - }); - - // Add a tooltip for this sequence base. - self._addToolTip.call( self, this, function( ) { - if (isMouseDown) { - return "[" + self.opt.selection.start +", " + self.opt.selection.end + "]"; - } else { - return currentPos; - } - }); - - }) - .css('cursor', 'pointer'); - }, - /* - * Function: Biojs.Sequence._addTooltip - * Purpose: Add a tooltip around the target DOM element provided as argument - * Returns: - - * Inputs: target -> {Element} DOM element wich is the targeted focus for the tooltip. - * cbGetMessageFunction -> {function} A callback function wich returns the message to be displayed in the tip. - */ - _addToolTip : function ( target, cbGetMessageFunction ) { - - var tipId = '#sequenceTip' + this.getId(); - - jQuery(target).mouseover(function(e) { - - var offset = jQuery(e.target).offset(); - - if ( ! jQuery( tipId ).is(':visible') ) { - jQuery( tipId ) - .css({ - 'background-color': "#000", - 'padding': "3px 10px 3px 10px", - 'top': offset.top + jQuery(e.target).height() + "px", - 'left': offset.left + jQuery(e.target).width() + "px" - }) - .animate( {opacity: '0.85'}, 10) - .html( cbGetMessageFunction.call( target ) ) - .show(); - } - - }).mouseout(function() { - //Remove the appended tooltip template - jQuery( tipId ).hide(); - }); - }, - - /** - * Annotate a set of intervals provided in the argument. - * - * @deprecated Use addAnnotation() instead. - * - * @param {Object} annotation The intervals belonging to the same annotation. - * Syntax: { name: <value>, color: <HTMLColorCode>, html: <HTMLString>, regions: [{ start: <startVal1>, end: <endVal1>}, ..., { start: <startValN>, end: <endValN>}] } - */ - setAnnotation: function ( annotation ) { - this.addAnnotation(annotation); - }, - - /** - * Annotate a set of intervals provided in the argument. - * - * @example - * // Annotations using regions with different colors. - * mySequence.addAnnotation({ - * name:"UNIPROT", - * html:"<br> Example of <b>HTML</b>", - * color:"green", - * regions: [ - * {start: 540, end: 560}, - * {start: 561, end:580, color: "#FFA010"}, - * {start: 581, end:590, color: "red"}, - * {start: 690, end:710}] - * }); - * - * - * @param {Object} annotation The intervals belonging to the same annotation. - * Syntax: { name: <value>, color: <HTMLColorCode>, html: <HTMLString>, regions: [{ start: <startVal1>, end: <endVal1>}, ..., { start: <startValN>, end: <endValN>}] } - */ - addAnnotation: function ( annotation ) { - this._annotations.push(annotation); - this._redraw(); - }, - - /** - * Removes an annotation by means of its name. - * - * @example - * // Remove the UNIPROT annotation. - * mySequence.removeAnnotation('UNIPROT'); - * - * @param {string} name The name of the annotation to be removed. - * - */ - removeAnnotation: function ( name ) { - for (var i=0; i < this._annotations.length ; i++ ){ - if(name != this._annotations[i].name){ - this._annotations.splice(i,1); - this._redraw(); - break; - } - } - }, - /** - * Removes all the current annotations. - * - * @example - * mySequence.removeAllAnnotations(); - * - */ - removeAllAnnotations: function () { - this._annotations = []; - this._redraw(); - } - -}, -{ - EVT_ON_SELECTION_CHANGE: "onSelectionChange", - EVT_ON_SELECTION_CHANGED: "onSelectionChanged", - EVT_ON_ANNOTATION_CLICKED: "onAnnotationClicked" - -}); - - diff --git a/src/lib/biojs-1.0/src/main/javascript/Biojs.SimpleFeatureViewer.js b/src/lib/biojs-1.0/src/main/javascript/Biojs.SimpleFeatureViewer.js deleted file mode 100755 index d7a03dbf88..0000000000 --- a/src/lib/biojs-1.0/src/main/javascript/Biojs.SimpleFeatureViewer.js +++ /dev/null @@ -1,649 +0,0 @@ -/** - * This component generates the JSON structure used by the FeatureViewer. It is a simplified version as it only - * includes a non-overlapping view. Regions are represented as rectangles while one-base/aa are represented as lines. - * Some few shapes are also supported for one-base/aa features, particularly{"diamond", "triangle", "hexagon", - * "wave", "circle"}. In proteins, we recommend "diamond" for active sites, "triangle" for PTMs, "hexagon" for glycosylation, - * "wave" for lipids, and "circle" for metals. Any other shape will be rendered as a rectangle. Bridges can be specified - * with the type "bridge". - * The legend is generated based on the first feature of each "typeLabel"; thus, if features with the same "typeLabel" - * have different colours, only the first one will be used in the legend. - * - * @class - * @extends Biojs.FeatureViewer - * - * @author Leyla Jael Garcia Castro - * @version 1.0.0 - * @category 2 - * - * - * @param {Object} options An object with the options for SimpleFeatureViewer component. - * - * @option {string} target - * Identifier of the DIV tag where the component should be displayed. - * - * @option {boolean} [showSlider=true] - * Should the slider for zooming be displayed? - * - * @option {boolean} [showPrintButton=true] - * Should the button for printing/exporting to image be displayed? - * - * @option {boolean} [showFeatureTooltipOnMouseOver=true] - * Should the tooltip for features be displayed? - * - * @option {boolean} [highlightFeatureOnMouseOver=true] - * Should the features be highlighted when mouse over? - * - * @option {boolean} [selectFeatureOnMouseClick=true] - * Should the features remain highlighted, i.e. being selected, after a mouse click, - * and deselected after a second click or whenever other feature is selected? - * - * @option {String} [selectionColor=#ff8c00] - * Color in hexa format so the features on mouse-over and click will change to it. - * Make sure you do not use that color for any feature. - * - * @option {string} sequenceId - * Sequence identifier - * - * @option {string} sequenceLength - * Sequence length - * - * @option {Array} features - * A JSON array containing the features to be displayed. type element for a feature is optional and can be either of - * {"rect", "bridge", "diamond", "triangle", "hexagon", "wave", "circle"} - * If you want bridges or one-single-position features to be rendered as rectangles, do not specify any type for the feature - * In proteins, we recommend "diamond" for active sites, "triangle" for PTMs, "hexagon" for glycosylation, - * "wave" for lipids, and "circle" for metals. Any other shape will be rendered as a rectangle - * Colours can be specified in hexa, string, or rgb; if no colour is specified, black will be used. - * features = [ - * { - * featureId:"UNIPROTKB_Q8LAX3_PROPEP_1_73", - * featureStart:1,featureEnd:73, - * typeLabel:"Propeptide", - * featureLabel:"Propeptide", - * typeCategory:"Molecule processing",typeCode:"SO:0001062", - * evidenceText:"UniProt",evidenceCode:"none", - * color: "red" - * }, - * { - * featureId:"UNIPROTKB_Q8LAX3_PEPTIDE_54_96", - * featureStart:54,featureEnd:96, - * typeLabel:"Peptide", - * featureLabel:"Elicitor peptide 3", - * typeCategory:"Molecule processing",typeCode:"SO:0001064", - * evidenceText:"UniProt",evidenceCode:"no ECO", - * color: "blue" - * }, - * { - * featureId:"UNIPROTKB_Q8LAX3_PEPTIDE_74_96", - * featureStart:74,featureEnd:96, - * typeLabel:"Active Site", - * featureLabel:"Elicitor peptide 3", - * typeCategory:"Molecule processing",typeCode:"SO:0001064", - * evidenceText:"UniProt",evidenceCode:"no ECO", - * type: "diamond" - * }, - * { - * featureId:"UNIPROTKB_Q8LAX3_DISULFID_75_96", - * featureStart:75,featureEnd:96, - * typeLabel:"Active Site", - * featureLabel:"Elicitor peptide 3", - * typeCategory:"Molecule processing",typeCode:"SO:0001064", - * evidenceText:"UniProt",evidenceCode:"no ECO", - * color: "#33FF66", - * type: "bridge" - * } - * ]; - * - * @option {int} [imageWidth=700] - * Image width - * - * @example - * var myFT = [ - * { - * featureId:"UNIPROTKB_Q8LAX3_PROPEP_1_73", - * featureStart:1,featureEnd:73, - * typeLabel:"Propeptide", - * featureLabel:"Propeptide", - * typeCategory:"Molecule processing",typeCode:"SO:0001062", - * evidenceText:"UniProt",evidenceCode:"none", - * color: "red" - * }, - * { - * featureId:"UNIPROTKB_Q8LAX3_PEPTIDE_54_96", - * featureStart:54,featureEnd:96, - * typeLabel:"Peptide", - * featureLabel:"Elicitor peptide 3", - * typeCategory:"Molecule processing",typeCode:"SO:0001064", - * evidenceText:"UniProt",evidenceCode:"no ECO", - * color: "blue" - * }, - * { - * featureId:"UNIPROTKB_Q8LAX3_PEPTIDE_74_96", - * featureStart:74,featureEnd:96, - * typeLabel:"Active Site", - * featureLabel:"Elicitor peptide 3", - * typeCategory:"Molecule processing",typeCode:"SO:0001064", - * evidenceText:"UniProt",evidenceCode:"no ECO", - * type: "diamond" - * }, - * { - * featureId:"UNIPROTKB_Q8LAX3_DISULFID_75_96", - * featureStart:75,featureEnd:96, - * typeLabel:"Active Site", - * featureLabel:"Elicitor peptide 3", - * typeCategory:"Molecule processing",typeCode:"SO:0001064", - * evidenceText:"UniProt",evidenceCode:"no ECO", - * color: "#33FF66", - * type: "bridge" - * } - * ]; - * var myPainter = new Biojs.SimpleFeatureViewer({ - * target: "YourOwnDivId", - * sequenceId: "a4_human", - * sequenceLength: 770, - * features: myFT - * }); - * - */ -Biojs.SimpleFeatureViewer = Biojs.FeatureViewer.extend( - /** @lends Biojs.SimpleFeatureViewer */ - { - /** - * Default values for the options - * @name Biojs.SimpleFeatureViewer-constructor - */ - constructor:function (options) { - this.base(options); - //Biojs.console.enable(); - this._generatesJSON(); - this.paintFeatures(this.opt.json); - }, - - /** - * Default values for the options: - * target: "", - * showSlider: true, - * showPrintButton: true, - * showFeatureTooltipOnMouseOver: true, - * highlightFeatureOnMouseOver: true, - * selectFeatureOnMouseClick: true, - * selectionColor: "#ff8c00" - * imageWidth: 700, - * sequenceId: "none" - * sequenceLength: 0 - * features: {} - * - * @name Biojs.SimpleFeatureViewer-opt - */ - opt:{ - //Parent - /* target:"YourOwnDivId", - json: {}, //will be created by this component - showSlider:true, - showPrintButton:true, - showFeatureTooltipOnMouseOver:true, - highlightFeatureOnMouseOver:true, - selectFeatureOnMouseClick:true, - selectionColor:"#ff8c00", - */ - dragSites: false, - imageWidth:700 - }, - - /** - * Array containing the supported event names - * @name Biojs.SimpleFeatureViewer-eventTypes - */ - eventTypes : [], - - /** - * Opens a new window/tab in the browser with the graphical representation as a plain image. - * Note: For IE it does not reflect the drags/drops on sites - * - * @example - * myPainter.exportFeaturesToImage(); - * - */ - exportFeaturesToImage: function() { - var config = this.opt.json.configuration; - var dataURL = ""; - if (jQuery.browser.msie) { //canvas does not work (not even with IE 9) - alert("Operation not supported for IE, please try from a different browser"); - } else { - svg = document.getElementById('uniprotFeaturePainter-holder').innerHTML; - var canvas = document.createElement("canvas"); - canvg(canvas, svg); - dataURL = canvas.toDataURL(); - this.$imageExported = jQuery('') - .html('
- * { - * url: <url>, - * proxyUrl: <proxy>, - * paramsMap: { "iDisplayStart": <newName1>, "iDisplayLength": <newName2>, ... }, - * filter: <flag> - * } - *- * where: - *
- * { - * url: 'http://www.ebi.ac.uk/Tools/webservices/psicquic/intact/webservices/current/search/query/species:human', - * paramsMap: { "iDisplayStart": "firstResult", "iDisplayLength": "maxResults" }, - * filter: false - * } - *- * - *
- * [ - * [ 1, "chi", "China", 1347350000, "December 31, 2011", "0.1925" ], - * [ 2, "ind", "India", 1210193422, "March 1, 2011", "0.1729" ], - * [ 3, "usa", "United States", 313149000, "March 9, 2012", "0.0447" ], - * [ 4, "ino", "Indonesia", 237641326, "May 1, 2010", "0.034" ], - * [ 5, "bra", "Brazil", 192376496, "July 1, 2011", "0.0275" ], - * [ 6, "pak", "Pakistan", 178945000, "March 9, 2012", "0.0256" ], - * [ 7, "nig", "Nigeria", 162471000, "July 1, 2011", "0.0232" ], - * [ 8, "rus", "Russia", 143030106, "January 1, 2012", "0.0204" ], - * [ 9, "ban", "Bangladesh", 142319000, "March 15, 2011", "0.0203" ], - * [ 10, "jap", "Japan", 127770000, "February 1, 2012", "0.0183" ], - * [ 11, "mex", "Mexico", 112336538, "June 12, 2010", "0.016" ], - * [ 12, "phi", "Philippines", 94013200, "July 1, 2010", "0.0134" ], - * [ 13, "vie", "Vietnam", 87840000, "December 31, 2011", "0.0125" ], - * [ 14, "eth", "Ethiopia", 84320987, "July 1, 2012", "0.012" ], - * [ 15, "ger", "Germany", 81796000, "August 31, 2011", "0.0117" ] - * ] - *- * - * @option {(string|Object)[]} columns - *
Array containing the column descriptors. A descriptor can be either a string or an object. - * Use a string to define column name only. Use an object to define column name, rendering function and fixed width. - *
- *- * { - * name: <string>, - * render: <function>, - * width: <string> - * } - *- * where: - *
- * // Formats a decimal value in a percentage value. - * var numberToPercentageFormat = function (col, dataRow, value) { - * return ( new Number(value) * 100 ).toFixed(2) + "%"; - * }; - *- *
- * // Three columns: Identifier, Name and Location. - * // Custom rendering function will apply bold to Identifier values. - * columns: [ - * "Name", - * "Location", - * { name: "Population %", render: numberToPercentageFormat } - * ] - *- * - * @option {int[]} [hideColumns=[]] - * Indexes (0-based) of the columns to be hided. - * - * @option {array[][int,string]} [orderBy=[]] - * A 2D array to tell how to order the columns. Each 1D array must contains both column index and ordering direction. - * - *
- * // order column 0 in ascending direction and column 3 in descending direction - * orderBy: [ [0,'asc'], [3,'desc'] ] - *- * - * @option {int} [pageLength=10] - * Number of rows per page. - * - * @option {bool} [rowSelection=true] - * Show/hide the first check boxes column used for selecting rows. - * - * @option {bool} [paginate=true] - * Enable/disable the pagination, so whole the data will be displayed. - * - * @option {int} [width=597] - * Horizontal size of the general container. - * - * @option {int} [height=400] - * Vertical size of the general container. - * - * @example - * // Adds a flag to the cell value. - * var flagRender = function (col, dataRow, value) { - * return '
- * // Select all the links - * targetSelector: "a" - * - * // Select the element with the id 'target' - * targetSelector: "#target" - * - * // Select all elements whose belong to the class 'here' - * targetSelector: ".here" - * - * // Select all list elements whose belong to the class 'here' - * targetSelector: "li.here" - *- * - * @param {function} [cbRender] - * By default, BiojsTooltip uses the 'title' attribute to render the content. - * Set this option to customize the content rendering instead of using the default value. - * - *
- * cbRender: function( element ) { - * return "This is my personalized content for element " + element.tagName; - * } - *- * - * @param {static} [arrowType=Biojs.Tooltip.ARROW_LEFT_TOP] - * Automatic positioning of the tooltip depends on the arrow direction. - * Possible arrow types are: - *
'+ - * 'Simply referred to as Cali, is a city located in western Colombia '+ - * 'It is the capital of the Valle del Cauca Department. With a population of 2.5 million, '+ - * 'Cali is the third largest city in the country, after Bogota and Medellin. The city '+ - * 'was founded on 25 July 1536.
- * [ - * // - * { name: <name>, - * display_label: <display_label>, - * duplication: <duplication>, - * branch_length: <endVal1>, - * common_name: <common_name>, - * seq_length: <seq_length>, - * type: <type>, - * uniprot_name: <uniprot_name>, - * - * children: []}, - * // - * // Any others nodes - * ..., - * // - * ]- * - *
- * tree : [ - * {"name":"Amniota_1","branch_length":"0.2212","binary_alignment":"N/A","children": [..] - * ,"common_name":"Chicken","seq_length":3397,"swissprot_gene_name":"N/A","display_label":"BRCA2"} - * ] - *- * - * @option {file} domains_file - * Set of annotations for the leaves of the tree. Must be an array of objects following the syntax: - *
- * [ - * // An annotation: - * { name: <name>, - * species_name: <message>, - * alignment_length: <message>, - * seq_length: <message>, - * cigar_string: <color_code>, - * domains: [{ name: name; domain_start: <startVal1>, domain_end: <endVal1> id: <HTMLColor> name : name}, ...,{ start: <startValN>, end: <endValN>, color: <HTMLColor>}] - * }, - * - * // ... - * // more annotations here - * // ... - * ] - *- *
- * tree : [ - * { - * "cigar_string" : "4D22MD23M3D10MD13M2D44M2D23M3D7MD13M11D16MD57M5D27MD26M2D3M9D8MD9M2D3MD12MD11M2D10M3D3MD2MDMD9MD19M4D2MD17MD10MD24M5D7MD3MD24MD19MD10M3D6M10D26M6D5M2D17M12D11M2D10M2D52M2D7M2D12MD7M5D22M2D4M2D10M3D46MD20MD6M4D4M2D3M3DM2D11M4D4MDM2D4MDMD3MD5M4D5MD9M5D5M2DM7D18M3D5MD2MD6MD21MD5MDM2D6MDMD2MD23MD9M5D19M7D3M2D19MD2MD7M7D14M5D13MD9MD7M3D45MD7M2D4M3D7M8D3M13D2M12D3M5D4MD35MD44M3D2M2D18M15D17MD18M8D4M8DMD21MD36MD17MD2MD25M2D19MD6MD2MD3MD12M6D12MD21M4D11MD17MD18M2D79MD55M2D18M2D30M4D5MD5MD8MD11MD23MD42M8D26M4DMD25MD6M5D7M2D6M2D3MD15M6DMD14MD32M10D3MD6M5D43M3D13MD21MD6MD6M3D3MD8MD10M7D11M4D23M10D44MD12M5D4MDM3D19M13D34MD4MD15MD2MD6MD53M4D2MD10MD38MD13MD25MD104M3D62M2D15M5D5M6D37M2D6MDMD234MD3MD162MD11M2D30M2D45MD20MD2MD100M13D25M4D20M4D78M8D62MD38MD2MD8MD3MD4MD5MD41MD3MD4M16D11M2DM3D38M2D", - * "species_name" : "Ailuropoda_melanoleuca", - * "alignment_length" : 4010, - * "domains" : [ ..] - * "seq_length" : 3460, - * "name" : "ENSAMEP00000009909"} - * ] - *- * - * where: - *
"+d.xref.protein_id+" | "} - else {table_html += ""} - if(d.xref.sf_name){table_html += " | "+d.xref.sf_name+" | "} - else {table_html += ""} - if(d.xref.definition){table_html += " | "+d.xref.definition+" | "} - else {table_html += ""} - if(d.xref.gene_id){table_html += " | "+d.xref.gene_id+" | "} - else {table_html += ""} - if(d.xref.molecular_function){table_html += " | "+d.xref.molecular_function+" | "} - else {table_html += ""} - if(d.xref.biological_process){table_html += " | "+d.xref.biological_process+" | "} - else {table_html += ""} - if(d.xref.cellular_component){table_html += " | "+d.xref.cellular_component+" | "} - else {table_html += ""} - if(d.xref.protein_class){table_html += " | "+d.xref.protein_class+" | "} - else {table_html += ""} - - } - table_html += " |
'+
- // '![]() | '+
-
- //''+
- ' internal nodes: '+
- ''+
- '![]() | '+
- //''+
- ''+
- '![]() | '+
- //''+
- ''+
- '![]() | '+
-
- //''+
- ''+
- '![]() | '+
-
- // ''+
- // '![]() | '+
- // ''+
- // '![]() | '+
-
- // ''+
- // ''+
- // ' | '+
-// ''+
-// ''+
-// '![]() | '+
-
-
- //''+
- // ''+
- // '![]() | '+
- //''+
- 'leaves: '+
- ''+
- '![]() | '+
-
- //''+
- // ''+
- // '![]() | '+
- //''+
- ''+
- '![]() | '+
- //''+
- ''+
- '![]() | '+
- // ''+
- // ''+
- // '![]() | '+
- // ''+
- // ''+
- // '![]() | '+
-
-
-
-
-
-
-
- //'
Lappen
').appendTo('#tv_controls'); - Biojs.console.enable("finished building div"); - //jQuery('').appentTo(jQuery("#tv_controls")); - - - // font size - jQuery('img.increase_font').click(function() { - self.opt.fontSize = parseInt(self.opt.fontSize) + 1 + "px"; - d3.select("svg").selectAll(".text").attr("font-size", function(d){ return self.opt.fontSize; }); - }); - - jQuery('img.decrease_font').click(function() { - self.opt.fontSize = parseInt(self.opt.fontSize) - 1 + "px"; - d3.select("svg").selectAll(".text").attr("font-size", function(d){ return self.opt.fontSize; }); - }); - - - - }, - /* - * Shows the columns indicated by the indexes array. - * @param {string} seq The sequence strand. - * @param {string} [identifier] Sequence identifier. - * - * @example - * myTree.__setModelOrganisms(); - * - */ - _setTaxaToShow: function (){ - - var show_taxa = new Object(); - show_taxa['Metazoa'] = 1; - show_taxa['Bilateria'] = 1; - show_taxa['Mammalia'] = 1; - show_taxa['Dipteria'] = 1; - show_taxa['Primates'] = 1; - show_taxa['Arabidopsis_thaliana'] = 1; - - - this.opt.show_taxa = show_taxa; - }, - __drawProteinDomains: function (){ - Biojs.console.enable("drawing protein domains"); - // Sequences - var rects = draw_sequences({nodeEnter: this.nodeEnter, - domainScale : this.opt.domainScale , - leaf_group_x : this.opt.leaf_group_x, - sequence_start_y : this.opt.sequence_start_y, - visibility : ""}); - // Domains - var domains = rects.selectAll(".domain").data(function(d) { return d.domains; }) - var all_domains = draw_domains({domains : domains, - sequence_start_y : this.opt.sequence_start_y, - domainScale: this.opt.domainScale, - sequence_rect_width : this.opt.sequence_rect_width, - leaf_group_x : this.opt.leaf_group_x, - domain_colors : this.opt.domain_colors, - visibility: "" }); - - } -}, -{ - EVT_ON_SELECTION_CHANGE: "onSelectionChange", - EVT_ON_SELECTION_CHANGED: "onSelectionChanged", - EVT_ON_ANNOTATION_CLICKED: "onAnnotationClicked" - -}); - - diff --git a/src/lib/biojs-1.0/src/main/javascript/Biojs.UniProtDiseaseSummary.js b/src/lib/biojs-1.0/src/main/javascript/Biojs.UniProtDiseaseSummary.js deleted file mode 100755 index eb8d0934d5..0000000000 --- a/src/lib/biojs-1.0/src/main/javascript/Biojs.UniProtDiseaseSummary.js +++ /dev/null @@ -1,375 +0,0 @@ -/** - * Component to present UniProt disease information. - * - * @class - * @extends Biojs - * - * @author Rafael C Jimenez - * @version 1.0.0 - * @category 2 - * - * @requires jQuery 1.7.2 - * @dependency - * - * - * @requires Biojs.UniProtDiseaseSummary.css - * @dependency - * - * - * @param {Object} options An object with the options for this component. - * - * @option {string} target - * Identifier of the DIV tag where the component should be displayed. - * - * @option {string} uniProtDasUrl - * Url pointing to an XML including UniProt infomration in DAS format - * - * @option {string} keywordFiltereing [['cancer','brain']] - * List of keywords to filter disease information - * - * @option {string} [proxyUrl='../biojs/dependencies/proxy/proxy.php'] - * Since the same origin policy ({@link http://en.wikipedia.org/wiki/Same_origin_policy}) in the browsers - * Biojs include a proxy script in PHP which redirects Ajax requests from local to any other domain. - * You can use tour own proxy script by modifying this value. - * - * @option {string} width [100%] - * Defines the width of the component - * - * @option {string} referencesColumnWidth [200px] - * Defines the width of the columns with reference links - * - * @option {boolean} tableHeader - * Boolean value to control the display of the table header - * - * @option {boolean} componentTitle - * Boolean value to control the display of the title of the component - * - * @example - * var instance = new Biojs.UniProtDiseaseSummary({ - * target: 'YourOwnDivId', - * uniProtDasUrl: 'http://www.ebi.ac.uk/das-srv/uniprot/das/uniprot/features?segment=P08123;type=BS:01019', - * keywordFiltereing: ['osteogenesis','lipoblastoma'], - * proxyUrl: '../biojs/dependencies/proxy/proxy.php', - * width: '100%', - * referencesColumnWidth: '150px', - * tableHeader: false, - * componentTitle: false - * }); - * - */ - - -Biojs.UniProtDiseaseSummary = Biojs.extend ( - /** @lends Biojs.UniProtDiseaseSummary# */ - { - constructor: function (options) { - //Biojs.console.enable(); - this.setUniProtDasUrl(this.opt.uniProtDasUrl); - this._component_wrapper_id = "UDS_component_wrapper"; - }, - - /** - * Set an URL to start the query and visualization - * @param {string} uniProtDasUrl DAS XML - * - * @example - * instance.setUniProtDasUrl("http://www.ebi.ac.uk/das-srv/uniprot/das/uniprot/features?segment=P37173;type=BS:01019"); - * - * @example - * instance.setUniProtDasUrl("http://www.ebi.ac.uk/das-srv/uniprot/das/uniprot/features?segment=P08123;type=BS:01019"); - * - */ - - setUniProtDasUrl: function(uniProtDasUrl){ - var self = this; - self._clearHtmlTemplate(); - /* URL where to get DAS XML */ - self._url; - if(self.opt.proxyUrl != ""){ - self._url= self.opt.proxyUrl + "?url=" + uniProtDasUrl; - } else { - self._url= uniProtDasUrl; - } - - /* get XML */ - jQuery.ajax({ - type: "GET", - url: self._url, - dataType: "xml", - success: function(a){self._processDasUniProtXml(a);}, - error: function(a){self._processErrorRequest(a);} - }); - }, - /* - * Function: Biojs.UniProtDiseaseSummary._processErrorRequest - * Purpose: Process request error - * Returns: - - * Inputs: textStatus -> {String} Text satus - */ - _processErrorRequest: function (textStatus){ - var self = this; - Biojs.console.log("ERROR: " + textStatus ); - self.raiseEvent( Biojs.UniProtDiseaseSummary.EVT_ON_REQUEST_ERROR, { message: textStatus } ); - }, - /* - * Function: Biojs.UniProtDiseaseSummary._drawHtmlTemplate - * Purpose: Create HTML template - * Returns: - - * Inputs: - - */ - _drawHtmlTemplate: function (){ - var _selector = "#" + this.opt.target; - var _container = jQuery(_selector); - var _tableTitle = jQuery('').appendTo(_container); - jQuery("").appendTo(_tableTitle); - jQuery("").appendTo(_tableTitle); - }, - /* - * Function: Biojs.UniProtDiseaseSummary._clearHtmlTemplate - * Purpose: Remove component content - * Returns: - - * Inputs: - - */ - _clearHtmlTemplate: function (){ - var _selector = "#" + this.opt.target; - var _container = jQuery(_selector).html(''); - }, - /* - * Function: Biojs.UniProtDiseaseSummary._drawComponentTitle - * Purpose: Draw component title - * Returns: - - * Inputs: - - */ - _drawComponentTitle: function (){ - if(this.opt.componentTitle){ - var _selector = "#" + this._component_wrapper_id; - var _container = jQuery(_selector); - var _tableTitle = jQuery("variableStep chrom=chr2 span=5 - * 10 34 - * 20 41 - * 30 46 - * 40 49 - * 50 52 - * - * ... - * - * or - * - * fixedStep chrom=chr2 start=10 step=10 span=5 - * 34 - * 41 - * 46 - * 49 - * 52 - * - * ...- * - * @option {string} [selectionBackgroundColor] - * Name of the colour to be set as background for area chart - * - */ - - -Biojs.wigExplorer = Biojs.extend( - /** @lends Biojs.wigExplorer# */ - - - { - zoomSlider: '', - slider_stop: 0, - slider_start: 0, - track: [], - width: 1, - height: 1, - data_last_start: 1, - data_first_start: 1, - max: 0, - span: null, - chrom: [], - data: [], - main_data: [], - - - constructor: function (options) { - - var self = this; - self.vis = null; - self.color = null; - self.foci = []; - - - this.track; // data - - - this._container = $("#wigFeaturePainter-holder"); - $(this._container).addClass("graph"); - - - // Apply options values - this._container.css({ - 'font-family': self.opt.fontFamily, // this is one example of the use of self instead of this - 'background-color': self.opt.selectionBackgroundColor, - 'color': self.opt.fontColor, - 'font-size': '36px', - 'text-align': 'center', - 'vertical-align': 'middle', - 'width': '700px', - 'height': '100px', - 'bottom': '0px' - }); - - // Disable text selection and - // Change the selection mouse pointer - // from text to hand. - this._container.css({ - '-moz-user-select': 'none', - '-webkit-user-select': 'none', - 'user-select': 'none' - }); - - this.color = self.opt.selectionBackgroundColor; - this.paintFeatures(self.opt.dataSet); - - }, - - /** - * Default values for the options - * @name Biojs.wigExplorer-opt - */ - opt: { - target: "YourOwnDivId", - dataSet: "", - fontFamily: '"Andale mono", courier, monospace', - fontColor: "white", - backgroundColor: "", - selectionFontColor: "black", - selectionBackgroundColor: "yellow", - width: "100%", - height: "130", - radius: 10, - reference: null - }, - - /** - * Array containing the supported event names - * @name Biojs.wigExplorer-eventTypes - */ - eventTypes: [ - /** - * No events added for now but can be added in future - */ - ], - - - /** - * Repaints everything: ruler, shapes, and legend. - * @param {int} [newStart] Zoom from this sequence start value. - * @param {int} [newStop] Zoom to this sequence end value. - * - * @example - * instance._updateDraw(); - * - */ - _updateDraw: function (newStart, newStop, target) { - var self = this; - //recalculate start and stop - if (newStart && newStop) { - this.slider_start += newStart; - this.slider_stop += newStop; - } - - if (target) { - } else { - target = self.opt.target; - } - if (this.slider_start < this.data_first_start) { - if (newStart == newStop) { - this.slider_stop += this.data_first_start - this.slider_start; - } - this.slider_start = this.data_first_start; - - } - - if (this.slider_stop > this.data_last_start) { - - if (newStart == newStop) { - this.slider_start += this.data_last_start - this.slider_stop; - } - this.slider_stop = this.data_last_start; - } - //recalculate start and stop - if ((parseFloat(this.slider_start) < parseFloat(this.slider_stop))) { - this.paintWig(this.slider_start, this.slider_stop, target); - } - }, - - /** - * Paint the features according to the values specified in the json object defined when creating the object. - * This method initializes the holder, paints the slider and print button depending on the options, and - * paints the features and legend. - * - * @example - * instance.paintFeatures("path-to-wig.txt"); - * - * @param {string} dataSet Location of the file with the input data in text format. - *
variableStep chrom=chr2 span=5 - * 10 34 - * 20 41 - * 30 46 - * 40 49 - * 50 52 - * - * ... - * - * or - * - * fixedStep chrom=chr2 start=10 step=10 span=5 - * 34 - * 41 - * 46 - * 49 - * 52 - * - * ...- * - */ - paintFeatures: function (dataSet) { - if (dataSet != undefined) { - this._setDataSource(dataSet); - this._init(); - } else { - alert('Dataset not defined '); - } - - }, - - /** - * Private: Initializes the component. - */ - _init: function () { - Biojs.wigExplorer.myself = this; - var self = this; - var painter_div = jQuery("#" + this.opt.target); - painter_div.text(''); - painter_div.append(this._withSliderOnly(100)); - - painter_div.append(''); - var holder = document.getElementById(this.opt.target + '_wigFeaturePainter-holder'); - if (!holder) { - this.$errorMsg = jQuery('') - .html('There was an unexpected failure, the image cannot be displayed.') - .dialog({ - autoOpen: true, - title: 'Error', - modal: true - }); - throw "Error"; - } - - - holder.innerHTML = ""; - holder.style.height = "250px"; - holder.style.width = "700px"; - this.width = $('#' + self.opt.target + '_wigFeaturePainter-holder').width(), - this.height = $('#' + self.opt.target + '_wigFeaturePainter-holder').height(), - this.r = self.opt.radius; - - self.opt.width = self.opt.width.toString(); - - if (self.opt.width.indexOf("%") >= 1) - self.opt.width = self.opt.width.toString(); - else - self.opt.width = parseInt(this.width); - - //had similar problem before so I used contains and it should works - self.opt.height = self.opt.height.toString(); - if (self.opt.height.indexOf("%") >= 1) - self.opt.height = self.opt.height.toString(); - if (self.opt.height.indexOf("%") != -1) - this.height = this.height * (self.opt.height.substring(0, self.opt.height.length - 1) * 1) / 100.0; - else - this.height = self.opt.height * 1; - self.opt.height = parseInt(this.height); - - self.color = function () { - return d3.scale.ordinal().range(self.colors); - }(); - - jQuery.ajax({ - type: "GET", - url: self.opt.dataSet, - dataType: "text", - success: function (data) { - var wig = []; - var max = 0 - var data_split = data.split("\n") - var data_len = data_split.length; - if (data.indexOf("variableStep") >= 0 || data.indexOf("fixedStep") >= 0) { - self.chrom = [] - for (var i = 0; i < data_len; i++) { - if (data_split[i].indexOf("chrom") >= 0) { - var chr = data_split[i].split(/\s+/)[1].split("=")[1]; - if (self.chrom.indexOf(chr) < 0) { - self.chrom.push(chr); - } - } - } - self._buildReferenceSelector(); - } else { - alert("Unknown format detected") - } - - }, - error: function (qXHR, textStatus, errorThrown) { - alert(textStatus); - } - }); - }, - - - /** - * Private: Function to create reference dropdown. - * @ignore - */ - _buildReferenceSelector: function () { - var self = this; - - this._headerDiv = jQuery('#' + self.opt.target + '_selectorMenu'); - this._headerDiv.css({ - 'font-family': '"Heveltica Neue", Arial, "sans serif"', - 'font-size': '14px' - }).append('Reference: '); - - var selector_html = "