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.
- package/.eslintrc.js +93 -162
- package/.github/workflows/test.yml +9 -10
- package/.github/workflows/update-gh-pages.yml +33 -0
- package/LICENSE.TXT +2 -2
- package/README.md +174 -3
- package/{i → assets}/sort_handle.png +0 -0
- package/babel.config.js +19 -0
- package/dist/129.css +334 -0
- package/dist/129.css.map +1 -0
- package/dist/129.genoverse.js +2 -0
- package/dist/129.genoverse.js.map +1 -0
- package/dist/15d98c18221c8bcb2334.ttf +0 -0
- package/dist/166.css +2 -0
- package/dist/166.genoverse.js +1 -0
- package/dist/216.css +20 -0
- package/dist/216.css.map +1 -0
- package/dist/232.css +114 -0
- package/dist/232.css.map +1 -0
- package/dist/232.genoverse.js +2 -0
- package/dist/232.genoverse.js.map +1 -0
- package/dist/2e659e443f3e98569e9f.png +0 -0
- package/dist/394.css +114 -0
- package/dist/394.css.map +1 -0
- package/dist/394.genoverse.js +2 -0
- package/dist/394.genoverse.js.map +1 -0
- package/dist/469.css +24 -0
- package/dist/469.css.map +1 -0
- package/dist/469.genoverse.js +2 -0
- package/dist/469.genoverse.js.map +1 -0
- package/dist/4896d4b04430cc3dfb06.woff2 +0 -0
- package/dist/530.css +39 -0
- package/dist/530.css.map +1 -0
- package/dist/530.genoverse.js +2 -0
- package/dist/530.genoverse.js.map +1 -0
- package/dist/547.css +469 -0
- package/dist/547.css.map +1 -0
- package/dist/547.genoverse.js +1 -0
- package/dist/729.css +315 -0
- package/dist/729.css.map +1 -0
- package/dist/79da213423ac0def2058.ttf +0 -0
- package/dist/804.genoverse.js +2 -0
- package/dist/804.genoverse.js.map +1 -0
- package/dist/842.genoverse.js +2 -0
- package/dist/842.genoverse.js.map +1 -0
- package/dist/893.genoverse.js +2 -0
- package/dist/893.genoverse.js.map +1 -0
- package/dist/949.css +315 -0
- package/dist/949.css.map +1 -0
- package/dist/949.genoverse.js +2 -0
- package/dist/949.genoverse.js.map +1 -0
- package/dist/952.css +315 -0
- package/dist/952.css.map +1 -0
- package/dist/952.genoverse.js +2 -0
- package/dist/952.genoverse.js.map +1 -0
- package/dist/d79c2ec96ab9ff1161a2.woff2 +0 -0
- package/dist/genoverse.js +2 -0
- package/dist/genoverse.js.map +1 -0
- package/index.html +13 -14
- package/jest.config.js +5 -0
- package/jest.setup.js +13 -0
- package/package.json +29 -12
- package/{css → src/css}/controlPanel.css +0 -0
- package/{css → src/css}/fileDrop.css +0 -0
- package/src/css/fontawesome.css +3 -0
- package/{css → src/css}/fullscreen.css +0 -0
- package/{css → src/css}/genoverse.css +1 -1
- package/{css → src/css}/karyotype.css +2 -0
- package/{css → src/css}/resizer.css +0 -0
- package/{css → src/css}/tooltips.css +0 -0
- package/{css → src/css}/trackControls.css +0 -0
- package/src/js/Genoverse.js +1747 -0
- package/{js → src/js}/Track/Controller/Sequence.js +6 -4
- package/src/js/Track/Controller/Stranded.js +83 -0
- package/{js → src/js}/Track/Controller.js +201 -160
- package/src/js/Track/Model/File/BAM.js +47 -0
- package/src/js/Track/Model/File/BED.js +122 -0
- package/src/js/Track/Model/File/GFF.js +42 -0
- package/src/js/Track/Model/File/VCF.js +109 -0
- package/src/js/Track/Model/File/WIG.js +82 -0
- package/src/js/Track/Model/File.js +36 -0
- package/src/js/Track/Model/Gene/Ensembl.js +24 -0
- package/{js → src/js}/Track/Model/Gene.js +3 -1
- package/src/js/Track/Model/Sequence/Ensembl.js +6 -0
- package/{js → src/js}/Track/Model/Sequence/Fasta.js +24 -17
- package/{js → src/js}/Track/Model/Sequence.js +10 -7
- package/{js → src/js}/Track/Model/SequenceVariation.js +17 -11
- package/{js → src/js}/Track/Model/Stranded.js +11 -8
- package/src/js/Track/Model/Transcript/Ensembl.js +73 -0
- package/{js → src/js}/Track/Model/Transcript.js +3 -1
- package/{js → src/js}/Track/Model.js +125 -93
- package/{js → src/js}/Track/View/Gene/Ensembl.js +6 -4
- package/src/js/Track/View/Gene.js +8 -0
- package/{js → src/js}/Track/View/Sequence.js +18 -22
- package/src/js/Track/View/SequenceVariation.js +117 -0
- package/src/js/Track/View/Transcript/Ensembl.js +17 -0
- package/src/js/Track/View/Transcript.js +32 -0
- package/{js → src/js}/Track/View.js +200 -159
- package/{js → src/js}/Track/library/Chromosome.js +18 -13
- package/src/js/Track/library/File/BAM.js +34 -0
- package/src/js/Track/library/File/BED.js +27 -0
- package/src/js/Track/library/File/BIGBED.js +51 -0
- package/src/js/Track/library/File/BIGWIG.js +54 -0
- package/src/js/Track/library/File/GFF.js +10 -0
- package/{js → src/js}/Track/library/File/VCF.js +29 -22
- package/src/js/Track/library/File/WIG.js +8 -0
- package/{js → src/js}/Track/library/File.js +4 -2
- package/src/js/Track/library/Gene.js +44 -0
- package/src/js/Track/library/Graph/Bar.js +263 -0
- package/src/js/Track/library/Graph/Line.js +335 -0
- package/{js → src/js}/Track/library/Graph.js +137 -114
- package/{js → src/js}/Track/library/HighlightRegion.js +118 -93
- package/src/js/Track/library/Legend.js +258 -0
- package/{js → src/js}/Track/library/Scalebar.js +69 -49
- package/{js → src/js}/Track/library/Scaleline.js +29 -27
- package/src/js/Track/library/Static.js +82 -0
- package/{js → src/js}/Track/library/dbSNP.js +47 -50
- package/src/js/Track.js +651 -0
- package/{js → src/js}/genomes/grch37.js +52 -52
- package/{js → src/js}/genomes/grch38.js +52 -52
- package/src/js/lib/BWReader.js +562 -0
- package/src/js/lib/VCFReader.js +296 -0
- package/src/js/lib/dalliance/bam.js +517 -0
- package/src/js/lib/dalliance/bin.js +317 -0
- package/src/js/lib/dalliance/jszlib-inflate.js +2159 -0
- package/src/js/lib/dalliance/lh3utils.js +105 -0
- package/src/js/lib/dalliance/sha1.js +334 -0
- package/src/js/lib/import-tracks.js +42 -0
- package/{js/lib → src/js/lib/jquery-plugins}/jquery.mousehold.js +0 -0
- package/{js/lib → src/js/lib/jquery-plugins}/jquery.mousewheel.js +0 -0
- package/{js/lib → src/js/lib/jquery-plugins}/jquery.tipsy.js +0 -0
- package/src/js/lib/jquery.js +26 -0
- package/src/js/lib/polyfills.js +11 -0
- package/src/js/lib/wrap-functions.js +88 -0
- package/src/js/plugins/controlPanel.js +388 -0
- package/src/js/plugins/fileDrop.js +81 -0
- package/src/js/plugins/focusRegion.js +13 -0
- package/{js → src/js}/plugins/fullscreen.js +18 -14
- package/{js → src/js}/plugins/karyotype.js +51 -45
- package/src/js/plugins/resizer.js +52 -0
- package/{js → src/js}/plugins/tooltips.js +31 -29
- package/src/js/plugins/trackControls.js +159 -0
- package/test/View/render-legends.test.js +1 -1
- package/test/change-width.test.js +71 -0
- package/test/create-and-destroy.test.js +2 -2
- package/test/track-ordering.test.js +3 -2
- package/test/track_config/config-settings.test.js +1 -1
- package/test/utils.js +4 -2
- package/webpack.config.js +103 -34
- package/css/font-awesome.css +0 -3
- package/expanded.html +0 -120
- package/fontawesome/css/fontawesome.min.css +0 -5
- package/fontawesome/css/regular.min.css +0 -5
- package/fontawesome/css/solid.min.css +0 -5
- package/fontawesome/webfonts/fa-brands-400.ttf +0 -0
- package/fontawesome/webfonts/fa-brands-400.woff +0 -0
- package/fontawesome/webfonts/fa-brands-400.woff2 +0 -0
- package/fontawesome/webfonts/fa-regular-400.ttf +0 -0
- package/fontawesome/webfonts/fa-regular-400.woff +0 -0
- package/fontawesome/webfonts/fa-regular-400.woff2 +0 -0
- package/fontawesome/webfonts/fa-solid-900.ttf +0 -0
- package/fontawesome/webfonts/fa-solid-900.woff +0 -0
- package/fontawesome/webfonts/fa-solid-900.woff2 +0 -0
- package/help.pdf +0 -0
- package/index.js +0 -83
- package/js/Genoverse.js +0 -1681
- package/js/Track/Controller/Stranded.js +0 -73
- package/js/Track/Model/File/BAM.js +0 -44
- package/js/Track/Model/File/BED.js +0 -116
- package/js/Track/Model/File/GFF.js +0 -40
- package/js/Track/Model/File/VCF.js +0 -101
- package/js/Track/Model/File/WIG.js +0 -67
- package/js/Track/Model/File.js +0 -36
- package/js/Track/Model/Gene/Ensembl.js +0 -22
- package/js/Track/Model/Sequence/Ensembl.js +0 -4
- package/js/Track/Model/Transcript/Ensembl.js +0 -67
- package/js/Track/View/Gene.js +0 -6
- package/js/Track/View/Sequence/Variation.js +0 -115
- package/js/Track/View/Transcript/Ensembl.js +0 -12
- package/js/Track/View/Transcript.js +0 -28
- package/js/Track/library/File/BAM.js +0 -30
- package/js/Track/library/File/BED.js +0 -24
- package/js/Track/library/File/BIGBED.js +0 -47
- package/js/Track/library/File/BIGWIG.js +0 -52
- package/js/Track/library/File/GFF.js +0 -9
- package/js/Track/library/File/WIG.js +0 -5
- package/js/Track/library/Gene.js +0 -37
- package/js/Track/library/Graph/Bar.js +0 -235
- package/js/Track/library/Graph/Line.js +0 -296
- package/js/Track/library/Legend.js +0 -224
- package/js/Track/library/Static.js +0 -78
- package/js/Track.js +0 -632
- package/js/genoverse.min.js +0 -2
- package/js/genoverse.min.js.map +0 -1
- package/js/lib/BWReader.js +0 -578
- package/js/lib/Base.js +0 -145
- package/js/lib/VCFReader.js +0 -286
- package/js/lib/dalliance/js/bam.js +0 -494
- package/js/lib/dalliance/js/bin.js +0 -185
- package/js/lib/dalliance/js/das.js +0 -749
- package/js/lib/dalliance/js/utils.js +0 -370
- package/js/lib/dalliance-lib.js +0 -3594
- package/js/lib/dalliance-lib.min.js +0 -68
- package/js/lib/jDataView.js +0 -2
- package/js/lib/jParser.js +0 -192
- package/js/lib/jquery-ui.js +0 -8
- package/js/lib/jquery.js +0 -2
- package/js/lib/rtree.js +0 -1
- package/js/plugins/controlPanel.js +0 -395
- package/js/plugins/fileDrop.js +0 -62
- package/js/plugins/focusRegion.js +0 -12
- package/js/plugins/resizer.js +0 -45
- package/js/plugins/trackControls.js +0 -143
- package/utils/expandedTemplate.html +0 -46
- package/utils/git-hooks/post-commit +0 -9
- package/utils/git-hooks/pre-commit +0 -7
- package/utils/git-hooks/setup +0 -6
- package/utils/makeExpanded.js +0 -19
|
@@ -1,395 +0,0 @@
|
|
|
1
|
-
Genoverse.Plugins.controlPanel = function (pluginConf) {
|
|
2
|
-
this.controls = [
|
|
3
|
-
// Scroll left/right
|
|
4
|
-
{
|
|
5
|
-
name : 'Scroll left and right by pressing and holding these buttons',
|
|
6
|
-
buttons : [{
|
|
7
|
-
name : 'Scroll left',
|
|
8
|
-
icon : '<i class="fas fa-chevron-left"></i>',
|
|
9
|
-
'class' : 'gv-scroll-left'
|
|
10
|
-
}, {
|
|
11
|
-
name : 'Scroll right',
|
|
12
|
-
icon : '<i class="fas fa-chevron-right"></i>',
|
|
13
|
-
'class' : 'gv-scroll-right'
|
|
14
|
-
}],
|
|
15
|
-
init: function (browser) {
|
|
16
|
-
var el = $(this);
|
|
17
|
-
|
|
18
|
-
el.find('.gv-scroll-left, .gv-scroll-right').on({
|
|
19
|
-
mousedown : function () { browser.startDragScroll(); },
|
|
20
|
-
mouseup : function () { browser.stopDragScroll(); }
|
|
21
|
-
});
|
|
22
|
-
|
|
23
|
-
el.find('.gv-scroll-left').mousehold(50, function () {
|
|
24
|
-
browser.move(browser.scrollDelta);
|
|
25
|
-
});
|
|
26
|
-
|
|
27
|
-
el.find('.gv-scroll-right').mousehold(50, function () {
|
|
28
|
-
browser.move(-browser.scrollDelta);
|
|
29
|
-
});
|
|
30
|
-
}
|
|
31
|
-
},
|
|
32
|
-
|
|
33
|
-
// Zoom in/out
|
|
34
|
-
{
|
|
35
|
-
name : 'Zoom-in and zoom-out',
|
|
36
|
-
buttons : [{
|
|
37
|
-
name : 'Zoom in',
|
|
38
|
-
icon : '<i class="fas fa-search-plus"></i>',
|
|
39
|
-
'class' : 'gv-zoom-in',
|
|
40
|
-
action : function (browser) { browser.zoomIn(); }
|
|
41
|
-
}, {
|
|
42
|
-
name : 'Zoom out',
|
|
43
|
-
icon : '<i class="fas fa-search-minus"></i>',
|
|
44
|
-
'class' : 'gv-zoom-out',
|
|
45
|
-
action : function (browser) { browser.zoomOut(); }
|
|
46
|
-
}]
|
|
47
|
-
},
|
|
48
|
-
|
|
49
|
-
// Toogle drag action
|
|
50
|
-
{
|
|
51
|
-
name : 'Toggle your mouse drag action between scroll left/right and select region',
|
|
52
|
-
buttons : [{
|
|
53
|
-
name : 'Mouse drag action to scroll the browser left or right',
|
|
54
|
-
icon : '<i class="fas fa-arrows-alt-h"></i>',
|
|
55
|
-
'class' : 'gv-drag-scroll',
|
|
56
|
-
action : function (browser) {
|
|
57
|
-
browser.setDragAction('scroll');
|
|
58
|
-
$(this).addClass('gv-active').siblings().removeClass('gv-active');
|
|
59
|
-
}
|
|
60
|
-
}, {
|
|
61
|
-
name : 'Mouse drag action to select a region',
|
|
62
|
-
icon : '<i></i>',
|
|
63
|
-
'class' : 'gv-drag-select',
|
|
64
|
-
action : function (browser) {
|
|
65
|
-
browser.setDragAction('select');
|
|
66
|
-
$(this).addClass('gv-active').siblings().removeClass('gv-active');
|
|
67
|
-
}
|
|
68
|
-
}],
|
|
69
|
-
init: function (browser) {
|
|
70
|
-
$(this).find('.gv-drag-' + browser.dragAction).addClass('gv-active').siblings().removeClass('gv-active');
|
|
71
|
-
}
|
|
72
|
-
},
|
|
73
|
-
|
|
74
|
-
// Toogle wheel action
|
|
75
|
-
{
|
|
76
|
-
name : 'Toggle your mouse wheel action between zoom in/out and default page scroll',
|
|
77
|
-
buttons : [{
|
|
78
|
-
name : 'Mouse wheel action to scroll the page up and down',
|
|
79
|
-
icon : '<i class="fas fa-arrows-alt-v"></i>',
|
|
80
|
-
'class' : 'gv-wheel-off',
|
|
81
|
-
action : function (browser) {
|
|
82
|
-
browser.setWheelAction('off');
|
|
83
|
-
$(this).addClass('gv-active').siblings().removeClass('gv-active');
|
|
84
|
-
}
|
|
85
|
-
}, {
|
|
86
|
-
name : 'Mouse wheel to zoom in and out',
|
|
87
|
-
icon : '±',
|
|
88
|
-
'class' : 'gv-wheel-zoom',
|
|
89
|
-
action : function (browser) {
|
|
90
|
-
browser.setWheelAction('zoom');
|
|
91
|
-
$(this).addClass('gv-active').siblings().removeClass('gv-active');
|
|
92
|
-
}
|
|
93
|
-
}],
|
|
94
|
-
init: function (browser) {
|
|
95
|
-
$(this).find('.gv-wheel-' + browser.wheelAction).addClass('gv-active').siblings().removeClass('gv-active');
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
];
|
|
99
|
-
|
|
100
|
-
if (this.saveable) {
|
|
101
|
-
this.controls.push({
|
|
102
|
-
icon : '<i class="fas fa-undo"></i>',
|
|
103
|
-
name : 'Reset tracks and configuration',
|
|
104
|
-
action : function (browser) { browser.resetConfig(); }
|
|
105
|
-
});
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
this.on({
|
|
109
|
-
beforeInit: function () {
|
|
110
|
-
var browser = this;
|
|
111
|
-
|
|
112
|
-
if (!this.tracksLibrary) {
|
|
113
|
-
this.tracksLibrary = $.grep(this.tracks, function (track) { return track.prototype.name; });
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
var panel = $(
|
|
117
|
-
'<table cellspacing=0 cellpadding=0 class="gv">' +
|
|
118
|
-
' <tr>' +
|
|
119
|
-
' <td class="gv-panel gv-panel-left"></td>' +
|
|
120
|
-
' <td class="gv-canvas-container"></td>' +
|
|
121
|
-
' <td class="gv-panel gv-panel-right"></td>' +
|
|
122
|
-
' </tr>' +
|
|
123
|
-
'</table>'
|
|
124
|
-
).appendTo(this.container).find('.gv-panel-right');
|
|
125
|
-
|
|
126
|
-
this.controlPanel = panel;
|
|
127
|
-
this.superContainer = this.container;
|
|
128
|
-
this.container = $('.gv-canvas-container', this.container);
|
|
129
|
-
|
|
130
|
-
for (var i = 0; i < browser.controls.length; i++) {
|
|
131
|
-
(function (control) {
|
|
132
|
-
var buttonSet = $('<div class="gv-button-set">').attr('title', control.name).appendTo(browser.superContainer.find('.gv-panel-right'));
|
|
133
|
-
var buttons = control.buttons || [ control ];
|
|
134
|
-
|
|
135
|
-
$.each(buttons, function (j, button) {
|
|
136
|
-
var el = $('<button>' + button.icon + '</button>').addClass(button.class).attr('title', button.name).appendTo(buttonSet);
|
|
137
|
-
|
|
138
|
-
if (button.action) {
|
|
139
|
-
el.on('click', function () {
|
|
140
|
-
button.action.call(this, browser);
|
|
141
|
-
});
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
if (button.init && button !== control) {
|
|
145
|
-
button.init.call(el[0], browser);
|
|
146
|
-
}
|
|
147
|
-
});
|
|
148
|
-
|
|
149
|
-
if (control.init) {
|
|
150
|
-
control.init.call(buttonSet, browser);
|
|
151
|
-
}
|
|
152
|
-
}(browser.controls[i]));
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
this.superContainer.width(this.width);
|
|
156
|
-
|
|
157
|
-
// ESC key to toggle crosshair select to drag mode and close menus
|
|
158
|
-
$(document).on('keydown', function (e) {
|
|
159
|
-
if (e.keyCode === 27) {
|
|
160
|
-
if (panel.find('button.gv-drag-select').hasClass('gv-active')) {
|
|
161
|
-
panel.find('button.gv-drag-scroll').trigger('click');
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
$('.gv-menu .gv-close').trigger('click');
|
|
165
|
-
}
|
|
166
|
-
});
|
|
167
|
-
},
|
|
168
|
-
|
|
169
|
-
afterInit: function () {
|
|
170
|
-
var browser = this;
|
|
171
|
-
var tracksButton = $('<button class="gv-tracks-library-button" title="Tracks menu"><i class="fas fa-bars"></i> Tracks</button>').on('click', function () {
|
|
172
|
-
var button = this;
|
|
173
|
-
|
|
174
|
-
function getTrackTags(track, tags) {
|
|
175
|
-
if (track.constructor && track.constructor.ancestor && track.constructor.ancestor.prototype) {
|
|
176
|
-
tags = getTrackTags(track.constructor.ancestor.prototype, tags.concat(track.constructor.ancestor.prototype.tags || []));
|
|
177
|
-
}
|
|
178
|
-
|
|
179
|
-
return tags;
|
|
180
|
-
}
|
|
181
|
-
|
|
182
|
-
if ($(this).hasClass('gv-active')) {
|
|
183
|
-
$('.gv-menu.gv-tracks-menu .gv-close').trigger('click');
|
|
184
|
-
$(this).removeClass('gv-active');
|
|
185
|
-
} else {
|
|
186
|
-
var menu = $(this).data('menu');
|
|
187
|
-
|
|
188
|
-
if (menu) {
|
|
189
|
-
menu.show();
|
|
190
|
-
} else {
|
|
191
|
-
menu = browser.makeMenu({
|
|
192
|
-
'Currently enabled tracks:' : 'Available tracks:',
|
|
193
|
-
'<div class="gv-current-tracks"></div>' : '<input placeholder="Search"><div class="gv-available-tracks"></div>'
|
|
194
|
-
}).addClass('gv-tracks-menu');
|
|
195
|
-
|
|
196
|
-
$('input[placeholder=Search]', menu).on('keyup', function () {
|
|
197
|
-
var str = this.value.toLowerCase();
|
|
198
|
-
|
|
199
|
-
$('.gv-tracks-library-item', menu).each(function () {
|
|
200
|
-
var track = $(this).data('track');
|
|
201
|
-
var match = false;
|
|
202
|
-
|
|
203
|
-
if (track.name && track.name.toLowerCase().indexOf(str) >= 0) {
|
|
204
|
-
match = true;
|
|
205
|
-
} else {
|
|
206
|
-
var tags = getTrackTags(track, []).concat(track.tags || []);
|
|
207
|
-
|
|
208
|
-
for (var i = 0; i < tags.length; i++) {
|
|
209
|
-
if (tags[i].toLowerCase().indexOf(str) >= 0) {
|
|
210
|
-
match = true;
|
|
211
|
-
break;
|
|
212
|
-
}
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
|
|
216
|
-
$(this)[match ? 'removeClass' : 'addClass']('gv-hide');
|
|
217
|
-
});
|
|
218
|
-
|
|
219
|
-
$('.gv-tracks-library-category', menu).each(function () {
|
|
220
|
-
var visibleTracks = $(this).children('.gv-tracks-library-item:not(.gv-hide)');
|
|
221
|
-
|
|
222
|
-
$(this)[visibleTracks.length ? 'removeClass' : 'addClass']('gv-hide');
|
|
223
|
-
});
|
|
224
|
-
});
|
|
225
|
-
|
|
226
|
-
$('.gv-close', menu).on('click', function () {
|
|
227
|
-
$(button).removeClass('gv-active');
|
|
228
|
-
});
|
|
229
|
-
|
|
230
|
-
var availableTracks = $('.gv-available-tracks', menu);
|
|
231
|
-
var currentTracks = $('.gv-current-tracks', menu).before('<div class="gv-current-tracks-instructions">Drag and drop to reorder</div>').data({
|
|
232
|
-
reload : function () { $(this).empty().data('listTracks')(); },
|
|
233
|
-
listTracks : function () {
|
|
234
|
-
for (var i = 0; i < browser.tracks.length; i++) {
|
|
235
|
-
if (browser.tracks[i].name && !(browser.tracks[i].removable === false && browser.tracks[i].unsortable) && !browser.tracks[i].parentTrack && !browser.tracks[i].lockToTrack) {
|
|
236
|
-
(function (track) {
|
|
237
|
-
var el = $('<div class="gv-tracks-menu-track">')
|
|
238
|
-
.append('<span class="gv-tracks-menu-track-name" title="' + track.name + '">' + track.defaultName + '</span>')
|
|
239
|
-
.appendTo(currentTracks)
|
|
240
|
-
.data('track', track)
|
|
241
|
-
.addClass(track.unsortable ? 'gv-unsortable' : '');
|
|
242
|
-
|
|
243
|
-
if (track.removable === false) {
|
|
244
|
-
el.prepend('<i class="gv-remove-track gv-menu-button fas fa-circle">');
|
|
245
|
-
} else {
|
|
246
|
-
el.prepend($('<i class="gv-remove-track gv-menu-button fas fa-times-circle">').on('click', function () { track.remove(); }));
|
|
247
|
-
}
|
|
248
|
-
|
|
249
|
-
var trackNameEl = el.find('.gv-tracks-menu-track-name').tipsy({ gravity: 'w', trigger: 'manual' }).on('mouseenter', function () {
|
|
250
|
-
var tip = $(this).tipsy('show').data('tipsy').$tip;
|
|
251
|
-
|
|
252
|
-
if (tip) {
|
|
253
|
-
tip.css('zIndex', 1002);
|
|
254
|
-
}
|
|
255
|
-
}).on('mouseleave', function () {
|
|
256
|
-
$(this).tipsy('hide');
|
|
257
|
-
});
|
|
258
|
-
|
|
259
|
-
if (track.name === track.defaultName) {
|
|
260
|
-
trackNameEl.tipsy('disable');
|
|
261
|
-
}
|
|
262
|
-
}(browser.tracks[i]));
|
|
263
|
-
}
|
|
264
|
-
}
|
|
265
|
-
}
|
|
266
|
-
}).sortable({
|
|
267
|
-
items : 'div:not(.gv-unsortable)',
|
|
268
|
-
cursor : 'move',
|
|
269
|
-
axis : 'y',
|
|
270
|
-
handle : 'span',
|
|
271
|
-
update : $.proxy(browser.updateTrackOrder, browser),
|
|
272
|
-
start : function () {
|
|
273
|
-
currentTracks.find('.gv-tracks-menu-track-name').each(function () { $(this).tipsy('hide').tipsy('disable'); });
|
|
274
|
-
},
|
|
275
|
-
stop: function () {
|
|
276
|
-
currentTracks.find('.gv-tracks-menu-track-name').each(function () { $(this).tipsy('enable'); });
|
|
277
|
-
}
|
|
278
|
-
});
|
|
279
|
-
|
|
280
|
-
currentTracks.data('listTracks')();
|
|
281
|
-
|
|
282
|
-
if (browser.saveable) {
|
|
283
|
-
$('<div class="gv-tracks-menu-reset gv-menu-button"><i class="fas fa-undo"></i> Reset tracks and configuration</div>').insertAfter(currentTracks).on('click', function (e) {
|
|
284
|
-
e.preventDefault();
|
|
285
|
-
browser.resetConfig();
|
|
286
|
-
});
|
|
287
|
-
}
|
|
288
|
-
|
|
289
|
-
if (browser.tracksLibrary && browser.tracksLibrary.length) {
|
|
290
|
-
var tracksLibraryCategories = browser.tracksLibrary.filter(function (track) {
|
|
291
|
-
return track.prototype.name && track.prototype.removable !== false;
|
|
292
|
-
}).reduce(
|
|
293
|
-
function (acc, track) {
|
|
294
|
-
var categoryName = track.prototype.category || '';
|
|
295
|
-
|
|
296
|
-
acc[categoryName] = acc[categoryName] || [];
|
|
297
|
-
acc[categoryName].push([ track.prototype.name.toLowerCase(), track ]);
|
|
298
|
-
|
|
299
|
-
return acc;
|
|
300
|
-
},
|
|
301
|
-
{}
|
|
302
|
-
);
|
|
303
|
-
|
|
304
|
-
var tracksLibraryCategoryOrder = ((pluginConf && pluginConf.tracksLibraryCategoryOrder) || []).reduce(
|
|
305
|
-
function (acc, categoryName, i) {
|
|
306
|
-
acc[categoryName] = i + 1;
|
|
307
|
-
return acc;
|
|
308
|
-
},
|
|
309
|
-
{}
|
|
310
|
-
);
|
|
311
|
-
|
|
312
|
-
Object.keys(tracksLibraryCategories).sort(function (a, b) {
|
|
313
|
-
return (Boolean(b) - Boolean(a)) || (tracksLibraryCategoryOrder[a] - tracksLibraryCategoryOrder[b]) || a.localeCompare(b);
|
|
314
|
-
}).forEach(function (categoryName, i, allCategoryNames) {
|
|
315
|
-
var parentEl = (
|
|
316
|
-
allCategoryNames.length > 1
|
|
317
|
-
? $('<div class="gv-tracks-library-category">').append(
|
|
318
|
-
$('<div class="gv-tracks-library-category-header">').html(categoryName || 'Other')
|
|
319
|
-
).appendTo(availableTracks)
|
|
320
|
-
: availableTracks
|
|
321
|
-
);
|
|
322
|
-
|
|
323
|
-
tracksLibraryCategories[categoryName].sort(function (a, b) {
|
|
324
|
-
return a[0].localeCompare(b[0]);
|
|
325
|
-
}).forEach(
|
|
326
|
-
function (row) {
|
|
327
|
-
var track = row[1];
|
|
328
|
-
|
|
329
|
-
$('<div class="gv-tracks-library-item">').append(
|
|
330
|
-
$('<i class="gv-add-track gv-menu-button fas fa-plus-circle">').on('click', function () {
|
|
331
|
-
browser.trackIds = browser.trackIds || {};
|
|
332
|
-
browser.trackIds[track.prototype.id] = browser.trackIds[track.prototype.id] || 1;
|
|
333
|
-
|
|
334
|
-
browser.addTrack(track.extend({ id: track.prototype.id + (browser.tracksById[track.prototype.id] ? browser.trackIds[track.prototype.id]++ : '') }));
|
|
335
|
-
})
|
|
336
|
-
).append('<span>' + track.prototype.name + '</span>').appendTo(parentEl).data('track', track.prototype);
|
|
337
|
-
}
|
|
338
|
-
);
|
|
339
|
-
});
|
|
340
|
-
}
|
|
341
|
-
|
|
342
|
-
menu.css({ left: '50%', marginLeft: menu.width() / -2 });
|
|
343
|
-
|
|
344
|
-
$(this).data('menu', menu);
|
|
345
|
-
}
|
|
346
|
-
|
|
347
|
-
$(this).addClass('gv-active');
|
|
348
|
-
}
|
|
349
|
-
});
|
|
350
|
-
|
|
351
|
-
this.labelContainer.prepend(
|
|
352
|
-
$('<li class="gv-unsortable">').append(
|
|
353
|
-
$('<div class="gv-button-set" title="Tracks menu">').append(tracksButton)
|
|
354
|
-
)
|
|
355
|
-
);
|
|
356
|
-
},
|
|
357
|
-
|
|
358
|
-
afterAddDomElements: function () {
|
|
359
|
-
this.wrapper.after('<div class="gv-powered-by">Powered by <a target="_blank" href="https://wtsi-web.github.io/Genoverse/">Genoverse</a></div>');
|
|
360
|
-
this.superContainer.find('.gv-panel-left').append(this.labelContainer);
|
|
361
|
-
},
|
|
362
|
-
|
|
363
|
-
'afterAddTracks afterRemoveTracks': function () {
|
|
364
|
-
var currentTracks = this.superContainer.find('.gv-tracks-menu .gv-current-tracks');
|
|
365
|
-
|
|
366
|
-
if (currentTracks.length) {
|
|
367
|
-
currentTracks.data('reload').call(currentTracks);
|
|
368
|
-
}
|
|
369
|
-
}
|
|
370
|
-
});
|
|
371
|
-
|
|
372
|
-
this.on({
|
|
373
|
-
afterSetName: function (name) {
|
|
374
|
-
var track = this.track;
|
|
375
|
-
|
|
376
|
-
if (track && track.browser) {
|
|
377
|
-
var menu = track.browser.superContainer.find('.gv-tracks-library-button').data('menu');
|
|
378
|
-
|
|
379
|
-
if (menu) {
|
|
380
|
-
menu.find('.gv-tracks-menu-track').filter(function () {
|
|
381
|
-
return $(this).data('track') === track;
|
|
382
|
-
}).children('.gv-tracks-menu-track-name').attr('title', name).each(function () {
|
|
383
|
-
if (name === track.defaultName) {
|
|
384
|
-
$(this).tipsy('hide').tipsy('disable');
|
|
385
|
-
} else {
|
|
386
|
-
$(this).tipsy('enable');
|
|
387
|
-
}
|
|
388
|
-
});
|
|
389
|
-
}
|
|
390
|
-
}
|
|
391
|
-
}
|
|
392
|
-
}, 'tracks');
|
|
393
|
-
};
|
|
394
|
-
|
|
395
|
-
Genoverse.Plugins.controlPanel.requires = 'karyotype';
|
package/js/plugins/fileDrop.js
DELETED
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
Genoverse.Plugins.fileDrop = function () {
|
|
2
|
-
this.on('afterInit', function () {
|
|
3
|
-
var browser = this;
|
|
4
|
-
var wrapper = this.wrapper;
|
|
5
|
-
|
|
6
|
-
$(window).on('dragenter', function (e) {
|
|
7
|
-
var dataTransfer = e.originalEvent.dataTransfer;
|
|
8
|
-
|
|
9
|
-
if (dataTransfer && dataTransfer.types && (dataTransfer.types[0] === 'Files' || dataTransfer.types[1] === 'Files' || dataTransfer.types[2] === 'Files') && !$('.gv-file-drop-total-overlay').length) {
|
|
10
|
-
var fileDropDiv = $('<div class="gv-file-drop">').appendTo(wrapper);
|
|
11
|
-
var totalDropOverlay = $('<div class="gv-file-drop-total-overlay">').prependTo('body');
|
|
12
|
-
|
|
13
|
-
var dragleave = function () {
|
|
14
|
-
fileDropDiv.remove();
|
|
15
|
-
totalDropOverlay.remove();
|
|
16
|
-
};
|
|
17
|
-
|
|
18
|
-
totalDropOverlay.on('dragenter', function (ev) { ev.preventDefault(); ev.stopPropagation(); });
|
|
19
|
-
totalDropOverlay.on('dragover', function (ev) { ev.preventDefault(); ev.stopPropagation(); });
|
|
20
|
-
totalDropOverlay.on('dragleave', dragleave);
|
|
21
|
-
totalDropOverlay.on('drop', function (ev) {
|
|
22
|
-
dragleave();
|
|
23
|
-
ev.preventDefault();
|
|
24
|
-
ev.stopPropagation();
|
|
25
|
-
|
|
26
|
-
// Sort in order to ensure that .bam files are before their .bam.bai files
|
|
27
|
-
var files = $.map(ev.originalEvent.dataTransfer.files, function (f) { return f; }).sort(function (a, b) { return a.name.localeCompare(b.name); });
|
|
28
|
-
|
|
29
|
-
for (var i = 0; i < files.length; i++) {
|
|
30
|
-
var file = files[i];
|
|
31
|
-
var parts = file.name.split('.').reverse();
|
|
32
|
-
var gz = parts[0] === 'gz';
|
|
33
|
-
var ext = parts[gz ? 1 : 0];
|
|
34
|
-
var track = Genoverse.Track.File[ext.toUpperCase()];
|
|
35
|
-
var indexFile;
|
|
36
|
-
|
|
37
|
-
if (typeof track === 'undefined') {
|
|
38
|
-
return;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
if (track.prototype.indexExt && (files[i + 1] || {}).name === file.name + track.prototype.indexExt) {
|
|
42
|
-
indexFile = files[++i];
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
track = track.extend({
|
|
46
|
-
name : file.name,
|
|
47
|
-
info : 'Local file `' + file.name + '`, size: ' + file.size + ' bytes',
|
|
48
|
-
isLocal : true,
|
|
49
|
-
dataFile : file,
|
|
50
|
-
indexFile : indexFile,
|
|
51
|
-
gz : gz
|
|
52
|
-
});
|
|
53
|
-
|
|
54
|
-
browser.addTrack(track, browser.tracks.length - 1);
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
return false;
|
|
58
|
-
});
|
|
59
|
-
}
|
|
60
|
-
});
|
|
61
|
-
});
|
|
62
|
-
};
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
Genoverse.Plugins.focusRegion = function () {
|
|
2
|
-
this.controls.push({
|
|
3
|
-
icon : '<i class="fas fa-map-marker-alt"></i>',
|
|
4
|
-
'class' : 'gv-button-large',
|
|
5
|
-
name : 'Reset focus to ' + (this.focusRegion && this.focusRegion.name ? this.focusRegion.name : this.chr + ':' + this.start + '-' + this.end),
|
|
6
|
-
action : function (browser) { browser.moveTo(browser.focusRegion.chr, browser.focusRegion.start, browser.focusRegion.end, true); },
|
|
7
|
-
init : function (browser) { browser.focusRegion = browser.focusRegion || { chr: browser.chr, start: browser.start, end: browser.end }; }
|
|
8
|
-
});
|
|
9
|
-
};
|
|
10
|
-
|
|
11
|
-
Genoverse.Plugins.focusRegion.requires = 'controlPanel';
|
|
12
|
-
Genoverse.Plugins.focusRegion.noCSS = true;
|
package/js/plugins/resizer.js
DELETED
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
Genoverse.Plugins.resizer = function () {
|
|
2
|
-
this.on('afterSetMVC', 'tracks', function () {
|
|
3
|
-
if (this.prop('resizable') !== true) {
|
|
4
|
-
return;
|
|
5
|
-
}
|
|
6
|
-
|
|
7
|
-
var track = this;
|
|
8
|
-
var controller = this.controller;
|
|
9
|
-
var resizer = this.prop('resizer');
|
|
10
|
-
var height = this.prop('height');
|
|
11
|
-
|
|
12
|
-
if (!resizer) {
|
|
13
|
-
resizer = this.prop('resizer', $('<div class="gv-resizer gv-static"><div class="gv-handle"></div></div>').appendTo(track.prop('container')).draggable({
|
|
14
|
-
axis : 'y',
|
|
15
|
-
start : function () { $('body').addClass('gv-dragging'); },
|
|
16
|
-
stop : function (e, ui) {
|
|
17
|
-
$('body').removeClass('gv-dragging');
|
|
18
|
-
controller.resize(track.prop('height') + ui.position.top - ui.originalPosition.top, true);
|
|
19
|
-
$(this).css({ top: 'auto', bottom: 0 }); // returns the resizer to the bottom of the container - needed when the track is resized to 0
|
|
20
|
-
}
|
|
21
|
-
}).on('click', function () {
|
|
22
|
-
var h = track.prop('fullVisibleHeight');
|
|
23
|
-
|
|
24
|
-
if (h) {
|
|
25
|
-
controller.resize(h, true);
|
|
26
|
-
}
|
|
27
|
-
}));
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
resizer.css({ width: this.width, left: 0 })[this.prop('autoHeight') ? 'hide' : 'show']();
|
|
31
|
-
|
|
32
|
-
if (!this.prop('autoHeight') && height - this.prop('margin') === this.prop('featureHeight')) {
|
|
33
|
-
controller.resize(height + resizer.height());
|
|
34
|
-
this.prop('initialHeight', this.prop('height'));
|
|
35
|
-
}
|
|
36
|
-
});
|
|
37
|
-
|
|
38
|
-
this.on('afterToggleExpander', 'tracks', function () {
|
|
39
|
-
var resizer = this.prop('resizer');
|
|
40
|
-
|
|
41
|
-
if (resizer) {
|
|
42
|
-
resizer[this.expander && this.expander.is(':visible') ? 'addClass' : 'removeClass']('gv-resizer-expander');
|
|
43
|
-
}
|
|
44
|
-
});
|
|
45
|
-
};
|
|
@@ -1,143 +0,0 @@
|
|
|
1
|
-
Genoverse.Plugins.trackControls = function () {
|
|
2
|
-
var defaultControls = [
|
|
3
|
-
$('<a title="More info" class="fas fa-question-circle">').on('click', function () {
|
|
4
|
-
var track = $(this).data('track');
|
|
5
|
-
var menu = track.prop('menus').filter('.gv-track-info');
|
|
6
|
-
|
|
7
|
-
if (!menu.length) {
|
|
8
|
-
var info = track.prop('info');
|
|
9
|
-
|
|
10
|
-
menu = { title: track.name };
|
|
11
|
-
menu[typeof info === 'function' ? info.call(track) : info || ''] = '';
|
|
12
|
-
|
|
13
|
-
menu = track.prop('menus', track.prop('menus').add(track.browser.makeMenu(menu).addClass('gv-track-info')));
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
menu.show().position({ of: track.prop('container'), at: 'center top', my: 'center top', collision: 'none' });
|
|
17
|
-
}),
|
|
18
|
-
|
|
19
|
-
$(
|
|
20
|
-
'<a class="gv-height-toggle">' +
|
|
21
|
-
'<i class="fas fa-sort"></i>' +
|
|
22
|
-
'<i class="fas fa-sort-down"></i>' +
|
|
23
|
-
'<i class="fas fa-sort-up"></i>' +
|
|
24
|
-
'</a>'
|
|
25
|
-
).on({
|
|
26
|
-
click: function () {
|
|
27
|
-
var track = $(this).data('track');
|
|
28
|
-
var height;
|
|
29
|
-
|
|
30
|
-
if (track.prop('autoHeight', !track.prop('autoHeight'))) {
|
|
31
|
-
track.prop('heightBeforeToggle', track.prop('height'));
|
|
32
|
-
height = track.prop('fullVisibleHeight');
|
|
33
|
-
} else {
|
|
34
|
-
height = track.prop('heightBeforeToggle') || track.prop('initialHeight');
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
$(this).trigger('toggleState');
|
|
38
|
-
|
|
39
|
-
track.controller.resize(height, true);
|
|
40
|
-
},
|
|
41
|
-
toggleState: function () { // custom event to set title and change the icon
|
|
42
|
-
var track = $(this).data('track');
|
|
43
|
-
var autoHeight = track.prop('autoHeight');
|
|
44
|
-
var resizer = track.prop('resizer');
|
|
45
|
-
|
|
46
|
-
this.title = autoHeight ? 'Set track to fixed height' : 'Set track to auto-adjust height';
|
|
47
|
-
$(this)[autoHeight ? 'addClass' : 'removeClass']('gv-auto-height');
|
|
48
|
-
|
|
49
|
-
if (resizer) {
|
|
50
|
-
resizer[autoHeight ? 'hide' : 'show']();
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
})
|
|
54
|
-
];
|
|
55
|
-
|
|
56
|
-
var remove = $('<a title="Remove track" class="far fa-trash-alt">').on('click', function () {
|
|
57
|
-
$(this).data('track').remove();
|
|
58
|
-
});
|
|
59
|
-
|
|
60
|
-
var toggle = $(
|
|
61
|
-
'<a class="gv-track-controls-toggle">' +
|
|
62
|
-
'<span><i class="fas fa-angle-double-left"></i><i class="fas fa-cog"></i></span>' +
|
|
63
|
-
'<span><i class="fas fa-angle-double-right"></i></span>' +
|
|
64
|
-
'</a>'
|
|
65
|
-
).on('click', function () {
|
|
66
|
-
$(this).parent().toggleClass('gv-maximized');
|
|
67
|
-
});
|
|
68
|
-
|
|
69
|
-
this.on({
|
|
70
|
-
afterAddDomElements: function () {
|
|
71
|
-
var controls = this.prop('controls');
|
|
72
|
-
|
|
73
|
-
if (controls === 'off') {
|
|
74
|
-
return;
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
var defaultConfig = this.prop('defaultConfig');
|
|
78
|
-
var savedConfig = this.browser.savedConfig ? this.browser.savedConfig[this.prop('id')] || {} : {};
|
|
79
|
-
var prop, el, j;
|
|
80
|
-
|
|
81
|
-
controls = (controls || []).concat(defaultControls, this.prop('removable') === false ? [] : remove);
|
|
82
|
-
|
|
83
|
-
this.trackControls = $('<div class="gv-track-controls">').prependTo(this.container);
|
|
84
|
-
|
|
85
|
-
var controlsContainer = $('<div class="gv-track-controls-container">').appendTo(this.trackControls);
|
|
86
|
-
|
|
87
|
-
for (var i = 0; i < controls.length; i++) {
|
|
88
|
-
if ($.isPlainObject(controls[i]) && controls[i].type) {
|
|
89
|
-
el = $('<' + controls[i].type + '>').data('control', controls[i].name);
|
|
90
|
-
|
|
91
|
-
if (controls[i].options) {
|
|
92
|
-
for (j = 0; j < controls[i].options.length; j++) {
|
|
93
|
-
el.append('<option value="' + controls[i].options[j].value + '">' + controls[i].options[j].text + '</option>');
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
} else if (typeof controls[i] === 'string') {
|
|
97
|
-
el = $(controls[i]);
|
|
98
|
-
} else if (typeof controls[i] === 'object' && controls[i].constructor && controls[i] instanceof $) {
|
|
99
|
-
el = controls[i].clone(true);
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
el.data('track', this.track).appendTo(controlsContainer);
|
|
103
|
-
|
|
104
|
-
// TODO: other control types
|
|
105
|
-
if (el.is('select')) {
|
|
106
|
-
prop = el.data('control');
|
|
107
|
-
|
|
108
|
-
el.find('option[value=' + (savedConfig[prop] || defaultConfig[prop] || 'all') + ']').attr('selected', true).end().change(function () {
|
|
109
|
-
$(this).data('track').setConfig($(this).data('control'), this.value);
|
|
110
|
-
});
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
this.prop('heightToggler', controlsContainer.children('.gv-height-toggle').trigger('toggleState'));
|
|
115
|
-
|
|
116
|
-
var toggler = toggle.clone(true).data('track', this.track).appendTo(this.trackControls);
|
|
117
|
-
|
|
118
|
-
toggler.trigger('click');
|
|
119
|
-
this.minLabelHeight = Math.max(this.minLabelHeight, this.trackControls.outerHeight(true) + this.prop('margin'));
|
|
120
|
-
toggler.trigger('click');
|
|
121
|
-
},
|
|
122
|
-
afterResize: function () {
|
|
123
|
-
if (this.trackControls) {
|
|
124
|
-
this.trackControls[this.prop('height') < this.trackControls.outerHeight(true) ? 'hide' : 'show']();
|
|
125
|
-
}
|
|
126
|
-
},
|
|
127
|
-
afterResetHeight: function () {
|
|
128
|
-
var heightToggler = this.prop('heightToggler');
|
|
129
|
-
|
|
130
|
-
if (this.prop('resizable') === true && heightToggler) {
|
|
131
|
-
heightToggler[this.prop('autoHeight') ? 'addClass' : 'removeClass']('gv-auto-height');
|
|
132
|
-
heightToggler.trigger('toggleState');
|
|
133
|
-
}
|
|
134
|
-
},
|
|
135
|
-
afterSetMVC: function () {
|
|
136
|
-
var heightToggler = this.prop('heightToggler');
|
|
137
|
-
|
|
138
|
-
if (heightToggler) {
|
|
139
|
-
heightToggler.trigger('toggleState')[this.prop('resizable') === true ? 'removeClass' : 'addClass']('gv-hide');
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
}, 'tracks');
|
|
143
|
-
};
|