genoverse 3.2.0 → 4.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (217) hide show
  1. package/.eslintrc.js +93 -162
  2. package/.github/workflows/test.yml +9 -10
  3. package/.github/workflows/update-gh-pages.yml +33 -0
  4. package/LICENSE.TXT +2 -2
  5. package/README.md +174 -3
  6. package/{i → assets}/sort_handle.png +0 -0
  7. package/babel.config.js +19 -0
  8. package/dist/129.css +334 -0
  9. package/dist/129.css.map +1 -0
  10. package/dist/129.genoverse.js +2 -0
  11. package/dist/129.genoverse.js.map +1 -0
  12. package/dist/15d98c18221c8bcb2334.ttf +0 -0
  13. package/dist/166.css +2 -0
  14. package/dist/166.genoverse.js +1 -0
  15. package/dist/216.css +20 -0
  16. package/dist/216.css.map +1 -0
  17. package/dist/232.css +114 -0
  18. package/dist/232.css.map +1 -0
  19. package/dist/232.genoverse.js +2 -0
  20. package/dist/232.genoverse.js.map +1 -0
  21. package/dist/2e659e443f3e98569e9f.png +0 -0
  22. package/dist/394.css +114 -0
  23. package/dist/394.css.map +1 -0
  24. package/dist/394.genoverse.js +2 -0
  25. package/dist/394.genoverse.js.map +1 -0
  26. package/dist/469.css +24 -0
  27. package/dist/469.css.map +1 -0
  28. package/dist/469.genoverse.js +2 -0
  29. package/dist/469.genoverse.js.map +1 -0
  30. package/dist/4896d4b04430cc3dfb06.woff2 +0 -0
  31. package/dist/530.css +39 -0
  32. package/dist/530.css.map +1 -0
  33. package/dist/530.genoverse.js +2 -0
  34. package/dist/530.genoverse.js.map +1 -0
  35. package/dist/547.css +469 -0
  36. package/dist/547.css.map +1 -0
  37. package/dist/547.genoverse.js +1 -0
  38. package/dist/729.css +315 -0
  39. package/dist/729.css.map +1 -0
  40. package/dist/79da213423ac0def2058.ttf +0 -0
  41. package/dist/804.genoverse.js +2 -0
  42. package/dist/804.genoverse.js.map +1 -0
  43. package/dist/842.genoverse.js +2 -0
  44. package/dist/842.genoverse.js.map +1 -0
  45. package/dist/893.genoverse.js +2 -0
  46. package/dist/893.genoverse.js.map +1 -0
  47. package/dist/949.css +315 -0
  48. package/dist/949.css.map +1 -0
  49. package/dist/949.genoverse.js +2 -0
  50. package/dist/949.genoverse.js.map +1 -0
  51. package/dist/952.css +315 -0
  52. package/dist/952.css.map +1 -0
  53. package/dist/952.genoverse.js +2 -0
  54. package/dist/952.genoverse.js.map +1 -0
  55. package/dist/d79c2ec96ab9ff1161a2.woff2 +0 -0
  56. package/dist/genoverse.js +2 -0
  57. package/dist/genoverse.js.map +1 -0
  58. package/index.html +13 -14
  59. package/jest.config.js +5 -0
  60. package/jest.setup.js +13 -0
  61. package/package.json +29 -12
  62. package/{css → src/css}/controlPanel.css +0 -0
  63. package/{css → src/css}/fileDrop.css +0 -0
  64. package/src/css/fontawesome.css +3 -0
  65. package/{css → src/css}/fullscreen.css +0 -0
  66. package/{css → src/css}/genoverse.css +1 -1
  67. package/{css → src/css}/karyotype.css +2 -0
  68. package/{css → src/css}/resizer.css +0 -0
  69. package/{css → src/css}/tooltips.css +0 -0
  70. package/{css → src/css}/trackControls.css +0 -0
  71. package/src/js/Genoverse.js +1747 -0
  72. package/{js → src/js}/Track/Controller/Sequence.js +6 -4
  73. package/src/js/Track/Controller/Stranded.js +83 -0
  74. package/{js → src/js}/Track/Controller.js +201 -160
  75. package/src/js/Track/Model/File/BAM.js +47 -0
  76. package/src/js/Track/Model/File/BED.js +122 -0
  77. package/src/js/Track/Model/File/GFF.js +42 -0
  78. package/src/js/Track/Model/File/VCF.js +109 -0
  79. package/src/js/Track/Model/File/WIG.js +82 -0
  80. package/src/js/Track/Model/File.js +36 -0
  81. package/src/js/Track/Model/Gene/Ensembl.js +24 -0
  82. package/{js → src/js}/Track/Model/Gene.js +3 -1
  83. package/src/js/Track/Model/Sequence/Ensembl.js +6 -0
  84. package/{js → src/js}/Track/Model/Sequence/Fasta.js +24 -17
  85. package/{js → src/js}/Track/Model/Sequence.js +10 -7
  86. package/{js → src/js}/Track/Model/SequenceVariation.js +17 -11
  87. package/{js → src/js}/Track/Model/Stranded.js +11 -8
  88. package/src/js/Track/Model/Transcript/Ensembl.js +73 -0
  89. package/{js → src/js}/Track/Model/Transcript.js +3 -1
  90. package/{js → src/js}/Track/Model.js +125 -93
  91. package/{js → src/js}/Track/View/Gene/Ensembl.js +6 -4
  92. package/src/js/Track/View/Gene.js +8 -0
  93. package/{js → src/js}/Track/View/Sequence.js +18 -22
  94. package/src/js/Track/View/SequenceVariation.js +117 -0
  95. package/src/js/Track/View/Transcript/Ensembl.js +17 -0
  96. package/src/js/Track/View/Transcript.js +32 -0
  97. package/{js → src/js}/Track/View.js +200 -159
  98. package/{js → src/js}/Track/library/Chromosome.js +18 -13
  99. package/src/js/Track/library/File/BAM.js +34 -0
  100. package/src/js/Track/library/File/BED.js +27 -0
  101. package/src/js/Track/library/File/BIGBED.js +51 -0
  102. package/src/js/Track/library/File/BIGWIG.js +54 -0
  103. package/src/js/Track/library/File/GFF.js +10 -0
  104. package/{js → src/js}/Track/library/File/VCF.js +29 -22
  105. package/src/js/Track/library/File/WIG.js +8 -0
  106. package/{js → src/js}/Track/library/File.js +4 -2
  107. package/src/js/Track/library/Gene.js +44 -0
  108. package/src/js/Track/library/Graph/Bar.js +263 -0
  109. package/src/js/Track/library/Graph/Line.js +335 -0
  110. package/{js → src/js}/Track/library/Graph.js +137 -114
  111. package/{js → src/js}/Track/library/HighlightRegion.js +118 -93
  112. package/src/js/Track/library/Legend.js +258 -0
  113. package/{js → src/js}/Track/library/Scalebar.js +69 -49
  114. package/{js → src/js}/Track/library/Scaleline.js +29 -27
  115. package/src/js/Track/library/Static.js +82 -0
  116. package/{js → src/js}/Track/library/dbSNP.js +47 -50
  117. package/src/js/Track.js +651 -0
  118. package/{js → src/js}/genomes/grch37.js +52 -52
  119. package/{js → src/js}/genomes/grch38.js +52 -52
  120. package/src/js/lib/BWReader.js +562 -0
  121. package/src/js/lib/VCFReader.js +296 -0
  122. package/src/js/lib/dalliance/bam.js +517 -0
  123. package/src/js/lib/dalliance/bin.js +317 -0
  124. package/src/js/lib/dalliance/jszlib-inflate.js +2159 -0
  125. package/src/js/lib/dalliance/lh3utils.js +105 -0
  126. package/src/js/lib/dalliance/sha1.js +334 -0
  127. package/src/js/lib/import-tracks.js +42 -0
  128. package/{js/lib → src/js/lib/jquery-plugins}/jquery.mousehold.js +0 -0
  129. package/{js/lib → src/js/lib/jquery-plugins}/jquery.mousewheel.js +0 -0
  130. package/{js/lib → src/js/lib/jquery-plugins}/jquery.tipsy.js +0 -0
  131. package/src/js/lib/jquery.js +26 -0
  132. package/src/js/lib/polyfills.js +11 -0
  133. package/src/js/lib/wrap-functions.js +88 -0
  134. package/src/js/plugins/controlPanel.js +388 -0
  135. package/src/js/plugins/fileDrop.js +81 -0
  136. package/src/js/plugins/focusRegion.js +13 -0
  137. package/{js → src/js}/plugins/fullscreen.js +18 -14
  138. package/{js → src/js}/plugins/karyotype.js +51 -45
  139. package/src/js/plugins/resizer.js +52 -0
  140. package/{js → src/js}/plugins/tooltips.js +31 -29
  141. package/src/js/plugins/trackControls.js +159 -0
  142. package/test/View/render-legends.test.js +1 -1
  143. package/test/change-width.test.js +71 -0
  144. package/test/create-and-destroy.test.js +2 -2
  145. package/test/track-ordering.test.js +3 -2
  146. package/test/track_config/config-settings.test.js +1 -1
  147. package/test/utils.js +4 -2
  148. package/webpack.config.js +103 -34
  149. package/css/font-awesome.css +0 -3
  150. package/expanded.html +0 -120
  151. package/fontawesome/css/fontawesome.min.css +0 -5
  152. package/fontawesome/css/regular.min.css +0 -5
  153. package/fontawesome/css/solid.min.css +0 -5
  154. package/fontawesome/webfonts/fa-brands-400.ttf +0 -0
  155. package/fontawesome/webfonts/fa-brands-400.woff +0 -0
  156. package/fontawesome/webfonts/fa-brands-400.woff2 +0 -0
  157. package/fontawesome/webfonts/fa-regular-400.ttf +0 -0
  158. package/fontawesome/webfonts/fa-regular-400.woff +0 -0
  159. package/fontawesome/webfonts/fa-regular-400.woff2 +0 -0
  160. package/fontawesome/webfonts/fa-solid-900.ttf +0 -0
  161. package/fontawesome/webfonts/fa-solid-900.woff +0 -0
  162. package/fontawesome/webfonts/fa-solid-900.woff2 +0 -0
  163. package/help.pdf +0 -0
  164. package/index.js +0 -83
  165. package/js/Genoverse.js +0 -1681
  166. package/js/Track/Controller/Stranded.js +0 -73
  167. package/js/Track/Model/File/BAM.js +0 -44
  168. package/js/Track/Model/File/BED.js +0 -116
  169. package/js/Track/Model/File/GFF.js +0 -40
  170. package/js/Track/Model/File/VCF.js +0 -101
  171. package/js/Track/Model/File/WIG.js +0 -67
  172. package/js/Track/Model/File.js +0 -36
  173. package/js/Track/Model/Gene/Ensembl.js +0 -22
  174. package/js/Track/Model/Sequence/Ensembl.js +0 -4
  175. package/js/Track/Model/Transcript/Ensembl.js +0 -67
  176. package/js/Track/View/Gene.js +0 -6
  177. package/js/Track/View/Sequence/Variation.js +0 -115
  178. package/js/Track/View/Transcript/Ensembl.js +0 -12
  179. package/js/Track/View/Transcript.js +0 -28
  180. package/js/Track/library/File/BAM.js +0 -30
  181. package/js/Track/library/File/BED.js +0 -24
  182. package/js/Track/library/File/BIGBED.js +0 -47
  183. package/js/Track/library/File/BIGWIG.js +0 -52
  184. package/js/Track/library/File/GFF.js +0 -9
  185. package/js/Track/library/File/WIG.js +0 -5
  186. package/js/Track/library/Gene.js +0 -37
  187. package/js/Track/library/Graph/Bar.js +0 -235
  188. package/js/Track/library/Graph/Line.js +0 -296
  189. package/js/Track/library/Legend.js +0 -224
  190. package/js/Track/library/Static.js +0 -78
  191. package/js/Track.js +0 -632
  192. package/js/genoverse.min.js +0 -2
  193. package/js/genoverse.min.js.map +0 -1
  194. package/js/lib/BWReader.js +0 -578
  195. package/js/lib/Base.js +0 -145
  196. package/js/lib/VCFReader.js +0 -286
  197. package/js/lib/dalliance/js/bam.js +0 -494
  198. package/js/lib/dalliance/js/bin.js +0 -185
  199. package/js/lib/dalliance/js/das.js +0 -749
  200. package/js/lib/dalliance/js/utils.js +0 -370
  201. package/js/lib/dalliance-lib.js +0 -3594
  202. package/js/lib/dalliance-lib.min.js +0 -68
  203. package/js/lib/jDataView.js +0 -2
  204. package/js/lib/jParser.js +0 -192
  205. package/js/lib/jquery-ui.js +0 -8
  206. package/js/lib/jquery.js +0 -2
  207. package/js/lib/rtree.js +0 -1
  208. package/js/plugins/controlPanel.js +0 -395
  209. package/js/plugins/fileDrop.js +0 -62
  210. package/js/plugins/focusRegion.js +0 -12
  211. package/js/plugins/resizer.js +0 -45
  212. package/js/plugins/trackControls.js +0 -143
  213. package/utils/expandedTemplate.html +0 -46
  214. package/utils/git-hooks/post-commit +0 -9
  215. package/utils/git-hooks/pre-commit +0 -7
  216. package/utils/git-hooks/setup +0 -6
  217. package/utils/makeExpanded.js +0 -19
