genoverse 3.2.0 → 4.0.0-beta1

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 (216) 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 +176 -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 +128 -97
  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 +649 -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/create-and-destroy.test.js +2 -2
  144. package/test/track-ordering.test.js +3 -2
  145. package/test/track_config/config-settings.test.js +1 -1
  146. package/test/utils.js +4 -2
  147. package/webpack.config.js +103 -34
  148. package/css/font-awesome.css +0 -3
  149. package/expanded.html +0 -120
  150. package/fontawesome/css/fontawesome.min.css +0 -5
  151. package/fontawesome/css/regular.min.css +0 -5
  152. package/fontawesome/css/solid.min.css +0 -5
  153. package/fontawesome/webfonts/fa-brands-400.ttf +0 -0
  154. package/fontawesome/webfonts/fa-brands-400.woff +0 -0
  155. package/fontawesome/webfonts/fa-brands-400.woff2 +0 -0
  156. package/fontawesome/webfonts/fa-regular-400.ttf +0 -0
  157. package/fontawesome/webfonts/fa-regular-400.woff +0 -0
  158. package/fontawesome/webfonts/fa-regular-400.woff2 +0 -0
  159. package/fontawesome/webfonts/fa-solid-900.ttf +0 -0
  160. package/fontawesome/webfonts/fa-solid-900.woff +0 -0
  161. package/fontawesome/webfonts/fa-solid-900.woff2 +0 -0
  162. package/help.pdf +0 -0
  163. package/index.js +0 -83
  164. package/js/Genoverse.js +0 -1681
  165. package/js/Track/Controller/Stranded.js +0 -73
  166. package/js/Track/Model/File/BAM.js +0 -44
  167. package/js/Track/Model/File/BED.js +0 -116
  168. package/js/Track/Model/File/GFF.js +0 -40
  169. package/js/Track/Model/File/VCF.js +0 -101
  170. package/js/Track/Model/File/WIG.js +0 -67
  171. package/js/Track/Model/File.js +0 -36
  172. package/js/Track/Model/Gene/Ensembl.js +0 -22
  173. package/js/Track/Model/Sequence/Ensembl.js +0 -4
  174. package/js/Track/Model/Transcript/Ensembl.js +0 -67
  175. package/js/Track/View/Gene.js +0 -6
  176. package/js/Track/View/Sequence/Variation.js +0 -115
  177. package/js/Track/View/Transcript/Ensembl.js +0 -12
  178. package/js/Track/View/Transcript.js +0 -28
  179. package/js/Track/library/File/BAM.js +0 -30
  180. package/js/Track/library/File/BED.js +0 -24
  181. package/js/Track/library/File/BIGBED.js +0 -47
  182. package/js/Track/library/File/BIGWIG.js +0 -52
  183. package/js/Track/library/File/GFF.js +0 -9
  184. package/js/Track/library/File/WIG.js +0 -5
  185. package/js/Track/library/Gene.js +0 -37
  186. package/js/Track/library/Graph/Bar.js +0 -235
  187. package/js/Track/library/Graph/Line.js +0 -296
  188. package/js/Track/library/Legend.js +0 -224
  189. package/js/Track/library/Static.js +0 -78
  190. package/js/Track.js +0 -632
  191. package/js/genoverse.min.js +0 -2
  192. package/js/genoverse.min.js.map +0 -1
  193. package/js/lib/BWReader.js +0 -578
  194. package/js/lib/Base.js +0 -145
  195. package/js/lib/VCFReader.js +0 -286
  196. package/js/lib/dalliance/js/bam.js +0 -494
  197. package/js/lib/dalliance/js/bin.js +0 -185
  198. package/js/lib/dalliance/js/das.js +0 -749
  199. package/js/lib/dalliance/js/utils.js +0 -370
  200. package/js/lib/dalliance-lib.js +0 -3594
  201. package/js/lib/dalliance-lib.min.js +0 -68
  202. package/js/lib/jDataView.js +0 -2
  203. package/js/lib/jParser.js +0 -192
  204. package/js/lib/jquery-ui.js +0 -8
  205. package/js/lib/jquery.js +0 -2
  206. package/js/lib/rtree.js +0 -1
  207. package/js/plugins/controlPanel.js +0 -395
  208. package/js/plugins/fileDrop.js +0 -62
  209. package/js/plugins/focusRegion.js +0 -12
  210. package/js/plugins/resizer.js +0 -45
  211. package/js/plugins/trackControls.js +0 -143
  212. package/utils/expandedTemplate.html +0 -46
  213. package/utils/git-hooks/post-commit +0 -9
  214. package/utils/git-hooks/pre-commit +0 -7
  215. package/utils/git-hooks/setup +0 -6
  216. 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.0-beta1",
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.6.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.5.3",
38
45
  "terser-webpack-plugin": "^5.3.0",
39
- "webpack": "^5.65.0",
40
- "webpack-cli": "^4.9.1"
46
+ "webpack": "^5.66.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