package/index.html CHANGED
@@ -24,13 +24,12 @@
24
24
  <p>Genoverse is a portable, customizable, back-end independent JavaScript and HTML5 based genome browser which allows the user to explore data interactively.</p>
25
25
  <p>Data is visualized in the browser, meaning Genoverse can be installed on any website and show data from a wide range of online or local sources.</p>
26
26
  <p>Genoverse works with a variety of formats, such as XML, JSON, GFF, GFF3, BED (try drag-n-drop one), and can be customized to parse and display any data source as required.</p>
27
- <p>For more information on how to use Genoverse please refer to <a href="help.pdf" target="_blank">this tutorial</a>.</p>
28
27
 
29
28
  <p class="help">If you have any questions or need help, please raise an issue at <a href="https://github.com/wtsi-web/Genoverse" target="_blank">https://github.com/wtsi-web/Genoverse</a></p>
30
29
  </div>
31
30
  </div>
32
31
 
33
- <script type="text/javascript" src="js/genoverse.min.js"></script>
32
+ <script src="dist/genoverse.js"></script>
34
33
  <script>
35
34
  new Genoverse({
36
35
  container : '#genoverse', // Where to inject Genoverse (css/jQuery selector/DOM element)
@@ -42,25 +41,25 @@
42
41
  end : 32370557,
43
42
  plugins : [ 'controlPanel', [ 'karyotype', { showAssembly: true }], 'trackControls', 'resizer', 'focusRegion', 'fullscreen', 'tooltips', 'fileDrop' ],
44
43
  tracks : [
45
- Genoverse.Track.Scaleline.extend({ strand: false }),
46
- Genoverse.Track.Scalebar,
47
- Genoverse.Track.extend({
44
+ [ 'Scaleline', { strand: false }],
45
+ 'Scalebar',
46
+ {
48
47
  name : 'Sequence',
49
- controller : Genoverse.Track.Controller.Sequence,
50
- model : Genoverse.Track.Model.Sequence.Ensembl,
51
- view : Genoverse.Track.View.Sequence,
48
+ controller : 'Sequence',
49
+ model : 'Sequence.Ensembl',
50
+ view : 'Sequence',
52
51
  100000 : false,
53
52
  resizable : 'auto'
54
- }),
55
- Genoverse.Track.Gene,
56
- Genoverse.Track.extend({
53
+ },
54
+ 'Gene',
55
+ {
57
56
  name : 'Regulatory Features',
58
57
  url : '//rest.ensembl.org/overlap/region/human/__CHR__:__START__-__END__?feature=regulatory;content-type=application/json',
59
58
  resizable : 'auto',
60
- model : Genoverse.Track.Model.extend({ dataRequestLimit : 5000000 }),
59
+ model : { dataRequestLimit : 5000000 },
61
60
  setFeatureColor : function (f) { f.color = '#AAA'; }
62
- }),
63
- Genoverse.Track.dbSNP
61
+ },
62
+ 'dbSNP'
64
63
  ]
65
64
  });
66
65
  </script>
package/jest.config.js CHANGED
@@ -1,4 +1,9 @@
1
1
  module.exports = {
2
2
  testEnvironment : 'jsdom',
3
3
  testMatch : [ '**/test/**/*.test.js' ],
4
+ setupFiles : [ '<rootDir>/jest.setup.js' ],
5
+ transform : {
6
+ '\\.js$': 'babel-jest',
7
+ },
8
+ transformIgnorePatterns: [ '/node_modules/(?!jquery)' ],
4
9
  };
package/jest.setup.js ADDED
@@ -0,0 +1,13 @@
1
+ // webpack's require.context is not supported by Jest, but is used in index.js.
2
+ // This plugin adds the function global.__requireContext, which can be used instead,
3
+ // and its presence in babel.config's `plugins` replaces require.context with global.__requireContext
4
+ require('babel-plugin-require-context-hook/register')();
5
+
6
+ // A hack to make jquery-ui's use of requirejs-style imports work with Jest.
7
+ // babel-plugin-transform-amd-to-commonjs is used to transform calls to define() into require(),
8
+ // but jquery-ui wraps these calls in:
9
+ // if ( typeof define === "function" && define.amd ) { ... }
10
+ // so just using the transformation by itself is not enough - that code to be run as well.
11
+ // Creating a fake define function solves this problem.
12
+ global.define = () => {};
13
+ global.define.amd = {};
package/package.json CHANGED
@@ -1,15 +1,16 @@
1
1
  {
2
2
  "name": "genoverse",
3
- "version": "3.2.0",
3
+ "version": "4.0.1",
4
4
  "description": "Genoverse is a portable, customizable, back-end independent JavaScript and HTML5 based genome browser which allows the user to explore data in a dynamic and interactive manner.",
5
- "main": "js/Genoverse.js",
5
+ "main": "src/js/Genoverse.js",
6
6
  "directories": {
7
- "lib": "js",
7
+ "lib": "src/js",
8
8
  "test": "test"
9
9
  },
10
10
  "scripts": {
11
+ "dev": "webpack serve --mode development --env public-path=/dist/",
11
12
  "test": "jest",
12
- "build": "yarn lint && node utils/makeExpanded.js && webpack",
13
+ "build": "webpack",
13
14
  "lint": "eslint '**/*.js'",
14
15
  "server": "node utils/devServer.js"
15
16
  },
@@ -24,20 +25,36 @@
24
25
  },
25
26
  "homepage": "https://wtsi-web.github.io/Genoverse/",
26
27
  "devDependencies": {
27
- "@babel/core": "^7.16.7",
28
- "@babel/eslint-parser": "^7.16.5",
29
- "@babel/runtime-corejs3": "^7.16.7",
28
+ "@babel/core": "^7.17.2",
29
+ "@babel/eslint-parser": "^7.17.0",
30
+ "@babel/preset-env": "^7.16.11",
31
+ "@babel/runtime-corejs3": "^7.17.2",
32
+ "babel-loader": "^8.2.3",
33
+ "babel-plugin-require-context-hook": "^1.0.0",
34
+ "babel-plugin-transform-amd-to-commonjs": "^1.4.0",
30
35
  "canvas": "^2.8.0",
31
- "core-js": "^3.20.2",
36
+ "clean-webpack-plugin": "^4.0.0",
37
+ "css-loader": "^6.7.0",
32
38
  "eslint": "^8.6.0",
33
39
  "eslint-config-airbnb-base": "^15.0.0",
34
40
  "eslint-plugin-align-assignments": "^1.1.2",
35
41
  "eslint-plugin-es": "^4.1.0",
36
42
  "eslint-plugin-import": "^2.25.4",
37
- "jest": "^27.4.7",
43
+ "jest": "^27.5.1",
44
+ "mini-css-extract-plugin": "^2.6.0",
38
45
  "terser-webpack-plugin": "^5.3.0",
39
- "webpack": "^5.65.0",
40
- "webpack-cli": "^4.9.1"
46
+ "webpack": "^5.70.0",
47
+ "webpack-cli": "^4.9.1",
48
+ "webpack-dev-server": "^4.7.4"
41
49
  },
42
- "dependencies": {}
50
+ "dependencies": {
51
+ "@fortawesome/fontawesome-free": "^6.0.0",
52
+ "basejs": "^1.1.1",
53
+ "core-js": "^3.21.0",
54
+ "jParser": "^1.0.2",
55
+ "jquery": "^3.6.0",
56
+ "jquery-ui": "^1.13.0",
57
+ "lodash": "^4.17.21",
58
+ "rtree": "^1.4.2"
59
+ }
43
60
  }
File without changes
File without changes
@@ -0,0 +1,3 @@
1
+ @import url('@fortawesome/fontawesome-free/css/fontawesome.min.css');
2
+ @import url('@fortawesome/fontawesome-free/css/solid.min.css');
3
+ @import url('@fortawesome/fontawesome-free/css/regular.min.css');
File without changes
@@ -180,7 +180,7 @@
180
180
  .gv-label-container li .gv-handle {
181
181
  float: left;
182
182
  position: relative;
183
- background-image: url(../i/sort_handle.png);
183
+ background-image: url(../../assets/sort_handle.png);
184
184
  cursor: move;
185
185
  display: inline-block;
186
186
  height: calc(100% - 20px);
@@ -1,3 +1,5 @@
1
+ @import url('./tooltips.css');
2
+
1
3
  .gv-karyotype-plugin .gv-karyotype-container {
2
4
  height: 50px;
3
5
  overflow: hidden;
File without changes
File without changes
File without changes