igv 2.13.1 → 2.13.3
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/README.md +10 -10
- package/dist/igv.esm.js +577 -581
- package/dist/igv.esm.min.js +8 -8
- package/dist/igv.esm.min.js.map +1 -1
- package/dist/igv.js +2046 -2055
- package/dist/igv.min.js +9 -9
- package/dist/igv.min.js.map +1 -1
- package/package.json +1 -1
package/dist/igv.js
CHANGED
|
@@ -7291,7 +7291,7 @@
|
|
|
7291
7291
|
* @param x
|
|
7292
7292
|
* @returns {boolean}
|
|
7293
7293
|
*/
|
|
7294
|
-
function isString$
|
|
7294
|
+
function isString$2(x) {
|
|
7295
7295
|
return typeof x === "string" || x instanceof String;
|
|
7296
7296
|
} // StackOverflow: http://stackoverflow.com/a/10810674/116169
|
|
7297
7297
|
|
|
@@ -7353,13 +7353,6 @@
|
|
|
7353
7353
|
return str;
|
|
7354
7354
|
}
|
|
7355
7355
|
|
|
7356
|
-
function hashCode$1(s) {
|
|
7357
|
-
return s.split("").reduce(function (a, b) {
|
|
7358
|
-
a = (a << 5) - a + b.charCodeAt(0);
|
|
7359
|
-
return a & a;
|
|
7360
|
-
}, 0);
|
|
7361
|
-
}
|
|
7362
|
-
|
|
7363
7356
|
function capitalize(str) {
|
|
7364
7357
|
return str.length > 0 ? str.charAt(0).toUpperCase() + str.slice(1) : str;
|
|
7365
7358
|
}
|
|
@@ -7821,7 +7814,7 @@
|
|
|
7821
7814
|
function getFilename$1(urlOrFile) {
|
|
7822
7815
|
if (urlOrFile.name !== undefined) {
|
|
7823
7816
|
return urlOrFile.name;
|
|
7824
|
-
} else if (isString$
|
|
7817
|
+
} else if (isString$2(urlOrFile)) {
|
|
7825
7818
|
let index = urlOrFile.lastIndexOf("/");
|
|
7826
7819
|
let filename = index < 0 ? urlOrFile : urlOrFile.substr(index + 1); //Strip parameters -- handle local files later
|
|
7827
7820
|
|
|
@@ -18184,11 +18177,14 @@
|
|
|
18184
18177
|
trackView,
|
|
18185
18178
|
label: "Unset track color"
|
|
18186
18179
|
}));
|
|
18187
|
-
|
|
18188
|
-
|
|
18189
|
-
|
|
18190
|
-
|
|
18191
|
-
|
|
18180
|
+
|
|
18181
|
+
if (trackView.track.config.type === 'wig' || trackView.track.config.type === 'annotation') {
|
|
18182
|
+
menuItems.push(colorPickerMenuItem({
|
|
18183
|
+
trackView,
|
|
18184
|
+
label: "Set alt color",
|
|
18185
|
+
option: "altColor"
|
|
18186
|
+
}));
|
|
18187
|
+
}
|
|
18192
18188
|
}
|
|
18193
18189
|
|
|
18194
18190
|
if (trackView.track.menuItemList) {
|
|
@@ -18448,6 +18444,446 @@
|
|
|
18448
18444
|
return txt;
|
|
18449
18445
|
}
|
|
18450
18446
|
|
|
18447
|
+
/*
|
|
18448
|
+
* The MIT License (MIT)
|
|
18449
|
+
*
|
|
18450
|
+
* Copyright (c) 2016-2017 The Regents of the University of California
|
|
18451
|
+
* Author: Jim Robinson
|
|
18452
|
+
*
|
|
18453
|
+
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
18454
|
+
* of this software and associated documentation files (the "Software"), to deal
|
|
18455
|
+
* in the Software without restriction, including without limitation the rights
|
|
18456
|
+
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
18457
|
+
* copies of the Software, and to permit persons to whom the Software is
|
|
18458
|
+
* furnished to do so, subject to the following conditions:
|
|
18459
|
+
*
|
|
18460
|
+
* The above copyright notice and this permission notice shall be included in
|
|
18461
|
+
* all copies or substantial portions of the Software.
|
|
18462
|
+
*
|
|
18463
|
+
*
|
|
18464
|
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
18465
|
+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
18466
|
+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18467
|
+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
18468
|
+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
18469
|
+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
18470
|
+
* THE SOFTWARE.
|
|
18471
|
+
*/
|
|
18472
|
+
|
|
18473
|
+
class DataRangeDialog {
|
|
18474
|
+
constructor(browser, $parent, alert) {
|
|
18475
|
+
this.browser = browser; // dialog container
|
|
18476
|
+
|
|
18477
|
+
this.$container = $$1("<div>", {
|
|
18478
|
+
class: 'igv-generic-dialog-container'
|
|
18479
|
+
});
|
|
18480
|
+
$parent.append(this.$container);
|
|
18481
|
+
this.$container.offset({
|
|
18482
|
+
left: 0,
|
|
18483
|
+
top: 0
|
|
18484
|
+
}); // dialog header
|
|
18485
|
+
|
|
18486
|
+
const $header = $$1("<div>", {
|
|
18487
|
+
class: 'igv-generic-dialog-header'
|
|
18488
|
+
});
|
|
18489
|
+
this.$container.append($header);
|
|
18490
|
+
attachDialogCloseHandlerWithParent$1($header[0], () => {
|
|
18491
|
+
this.$minimum_input.val(undefined);
|
|
18492
|
+
this.$maximum_input.val(undefined);
|
|
18493
|
+
this.$container.offset({
|
|
18494
|
+
left: 0,
|
|
18495
|
+
top: 0
|
|
18496
|
+
});
|
|
18497
|
+
this.$container.hide();
|
|
18498
|
+
}); // minimun
|
|
18499
|
+
|
|
18500
|
+
this.$minimum = $$1("<div>", {
|
|
18501
|
+
class: 'igv-generic-dialog-label-input'
|
|
18502
|
+
});
|
|
18503
|
+
this.$container.append(this.$minimum);
|
|
18504
|
+
const $mindiv = $$1('<div>');
|
|
18505
|
+
$mindiv.text('Minimum');
|
|
18506
|
+
this.$minimum.append($mindiv);
|
|
18507
|
+
this.$minimum_input = $$1("<input>");
|
|
18508
|
+
this.$minimum.append(this.$minimum_input); // maximum
|
|
18509
|
+
|
|
18510
|
+
this.$maximum = $$1("<div>", {
|
|
18511
|
+
class: 'igv-generic-dialog-label-input'
|
|
18512
|
+
});
|
|
18513
|
+
this.$container.append(this.$maximum);
|
|
18514
|
+
const $maxdiv = $$1('<div>');
|
|
18515
|
+
$maxdiv.text('Maximum');
|
|
18516
|
+
this.$maximum.append($maxdiv);
|
|
18517
|
+
this.$maximum_input = $$1("<input>");
|
|
18518
|
+
this.$maximum.append(this.$maximum_input); // ok | cancel
|
|
18519
|
+
|
|
18520
|
+
const $buttons = $$1("<div>", {
|
|
18521
|
+
class: 'igv-generic-dialog-ok-cancel'
|
|
18522
|
+
});
|
|
18523
|
+
this.$container.append($buttons); // ok
|
|
18524
|
+
|
|
18525
|
+
this.$ok = $$1("<div>");
|
|
18526
|
+
$buttons.append(this.$ok);
|
|
18527
|
+
this.$ok.text('OK'); // cancel
|
|
18528
|
+
|
|
18529
|
+
this.$cancel = $$1("<div>");
|
|
18530
|
+
$buttons.append(this.$cancel);
|
|
18531
|
+
this.$cancel.text('Cancel');
|
|
18532
|
+
this.$cancel.on('click', () => {
|
|
18533
|
+
this.$minimum_input.val(undefined);
|
|
18534
|
+
this.$maximum_input.val(undefined);
|
|
18535
|
+
this.$container.offset({
|
|
18536
|
+
left: 0,
|
|
18537
|
+
top: 0
|
|
18538
|
+
});
|
|
18539
|
+
this.$container.hide();
|
|
18540
|
+
}); //this.$container.draggable({ handle:$header.get(0) });
|
|
18541
|
+
|
|
18542
|
+
makeDraggable$1(this.$container.get(0), $header.get(0));
|
|
18543
|
+
this.$container.hide();
|
|
18544
|
+
}
|
|
18545
|
+
|
|
18546
|
+
configure(trackView) {
|
|
18547
|
+
const dataRange = trackView.dataRange();
|
|
18548
|
+
let min;
|
|
18549
|
+
let max;
|
|
18550
|
+
|
|
18551
|
+
if (dataRange) {
|
|
18552
|
+
min = dataRange.min;
|
|
18553
|
+
max = dataRange.max;
|
|
18554
|
+
} else {
|
|
18555
|
+
min = 0;
|
|
18556
|
+
max = 100;
|
|
18557
|
+
}
|
|
18558
|
+
|
|
18559
|
+
this.$minimum_input.val(min);
|
|
18560
|
+
this.$maximum_input.val(max);
|
|
18561
|
+
this.$minimum_input.unbind();
|
|
18562
|
+
this.$minimum_input.on('keyup', e => {
|
|
18563
|
+
if (13 === e.keyCode) {
|
|
18564
|
+
this.processResults(trackView);
|
|
18565
|
+
}
|
|
18566
|
+
});
|
|
18567
|
+
this.$maximum_input.unbind();
|
|
18568
|
+
this.$maximum_input.on('keyup', e => {
|
|
18569
|
+
if (13 === e.keyCode) {
|
|
18570
|
+
this.processResults(trackView);
|
|
18571
|
+
}
|
|
18572
|
+
});
|
|
18573
|
+
this.$ok.unbind();
|
|
18574
|
+
this.$ok.on('click', e => {
|
|
18575
|
+
this.processResults(trackView);
|
|
18576
|
+
});
|
|
18577
|
+
}
|
|
18578
|
+
|
|
18579
|
+
processResults(trackView) {
|
|
18580
|
+
const min = Number(this.$minimum_input.val());
|
|
18581
|
+
const max = Number(this.$maximum_input.val());
|
|
18582
|
+
|
|
18583
|
+
if (isNaN(min) || isNaN(max)) {
|
|
18584
|
+
this.browser.alert.present(new Error('Must input numeric values'), undefined);
|
|
18585
|
+
} else {
|
|
18586
|
+
trackView.setDataRange(min, max);
|
|
18587
|
+
}
|
|
18588
|
+
|
|
18589
|
+
this.$minimum_input.val(undefined);
|
|
18590
|
+
this.$maximum_input.val(undefined);
|
|
18591
|
+
this.$container.offset({
|
|
18592
|
+
left: 0,
|
|
18593
|
+
top: 0
|
|
18594
|
+
});
|
|
18595
|
+
this.$container.hide();
|
|
18596
|
+
}
|
|
18597
|
+
|
|
18598
|
+
present($parent) {
|
|
18599
|
+
const offset_top = $parent.offset().top;
|
|
18600
|
+
const scroll_top = $$1('body').scrollTop();
|
|
18601
|
+
this.$container.offset({
|
|
18602
|
+
left: $parent.width() - this.$container.width(),
|
|
18603
|
+
top: offset_top + scroll_top
|
|
18604
|
+
});
|
|
18605
|
+
this.$container.show();
|
|
18606
|
+
}
|
|
18607
|
+
|
|
18608
|
+
}
|
|
18609
|
+
|
|
18610
|
+
/*
|
|
18611
|
+
* The MIT License (MIT)
|
|
18612
|
+
*
|
|
18613
|
+
* Copyright (c) 2014 Broad Institute
|
|
18614
|
+
*
|
|
18615
|
+
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
18616
|
+
* of ctx software and associated documentation files (the "Software"), to deal
|
|
18617
|
+
* in the Software without restriction, including without limitation the rights
|
|
18618
|
+
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
18619
|
+
* copies of the Software, and to permit persons to whom the Software is
|
|
18620
|
+
* furnished to do so, subject to the following conditions:
|
|
18621
|
+
*
|
|
18622
|
+
* The above copyright notice and ctx permission notice shall be included in
|
|
18623
|
+
* all copies or substantial portions of the Software.
|
|
18624
|
+
*
|
|
18625
|
+
*
|
|
18626
|
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
18627
|
+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
18628
|
+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18629
|
+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
18630
|
+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
18631
|
+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
18632
|
+
* THE SOFTWARE.
|
|
18633
|
+
*/
|
|
18634
|
+
|
|
18635
|
+
const IGVGraphics = {
|
|
18636
|
+
configureHighDPICanvas: function (ctx, w, h) {
|
|
18637
|
+
const scaleFactor = window.devicePixelRatio; // const scaleFactor = 1
|
|
18638
|
+
|
|
18639
|
+
ctx.canvas.style.width = `${w}px`;
|
|
18640
|
+
ctx.canvas.width = Math.floor(scaleFactor * w);
|
|
18641
|
+
ctx.canvas.style.height = `${h}px`;
|
|
18642
|
+
ctx.canvas.height = Math.floor(scaleFactor * h);
|
|
18643
|
+
ctx.scale(scaleFactor, scaleFactor);
|
|
18644
|
+
},
|
|
18645
|
+
setProperties: function (ctx, properties) {
|
|
18646
|
+
for (var key in properties) {
|
|
18647
|
+
if (properties.hasOwnProperty(key)) {
|
|
18648
|
+
var value = properties[key];
|
|
18649
|
+
ctx[key] = value;
|
|
18650
|
+
}
|
|
18651
|
+
}
|
|
18652
|
+
},
|
|
18653
|
+
strokeLine: function (ctx, x1, y1, x2, y2, properties) {
|
|
18654
|
+
x1 = Math.floor(x1) + 0.5;
|
|
18655
|
+
y1 = Math.floor(y1) + 0.5;
|
|
18656
|
+
x2 = Math.floor(x2) + 0.5;
|
|
18657
|
+
y2 = Math.floor(y2) + 0.5;
|
|
18658
|
+
|
|
18659
|
+
if (properties) {
|
|
18660
|
+
ctx.save();
|
|
18661
|
+
IGVGraphics.setProperties(ctx, properties);
|
|
18662
|
+
}
|
|
18663
|
+
|
|
18664
|
+
ctx.beginPath();
|
|
18665
|
+
ctx.moveTo(x1, y1);
|
|
18666
|
+
ctx.lineTo(x2, y2);
|
|
18667
|
+
ctx.stroke();
|
|
18668
|
+
if (properties) ctx.restore();
|
|
18669
|
+
},
|
|
18670
|
+
fillRect: function (ctx, x, y, w, h, properties) {
|
|
18671
|
+
x = Math.round(x);
|
|
18672
|
+
y = Math.round(y);
|
|
18673
|
+
|
|
18674
|
+
if (properties) {
|
|
18675
|
+
ctx.save();
|
|
18676
|
+
IGVGraphics.setProperties(ctx, properties);
|
|
18677
|
+
}
|
|
18678
|
+
|
|
18679
|
+
ctx.fillRect(x, y, w, h);
|
|
18680
|
+
if (properties) ctx.restore();
|
|
18681
|
+
},
|
|
18682
|
+
fillPolygon: function (ctx, x, y, properties) {
|
|
18683
|
+
if (properties) {
|
|
18684
|
+
ctx.save();
|
|
18685
|
+
IGVGraphics.setProperties(ctx, properties);
|
|
18686
|
+
}
|
|
18687
|
+
|
|
18688
|
+
doPath(ctx, x, y);
|
|
18689
|
+
ctx.fill();
|
|
18690
|
+
if (properties) ctx.restore();
|
|
18691
|
+
},
|
|
18692
|
+
strokePolygon: function (ctx, x, y, properties) {
|
|
18693
|
+
if (properties) {
|
|
18694
|
+
ctx.save();
|
|
18695
|
+
IGVGraphics.setProperties(ctx, properties);
|
|
18696
|
+
}
|
|
18697
|
+
|
|
18698
|
+
doPath(ctx, x, y);
|
|
18699
|
+
ctx.stroke();
|
|
18700
|
+
if (properties) ctx.restore();
|
|
18701
|
+
},
|
|
18702
|
+
fillText: function (ctx, text, x, y, properties, transforms) {
|
|
18703
|
+
if (properties || transforms) {
|
|
18704
|
+
ctx.save();
|
|
18705
|
+
}
|
|
18706
|
+
|
|
18707
|
+
if (properties) {
|
|
18708
|
+
IGVGraphics.setProperties(ctx, properties);
|
|
18709
|
+
}
|
|
18710
|
+
|
|
18711
|
+
if (transforms) {
|
|
18712
|
+
// Slow path with context saving and extra translate
|
|
18713
|
+
ctx.translate(x, y);
|
|
18714
|
+
|
|
18715
|
+
for (var transform in transforms) {
|
|
18716
|
+
var value = transforms[transform]; // TODO: Add error checking for robustness
|
|
18717
|
+
|
|
18718
|
+
if (transform === 'translate') {
|
|
18719
|
+
ctx.translate(value['x'], value['y']);
|
|
18720
|
+
}
|
|
18721
|
+
|
|
18722
|
+
if (transform === 'rotate') {
|
|
18723
|
+
ctx.rotate(value['angle'] * Math.PI / 180);
|
|
18724
|
+
}
|
|
18725
|
+
}
|
|
18726
|
+
|
|
18727
|
+
ctx.fillText(text, 0, 0);
|
|
18728
|
+
} else {
|
|
18729
|
+
ctx.fillText(text, x, y);
|
|
18730
|
+
}
|
|
18731
|
+
|
|
18732
|
+
if (properties || transforms) ctx.restore();
|
|
18733
|
+
},
|
|
18734
|
+
strokeText: function (ctx, text, x, y, properties, transforms) {
|
|
18735
|
+
if (properties || transforms) {
|
|
18736
|
+
ctx.save();
|
|
18737
|
+
}
|
|
18738
|
+
|
|
18739
|
+
if (properties) {
|
|
18740
|
+
IGVGraphics.setProperties(ctx, properties);
|
|
18741
|
+
}
|
|
18742
|
+
|
|
18743
|
+
if (transforms) {
|
|
18744
|
+
ctx.translate(x, y);
|
|
18745
|
+
|
|
18746
|
+
for (var transform in transforms) {
|
|
18747
|
+
var value = transforms[transform]; // TODO: Add error checking for robustness
|
|
18748
|
+
|
|
18749
|
+
if (transform === 'translate') {
|
|
18750
|
+
ctx.translate(value['x'], value['y']);
|
|
18751
|
+
}
|
|
18752
|
+
|
|
18753
|
+
if (transform === 'rotate') {
|
|
18754
|
+
ctx.rotate(value['angle'] * Math.PI / 180);
|
|
18755
|
+
}
|
|
18756
|
+
}
|
|
18757
|
+
|
|
18758
|
+
ctx.strokeText(text, 0, 0);
|
|
18759
|
+
} else {
|
|
18760
|
+
ctx.strokeText(text, x, y);
|
|
18761
|
+
}
|
|
18762
|
+
|
|
18763
|
+
if (properties || transforms) ctx.restore();
|
|
18764
|
+
},
|
|
18765
|
+
strokeCircle: function (ctx, x, y, radius, properties) {
|
|
18766
|
+
if (properties) {
|
|
18767
|
+
ctx.save();
|
|
18768
|
+
IGVGraphics.setProperties(ctx, properties);
|
|
18769
|
+
}
|
|
18770
|
+
|
|
18771
|
+
ctx.beginPath();
|
|
18772
|
+
ctx.arc(x, y, radius, 0, 2 * Math.PI);
|
|
18773
|
+
ctx.stroke();
|
|
18774
|
+
if (properties) ctx.restore();
|
|
18775
|
+
},
|
|
18776
|
+
fillCircle: function (ctx, x, y, radius, properties) {
|
|
18777
|
+
if (properties) {
|
|
18778
|
+
ctx.save();
|
|
18779
|
+
IGVGraphics.setProperties(ctx, properties);
|
|
18780
|
+
}
|
|
18781
|
+
|
|
18782
|
+
ctx.beginPath();
|
|
18783
|
+
ctx.arc(x, y, radius, 0, 2 * Math.PI);
|
|
18784
|
+
ctx.fill();
|
|
18785
|
+
if (properties) ctx.restore();
|
|
18786
|
+
},
|
|
18787
|
+
drawArrowhead: function (ctx, x, y, size, lineWidth) {
|
|
18788
|
+
ctx.save();
|
|
18789
|
+
|
|
18790
|
+
if (!size) {
|
|
18791
|
+
size = 5;
|
|
18792
|
+
}
|
|
18793
|
+
|
|
18794
|
+
if (lineWidth) {
|
|
18795
|
+
ctx.lineWidth = lineWidth;
|
|
18796
|
+
}
|
|
18797
|
+
|
|
18798
|
+
ctx.beginPath();
|
|
18799
|
+
ctx.moveTo(x, y - size / 2);
|
|
18800
|
+
ctx.lineTo(x, y + size / 2);
|
|
18801
|
+
ctx.lineTo(x + size, y);
|
|
18802
|
+
ctx.lineTo(x, y - size / 2);
|
|
18803
|
+
ctx.closePath();
|
|
18804
|
+
ctx.fill();
|
|
18805
|
+
ctx.restore();
|
|
18806
|
+
},
|
|
18807
|
+
dashedLine: function (ctx, x1, y1, x2, y2, dashLen) {
|
|
18808
|
+
let properties = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : {};
|
|
18809
|
+
if (dashLen === undefined) dashLen = 2;
|
|
18810
|
+
ctx.setLineDash([dashLen, dashLen]);
|
|
18811
|
+
IGVGraphics.strokeLine(ctx, x1, y1, x2, y2, properties);
|
|
18812
|
+
ctx.setLineDash([]);
|
|
18813
|
+
},
|
|
18814
|
+
roundRect: function (ctx, x, y, width, height, radius, fill, stroke) {
|
|
18815
|
+
if (typeof stroke == "undefined") {
|
|
18816
|
+
stroke = true;
|
|
18817
|
+
}
|
|
18818
|
+
|
|
18819
|
+
if (typeof radius === "undefined") {
|
|
18820
|
+
radius = 5;
|
|
18821
|
+
}
|
|
18822
|
+
|
|
18823
|
+
ctx.beginPath();
|
|
18824
|
+
ctx.moveTo(x + radius, y);
|
|
18825
|
+
ctx.lineTo(x + width - radius, y);
|
|
18826
|
+
ctx.quadraticCurveTo(x + width, y, x + width, y + radius);
|
|
18827
|
+
ctx.lineTo(x + width, y + height - radius);
|
|
18828
|
+
ctx.quadraticCurveTo(x + width, y + height, x + width - radius, y + height);
|
|
18829
|
+
ctx.lineTo(x + radius, y + height);
|
|
18830
|
+
ctx.quadraticCurveTo(x, y + height, x, y + height - radius);
|
|
18831
|
+
ctx.lineTo(x, y + radius);
|
|
18832
|
+
ctx.quadraticCurveTo(x, y, x + radius, y);
|
|
18833
|
+
ctx.closePath();
|
|
18834
|
+
|
|
18835
|
+
if (stroke) {
|
|
18836
|
+
ctx.stroke();
|
|
18837
|
+
}
|
|
18838
|
+
|
|
18839
|
+
if (fill) {
|
|
18840
|
+
ctx.fill();
|
|
18841
|
+
}
|
|
18842
|
+
},
|
|
18843
|
+
polygon: function (ctx, x, y, fill, stroke) {
|
|
18844
|
+
if (typeof stroke == "undefined") {
|
|
18845
|
+
stroke = true;
|
|
18846
|
+
}
|
|
18847
|
+
|
|
18848
|
+
ctx.beginPath();
|
|
18849
|
+
var len = x.length;
|
|
18850
|
+
ctx.moveTo(x[0], y[0]);
|
|
18851
|
+
|
|
18852
|
+
for (var i = 1; i < len; i++) {
|
|
18853
|
+
ctx.lineTo(x[i], y[i]); // this.moveTo(x[i], y[i]);
|
|
18854
|
+
}
|
|
18855
|
+
|
|
18856
|
+
ctx.closePath();
|
|
18857
|
+
|
|
18858
|
+
if (stroke) {
|
|
18859
|
+
ctx.stroke();
|
|
18860
|
+
}
|
|
18861
|
+
|
|
18862
|
+
if (fill) {
|
|
18863
|
+
ctx.fill();
|
|
18864
|
+
}
|
|
18865
|
+
}
|
|
18866
|
+
};
|
|
18867
|
+
|
|
18868
|
+
function doPath(ctx, x, y) {
|
|
18869
|
+
var i,
|
|
18870
|
+
len = x.length;
|
|
18871
|
+
|
|
18872
|
+
for (i = 0; i < len; i++) {
|
|
18873
|
+
x[i] = Math.round(x[i]);
|
|
18874
|
+
y[i] = Math.round(y[i]);
|
|
18875
|
+
}
|
|
18876
|
+
|
|
18877
|
+
ctx.beginPath();
|
|
18878
|
+
ctx.moveTo(x[0], y[0]);
|
|
18879
|
+
|
|
18880
|
+
for (i = 1; i < len; i++) {
|
|
18881
|
+
ctx.lineTo(x[i], y[i]);
|
|
18882
|
+
}
|
|
18883
|
+
|
|
18884
|
+
ctx.closePath();
|
|
18885
|
+
}
|
|
18886
|
+
|
|
18451
18887
|
function div(options) {
|
|
18452
18888
|
return create("div", options);
|
|
18453
18889
|
}
|
|
@@ -18810,22 +19246,6 @@
|
|
|
18810
19246
|
|
|
18811
19247
|
}
|
|
18812
19248
|
|
|
18813
|
-
let alertDialog;
|
|
18814
|
-
const Alert = {
|
|
18815
|
-
init(root, config = {}) {
|
|
18816
|
-
alertDialog = new AlertDialog(root, config);
|
|
18817
|
-
},
|
|
18818
|
-
|
|
18819
|
-
presentAlert(alert, callback) {
|
|
18820
|
-
if (!alertDialog) {
|
|
18821
|
-
this.init(document.body);
|
|
18822
|
-
}
|
|
18823
|
-
|
|
18824
|
-
alertDialog.present(alert, callback);
|
|
18825
|
-
}
|
|
18826
|
-
|
|
18827
|
-
};
|
|
18828
|
-
|
|
18829
19249
|
class InputDialog {
|
|
18830
19250
|
constructor(parent) {
|
|
18831
19251
|
this.parent = parent; // dialog container
|
|
@@ -20191,11 +20611,58 @@
|
|
|
20191
20611
|
}
|
|
20192
20612
|
}
|
|
20193
20613
|
|
|
20614
|
+
class Alert {
|
|
20615
|
+
constructor(parent) {
|
|
20616
|
+
this.dialog = new AlertDialog(parent);
|
|
20617
|
+
}
|
|
20618
|
+
|
|
20619
|
+
present(alert, callback) {
|
|
20620
|
+
this.dialog.present(alert, callback);
|
|
20621
|
+
}
|
|
20622
|
+
|
|
20623
|
+
}
|
|
20624
|
+
|
|
20625
|
+
const FileFormats = {
|
|
20626
|
+
gwascatalog: {
|
|
20627
|
+
fields: ['bin', 'chr', 'start', 'end', 'name', 'pubMedID', 'author', 'pubDate', 'journal', 'title', 'trait', 'initSample', 'replSample', 'region', 'genes', 'riskAllele', 'riskAlFreq', 'pValue', 'pValueDesc', 'orOrBeta', 'ci95', 'platform', 'cnv']
|
|
20628
|
+
},
|
|
20629
|
+
wgrna: {
|
|
20630
|
+
fields: ['bin', 'chr', 'start', 'end', 'name', 'score', 'strand', 'thickStart', 'thickEnd', 'type']
|
|
20631
|
+
},
|
|
20632
|
+
cpgislandext: {
|
|
20633
|
+
fields: ['bin', 'chr', 'start', 'end', 'name', 'length', 'cpgNum', 'gcNum', 'perCpg', 'perGc', 'obsExp']
|
|
20634
|
+
},
|
|
20635
|
+
clinVarMain: {
|
|
20636
|
+
fields: ['chr1', 'start', 'end', 'name', 'score', 'strand', 'thickStart', 'thickEnd', 'reserved', 'blockCount', // Number of blocks
|
|
20637
|
+
'blockSizes', // Comma separated list of block sizes
|
|
20638
|
+
'chromStarts', // Start positions relative to chromStart
|
|
20639
|
+
'origName', // NM_198053.2(CD247):c.462C>T (p.Asp154=) ClinVar Variation Report
|
|
20640
|
+
'clinSign', // Likely benign Clinical significance
|
|
20641
|
+
'reviewStatus', // based on: criteria provided,single submitter Review Status
|
|
20642
|
+
'type', // single nucleotide variant Type of Variant
|
|
20643
|
+
'geneId', // CD247 Gene Symbol
|
|
20644
|
+
'snpId', // 181656780 dbSNP ID
|
|
20645
|
+
'nsvId', // dbVar ID
|
|
20646
|
+
'rcvAcc', // RCV000642347 ClinVar Allele Submission
|
|
20647
|
+
'testedInGtr', // N Genetic Testing Registry
|
|
20648
|
+
'phenotypeList', // Immunodeficiency due to defect in cd3-zeta Phenotypes
|
|
20649
|
+
'phenotype', // MedGen:C1857798, OMIM:610163 Phenotype identifiers
|
|
20650
|
+
'origin', // germline Data origin
|
|
20651
|
+
'assembly', // GRCh37 Genome assembly
|
|
20652
|
+
'cytogenetic', // 1q24.2 Cytogenetic status
|
|
20653
|
+
'hgvsCod', // NM_198053.2:c.462C>T Nucleotide HGVS
|
|
20654
|
+
'hgvsProt', // NP_932170.1:p.Asp154= Protein HGVS
|
|
20655
|
+
'numSubmit', // 1 Number of submitters
|
|
20656
|
+
'lastEval', // Dec 19,2017 Last evaluation
|
|
20657
|
+
'guidelines', // Guidelines
|
|
20658
|
+
'otherIds']
|
|
20659
|
+
}
|
|
20660
|
+
};
|
|
20661
|
+
|
|
20194
20662
|
/*
|
|
20195
20663
|
* The MIT License (MIT)
|
|
20196
20664
|
*
|
|
20197
|
-
* Copyright (c)
|
|
20198
|
-
* Author: Jim Robinson
|
|
20665
|
+
* Copyright (c) 2014 Broad Institute
|
|
20199
20666
|
*
|
|
20200
20667
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
20201
20668
|
* of this software and associated documentation files (the "Software"), to deal
|
|
@@ -20216,1436 +20683,360 @@
|
|
|
20216
20683
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
20217
20684
|
* THE SOFTWARE.
|
|
20218
20685
|
*/
|
|
20686
|
+
/**
|
|
20687
|
+
* Test if the given value is a string or number. Not using typeof as it fails on boxed primitives.
|
|
20688
|
+
*
|
|
20689
|
+
* @param value
|
|
20690
|
+
* @returns boolean
|
|
20691
|
+
*/
|
|
20219
20692
|
|
|
20220
|
-
class DataRangeDialog {
|
|
20221
|
-
constructor($parent, alert) {
|
|
20222
|
-
// dialog container
|
|
20223
|
-
this.$container = $$1("<div>", {
|
|
20224
|
-
class: 'igv-generic-dialog-container'
|
|
20225
|
-
});
|
|
20226
|
-
$parent.append(this.$container);
|
|
20227
|
-
this.$container.offset({
|
|
20228
|
-
left: 0,
|
|
20229
|
-
top: 0
|
|
20230
|
-
}); // dialog header
|
|
20231
|
-
|
|
20232
|
-
const $header = $$1("<div>", {
|
|
20233
|
-
class: 'igv-generic-dialog-header'
|
|
20234
|
-
});
|
|
20235
|
-
this.$container.append($header);
|
|
20236
|
-
attachDialogCloseHandlerWithParent$1($header[0], () => {
|
|
20237
|
-
this.$minimum_input.val(undefined);
|
|
20238
|
-
this.$maximum_input.val(undefined);
|
|
20239
|
-
this.$container.offset({
|
|
20240
|
-
left: 0,
|
|
20241
|
-
top: 0
|
|
20242
|
-
});
|
|
20243
|
-
this.$container.hide();
|
|
20244
|
-
}); // minimun
|
|
20245
20693
|
|
|
20246
|
-
|
|
20247
|
-
|
|
20248
|
-
|
|
20249
|
-
|
|
20250
|
-
|
|
20251
|
-
$mindiv.text('Minimum');
|
|
20252
|
-
this.$minimum.append($mindiv);
|
|
20253
|
-
this.$minimum_input = $$1("<input>");
|
|
20254
|
-
this.$minimum.append(this.$minimum_input); // maximum
|
|
20694
|
+
function isSimpleType(value) {
|
|
20695
|
+
const simpleTypes = new Set(["boolean", "number", "string", "symbol"]);
|
|
20696
|
+
const valueType = typeof value;
|
|
20697
|
+
return value !== undefined && (simpleTypes.has(valueType) || value.substring || value.toFixed);
|
|
20698
|
+
}
|
|
20255
20699
|
|
|
20256
|
-
|
|
20257
|
-
|
|
20258
|
-
|
|
20259
|
-
|
|
20260
|
-
|
|
20261
|
-
|
|
20262
|
-
|
|
20263
|
-
|
|
20264
|
-
|
|
20700
|
+
function buildOptions(config, options) {
|
|
20701
|
+
var defaultOptions = {
|
|
20702
|
+
oauthToken: config.oauthToken,
|
|
20703
|
+
headers: config.headers,
|
|
20704
|
+
withCredentials: config.withCredentials,
|
|
20705
|
+
filename: config.filename
|
|
20706
|
+
};
|
|
20707
|
+
return Object.assign(defaultOptions, options);
|
|
20708
|
+
}
|
|
20709
|
+
/**
|
|
20710
|
+
* isMobile test from http://detectmobilebrowsers.com
|
|
20711
|
+
* TODO -- improve UI design so this isn't neccessary
|
|
20712
|
+
* @returns {boolean}
|
|
20713
|
+
*/
|
|
20714
|
+
// igv.isMobile = function () {
|
|
20715
|
+
//
|
|
20716
|
+
// const a = (navigator.userAgent || navigator.vendor || window.opera);
|
|
20717
|
+
// return (/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(a) ||
|
|
20718
|
+
// /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0, 4)))
|
|
20719
|
+
//
|
|
20720
|
+
// }
|
|
20265
20721
|
|
|
20266
|
-
const $buttons = $$1("<div>", {
|
|
20267
|
-
class: 'igv-generic-dialog-ok-cancel'
|
|
20268
|
-
});
|
|
20269
|
-
this.$container.append($buttons); // ok
|
|
20270
20722
|
|
|
20271
|
-
|
|
20272
|
-
|
|
20273
|
-
this.$ok.text('OK'); // cancel
|
|
20723
|
+
const doAutoscale = function (features) {
|
|
20724
|
+
var min, max;
|
|
20274
20725
|
|
|
20275
|
-
|
|
20276
|
-
|
|
20277
|
-
|
|
20278
|
-
|
|
20279
|
-
|
|
20280
|
-
|
|
20281
|
-
|
|
20282
|
-
|
|
20283
|
-
|
|
20284
|
-
});
|
|
20285
|
-
this.$container.hide();
|
|
20286
|
-
}); //this.$container.draggable({ handle:$header.get(0) });
|
|
20726
|
+
if (features.length > 0) {
|
|
20727
|
+
min = Number.MAX_VALUE;
|
|
20728
|
+
max = -Number.MAX_VALUE;
|
|
20729
|
+
features.forEach(function (f) {
|
|
20730
|
+
if (!Number.isNaN(f.value)) {
|
|
20731
|
+
min = Math.min(min, f.value);
|
|
20732
|
+
max = Math.max(max, f.value);
|
|
20733
|
+
}
|
|
20734
|
+
}); // Insure we have a zero baseline
|
|
20287
20735
|
|
|
20288
|
-
|
|
20289
|
-
|
|
20736
|
+
if (max > 0) min = Math.min(0, min);
|
|
20737
|
+
if (max < 0) max = 0;
|
|
20738
|
+
} else {
|
|
20739
|
+
// No features -- default
|
|
20740
|
+
min = 0;
|
|
20741
|
+
max = 100;
|
|
20290
20742
|
}
|
|
20291
20743
|
|
|
20292
|
-
|
|
20293
|
-
|
|
20294
|
-
|
|
20295
|
-
|
|
20744
|
+
return {
|
|
20745
|
+
min: min,
|
|
20746
|
+
max: max
|
|
20747
|
+
};
|
|
20748
|
+
};
|
|
20296
20749
|
|
|
20297
|
-
|
|
20298
|
-
|
|
20299
|
-
|
|
20750
|
+
const validateGenomicExtent = function (chromosomeLengthBP, genomicExtent, minimumBP) {
|
|
20751
|
+
let ss = genomicExtent.start;
|
|
20752
|
+
let ee = genomicExtent.end;
|
|
20753
|
+
|
|
20754
|
+
if (undefined === ee) {
|
|
20755
|
+
ss -= minimumBP / 2;
|
|
20756
|
+
ee = ss + minimumBP;
|
|
20757
|
+
|
|
20758
|
+
if (ee > chromosomeLengthBP) {
|
|
20759
|
+
ee = chromosomeLengthBP;
|
|
20760
|
+
ss = ee - minimumBP;
|
|
20761
|
+
} else if (ss < 0) {
|
|
20762
|
+
ss = 0;
|
|
20763
|
+
ee = minimumBP;
|
|
20764
|
+
}
|
|
20765
|
+
} else if (ee - ss < minimumBP) {
|
|
20766
|
+
const center = (ee + ss) / 2;
|
|
20767
|
+
|
|
20768
|
+
if (center - minimumBP / 2 < 0) {
|
|
20769
|
+
ss = 0;
|
|
20770
|
+
ee = ss + minimumBP;
|
|
20771
|
+
} else if (center + minimumBP / 2 > chromosomeLengthBP) {
|
|
20772
|
+
ee = chromosomeLengthBP;
|
|
20773
|
+
ss = ee - minimumBP;
|
|
20300
20774
|
} else {
|
|
20301
|
-
|
|
20302
|
-
|
|
20775
|
+
ss = center - minimumBP / 2;
|
|
20776
|
+
ee = ss + minimumBP;
|
|
20303
20777
|
}
|
|
20778
|
+
}
|
|
20304
20779
|
|
|
20305
|
-
|
|
20306
|
-
|
|
20307
|
-
|
|
20308
|
-
|
|
20309
|
-
|
|
20310
|
-
|
|
20311
|
-
|
|
20312
|
-
|
|
20313
|
-
|
|
20314
|
-
|
|
20315
|
-
|
|
20316
|
-
|
|
20317
|
-
|
|
20318
|
-
|
|
20319
|
-
this.$ok.unbind();
|
|
20320
|
-
this.$ok.on('click', e => {
|
|
20321
|
-
this.processResults(trackView);
|
|
20322
|
-
});
|
|
20780
|
+
genomicExtent.start = Math.ceil(ss);
|
|
20781
|
+
genomicExtent.end = Math.floor(ee);
|
|
20782
|
+
};
|
|
20783
|
+
/*!
|
|
20784
|
+
* is-number <https://github.com/jonschlinkert/is-number>
|
|
20785
|
+
*
|
|
20786
|
+
* Copyright (c) 2014-present, Jon Schlinkert.
|
|
20787
|
+
* Released under the MIT License.
|
|
20788
|
+
*/
|
|
20789
|
+
|
|
20790
|
+
|
|
20791
|
+
const isNumber = function (num) {
|
|
20792
|
+
if (typeof num === 'number') {
|
|
20793
|
+
return num - num === 0;
|
|
20323
20794
|
}
|
|
20324
20795
|
|
|
20325
|
-
|
|
20326
|
-
|
|
20327
|
-
|
|
20796
|
+
if (typeof num === 'string' && num.trim() !== '') {
|
|
20797
|
+
return Number.isFinite ? Number.isFinite(+num) : isFinite(+num);
|
|
20798
|
+
}
|
|
20328
20799
|
|
|
20329
|
-
|
|
20330
|
-
|
|
20331
|
-
|
|
20332
|
-
|
|
20800
|
+
return false;
|
|
20801
|
+
};
|
|
20802
|
+
|
|
20803
|
+
async function getFilename(url) {
|
|
20804
|
+
if (isString$2(url) && url.startsWith("https://drive.google.com")) {
|
|
20805
|
+
// This will fail if Google API key is not defined
|
|
20806
|
+
if (getApiKey() === undefined) {
|
|
20807
|
+
throw Error("Google drive is referenced, but API key is not defined. An API key is required for Google Drive access");
|
|
20333
20808
|
}
|
|
20334
20809
|
|
|
20335
|
-
|
|
20336
|
-
|
|
20337
|
-
|
|
20338
|
-
|
|
20339
|
-
top: 0
|
|
20340
|
-
});
|
|
20341
|
-
this.$container.hide();
|
|
20810
|
+
const json = await getDriveFileInfo(url);
|
|
20811
|
+
return json.originalFileName || json.name;
|
|
20812
|
+
} else {
|
|
20813
|
+
return getFilename$1(url);
|
|
20342
20814
|
}
|
|
20815
|
+
}
|
|
20343
20816
|
|
|
20344
|
-
|
|
20345
|
-
|
|
20346
|
-
|
|
20347
|
-
|
|
20348
|
-
|
|
20349
|
-
|
|
20350
|
-
|
|
20351
|
-
|
|
20817
|
+
function prettyBasePairNumber(raw) {
|
|
20818
|
+
var denom, units, value, floored;
|
|
20819
|
+
|
|
20820
|
+
if (raw > 1e7) {
|
|
20821
|
+
denom = 1e6;
|
|
20822
|
+
units = " mb";
|
|
20823
|
+
} else if (raw > 1e4) {
|
|
20824
|
+
denom = 1e3;
|
|
20825
|
+
units = " kb";
|
|
20826
|
+
value = raw / denom;
|
|
20827
|
+
floored = Math.floor(value);
|
|
20828
|
+
return numberFormatter$1(floored) + units;
|
|
20829
|
+
} else {
|
|
20830
|
+
return numberFormatter$1(raw) + " bp";
|
|
20352
20831
|
}
|
|
20353
20832
|
|
|
20833
|
+
value = raw / denom;
|
|
20834
|
+
floored = Math.floor(value);
|
|
20835
|
+
return floored.toString() + units;
|
|
20354
20836
|
}
|
|
20355
20837
|
|
|
20356
|
-
|
|
20357
|
-
|
|
20838
|
+
function isDataURL(obj) {
|
|
20839
|
+
return isString$2(obj) && obj.startsWith("data:");
|
|
20840
|
+
}
|
|
20841
|
+
|
|
20842
|
+
function createColumn(columnContainer, className) {
|
|
20843
|
+
const column = div$1({
|
|
20844
|
+
class: className
|
|
20845
|
+
});
|
|
20846
|
+
columnContainer.appendChild(column);
|
|
20847
|
+
}
|
|
20848
|
+
|
|
20849
|
+
function insertElementBefore(element, referenceNode) {
|
|
20850
|
+
referenceNode.parentNode.insertBefore(element, referenceNode);
|
|
20851
|
+
}
|
|
20852
|
+
|
|
20853
|
+
function insertElementAfter(element, referenceNode) {
|
|
20854
|
+
referenceNode.parentNode.insertBefore(element, referenceNode.nextSibling);
|
|
20855
|
+
}
|
|
20856
|
+
/**
|
|
20857
|
+
* Test to see if page is loaded in a secure context, that is by https or is localhost.
|
|
20858
|
+
*/
|
|
20859
|
+
|
|
20860
|
+
|
|
20861
|
+
function isSecureContext() {
|
|
20862
|
+
return window.location.protocol === "https:" || window.location.hostname === "localhost";
|
|
20863
|
+
} // reference: https://pretagteam.com/question/find-element-height-including-margin
|
|
20864
|
+
|
|
20865
|
+
|
|
20866
|
+
function getElementAbsoluteHeight(element) {
|
|
20867
|
+
// Get the DOM Node if you pass in a string
|
|
20868
|
+
element = typeof element === 'string' ? document.querySelector(element) : element;
|
|
20869
|
+
const styles = window.getComputedStyle(element);
|
|
20870
|
+
const margin = parseFloat(styles['marginTop']) + parseFloat(styles['marginBottom']);
|
|
20871
|
+
const height = element.offsetHeight;
|
|
20872
|
+
return Math.ceil(margin + height);
|
|
20873
|
+
}
|
|
20874
|
+
|
|
20875
|
+
/**
|
|
20876
|
+
* Decoder for bedpe records.
|
|
20358
20877
|
*
|
|
20359
|
-
*
|
|
20878
|
+
* Bedpe format was created by Aaron Quinlan et al as part of the bedtools project.
|
|
20879
|
+
* The spec is here: https://bedtools.readthedocs.io/en/latest/content/general-usage.html,
|
|
20360
20880
|
*
|
|
20361
|
-
*
|
|
20362
|
-
*
|
|
20363
|
-
* in the Software without restriction, including without limitation the rights
|
|
20364
|
-
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
20365
|
-
* copies of the Software, and to permit persons to whom the Software is
|
|
20366
|
-
* furnished to do so, subject to the following conditions:
|
|
20881
|
+
* 1 2 3 4 5 6 7 8 9 10 11-
|
|
20882
|
+
* chrom1 start1 end1 chrom2 start2 end2 name score strand1 strand2 <Any number of additional, user-defined fields>
|
|
20367
20883
|
*
|
|
20368
|
-
*
|
|
20369
|
-
*
|
|
20884
|
+
* However there are off spec variants, an important one being a 7 column format with score in place of the standard
|
|
20885
|
+
* name column.
|
|
20370
20886
|
*
|
|
20887
|
+
* A common variant is a "hiccups" output file, which is standard bedpe with the exception of a header line
|
|
20888
|
+
* of the form
|
|
20371
20889
|
*
|
|
20372
|
-
*
|
|
20373
|
-
*
|
|
20374
|
-
*
|
|
20375
|
-
*
|
|
20376
|
-
*
|
|
20377
|
-
*
|
|
20378
|
-
*
|
|
20890
|
+
* chr1 x1 x2 chr2 y1 y2 name score strand1 strand2 color observed expectedBL expectedDonut expectedH expectedV fdrBL fdrDonut fdrH fdrV
|
|
20891
|
+
*
|
|
20892
|
+
* The "hiccups" output is apparently not standardized as this is found at ENCODE, with a non-helpful "tsv" extension
|
|
20893
|
+
*
|
|
20894
|
+
* chr1 x1 x2 chr2 y1 y2 color observed expectedBL expectedDonut expectedH expectedV fdrBL fdrDonut fdrH fdrV numCollapsed centroid1 centroid2 radius
|
|
20895
|
+
* chr9 136790000 136795000 chr9 136990000 136995000 0,255,255 101.0 31.100368 38.40316 56.948116 34.040756 1.1876738E-13 1.05936405E-13 2.5148233E-4 1.7220993E-13 1 136792500 136992500 25590
|
|
20896
|
+
*
|
|
20897
|
+
* The "hiccups" documentation specfies yet another set of column headers
|
|
20898
|
+
* chromosome1 x1 x2 chromosome2 y1 y2 color observed expected_bottom_left expected_donut expected_horizontal expected_vertical fdr_bottom_left fdr_donut fdr_horizontal fdr_vertical number_collapsed centroid1 centroid2 radius
|
|
20899
|
+
*
|
|
20900
|
+
* @param tokens
|
|
20901
|
+
* @param ignore
|
|
20902
|
+
* @returns {{start1: number, end2: number, end1: number, chr1: *, chr2: *, start2: number}|undefined}
|
|
20379
20903
|
*/
|
|
20380
20904
|
|
|
20381
|
-
|
|
20382
|
-
|
|
20383
|
-
|
|
20905
|
+
function decodeBedpe(tokens, header) {
|
|
20906
|
+
if (tokens.length < 6) {
|
|
20907
|
+
console.log("Skipping line: " + tokens.join(' '));
|
|
20908
|
+
return undefined;
|
|
20909
|
+
}
|
|
20384
20910
|
|
|
20385
|
-
|
|
20386
|
-
|
|
20387
|
-
|
|
20388
|
-
|
|
20389
|
-
|
|
20390
|
-
|
|
20391
|
-
|
|
20392
|
-
|
|
20393
|
-
if (properties.hasOwnProperty(key)) {
|
|
20394
|
-
var value = properties[key];
|
|
20395
|
-
ctx[key] = value;
|
|
20396
|
-
}
|
|
20397
|
-
}
|
|
20398
|
-
},
|
|
20399
|
-
strokeLine: function (ctx, x1, y1, x2, y2, properties) {
|
|
20400
|
-
x1 = Math.floor(x1) + 0.5;
|
|
20401
|
-
y1 = Math.floor(y1) + 0.5;
|
|
20402
|
-
x2 = Math.floor(x2) + 0.5;
|
|
20403
|
-
y2 = Math.floor(y2) + 0.5;
|
|
20911
|
+
var feature = {
|
|
20912
|
+
chr1: tokens[0],
|
|
20913
|
+
start1: Number.parseInt(tokens[1]),
|
|
20914
|
+
end1: Number.parseInt(tokens[2]),
|
|
20915
|
+
chr2: tokens[3],
|
|
20916
|
+
start2: Number.parseInt(tokens[4]),
|
|
20917
|
+
end2: Number.parseInt(tokens[5])
|
|
20918
|
+
};
|
|
20404
20919
|
|
|
20405
|
-
|
|
20406
|
-
|
|
20407
|
-
|
|
20408
|
-
|
|
20920
|
+
if (isNaN(feature.start1) || isNaN(feature.end1) || isNaN(feature.start2) || isNaN(feature.end2)) {
|
|
20921
|
+
//throw Error(`Error parsing line: ${tokens.join('\t')}`);
|
|
20922
|
+
return undefined;
|
|
20923
|
+
} // Determine if this is a "hiccups" file. Store result on "header" so it doesn't need repeated for every feature
|
|
20409
20924
|
|
|
20410
|
-
ctx.beginPath();
|
|
20411
|
-
ctx.moveTo(x1, y1);
|
|
20412
|
-
ctx.lineTo(x2, y2);
|
|
20413
|
-
ctx.stroke();
|
|
20414
|
-
if (properties) ctx.restore();
|
|
20415
|
-
},
|
|
20416
|
-
fillRect: function (ctx, x, y, w, h, properties) {
|
|
20417
|
-
x = Math.round(x);
|
|
20418
|
-
y = Math.round(y);
|
|
20419
20925
|
|
|
20420
|
-
|
|
20421
|
-
|
|
20422
|
-
|
|
20423
|
-
}
|
|
20926
|
+
if (header && header.hiccups === undefined) {
|
|
20927
|
+
header.hiccups = header.columnNames ? isHiccups(header.columnNames) : false;
|
|
20928
|
+
}
|
|
20424
20929
|
|
|
20425
|
-
|
|
20426
|
-
|
|
20427
|
-
},
|
|
20428
|
-
fillPolygon: function (ctx, x, y, properties) {
|
|
20429
|
-
if (properties) {
|
|
20430
|
-
ctx.save();
|
|
20431
|
-
IGVGraphics.setProperties(ctx, properties);
|
|
20432
|
-
}
|
|
20930
|
+
const hiccups = header && header.hiccups;
|
|
20931
|
+
const stdColumns = hiccups ? 6 : 10;
|
|
20433
20932
|
|
|
20434
|
-
|
|
20435
|
-
|
|
20436
|
-
|
|
20437
|
-
},
|
|
20438
|
-
strokePolygon: function (ctx, x, y, properties) {
|
|
20439
|
-
if (properties) {
|
|
20440
|
-
ctx.save();
|
|
20441
|
-
IGVGraphics.setProperties(ctx, properties);
|
|
20933
|
+
if (!hiccups) {
|
|
20934
|
+
if (tokens.length > 6 && tokens[6] !== ".") {
|
|
20935
|
+
feature.name = tokens[6];
|
|
20442
20936
|
}
|
|
20443
20937
|
|
|
20444
|
-
|
|
20445
|
-
|
|
20446
|
-
if (properties) ctx.restore();
|
|
20447
|
-
},
|
|
20448
|
-
fillText: function (ctx, text, x, y, properties, transforms) {
|
|
20449
|
-
if (properties || transforms) {
|
|
20450
|
-
ctx.save();
|
|
20938
|
+
if (tokens.length > 7 && tokens[7] !== ".") {
|
|
20939
|
+
feature.score = Number(tokens[7]);
|
|
20451
20940
|
}
|
|
20452
20941
|
|
|
20453
|
-
if (
|
|
20454
|
-
|
|
20942
|
+
if (tokens.length > 8 && tokens[8] !== ".") {
|
|
20943
|
+
feature.strand1 = tokens[8];
|
|
20455
20944
|
}
|
|
20456
20945
|
|
|
20457
|
-
if (
|
|
20458
|
-
|
|
20459
|
-
|
|
20460
|
-
|
|
20461
|
-
for (var transform in transforms) {
|
|
20462
|
-
var value = transforms[transform]; // TODO: Add error checking for robustness
|
|
20946
|
+
if (tokens.length > 9 && tokens[9] !== ".") {
|
|
20947
|
+
feature.strand2 = tokens[9];
|
|
20948
|
+
}
|
|
20949
|
+
} // Optional extra columns
|
|
20463
20950
|
|
|
20464
|
-
if (transform === 'translate') {
|
|
20465
|
-
ctx.translate(value['x'], value['y']);
|
|
20466
|
-
}
|
|
20467
20951
|
|
|
20468
|
-
|
|
20469
|
-
|
|
20470
|
-
}
|
|
20471
|
-
}
|
|
20952
|
+
if (header) {
|
|
20953
|
+
const colorColumn = header.colorColumn;
|
|
20472
20954
|
|
|
20473
|
-
|
|
20474
|
-
|
|
20475
|
-
ctx.fillText(text, x, y);
|
|
20955
|
+
if (colorColumn && colorColumn < tokens.length) {
|
|
20956
|
+
feature.color = IGVColor.createColorString(tokens[colorColumn]);
|
|
20476
20957
|
}
|
|
20477
20958
|
|
|
20478
|
-
|
|
20479
|
-
|
|
20480
|
-
|
|
20481
|
-
|
|
20482
|
-
ctx.save();
|
|
20959
|
+
const thicknessColumn = header.thicknessColumn;
|
|
20960
|
+
|
|
20961
|
+
if (thicknessColumn && thicknessColumn < tokens.length) {
|
|
20962
|
+
feature.thickness = tokens[thicknessColumn];
|
|
20483
20963
|
}
|
|
20484
20964
|
|
|
20485
|
-
if (
|
|
20486
|
-
|
|
20965
|
+
if (tokens.length > stdColumns && header.columnNames && header.columnNames.length === tokens.length) {
|
|
20966
|
+
feature.extras = tokens.slice(stdColumns);
|
|
20487
20967
|
}
|
|
20968
|
+
} // Set total extent of feature
|
|
20488
20969
|
|
|
20489
|
-
if (transforms) {
|
|
20490
|
-
ctx.translate(x, y);
|
|
20491
20970
|
|
|
20492
|
-
|
|
20493
|
-
|
|
20971
|
+
if (feature.chr1 === feature.chr2) {
|
|
20972
|
+
feature.chr = feature.chr1;
|
|
20973
|
+
feature.start = Math.min(feature.start1, feature.start2);
|
|
20974
|
+
feature.end = Math.max(feature.end1, feature.end2);
|
|
20975
|
+
}
|
|
20494
20976
|
|
|
20495
|
-
|
|
20496
|
-
|
|
20497
|
-
|
|
20498
|
-
|
|
20499
|
-
|
|
20500
|
-
|
|
20501
|
-
}
|
|
20502
|
-
}
|
|
20503
|
-
|
|
20504
|
-
ctx.strokeText(text, 0, 0);
|
|
20505
|
-
} else {
|
|
20506
|
-
ctx.strokeText(text, x, y);
|
|
20507
|
-
}
|
|
20508
|
-
|
|
20509
|
-
if (properties || transforms) ctx.restore();
|
|
20510
|
-
},
|
|
20511
|
-
strokeCircle: function (ctx, x, y, radius, properties) {
|
|
20512
|
-
if (properties) {
|
|
20513
|
-
ctx.save();
|
|
20514
|
-
IGVGraphics.setProperties(ctx, properties);
|
|
20515
|
-
}
|
|
20516
|
-
|
|
20517
|
-
ctx.beginPath();
|
|
20518
|
-
ctx.arc(x, y, radius, 0, 2 * Math.PI);
|
|
20519
|
-
ctx.stroke();
|
|
20520
|
-
if (properties) ctx.restore();
|
|
20521
|
-
},
|
|
20522
|
-
fillCircle: function (ctx, x, y, radius, properties) {
|
|
20523
|
-
if (properties) {
|
|
20524
|
-
ctx.save();
|
|
20525
|
-
IGVGraphics.setProperties(ctx, properties);
|
|
20526
|
-
}
|
|
20527
|
-
|
|
20528
|
-
ctx.beginPath();
|
|
20529
|
-
ctx.arc(x, y, radius, 0, 2 * Math.PI);
|
|
20530
|
-
ctx.fill();
|
|
20531
|
-
if (properties) ctx.restore();
|
|
20532
|
-
},
|
|
20533
|
-
drawArrowhead: function (ctx, x, y, size, lineWidth) {
|
|
20534
|
-
ctx.save();
|
|
20535
|
-
|
|
20536
|
-
if (!size) {
|
|
20537
|
-
size = 5;
|
|
20538
|
-
}
|
|
20539
|
-
|
|
20540
|
-
if (lineWidth) {
|
|
20541
|
-
ctx.lineWidth = lineWidth;
|
|
20542
|
-
}
|
|
20543
|
-
|
|
20544
|
-
ctx.beginPath();
|
|
20545
|
-
ctx.moveTo(x, y - size / 2);
|
|
20546
|
-
ctx.lineTo(x, y + size / 2);
|
|
20547
|
-
ctx.lineTo(x + size, y);
|
|
20548
|
-
ctx.lineTo(x, y - size / 2);
|
|
20549
|
-
ctx.closePath();
|
|
20550
|
-
ctx.fill();
|
|
20551
|
-
ctx.restore();
|
|
20552
|
-
},
|
|
20553
|
-
dashedLine: function (ctx, x1, y1, x2, y2, dashLen) {
|
|
20554
|
-
let properties = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : {};
|
|
20555
|
-
if (dashLen === undefined) dashLen = 2;
|
|
20556
|
-
ctx.setLineDash([dashLen, dashLen]);
|
|
20557
|
-
IGVGraphics.strokeLine(ctx, x1, y1, x2, y2, properties);
|
|
20558
|
-
ctx.setLineDash([]);
|
|
20559
|
-
},
|
|
20560
|
-
roundRect: function (ctx, x, y, width, height, radius, fill, stroke) {
|
|
20561
|
-
if (typeof stroke == "undefined") {
|
|
20562
|
-
stroke = true;
|
|
20563
|
-
}
|
|
20564
|
-
|
|
20565
|
-
if (typeof radius === "undefined") {
|
|
20566
|
-
radius = 5;
|
|
20567
|
-
}
|
|
20568
|
-
|
|
20569
|
-
ctx.beginPath();
|
|
20570
|
-
ctx.moveTo(x + radius, y);
|
|
20571
|
-
ctx.lineTo(x + width - radius, y);
|
|
20572
|
-
ctx.quadraticCurveTo(x + width, y, x + width, y + radius);
|
|
20573
|
-
ctx.lineTo(x + width, y + height - radius);
|
|
20574
|
-
ctx.quadraticCurveTo(x + width, y + height, x + width - radius, y + height);
|
|
20575
|
-
ctx.lineTo(x + radius, y + height);
|
|
20576
|
-
ctx.quadraticCurveTo(x, y + height, x, y + height - radius);
|
|
20577
|
-
ctx.lineTo(x, y + radius);
|
|
20578
|
-
ctx.quadraticCurveTo(x, y, x + radius, y);
|
|
20579
|
-
ctx.closePath();
|
|
20580
|
-
|
|
20581
|
-
if (stroke) {
|
|
20582
|
-
ctx.stroke();
|
|
20583
|
-
}
|
|
20584
|
-
|
|
20585
|
-
if (fill) {
|
|
20586
|
-
ctx.fill();
|
|
20587
|
-
}
|
|
20588
|
-
},
|
|
20589
|
-
polygon: function (ctx, x, y, fill, stroke) {
|
|
20590
|
-
if (typeof stroke == "undefined") {
|
|
20591
|
-
stroke = true;
|
|
20592
|
-
}
|
|
20977
|
+
return feature;
|
|
20978
|
+
}
|
|
20979
|
+
/**
|
|
20980
|
+
* Hack for non-standard bedPE formats, where numeric score can be in column 7 (name field from spec)
|
|
20981
|
+
* @param features
|
|
20982
|
+
*/
|
|
20593
20983
|
|
|
20594
|
-
ctx.beginPath();
|
|
20595
|
-
var len = x.length;
|
|
20596
|
-
ctx.moveTo(x[0], y[0]);
|
|
20597
20984
|
|
|
20598
|
-
|
|
20599
|
-
|
|
20600
|
-
}
|
|
20985
|
+
function fixBedPE(features) {
|
|
20986
|
+
if (features.length == 0) return; // Assume all features have same properties
|
|
20601
20987
|
|
|
20602
|
-
|
|
20988
|
+
const firstFeature = features[0];
|
|
20603
20989
|
|
|
20604
|
-
|
|
20605
|
-
|
|
20990
|
+
if (firstFeature.score === undefined && firstFeature.name !== undefined) {
|
|
20991
|
+
// Name field (col 7) is sometimes used for score.
|
|
20992
|
+
for (let f of features) {
|
|
20993
|
+
if (!(isNumber(f.name) || f.name === '.')) return;
|
|
20606
20994
|
}
|
|
20607
20995
|
|
|
20608
|
-
|
|
20609
|
-
|
|
20996
|
+
for (let f of features) {
|
|
20997
|
+
f.score = Number(f.name);
|
|
20998
|
+
delete f.name;
|
|
20610
20999
|
}
|
|
20611
|
-
}
|
|
20612
|
-
};
|
|
20613
|
-
|
|
20614
|
-
function doPath(ctx, x, y) {
|
|
20615
|
-
var i,
|
|
20616
|
-
len = x.length;
|
|
21000
|
+
} // Make copies of inter-chr features, one for each chromosome
|
|
20617
21001
|
|
|
20618
|
-
for (i = 0; i < len; i++) {
|
|
20619
|
-
x[i] = Math.round(x[i]);
|
|
20620
|
-
y[i] = Math.round(y[i]);
|
|
20621
|
-
}
|
|
20622
21002
|
|
|
20623
|
-
|
|
20624
|
-
ctx.moveTo(x[0], y[0]);
|
|
21003
|
+
const interChrFeatures = features.filter(f => f.chr1 !== f.chr2);
|
|
20625
21004
|
|
|
20626
|
-
for (
|
|
20627
|
-
|
|
21005
|
+
for (let f1 of interChrFeatures) {
|
|
21006
|
+
const f2 = Object.assign({}, f1);
|
|
21007
|
+
f2.dup = true;
|
|
21008
|
+
features.push(f2);
|
|
21009
|
+
f1.chr = f1.chr1;
|
|
21010
|
+
f1.start = f1.start1;
|
|
21011
|
+
f1.end = f1.end1;
|
|
21012
|
+
f2.chr = f2.chr2;
|
|
21013
|
+
f2.start = f2.start2;
|
|
21014
|
+
f2.end = f2.end2;
|
|
20628
21015
|
}
|
|
20629
|
-
|
|
20630
|
-
ctx.closePath();
|
|
20631
21016
|
}
|
|
21017
|
+
/**
|
|
21018
|
+
* Special decoder for Hic Domain files. In these files feature1 == feature2, they are really bed records.
|
|
21019
|
+
* @param tokens
|
|
21020
|
+
* @param ignore
|
|
21021
|
+
* @returns {*}
|
|
21022
|
+
*/
|
|
20632
21023
|
|
|
20633
|
-
var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
|
|
20634
|
-
|
|
20635
|
-
function createCommonjsModule(fn) {
|
|
20636
|
-
var module = { exports: {} };
|
|
20637
|
-
return fn(module, module.exports), module.exports;
|
|
20638
|
-
}
|
|
20639
|
-
|
|
20640
|
-
var check = function (it) {
|
|
20641
|
-
return it && it.Math == Math && it;
|
|
20642
|
-
}; // https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
|
|
20643
|
-
|
|
20644
|
-
|
|
20645
|
-
var global$1 = // eslint-disable-next-line es-x/no-global-this -- safe
|
|
20646
|
-
check(typeof globalThis == 'object' && globalThis) || check(typeof window == 'object' && window) || // eslint-disable-next-line no-restricted-globals -- safe
|
|
20647
|
-
check(typeof self == 'object' && self) || check(typeof commonjsGlobal == 'object' && commonjsGlobal) || // eslint-disable-next-line no-new-func -- fallback
|
|
20648
|
-
function () {
|
|
20649
|
-
return this;
|
|
20650
|
-
}() || Function('return this')();
|
|
20651
|
-
|
|
20652
|
-
var fails = function (exec) {
|
|
20653
|
-
try {
|
|
20654
|
-
return !!exec();
|
|
20655
|
-
} catch (error) {
|
|
20656
|
-
return true;
|
|
20657
|
-
}
|
|
20658
|
-
};
|
|
20659
|
-
|
|
20660
|
-
var descriptors = !fails(function () {
|
|
20661
|
-
// eslint-disable-next-line es-x/no-object-defineproperty -- required for testing
|
|
20662
|
-
return Object.defineProperty({}, 1, {
|
|
20663
|
-
get: function () {
|
|
20664
|
-
return 7;
|
|
20665
|
-
}
|
|
20666
|
-
})[1] != 7;
|
|
20667
|
-
});
|
|
20668
|
-
|
|
20669
|
-
var functionBindNative = !fails(function () {
|
|
20670
|
-
// eslint-disable-next-line es-x/no-function-prototype-bind -- safe
|
|
20671
|
-
var test = function () {
|
|
20672
|
-
/* empty */
|
|
20673
|
-
}.bind(); // eslint-disable-next-line no-prototype-builtins -- safe
|
|
20674
|
-
|
|
20675
|
-
|
|
20676
|
-
return typeof test != 'function' || test.hasOwnProperty('prototype');
|
|
20677
|
-
});
|
|
20678
|
-
|
|
20679
|
-
var call$2 = Function.prototype.call;
|
|
20680
|
-
var functionCall = functionBindNative ? call$2.bind(call$2) : function () {
|
|
20681
|
-
return call$2.apply(call$2, arguments);
|
|
20682
|
-
};
|
|
20683
|
-
|
|
20684
|
-
var $propertyIsEnumerable = {}.propertyIsEnumerable; // eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe
|
|
20685
|
-
|
|
20686
|
-
var getOwnPropertyDescriptor$1 = Object.getOwnPropertyDescriptor; // Nashorn ~ JDK8 bug
|
|
20687
|
-
|
|
20688
|
-
var NASHORN_BUG = getOwnPropertyDescriptor$1 && !$propertyIsEnumerable.call({
|
|
20689
|
-
1: 2
|
|
20690
|
-
}, 1); // `Object.prototype.propertyIsEnumerable` method implementation
|
|
20691
|
-
// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable
|
|
20692
|
-
|
|
20693
|
-
var f$5 = NASHORN_BUG ? function propertyIsEnumerable(V) {
|
|
20694
|
-
var descriptor = getOwnPropertyDescriptor$1(this, V);
|
|
20695
|
-
return !!descriptor && descriptor.enumerable;
|
|
20696
|
-
} : $propertyIsEnumerable;
|
|
20697
|
-
var objectPropertyIsEnumerable = {
|
|
20698
|
-
f: f$5
|
|
20699
|
-
};
|
|
20700
21024
|
|
|
20701
|
-
|
|
21025
|
+
function decodeBedpeDomain(tokens, header) {
|
|
21026
|
+
if (tokens.length < 8) return undefined;
|
|
20702
21027
|
return {
|
|
20703
|
-
|
|
20704
|
-
|
|
20705
|
-
|
|
20706
|
-
|
|
20707
|
-
|
|
20708
|
-
};
|
|
20709
|
-
|
|
20710
|
-
var FunctionPrototype$2 = Function.prototype;
|
|
20711
|
-
var bind$1 = FunctionPrototype$2.bind;
|
|
20712
|
-
var call$1 = FunctionPrototype$2.call;
|
|
20713
|
-
var uncurryThis = functionBindNative && bind$1.bind(call$1, call$1);
|
|
20714
|
-
var functionUncurryThis = functionBindNative ? function (fn) {
|
|
20715
|
-
return fn && uncurryThis(fn);
|
|
20716
|
-
} : function (fn) {
|
|
20717
|
-
return fn && function () {
|
|
20718
|
-
return call$1.apply(fn, arguments);
|
|
20719
|
-
};
|
|
20720
|
-
};
|
|
20721
|
-
|
|
20722
|
-
var toString$1 = functionUncurryThis({}.toString);
|
|
20723
|
-
var stringSlice = functionUncurryThis(''.slice);
|
|
20724
|
-
|
|
20725
|
-
var classofRaw = function (it) {
|
|
20726
|
-
return stringSlice(toString$1(it), 8, -1);
|
|
20727
|
-
};
|
|
20728
|
-
|
|
20729
|
-
var $Object$2 = Object;
|
|
20730
|
-
var split = functionUncurryThis(''.split); // fallback for non-array-like ES3 and non-enumerable old V8 strings
|
|
20731
|
-
|
|
20732
|
-
var indexedObject = fails(function () {
|
|
20733
|
-
// throws an error in rhino, see https://github.com/mozilla/rhino/issues/346
|
|
20734
|
-
// eslint-disable-next-line no-prototype-builtins -- safe
|
|
20735
|
-
return !$Object$2('z').propertyIsEnumerable(0);
|
|
20736
|
-
}) ? function (it) {
|
|
20737
|
-
return classofRaw(it) == 'String' ? split(it, '') : $Object$2(it);
|
|
20738
|
-
} : $Object$2;
|
|
20739
|
-
|
|
20740
|
-
var $TypeError$6 = TypeError; // `RequireObjectCoercible` abstract operation
|
|
20741
|
-
// https://tc39.es/ecma262/#sec-requireobjectcoercible
|
|
20742
|
-
|
|
20743
|
-
var requireObjectCoercible = function (it) {
|
|
20744
|
-
if (it == undefined) throw $TypeError$6("Can't call method on " + it);
|
|
20745
|
-
return it;
|
|
20746
|
-
};
|
|
20747
|
-
|
|
20748
|
-
var toIndexedObject = function (it) {
|
|
20749
|
-
return indexedObject(requireObjectCoercible(it));
|
|
20750
|
-
};
|
|
20751
|
-
|
|
20752
|
-
// `IsCallable` abstract operation
|
|
20753
|
-
// https://tc39.es/ecma262/#sec-iscallable
|
|
20754
|
-
var isCallable = function (argument) {
|
|
20755
|
-
return typeof argument == 'function';
|
|
20756
|
-
};
|
|
20757
|
-
|
|
20758
|
-
var isObject = function (it) {
|
|
20759
|
-
return typeof it == 'object' ? it !== null : isCallable(it);
|
|
20760
|
-
};
|
|
20761
|
-
|
|
20762
|
-
var aFunction = function (argument) {
|
|
20763
|
-
return isCallable(argument) ? argument : undefined;
|
|
20764
|
-
};
|
|
20765
|
-
|
|
20766
|
-
var getBuiltIn = function (namespace, method) {
|
|
20767
|
-
return arguments.length < 2 ? aFunction(global$1[namespace]) : global$1[namespace] && global$1[namespace][method];
|
|
20768
|
-
};
|
|
20769
|
-
|
|
20770
|
-
var objectIsPrototypeOf = functionUncurryThis({}.isPrototypeOf);
|
|
20771
|
-
|
|
20772
|
-
var engineUserAgent = getBuiltIn('navigator', 'userAgent') || '';
|
|
20773
|
-
|
|
20774
|
-
var process$2 = global$1.process;
|
|
20775
|
-
var Deno = global$1.Deno;
|
|
20776
|
-
var versions = process$2 && process$2.versions || Deno && Deno.version;
|
|
20777
|
-
var v8 = versions && versions.v8;
|
|
20778
|
-
var match, version$1;
|
|
20779
|
-
|
|
20780
|
-
if (v8) {
|
|
20781
|
-
match = v8.split('.'); // in old Chrome, versions of V8 isn't V8 = Chrome / 10
|
|
20782
|
-
// but their correct versions are not interesting for us
|
|
20783
|
-
|
|
20784
|
-
version$1 = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);
|
|
20785
|
-
} // BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`
|
|
20786
|
-
// so check `userAgent` even if `.v8` exists, but 0
|
|
20787
|
-
|
|
20788
|
-
|
|
20789
|
-
if (!version$1 && engineUserAgent) {
|
|
20790
|
-
match = engineUserAgent.match(/Edge\/(\d+)/);
|
|
20791
|
-
|
|
20792
|
-
if (!match || match[1] >= 74) {
|
|
20793
|
-
match = engineUserAgent.match(/Chrome\/(\d+)/);
|
|
20794
|
-
if (match) version$1 = +match[1];
|
|
20795
|
-
}
|
|
20796
|
-
}
|
|
20797
|
-
|
|
20798
|
-
var engineV8Version = version$1;
|
|
20799
|
-
|
|
20800
|
-
/* eslint-disable es-x/no-symbol -- required for testing */
|
|
20801
|
-
|
|
20802
|
-
var nativeSymbol = !!Object.getOwnPropertySymbols && !fails(function () {
|
|
20803
|
-
var symbol = Symbol(); // Chrome 38 Symbol has incorrect toString conversion
|
|
20804
|
-
// `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances
|
|
20805
|
-
|
|
20806
|
-
return !String(symbol) || !(Object(symbol) instanceof Symbol) || // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances
|
|
20807
|
-
!Symbol.sham && engineV8Version && engineV8Version < 41;
|
|
20808
|
-
});
|
|
20809
|
-
|
|
20810
|
-
/* eslint-disable es-x/no-symbol -- required for testing */
|
|
20811
|
-
var useSymbolAsUid = nativeSymbol && !Symbol.sham && typeof Symbol.iterator == 'symbol';
|
|
20812
|
-
|
|
20813
|
-
var $Object$1 = Object;
|
|
20814
|
-
var isSymbol = useSymbolAsUid ? function (it) {
|
|
20815
|
-
return typeof it == 'symbol';
|
|
20816
|
-
} : function (it) {
|
|
20817
|
-
var $Symbol = getBuiltIn('Symbol');
|
|
20818
|
-
return isCallable($Symbol) && objectIsPrototypeOf($Symbol.prototype, $Object$1(it));
|
|
20819
|
-
};
|
|
20820
|
-
|
|
20821
|
-
var $String$1 = String;
|
|
20822
|
-
|
|
20823
|
-
var tryToString = function (argument) {
|
|
20824
|
-
try {
|
|
20825
|
-
return $String$1(argument);
|
|
20826
|
-
} catch (error) {
|
|
20827
|
-
return 'Object';
|
|
20828
|
-
}
|
|
20829
|
-
};
|
|
20830
|
-
|
|
20831
|
-
var $TypeError$5 = TypeError; // `Assert: IsCallable(argument) is true`
|
|
20832
|
-
|
|
20833
|
-
var aCallable = function (argument) {
|
|
20834
|
-
if (isCallable(argument)) return argument;
|
|
20835
|
-
throw $TypeError$5(tryToString(argument) + ' is not a function');
|
|
20836
|
-
};
|
|
20837
|
-
|
|
20838
|
-
// https://tc39.es/ecma262/#sec-getmethod
|
|
20839
|
-
|
|
20840
|
-
var getMethod = function (V, P) {
|
|
20841
|
-
var func = V[P];
|
|
20842
|
-
return func == null ? undefined : aCallable(func);
|
|
20843
|
-
};
|
|
20844
|
-
|
|
20845
|
-
var $TypeError$4 = TypeError; // `OrdinaryToPrimitive` abstract operation
|
|
20846
|
-
// https://tc39.es/ecma262/#sec-ordinarytoprimitive
|
|
20847
|
-
|
|
20848
|
-
var ordinaryToPrimitive = function (input, pref) {
|
|
20849
|
-
var fn, val;
|
|
20850
|
-
if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = functionCall(fn, input))) return val;
|
|
20851
|
-
if (isCallable(fn = input.valueOf) && !isObject(val = functionCall(fn, input))) return val;
|
|
20852
|
-
if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = functionCall(fn, input))) return val;
|
|
20853
|
-
throw $TypeError$4("Can't convert object to primitive value");
|
|
20854
|
-
};
|
|
20855
|
-
|
|
20856
|
-
var defineProperty$1 = Object.defineProperty;
|
|
20857
|
-
|
|
20858
|
-
var defineGlobalProperty = function (key, value) {
|
|
20859
|
-
try {
|
|
20860
|
-
defineProperty$1(global$1, key, {
|
|
20861
|
-
value: value,
|
|
20862
|
-
configurable: true,
|
|
20863
|
-
writable: true
|
|
20864
|
-
});
|
|
20865
|
-
} catch (error) {
|
|
20866
|
-
global$1[key] = value;
|
|
20867
|
-
}
|
|
20868
|
-
|
|
20869
|
-
return value;
|
|
20870
|
-
};
|
|
20871
|
-
|
|
20872
|
-
var SHARED = '__core-js_shared__';
|
|
20873
|
-
var store$1 = global$1[SHARED] || defineGlobalProperty(SHARED, {});
|
|
20874
|
-
var sharedStore = store$1;
|
|
20875
|
-
|
|
20876
|
-
var shared = createCommonjsModule(function (module) {
|
|
20877
|
-
(module.exports = function (key, value) {
|
|
20878
|
-
return sharedStore[key] || (sharedStore[key] = value !== undefined ? value : {});
|
|
20879
|
-
})('versions', []).push({
|
|
20880
|
-
version: '3.24.1',
|
|
20881
|
-
mode: 'global',
|
|
20882
|
-
copyright: '© 2014-2022 Denis Pushkarev (zloirock.ru)',
|
|
20883
|
-
license: 'https://github.com/zloirock/core-js/blob/v3.24.1/LICENSE',
|
|
20884
|
-
source: 'https://github.com/zloirock/core-js'
|
|
20885
|
-
});
|
|
20886
|
-
});
|
|
20887
|
-
|
|
20888
|
-
var $Object = Object; // `ToObject` abstract operation
|
|
20889
|
-
// https://tc39.es/ecma262/#sec-toobject
|
|
20890
|
-
|
|
20891
|
-
var toObject = function (argument) {
|
|
20892
|
-
return $Object(requireObjectCoercible(argument));
|
|
20893
|
-
};
|
|
20894
|
-
|
|
20895
|
-
var hasOwnProperty = functionUncurryThis({}.hasOwnProperty); // `HasOwnProperty` abstract operation
|
|
20896
|
-
// https://tc39.es/ecma262/#sec-hasownproperty
|
|
20897
|
-
// eslint-disable-next-line es-x/no-object-hasown -- safe
|
|
20898
|
-
|
|
20899
|
-
var hasOwnProperty_1 = Object.hasOwn || function hasOwn(it, key) {
|
|
20900
|
-
return hasOwnProperty(toObject(it), key);
|
|
20901
|
-
};
|
|
20902
|
-
|
|
20903
|
-
var id = 0;
|
|
20904
|
-
var postfix = Math.random();
|
|
20905
|
-
var toString = functionUncurryThis(1.0.toString);
|
|
20906
|
-
|
|
20907
|
-
var uid = function (key) {
|
|
20908
|
-
return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);
|
|
20909
|
-
};
|
|
20910
|
-
|
|
20911
|
-
var WellKnownSymbolsStore = shared('wks');
|
|
20912
|
-
var Symbol$1 = global$1.Symbol;
|
|
20913
|
-
var symbolFor = Symbol$1 && Symbol$1['for'];
|
|
20914
|
-
var createWellKnownSymbol = useSymbolAsUid ? Symbol$1 : Symbol$1 && Symbol$1.withoutSetter || uid;
|
|
20915
|
-
|
|
20916
|
-
var wellKnownSymbol = function (name) {
|
|
20917
|
-
if (!hasOwnProperty_1(WellKnownSymbolsStore, name) || !(nativeSymbol || typeof WellKnownSymbolsStore[name] == 'string')) {
|
|
20918
|
-
var description = 'Symbol.' + name;
|
|
20919
|
-
|
|
20920
|
-
if (nativeSymbol && hasOwnProperty_1(Symbol$1, name)) {
|
|
20921
|
-
WellKnownSymbolsStore[name] = Symbol$1[name];
|
|
20922
|
-
} else if (useSymbolAsUid && symbolFor) {
|
|
20923
|
-
WellKnownSymbolsStore[name] = symbolFor(description);
|
|
20924
|
-
} else {
|
|
20925
|
-
WellKnownSymbolsStore[name] = createWellKnownSymbol(description);
|
|
20926
|
-
}
|
|
20927
|
-
}
|
|
20928
|
-
|
|
20929
|
-
return WellKnownSymbolsStore[name];
|
|
20930
|
-
};
|
|
20931
|
-
|
|
20932
|
-
var $TypeError$3 = TypeError;
|
|
20933
|
-
var TO_PRIMITIVE = wellKnownSymbol('toPrimitive'); // `ToPrimitive` abstract operation
|
|
20934
|
-
// https://tc39.es/ecma262/#sec-toprimitive
|
|
20935
|
-
|
|
20936
|
-
var toPrimitive = function (input, pref) {
|
|
20937
|
-
if (!isObject(input) || isSymbol(input)) return input;
|
|
20938
|
-
var exoticToPrim = getMethod(input, TO_PRIMITIVE);
|
|
20939
|
-
var result;
|
|
20940
|
-
|
|
20941
|
-
if (exoticToPrim) {
|
|
20942
|
-
if (pref === undefined) pref = 'default';
|
|
20943
|
-
result = functionCall(exoticToPrim, input, pref);
|
|
20944
|
-
if (!isObject(result) || isSymbol(result)) return result;
|
|
20945
|
-
throw $TypeError$3("Can't convert object to primitive value");
|
|
20946
|
-
}
|
|
20947
|
-
|
|
20948
|
-
if (pref === undefined) pref = 'number';
|
|
20949
|
-
return ordinaryToPrimitive(input, pref);
|
|
20950
|
-
};
|
|
20951
|
-
|
|
20952
|
-
// https://tc39.es/ecma262/#sec-topropertykey
|
|
20953
|
-
|
|
20954
|
-
var toPropertyKey = function (argument) {
|
|
20955
|
-
var key = toPrimitive(argument, 'string');
|
|
20956
|
-
return isSymbol(key) ? key : key + '';
|
|
20957
|
-
};
|
|
20958
|
-
|
|
20959
|
-
var document$1 = global$1.document; // typeof document.createElement is 'object' in old IE
|
|
20960
|
-
|
|
20961
|
-
var EXISTS$1 = isObject(document$1) && isObject(document$1.createElement);
|
|
20962
|
-
|
|
20963
|
-
var documentCreateElement = function (it) {
|
|
20964
|
-
return EXISTS$1 ? document$1.createElement(it) : {};
|
|
20965
|
-
};
|
|
20966
|
-
|
|
20967
|
-
var ie8DomDefine = !descriptors && !fails(function () {
|
|
20968
|
-
// eslint-disable-next-line es-x/no-object-defineproperty -- required for testing
|
|
20969
|
-
return Object.defineProperty(documentCreateElement('div'), 'a', {
|
|
20970
|
-
get: function () {
|
|
20971
|
-
return 7;
|
|
20972
|
-
}
|
|
20973
|
-
}).a != 7;
|
|
20974
|
-
});
|
|
20975
|
-
|
|
20976
|
-
var $getOwnPropertyDescriptor$1 = Object.getOwnPropertyDescriptor; // `Object.getOwnPropertyDescriptor` method
|
|
20977
|
-
// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor
|
|
20978
|
-
|
|
20979
|
-
var f$4 = descriptors ? $getOwnPropertyDescriptor$1 : function getOwnPropertyDescriptor(O, P) {
|
|
20980
|
-
O = toIndexedObject(O);
|
|
20981
|
-
P = toPropertyKey(P);
|
|
20982
|
-
if (ie8DomDefine) try {
|
|
20983
|
-
return $getOwnPropertyDescriptor$1(O, P);
|
|
20984
|
-
} catch (error) {
|
|
20985
|
-
/* empty */
|
|
20986
|
-
}
|
|
20987
|
-
if (hasOwnProperty_1(O, P)) return createPropertyDescriptor(!functionCall(objectPropertyIsEnumerable.f, O, P), O[P]);
|
|
20988
|
-
};
|
|
20989
|
-
var objectGetOwnPropertyDescriptor = {
|
|
20990
|
-
f: f$4
|
|
20991
|
-
};
|
|
20992
|
-
|
|
20993
|
-
// https://bugs.chromium.org/p/v8/issues/detail?id=3334
|
|
20994
|
-
|
|
20995
|
-
var v8PrototypeDefineBug = descriptors && fails(function () {
|
|
20996
|
-
// eslint-disable-next-line es-x/no-object-defineproperty -- required for testing
|
|
20997
|
-
return Object.defineProperty(function () {
|
|
20998
|
-
/* empty */
|
|
20999
|
-
}, 'prototype', {
|
|
21000
|
-
value: 42,
|
|
21001
|
-
writable: false
|
|
21002
|
-
}).prototype != 42;
|
|
21003
|
-
});
|
|
21004
|
-
|
|
21005
|
-
var $String = String;
|
|
21006
|
-
var $TypeError$2 = TypeError; // `Assert: Type(argument) is Object`
|
|
21007
|
-
|
|
21008
|
-
var anObject = function (argument) {
|
|
21009
|
-
if (isObject(argument)) return argument;
|
|
21010
|
-
throw $TypeError$2($String(argument) + ' is not an object');
|
|
21011
|
-
};
|
|
21012
|
-
|
|
21013
|
-
var $TypeError$1 = TypeError; // eslint-disable-next-line es-x/no-object-defineproperty -- safe
|
|
21014
|
-
|
|
21015
|
-
var $defineProperty = Object.defineProperty; // eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe
|
|
21016
|
-
|
|
21017
|
-
var $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
|
|
21018
|
-
var ENUMERABLE = 'enumerable';
|
|
21019
|
-
var CONFIGURABLE$1 = 'configurable';
|
|
21020
|
-
var WRITABLE = 'writable'; // `Object.defineProperty` method
|
|
21021
|
-
// https://tc39.es/ecma262/#sec-object.defineproperty
|
|
21022
|
-
|
|
21023
|
-
var f$3 = descriptors ? v8PrototypeDefineBug ? function defineProperty(O, P, Attributes) {
|
|
21024
|
-
anObject(O);
|
|
21025
|
-
P = toPropertyKey(P);
|
|
21026
|
-
anObject(Attributes);
|
|
21027
|
-
|
|
21028
|
-
if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {
|
|
21029
|
-
var current = $getOwnPropertyDescriptor(O, P);
|
|
21030
|
-
|
|
21031
|
-
if (current && current[WRITABLE]) {
|
|
21032
|
-
O[P] = Attributes.value;
|
|
21033
|
-
Attributes = {
|
|
21034
|
-
configurable: CONFIGURABLE$1 in Attributes ? Attributes[CONFIGURABLE$1] : current[CONFIGURABLE$1],
|
|
21035
|
-
enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],
|
|
21036
|
-
writable: false
|
|
21037
|
-
};
|
|
21038
|
-
}
|
|
21039
|
-
}
|
|
21040
|
-
|
|
21041
|
-
return $defineProperty(O, P, Attributes);
|
|
21042
|
-
} : $defineProperty : function defineProperty(O, P, Attributes) {
|
|
21043
|
-
anObject(O);
|
|
21044
|
-
P = toPropertyKey(P);
|
|
21045
|
-
anObject(Attributes);
|
|
21046
|
-
if (ie8DomDefine) try {
|
|
21047
|
-
return $defineProperty(O, P, Attributes);
|
|
21048
|
-
} catch (error) {
|
|
21049
|
-
/* empty */
|
|
21050
|
-
}
|
|
21051
|
-
if ('get' in Attributes || 'set' in Attributes) throw $TypeError$1('Accessors not supported');
|
|
21052
|
-
if ('value' in Attributes) O[P] = Attributes.value;
|
|
21053
|
-
return O;
|
|
21054
|
-
};
|
|
21055
|
-
var objectDefineProperty = {
|
|
21056
|
-
f: f$3
|
|
21057
|
-
};
|
|
21058
|
-
|
|
21059
|
-
var createNonEnumerableProperty = descriptors ? function (object, key, value) {
|
|
21060
|
-
return objectDefineProperty.f(object, key, createPropertyDescriptor(1, value));
|
|
21061
|
-
} : function (object, key, value) {
|
|
21062
|
-
object[key] = value;
|
|
21063
|
-
return object;
|
|
21064
|
-
};
|
|
21065
|
-
|
|
21066
|
-
var FunctionPrototype$1 = Function.prototype; // eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe
|
|
21067
|
-
|
|
21068
|
-
var getDescriptor = descriptors && Object.getOwnPropertyDescriptor;
|
|
21069
|
-
var EXISTS = hasOwnProperty_1(FunctionPrototype$1, 'name'); // additional protection from minified / mangled / dropped function names
|
|
21070
|
-
|
|
21071
|
-
var PROPER = EXISTS && function something() {
|
|
21072
|
-
/* empty */
|
|
21073
|
-
}.name === 'something';
|
|
21074
|
-
|
|
21075
|
-
var CONFIGURABLE = EXISTS && (!descriptors || descriptors && getDescriptor(FunctionPrototype$1, 'name').configurable);
|
|
21076
|
-
var functionName = {
|
|
21077
|
-
EXISTS: EXISTS,
|
|
21078
|
-
PROPER: PROPER,
|
|
21079
|
-
CONFIGURABLE: CONFIGURABLE
|
|
21080
|
-
};
|
|
21081
|
-
|
|
21082
|
-
var functionToString = functionUncurryThis(Function.toString); // this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper
|
|
21083
|
-
|
|
21084
|
-
if (!isCallable(sharedStore.inspectSource)) {
|
|
21085
|
-
sharedStore.inspectSource = function (it) {
|
|
21086
|
-
return functionToString(it);
|
|
21028
|
+
chr: tokens[0],
|
|
21029
|
+
start: Number.parseInt(tokens[1]),
|
|
21030
|
+
end: Number.parseInt(tokens[2]),
|
|
21031
|
+
color: IGVColor.createColorString(tokens[6]),
|
|
21032
|
+
value: Number(tokens[7])
|
|
21087
21033
|
};
|
|
21088
21034
|
}
|
|
21089
21035
|
|
|
21090
|
-
|
|
21091
|
-
|
|
21092
|
-
var WeakMap$1 = global$1.WeakMap;
|
|
21093
|
-
var nativeWeakMap = isCallable(WeakMap$1) && /native code/.test(inspectSource(WeakMap$1));
|
|
21094
|
-
|
|
21095
|
-
var keys = shared('keys');
|
|
21096
|
-
|
|
21097
|
-
var sharedKey = function (key) {
|
|
21098
|
-
return keys[key] || (keys[key] = uid(key));
|
|
21099
|
-
};
|
|
21100
|
-
|
|
21101
|
-
var hiddenKeys$1 = {};
|
|
21102
|
-
|
|
21103
|
-
var OBJECT_ALREADY_INITIALIZED = 'Object already initialized';
|
|
21104
|
-
var TypeError$1 = global$1.TypeError;
|
|
21105
|
-
var WeakMap = global$1.WeakMap;
|
|
21106
|
-
var set$1, get, has;
|
|
21107
|
-
|
|
21108
|
-
var enforce = function (it) {
|
|
21109
|
-
return has(it) ? get(it) : set$1(it, {});
|
|
21110
|
-
};
|
|
21111
|
-
|
|
21112
|
-
var getterFor = function (TYPE) {
|
|
21113
|
-
return function (it) {
|
|
21114
|
-
var state;
|
|
21115
|
-
|
|
21116
|
-
if (!isObject(it) || (state = get(it)).type !== TYPE) {
|
|
21117
|
-
throw TypeError$1('Incompatible receiver, ' + TYPE + ' required');
|
|
21118
|
-
}
|
|
21119
|
-
|
|
21120
|
-
return state;
|
|
21121
|
-
};
|
|
21122
|
-
};
|
|
21123
|
-
|
|
21124
|
-
if (nativeWeakMap || sharedStore.state) {
|
|
21125
|
-
var store = sharedStore.state || (sharedStore.state = new WeakMap());
|
|
21126
|
-
var wmget = functionUncurryThis(store.get);
|
|
21127
|
-
var wmhas = functionUncurryThis(store.has);
|
|
21128
|
-
var wmset = functionUncurryThis(store.set);
|
|
21129
|
-
|
|
21130
|
-
set$1 = function (it, metadata) {
|
|
21131
|
-
if (wmhas(store, it)) throw new TypeError$1(OBJECT_ALREADY_INITIALIZED);
|
|
21132
|
-
metadata.facade = it;
|
|
21133
|
-
wmset(store, it, metadata);
|
|
21134
|
-
return metadata;
|
|
21135
|
-
};
|
|
21136
|
-
|
|
21137
|
-
get = function (it) {
|
|
21138
|
-
return wmget(store, it) || {};
|
|
21139
|
-
};
|
|
21140
|
-
|
|
21141
|
-
has = function (it) {
|
|
21142
|
-
return wmhas(store, it);
|
|
21143
|
-
};
|
|
21144
|
-
} else {
|
|
21145
|
-
var STATE = sharedKey('state');
|
|
21146
|
-
hiddenKeys$1[STATE] = true;
|
|
21147
|
-
|
|
21148
|
-
set$1 = function (it, metadata) {
|
|
21149
|
-
if (hasOwnProperty_1(it, STATE)) throw new TypeError$1(OBJECT_ALREADY_INITIALIZED);
|
|
21150
|
-
metadata.facade = it;
|
|
21151
|
-
createNonEnumerableProperty(it, STATE, metadata);
|
|
21152
|
-
return metadata;
|
|
21153
|
-
};
|
|
21154
|
-
|
|
21155
|
-
get = function (it) {
|
|
21156
|
-
return hasOwnProperty_1(it, STATE) ? it[STATE] : {};
|
|
21157
|
-
};
|
|
21158
|
-
|
|
21159
|
-
has = function (it) {
|
|
21160
|
-
return hasOwnProperty_1(it, STATE);
|
|
21161
|
-
};
|
|
21036
|
+
function isHiccups(columns) {
|
|
21037
|
+
return columns && (columns.includes("fdrDonut") || columns.includes("fdr_donut"));
|
|
21162
21038
|
}
|
|
21163
21039
|
|
|
21164
|
-
var internalState = {
|
|
21165
|
-
set: set$1,
|
|
21166
|
-
get: get,
|
|
21167
|
-
has: has,
|
|
21168
|
-
enforce: enforce,
|
|
21169
|
-
getterFor: getterFor
|
|
21170
|
-
};
|
|
21171
|
-
|
|
21172
|
-
var makeBuiltIn_1 = createCommonjsModule(function (module) {
|
|
21173
|
-
var CONFIGURABLE_FUNCTION_NAME = functionName.CONFIGURABLE;
|
|
21174
|
-
var enforceInternalState = internalState.enforce;
|
|
21175
|
-
var getInternalState = internalState.get; // eslint-disable-next-line es-x/no-object-defineproperty -- safe
|
|
21176
|
-
|
|
21177
|
-
var defineProperty = Object.defineProperty;
|
|
21178
|
-
var CONFIGURABLE_LENGTH = descriptors && !fails(function () {
|
|
21179
|
-
return defineProperty(function () {
|
|
21180
|
-
/* empty */
|
|
21181
|
-
}, 'length', {
|
|
21182
|
-
value: 8
|
|
21183
|
-
}).length !== 8;
|
|
21184
|
-
});
|
|
21185
|
-
var TEMPLATE = String(String).split('String');
|
|
21186
|
-
|
|
21187
|
-
var makeBuiltIn = module.exports = function (value, name, options) {
|
|
21188
|
-
if (String(name).slice(0, 7) === 'Symbol(') {
|
|
21189
|
-
name = '[' + String(name).replace(/^Symbol\(([^)]*)\)/, '$1') + ']';
|
|
21190
|
-
}
|
|
21191
|
-
|
|
21192
|
-
if (options && options.getter) name = 'get ' + name;
|
|
21193
|
-
if (options && options.setter) name = 'set ' + name;
|
|
21194
|
-
|
|
21195
|
-
if (!hasOwnProperty_1(value, 'name') || CONFIGURABLE_FUNCTION_NAME && value.name !== name) {
|
|
21196
|
-
if (descriptors) defineProperty(value, 'name', {
|
|
21197
|
-
value: name,
|
|
21198
|
-
configurable: true
|
|
21199
|
-
});else value.name = name;
|
|
21200
|
-
}
|
|
21201
|
-
|
|
21202
|
-
if (CONFIGURABLE_LENGTH && options && hasOwnProperty_1(options, 'arity') && value.length !== options.arity) {
|
|
21203
|
-
defineProperty(value, 'length', {
|
|
21204
|
-
value: options.arity
|
|
21205
|
-
});
|
|
21206
|
-
}
|
|
21207
|
-
|
|
21208
|
-
try {
|
|
21209
|
-
if (options && hasOwnProperty_1(options, 'constructor') && options.constructor) {
|
|
21210
|
-
if (descriptors) defineProperty(value, 'prototype', {
|
|
21211
|
-
writable: false
|
|
21212
|
-
}); // in V8 ~ Chrome 53, prototypes of some methods, like `Array.prototype.values`, are non-writable
|
|
21213
|
-
} else if (value.prototype) value.prototype = undefined;
|
|
21214
|
-
} catch (error) {
|
|
21215
|
-
/* empty */
|
|
21216
|
-
}
|
|
21217
|
-
|
|
21218
|
-
var state = enforceInternalState(value);
|
|
21219
|
-
|
|
21220
|
-
if (!hasOwnProperty_1(state, 'source')) {
|
|
21221
|
-
state.source = TEMPLATE.join(typeof name == 'string' ? name : '');
|
|
21222
|
-
}
|
|
21223
|
-
|
|
21224
|
-
return value;
|
|
21225
|
-
}; // add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative
|
|
21226
|
-
// eslint-disable-next-line no-extend-native -- required
|
|
21227
|
-
|
|
21228
|
-
|
|
21229
|
-
Function.prototype.toString = makeBuiltIn(function toString() {
|
|
21230
|
-
return isCallable(this) && getInternalState(this).source || inspectSource(this);
|
|
21231
|
-
}, 'toString');
|
|
21232
|
-
});
|
|
21233
|
-
|
|
21234
|
-
var defineBuiltIn = function (O, key, value, options) {
|
|
21235
|
-
if (!options) options = {};
|
|
21236
|
-
var simple = options.enumerable;
|
|
21237
|
-
var name = options.name !== undefined ? options.name : key;
|
|
21238
|
-
if (isCallable(value)) makeBuiltIn_1(value, name, options);
|
|
21239
|
-
|
|
21240
|
-
if (options.global) {
|
|
21241
|
-
if (simple) O[key] = value;else defineGlobalProperty(key, value);
|
|
21242
|
-
} else {
|
|
21243
|
-
try {
|
|
21244
|
-
if (!options.unsafe) delete O[key];else if (O[key]) simple = true;
|
|
21245
|
-
} catch (error) {
|
|
21246
|
-
/* empty */
|
|
21247
|
-
}
|
|
21248
|
-
|
|
21249
|
-
if (simple) O[key] = value;else objectDefineProperty.f(O, key, {
|
|
21250
|
-
value: value,
|
|
21251
|
-
enumerable: false,
|
|
21252
|
-
configurable: !options.nonConfigurable,
|
|
21253
|
-
writable: !options.nonWritable
|
|
21254
|
-
});
|
|
21255
|
-
}
|
|
21256
|
-
|
|
21257
|
-
return O;
|
|
21258
|
-
};
|
|
21259
|
-
|
|
21260
|
-
var ceil = Math.ceil;
|
|
21261
|
-
var floor = Math.floor; // `Math.trunc` method
|
|
21262
|
-
// https://tc39.es/ecma262/#sec-math.trunc
|
|
21263
|
-
// eslint-disable-next-line es-x/no-math-trunc -- safe
|
|
21264
|
-
|
|
21265
|
-
var mathTrunc = Math.trunc || function trunc(x) {
|
|
21266
|
-
var n = +x;
|
|
21267
|
-
return (n > 0 ? floor : ceil)(n);
|
|
21268
|
-
};
|
|
21269
|
-
|
|
21270
|
-
// https://tc39.es/ecma262/#sec-tointegerorinfinity
|
|
21271
|
-
|
|
21272
|
-
var toIntegerOrInfinity = function (argument) {
|
|
21273
|
-
var number = +argument; // eslint-disable-next-line no-self-compare -- NaN check
|
|
21274
|
-
|
|
21275
|
-
return number !== number || number === 0 ? 0 : mathTrunc(number);
|
|
21276
|
-
};
|
|
21277
|
-
|
|
21278
|
-
var max = Math.max;
|
|
21279
|
-
var min$1 = Math.min; // Helper for a popular repeating case of the spec:
|
|
21280
|
-
// Let integer be ? ToInteger(index).
|
|
21281
|
-
// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).
|
|
21282
|
-
|
|
21283
|
-
var toAbsoluteIndex = function (index, length) {
|
|
21284
|
-
var integer = toIntegerOrInfinity(index);
|
|
21285
|
-
return integer < 0 ? max(integer + length, 0) : min$1(integer, length);
|
|
21286
|
-
};
|
|
21287
|
-
|
|
21288
|
-
var min = Math.min; // `ToLength` abstract operation
|
|
21289
|
-
// https://tc39.es/ecma262/#sec-tolength
|
|
21290
|
-
|
|
21291
|
-
var toLength = function (argument) {
|
|
21292
|
-
return argument > 0 ? min(toIntegerOrInfinity(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991
|
|
21293
|
-
};
|
|
21294
|
-
|
|
21295
|
-
// https://tc39.es/ecma262/#sec-lengthofarraylike
|
|
21296
|
-
|
|
21297
|
-
var lengthOfArrayLike = function (obj) {
|
|
21298
|
-
return toLength(obj.length);
|
|
21299
|
-
};
|
|
21300
|
-
|
|
21301
|
-
var createMethod = function (IS_INCLUDES) {
|
|
21302
|
-
return function ($this, el, fromIndex) {
|
|
21303
|
-
var O = toIndexedObject($this);
|
|
21304
|
-
var length = lengthOfArrayLike(O);
|
|
21305
|
-
var index = toAbsoluteIndex(fromIndex, length);
|
|
21306
|
-
var value; // Array#includes uses SameValueZero equality algorithm
|
|
21307
|
-
// eslint-disable-next-line no-self-compare -- NaN check
|
|
21308
|
-
|
|
21309
|
-
if (IS_INCLUDES && el != el) while (length > index) {
|
|
21310
|
-
value = O[index++]; // eslint-disable-next-line no-self-compare -- NaN check
|
|
21311
|
-
|
|
21312
|
-
if (value != value) return true; // Array#indexOf ignores holes, Array#includes - not
|
|
21313
|
-
} else for (; length > index; index++) {
|
|
21314
|
-
if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;
|
|
21315
|
-
}
|
|
21316
|
-
return !IS_INCLUDES && -1;
|
|
21317
|
-
};
|
|
21318
|
-
};
|
|
21319
|
-
|
|
21320
|
-
var arrayIncludes = {
|
|
21321
|
-
// `Array.prototype.includes` method
|
|
21322
|
-
// https://tc39.es/ecma262/#sec-array.prototype.includes
|
|
21323
|
-
includes: createMethod(true),
|
|
21324
|
-
// `Array.prototype.indexOf` method
|
|
21325
|
-
// https://tc39.es/ecma262/#sec-array.prototype.indexof
|
|
21326
|
-
indexOf: createMethod(false)
|
|
21327
|
-
};
|
|
21328
|
-
|
|
21329
|
-
var indexOf = arrayIncludes.indexOf;
|
|
21330
|
-
var push = functionUncurryThis([].push);
|
|
21331
|
-
|
|
21332
|
-
var objectKeysInternal = function (object, names) {
|
|
21333
|
-
var O = toIndexedObject(object);
|
|
21334
|
-
var i = 0;
|
|
21335
|
-
var result = [];
|
|
21336
|
-
var key;
|
|
21337
|
-
|
|
21338
|
-
for (key in O) !hasOwnProperty_1(hiddenKeys$1, key) && hasOwnProperty_1(O, key) && push(result, key); // Don't enum bug & hidden keys
|
|
21339
|
-
|
|
21340
|
-
|
|
21341
|
-
while (names.length > i) if (hasOwnProperty_1(O, key = names[i++])) {
|
|
21342
|
-
~indexOf(result, key) || push(result, key);
|
|
21343
|
-
}
|
|
21344
|
-
|
|
21345
|
-
return result;
|
|
21346
|
-
};
|
|
21347
|
-
|
|
21348
|
-
// IE8- don't enum bug keys
|
|
21349
|
-
var enumBugKeys = ['constructor', 'hasOwnProperty', 'isPrototypeOf', 'propertyIsEnumerable', 'toLocaleString', 'toString', 'valueOf'];
|
|
21350
|
-
|
|
21351
|
-
var hiddenKeys = enumBugKeys.concat('length', 'prototype'); // `Object.getOwnPropertyNames` method
|
|
21352
|
-
// https://tc39.es/ecma262/#sec-object.getownpropertynames
|
|
21353
|
-
// eslint-disable-next-line es-x/no-object-getownpropertynames -- safe
|
|
21354
|
-
|
|
21355
|
-
var f$2 = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {
|
|
21356
|
-
return objectKeysInternal(O, hiddenKeys);
|
|
21357
|
-
};
|
|
21358
|
-
|
|
21359
|
-
var objectGetOwnPropertyNames = {
|
|
21360
|
-
f: f$2
|
|
21361
|
-
};
|
|
21362
|
-
|
|
21363
|
-
// eslint-disable-next-line es-x/no-object-getownpropertysymbols -- safe
|
|
21364
|
-
var f$1 = Object.getOwnPropertySymbols;
|
|
21365
|
-
var objectGetOwnPropertySymbols = {
|
|
21366
|
-
f: f$1
|
|
21367
|
-
};
|
|
21368
|
-
|
|
21369
|
-
var concat = functionUncurryThis([].concat); // all object keys, includes non-enumerable and symbols
|
|
21370
|
-
|
|
21371
|
-
var ownKeys = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {
|
|
21372
|
-
var keys = objectGetOwnPropertyNames.f(anObject(it));
|
|
21373
|
-
var getOwnPropertySymbols = objectGetOwnPropertySymbols.f;
|
|
21374
|
-
return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;
|
|
21375
|
-
};
|
|
21376
|
-
|
|
21377
|
-
var copyConstructorProperties = function (target, source, exceptions) {
|
|
21378
|
-
var keys = ownKeys(source);
|
|
21379
|
-
var defineProperty = objectDefineProperty.f;
|
|
21380
|
-
var getOwnPropertyDescriptor = objectGetOwnPropertyDescriptor.f;
|
|
21381
|
-
|
|
21382
|
-
for (var i = 0; i < keys.length; i++) {
|
|
21383
|
-
var key = keys[i];
|
|
21384
|
-
|
|
21385
|
-
if (!hasOwnProperty_1(target, key) && !(exceptions && hasOwnProperty_1(exceptions, key))) {
|
|
21386
|
-
defineProperty(target, key, getOwnPropertyDescriptor(source, key));
|
|
21387
|
-
}
|
|
21388
|
-
}
|
|
21389
|
-
};
|
|
21390
|
-
|
|
21391
|
-
var replacement = /#|\.prototype\./;
|
|
21392
|
-
|
|
21393
|
-
var isForced = function (feature, detection) {
|
|
21394
|
-
var value = data[normalize$1(feature)];
|
|
21395
|
-
return value == POLYFILL ? true : value == NATIVE ? false : isCallable(detection) ? fails(detection) : !!detection;
|
|
21396
|
-
};
|
|
21397
|
-
|
|
21398
|
-
var normalize$1 = isForced.normalize = function (string) {
|
|
21399
|
-
return String(string).replace(replacement, '.').toLowerCase();
|
|
21400
|
-
};
|
|
21401
|
-
|
|
21402
|
-
var data = isForced.data = {};
|
|
21403
|
-
var NATIVE = isForced.NATIVE = 'N';
|
|
21404
|
-
var POLYFILL = isForced.POLYFILL = 'P';
|
|
21405
|
-
var isForced_1 = isForced;
|
|
21406
|
-
|
|
21407
|
-
var getOwnPropertyDescriptor = objectGetOwnPropertyDescriptor.f;
|
|
21408
|
-
/*
|
|
21409
|
-
options.target - name of the target object
|
|
21410
|
-
options.global - target is the global object
|
|
21411
|
-
options.stat - export as static methods of target
|
|
21412
|
-
options.proto - export as prototype methods of target
|
|
21413
|
-
options.real - real prototype method for the `pure` version
|
|
21414
|
-
options.forced - export even if the native feature is available
|
|
21415
|
-
options.bind - bind methods to the target, required for the `pure` version
|
|
21416
|
-
options.wrap - wrap constructors to preventing global pollution, required for the `pure` version
|
|
21417
|
-
options.unsafe - use the simple assignment of property instead of delete + defineProperty
|
|
21418
|
-
options.sham - add a flag to not completely full polyfills
|
|
21419
|
-
options.enumerable - export as enumerable property
|
|
21420
|
-
options.dontCallGetSet - prevent calling a getter on target
|
|
21421
|
-
options.name - the .name of the function if it does not match the key
|
|
21422
|
-
*/
|
|
21423
|
-
|
|
21424
|
-
var _export = function (options, source) {
|
|
21425
|
-
var TARGET = options.target;
|
|
21426
|
-
var GLOBAL = options.global;
|
|
21427
|
-
var STATIC = options.stat;
|
|
21428
|
-
var FORCED, target, key, targetProperty, sourceProperty, descriptor;
|
|
21429
|
-
|
|
21430
|
-
if (GLOBAL) {
|
|
21431
|
-
target = global$1;
|
|
21432
|
-
} else if (STATIC) {
|
|
21433
|
-
target = global$1[TARGET] || defineGlobalProperty(TARGET, {});
|
|
21434
|
-
} else {
|
|
21435
|
-
target = (global$1[TARGET] || {}).prototype;
|
|
21436
|
-
}
|
|
21437
|
-
|
|
21438
|
-
if (target) for (key in source) {
|
|
21439
|
-
sourceProperty = source[key];
|
|
21440
|
-
|
|
21441
|
-
if (options.dontCallGetSet) {
|
|
21442
|
-
descriptor = getOwnPropertyDescriptor(target, key);
|
|
21443
|
-
targetProperty = descriptor && descriptor.value;
|
|
21444
|
-
} else targetProperty = target[key];
|
|
21445
|
-
|
|
21446
|
-
FORCED = isForced_1(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced); // contained in target
|
|
21447
|
-
|
|
21448
|
-
if (!FORCED && targetProperty !== undefined) {
|
|
21449
|
-
if (typeof sourceProperty == typeof targetProperty) continue;
|
|
21450
|
-
copyConstructorProperties(sourceProperty, targetProperty);
|
|
21451
|
-
} // add a flag to not completely full polyfills
|
|
21452
|
-
|
|
21453
|
-
|
|
21454
|
-
if (options.sham || targetProperty && targetProperty.sham) {
|
|
21455
|
-
createNonEnumerableProperty(sourceProperty, 'sham', true);
|
|
21456
|
-
}
|
|
21457
|
-
|
|
21458
|
-
defineBuiltIn(target, key, sourceProperty, options);
|
|
21459
|
-
}
|
|
21460
|
-
};
|
|
21461
|
-
|
|
21462
|
-
// https://tc39.es/ecma262/#sec-object.keys
|
|
21463
|
-
// eslint-disable-next-line es-x/no-object-keys -- safe
|
|
21464
|
-
|
|
21465
|
-
var objectKeys = Object.keys || function keys(O) {
|
|
21466
|
-
return objectKeysInternal(O, enumBugKeys);
|
|
21467
|
-
};
|
|
21468
|
-
|
|
21469
|
-
// https://tc39.es/ecma262/#sec-object.defineproperties
|
|
21470
|
-
// eslint-disable-next-line es-x/no-object-defineproperties -- safe
|
|
21471
|
-
|
|
21472
|
-
var f = descriptors && !v8PrototypeDefineBug ? Object.defineProperties : function defineProperties(O, Properties) {
|
|
21473
|
-
anObject(O);
|
|
21474
|
-
var props = toIndexedObject(Properties);
|
|
21475
|
-
var keys = objectKeys(Properties);
|
|
21476
|
-
var length = keys.length;
|
|
21477
|
-
var index = 0;
|
|
21478
|
-
var key;
|
|
21479
|
-
|
|
21480
|
-
while (length > index) objectDefineProperty.f(O, key = keys[index++], props[key]);
|
|
21481
|
-
|
|
21482
|
-
return O;
|
|
21483
|
-
};
|
|
21484
|
-
var objectDefineProperties = {
|
|
21485
|
-
f: f
|
|
21486
|
-
};
|
|
21487
|
-
|
|
21488
|
-
var html = getBuiltIn('document', 'documentElement');
|
|
21489
|
-
|
|
21490
|
-
/* global ActiveXObject -- old IE, WSH */
|
|
21491
|
-
var GT = '>';
|
|
21492
|
-
var LT = '<';
|
|
21493
|
-
var PROTOTYPE = 'prototype';
|
|
21494
|
-
var SCRIPT = 'script';
|
|
21495
|
-
var IE_PROTO = sharedKey('IE_PROTO');
|
|
21496
|
-
|
|
21497
|
-
var EmptyConstructor = function () {
|
|
21498
|
-
/* empty */
|
|
21499
|
-
};
|
|
21500
|
-
|
|
21501
|
-
var scriptTag = function (content) {
|
|
21502
|
-
return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;
|
|
21503
|
-
}; // Create object with fake `null` prototype: use ActiveX Object with cleared prototype
|
|
21504
|
-
|
|
21505
|
-
|
|
21506
|
-
var NullProtoObjectViaActiveX = function (activeXDocument) {
|
|
21507
|
-
activeXDocument.write(scriptTag(''));
|
|
21508
|
-
activeXDocument.close();
|
|
21509
|
-
var temp = activeXDocument.parentWindow.Object;
|
|
21510
|
-
activeXDocument = null; // avoid memory leak
|
|
21511
|
-
|
|
21512
|
-
return temp;
|
|
21513
|
-
}; // Create object with fake `null` prototype: use iframe Object with cleared prototype
|
|
21514
|
-
|
|
21515
|
-
|
|
21516
|
-
var NullProtoObjectViaIFrame = function () {
|
|
21517
|
-
// Thrash, waste and sodomy: IE GC bug
|
|
21518
|
-
var iframe = documentCreateElement('iframe');
|
|
21519
|
-
var JS = 'java' + SCRIPT + ':';
|
|
21520
|
-
var iframeDocument;
|
|
21521
|
-
iframe.style.display = 'none';
|
|
21522
|
-
html.appendChild(iframe); // https://github.com/zloirock/core-js/issues/475
|
|
21523
|
-
|
|
21524
|
-
iframe.src = String(JS);
|
|
21525
|
-
iframeDocument = iframe.contentWindow.document;
|
|
21526
|
-
iframeDocument.open();
|
|
21527
|
-
iframeDocument.write(scriptTag('document.F=Object'));
|
|
21528
|
-
iframeDocument.close();
|
|
21529
|
-
return iframeDocument.F;
|
|
21530
|
-
}; // Check for document.domain and active x support
|
|
21531
|
-
// No need to use active x approach when document.domain is not set
|
|
21532
|
-
// see https://github.com/es-shims/es5-shim/issues/150
|
|
21533
|
-
// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346
|
|
21534
|
-
// avoid IE GC bug
|
|
21535
|
-
|
|
21536
|
-
|
|
21537
|
-
var activeXDocument;
|
|
21538
|
-
|
|
21539
|
-
var NullProtoObject = function () {
|
|
21540
|
-
try {
|
|
21541
|
-
activeXDocument = new ActiveXObject('htmlfile');
|
|
21542
|
-
} catch (error) {
|
|
21543
|
-
/* ignore */
|
|
21544
|
-
}
|
|
21545
|
-
|
|
21546
|
-
NullProtoObject = typeof document != 'undefined' ? document.domain && activeXDocument ? NullProtoObjectViaActiveX(activeXDocument) // old IE
|
|
21547
|
-
: NullProtoObjectViaIFrame() : NullProtoObjectViaActiveX(activeXDocument); // WSH
|
|
21548
|
-
|
|
21549
|
-
var length = enumBugKeys.length;
|
|
21550
|
-
|
|
21551
|
-
while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];
|
|
21552
|
-
|
|
21553
|
-
return NullProtoObject();
|
|
21554
|
-
};
|
|
21555
|
-
|
|
21556
|
-
hiddenKeys$1[IE_PROTO] = true; // `Object.create` method
|
|
21557
|
-
// https://tc39.es/ecma262/#sec-object.create
|
|
21558
|
-
// eslint-disable-next-line es-x/no-object-create -- safe
|
|
21559
|
-
|
|
21560
|
-
var objectCreate = Object.create || function create(O, Properties) {
|
|
21561
|
-
var result;
|
|
21562
|
-
|
|
21563
|
-
if (O !== null) {
|
|
21564
|
-
EmptyConstructor[PROTOTYPE] = anObject(O);
|
|
21565
|
-
result = new EmptyConstructor();
|
|
21566
|
-
EmptyConstructor[PROTOTYPE] = null; // add "__proto__" for Object.getPrototypeOf polyfill
|
|
21567
|
-
|
|
21568
|
-
result[IE_PROTO] = O;
|
|
21569
|
-
} else result = NullProtoObject();
|
|
21570
|
-
|
|
21571
|
-
return Properties === undefined ? result : objectDefineProperties.f(result, Properties);
|
|
21572
|
-
};
|
|
21573
|
-
|
|
21574
|
-
var defineProperty = objectDefineProperty.f;
|
|
21575
|
-
var UNSCOPABLES = wellKnownSymbol('unscopables');
|
|
21576
|
-
var ArrayPrototype = Array.prototype; // Array.prototype[@@unscopables]
|
|
21577
|
-
// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables
|
|
21578
|
-
|
|
21579
|
-
if (ArrayPrototype[UNSCOPABLES] == undefined) {
|
|
21580
|
-
defineProperty(ArrayPrototype, UNSCOPABLES, {
|
|
21581
|
-
configurable: true,
|
|
21582
|
-
value: objectCreate(null)
|
|
21583
|
-
});
|
|
21584
|
-
} // add a key to Array.prototype[@@unscopables]
|
|
21585
|
-
|
|
21586
|
-
|
|
21587
|
-
var addToUnscopables = function (key) {
|
|
21588
|
-
ArrayPrototype[UNSCOPABLES][key] = true;
|
|
21589
|
-
};
|
|
21590
|
-
|
|
21591
|
-
var $includes = arrayIncludes.includes; // FF99+ bug
|
|
21592
|
-
|
|
21593
|
-
var BROKEN_ON_SPARSE = fails(function () {
|
|
21594
|
-
return !Array(1).includes();
|
|
21595
|
-
}); // `Array.prototype.includes` method
|
|
21596
|
-
// https://tc39.es/ecma262/#sec-array.prototype.includes
|
|
21597
|
-
|
|
21598
|
-
_export({
|
|
21599
|
-
target: 'Array',
|
|
21600
|
-
proto: true,
|
|
21601
|
-
forced: BROKEN_ON_SPARSE
|
|
21602
|
-
}, {
|
|
21603
|
-
includes: function includes(el
|
|
21604
|
-
/* , fromIndex = 0 */
|
|
21605
|
-
) {
|
|
21606
|
-
return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);
|
|
21607
|
-
}
|
|
21608
|
-
}); // https://tc39.es/ecma262/#sec-array.prototype-@@unscopables
|
|
21609
|
-
|
|
21610
|
-
addToUnscopables('includes');
|
|
21611
|
-
|
|
21612
|
-
const FileFormats = {
|
|
21613
|
-
gwascatalog: {
|
|
21614
|
-
fields: ['bin', 'chr', 'start', 'end', 'name', 'pubMedID', 'author', 'pubDate', 'journal', 'title', 'trait', 'initSample', 'replSample', 'region', 'genes', 'riskAllele', 'riskAlFreq', 'pValue', 'pValueDesc', 'orOrBeta', 'ci95', 'platform', 'cnv']
|
|
21615
|
-
},
|
|
21616
|
-
wgrna: {
|
|
21617
|
-
fields: ['bin', 'chr', 'start', 'end', 'name', 'score', 'strand', 'thickStart', 'thickEnd', 'type']
|
|
21618
|
-
},
|
|
21619
|
-
cpgislandext: {
|
|
21620
|
-
fields: ['bin', 'chr', 'start', 'end', 'name', 'length', 'cpgNum', 'gcNum', 'perCpg', 'perGc', 'obsExp']
|
|
21621
|
-
},
|
|
21622
|
-
clinVarMain: {
|
|
21623
|
-
fields: ['chr1', 'start', 'end', 'name', 'score', 'strand', 'thickStart', 'thickEnd', 'reserved', 'blockCount', // Number of blocks
|
|
21624
|
-
'blockSizes', // Comma separated list of block sizes
|
|
21625
|
-
'chromStarts', // Start positions relative to chromStart
|
|
21626
|
-
'origName', // NM_198053.2(CD247):c.462C>T (p.Asp154=) ClinVar Variation Report
|
|
21627
|
-
'clinSign', // Likely benign Clinical significance
|
|
21628
|
-
'reviewStatus', // based on: criteria provided,single submitter Review Status
|
|
21629
|
-
'type', // single nucleotide variant Type of Variant
|
|
21630
|
-
'geneId', // CD247 Gene Symbol
|
|
21631
|
-
'snpId', // 181656780 dbSNP ID
|
|
21632
|
-
'nsvId', // dbVar ID
|
|
21633
|
-
'rcvAcc', // RCV000642347 ClinVar Allele Submission
|
|
21634
|
-
'testedInGtr', // N Genetic Testing Registry
|
|
21635
|
-
'phenotypeList', // Immunodeficiency due to defect in cd3-zeta Phenotypes
|
|
21636
|
-
'phenotype', // MedGen:C1857798, OMIM:610163 Phenotype identifiers
|
|
21637
|
-
'origin', // germline Data origin
|
|
21638
|
-
'assembly', // GRCh37 Genome assembly
|
|
21639
|
-
'cytogenetic', // 1q24.2 Cytogenetic status
|
|
21640
|
-
'hgvsCod', // NM_198053.2:c.462C>T Nucleotide HGVS
|
|
21641
|
-
'hgvsProt', // NP_932170.1:p.Asp154= Protein HGVS
|
|
21642
|
-
'numSubmit', // 1 Number of submitters
|
|
21643
|
-
'lastEval', // Dec 19,2017 Last evaluation
|
|
21644
|
-
'guidelines', // Guidelines
|
|
21645
|
-
'otherIds']
|
|
21646
|
-
}
|
|
21647
|
-
};
|
|
21648
|
-
|
|
21649
21040
|
/*
|
|
21650
21041
|
* The MIT License (MIT)
|
|
21651
21042
|
*
|
|
@@ -21670,360 +21061,6 @@
|
|
|
21670
21061
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
21671
21062
|
* THE SOFTWARE.
|
|
21672
21063
|
*/
|
|
21673
|
-
/**
|
|
21674
|
-
* Test if the given value is a string or number. Not using typeof as it fails on boxed primitives.
|
|
21675
|
-
*
|
|
21676
|
-
* @param value
|
|
21677
|
-
* @returns boolean
|
|
21678
|
-
*/
|
|
21679
|
-
|
|
21680
|
-
|
|
21681
|
-
function isSimpleType(value) {
|
|
21682
|
-
const simpleTypes = new Set(["boolean", "number", "string", "symbol"]);
|
|
21683
|
-
const valueType = typeof value;
|
|
21684
|
-
return value !== undefined && (simpleTypes.has(valueType) || value.substring || value.toFixed);
|
|
21685
|
-
}
|
|
21686
|
-
|
|
21687
|
-
function buildOptions(config, options) {
|
|
21688
|
-
var defaultOptions = {
|
|
21689
|
-
oauthToken: config.oauthToken,
|
|
21690
|
-
headers: config.headers,
|
|
21691
|
-
withCredentials: config.withCredentials,
|
|
21692
|
-
filename: config.filename
|
|
21693
|
-
};
|
|
21694
|
-
return Object.assign(defaultOptions, options);
|
|
21695
|
-
}
|
|
21696
|
-
/**
|
|
21697
|
-
* isMobile test from http://detectmobilebrowsers.com
|
|
21698
|
-
* TODO -- improve UI design so this isn't neccessary
|
|
21699
|
-
* @returns {boolean}
|
|
21700
|
-
*/
|
|
21701
|
-
// igv.isMobile = function () {
|
|
21702
|
-
//
|
|
21703
|
-
// const a = (navigator.userAgent || navigator.vendor || window.opera);
|
|
21704
|
-
// return (/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(a) ||
|
|
21705
|
-
// /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0, 4)))
|
|
21706
|
-
//
|
|
21707
|
-
// }
|
|
21708
|
-
|
|
21709
|
-
|
|
21710
|
-
const doAutoscale = function (features) {
|
|
21711
|
-
var min, max;
|
|
21712
|
-
|
|
21713
|
-
if (features.length > 0) {
|
|
21714
|
-
min = Number.MAX_VALUE;
|
|
21715
|
-
max = -Number.MAX_VALUE;
|
|
21716
|
-
features.forEach(function (f) {
|
|
21717
|
-
if (!Number.isNaN(f.value)) {
|
|
21718
|
-
min = Math.min(min, f.value);
|
|
21719
|
-
max = Math.max(max, f.value);
|
|
21720
|
-
}
|
|
21721
|
-
}); // Insure we have a zero baseline
|
|
21722
|
-
|
|
21723
|
-
if (max > 0) min = Math.min(0, min);
|
|
21724
|
-
if (max < 0) max = 0;
|
|
21725
|
-
} else {
|
|
21726
|
-
// No features -- default
|
|
21727
|
-
min = 0;
|
|
21728
|
-
max = 100;
|
|
21729
|
-
}
|
|
21730
|
-
|
|
21731
|
-
return {
|
|
21732
|
-
min: min,
|
|
21733
|
-
max: max
|
|
21734
|
-
};
|
|
21735
|
-
};
|
|
21736
|
-
|
|
21737
|
-
const validateGenomicExtent = function (chromosomeLengthBP, genomicExtent, minimumBP) {
|
|
21738
|
-
let ss = genomicExtent.start;
|
|
21739
|
-
let ee = genomicExtent.end;
|
|
21740
|
-
|
|
21741
|
-
if (undefined === ee) {
|
|
21742
|
-
ss -= minimumBP / 2;
|
|
21743
|
-
ee = ss + minimumBP;
|
|
21744
|
-
|
|
21745
|
-
if (ee > chromosomeLengthBP) {
|
|
21746
|
-
ee = chromosomeLengthBP;
|
|
21747
|
-
ss = ee - minimumBP;
|
|
21748
|
-
} else if (ss < 0) {
|
|
21749
|
-
ss = 0;
|
|
21750
|
-
ee = minimumBP;
|
|
21751
|
-
}
|
|
21752
|
-
} else if (ee - ss < minimumBP) {
|
|
21753
|
-
const center = (ee + ss) / 2;
|
|
21754
|
-
|
|
21755
|
-
if (center - minimumBP / 2 < 0) {
|
|
21756
|
-
ss = 0;
|
|
21757
|
-
ee = ss + minimumBP;
|
|
21758
|
-
} else if (center + minimumBP / 2 > chromosomeLengthBP) {
|
|
21759
|
-
ee = chromosomeLengthBP;
|
|
21760
|
-
ss = ee - minimumBP;
|
|
21761
|
-
} else {
|
|
21762
|
-
ss = center - minimumBP / 2;
|
|
21763
|
-
ee = ss + minimumBP;
|
|
21764
|
-
}
|
|
21765
|
-
}
|
|
21766
|
-
|
|
21767
|
-
genomicExtent.start = Math.ceil(ss);
|
|
21768
|
-
genomicExtent.end = Math.floor(ee);
|
|
21769
|
-
};
|
|
21770
|
-
/*!
|
|
21771
|
-
* is-number <https://github.com/jonschlinkert/is-number>
|
|
21772
|
-
*
|
|
21773
|
-
* Copyright (c) 2014-present, Jon Schlinkert.
|
|
21774
|
-
* Released under the MIT License.
|
|
21775
|
-
*/
|
|
21776
|
-
|
|
21777
|
-
|
|
21778
|
-
const isNumber = function (num) {
|
|
21779
|
-
if (typeof num === 'number') {
|
|
21780
|
-
return num - num === 0;
|
|
21781
|
-
}
|
|
21782
|
-
|
|
21783
|
-
if (typeof num === 'string' && num.trim() !== '') {
|
|
21784
|
-
return Number.isFinite ? Number.isFinite(+num) : isFinite(+num);
|
|
21785
|
-
}
|
|
21786
|
-
|
|
21787
|
-
return false;
|
|
21788
|
-
};
|
|
21789
|
-
|
|
21790
|
-
async function getFilename(url) {
|
|
21791
|
-
if (isString$3(url) && url.startsWith("https://drive.google.com")) {
|
|
21792
|
-
// This will fail if Google API key is not defined
|
|
21793
|
-
if (getApiKey() === undefined) {
|
|
21794
|
-
throw Error("Google drive is referenced, but API key is not defined. An API key is required for Google Drive access");
|
|
21795
|
-
}
|
|
21796
|
-
|
|
21797
|
-
const json = await getDriveFileInfo(url);
|
|
21798
|
-
return json.originalFileName || json.name;
|
|
21799
|
-
} else {
|
|
21800
|
-
return getFilename$1(url);
|
|
21801
|
-
}
|
|
21802
|
-
}
|
|
21803
|
-
|
|
21804
|
-
function prettyBasePairNumber(raw) {
|
|
21805
|
-
var denom, units, value, floored;
|
|
21806
|
-
|
|
21807
|
-
if (raw > 1e7) {
|
|
21808
|
-
denom = 1e6;
|
|
21809
|
-
units = " mb";
|
|
21810
|
-
} else if (raw > 1e4) {
|
|
21811
|
-
denom = 1e3;
|
|
21812
|
-
units = " kb";
|
|
21813
|
-
value = raw / denom;
|
|
21814
|
-
floored = Math.floor(value);
|
|
21815
|
-
return numberFormatter$1(floored) + units;
|
|
21816
|
-
} else {
|
|
21817
|
-
return numberFormatter$1(raw) + " bp";
|
|
21818
|
-
}
|
|
21819
|
-
|
|
21820
|
-
value = raw / denom;
|
|
21821
|
-
floored = Math.floor(value);
|
|
21822
|
-
return floored.toString() + units;
|
|
21823
|
-
}
|
|
21824
|
-
|
|
21825
|
-
function isDataURL(obj) {
|
|
21826
|
-
return isString$3(obj) && obj.startsWith("data:");
|
|
21827
|
-
}
|
|
21828
|
-
|
|
21829
|
-
function createColumn(columnContainer, className) {
|
|
21830
|
-
const column = div$1({
|
|
21831
|
-
class: className
|
|
21832
|
-
});
|
|
21833
|
-
columnContainer.appendChild(column);
|
|
21834
|
-
}
|
|
21835
|
-
|
|
21836
|
-
function insertElementBefore(element, referenceNode) {
|
|
21837
|
-
referenceNode.parentNode.insertBefore(element, referenceNode);
|
|
21838
|
-
}
|
|
21839
|
-
|
|
21840
|
-
function insertElementAfter(element, referenceNode) {
|
|
21841
|
-
referenceNode.parentNode.insertBefore(element, referenceNode.nextSibling);
|
|
21842
|
-
}
|
|
21843
|
-
/**
|
|
21844
|
-
* Test to see if page is loaded in a secure context, that is by https or is localhost.
|
|
21845
|
-
*/
|
|
21846
|
-
|
|
21847
|
-
|
|
21848
|
-
function isSecureContext() {
|
|
21849
|
-
return window.location.protocol === "https:" || window.location.hostname === "localhost";
|
|
21850
|
-
} // reference: https://pretagteam.com/question/find-element-height-including-margin
|
|
21851
|
-
|
|
21852
|
-
|
|
21853
|
-
function getElementAbsoluteHeight(element) {
|
|
21854
|
-
// Get the DOM Node if you pass in a string
|
|
21855
|
-
element = typeof element === 'string' ? document.querySelector(element) : element;
|
|
21856
|
-
const styles = window.getComputedStyle(element);
|
|
21857
|
-
const margin = parseFloat(styles['marginTop']) + parseFloat(styles['marginBottom']);
|
|
21858
|
-
const height = element.offsetHeight;
|
|
21859
|
-
return Math.ceil(margin + height);
|
|
21860
|
-
}
|
|
21861
|
-
|
|
21862
|
-
/**
|
|
21863
|
-
* Decoder for bedpe records.
|
|
21864
|
-
*
|
|
21865
|
-
* Bedpe format was created by Aaron Quinlan et al as part of the bedtools project.
|
|
21866
|
-
* The spec is here: https://bedtools.readthedocs.io/en/latest/content/general-usage.html,
|
|
21867
|
-
*
|
|
21868
|
-
* 1 2 3 4 5 6 7 8 9 10 11-
|
|
21869
|
-
* chrom1 start1 end1 chrom2 start2 end2 name score strand1 strand2 <Any number of additional, user-defined fields>
|
|
21870
|
-
*
|
|
21871
|
-
* However there are off spec variants, an important one being a 7 column format with score in place of the standard
|
|
21872
|
-
* name column.
|
|
21873
|
-
*
|
|
21874
|
-
* A common variant is a "hiccups" output file, which is standard bedpe with the exception of a header line
|
|
21875
|
-
* of the form
|
|
21876
|
-
*
|
|
21877
|
-
* chr1 x1 x2 chr2 y1 y2 name score strand1 strand2 color observed expectedBL expectedDonut expectedH expectedV fdrBL fdrDonut fdrH fdrV
|
|
21878
|
-
*
|
|
21879
|
-
* The "hiccups" output is apparently not standardized as this is found at ENCODE, with a non-helpful "tsv" extension
|
|
21880
|
-
*
|
|
21881
|
-
* chr1 x1 x2 chr2 y1 y2 color observed expectedBL expectedDonut expectedH expectedV fdrBL fdrDonut fdrH fdrV numCollapsed centroid1 centroid2 radius
|
|
21882
|
-
* chr9 136790000 136795000 chr9 136990000 136995000 0,255,255 101.0 31.100368 38.40316 56.948116 34.040756 1.1876738E-13 1.05936405E-13 2.5148233E-4 1.7220993E-13 1 136792500 136992500 25590
|
|
21883
|
-
*
|
|
21884
|
-
* The "hiccups" documentation specfies yet another set of column headers
|
|
21885
|
-
* chromosome1 x1 x2 chromosome2 y1 y2 color observed expected_bottom_left expected_donut expected_horizontal expected_vertical fdr_bottom_left fdr_donut fdr_horizontal fdr_vertical number_collapsed centroid1 centroid2 radius
|
|
21886
|
-
*
|
|
21887
|
-
* @param tokens
|
|
21888
|
-
* @param ignore
|
|
21889
|
-
* @returns {{start1: number, end2: number, end1: number, chr1: *, chr2: *, start2: number}|undefined}
|
|
21890
|
-
*/
|
|
21891
|
-
|
|
21892
|
-
function decodeBedpe(tokens, header) {
|
|
21893
|
-
if (tokens.length < 6) {
|
|
21894
|
-
console.log("Skipping line: " + tokens.join(' '));
|
|
21895
|
-
return undefined;
|
|
21896
|
-
}
|
|
21897
|
-
|
|
21898
|
-
var feature = {
|
|
21899
|
-
chr1: tokens[0],
|
|
21900
|
-
start1: Number.parseInt(tokens[1]),
|
|
21901
|
-
end1: Number.parseInt(tokens[2]),
|
|
21902
|
-
chr2: tokens[3],
|
|
21903
|
-
start2: Number.parseInt(tokens[4]),
|
|
21904
|
-
end2: Number.parseInt(tokens[5])
|
|
21905
|
-
};
|
|
21906
|
-
|
|
21907
|
-
if (isNaN(feature.start1) || isNaN(feature.end1) || isNaN(feature.start2) || isNaN(feature.end2)) {
|
|
21908
|
-
//throw Error(`Error parsing line: ${tokens.join('\t')}`);
|
|
21909
|
-
return undefined;
|
|
21910
|
-
} // Determine if this is a "hiccups" file. Store result on "header" so it doesn't need repeated for every feature
|
|
21911
|
-
|
|
21912
|
-
|
|
21913
|
-
if (header && header.hiccups === undefined) {
|
|
21914
|
-
header.hiccups = header.columnNames ? isHiccups(header.columnNames) : false;
|
|
21915
|
-
}
|
|
21916
|
-
|
|
21917
|
-
const hiccups = header && header.hiccups;
|
|
21918
|
-
const stdColumns = hiccups ? 6 : 10;
|
|
21919
|
-
|
|
21920
|
-
if (!hiccups) {
|
|
21921
|
-
if (tokens.length > 6 && tokens[6] !== ".") {
|
|
21922
|
-
feature.name = tokens[6];
|
|
21923
|
-
}
|
|
21924
|
-
|
|
21925
|
-
if (tokens.length > 7 && tokens[7] !== ".") {
|
|
21926
|
-
feature.score = Number(tokens[7]);
|
|
21927
|
-
}
|
|
21928
|
-
|
|
21929
|
-
if (tokens.length > 8 && tokens[8] !== ".") {
|
|
21930
|
-
feature.strand1 = tokens[8];
|
|
21931
|
-
}
|
|
21932
|
-
|
|
21933
|
-
if (tokens.length > 9 && tokens[9] !== ".") {
|
|
21934
|
-
feature.strand2 = tokens[9];
|
|
21935
|
-
}
|
|
21936
|
-
} // Optional extra columns
|
|
21937
|
-
|
|
21938
|
-
|
|
21939
|
-
if (header) {
|
|
21940
|
-
const colorColumn = header.colorColumn;
|
|
21941
|
-
|
|
21942
|
-
if (colorColumn && colorColumn < tokens.length) {
|
|
21943
|
-
feature.color = IGVColor.createColorString(tokens[colorColumn]);
|
|
21944
|
-
}
|
|
21945
|
-
|
|
21946
|
-
const thicknessColumn = header.thicknessColumn;
|
|
21947
|
-
|
|
21948
|
-
if (thicknessColumn && thicknessColumn < tokens.length) {
|
|
21949
|
-
feature.thickness = tokens[thicknessColumn];
|
|
21950
|
-
}
|
|
21951
|
-
|
|
21952
|
-
if (tokens.length > stdColumns && header.columnNames && header.columnNames.length === tokens.length) {
|
|
21953
|
-
feature.extras = tokens.slice(stdColumns);
|
|
21954
|
-
}
|
|
21955
|
-
} // Set total extent of feature
|
|
21956
|
-
|
|
21957
|
-
|
|
21958
|
-
if (feature.chr1 === feature.chr2) {
|
|
21959
|
-
feature.chr = feature.chr1;
|
|
21960
|
-
feature.start = Math.min(feature.start1, feature.start2);
|
|
21961
|
-
feature.end = Math.max(feature.end1, feature.end2);
|
|
21962
|
-
}
|
|
21963
|
-
|
|
21964
|
-
return feature;
|
|
21965
|
-
}
|
|
21966
|
-
/**
|
|
21967
|
-
* Hack for non-standard bedPE formats, where numeric score can be in column 7 (name field from spec)
|
|
21968
|
-
* @param features
|
|
21969
|
-
*/
|
|
21970
|
-
|
|
21971
|
-
|
|
21972
|
-
function fixBedPE(features) {
|
|
21973
|
-
if (features.length == 0) return; // Assume all features have same properties
|
|
21974
|
-
|
|
21975
|
-
const firstFeature = features[0];
|
|
21976
|
-
|
|
21977
|
-
if (firstFeature.score === undefined && firstFeature.name !== undefined) {
|
|
21978
|
-
// Name field (col 7) is sometimes used for score.
|
|
21979
|
-
for (let f of features) {
|
|
21980
|
-
if (!(isNumber(f.name) || f.name === '.')) return;
|
|
21981
|
-
}
|
|
21982
|
-
|
|
21983
|
-
for (let f of features) {
|
|
21984
|
-
f.score = Number(f.name);
|
|
21985
|
-
delete f.name;
|
|
21986
|
-
}
|
|
21987
|
-
} // Make copies of inter-chr features, one for each chromosome
|
|
21988
|
-
|
|
21989
|
-
|
|
21990
|
-
const interChrFeatures = features.filter(f => f.chr1 !== f.chr2);
|
|
21991
|
-
|
|
21992
|
-
for (let f1 of interChrFeatures) {
|
|
21993
|
-
const f2 = Object.assign({}, f1);
|
|
21994
|
-
f2.dup = true;
|
|
21995
|
-
features.push(f2);
|
|
21996
|
-
f1.chr = f1.chr1;
|
|
21997
|
-
f1.start = f1.start1;
|
|
21998
|
-
f1.end = f1.end1;
|
|
21999
|
-
f2.chr = f2.chr2;
|
|
22000
|
-
f2.start = f2.start2;
|
|
22001
|
-
f2.end = f2.end2;
|
|
22002
|
-
}
|
|
22003
|
-
}
|
|
22004
|
-
/**
|
|
22005
|
-
* Special decoder for Hic Domain files. In these files feature1 == feature2, they are really bed records.
|
|
22006
|
-
* @param tokens
|
|
22007
|
-
* @param ignore
|
|
22008
|
-
* @returns {*}
|
|
22009
|
-
*/
|
|
22010
|
-
|
|
22011
|
-
|
|
22012
|
-
function decodeBedpeDomain(tokens, header) {
|
|
22013
|
-
if (tokens.length < 8) return undefined;
|
|
22014
|
-
return {
|
|
22015
|
-
chr: tokens[0],
|
|
22016
|
-
start: Number.parseInt(tokens[1]),
|
|
22017
|
-
end: Number.parseInt(tokens[2]),
|
|
22018
|
-
color: IGVColor.createColorString(tokens[6]),
|
|
22019
|
-
value: Number(tokens[7])
|
|
22020
|
-
};
|
|
22021
|
-
}
|
|
22022
|
-
|
|
22023
|
-
function isHiccups(columns) {
|
|
22024
|
-
return columns && (columns.includes("fdrDonut") || columns.includes("fdr_donut"));
|
|
22025
|
-
}
|
|
22026
|
-
|
|
22027
21064
|
const knownFileExtensions = new Set(["narrowpeak", "broadpeak", "regionpeak", "peaks", "bedgraph", "wig", "gff3", "gff", "gtf", "fusionjuncspan", "refflat", "seg", "aed", "bed", "vcf", "bb", "bigbed", "biginteract", "biggenepred", "bignarrowpeak", "bw", "bigwig", "bam", "tdf", "refgene", "genepred", "genepredext", "bedpe", "bp", "snp", "rmsk", "cram", "gwas", "maf", "mut", "tsv", "hiccups"]);
|
|
22028
21065
|
/**
|
|
22029
21066
|
* Return a custom format object with the given name.
|
|
@@ -22099,7 +21136,7 @@
|
|
|
22099
21136
|
}
|
|
22100
21137
|
|
|
22101
21138
|
function inferIndexPath(url, extension) {
|
|
22102
|
-
if (isString$
|
|
21139
|
+
if (isString$2(url)) {
|
|
22103
21140
|
if (url.includes("?")) {
|
|
22104
21141
|
const idx = url.indexOf("?");
|
|
22105
21142
|
return url.substring(0, idx) + "." + extension + url.substring(idx);
|
|
@@ -22429,7 +21466,7 @@
|
|
|
22429
21466
|
seq = reverseComplementSequence(seq);
|
|
22430
21467
|
}
|
|
22431
21468
|
|
|
22432
|
-
|
|
21469
|
+
this.browser.alert.present(seq);
|
|
22433
21470
|
}
|
|
22434
21471
|
}];
|
|
22435
21472
|
|
|
@@ -22449,7 +21486,7 @@
|
|
|
22449
21486
|
await navigator.clipboard.writeText(seq);
|
|
22450
21487
|
} catch (e) {
|
|
22451
21488
|
console.error(e);
|
|
22452
|
-
|
|
21489
|
+
this.browser.alert.present(`error copying sequence to clipboard ${e}`);
|
|
22453
21490
|
}
|
|
22454
21491
|
}
|
|
22455
21492
|
});
|
|
@@ -22920,7 +21957,7 @@
|
|
|
22920
21957
|
*/
|
|
22921
21958
|
|
|
22922
21959
|
|
|
22923
|
-
function normalize(vector) {
|
|
21960
|
+
function normalize$1(vector) {
|
|
22924
21961
|
var len = Math.sqrt(vector[0] * vector[0] + vector[1] * vector[1]);
|
|
22925
21962
|
return [vector[0] / len, vector[1] / len];
|
|
22926
21963
|
}
|
|
@@ -23747,8 +22784,8 @@
|
|
|
23747
22784
|
// and connect that point to the previous point (x0, y0) by a straight line.
|
|
23748
22785
|
|
|
23749
22786
|
|
|
23750
|
-
var unit_vec_p1_p0 = normalize([x0 - x1, y0 - y1]);
|
|
23751
|
-
var unit_vec_p1_p2 = normalize([x2 - x1, y2 - y1]);
|
|
22787
|
+
var unit_vec_p1_p0 = normalize$1([x0 - x1, y0 - y1]);
|
|
22788
|
+
var unit_vec_p1_p2 = normalize$1([x2 - x1, y2 - y1]);
|
|
23752
22789
|
|
|
23753
22790
|
if (unit_vec_p1_p0[0] * unit_vec_p1_p2[1] === unit_vec_p1_p0[1] * unit_vec_p1_p2[0]) {
|
|
23754
22791
|
this.lineTo(x1, y1);
|
|
@@ -23763,7 +22800,7 @@
|
|
|
23763
22800
|
var cos = unit_vec_p1_p0[0] * unit_vec_p1_p2[0] + unit_vec_p1_p0[1] * unit_vec_p1_p2[1];
|
|
23764
22801
|
var theta = Math.acos(Math.abs(cos)); // Calculate origin
|
|
23765
22802
|
|
|
23766
|
-
var unit_vec_p1_origin = normalize([unit_vec_p1_p0[0] + unit_vec_p1_p2[0], unit_vec_p1_p0[1] + unit_vec_p1_p2[1]]);
|
|
22803
|
+
var unit_vec_p1_origin = normalize$1([unit_vec_p1_p0[0] + unit_vec_p1_p2[0], unit_vec_p1_p0[1] + unit_vec_p1_p2[1]]);
|
|
23767
22804
|
var len_p1_origin = radius / Math.sin(theta / 2);
|
|
23768
22805
|
var x = x1 + len_p1_origin * unit_vec_p1_origin[0];
|
|
23769
22806
|
var y = y1 + len_p1_origin * unit_vec_p1_origin[1]; // Calculate start angle and end angle
|
|
@@ -25124,9 +24161,9 @@
|
|
|
25124
24161
|
}
|
|
25125
24162
|
};
|
|
25126
24163
|
|
|
25127
|
-
const _version = "2.13.
|
|
24164
|
+
const _version = "2.13.3";
|
|
25128
24165
|
|
|
25129
|
-
function version() {
|
|
24166
|
+
function version$1() {
|
|
25130
24167
|
return _version;
|
|
25131
24168
|
}
|
|
25132
24169
|
|
|
@@ -25182,7 +24219,7 @@
|
|
|
25182
24219
|
|
|
25183
24220
|
if (config.loadDefaultGenomes !== false) {
|
|
25184
24221
|
try {
|
|
25185
|
-
const url = DEFAULT_GENOMES_URL + `?randomSeed=${Math.random().toString(36)}&version=${version()}`; // prevent caching
|
|
24222
|
+
const url = DEFAULT_GENOMES_URL + `?randomSeed=${Math.random().toString(36)}&version=${version$1()}`; // prevent caching
|
|
25186
24223
|
|
|
25187
24224
|
const jsonArray = await igvxhr.loadJson(url, {
|
|
25188
24225
|
timeout: 5000
|
|
@@ -25192,7 +24229,7 @@
|
|
|
25192
24229
|
console.error(e);
|
|
25193
24230
|
|
|
25194
24231
|
try {
|
|
25195
|
-
const url = BACKUP_GENOMES_URL + `?randomSeed=${Math.random().toString(36)}&version=${version()}`; // prevent caching
|
|
24232
|
+
const url = BACKUP_GENOMES_URL + `?randomSeed=${Math.random().toString(36)}&version=${version$1()}`; // prevent caching
|
|
25196
24233
|
|
|
25197
24234
|
const jsonArray = await igvxhr.loadJson(url, {});
|
|
25198
24235
|
processJson(jsonArray);
|
|
@@ -25229,9 +24266,9 @@
|
|
|
25229
24266
|
return 'all' === chr.toLowerCase();
|
|
25230
24267
|
},
|
|
25231
24268
|
// Expand a genome id to a reference object, if needed
|
|
25232
|
-
expandReference: function (idOrConfig) {
|
|
24269
|
+
expandReference: function (alert, idOrConfig) {
|
|
25233
24270
|
// idOrConfig might be json
|
|
25234
|
-
if (isString$
|
|
24271
|
+
if (isString$2(idOrConfig) && idOrConfig.startsWith("{")) {
|
|
25235
24272
|
try {
|
|
25236
24273
|
idOrConfig = JSON.parse(idOrConfig);
|
|
25237
24274
|
} catch (e) {// Apparently its not json, could be an ID starting with "{". Unusual but legal.
|
|
@@ -25240,7 +24277,7 @@
|
|
|
25240
24277
|
|
|
25241
24278
|
let genomeID;
|
|
25242
24279
|
|
|
25243
|
-
if (isString$
|
|
24280
|
+
if (isString$2(idOrConfig)) {
|
|
25244
24281
|
genomeID = idOrConfig;
|
|
25245
24282
|
} else if (idOrConfig.genome) {
|
|
25246
24283
|
genomeID = idOrConfig.genome;
|
|
@@ -25254,7 +24291,7 @@
|
|
|
25254
24291
|
const reference = knownGenomes[genomeID];
|
|
25255
24292
|
|
|
25256
24293
|
if (!reference) {
|
|
25257
|
-
|
|
24294
|
+
alert.present(new Error(`Unknown genome id: ${genomeID}`), undefined);
|
|
25258
24295
|
}
|
|
25259
24296
|
|
|
25260
24297
|
return reference;
|
|
@@ -25585,7 +24622,7 @@
|
|
|
25585
24622
|
function generateGenomeID(config) {
|
|
25586
24623
|
if (config.id !== undefined) {
|
|
25587
24624
|
return config.id;
|
|
25588
|
-
} else if (config.fastaURL && isString$
|
|
24625
|
+
} else if (config.fastaURL && isString$2(config.fastaURL)) {
|
|
25589
24626
|
return config.fastaURL;
|
|
25590
24627
|
} else if (config.fastaURL && config.fastaURL.name) {
|
|
25591
24628
|
return config.fastaURL.name;
|
|
@@ -25770,7 +24807,7 @@
|
|
|
25770
24807
|
// Track might have been removed during load
|
|
25771
24808
|
if (this.trackView && this.trackView.disposed !== true) {
|
|
25772
24809
|
this.showMessage(NOT_LOADED_MESSAGE);
|
|
25773
|
-
|
|
24810
|
+
this.browser.alert.present(error);
|
|
25774
24811
|
console.error(error);
|
|
25775
24812
|
}
|
|
25776
24813
|
} finally {
|
|
@@ -27972,8 +27009,8 @@
|
|
|
27972
27009
|
*/
|
|
27973
27010
|
|
|
27974
27011
|
const fixColor = colorString => {
|
|
27975
|
-
if (isString$
|
|
27976
|
-
return colorString.indexOf(",") > 0 && !colorString.startsWith("rgb(") ? `rgb(${colorString})` : colorString;
|
|
27012
|
+
if (isString$2(colorString)) {
|
|
27013
|
+
return colorString.indexOf(",") > 0 && !(colorString.startsWith("rgb(") || colorString.startsWith("rgba(")) ? `rgb(${colorString})` : colorString;
|
|
27977
27014
|
} else {
|
|
27978
27015
|
return colorString;
|
|
27979
27016
|
}
|
|
@@ -28014,7 +27051,7 @@
|
|
|
28014
27051
|
this.name = config.name || config.label;
|
|
28015
27052
|
} else if (isFile(config.url)) {
|
|
28016
27053
|
this.name = config.url.name;
|
|
28017
|
-
} else if (isString$
|
|
27054
|
+
} else if (isString$2(config.url) && !config.url.startsWith("data:")) {
|
|
28018
27055
|
this.name = getFilename$1(config.url);
|
|
28019
27056
|
}
|
|
28020
27057
|
|
|
@@ -31443,7 +30480,7 @@
|
|
|
31443
30480
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
31444
30481
|
* THE SOFTWARE.
|
|
31445
30482
|
*/
|
|
31446
|
-
const isString$
|
|
30483
|
+
const isString$1 = isString$2;
|
|
31447
30484
|
|
|
31448
30485
|
class CustomServiceReader {
|
|
31449
30486
|
constructor(config) {
|
|
@@ -31483,7 +30520,7 @@
|
|
|
31483
30520
|
if (data) {
|
|
31484
30521
|
if (typeof this.config.parser === "function") {
|
|
31485
30522
|
features = this.config.parser(data);
|
|
31486
|
-
} else if (isString$
|
|
30523
|
+
} else if (isString$1(data)) {
|
|
31487
30524
|
features = JSON.parse(data);
|
|
31488
30525
|
} else {
|
|
31489
30526
|
features = data;
|
|
@@ -32328,6 +31365,32 @@
|
|
|
32328
31365
|
|
|
32329
31366
|
}
|
|
32330
31367
|
|
|
31368
|
+
/*
|
|
31369
|
+
* The MIT License (MIT)
|
|
31370
|
+
*
|
|
31371
|
+
* Copyright (c) 2016-2017 The Regents of the University of California
|
|
31372
|
+
* Author: Jim Robinson
|
|
31373
|
+
*
|
|
31374
|
+
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
31375
|
+
* of this software and associated documentation files (the "Software"), to deal
|
|
31376
|
+
* in the Software without restriction, including without limitation the rights
|
|
31377
|
+
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
31378
|
+
* copies of the Software, and to permit persons to whom the Software is
|
|
31379
|
+
* furnished to do so, subject to the following conditions:
|
|
31380
|
+
*
|
|
31381
|
+
* The above copyright notice and this permission notice shall be included in
|
|
31382
|
+
* all copies or substantial portions of the Software.
|
|
31383
|
+
*
|
|
31384
|
+
*
|
|
31385
|
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
31386
|
+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
31387
|
+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
31388
|
+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
31389
|
+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
31390
|
+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
31391
|
+
* THE SOFTWARE.
|
|
31392
|
+
*/
|
|
31393
|
+
|
|
32331
31394
|
class HtsgetReader {
|
|
32332
31395
|
constructor(config, genome) {
|
|
32333
31396
|
this.config = config;
|
|
@@ -33969,6 +33032,571 @@
|
|
|
33969
33032
|
|
|
33970
33033
|
}
|
|
33971
33034
|
|
|
33035
|
+
var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
|
|
33036
|
+
|
|
33037
|
+
function createCommonjsModule(fn) {
|
|
33038
|
+
var module = { exports: {} };
|
|
33039
|
+
return fn(module, module.exports), module.exports;
|
|
33040
|
+
}
|
|
33041
|
+
|
|
33042
|
+
var check = function (it) {
|
|
33043
|
+
return it && it.Math == Math && it;
|
|
33044
|
+
}; // https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
|
|
33045
|
+
|
|
33046
|
+
|
|
33047
|
+
var global$1 = // eslint-disable-next-line es/no-global-this -- safe
|
|
33048
|
+
check(typeof globalThis == 'object' && globalThis) || check(typeof window == 'object' && window) || // eslint-disable-next-line no-restricted-globals -- safe
|
|
33049
|
+
check(typeof self == 'object' && self) || check(typeof commonjsGlobal == 'object' && commonjsGlobal) || // eslint-disable-next-line no-new-func -- fallback
|
|
33050
|
+
function () {
|
|
33051
|
+
return this;
|
|
33052
|
+
}() || Function('return this')();
|
|
33053
|
+
|
|
33054
|
+
var fails = function (exec) {
|
|
33055
|
+
try {
|
|
33056
|
+
return !!exec();
|
|
33057
|
+
} catch (error) {
|
|
33058
|
+
return true;
|
|
33059
|
+
}
|
|
33060
|
+
};
|
|
33061
|
+
|
|
33062
|
+
var descriptors = !fails(function () {
|
|
33063
|
+
// eslint-disable-next-line es/no-object-defineproperty -- required for testing
|
|
33064
|
+
return Object.defineProperty({}, 1, {
|
|
33065
|
+
get: function () {
|
|
33066
|
+
return 7;
|
|
33067
|
+
}
|
|
33068
|
+
})[1] != 7;
|
|
33069
|
+
});
|
|
33070
|
+
|
|
33071
|
+
var documentAll$2 = typeof document == 'object' && document.all; // https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot
|
|
33072
|
+
|
|
33073
|
+
var IS_HTMLDDA = typeof documentAll$2 == 'undefined' && documentAll$2 !== undefined;
|
|
33074
|
+
var documentAll_1 = {
|
|
33075
|
+
all: documentAll$2,
|
|
33076
|
+
IS_HTMLDDA: IS_HTMLDDA
|
|
33077
|
+
};
|
|
33078
|
+
|
|
33079
|
+
var documentAll$1 = documentAll_1.all; // `IsCallable` abstract operation
|
|
33080
|
+
// https://tc39.es/ecma262/#sec-iscallable
|
|
33081
|
+
|
|
33082
|
+
var isCallable = documentAll_1.IS_HTMLDDA ? function (argument) {
|
|
33083
|
+
return typeof argument == 'function' || argument === documentAll$1;
|
|
33084
|
+
} : function (argument) {
|
|
33085
|
+
return typeof argument == 'function';
|
|
33086
|
+
};
|
|
33087
|
+
|
|
33088
|
+
var functionBindNative = !fails(function () {
|
|
33089
|
+
// eslint-disable-next-line es/no-function-prototype-bind -- safe
|
|
33090
|
+
var test = function () {
|
|
33091
|
+
/* empty */
|
|
33092
|
+
}.bind(); // eslint-disable-next-line no-prototype-builtins -- safe
|
|
33093
|
+
|
|
33094
|
+
|
|
33095
|
+
return typeof test != 'function' || test.hasOwnProperty('prototype');
|
|
33096
|
+
});
|
|
33097
|
+
|
|
33098
|
+
var FunctionPrototype$2 = Function.prototype;
|
|
33099
|
+
var bind$1 = FunctionPrototype$2.bind;
|
|
33100
|
+
var call$2 = FunctionPrototype$2.call;
|
|
33101
|
+
var uncurryThis = functionBindNative && bind$1.bind(call$2, call$2);
|
|
33102
|
+
var functionUncurryThis = functionBindNative ? function (fn) {
|
|
33103
|
+
return fn && uncurryThis(fn);
|
|
33104
|
+
} : function (fn) {
|
|
33105
|
+
return fn && function () {
|
|
33106
|
+
return call$2.apply(fn, arguments);
|
|
33107
|
+
};
|
|
33108
|
+
};
|
|
33109
|
+
|
|
33110
|
+
// we can't use just `it == null` since of `document.all` special case
|
|
33111
|
+
// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot-aec
|
|
33112
|
+
var isNullOrUndefined = function (it) {
|
|
33113
|
+
return it === null || it === undefined;
|
|
33114
|
+
};
|
|
33115
|
+
|
|
33116
|
+
var $TypeError$6 = TypeError; // `RequireObjectCoercible` abstract operation
|
|
33117
|
+
// https://tc39.es/ecma262/#sec-requireobjectcoercible
|
|
33118
|
+
|
|
33119
|
+
var requireObjectCoercible = function (it) {
|
|
33120
|
+
if (isNullOrUndefined(it)) throw $TypeError$6("Can't call method on " + it);
|
|
33121
|
+
return it;
|
|
33122
|
+
};
|
|
33123
|
+
|
|
33124
|
+
var $Object$2 = Object; // `ToObject` abstract operation
|
|
33125
|
+
// https://tc39.es/ecma262/#sec-toobject
|
|
33126
|
+
|
|
33127
|
+
var toObject = function (argument) {
|
|
33128
|
+
return $Object$2(requireObjectCoercible(argument));
|
|
33129
|
+
};
|
|
33130
|
+
|
|
33131
|
+
var hasOwnProperty = functionUncurryThis({}.hasOwnProperty); // `HasOwnProperty` abstract operation
|
|
33132
|
+
// https://tc39.es/ecma262/#sec-hasownproperty
|
|
33133
|
+
// eslint-disable-next-line es/no-object-hasown -- safe
|
|
33134
|
+
|
|
33135
|
+
var hasOwnProperty_1 = Object.hasOwn || function hasOwn(it, key) {
|
|
33136
|
+
return hasOwnProperty(toObject(it), key);
|
|
33137
|
+
};
|
|
33138
|
+
|
|
33139
|
+
var FunctionPrototype$1 = Function.prototype; // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
|
|
33140
|
+
|
|
33141
|
+
var getDescriptor = descriptors && Object.getOwnPropertyDescriptor;
|
|
33142
|
+
var EXISTS$1 = hasOwnProperty_1(FunctionPrototype$1, 'name'); // additional protection from minified / mangled / dropped function names
|
|
33143
|
+
|
|
33144
|
+
var PROPER = EXISTS$1 && function something() {
|
|
33145
|
+
/* empty */
|
|
33146
|
+
}.name === 'something';
|
|
33147
|
+
|
|
33148
|
+
var CONFIGURABLE$1 = EXISTS$1 && (!descriptors || descriptors && getDescriptor(FunctionPrototype$1, 'name').configurable);
|
|
33149
|
+
var functionName = {
|
|
33150
|
+
EXISTS: EXISTS$1,
|
|
33151
|
+
PROPER: PROPER,
|
|
33152
|
+
CONFIGURABLE: CONFIGURABLE$1
|
|
33153
|
+
};
|
|
33154
|
+
|
|
33155
|
+
var defineProperty = Object.defineProperty;
|
|
33156
|
+
|
|
33157
|
+
var defineGlobalProperty = function (key, value) {
|
|
33158
|
+
try {
|
|
33159
|
+
defineProperty(global$1, key, {
|
|
33160
|
+
value: value,
|
|
33161
|
+
configurable: true,
|
|
33162
|
+
writable: true
|
|
33163
|
+
});
|
|
33164
|
+
} catch (error) {
|
|
33165
|
+
global$1[key] = value;
|
|
33166
|
+
}
|
|
33167
|
+
|
|
33168
|
+
return value;
|
|
33169
|
+
};
|
|
33170
|
+
|
|
33171
|
+
var SHARED = '__core-js_shared__';
|
|
33172
|
+
var store$1 = global$1[SHARED] || defineGlobalProperty(SHARED, {});
|
|
33173
|
+
var sharedStore = store$1;
|
|
33174
|
+
|
|
33175
|
+
var functionToString = functionUncurryThis(Function.toString); // this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper
|
|
33176
|
+
|
|
33177
|
+
if (!isCallable(sharedStore.inspectSource)) {
|
|
33178
|
+
sharedStore.inspectSource = function (it) {
|
|
33179
|
+
return functionToString(it);
|
|
33180
|
+
};
|
|
33181
|
+
}
|
|
33182
|
+
|
|
33183
|
+
var inspectSource = sharedStore.inspectSource;
|
|
33184
|
+
|
|
33185
|
+
var WeakMap$1 = global$1.WeakMap;
|
|
33186
|
+
var weakMapBasicDetection = isCallable(WeakMap$1) && /native code/.test(String(WeakMap$1));
|
|
33187
|
+
|
|
33188
|
+
var documentAll = documentAll_1.all;
|
|
33189
|
+
var isObject = documentAll_1.IS_HTMLDDA ? function (it) {
|
|
33190
|
+
return typeof it == 'object' ? it !== null : isCallable(it) || it === documentAll;
|
|
33191
|
+
} : function (it) {
|
|
33192
|
+
return typeof it == 'object' ? it !== null : isCallable(it);
|
|
33193
|
+
};
|
|
33194
|
+
|
|
33195
|
+
var document$1 = global$1.document; // typeof document.createElement is 'object' in old IE
|
|
33196
|
+
|
|
33197
|
+
var EXISTS = isObject(document$1) && isObject(document$1.createElement);
|
|
33198
|
+
|
|
33199
|
+
var documentCreateElement = function (it) {
|
|
33200
|
+
return EXISTS ? document$1.createElement(it) : {};
|
|
33201
|
+
};
|
|
33202
|
+
|
|
33203
|
+
var ie8DomDefine = !descriptors && !fails(function () {
|
|
33204
|
+
// eslint-disable-next-line es/no-object-defineproperty -- required for testing
|
|
33205
|
+
return Object.defineProperty(documentCreateElement('div'), 'a', {
|
|
33206
|
+
get: function () {
|
|
33207
|
+
return 7;
|
|
33208
|
+
}
|
|
33209
|
+
}).a != 7;
|
|
33210
|
+
});
|
|
33211
|
+
|
|
33212
|
+
// https://bugs.chromium.org/p/v8/issues/detail?id=3334
|
|
33213
|
+
|
|
33214
|
+
var v8PrototypeDefineBug = descriptors && fails(function () {
|
|
33215
|
+
// eslint-disable-next-line es/no-object-defineproperty -- required for testing
|
|
33216
|
+
return Object.defineProperty(function () {
|
|
33217
|
+
/* empty */
|
|
33218
|
+
}, 'prototype', {
|
|
33219
|
+
value: 42,
|
|
33220
|
+
writable: false
|
|
33221
|
+
}).prototype != 42;
|
|
33222
|
+
});
|
|
33223
|
+
|
|
33224
|
+
var $String$1 = String;
|
|
33225
|
+
var $TypeError$5 = TypeError; // `Assert: Type(argument) is Object`
|
|
33226
|
+
|
|
33227
|
+
var anObject = function (argument) {
|
|
33228
|
+
if (isObject(argument)) return argument;
|
|
33229
|
+
throw $TypeError$5($String$1(argument) + ' is not an object');
|
|
33230
|
+
};
|
|
33231
|
+
|
|
33232
|
+
var call$1 = Function.prototype.call;
|
|
33233
|
+
var functionCall = functionBindNative ? call$1.bind(call$1) : function () {
|
|
33234
|
+
return call$1.apply(call$1, arguments);
|
|
33235
|
+
};
|
|
33236
|
+
|
|
33237
|
+
var aFunction = function (argument) {
|
|
33238
|
+
return isCallable(argument) ? argument : undefined;
|
|
33239
|
+
};
|
|
33240
|
+
|
|
33241
|
+
var getBuiltIn = function (namespace, method) {
|
|
33242
|
+
return arguments.length < 2 ? aFunction(global$1[namespace]) : global$1[namespace] && global$1[namespace][method];
|
|
33243
|
+
};
|
|
33244
|
+
|
|
33245
|
+
var objectIsPrototypeOf = functionUncurryThis({}.isPrototypeOf);
|
|
33246
|
+
|
|
33247
|
+
var engineUserAgent = getBuiltIn('navigator', 'userAgent') || '';
|
|
33248
|
+
|
|
33249
|
+
var process$2 = global$1.process;
|
|
33250
|
+
var Deno = global$1.Deno;
|
|
33251
|
+
var versions = process$2 && process$2.versions || Deno && Deno.version;
|
|
33252
|
+
var v8 = versions && versions.v8;
|
|
33253
|
+
var match, version;
|
|
33254
|
+
|
|
33255
|
+
if (v8) {
|
|
33256
|
+
match = v8.split('.'); // in old Chrome, versions of V8 isn't V8 = Chrome / 10
|
|
33257
|
+
// but their correct versions are not interesting for us
|
|
33258
|
+
|
|
33259
|
+
version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);
|
|
33260
|
+
} // BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`
|
|
33261
|
+
// so check `userAgent` even if `.v8` exists, but 0
|
|
33262
|
+
|
|
33263
|
+
|
|
33264
|
+
if (!version && engineUserAgent) {
|
|
33265
|
+
match = engineUserAgent.match(/Edge\/(\d+)/);
|
|
33266
|
+
|
|
33267
|
+
if (!match || match[1] >= 74) {
|
|
33268
|
+
match = engineUserAgent.match(/Chrome\/(\d+)/);
|
|
33269
|
+
if (match) version = +match[1];
|
|
33270
|
+
}
|
|
33271
|
+
}
|
|
33272
|
+
|
|
33273
|
+
var engineV8Version = version;
|
|
33274
|
+
|
|
33275
|
+
/* eslint-disable es/no-symbol -- required for testing */
|
|
33276
|
+
|
|
33277
|
+
var symbolConstructorDetection = !!Object.getOwnPropertySymbols && !fails(function () {
|
|
33278
|
+
var symbol = Symbol(); // Chrome 38 Symbol has incorrect toString conversion
|
|
33279
|
+
// `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances
|
|
33280
|
+
|
|
33281
|
+
return !String(symbol) || !(Object(symbol) instanceof Symbol) || // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances
|
|
33282
|
+
!Symbol.sham && engineV8Version && engineV8Version < 41;
|
|
33283
|
+
});
|
|
33284
|
+
|
|
33285
|
+
/* eslint-disable es/no-symbol -- required for testing */
|
|
33286
|
+
var useSymbolAsUid = symbolConstructorDetection && !Symbol.sham && typeof Symbol.iterator == 'symbol';
|
|
33287
|
+
|
|
33288
|
+
var $Object$1 = Object;
|
|
33289
|
+
var isSymbol = useSymbolAsUid ? function (it) {
|
|
33290
|
+
return typeof it == 'symbol';
|
|
33291
|
+
} : function (it) {
|
|
33292
|
+
var $Symbol = getBuiltIn('Symbol');
|
|
33293
|
+
return isCallable($Symbol) && objectIsPrototypeOf($Symbol.prototype, $Object$1(it));
|
|
33294
|
+
};
|
|
33295
|
+
|
|
33296
|
+
var $String = String;
|
|
33297
|
+
|
|
33298
|
+
var tryToString = function (argument) {
|
|
33299
|
+
try {
|
|
33300
|
+
return $String(argument);
|
|
33301
|
+
} catch (error) {
|
|
33302
|
+
return 'Object';
|
|
33303
|
+
}
|
|
33304
|
+
};
|
|
33305
|
+
|
|
33306
|
+
var $TypeError$4 = TypeError; // `Assert: IsCallable(argument) is true`
|
|
33307
|
+
|
|
33308
|
+
var aCallable = function (argument) {
|
|
33309
|
+
if (isCallable(argument)) return argument;
|
|
33310
|
+
throw $TypeError$4(tryToString(argument) + ' is not a function');
|
|
33311
|
+
};
|
|
33312
|
+
|
|
33313
|
+
// https://tc39.es/ecma262/#sec-getmethod
|
|
33314
|
+
|
|
33315
|
+
var getMethod = function (V, P) {
|
|
33316
|
+
var func = V[P];
|
|
33317
|
+
return isNullOrUndefined(func) ? undefined : aCallable(func);
|
|
33318
|
+
};
|
|
33319
|
+
|
|
33320
|
+
var $TypeError$3 = TypeError; // `OrdinaryToPrimitive` abstract operation
|
|
33321
|
+
// https://tc39.es/ecma262/#sec-ordinarytoprimitive
|
|
33322
|
+
|
|
33323
|
+
var ordinaryToPrimitive = function (input, pref) {
|
|
33324
|
+
var fn, val;
|
|
33325
|
+
if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = functionCall(fn, input))) return val;
|
|
33326
|
+
if (isCallable(fn = input.valueOf) && !isObject(val = functionCall(fn, input))) return val;
|
|
33327
|
+
if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = functionCall(fn, input))) return val;
|
|
33328
|
+
throw $TypeError$3("Can't convert object to primitive value");
|
|
33329
|
+
};
|
|
33330
|
+
|
|
33331
|
+
var shared = createCommonjsModule(function (module) {
|
|
33332
|
+
(module.exports = function (key, value) {
|
|
33333
|
+
return sharedStore[key] || (sharedStore[key] = value !== undefined ? value : {});
|
|
33334
|
+
})('versions', []).push({
|
|
33335
|
+
version: '3.25.3',
|
|
33336
|
+
mode: 'global',
|
|
33337
|
+
copyright: '© 2014-2022 Denis Pushkarev (zloirock.ru)',
|
|
33338
|
+
license: 'https://github.com/zloirock/core-js/blob/v3.25.3/LICENSE',
|
|
33339
|
+
source: 'https://github.com/zloirock/core-js'
|
|
33340
|
+
});
|
|
33341
|
+
});
|
|
33342
|
+
|
|
33343
|
+
var id = 0;
|
|
33344
|
+
var postfix = Math.random();
|
|
33345
|
+
var toString$1 = functionUncurryThis(1.0.toString);
|
|
33346
|
+
|
|
33347
|
+
var uid = function (key) {
|
|
33348
|
+
return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString$1(++id + postfix, 36);
|
|
33349
|
+
};
|
|
33350
|
+
|
|
33351
|
+
var WellKnownSymbolsStore = shared('wks');
|
|
33352
|
+
var Symbol$1 = global$1.Symbol;
|
|
33353
|
+
var symbolFor = Symbol$1 && Symbol$1['for'];
|
|
33354
|
+
var createWellKnownSymbol = useSymbolAsUid ? Symbol$1 : Symbol$1 && Symbol$1.withoutSetter || uid;
|
|
33355
|
+
|
|
33356
|
+
var wellKnownSymbol = function (name) {
|
|
33357
|
+
if (!hasOwnProperty_1(WellKnownSymbolsStore, name) || !(symbolConstructorDetection || typeof WellKnownSymbolsStore[name] == 'string')) {
|
|
33358
|
+
var description = 'Symbol.' + name;
|
|
33359
|
+
|
|
33360
|
+
if (symbolConstructorDetection && hasOwnProperty_1(Symbol$1, name)) {
|
|
33361
|
+
WellKnownSymbolsStore[name] = Symbol$1[name];
|
|
33362
|
+
} else if (useSymbolAsUid && symbolFor) {
|
|
33363
|
+
WellKnownSymbolsStore[name] = symbolFor(description);
|
|
33364
|
+
} else {
|
|
33365
|
+
WellKnownSymbolsStore[name] = createWellKnownSymbol(description);
|
|
33366
|
+
}
|
|
33367
|
+
}
|
|
33368
|
+
|
|
33369
|
+
return WellKnownSymbolsStore[name];
|
|
33370
|
+
};
|
|
33371
|
+
|
|
33372
|
+
var $TypeError$2 = TypeError;
|
|
33373
|
+
var TO_PRIMITIVE = wellKnownSymbol('toPrimitive'); // `ToPrimitive` abstract operation
|
|
33374
|
+
// https://tc39.es/ecma262/#sec-toprimitive
|
|
33375
|
+
|
|
33376
|
+
var toPrimitive = function (input, pref) {
|
|
33377
|
+
if (!isObject(input) || isSymbol(input)) return input;
|
|
33378
|
+
var exoticToPrim = getMethod(input, TO_PRIMITIVE);
|
|
33379
|
+
var result;
|
|
33380
|
+
|
|
33381
|
+
if (exoticToPrim) {
|
|
33382
|
+
if (pref === undefined) pref = 'default';
|
|
33383
|
+
result = functionCall(exoticToPrim, input, pref);
|
|
33384
|
+
if (!isObject(result) || isSymbol(result)) return result;
|
|
33385
|
+
throw $TypeError$2("Can't convert object to primitive value");
|
|
33386
|
+
}
|
|
33387
|
+
|
|
33388
|
+
if (pref === undefined) pref = 'number';
|
|
33389
|
+
return ordinaryToPrimitive(input, pref);
|
|
33390
|
+
};
|
|
33391
|
+
|
|
33392
|
+
// https://tc39.es/ecma262/#sec-topropertykey
|
|
33393
|
+
|
|
33394
|
+
var toPropertyKey = function (argument) {
|
|
33395
|
+
var key = toPrimitive(argument, 'string');
|
|
33396
|
+
return isSymbol(key) ? key : key + '';
|
|
33397
|
+
};
|
|
33398
|
+
|
|
33399
|
+
var $TypeError$1 = TypeError; // eslint-disable-next-line es/no-object-defineproperty -- safe
|
|
33400
|
+
|
|
33401
|
+
var $defineProperty = Object.defineProperty; // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
|
|
33402
|
+
|
|
33403
|
+
var $getOwnPropertyDescriptor$1 = Object.getOwnPropertyDescriptor;
|
|
33404
|
+
var ENUMERABLE = 'enumerable';
|
|
33405
|
+
var CONFIGURABLE = 'configurable';
|
|
33406
|
+
var WRITABLE = 'writable'; // `Object.defineProperty` method
|
|
33407
|
+
// https://tc39.es/ecma262/#sec-object.defineproperty
|
|
33408
|
+
|
|
33409
|
+
var f$4 = descriptors ? v8PrototypeDefineBug ? function defineProperty(O, P, Attributes) {
|
|
33410
|
+
anObject(O);
|
|
33411
|
+
P = toPropertyKey(P);
|
|
33412
|
+
anObject(Attributes);
|
|
33413
|
+
|
|
33414
|
+
if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {
|
|
33415
|
+
var current = $getOwnPropertyDescriptor$1(O, P);
|
|
33416
|
+
|
|
33417
|
+
if (current && current[WRITABLE]) {
|
|
33418
|
+
O[P] = Attributes.value;
|
|
33419
|
+
Attributes = {
|
|
33420
|
+
configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],
|
|
33421
|
+
enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],
|
|
33422
|
+
writable: false
|
|
33423
|
+
};
|
|
33424
|
+
}
|
|
33425
|
+
}
|
|
33426
|
+
|
|
33427
|
+
return $defineProperty(O, P, Attributes);
|
|
33428
|
+
} : $defineProperty : function defineProperty(O, P, Attributes) {
|
|
33429
|
+
anObject(O);
|
|
33430
|
+
P = toPropertyKey(P);
|
|
33431
|
+
anObject(Attributes);
|
|
33432
|
+
if (ie8DomDefine) try {
|
|
33433
|
+
return $defineProperty(O, P, Attributes);
|
|
33434
|
+
} catch (error) {
|
|
33435
|
+
/* empty */
|
|
33436
|
+
}
|
|
33437
|
+
if ('get' in Attributes || 'set' in Attributes) throw $TypeError$1('Accessors not supported');
|
|
33438
|
+
if ('value' in Attributes) O[P] = Attributes.value;
|
|
33439
|
+
return O;
|
|
33440
|
+
};
|
|
33441
|
+
var objectDefineProperty = {
|
|
33442
|
+
f: f$4
|
|
33443
|
+
};
|
|
33444
|
+
|
|
33445
|
+
var createPropertyDescriptor = function (bitmap, value) {
|
|
33446
|
+
return {
|
|
33447
|
+
enumerable: !(bitmap & 1),
|
|
33448
|
+
configurable: !(bitmap & 2),
|
|
33449
|
+
writable: !(bitmap & 4),
|
|
33450
|
+
value: value
|
|
33451
|
+
};
|
|
33452
|
+
};
|
|
33453
|
+
|
|
33454
|
+
var createNonEnumerableProperty = descriptors ? function (object, key, value) {
|
|
33455
|
+
return objectDefineProperty.f(object, key, createPropertyDescriptor(1, value));
|
|
33456
|
+
} : function (object, key, value) {
|
|
33457
|
+
object[key] = value;
|
|
33458
|
+
return object;
|
|
33459
|
+
};
|
|
33460
|
+
|
|
33461
|
+
var keys = shared('keys');
|
|
33462
|
+
|
|
33463
|
+
var sharedKey = function (key) {
|
|
33464
|
+
return keys[key] || (keys[key] = uid(key));
|
|
33465
|
+
};
|
|
33466
|
+
|
|
33467
|
+
var hiddenKeys$1 = {};
|
|
33468
|
+
|
|
33469
|
+
var OBJECT_ALREADY_INITIALIZED = 'Object already initialized';
|
|
33470
|
+
var TypeError$1 = global$1.TypeError;
|
|
33471
|
+
var WeakMap = global$1.WeakMap;
|
|
33472
|
+
var set$1, get, has;
|
|
33473
|
+
|
|
33474
|
+
var enforce = function (it) {
|
|
33475
|
+
return has(it) ? get(it) : set$1(it, {});
|
|
33476
|
+
};
|
|
33477
|
+
|
|
33478
|
+
var getterFor = function (TYPE) {
|
|
33479
|
+
return function (it) {
|
|
33480
|
+
var state;
|
|
33481
|
+
|
|
33482
|
+
if (!isObject(it) || (state = get(it)).type !== TYPE) {
|
|
33483
|
+
throw TypeError$1('Incompatible receiver, ' + TYPE + ' required');
|
|
33484
|
+
}
|
|
33485
|
+
|
|
33486
|
+
return state;
|
|
33487
|
+
};
|
|
33488
|
+
};
|
|
33489
|
+
|
|
33490
|
+
if (weakMapBasicDetection || sharedStore.state) {
|
|
33491
|
+
var store = sharedStore.state || (sharedStore.state = new WeakMap());
|
|
33492
|
+
var wmget = functionUncurryThis(store.get);
|
|
33493
|
+
var wmhas = functionUncurryThis(store.has);
|
|
33494
|
+
var wmset = functionUncurryThis(store.set);
|
|
33495
|
+
|
|
33496
|
+
set$1 = function (it, metadata) {
|
|
33497
|
+
if (wmhas(store, it)) throw TypeError$1(OBJECT_ALREADY_INITIALIZED);
|
|
33498
|
+
metadata.facade = it;
|
|
33499
|
+
wmset(store, it, metadata);
|
|
33500
|
+
return metadata;
|
|
33501
|
+
};
|
|
33502
|
+
|
|
33503
|
+
get = function (it) {
|
|
33504
|
+
return wmget(store, it) || {};
|
|
33505
|
+
};
|
|
33506
|
+
|
|
33507
|
+
has = function (it) {
|
|
33508
|
+
return wmhas(store, it);
|
|
33509
|
+
};
|
|
33510
|
+
} else {
|
|
33511
|
+
var STATE = sharedKey('state');
|
|
33512
|
+
hiddenKeys$1[STATE] = true;
|
|
33513
|
+
|
|
33514
|
+
set$1 = function (it, metadata) {
|
|
33515
|
+
if (hasOwnProperty_1(it, STATE)) throw TypeError$1(OBJECT_ALREADY_INITIALIZED);
|
|
33516
|
+
metadata.facade = it;
|
|
33517
|
+
createNonEnumerableProperty(it, STATE, metadata);
|
|
33518
|
+
return metadata;
|
|
33519
|
+
};
|
|
33520
|
+
|
|
33521
|
+
get = function (it) {
|
|
33522
|
+
return hasOwnProperty_1(it, STATE) ? it[STATE] : {};
|
|
33523
|
+
};
|
|
33524
|
+
|
|
33525
|
+
has = function (it) {
|
|
33526
|
+
return hasOwnProperty_1(it, STATE);
|
|
33527
|
+
};
|
|
33528
|
+
}
|
|
33529
|
+
|
|
33530
|
+
var internalState = {
|
|
33531
|
+
set: set$1,
|
|
33532
|
+
get: get,
|
|
33533
|
+
has: has,
|
|
33534
|
+
enforce: enforce,
|
|
33535
|
+
getterFor: getterFor
|
|
33536
|
+
};
|
|
33537
|
+
|
|
33538
|
+
var makeBuiltIn_1 = createCommonjsModule(function (module) {
|
|
33539
|
+
var CONFIGURABLE_FUNCTION_NAME = functionName.CONFIGURABLE;
|
|
33540
|
+
var enforceInternalState = internalState.enforce;
|
|
33541
|
+
var getInternalState = internalState.get; // eslint-disable-next-line es/no-object-defineproperty -- safe
|
|
33542
|
+
|
|
33543
|
+
var defineProperty = Object.defineProperty;
|
|
33544
|
+
var CONFIGURABLE_LENGTH = descriptors && !fails(function () {
|
|
33545
|
+
return defineProperty(function () {
|
|
33546
|
+
/* empty */
|
|
33547
|
+
}, 'length', {
|
|
33548
|
+
value: 8
|
|
33549
|
+
}).length !== 8;
|
|
33550
|
+
});
|
|
33551
|
+
var TEMPLATE = String(String).split('String');
|
|
33552
|
+
|
|
33553
|
+
var makeBuiltIn = module.exports = function (value, name, options) {
|
|
33554
|
+
if (String(name).slice(0, 7) === 'Symbol(') {
|
|
33555
|
+
name = '[' + String(name).replace(/^Symbol\(([^)]*)\)/, '$1') + ']';
|
|
33556
|
+
}
|
|
33557
|
+
|
|
33558
|
+
if (options && options.getter) name = 'get ' + name;
|
|
33559
|
+
if (options && options.setter) name = 'set ' + name;
|
|
33560
|
+
|
|
33561
|
+
if (!hasOwnProperty_1(value, 'name') || CONFIGURABLE_FUNCTION_NAME && value.name !== name) {
|
|
33562
|
+
if (descriptors) defineProperty(value, 'name', {
|
|
33563
|
+
value: name,
|
|
33564
|
+
configurable: true
|
|
33565
|
+
});else value.name = name;
|
|
33566
|
+
}
|
|
33567
|
+
|
|
33568
|
+
if (CONFIGURABLE_LENGTH && options && hasOwnProperty_1(options, 'arity') && value.length !== options.arity) {
|
|
33569
|
+
defineProperty(value, 'length', {
|
|
33570
|
+
value: options.arity
|
|
33571
|
+
});
|
|
33572
|
+
}
|
|
33573
|
+
|
|
33574
|
+
try {
|
|
33575
|
+
if (options && hasOwnProperty_1(options, 'constructor') && options.constructor) {
|
|
33576
|
+
if (descriptors) defineProperty(value, 'prototype', {
|
|
33577
|
+
writable: false
|
|
33578
|
+
}); // in V8 ~ Chrome 53, prototypes of some methods, like `Array.prototype.values`, are non-writable
|
|
33579
|
+
} else if (value.prototype) value.prototype = undefined;
|
|
33580
|
+
} catch (error) {
|
|
33581
|
+
/* empty */
|
|
33582
|
+
}
|
|
33583
|
+
|
|
33584
|
+
var state = enforceInternalState(value);
|
|
33585
|
+
|
|
33586
|
+
if (!hasOwnProperty_1(state, 'source')) {
|
|
33587
|
+
state.source = TEMPLATE.join(typeof name == 'string' ? name : '');
|
|
33588
|
+
}
|
|
33589
|
+
|
|
33590
|
+
return value;
|
|
33591
|
+
}; // add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative
|
|
33592
|
+
// eslint-disable-next-line no-extend-native -- required
|
|
33593
|
+
|
|
33594
|
+
|
|
33595
|
+
Function.prototype.toString = makeBuiltIn(function toString() {
|
|
33596
|
+
return isCallable(this) && getInternalState(this).source || inspectSource(this);
|
|
33597
|
+
}, 'toString');
|
|
33598
|
+
});
|
|
33599
|
+
|
|
33972
33600
|
var defineBuiltInAccessor = function (target, name, descriptor) {
|
|
33973
33601
|
if (descriptor.get) makeBuiltIn_1(descriptor.get, name, {
|
|
33974
33602
|
getter: true
|
|
@@ -34013,7 +33641,7 @@
|
|
|
34013
33641
|
var expected = INDICES_SUPPORT ? 'dgimsy' : 'gimsy';
|
|
34014
33642
|
|
|
34015
33643
|
var addGetter = function (key, chr) {
|
|
34016
|
-
// eslint-disable-next-line es
|
|
33644
|
+
// eslint-disable-next-line es/no-object-defineproperty -- safe
|
|
34017
33645
|
Object.defineProperty(O, key, {
|
|
34018
33646
|
get: function () {
|
|
34019
33647
|
calls += chr;
|
|
@@ -34031,7 +33659,7 @@
|
|
|
34031
33659
|
};
|
|
34032
33660
|
if (INDICES_SUPPORT) pairs.hasIndices = 'd';
|
|
34033
33661
|
|
|
34034
|
-
for (var key in pairs) addGetter(key, pairs[key]); // eslint-disable-next-line es
|
|
33662
|
+
for (var key in pairs) addGetter(key, pairs[key]); // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
|
|
34035
33663
|
|
|
34036
33664
|
|
|
34037
33665
|
var result = Object.getOwnPropertyDescriptor(RegExpPrototype, 'flags').get.call(O);
|
|
@@ -35298,7 +34926,7 @@
|
|
|
35298
34926
|
this.name = config.name;
|
|
35299
34927
|
} else if (config.url && isFile(config.url)) {
|
|
35300
34928
|
this.name = config.url.name;
|
|
35301
|
-
} else if (config.url && isString$
|
|
34929
|
+
} else if (config.url && isString$2(config.url) && !config.url.startsWith("data:")) {
|
|
35302
34930
|
this.name = getFilename$1(config.url);
|
|
35303
34931
|
}
|
|
35304
34932
|
|
|
@@ -35419,11 +35047,13 @@
|
|
|
35419
35047
|
this.genome = genome;
|
|
35420
35048
|
|
|
35421
35049
|
for (let feature of features) {
|
|
35422
|
-
|
|
35050
|
+
// Store as canonical chr name (i.e. translate aliases)
|
|
35051
|
+
const chrKey = genome ? genome.getChromosomeName(feature.chr) : feature.chr;
|
|
35052
|
+
let featureList = this.featureMap[chrKey];
|
|
35423
35053
|
|
|
35424
35054
|
if (!featureList) {
|
|
35425
35055
|
featureList = [];
|
|
35426
|
-
this.featureMap[
|
|
35056
|
+
this.featureMap[chrKey] = featureList;
|
|
35427
35057
|
}
|
|
35428
35058
|
|
|
35429
35059
|
featureList.push(feature);
|
|
@@ -35801,8 +35431,6 @@
|
|
|
35801
35431
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
35802
35432
|
* THE SOFTWARE.
|
|
35803
35433
|
*/
|
|
35804
|
-
const isString$1 = isString$3;
|
|
35805
|
-
const hashCode = hashCode$1;
|
|
35806
35434
|
|
|
35807
35435
|
class BamAlignmentRow {
|
|
35808
35436
|
constructor() {
|
|
@@ -35839,26 +35467,20 @@
|
|
|
35839
35467
|
return centerAlignment;
|
|
35840
35468
|
}
|
|
35841
35469
|
|
|
35842
|
-
|
|
35843
|
-
this.score = this.calculateScore(options, alignmentContainer);
|
|
35844
|
-
}
|
|
35845
|
-
|
|
35846
|
-
calculateScore(_ref, alignmentContainer) {
|
|
35470
|
+
getSortValue(_ref, alignmentContainer) {
|
|
35847
35471
|
let {
|
|
35848
35472
|
position,
|
|
35849
35473
|
option,
|
|
35850
|
-
direction,
|
|
35851
35474
|
tag
|
|
35852
35475
|
} = _ref;
|
|
35853
35476
|
if (!option) option = "BASE";
|
|
35854
35477
|
const alignment = this.findAlignment(position);
|
|
35855
35478
|
|
|
35856
35479
|
if (undefined === alignment) {
|
|
35857
|
-
|
|
35480
|
+
// This condition should never occur
|
|
35481
|
+
return Number.MAX_VALUE;
|
|
35858
35482
|
}
|
|
35859
35483
|
|
|
35860
|
-
let mate;
|
|
35861
|
-
|
|
35862
35484
|
switch (option) {
|
|
35863
35485
|
case "NUCLEOTIDE":
|
|
35864
35486
|
case "BASE":
|
|
@@ -35874,17 +35496,11 @@
|
|
|
35874
35496
|
|
|
35875
35497
|
case "TAG":
|
|
35876
35498
|
{
|
|
35877
|
-
|
|
35878
|
-
|
|
35879
|
-
if (tagValue !== undefined) {
|
|
35880
|
-
return isString$1(tagValue) ? hashCode(tagValue) : tagValue;
|
|
35881
|
-
} else {
|
|
35882
|
-
return Number.MAX_VALUE;
|
|
35883
|
-
}
|
|
35499
|
+
return alignment.tags()[tag];
|
|
35884
35500
|
}
|
|
35885
35501
|
|
|
35886
35502
|
case "READ_NAME":
|
|
35887
|
-
return
|
|
35503
|
+
return alignment.readName;
|
|
35888
35504
|
|
|
35889
35505
|
case "INSERT_SIZE":
|
|
35890
35506
|
return -Math.abs(alignment.fragmentLength);
|
|
@@ -35893,17 +35509,7 @@
|
|
|
35893
35509
|
return -alignment.gapSizeAt(position);
|
|
35894
35510
|
|
|
35895
35511
|
case "MATE_CHR":
|
|
35896
|
-
|
|
35897
|
-
|
|
35898
|
-
if (!mate) {
|
|
35899
|
-
return Number.MAX_VALUE;
|
|
35900
|
-
} else {
|
|
35901
|
-
if (mate.chr === alignment.chr) {
|
|
35902
|
-
return Number.MAX_VALUE - 1;
|
|
35903
|
-
} else {
|
|
35904
|
-
return hashCode(mate.chr);
|
|
35905
|
-
}
|
|
35906
|
-
}
|
|
35512
|
+
return alignment.mate;
|
|
35907
35513
|
|
|
35908
35514
|
case "MQ":
|
|
35909
35515
|
return alignment.mq === undefined ? Number.MAX_VALUE : -alignment.mq;
|
|
@@ -36255,6 +35861,36 @@
|
|
|
36255
35861
|
return this.coverageMap.getMax(start, end);
|
|
36256
35862
|
}
|
|
36257
35863
|
|
|
35864
|
+
sortRows(options) {
|
|
35865
|
+
const newRows = [];
|
|
35866
|
+
const undefinedRow = [];
|
|
35867
|
+
|
|
35868
|
+
for (let row of this.packedAlignmentRows) {
|
|
35869
|
+
const alignment = row.findAlignment(options.position);
|
|
35870
|
+
|
|
35871
|
+
if (undefined !== alignment) {
|
|
35872
|
+
newRows.push(row);
|
|
35873
|
+
} else {
|
|
35874
|
+
undefinedRow.push(row);
|
|
35875
|
+
}
|
|
35876
|
+
}
|
|
35877
|
+
|
|
35878
|
+
newRows.sort((rowA, rowB) => {
|
|
35879
|
+
const direction = options.direction;
|
|
35880
|
+
const rowAValue = rowA.getSortValue(options, this);
|
|
35881
|
+
const rowBValue = rowB.getSortValue(options, this);
|
|
35882
|
+
if (rowBValue === undefined && rowBValue !== undefined) return 1;else if (rowAValue !== undefined && rowBValue === undefined) return -1;
|
|
35883
|
+
const i = rowAValue > rowBValue ? 1 : rowAValue < rowBValue ? -1 : 0;
|
|
35884
|
+
return true === direction ? i : -i;
|
|
35885
|
+
});
|
|
35886
|
+
|
|
35887
|
+
for (let row of undefinedRow) {
|
|
35888
|
+
newRows.push(row);
|
|
35889
|
+
}
|
|
35890
|
+
|
|
35891
|
+
this.packedAlignmentRows = newRows;
|
|
35892
|
+
}
|
|
35893
|
+
|
|
36258
35894
|
}
|
|
36259
35895
|
|
|
36260
35896
|
class DownsampleBucket {
|
|
@@ -38117,9 +37753,293 @@
|
|
|
38117
37753
|
|
|
38118
37754
|
}
|
|
38119
37755
|
|
|
37756
|
+
var $propertyIsEnumerable = {}.propertyIsEnumerable; // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
|
|
37757
|
+
|
|
37758
|
+
var getOwnPropertyDescriptor$1 = Object.getOwnPropertyDescriptor; // Nashorn ~ JDK8 bug
|
|
37759
|
+
|
|
37760
|
+
var NASHORN_BUG = getOwnPropertyDescriptor$1 && !$propertyIsEnumerable.call({
|
|
37761
|
+
1: 2
|
|
37762
|
+
}, 1); // `Object.prototype.propertyIsEnumerable` method implementation
|
|
37763
|
+
// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable
|
|
37764
|
+
|
|
37765
|
+
var f$3 = NASHORN_BUG ? function propertyIsEnumerable(V) {
|
|
37766
|
+
var descriptor = getOwnPropertyDescriptor$1(this, V);
|
|
37767
|
+
return !!descriptor && descriptor.enumerable;
|
|
37768
|
+
} : $propertyIsEnumerable;
|
|
37769
|
+
var objectPropertyIsEnumerable = {
|
|
37770
|
+
f: f$3
|
|
37771
|
+
};
|
|
37772
|
+
|
|
37773
|
+
var toString = functionUncurryThis({}.toString);
|
|
37774
|
+
var stringSlice = functionUncurryThis(''.slice);
|
|
37775
|
+
|
|
37776
|
+
var classofRaw = function (it) {
|
|
37777
|
+
return stringSlice(toString(it), 8, -1);
|
|
37778
|
+
};
|
|
37779
|
+
|
|
37780
|
+
var $Object = Object;
|
|
37781
|
+
var split = functionUncurryThis(''.split); // fallback for non-array-like ES3 and non-enumerable old V8 strings
|
|
37782
|
+
|
|
37783
|
+
var indexedObject = fails(function () {
|
|
37784
|
+
// throws an error in rhino, see https://github.com/mozilla/rhino/issues/346
|
|
37785
|
+
// eslint-disable-next-line no-prototype-builtins -- safe
|
|
37786
|
+
return !$Object('z').propertyIsEnumerable(0);
|
|
37787
|
+
}) ? function (it) {
|
|
37788
|
+
return classofRaw(it) == 'String' ? split(it, '') : $Object(it);
|
|
37789
|
+
} : $Object;
|
|
37790
|
+
|
|
37791
|
+
var toIndexedObject = function (it) {
|
|
37792
|
+
return indexedObject(requireObjectCoercible(it));
|
|
37793
|
+
};
|
|
37794
|
+
|
|
37795
|
+
var $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; // `Object.getOwnPropertyDescriptor` method
|
|
37796
|
+
// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor
|
|
37797
|
+
|
|
37798
|
+
var f$2 = descriptors ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {
|
|
37799
|
+
O = toIndexedObject(O);
|
|
37800
|
+
P = toPropertyKey(P);
|
|
37801
|
+
if (ie8DomDefine) try {
|
|
37802
|
+
return $getOwnPropertyDescriptor(O, P);
|
|
37803
|
+
} catch (error) {
|
|
37804
|
+
/* empty */
|
|
37805
|
+
}
|
|
37806
|
+
if (hasOwnProperty_1(O, P)) return createPropertyDescriptor(!functionCall(objectPropertyIsEnumerable.f, O, P), O[P]);
|
|
37807
|
+
};
|
|
37808
|
+
var objectGetOwnPropertyDescriptor = {
|
|
37809
|
+
f: f$2
|
|
37810
|
+
};
|
|
37811
|
+
|
|
37812
|
+
var defineBuiltIn = function (O, key, value, options) {
|
|
37813
|
+
if (!options) options = {};
|
|
37814
|
+
var simple = options.enumerable;
|
|
37815
|
+
var name = options.name !== undefined ? options.name : key;
|
|
37816
|
+
if (isCallable(value)) makeBuiltIn_1(value, name, options);
|
|
37817
|
+
|
|
37818
|
+
if (options.global) {
|
|
37819
|
+
if (simple) O[key] = value;else defineGlobalProperty(key, value);
|
|
37820
|
+
} else {
|
|
37821
|
+
try {
|
|
37822
|
+
if (!options.unsafe) delete O[key];else if (O[key]) simple = true;
|
|
37823
|
+
} catch (error) {
|
|
37824
|
+
/* empty */
|
|
37825
|
+
}
|
|
37826
|
+
|
|
37827
|
+
if (simple) O[key] = value;else objectDefineProperty.f(O, key, {
|
|
37828
|
+
value: value,
|
|
37829
|
+
enumerable: false,
|
|
37830
|
+
configurable: !options.nonConfigurable,
|
|
37831
|
+
writable: !options.nonWritable
|
|
37832
|
+
});
|
|
37833
|
+
}
|
|
37834
|
+
|
|
37835
|
+
return O;
|
|
37836
|
+
};
|
|
37837
|
+
|
|
37838
|
+
var ceil = Math.ceil;
|
|
37839
|
+
var floor = Math.floor; // `Math.trunc` method
|
|
37840
|
+
// https://tc39.es/ecma262/#sec-math.trunc
|
|
37841
|
+
// eslint-disable-next-line es/no-math-trunc -- safe
|
|
37842
|
+
|
|
37843
|
+
var mathTrunc = Math.trunc || function trunc(x) {
|
|
37844
|
+
var n = +x;
|
|
37845
|
+
return (n > 0 ? floor : ceil)(n);
|
|
37846
|
+
};
|
|
37847
|
+
|
|
37848
|
+
// https://tc39.es/ecma262/#sec-tointegerorinfinity
|
|
37849
|
+
|
|
37850
|
+
var toIntegerOrInfinity = function (argument) {
|
|
37851
|
+
var number = +argument; // eslint-disable-next-line no-self-compare -- NaN check
|
|
37852
|
+
|
|
37853
|
+
return number !== number || number === 0 ? 0 : mathTrunc(number);
|
|
37854
|
+
};
|
|
37855
|
+
|
|
37856
|
+
var max = Math.max;
|
|
37857
|
+
var min$1 = Math.min; // Helper for a popular repeating case of the spec:
|
|
37858
|
+
// Let integer be ? ToInteger(index).
|
|
37859
|
+
// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).
|
|
37860
|
+
|
|
37861
|
+
var toAbsoluteIndex = function (index, length) {
|
|
37862
|
+
var integer = toIntegerOrInfinity(index);
|
|
37863
|
+
return integer < 0 ? max(integer + length, 0) : min$1(integer, length);
|
|
37864
|
+
};
|
|
37865
|
+
|
|
37866
|
+
var min = Math.min; // `ToLength` abstract operation
|
|
37867
|
+
// https://tc39.es/ecma262/#sec-tolength
|
|
37868
|
+
|
|
37869
|
+
var toLength = function (argument) {
|
|
37870
|
+
return argument > 0 ? min(toIntegerOrInfinity(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991
|
|
37871
|
+
};
|
|
37872
|
+
|
|
37873
|
+
// https://tc39.es/ecma262/#sec-lengthofarraylike
|
|
37874
|
+
|
|
37875
|
+
var lengthOfArrayLike = function (obj) {
|
|
37876
|
+
return toLength(obj.length);
|
|
37877
|
+
};
|
|
37878
|
+
|
|
37879
|
+
var createMethod = function (IS_INCLUDES) {
|
|
37880
|
+
return function ($this, el, fromIndex) {
|
|
37881
|
+
var O = toIndexedObject($this);
|
|
37882
|
+
var length = lengthOfArrayLike(O);
|
|
37883
|
+
var index = toAbsoluteIndex(fromIndex, length);
|
|
37884
|
+
var value; // Array#includes uses SameValueZero equality algorithm
|
|
37885
|
+
// eslint-disable-next-line no-self-compare -- NaN check
|
|
37886
|
+
|
|
37887
|
+
if (IS_INCLUDES && el != el) while (length > index) {
|
|
37888
|
+
value = O[index++]; // eslint-disable-next-line no-self-compare -- NaN check
|
|
37889
|
+
|
|
37890
|
+
if (value != value) return true; // Array#indexOf ignores holes, Array#includes - not
|
|
37891
|
+
} else for (; length > index; index++) {
|
|
37892
|
+
if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;
|
|
37893
|
+
}
|
|
37894
|
+
return !IS_INCLUDES && -1;
|
|
37895
|
+
};
|
|
37896
|
+
};
|
|
37897
|
+
|
|
37898
|
+
var arrayIncludes = {
|
|
37899
|
+
// `Array.prototype.includes` method
|
|
37900
|
+
// https://tc39.es/ecma262/#sec-array.prototype.includes
|
|
37901
|
+
includes: createMethod(true),
|
|
37902
|
+
// `Array.prototype.indexOf` method
|
|
37903
|
+
// https://tc39.es/ecma262/#sec-array.prototype.indexof
|
|
37904
|
+
indexOf: createMethod(false)
|
|
37905
|
+
};
|
|
37906
|
+
|
|
37907
|
+
var indexOf = arrayIncludes.indexOf;
|
|
37908
|
+
var push = functionUncurryThis([].push);
|
|
37909
|
+
|
|
37910
|
+
var objectKeysInternal = function (object, names) {
|
|
37911
|
+
var O = toIndexedObject(object);
|
|
37912
|
+
var i = 0;
|
|
37913
|
+
var result = [];
|
|
37914
|
+
var key;
|
|
37915
|
+
|
|
37916
|
+
for (key in O) !hasOwnProperty_1(hiddenKeys$1, key) && hasOwnProperty_1(O, key) && push(result, key); // Don't enum bug & hidden keys
|
|
37917
|
+
|
|
37918
|
+
|
|
37919
|
+
while (names.length > i) if (hasOwnProperty_1(O, key = names[i++])) {
|
|
37920
|
+
~indexOf(result, key) || push(result, key);
|
|
37921
|
+
}
|
|
37922
|
+
|
|
37923
|
+
return result;
|
|
37924
|
+
};
|
|
37925
|
+
|
|
37926
|
+
// IE8- don't enum bug keys
|
|
37927
|
+
var enumBugKeys = ['constructor', 'hasOwnProperty', 'isPrototypeOf', 'propertyIsEnumerable', 'toLocaleString', 'toString', 'valueOf'];
|
|
37928
|
+
|
|
37929
|
+
var hiddenKeys = enumBugKeys.concat('length', 'prototype'); // `Object.getOwnPropertyNames` method
|
|
37930
|
+
// https://tc39.es/ecma262/#sec-object.getownpropertynames
|
|
37931
|
+
// eslint-disable-next-line es/no-object-getownpropertynames -- safe
|
|
37932
|
+
|
|
37933
|
+
var f$1 = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {
|
|
37934
|
+
return objectKeysInternal(O, hiddenKeys);
|
|
37935
|
+
};
|
|
37936
|
+
|
|
37937
|
+
var objectGetOwnPropertyNames = {
|
|
37938
|
+
f: f$1
|
|
37939
|
+
};
|
|
37940
|
+
|
|
37941
|
+
// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe
|
|
37942
|
+
var f = Object.getOwnPropertySymbols;
|
|
37943
|
+
var objectGetOwnPropertySymbols = {
|
|
37944
|
+
f: f
|
|
37945
|
+
};
|
|
37946
|
+
|
|
37947
|
+
var concat = functionUncurryThis([].concat); // all object keys, includes non-enumerable and symbols
|
|
37948
|
+
|
|
37949
|
+
var ownKeys = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {
|
|
37950
|
+
var keys = objectGetOwnPropertyNames.f(anObject(it));
|
|
37951
|
+
var getOwnPropertySymbols = objectGetOwnPropertySymbols.f;
|
|
37952
|
+
return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;
|
|
37953
|
+
};
|
|
37954
|
+
|
|
37955
|
+
var copyConstructorProperties = function (target, source, exceptions) {
|
|
37956
|
+
var keys = ownKeys(source);
|
|
37957
|
+
var defineProperty = objectDefineProperty.f;
|
|
37958
|
+
var getOwnPropertyDescriptor = objectGetOwnPropertyDescriptor.f;
|
|
37959
|
+
|
|
37960
|
+
for (var i = 0; i < keys.length; i++) {
|
|
37961
|
+
var key = keys[i];
|
|
37962
|
+
|
|
37963
|
+
if (!hasOwnProperty_1(target, key) && !(exceptions && hasOwnProperty_1(exceptions, key))) {
|
|
37964
|
+
defineProperty(target, key, getOwnPropertyDescriptor(source, key));
|
|
37965
|
+
}
|
|
37966
|
+
}
|
|
37967
|
+
};
|
|
37968
|
+
|
|
37969
|
+
var replacement = /#|\.prototype\./;
|
|
37970
|
+
|
|
37971
|
+
var isForced = function (feature, detection) {
|
|
37972
|
+
var value = data[normalize(feature)];
|
|
37973
|
+
return value == POLYFILL ? true : value == NATIVE ? false : isCallable(detection) ? fails(detection) : !!detection;
|
|
37974
|
+
};
|
|
37975
|
+
|
|
37976
|
+
var normalize = isForced.normalize = function (string) {
|
|
37977
|
+
return String(string).replace(replacement, '.').toLowerCase();
|
|
37978
|
+
};
|
|
37979
|
+
|
|
37980
|
+
var data = isForced.data = {};
|
|
37981
|
+
var NATIVE = isForced.NATIVE = 'N';
|
|
37982
|
+
var POLYFILL = isForced.POLYFILL = 'P';
|
|
37983
|
+
var isForced_1 = isForced;
|
|
37984
|
+
|
|
37985
|
+
var getOwnPropertyDescriptor = objectGetOwnPropertyDescriptor.f;
|
|
37986
|
+
/*
|
|
37987
|
+
options.target - name of the target object
|
|
37988
|
+
options.global - target is the global object
|
|
37989
|
+
options.stat - export as static methods of target
|
|
37990
|
+
options.proto - export as prototype methods of target
|
|
37991
|
+
options.real - real prototype method for the `pure` version
|
|
37992
|
+
options.forced - export even if the native feature is available
|
|
37993
|
+
options.bind - bind methods to the target, required for the `pure` version
|
|
37994
|
+
options.wrap - wrap constructors to preventing global pollution, required for the `pure` version
|
|
37995
|
+
options.unsafe - use the simple assignment of property instead of delete + defineProperty
|
|
37996
|
+
options.sham - add a flag to not completely full polyfills
|
|
37997
|
+
options.enumerable - export as enumerable property
|
|
37998
|
+
options.dontCallGetSet - prevent calling a getter on target
|
|
37999
|
+
options.name - the .name of the function if it does not match the key
|
|
38000
|
+
*/
|
|
38001
|
+
|
|
38002
|
+
var _export = function (options, source) {
|
|
38003
|
+
var TARGET = options.target;
|
|
38004
|
+
var GLOBAL = options.global;
|
|
38005
|
+
var STATIC = options.stat;
|
|
38006
|
+
var FORCED, target, key, targetProperty, sourceProperty, descriptor;
|
|
38007
|
+
|
|
38008
|
+
if (GLOBAL) {
|
|
38009
|
+
target = global$1;
|
|
38010
|
+
} else if (STATIC) {
|
|
38011
|
+
target = global$1[TARGET] || defineGlobalProperty(TARGET, {});
|
|
38012
|
+
} else {
|
|
38013
|
+
target = (global$1[TARGET] || {}).prototype;
|
|
38014
|
+
}
|
|
38015
|
+
|
|
38016
|
+
if (target) for (key in source) {
|
|
38017
|
+
sourceProperty = source[key];
|
|
38018
|
+
|
|
38019
|
+
if (options.dontCallGetSet) {
|
|
38020
|
+
descriptor = getOwnPropertyDescriptor(target, key);
|
|
38021
|
+
targetProperty = descriptor && descriptor.value;
|
|
38022
|
+
} else targetProperty = target[key];
|
|
38023
|
+
|
|
38024
|
+
FORCED = isForced_1(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced); // contained in target
|
|
38025
|
+
|
|
38026
|
+
if (!FORCED && targetProperty !== undefined) {
|
|
38027
|
+
if (typeof sourceProperty == typeof targetProperty) continue;
|
|
38028
|
+
copyConstructorProperties(sourceProperty, targetProperty);
|
|
38029
|
+
} // add a flag to not completely full polyfills
|
|
38030
|
+
|
|
38031
|
+
|
|
38032
|
+
if (options.sham || targetProperty && targetProperty.sham) {
|
|
38033
|
+
createNonEnumerableProperty(sourceProperty, 'sham', true);
|
|
38034
|
+
}
|
|
38035
|
+
|
|
38036
|
+
defineBuiltIn(target, key, sourceProperty, options);
|
|
38037
|
+
}
|
|
38038
|
+
};
|
|
38039
|
+
|
|
38120
38040
|
var FunctionPrototype = Function.prototype;
|
|
38121
38041
|
var apply = FunctionPrototype.apply;
|
|
38122
|
-
var call = FunctionPrototype.call; // eslint-disable-next-line es
|
|
38042
|
+
var call = FunctionPrototype.call; // eslint-disable-next-line es/no-reflect -- safe
|
|
38123
38043
|
|
|
38124
38044
|
var functionApply = typeof Reflect == 'object' && Reflect.apply || (functionBindNative ? call.bind(apply) : function () {
|
|
38125
38045
|
return call.apply(apply, arguments);
|
|
@@ -38136,6 +38056,8 @@
|
|
|
38136
38056
|
};
|
|
38137
38057
|
};
|
|
38138
38058
|
|
|
38059
|
+
var html = getBuiltIn('document', 'documentElement');
|
|
38060
|
+
|
|
38139
38061
|
var arraySlice = functionUncurryThis([].slice);
|
|
38140
38062
|
|
|
38141
38063
|
var $TypeError = TypeError;
|
|
@@ -38159,11 +38081,11 @@
|
|
|
38159
38081
|
var counter = 0;
|
|
38160
38082
|
var queue = {};
|
|
38161
38083
|
var ONREADYSTATECHANGE = 'onreadystatechange';
|
|
38162
|
-
var location, defer, channel, port;
|
|
38084
|
+
var $location, defer, channel, port;
|
|
38163
38085
|
|
|
38164
38086
|
try {
|
|
38165
38087
|
// Deno throws a ReferenceError on `location` access without `--location` flag
|
|
38166
|
-
location = global$1.location;
|
|
38088
|
+
$location = global$1.location;
|
|
38167
38089
|
} catch (error) {
|
|
38168
38090
|
/* empty */
|
|
38169
38091
|
}
|
|
@@ -38188,7 +38110,7 @@
|
|
|
38188
38110
|
|
|
38189
38111
|
var post = function (id) {
|
|
38190
38112
|
// old engines have not location.origin
|
|
38191
|
-
global$1.postMessage(String$1(id), location.protocol + '//' + location.host);
|
|
38113
|
+
global$1.postMessage(String$1(id), $location.protocol + '//' + $location.host);
|
|
38192
38114
|
}; // Node.js 0.9+ & IE10+ has setImmediate, otherwise:
|
|
38193
38115
|
|
|
38194
38116
|
|
|
@@ -38228,7 +38150,7 @@
|
|
|
38228
38150
|
channel.port1.onmessage = listener;
|
|
38229
38151
|
defer = functionBindContext(port.postMessage, port); // Browsers with postMessage, skip WebWorkers
|
|
38230
38152
|
// IE8 has postMessage, but it's sync & typeof its postMessage is 'object'
|
|
38231
|
-
} else if (global$1.addEventListener && isCallable(global$1.postMessage) && !global$1.importScripts && location && location.protocol !== 'file:' && !fails(post)) {
|
|
38153
|
+
} else if (global$1.addEventListener && isCallable(global$1.postMessage) && !global$1.importScripts && $location && $location.protocol !== 'file:' && !fails(post)) {
|
|
38232
38154
|
defer = post;
|
|
38233
38155
|
global$1.addEventListener('message', listener, false); // IE8-
|
|
38234
38156
|
} else if (ONREADYSTATECHANGE in documentCreateElement('script')) {
|
|
@@ -53449,7 +53371,7 @@
|
|
|
53449
53371
|
message = "Sequence mismatch. Is this the correct genome for the loaded CRAM?";
|
|
53450
53372
|
}
|
|
53451
53373
|
|
|
53452
|
-
|
|
53374
|
+
this.browser.alert.present(new Error(message));
|
|
53453
53375
|
throw error;
|
|
53454
53376
|
}
|
|
53455
53377
|
}
|
|
@@ -54197,10 +54119,6 @@
|
|
|
54197
54119
|
this.genome = genome;
|
|
54198
54120
|
|
|
54199
54121
|
if (isDataURL(config.url)) {
|
|
54200
|
-
if ("cram" === config.format) {
|
|
54201
|
-
throw "CRAM data uris are not supported";
|
|
54202
|
-
}
|
|
54203
|
-
|
|
54204
54122
|
this.config.indexed = false;
|
|
54205
54123
|
}
|
|
54206
54124
|
|
|
@@ -54216,7 +54134,7 @@
|
|
|
54216
54134
|
this.bamReader = new CramReader(config, genome, browser);
|
|
54217
54135
|
} else {
|
|
54218
54136
|
if (!this.config.indexURL && config.indexed !== false) {
|
|
54219
|
-
if (isString$
|
|
54137
|
+
if (isString$2(this.config.url)) {
|
|
54220
54138
|
const inferIndexPath$1 = inferIndexPath(this.config.url, "bai");
|
|
54221
54139
|
|
|
54222
54140
|
if (inferIndexPath$1) {
|
|
@@ -56609,7 +56527,7 @@
|
|
|
56609
56527
|
const alignmentContainer = vp.cachedFeatures;
|
|
56610
56528
|
|
|
56611
56529
|
if (alignmentContainer) {
|
|
56612
|
-
|
|
56530
|
+
alignmentContainer.sortRows(options);
|
|
56613
56531
|
vp.repaint();
|
|
56614
56532
|
}
|
|
56615
56533
|
}
|
|
@@ -56655,7 +56573,7 @@
|
|
|
56655
56573
|
|
|
56656
56574
|
if (sort) {
|
|
56657
56575
|
if (sort.chr === chr && sort.position >= bpStart && sort.position <= bpEnd) {
|
|
56658
|
-
|
|
56576
|
+
alignmentContainer.sortRows(sort);
|
|
56659
56577
|
}
|
|
56660
56578
|
}
|
|
56661
56579
|
|
|
@@ -57708,7 +57626,7 @@
|
|
|
57708
57626
|
direction: direction
|
|
57709
57627
|
};
|
|
57710
57628
|
this.parent.sortObject = newSortObject;
|
|
57711
|
-
|
|
57629
|
+
viewport.cachedFeatures.sortRows(newSortObject);
|
|
57712
57630
|
viewport.repaint();
|
|
57713
57631
|
};
|
|
57714
57632
|
|
|
@@ -57764,7 +57682,7 @@
|
|
|
57764
57682
|
};
|
|
57765
57683
|
this.sortByTag = tag;
|
|
57766
57684
|
this.parent.sortObject = newSortObject;
|
|
57767
|
-
|
|
57685
|
+
viewport.cachedFeatures.sortRows(newSortObject);
|
|
57768
57686
|
viewport.repaint();
|
|
57769
57687
|
}
|
|
57770
57688
|
}
|
|
@@ -57795,7 +57713,7 @@
|
|
|
57795
57713
|
const frameEnd = clickedAlignment.mate.position + bpWidth / 2;
|
|
57796
57714
|
this.browser.addMultiLocusPanel(clickedAlignment.mate.chr, frameStart, frameEnd, referenceFrame);
|
|
57797
57715
|
} else {
|
|
57798
|
-
|
|
57716
|
+
this.browser.alert.present(`Reference does not contain chromosome: ${clickedAlignment.mate.chr}`);
|
|
57799
57717
|
}
|
|
57800
57718
|
}
|
|
57801
57719
|
},
|
|
@@ -57809,9 +57727,9 @@
|
|
|
57809
57727
|
const seqstring = clickedAlignment.seq; //.map(b => String.fromCharCode(b)).join("");
|
|
57810
57728
|
|
|
57811
57729
|
if (!seqstring || "*" === seqstring) {
|
|
57812
|
-
|
|
57730
|
+
this.browser.alert.present("Read sequence: *");
|
|
57813
57731
|
} else {
|
|
57814
|
-
|
|
57732
|
+
this.browser.alert.present(seqstring);
|
|
57815
57733
|
}
|
|
57816
57734
|
}
|
|
57817
57735
|
});
|
|
@@ -57827,7 +57745,7 @@
|
|
|
57827
57745
|
await navigator.clipboard.writeText(seq);
|
|
57828
57746
|
} catch (e) {
|
|
57829
57747
|
console.error(e);
|
|
57830
|
-
|
|
57748
|
+
this.browser.alert.present(`error copying sequence to clipboard ${e}`);
|
|
57831
57749
|
}
|
|
57832
57750
|
}
|
|
57833
57751
|
});
|
|
@@ -58004,19 +57922,6 @@
|
|
|
58004
57922
|
|
|
58005
57923
|
}
|
|
58006
57924
|
|
|
58007
|
-
function sortAlignmentRows(options, alignmentContainer) {
|
|
58008
|
-
const direction = options.direction;
|
|
58009
|
-
|
|
58010
|
-
for (let row of alignmentContainer.packedAlignmentRows) {
|
|
58011
|
-
row.updateScore(options, alignmentContainer);
|
|
58012
|
-
}
|
|
58013
|
-
|
|
58014
|
-
alignmentContainer.packedAlignmentRows.sort(function (rowA, rowB) {
|
|
58015
|
-
const i = rowA.score > rowB.score ? 1 : rowA.score < rowB.score ? -1 : 0;
|
|
58016
|
-
return true === direction ? i : -i;
|
|
58017
|
-
});
|
|
58018
|
-
}
|
|
58019
|
-
|
|
58020
57925
|
function shadedBaseColor(qual, baseColor) {
|
|
58021
57926
|
const minQ = 5; //prefs.getAsInt(PreferenceManager.SAM_BASE_QUALITY_MIN),
|
|
58022
57927
|
|
|
@@ -58720,198 +58625,222 @@
|
|
|
58720
58625
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
58721
58626
|
* THE SOFTWARE.
|
|
58722
58627
|
*/
|
|
58723
|
-
|
|
58724
|
-
const MenuPopup = function (parent) {
|
|
58725
|
-
this.popover = div$1({
|
|
58726
|
-
class: 'igv-menu-popup'
|
|
58727
|
-
});
|
|
58728
|
-
parent.appendChild(this.popover);
|
|
58729
|
-
const header = div$1({
|
|
58730
|
-
class: 'igv-menu-popup-header'
|
|
58731
|
-
});
|
|
58732
|
-
this.popover.appendChild(header);
|
|
58733
|
-
attachDialogCloseHandlerWithParent$1(header, () => this.hide());
|
|
58734
|
-
this.popoverContent = div$1();
|
|
58735
|
-
this.popover.appendChild(this.popoverContent);
|
|
58736
|
-
makeDraggable$1(this.popover, header);
|
|
58737
|
-
header.addEventListener('click', e => {
|
|
58738
|
-
e.stopPropagation();
|
|
58739
|
-
e.preventDefault(); // absorb click to prevent it leaking through to parent DOM element
|
|
58740
|
-
});
|
|
58741
|
-
this.hide();
|
|
58742
|
-
};
|
|
58743
|
-
|
|
58744
|
-
MenuPopup.prototype.hide = function () {
|
|
58745
|
-
this.popover.style.display = 'none';
|
|
58746
|
-
};
|
|
58747
|
-
|
|
58748
|
-
MenuPopup.prototype.presentMenuList = function (menuList) {
|
|
58749
|
-
hideAllMenuPopups();
|
|
58750
|
-
|
|
58751
|
-
if (menuList.length > 0) {
|
|
58752
|
-
this.popoverContent.innerHTML = '';
|
|
58753
|
-
menuList = MenuUtils.trackMenuItemListHelper(menuList, this);
|
|
58754
|
-
|
|
58755
|
-
for (let item of menuList) {
|
|
58756
|
-
if (item.init) {
|
|
58757
|
-
item.init();
|
|
58758
|
-
}
|
|
58759
|
-
|
|
58760
|
-
let $e = item.object;
|
|
58761
|
-
|
|
58762
|
-
if (0 === menuList.indexOf(item)) {
|
|
58763
|
-
$e.removeClass('igv-track-menu-border-top');
|
|
58764
|
-
}
|
|
58765
|
-
|
|
58766
|
-
if ($e.hasClass('igv-track-menu-border-top') || $e.hasClass('igv-menu-popup-check-container')) ; else if ($e.is('div')) {
|
|
58767
|
-
$e.addClass('igv-menu-popup-shim');
|
|
58768
|
-
}
|
|
58769
|
-
|
|
58770
|
-
this.popoverContent.appendChild($e.get(0));
|
|
58771
|
-
} // NOTE: style.display most NOT be 'none' when calculating width. a display = 'none' will always
|
|
58772
|
-
// yield a width of zero (0).
|
|
58773
|
-
|
|
58774
|
-
|
|
58775
|
-
this.popover.style.display = 'flex';
|
|
58776
|
-
const {
|
|
58777
|
-
width
|
|
58778
|
-
} = this.popover.getBoundingClientRect();
|
|
58779
|
-
this.popover.style.left = `${-width}px`;
|
|
58780
|
-
this.popover.style.top = `${0}px`;
|
|
58781
|
-
}
|
|
58782
|
-
};
|
|
58783
|
-
|
|
58784
|
-
MenuPopup.prototype.presentTrackContextMenu = function (e, menuItems) {
|
|
58785
|
-
this.popoverContent.innerHTML = '';
|
|
58786
|
-
const menuElements = createMenuElements(menuItems, this.popover);
|
|
58787
|
-
|
|
58788
|
-
for (let {
|
|
58789
|
-
el
|
|
58790
|
-
} of menuElements) {
|
|
58791
|
-
this.popoverContent.appendChild(el);
|
|
58792
|
-
}
|
|
58793
|
-
|
|
58794
|
-
present(e, this.popover);
|
|
58795
|
-
};
|
|
58796
|
-
|
|
58797
|
-
MenuPopup.prototype.dispose = function () {
|
|
58798
|
-
this.popoverContent.innerHTML = '';
|
|
58799
|
-
this.popover.innerHTML = '';
|
|
58800
|
-
Object.keys(this).forEach(function (key) {
|
|
58801
|
-
this[key] = undefined;
|
|
58802
|
-
});
|
|
58803
|
-
};
|
|
58804
|
-
|
|
58805
|
-
function createMenuElements(itemList, popover) {
|
|
58806
|
-
return itemList.map(item => {
|
|
58807
|
-
let el;
|
|
58808
|
-
|
|
58809
|
-
if (typeof item === 'string' && '<hr/>' === item) {
|
|
58810
|
-
el = document.createElement('hr');
|
|
58811
|
-
} else if (typeof item === 'string') {
|
|
58812
|
-
el = div$1({
|
|
58813
|
-
class: 'context-menu'
|
|
58814
|
-
});
|
|
58815
|
-
el.innerHTML = item;
|
|
58816
|
-
} else if (typeof item === 'Node') {
|
|
58817
|
-
el = item;
|
|
58818
|
-
} else {
|
|
58819
|
-
if (typeof item.init === 'function') {
|
|
58820
|
-
item.init();
|
|
58821
|
-
}
|
|
58822
|
-
|
|
58823
|
-
if ("checkbox" === item.type) {
|
|
58824
|
-
el = createCheckbox$1("Show all bases", item.value);
|
|
58825
|
-
} else if ("color" === item.type) {
|
|
58826
|
-
const colorPicker = new GenericColorPicker({
|
|
58827
|
-
parent: popover.parentElement,
|
|
58828
|
-
width: 364
|
|
58829
|
-
});
|
|
58830
|
-
colorPicker.configure(undefined, {
|
|
58831
|
-
color: color => item.click(color)
|
|
58832
|
-
});
|
|
58833
|
-
el = div$1({
|
|
58834
|
-
class: 'context-menu'
|
|
58835
|
-
});
|
|
58836
|
-
|
|
58837
|
-
if (typeof item.label === 'string') {
|
|
58838
|
-
el.innerHTML = item.label;
|
|
58839
|
-
}
|
|
58840
|
-
|
|
58841
|
-
const clickHandler = e => {
|
|
58842
|
-
colorPicker.show();
|
|
58843
|
-
hide$1(popover);
|
|
58844
|
-
e.preventDefault();
|
|
58845
|
-
e.stopPropagation();
|
|
58846
|
-
};
|
|
58847
|
-
|
|
58848
|
-
el.addEventListener('click', clickHandler);
|
|
58849
|
-
el.addEventListener('touchend', clickHandler);
|
|
58850
|
-
el.addEventListener('mouseup', function (e) {
|
|
58851
|
-
e.preventDefault();
|
|
58852
|
-
e.stopPropagation();
|
|
58853
|
-
});
|
|
58854
|
-
} else {
|
|
58855
|
-
el = div$1({
|
|
58856
|
-
class: 'context-menu'
|
|
58857
|
-
});
|
|
58858
|
-
|
|
58859
|
-
if (typeof item.label === 'string') {
|
|
58860
|
-
el.innerHTML = item.label;
|
|
58861
|
-
}
|
|
58862
|
-
}
|
|
58863
|
-
|
|
58864
|
-
if (item.click && "color" !== item.type) {
|
|
58865
|
-
el.addEventListener('click', handleClick);
|
|
58866
|
-
el.addEventListener('touchend', handleClick);
|
|
58867
|
-
el.addEventListener('mouseup', function (e) {
|
|
58868
|
-
e.preventDefault();
|
|
58869
|
-
e.stopPropagation();
|
|
58870
|
-
}); // eslint-disable-next-line no-inner-declarations
|
|
58871
|
-
|
|
58872
|
-
function handleClick(e) {
|
|
58873
|
-
item.click();
|
|
58874
|
-
hide$1(popover);
|
|
58875
|
-
e.preventDefault();
|
|
58876
|
-
e.stopPropagation();
|
|
58877
|
-
}
|
|
58878
|
-
}
|
|
58879
|
-
}
|
|
58880
|
-
|
|
58881
|
-
return {
|
|
58882
|
-
el,
|
|
58883
|
-
init: item.init
|
|
58884
|
-
};
|
|
58885
|
-
});
|
|
58886
|
-
}
|
|
58887
|
-
|
|
58888
|
-
function present(e, popover) {
|
|
58889
|
-
// NOTE: style.display most NOT be 'none' when calculating width. a display = 'none' will always
|
|
58890
|
-
// yield a width of zero (0).
|
|
58891
|
-
popover.style.display = 'flex';
|
|
58892
|
-
const {
|
|
58893
|
-
x,
|
|
58894
|
-
y
|
|
58895
|
-
} = translateMouseCoordinates$1(e, popover.parentNode);
|
|
58896
|
-
const {
|
|
58897
|
-
width
|
|
58898
|
-
} = popover.getBoundingClientRect();
|
|
58899
|
-
const xmax = x + width;
|
|
58900
|
-
const {
|
|
58901
|
-
width: parentWidth
|
|
58902
|
-
} = popover.parentNode.getBoundingClientRect();
|
|
58903
|
-
popover.style.left = `${xmax > parentWidth ? x - (xmax - parentWidth) : x}px`;
|
|
58904
|
-
popover.style.top = `${y}px`;
|
|
58905
|
-
}
|
|
58906
|
-
|
|
58907
|
-
const hideAllMenuPopups = () => {
|
|
58908
|
-
const menus = document.querySelectorAll('.igv-menu-popup');
|
|
58909
|
-
|
|
58910
|
-
for (let i = 0; i < menus.length; i++) {
|
|
58911
|
-
menus[i].style.display = 'none';
|
|
58912
|
-
}
|
|
58913
|
-
};
|
|
58914
|
-
|
|
58628
|
+
|
|
58629
|
+
const MenuPopup = function (parent) {
|
|
58630
|
+
this.popover = div$1({
|
|
58631
|
+
class: 'igv-menu-popup'
|
|
58632
|
+
});
|
|
58633
|
+
parent.appendChild(this.popover);
|
|
58634
|
+
const header = div$1({
|
|
58635
|
+
class: 'igv-menu-popup-header'
|
|
58636
|
+
});
|
|
58637
|
+
this.popover.appendChild(header);
|
|
58638
|
+
attachDialogCloseHandlerWithParent$1(header, () => this.hide());
|
|
58639
|
+
this.popoverContent = div$1();
|
|
58640
|
+
this.popover.appendChild(this.popoverContent);
|
|
58641
|
+
makeDraggable$1(this.popover, header);
|
|
58642
|
+
header.addEventListener('click', e => {
|
|
58643
|
+
e.stopPropagation();
|
|
58644
|
+
e.preventDefault(); // absorb click to prevent it leaking through to parent DOM element
|
|
58645
|
+
});
|
|
58646
|
+
this.hide();
|
|
58647
|
+
};
|
|
58648
|
+
|
|
58649
|
+
MenuPopup.prototype.hide = function () {
|
|
58650
|
+
this.popover.style.display = 'none';
|
|
58651
|
+
};
|
|
58652
|
+
|
|
58653
|
+
MenuPopup.prototype.presentMenuList = function (menuList) {
|
|
58654
|
+
hideAllMenuPopups();
|
|
58655
|
+
|
|
58656
|
+
if (menuList.length > 0) {
|
|
58657
|
+
this.popoverContent.innerHTML = '';
|
|
58658
|
+
menuList = MenuUtils.trackMenuItemListHelper(menuList, this);
|
|
58659
|
+
|
|
58660
|
+
for (let item of menuList) {
|
|
58661
|
+
if (item.init) {
|
|
58662
|
+
item.init();
|
|
58663
|
+
}
|
|
58664
|
+
|
|
58665
|
+
let $e = item.object;
|
|
58666
|
+
|
|
58667
|
+
if (0 === menuList.indexOf(item)) {
|
|
58668
|
+
$e.removeClass('igv-track-menu-border-top');
|
|
58669
|
+
}
|
|
58670
|
+
|
|
58671
|
+
if ($e.hasClass('igv-track-menu-border-top') || $e.hasClass('igv-menu-popup-check-container')) ; else if ($e.is('div')) {
|
|
58672
|
+
$e.addClass('igv-menu-popup-shim');
|
|
58673
|
+
}
|
|
58674
|
+
|
|
58675
|
+
this.popoverContent.appendChild($e.get(0));
|
|
58676
|
+
} // NOTE: style.display most NOT be 'none' when calculating width. a display = 'none' will always
|
|
58677
|
+
// yield a width of zero (0).
|
|
58678
|
+
|
|
58679
|
+
|
|
58680
|
+
this.popover.style.display = 'flex';
|
|
58681
|
+
const {
|
|
58682
|
+
width
|
|
58683
|
+
} = this.popover.getBoundingClientRect();
|
|
58684
|
+
this.popover.style.left = `${-width}px`;
|
|
58685
|
+
this.popover.style.top = `${0}px`;
|
|
58686
|
+
}
|
|
58687
|
+
};
|
|
58688
|
+
|
|
58689
|
+
MenuPopup.prototype.presentTrackContextMenu = function (e, menuItems) {
|
|
58690
|
+
this.popoverContent.innerHTML = '';
|
|
58691
|
+
const menuElements = createMenuElements(menuItems, this.popover);
|
|
58692
|
+
|
|
58693
|
+
for (let {
|
|
58694
|
+
el
|
|
58695
|
+
} of menuElements) {
|
|
58696
|
+
this.popoverContent.appendChild(el);
|
|
58697
|
+
}
|
|
58698
|
+
|
|
58699
|
+
present(e, this.popover);
|
|
58700
|
+
};
|
|
58701
|
+
|
|
58702
|
+
MenuPopup.prototype.dispose = function () {
|
|
58703
|
+
this.popoverContent.innerHTML = '';
|
|
58704
|
+
this.popover.innerHTML = '';
|
|
58705
|
+
Object.keys(this).forEach(function (key) {
|
|
58706
|
+
this[key] = undefined;
|
|
58707
|
+
});
|
|
58708
|
+
};
|
|
58709
|
+
|
|
58710
|
+
function createMenuElements(itemList, popover) {
|
|
58711
|
+
return itemList.map(item => {
|
|
58712
|
+
let el;
|
|
58713
|
+
|
|
58714
|
+
if (typeof item === 'string' && '<hr/>' === item) {
|
|
58715
|
+
el = document.createElement('hr');
|
|
58716
|
+
} else if (typeof item === 'string') {
|
|
58717
|
+
el = div$1({
|
|
58718
|
+
class: 'context-menu'
|
|
58719
|
+
});
|
|
58720
|
+
el.innerHTML = item;
|
|
58721
|
+
} else if (typeof item === 'Node') {
|
|
58722
|
+
el = item;
|
|
58723
|
+
} else {
|
|
58724
|
+
if (typeof item.init === 'function') {
|
|
58725
|
+
item.init();
|
|
58726
|
+
}
|
|
58727
|
+
|
|
58728
|
+
if ("checkbox" === item.type) {
|
|
58729
|
+
el = createCheckbox$1("Show all bases", item.value);
|
|
58730
|
+
} else if ("color" === item.type) {
|
|
58731
|
+
const colorPicker = new GenericColorPicker({
|
|
58732
|
+
parent: popover.parentElement,
|
|
58733
|
+
width: 364
|
|
58734
|
+
});
|
|
58735
|
+
colorPicker.configure(undefined, {
|
|
58736
|
+
color: color => item.click(color)
|
|
58737
|
+
});
|
|
58738
|
+
el = div$1({
|
|
58739
|
+
class: 'context-menu'
|
|
58740
|
+
});
|
|
58741
|
+
|
|
58742
|
+
if (typeof item.label === 'string') {
|
|
58743
|
+
el.innerHTML = item.label;
|
|
58744
|
+
}
|
|
58745
|
+
|
|
58746
|
+
const clickHandler = e => {
|
|
58747
|
+
colorPicker.show();
|
|
58748
|
+
hide$1(popover);
|
|
58749
|
+
e.preventDefault();
|
|
58750
|
+
e.stopPropagation();
|
|
58751
|
+
};
|
|
58752
|
+
|
|
58753
|
+
el.addEventListener('click', clickHandler);
|
|
58754
|
+
el.addEventListener('touchend', clickHandler);
|
|
58755
|
+
el.addEventListener('mouseup', function (e) {
|
|
58756
|
+
e.preventDefault();
|
|
58757
|
+
e.stopPropagation();
|
|
58758
|
+
});
|
|
58759
|
+
} else {
|
|
58760
|
+
el = div$1({
|
|
58761
|
+
class: 'context-menu'
|
|
58762
|
+
});
|
|
58763
|
+
|
|
58764
|
+
if (typeof item.label === 'string') {
|
|
58765
|
+
el.innerHTML = item.label;
|
|
58766
|
+
}
|
|
58767
|
+
}
|
|
58768
|
+
|
|
58769
|
+
if (item.click && "color" !== item.type) {
|
|
58770
|
+
el.addEventListener('click', handleClick);
|
|
58771
|
+
el.addEventListener('touchend', handleClick);
|
|
58772
|
+
el.addEventListener('mouseup', function (e) {
|
|
58773
|
+
e.preventDefault();
|
|
58774
|
+
e.stopPropagation();
|
|
58775
|
+
}); // eslint-disable-next-line no-inner-declarations
|
|
58776
|
+
|
|
58777
|
+
function handleClick(e) {
|
|
58778
|
+
item.click();
|
|
58779
|
+
hide$1(popover);
|
|
58780
|
+
e.preventDefault();
|
|
58781
|
+
e.stopPropagation();
|
|
58782
|
+
}
|
|
58783
|
+
}
|
|
58784
|
+
}
|
|
58785
|
+
|
|
58786
|
+
return {
|
|
58787
|
+
el,
|
|
58788
|
+
init: item.init
|
|
58789
|
+
};
|
|
58790
|
+
});
|
|
58791
|
+
}
|
|
58792
|
+
|
|
58793
|
+
function present(e, popover) {
|
|
58794
|
+
// NOTE: style.display most NOT be 'none' when calculating width. a display = 'none' will always
|
|
58795
|
+
// yield a width of zero (0).
|
|
58796
|
+
popover.style.display = 'flex';
|
|
58797
|
+
const {
|
|
58798
|
+
x,
|
|
58799
|
+
y
|
|
58800
|
+
} = translateMouseCoordinates$1(e, popover.parentNode);
|
|
58801
|
+
const {
|
|
58802
|
+
width
|
|
58803
|
+
} = popover.getBoundingClientRect();
|
|
58804
|
+
const xmax = x + width;
|
|
58805
|
+
const {
|
|
58806
|
+
width: parentWidth
|
|
58807
|
+
} = popover.parentNode.getBoundingClientRect();
|
|
58808
|
+
popover.style.left = `${xmax > parentWidth ? x - (xmax - parentWidth) : x}px`;
|
|
58809
|
+
popover.style.top = `${y}px`;
|
|
58810
|
+
}
|
|
58811
|
+
|
|
58812
|
+
const hideAllMenuPopups = () => {
|
|
58813
|
+
const menus = document.querySelectorAll('.igv-menu-popup');
|
|
58814
|
+
|
|
58815
|
+
for (let i = 0; i < menus.length; i++) {
|
|
58816
|
+
menus[i].style.display = 'none';
|
|
58817
|
+
}
|
|
58818
|
+
};
|
|
58819
|
+
|
|
58820
|
+
/*
|
|
58821
|
+
* The MIT License (MIT)
|
|
58822
|
+
*
|
|
58823
|
+
* Copyright (c) 2014 Broad Institute
|
|
58824
|
+
*
|
|
58825
|
+
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
58826
|
+
* of this software and associated documentation files (the "Software"), to deal
|
|
58827
|
+
* in the Software without restriction, including without limitation the rights
|
|
58828
|
+
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
58829
|
+
* copies of the Software, and to permit persons to whom the Software is
|
|
58830
|
+
* furnished to do so, subject to the following conditions:
|
|
58831
|
+
*
|
|
58832
|
+
* The above copyright notice and this permission notice shall be included in
|
|
58833
|
+
* all copies or substantial portions of the Software.
|
|
58834
|
+
*
|
|
58835
|
+
*
|
|
58836
|
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
58837
|
+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
58838
|
+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
58839
|
+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
58840
|
+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
58841
|
+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
58842
|
+
* THE SOFTWARE.
|
|
58843
|
+
*/
|
|
58915
58844
|
const scrollbarExclusionTypes = new Set(['ruler', 'sequence', 'ideogram']);
|
|
58916
58845
|
const colorPickerExclusionTypes = new Set(['ruler', 'sequence', 'ideogram']);
|
|
58917
58846
|
|
|
@@ -59077,11 +59006,11 @@
|
|
|
59077
59006
|
const trackColors = [];
|
|
59078
59007
|
const color = this.track.color || this.track.defaultColor;
|
|
59079
59008
|
|
|
59080
|
-
if (isString$
|
|
59009
|
+
if (isString$2(color)) {
|
|
59081
59010
|
trackColors.push(color);
|
|
59082
59011
|
}
|
|
59083
59012
|
|
|
59084
|
-
if (this.track.altColor && isString$
|
|
59013
|
+
if (this.track.altColor && isString$2(this.track.altColor)) {
|
|
59085
59014
|
trackColors.push(this.track.altColor);
|
|
59086
59015
|
}
|
|
59087
59016
|
|
|
@@ -60368,7 +60297,7 @@
|
|
|
60368
60297
|
for (let fd of featureData) {
|
|
60369
60298
|
data.push(fd);
|
|
60370
60299
|
|
|
60371
|
-
if (infoURL && fd.name && fd.name.toLowerCase() === "name" && fd.value && isString$
|
|
60300
|
+
if (infoURL && fd.name && fd.name.toLowerCase() === "name" && fd.value && isString$2(fd.value) && !fd.value.startsWith("<")) {
|
|
60372
60301
|
const href = infoURL.replace("$$", feature.name);
|
|
60373
60302
|
fd.value = `<a target=_blank href=${href}>${fd.value}</a>`;
|
|
60374
60303
|
}
|
|
@@ -60468,7 +60397,7 @@
|
|
|
60468
60397
|
seq = reverseComplementSequence(seq);
|
|
60469
60398
|
}
|
|
60470
60399
|
|
|
60471
|
-
|
|
60400
|
+
this.browser.alert.present(seq);
|
|
60472
60401
|
}
|
|
60473
60402
|
}];
|
|
60474
60403
|
|
|
@@ -60488,7 +60417,7 @@
|
|
|
60488
60417
|
await navigator.clipboard.writeText(seq);
|
|
60489
60418
|
} catch (e) {
|
|
60490
60419
|
console.error(e);
|
|
60491
|
-
|
|
60420
|
+
this.browser.alert.present(`error copying sequence to clipboard ${e}`);
|
|
60492
60421
|
}
|
|
60493
60422
|
}
|
|
60494
60423
|
});
|
|
@@ -60637,6 +60566,7 @@
|
|
|
60637
60566
|
start,
|
|
60638
60567
|
end,
|
|
60639
60568
|
bpPerPixel,
|
|
60569
|
+
visibilityWindow: this.visibilityWindow,
|
|
60640
60570
|
windowFunction: this.windowFunction
|
|
60641
60571
|
});
|
|
60642
60572
|
|
|
@@ -60663,6 +60593,7 @@
|
|
|
60663
60593
|
let items = [];
|
|
60664
60594
|
|
|
60665
60595
|
if (this.flipAxis !== undefined) {
|
|
60596
|
+
items.push('<hr>');
|
|
60666
60597
|
items.push({
|
|
60667
60598
|
label: "Flip y-axis",
|
|
60668
60599
|
click: () => {
|
|
@@ -61502,6 +61433,7 @@
|
|
|
61502
61433
|
this.type = "merged";
|
|
61503
61434
|
this.featureType = 'numeric';
|
|
61504
61435
|
this.paintAxis = paintAxis;
|
|
61436
|
+
this.graphType = config.graphType;
|
|
61505
61437
|
}
|
|
61506
61438
|
|
|
61507
61439
|
init(config) {
|
|
@@ -61603,7 +61535,11 @@
|
|
|
61603
61535
|
this.tracks[i].dataRange = this.dataRange;
|
|
61604
61536
|
this.tracks[i].flipAxis = this.flipAxis;
|
|
61605
61537
|
this.tracks[i].logScale = this.logScale;
|
|
61606
|
-
|
|
61538
|
+
|
|
61539
|
+
if (this.graphType) {
|
|
61540
|
+
this.tracks[i].graphType = this.graphType;
|
|
61541
|
+
}
|
|
61542
|
+
|
|
61607
61543
|
this.tracks[i].draw(trackOptions);
|
|
61608
61544
|
}
|
|
61609
61545
|
}
|
|
@@ -61627,7 +61563,7 @@
|
|
|
61627
61563
|
}
|
|
61628
61564
|
|
|
61629
61565
|
get supportsWholeGenome() {
|
|
61630
|
-
return this.tracks.every(track => track.supportsWholeGenome
|
|
61566
|
+
return this.tracks.every(track => track.supportsWholeGenome);
|
|
61631
61567
|
}
|
|
61632
61568
|
|
|
61633
61569
|
}
|
|
@@ -61744,8 +61680,13 @@
|
|
|
61744
61680
|
} // Create the FeatureSource and override the default whole genome method
|
|
61745
61681
|
|
|
61746
61682
|
|
|
61747
|
-
|
|
61748
|
-
|
|
61683
|
+
if (config.featureSource) {
|
|
61684
|
+
this.featureSource = config.featureSource;
|
|
61685
|
+
delete config._featureSource;
|
|
61686
|
+
} else {
|
|
61687
|
+
this.featureSource = FeatureSource(config, this.browser.genome);
|
|
61688
|
+
this.featureSource.getWGFeatures = getWGFeatures;
|
|
61689
|
+
}
|
|
61749
61690
|
}
|
|
61750
61691
|
|
|
61751
61692
|
async postInit() {
|
|
@@ -61821,10 +61762,16 @@
|
|
|
61821
61762
|
for (let feature of featureList) {
|
|
61822
61763
|
// Reset transient property drawState. An undefined value => feature has not been drawn.
|
|
61823
61764
|
feature.drawState = undefined;
|
|
61824
|
-
let color
|
|
61765
|
+
let color;
|
|
61825
61766
|
|
|
61826
|
-
if (color
|
|
61827
|
-
color =
|
|
61767
|
+
if (typeof this.color === 'function') {
|
|
61768
|
+
color = this.color(feature);
|
|
61769
|
+
} else {
|
|
61770
|
+
color = this.color || feature.color || DEFAULT_ARC_COLOR;
|
|
61771
|
+
|
|
61772
|
+
if (color && this.config.useScore) {
|
|
61773
|
+
color = getAlphaColor(color, scoreShade(feature.score));
|
|
61774
|
+
}
|
|
61828
61775
|
}
|
|
61829
61776
|
|
|
61830
61777
|
ctx.lineWidth = feature.thickness || this.thickness || 1;
|
|
@@ -62140,14 +62087,10 @@
|
|
|
62140
62087
|
}
|
|
62141
62088
|
|
|
62142
62089
|
menuItemList() {
|
|
62143
|
-
let items = [
|
|
62144
|
-
name: "Set track color",
|
|
62145
|
-
click: () => {
|
|
62146
|
-
this.trackView.presentColorPicker();
|
|
62147
|
-
}
|
|
62148
|
-
}, '<hr/>'];
|
|
62090
|
+
let items = [];
|
|
62149
62091
|
|
|
62150
62092
|
if (this.hasValue) {
|
|
62093
|
+
items.push("<hr/>");
|
|
62151
62094
|
const lut = {
|
|
62152
62095
|
"nested": "Nested",
|
|
62153
62096
|
"proportional": "Proportional - All",
|
|
@@ -62611,7 +62554,32 @@
|
|
|
62611
62554
|
}
|
|
62612
62555
|
}
|
|
62613
62556
|
|
|
62614
|
-
|
|
62557
|
+
/*
|
|
62558
|
+
* The MIT License (MIT)
|
|
62559
|
+
*
|
|
62560
|
+
* Copyright (c) 2016 University of California San Diego
|
|
62561
|
+
* Author: Jim Robinson
|
|
62562
|
+
*
|
|
62563
|
+
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
62564
|
+
* of this software and associated documentation files (the "Software"), to deal
|
|
62565
|
+
* in the Software without restriction, including without limitation the rights
|
|
62566
|
+
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
62567
|
+
* copies of the Software, and to permit persons to whom the Software is
|
|
62568
|
+
* furnished to do so, subject to the following conditions:
|
|
62569
|
+
*
|
|
62570
|
+
* The above copyright notice and this permission notice shall be included in
|
|
62571
|
+
* all copies or substantial portions of the Software.
|
|
62572
|
+
*
|
|
62573
|
+
*
|
|
62574
|
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
62575
|
+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
62576
|
+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
62577
|
+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
62578
|
+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
62579
|
+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
62580
|
+
* THE SOFTWARE.
|
|
62581
|
+
*/
|
|
62582
|
+
const isString = isString$2;
|
|
62615
62583
|
const DEFAULT_VISIBILITY_WINDOW = 1000000;
|
|
62616
62584
|
const TOP_MARGIN = 10;
|
|
62617
62585
|
const STANDARD_FIELDS = new Map([["REF", "referenceBases"], ["ALT", "alternateBases"], ["QUAL", "quality"], ["FILTER", "filter"]]);
|
|
@@ -64892,6 +64860,30 @@
|
|
|
64892
64860
|
}
|
|
64893
64861
|
}
|
|
64894
64862
|
|
|
64863
|
+
/*
|
|
64864
|
+
* The MIT License (MIT)
|
|
64865
|
+
*
|
|
64866
|
+
* Copyright (c) 2014 Broad Institute
|
|
64867
|
+
*
|
|
64868
|
+
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
64869
|
+
* of this software and associated documentation files (the "Software"), to deal
|
|
64870
|
+
* in the Software without restriction, including without limitation the rights
|
|
64871
|
+
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
64872
|
+
* copies of the Software, and to permit persons to whom the Software is
|
|
64873
|
+
* furnished to do so, subject to the following conditions:
|
|
64874
|
+
*
|
|
64875
|
+
* The above copyright notice and this permission notice shall be included in
|
|
64876
|
+
* all copies or substantial portions of the Software.
|
|
64877
|
+
*
|
|
64878
|
+
*
|
|
64879
|
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
64880
|
+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
64881
|
+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
64882
|
+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
64883
|
+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
64884
|
+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
64885
|
+
* THE SOFTWARE.
|
|
64886
|
+
*/
|
|
64895
64887
|
let JUNCTION_MOTIF_PALETTE = new PaletteColorTable("Dark2"); // Lock in color-to-motif mapping so it's independent of data loading order. This list may not include all possible
|
|
64896
64888
|
// motif values as this varies depending on the RNA-seq pipeline. The current list is based on STAR v2.4 docs.
|
|
64897
64889
|
|
|
@@ -68328,7 +68320,7 @@
|
|
|
68328
68320
|
class: 'igv-container'
|
|
68329
68321
|
});
|
|
68330
68322
|
parentDiv.appendChild(this.root);
|
|
68331
|
-
Alert
|
|
68323
|
+
this.alert = new Alert(this.root);
|
|
68332
68324
|
this.columnContainer = div$1({
|
|
68333
68325
|
class: 'igv-column-container'
|
|
68334
68326
|
});
|
|
@@ -68495,7 +68487,7 @@
|
|
|
68495
68487
|
|
|
68496
68488
|
this.inputDialog = new InputDialog(this.root);
|
|
68497
68489
|
this.inputDialog.container.id = `igv-input-dialog-${guid$2()}`;
|
|
68498
|
-
this.dataRangeDialog = new DataRangeDialog($$1(this.root));
|
|
68490
|
+
this.dataRangeDialog = new DataRangeDialog(this, $$1(this.root));
|
|
68499
68491
|
this.dataRangeDialog.$container.get(0).id = `igv-data-range-dialog-${guid$2()}`;
|
|
68500
68492
|
this.genericColorPicker = new GenericColorPicker({
|
|
68501
68493
|
parent: this.columnContainer,
|
|
@@ -68683,7 +68675,7 @@
|
|
|
68683
68675
|
createColumn(this.columnContainer, 'igv-track-drag-column'); // Track gear column
|
|
68684
68676
|
|
|
68685
68677
|
createColumn(this.columnContainer, 'igv-gear-menu-column');
|
|
68686
|
-
const genomeConfig = await GenomeUtils.expandReference(session.reference || session.genome);
|
|
68678
|
+
const genomeConfig = await GenomeUtils.expandReference(this.alert, session.reference || session.genome);
|
|
68687
68679
|
await this.loadReference(genomeConfig, session.locus);
|
|
68688
68680
|
this.centerLineList = this.createCenterLineList(this.columnContainer); // Create ideogram and ruler track. Really this belongs in browser initialization, but creation is
|
|
68689
68681
|
// deferred because ideogram and ruler are treated as "tracks", and tracks require a reference frame
|
|
@@ -68862,7 +68854,7 @@
|
|
|
68862
68854
|
|
|
68863
68855
|
|
|
68864
68856
|
async loadGenome(idOrConfig) {
|
|
68865
|
-
const genomeConfig = await GenomeUtils.expandReference(idOrConfig);
|
|
68857
|
+
const genomeConfig = await GenomeUtils.expandReference(this.alert, idOrConfig);
|
|
68866
68858
|
await this.loadReference(genomeConfig, undefined);
|
|
68867
68859
|
const tracks = genomeConfig.tracks || []; // Insure that we always have a sequence track
|
|
68868
68860
|
|
|
@@ -68994,7 +68986,7 @@
|
|
|
68994
68986
|
|
|
68995
68987
|
async _loadTrack(config) {
|
|
68996
68988
|
// config might be json
|
|
68997
|
-
if (isString$
|
|
68989
|
+
if (isString$2(config)) {
|
|
68998
68990
|
config = JSON.parse(config);
|
|
68999
68991
|
}
|
|
69000
68992
|
|
|
@@ -69055,7 +69047,7 @@
|
|
|
69055
69047
|
}
|
|
69056
69048
|
|
|
69057
69049
|
msg += ": " + config.url;
|
|
69058
|
-
|
|
69050
|
+
this.alert.present(new Error(msg), undefined);
|
|
69059
69051
|
}
|
|
69060
69052
|
}
|
|
69061
69053
|
/**
|
|
@@ -69124,7 +69116,7 @@
|
|
|
69124
69116
|
// Resolve function and promise urls
|
|
69125
69117
|
let url = await resolveURL(config.url);
|
|
69126
69118
|
|
|
69127
|
-
if (isString$
|
|
69119
|
+
if (isString$2(url)) {
|
|
69128
69120
|
url = url.trim();
|
|
69129
69121
|
}
|
|
69130
69122
|
|
|
@@ -69192,8 +69184,7 @@
|
|
|
69192
69184
|
const track = TrackFactory.getTrack(type, config, this);
|
|
69193
69185
|
|
|
69194
69186
|
if (undefined === track) {
|
|
69195
|
-
|
|
69196
|
-
return;
|
|
69187
|
+
this.alert.present(new Error(`Error creating track. Could not determine track type for file: ${config.url || config}`), undefined);
|
|
69197
69188
|
} else {
|
|
69198
69189
|
if (config.roi && config.roi.length > 0) {
|
|
69199
69190
|
track.roiSets = config.roi.map(r => new TrackROISet(r, this.genome));
|
|
@@ -69686,7 +69677,7 @@
|
|
|
69686
69677
|
const success = await this.search(string, init);
|
|
69687
69678
|
|
|
69688
69679
|
if (!success) {
|
|
69689
|
-
|
|
69680
|
+
this.alert.present(new Error(`Unrecognized locus: <b> ${string} </b>`));
|
|
69690
69681
|
}
|
|
69691
69682
|
|
|
69692
69683
|
return success;
|
|
@@ -69811,7 +69802,7 @@
|
|
|
69811
69802
|
|
|
69812
69803
|
toJSON() {
|
|
69813
69804
|
const json = {
|
|
69814
|
-
"version": version()
|
|
69805
|
+
"version": version$1()
|
|
69815
69806
|
};
|
|
69816
69807
|
|
|
69817
69808
|
if (this.showSampleNames !== undefined) {
|
|
@@ -70551,7 +70542,7 @@
|
|
|
70551
70542
|
}
|
|
70552
70543
|
|
|
70553
70544
|
function embedCSS() {
|
|
70554
|
-
var css = '.igv-navbar {\n display: flex;\n flex-flow: row;\n flex-wrap: nowrap;\n justify-content: space-between;\n align-items: center;\n box-sizing: border-box;\n width: 100%;\n color: #444;\n font-size: 12px;\n font-family: \"Open Sans\", sans-serif;\n font-weight: 400;\n line-height: 32px;\n padding-left: 8px;\n padding-right: 8px;\n margin-top: 2px;\n margin-bottom: 6px;\n height: 32px;\n border-style: solid;\n border-radius: 3px;\n border-width: thin;\n border-color: #bfbfbf;\n background-color: #f3f3f3;\n}\n.igv-navbar .igv-navbar-left-container {\n display: flex;\n flex-flow: row;\n flex-wrap: nowrap;\n justify-content: space-between;\n align-items: center;\n height: 32px;\n line-height: 32px;\n}\n.igv-navbar .igv-navbar-left-container .igv-logo {\n width: 34px;\n height: 32px;\n margin-right: 8px;\n}\n.igv-navbar .igv-navbar-left-container .igv-current-genome {\n height: 32px;\n margin-left: 4px;\n margin-right: 4px;\n user-select: none;\n line-height: 32px;\n vertical-align: middle;\n text-align: center;\n}\n.igv-navbar .igv-navbar-left-container .igv-navbar-genomic-location {\n display: flex;\n flex-flow: row;\n flex-wrap: nowrap;\n justify-content: space-between;\n align-items: center;\n height: 100%;\n}\n.igv-navbar .igv-navbar-left-container .igv-navbar-genomic-location .igv-chromosome-select-widget-container {\n display: flex;\n flex-flow: column;\n flex-wrap: nowrap;\n justify-content: space-around;\n align-items: center;\n height: 100%;\n width: 125px;\n margin-right: 4px;\n}\n.igv-navbar .igv-navbar-left-container .igv-navbar-genomic-location .igv-chromosome-select-widget-container select {\n display: block;\n cursor: pointer;\n width: 100px;\n height: 75%;\n outline: none;\n font-size: 12px;\n font-family: \"Open Sans\", sans-serif;\n font-weight: 400;\n}\n.igv-navbar .igv-navbar-left-container .igv-navbar-genomic-location .igv-locus-size-group {\n display: flex;\n flex-flow: row;\n flex-wrap: nowrap;\n justify-content: space-between;\n align-items: center;\n margin-left: 8px;\n height: 22px;\n}\n.igv-navbar .igv-navbar-left-container .igv-navbar-genomic-location .igv-locus-size-group .igv-search-container {\n display: flex;\n flex-flow: row;\n flex-wrap: nowrap;\n justify-content: flex-start;\n align-items: center;\n width: 210px;\n height: 22px;\n line-height: 22px;\n}\n.igv-navbar .igv-navbar-left-container .igv-navbar-genomic-location .igv-locus-size-group .igv-search-container input.igv-search-input {\n cursor: text;\n width: 85%;\n height: 22px;\n line-height: 22px;\n font-size: 12px;\n font-family: \"Open Sans\", sans-serif;\n font-weight: 400;\n text-align: left;\n padding-left: 8px;\n margin-right: 8px;\n outline: none;\n border-style: solid;\n border-radius: 3px;\n border-width: thin;\n border-color: #bfbfbf;\n background-color: white;\n}\n.igv-navbar .igv-navbar-left-container .igv-navbar-genomic-location .igv-locus-size-group .igv-search-container .igv-search-icon-container {\n cursor: pointer;\n height: 16px;\n width: 16px;\n}\n.igv-navbar .igv-navbar-left-container .igv-navbar-genomic-location .igv-locus-size-group .igv-windowsize-panel-container {\n margin-left: 4px;\n user-select: none;\n}\n.igv-navbar .igv-navbar-right-container {\n display: flex;\n flex-flow: row;\n flex-wrap: nowrap;\n justify-content: space-between;\n align-items: center;\n height: 32px;\n line-height: 32px;\n}\n.igv-navbar .igv-navbar-right-container .igv-navbar-toggle-button-container {\n display: flex;\n flex-flow: row;\n flex-wrap: nowrap;\n justify-content: space-between;\n align-items: center;\n height: 100%;\n}\n.igv-navbar .igv-navbar-right-container .igv-navbar-toggle-button-container div {\n margin-left: 0;\n margin-right: 4px;\n}\n.igv-navbar .igv-navbar-right-container .igv-navbar-toggle-button-container div:last-child {\n margin-left: 0;\n margin-right: 0;\n}\n.igv-navbar .igv-navbar-right-container .igv-navbar-toggle-button-container-750 {\n display: none;\n}\n.igv-navbar .igv-navbar-right-container .igv-zoom-widget {\n color: #737373;\n font-size: 18px;\n height: 32px;\n line-height: 32px;\n margin-left: 8px;\n user-select: none;\n display: flex;\n flex-flow: row;\n flex-wrap: nowrap;\n justify-content: flex-end;\n align-items: center;\n}\n.igv-navbar .igv-navbar-right-container .igv-zoom-widget div {\n cursor: pointer;\n margin-left: unset;\n margin-right: unset;\n}\n.igv-navbar .igv-navbar-right-container .igv-zoom-widget div:first-child {\n height: 24px;\n width: 24px;\n margin-left: unset;\n margin-right: 8px;\n}\n.igv-navbar .igv-navbar-right-container .igv-zoom-widget div:last-child {\n height: 24px;\n width: 24px;\n margin-left: 8px;\n margin-right: unset;\n}\n.igv-navbar .igv-navbar-right-container .igv-zoom-widget div:nth-child(even) {\n display: block;\n height: fit-content;\n}\n.igv-navbar .igv-navbar-right-container .igv-zoom-widget input {\n display: block;\n width: 125px;\n}\n.igv-navbar .igv-navbar-right-container .igv-zoom-widget svg {\n display: block;\n}\n.igv-navbar .igv-navbar-right-container .igv-zoom-widget-900 {\n color: #737373;\n font-size: 18px;\n height: 32px;\n line-height: 32px;\n margin-left: 8px;\n user-select: none;\n display: flex;\n flex-flow: row;\n flex-wrap: nowrap;\n justify-content: flex-end;\n align-items: center;\n}\n.igv-navbar .igv-navbar-right-container .igv-zoom-widget-900 div {\n cursor: pointer;\n margin-left: unset;\n margin-right: unset;\n}\n.igv-navbar .igv-navbar-right-container .igv-zoom-widget-900 div:first-child {\n height: 24px;\n width: 24px;\n margin-left: unset;\n margin-right: 8px;\n}\n.igv-navbar .igv-navbar-right-container .igv-zoom-widget-900 div:last-child {\n height: 24px;\n width: 24px;\n margin-left: 8px;\n margin-right: unset;\n}\n.igv-navbar .igv-navbar-right-container .igv-zoom-widget-900 div:nth-child(even) {\n width: 0;\n height: 0;\n display: none;\n}\n.igv-navbar .igv-navbar-right-container .igv-zoom-widget-900 input {\n width: 0;\n height: 0;\n display: none;\n}\n.igv-navbar .igv-navbar-right-container .igv-zoom-widget-900 svg {\n display: block;\n}\n.igv-navbar .igv-navbar-right-container .igv-zoom-widget-hidden {\n display: none;\n}\n\n.igv-navbar-button {\n display: block;\n box-sizing: unset;\n padding-left: 6px;\n padding-right: 6px;\n height: 18px;\n text-transform: capitalize;\n user-select: none;\n line-height: 18px;\n text-align: center;\n vertical-align: middle;\n font-family: \"Open Sans\", sans-serif;\n font-size: 11px;\n font-weight: 200;\n color: #737373;\n background-color: #f3f3f3;\n border-color: #737373;\n border-style: solid;\n border-width: thin;\n border-radius: 6px;\n}\n\n.igv-navbar-button-clicked {\n color: white;\n background-color: #737373;\n}\n\n.igv-navbar-button:hover {\n cursor: pointer;\n}\n\n.igv-zoom-in-notice-container {\n z-index: 1024;\n position: absolute;\n top: 8px;\n left: 50%;\n transform: translate(-50%, 0%);\n display: flex;\n flex-direction: row;\n flex-wrap: nowrap;\n justify-content: center;\n align-items: center;\n background-color: white;\n}\n.igv-zoom-in-notice-container > div {\n padding-left: 4px;\n padding-right: 4px;\n padding-top: 2px;\n padding-bottom: 2px;\n width: 100%;\n height: 100%;\n font-family: \"Open Sans\", sans-serif;\n font-size: 14px;\n font-weight: 400;\n color: #3f3f3f;\n}\n\n.igv-zoom-in-notice {\n position: absolute;\n top: 10px;\n left: 50%;\n}\n.igv-zoom-in-notice div {\n position: relative;\n left: -50%;\n font-family: \"Open Sans\", sans-serif;\n font-size: medium;\n font-weight: 400;\n color: #3f3f3f;\n background-color: rgba(255, 255, 255, 0.51);\n z-index: 64;\n}\n\n.igv-container-spinner {\n position: absolute;\n top: 90%;\n left: 50%;\n transform: translate(-50%, -50%);\n z-index: 1024;\n width: 24px;\n height: 24px;\n pointer-events: none;\n color: #737373;\n}\n\n.igv-multi-locus-close-button {\n position: absolute;\n top: 2px;\n right: 0;\n padding-left: 2px;\n padding-right: 2px;\n width: 18px;\n height: 18px;\n color: #666666;\n background-color: white;\n z-index: 1000;\n}\n.igv-multi-locus-close-button > svg {\n vertical-align: top;\n}\n\n.igv-multi-locus-close-button:hover {\n cursor: pointer;\n color: #434343;\n}\n\n.igv-multi-locus-ruler-label {\n z-index: 64;\n position: absolute;\n top: 2px;\n left: 0;\n width: 100%;\n height: 14px;\n display: flex;\n flex-flow: row;\n flex-wrap: nowrap;\n justify-content: center;\n align-items: center;\n}\n.igv-multi-locus-ruler-label div {\n font-family: \"Open Sans\", sans-serif;\n font-size: 14px;\n font-weight: 400;\n color: rgb(16, 16, 16);\n background-color: white;\n}\n\n.igv-multi-locus-ruler-label-square-dot {\n z-index: 64;\n position: absolute;\n left: 50%;\n top: 5%;\n transform: translate(-50%, 0%);\n background-color: white;\n display: flex;\n flex-flow: row;\n flex-wrap: nowrap;\n justify-content: flex-start;\n align-items: center;\n}\n.igv-multi-locus-ruler-label-square-dot > div:first-child {\n width: 14px;\n height: 14px;\n}\n.igv-multi-locus-ruler-label-square-dot > div:last-child {\n margin-left: 16px;\n font-family: \"Open Sans\", sans-serif;\n font-size: 14px;\n font-weight: 400;\n color: rgb(16, 16, 16);\n}\n\n.igv-multi-locus-ruler-label:hover {\n cursor: pointer;\n}\n\n.igv-ruler-sweeper {\n display: none;\n pointer-events: none;\n position: absolute;\n top: 26px;\n bottom: 0;\n left: 0;\n width: 0;\n z-index: 99999;\n background-color: rgba(68, 134, 247, 0.25);\n}\n\n.igv-ruler-tooltip {\n pointer-events: none;\n z-index: 128;\n position: absolute;\n top: 0;\n left: 0;\n width: 1px;\n height: 32px;\n background-color: transparent;\n display: flex;\n flex-flow: row;\n flex-wrap: nowrap;\n justify-content: flex-start;\n align-items: center;\n}\n.igv-ruler-tooltip > div {\n pointer-events: none;\n width: 128px;\n height: auto;\n padding: 1px;\n color: #373737;\n font-size: 10px;\n font-family: \"Open Sans\", sans-serif;\n font-weight: 400;\n background-color: white;\n border-style: solid;\n border-width: thin;\n border-color: #373737;\n}\n\n.igv-track-label {\n position: absolute;\n left: 8px;\n top: 8px;\n width: auto;\n height: auto;\n max-width: 200px;\n padding-left: 4px;\n padding-right: 4px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n font-family: \"Open Sans\", sans-serif;\n font-size: small;\n font-weight: 400;\n text-align: center;\n user-select: none;\n -moz-user-select: none;\n -webkit-user-select: none;\n border-color: #444;\n border-radius: 2px;\n border-style: solid;\n border-width: thin;\n background-color: white;\n z-index: 128;\n cursor: pointer;\n}\n\n.igv-track-label:hover,\n.igv-track-label:focus,\n.igv-track-label:active {\n background-color: #e8e8e8;\n}\n\n.igv-track-label-popup-shim {\n padding-left: 8px;\n padding-right: 8px;\n padding-top: 4px;\n}\n\n.igv-center-line {\n display: none;\n pointer-events: none;\n position: absolute;\n top: 0;\n bottom: 0;\n left: 50%;\n transform: translateX(-50%);\n z-index: 8;\n user-select: none;\n -moz-user-select: none;\n -webkit-user-select: none;\n border-left-style: dashed;\n border-left-width: thin;\n border-right-style: dashed;\n border-right-width: thin;\n}\n\n.igv-center-line-wide {\n background-color: rgba(0, 0, 0, 0);\n border-left-color: rgba(127, 127, 127, 0.51);\n border-right-color: rgba(127, 127, 127, 0.51);\n}\n\n.igv-center-line-thin {\n background-color: rgba(0, 0, 0, 0);\n border-left-color: rgba(127, 127, 127, 0.51);\n border-right-color: rgba(0, 0, 0, 0);\n}\n\n.igv-cursor-guide-horizontal {\n display: none;\n pointer-events: none;\n user-select: none;\n -moz-user-select: none;\n -webkit-user-select: none;\n position: absolute;\n left: 0;\n right: 0;\n top: 50%;\n height: 1px;\n z-index: 1;\n margin-left: 50px;\n margin-right: 54px;\n border-top-style: dotted;\n border-top-width: thin;\n border-top-color: rgba(127, 127, 127, 0.76);\n}\n\n.igv-cursor-guide-vertical {\n pointer-events: none;\n user-select: none;\n -moz-user-select: none;\n -webkit-user-select: none;\n position: absolute;\n top: 0;\n bottom: 0;\n left: 50%;\n width: 1px;\n z-index: 1;\n border-left-style: dotted;\n border-left-width: thin;\n border-left-color: rgba(127, 127, 127, 0.76);\n display: none;\n}\n\n.igv-user-feedback {\n position: fixed;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: 512px;\n height: 360px;\n z-index: 2048;\n background-color: white;\n border-color: #a2a2a2;\n border-style: solid;\n border-width: thin;\n font-family: \"Open Sans\", sans-serif;\n font-size: medium;\n font-weight: 400;\n color: #444;\n display: flex;\n flex-direction: column;\n flex-wrap: nowrap;\n justify-content: flex-start;\n align-items: center;\n}\n.igv-user-feedback div:first-child {\n position: relative;\n height: 24px;\n width: 100%;\n background-color: white;\n border-bottom-color: #a2a2a2;\n border-bottom-style: solid;\n border-bottom-width: thin;\n}\n.igv-user-feedback div:first-child div {\n position: absolute;\n top: 2px;\n width: 16px;\n height: 16px;\n background-color: transparent;\n}\n.igv-user-feedback div:first-child div:first-child {\n left: 8px;\n}\n.igv-user-feedback div:first-child div:last-child {\n cursor: pointer;\n right: 8px;\n}\n.igv-user-feedback div:last-child {\n width: 100%;\n height: calc(100% - 24px);\n border-width: 0;\n}\n.igv-user-feedback div:last-child div {\n width: auto;\n height: auto;\n margin: 8px;\n}\n\n.igv-generic-dialog-container {\n position: absolute;\n top: 0;\n left: 0;\n width: 300px;\n height: 200px;\n border-color: #7F7F7F;\n border-radius: 4px;\n border-style: solid;\n border-width: thin;\n font-family: \"Open Sans\", sans-serif;\n font-size: medium;\n font-weight: 400;\n z-index: 2048;\n background-color: white;\n display: flex;\n flex-flow: column;\n flex-wrap: nowrap;\n justify-content: flex-start;\n align-items: center;\n}\n.igv-generic-dialog-container .igv-generic-dialog-header {\n display: flex;\n flex-flow: row;\n flex-wrap: nowrap;\n justify-content: flex-end;\n align-items: center;\n width: 100%;\n height: 24px;\n cursor: move;\n border-top-left-radius: 4px;\n border-top-right-radius: 4px;\n border-bottom-color: #7F7F7F;\n border-bottom-style: solid;\n border-bottom-width: thin;\n background-color: #eee;\n}\n.igv-generic-dialog-container .igv-generic-dialog-header div {\n margin-right: 4px;\n margin-bottom: 2px;\n height: 12px;\n width: 12px;\n color: #7F7F7F;\n}\n.igv-generic-dialog-container .igv-generic-dialog-header div:hover {\n cursor: pointer;\n color: #444;\n}\n.igv-generic-dialog-container .igv-generic-dialog-one-liner {\n color: #373737;\n width: 95%;\n height: 24px;\n line-height: 24px;\n text-align: left;\n margin-top: 8px;\n padding-left: 8px;\n overflow-wrap: break-word;\n background-color: white;\n}\n.igv-generic-dialog-container .igv-generic-dialog-label-input {\n margin-top: 8px;\n width: 95%;\n height: 24px;\n color: #373737;\n line-height: 24px;\n padding-left: 8px;\n background-color: white;\n display: flex;\n flex-flow: row;\n flex-wrap: nowrap;\n justify-content: flex-start;\n align-items: center;\n}\n.igv-generic-dialog-container .igv-generic-dialog-label-input div {\n width: 30%;\n height: 100%;\n font-size: 16px;\n text-align: right;\n padding-right: 8px;\n background-color: white;\n}\n.igv-generic-dialog-container .igv-generic-dialog-label-input input {\n display: block;\n height: 100%;\n width: 100%;\n padding-left: 4px;\n font-family: \"Open Sans\", sans-serif;\n font-weight: 400;\n color: #373737;\n text-align: left;\n outline: none;\n border-style: solid;\n border-width: thin;\n border-color: #7F7F7F;\n background-color: white;\n}\n.igv-generic-dialog-container .igv-generic-dialog-label-input input {\n width: 50%;\n font-size: 16px;\n}\n.igv-generic-dialog-container .igv-generic-dialog-input {\n margin-top: 8px;\n width: calc(100% - 16px);\n height: 24px;\n color: #373737;\n line-height: 24px;\n display: flex;\n flex-flow: row;\n flex-wrap: nowrap;\n justify-content: space-around;\n align-items: center;\n}\n.igv-generic-dialog-container .igv-generic-dialog-input input {\n display: block;\n height: 100%;\n width: 100%;\n padding-left: 4px;\n font-family: \"Open Sans\", sans-serif;\n font-weight: 400;\n color: #373737;\n text-align: left;\n outline: none;\n border-style: solid;\n border-width: thin;\n border-color: #7F7F7F;\n background-color: white;\n}\n.igv-generic-dialog-container .igv-generic-dialog-input input {\n font-size: 16px;\n}\n.igv-generic-dialog-container .igv-generic-dialog-ok-cancel {\n width: 100%;\n height: 28px;\n display: flex;\n flex-flow: row;\n flex-wrap: nowrap;\n justify-content: space-around;\n align-items: center;\n}\n.igv-generic-dialog-container .igv-generic-dialog-ok-cancel div {\n margin-top: 32px;\n color: white;\n font-family: \"Open Sans\", sans-serif;\n font-size: 14px;\n font-weight: 400;\n width: 75px;\n height: 28px;\n line-height: 28px;\n text-align: center;\n border-color: transparent;\n border-style: solid;\n border-width: thin;\n border-radius: 2px;\n}\n.igv-generic-dialog-container .igv-generic-dialog-ok-cancel div:first-child {\n margin-left: 32px;\n margin-right: 0;\n background-color: #5ea4e0;\n}\n.igv-generic-dialog-container .igv-generic-dialog-ok-cancel div:last-child {\n margin-left: 0;\n margin-right: 32px;\n background-color: #c4c4c4;\n}\n.igv-generic-dialog-container .igv-generic-dialog-ok-cancel div:first-child:hover {\n cursor: pointer;\n background-color: #3b5c7f;\n}\n.igv-generic-dialog-container .igv-generic-dialog-ok-cancel div:last-child:hover {\n cursor: pointer;\n background-color: #7f7f7f;\n}\n.igv-generic-dialog-container .igv-generic-dialog-ok {\n width: 100%;\n height: 36px;\n margin-top: 32px;\n display: flex;\n flex-flow: row;\n flex-wrap: nowrap;\n justify-content: space-around;\n align-items: center;\n}\n.igv-generic-dialog-container .igv-generic-dialog-ok div {\n width: 98px;\n height: 36px;\n line-height: 36px;\n text-align: center;\n color: white;\n font-family: \"Open Sans\", sans-serif;\n font-size: medium;\n font-weight: 400;\n border-color: white;\n border-style: solid;\n border-width: thin;\n border-radius: 4px;\n background-color: #2B81AF;\n}\n.igv-generic-dialog-container .igv-generic-dialog-ok div:hover {\n cursor: pointer;\n background-color: #25597f;\n}\n\n.igv-generic-container {\n position: absolute;\n top: 0;\n left: 0;\n z-index: 2048;\n background-color: white;\n cursor: pointer;\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n justify-content: flex-start;\n align-items: center;\n}\n.igv-generic-container div:first-child {\n cursor: move;\n display: flex;\n flex-flow: row;\n flex-wrap: nowrap;\n justify-content: flex-end;\n align-items: center;\n height: 24px;\n width: 100%;\n background-color: #dddddd;\n}\n.igv-generic-container div:first-child i {\n display: block;\n color: #5f5f5f;\n cursor: pointer;\n width: 14px;\n height: 14px;\n margin-right: 8px;\n margin-bottom: 4px;\n}\n\n.igv-menu-popup {\n position: absolute;\n top: 0;\n left: 0;\n width: max-content;\n z-index: 4096;\n cursor: pointer;\n font-family: \"Open Sans\", sans-serif;\n font-size: small;\n font-weight: 400;\n color: #4b4b4b;\n background: white;\n border-radius: 4px;\n border-color: #7F7F7F;\n border-style: solid;\n border-width: thin;\n display: flex;\n flex-flow: column;\n flex-wrap: nowrap;\n justify-content: flex-start;\n align-items: flex-end;\n text-align: left;\n}\n.igv-menu-popup > div:not(:first-child) {\n width: 100%;\n}\n.igv-menu-popup > div:not(:first-child) > div {\n background: white;\n}\n.igv-menu-popup > div:not(:first-child) > div.context-menu {\n padding-left: 4px;\n padding-right: 4px;\n}\n.igv-menu-popup > div:not(:first-child) > div:last-child {\n border-bottom-left-radius: 4px;\n border-bottom-right-radius: 4px;\n border-bottom-color: transparent;\n border-bottom-style: solid;\n border-bottom-width: thin;\n}\n.igv-menu-popup > div:not(:first-child) > div:hover {\n background: #efefef;\n}\n\n.igv-menu-popup-shim {\n padding-left: 8px;\n padding-right: 8px;\n padding-bottom: 1px;\n padding-top: 1px;\n}\n\n.igv-menu-popup-header {\n position: relative;\n width: 100%;\n height: 24px;\n cursor: move;\n border-top-color: transparent;\n border-top-left-radius: 4px;\n border-top-right-radius: 4px;\n border-bottom-color: #7F7F7F;\n border-bottom-style: solid;\n border-bottom-width: thin;\n background-color: #eee;\n display: flex;\n flex-flow: row;\n flex-wrap: nowrap;\n justify-content: flex-end;\n align-items: center;\n}\n.igv-menu-popup-header div {\n margin-right: 4px;\n height: 12px;\n width: 12px;\n color: #7F7F7F;\n}\n.igv-menu-popup-header div:hover {\n cursor: pointer;\n color: #444;\n}\n\n.igv-menu-popup-check-container {\n display: flex;\n flex-flow: row;\n flex-wrap: nowrap;\n justify-content: flex-start;\n align-items: center;\n width: 100%;\n height: 20px;\n margin-right: 4px;\n background-color: transparent;\n}\n.igv-menu-popup-check-container div {\n padding-top: 2px;\n padding-left: 8px;\n}\n.igv-menu-popup-check-container div:first-child {\n position: relative;\n width: 12px;\n height: 12px;\n}\n.igv-menu-popup-check-container div:first-child svg {\n position: absolute;\n width: 12px;\n height: 12px;\n}\n\n.igv-user-feedback {\n position: fixed;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: 512px;\n height: 360px;\n z-index: 2048;\n background-color: white;\n border-color: #a2a2a2;\n border-style: solid;\n border-width: thin;\n font-family: \"Open Sans\", sans-serif;\n font-size: medium;\n font-weight: 400;\n color: #444;\n display: flex;\n flex-direction: column;\n flex-wrap: nowrap;\n justify-content: flex-start;\n align-items: center;\n}\n.igv-user-feedback div:first-child {\n position: relative;\n height: 24px;\n width: 100%;\n background-color: white;\n border-bottom-color: #a2a2a2;\n border-bottom-style: solid;\n border-bottom-width: thin;\n}\n.igv-user-feedback div:first-child div {\n position: absolute;\n top: 2px;\n width: 16px;\n height: 16px;\n background-color: transparent;\n}\n.igv-user-feedback div:first-child div:first-child {\n left: 8px;\n}\n.igv-user-feedback div:first-child div:last-child {\n cursor: pointer;\n right: 8px;\n}\n.igv-user-feedback div:last-child {\n width: 100%;\n height: calc(100% - 24px);\n border-width: 0;\n}\n.igv-user-feedback div:last-child div {\n width: auto;\n height: auto;\n margin: 8px;\n}\n\n.igv-loading-spinner-container {\n z-index: 1024;\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: 32px;\n height: 32px;\n display: flex;\n flex-direction: row;\n flex-wrap: nowrap;\n justify-content: center;\n align-items: center;\n}\n.igv-loading-spinner-container > div {\n box-sizing: border-box;\n width: 100%;\n height: 100%;\n border-radius: 50%;\n border: 4px solid rgba(128, 128, 128, 0.5);\n border-top-color: rgb(255, 255, 255);\n animation: spin 1s ease-in-out infinite;\n -webkit-animation: spin 1s ease-in-out infinite;\n}\n\n@keyframes spin {\n to {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n@-webkit-keyframes spin {\n to {\n -webkit-transform: rotate(360deg);\n\n transform: rotate(360deg); } }\n.igv-roi-menu-next-gen {\n position: absolute;\n z-index: 512;\n font-family: \"Open Sans\", sans-serif;\n font-size: small;\n font-weight: 400;\n color: #4b4b4b;\n background-color: white;\n width: 192px;\n border-radius: 4px;\n border-color: #7F7F7F;\n border-style: solid;\n border-width: thin;\n display: flex;\n flex-direction: column;\n flex-wrap: nowrap;\n justify-content: flex-start;\n align-items: stretch; }\n .igv-roi-menu-next-gen > div:first-child {\n height: 24px;\n border-top-color: transparent;\n border-top-left-radius: 4px;\n border-top-right-radius: 4px;\n border-bottom-color: #7F7F7F;\n border-bottom-style: solid;\n border-bottom-width: thin;\n background-color: #eee;\n display: flex;\n flex-flow: row;\n flex-wrap: nowrap;\n justify-content: flex-end;\n align-items: center; }\n .igv-roi-menu-next-gen > div:first-child > div {\n margin-right: 4px;\n height: 12px;\n width: 12px;\n color: #7F7F7F; }\n .igv-roi-menu-next-gen > div:first-child > div:hover {\n cursor: pointer;\n color: #444; }\n .igv-roi-menu-next-gen > div:last-child {\n background-color: white;\n border-bottom-left-radius: 4px;\n border-bottom-right-radius: 4px;\n border-bottom-color: transparent;\n border-bottom-style: solid;\n border-bottom-width: 0;\n display: flex;\n flex-direction: column;\n flex-wrap: nowrap;\n justify-content: flex-start;\n align-items: stretch;\n text-align: start;\n vertical-align: middle;\n cursor: pointer; }\n .igv-roi-menu-next-gen > div:last-child > div {\n height: 24px;\n padding-left: 4px;\n border-bottom-style: solid;\n border-bottom-width: thin;\n border-bottom-color: #7f7f7f; }\n .igv-roi-menu-next-gen > div:last-child > div:not(:first-child):hover {\n background-color: rgba(127, 127, 127, 0.1); }\n .igv-roi-menu-next-gen > div:last-child div:first-child {\n cursor: default;\n font-style: italic;\n text-align: center;\n padding-right: 4px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis; }\n .igv-roi-menu-next-gen > div:last-child > div:last-child {\n border-bottom-width: 0;\n border-bottom-color: transparent; }\n\n.igv-roi-placeholder {\n font-style: normal;\n color: rgba(75, 75, 75, 0.6); }\n\n\n.igv-roi-table {\n position: absolute;\n z-index: 1024;\n width: fit-content;\n border-color: #7f7f7f;\n border-radius: 4px;\n border-style: solid;\n border-width: thin;\n font-family: \"Open Sans\", sans-serif;\n font-size: 12px;\n font-weight: 400;\n background-color: white;\n display: flex;\n flex-flow: column;\n flex-wrap: nowrap;\n justify-content: flex-start;\n align-items: stretch;\n}\n.igv-roi-table > div {\n height: 24px;\n font-size: 14px;\n text-align: start;\n vertical-align: middle;\n line-height: 24px;\n}\n.igv-roi-table > div:first-child {\n border-color: transparent;\n border-top-left-radius: 4px;\n border-top-right-radius: 4px;\n border-top-width: 0;\n border-bottom-color: #7f7f7f;\n border-bottom-style: solid;\n border-bottom-width: thin;\n background-color: #eee;\n cursor: move;\n display: flex;\n flex-flow: row;\n flex-wrap: nowrap;\n justify-content: space-between;\n align-items: center;\n}\n.igv-roi-table > div:first-child > div:first-child {\n text-align: center;\n width: calc(100% - 4px - 12px);\n}\n.igv-roi-table > div:first-child > div:last-child {\n margin-right: 4px;\n margin-bottom: 2px;\n height: 12px;\n width: 12px;\n color: #7f7f7f;\n}\n.igv-roi-table > div:first-child > div:last-child > svg {\n display: block;\n}\n.igv-roi-table > div:first-child > div:last-child:hover {\n cursor: pointer;\n color: #444;\n}\n.igv-roi-table > .igv-roi-table-column-titles {\n height: 24px;\n display: flex;\n flex-flow: row;\n flex-wrap: nowrap;\n justify-content: stretch;\n align-items: stretch;\n padding-right: 16px;\n background-color: white;\n border-bottom-color: #7f7f7f;\n border-bottom-style: solid;\n border-bottom-width: thin;\n}\n.igv-roi-table > .igv-roi-table-column-titles > div {\n font-size: 14px;\n vertical-align: middle;\n line-height: 24px;\n text-align: center;\n margin-left: 4px;\n margin-right: 4px;\n height: 24px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.igv-roi-table > .igv-roi-table-column-titles > div:nth-child(1) {\n width: 20%;\n}\n.igv-roi-table > .igv-roi-table-column-titles > div:nth-child(2) {\n width: 15%;\n}\n.igv-roi-table > .igv-roi-table-column-titles > div:nth-child(3) {\n width: 15%;\n}\n.igv-roi-table > .igv-roi-table-column-titles > div:nth-child(4) {\n width: 30%;\n}\n.igv-roi-table > .igv-roi-table-column-titles > div:nth-child(5) {\n width: 20%;\n}\n.igv-roi-table > .igv-roi-table-row-container {\n resize: both;\n overflow: scroll;\n min-width: 512px;\n min-height: 72px;\n height: 144px;\n max-height: 480px;\n background-color: white;\n display: flex;\n flex-flow: column;\n flex-wrap: nowrap;\n justify-content: flex-start;\n align-items: stretch;\n}\n.igv-roi-table > .igv-roi-table-row-container > .igv-roi-table-row {\n height: 24px;\n display: flex;\n flex-flow: row;\n flex-wrap: nowrap;\n justify-content: stretch;\n align-items: stretch;\n}\n.igv-roi-table > .igv-roi-table-row-container > .igv-roi-table-row > div {\n font-size: 14px;\n vertical-align: middle;\n line-height: 24px;\n text-align: center;\n margin-left: 4px;\n margin-right: 4px;\n height: 24px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.igv-roi-table > .igv-roi-table-row-container > .igv-roi-table-row > div:nth-child(1) {\n width: 20%;\n}\n.igv-roi-table > .igv-roi-table-row-container > .igv-roi-table-row > div:nth-child(2) {\n width: 15%;\n}\n.igv-roi-table > .igv-roi-table-row-container > .igv-roi-table-row > div:nth-child(3) {\n width: 15%;\n}\n.igv-roi-table > .igv-roi-table-row-container > .igv-roi-table-row > div:nth-child(4) {\n width: 30%;\n}\n.igv-roi-table > .igv-roi-table-row-container > .igv-roi-table-row > div:nth-child(5) {\n width: 20%;\n}\n.igv-roi-table > .igv-roi-table-row-container > .igv-roi-table-row-hover {\n background-color: rgba(0, 0, 0, 0.04);\n}\n.igv-roi-table > div:last-child {\n height: 32px;\n line-height: 32px;\n border-top-color: #7f7f7f;\n border-top-style: solid;\n border-top-width: thin;\n border-bottom-color: transparent;\n border-bottom-left-radius: 4px;\n border-bottom-right-radius: 4px;\n border-bottom-width: 0;\n display: flex;\n flex-flow: row;\n flex-wrap: nowrap;\n justify-content: space-around;\n align-items: center;\n}\n\n.igv-roi-table-four-column {\n position: absolute;\n z-index: 1024;\n width: fit-content;\n border-color: #7f7f7f;\n border-radius: 4px;\n border-style: solid;\n border-width: thin;\n font-family: \"Open Sans\", sans-serif;\n font-size: 12px;\n font-weight: 400;\n background-color: white;\n display: flex;\n flex-flow: column;\n flex-wrap: nowrap;\n justify-content: flex-start;\n align-items: stretch;\n}\n.igv-roi-table-four-column > div {\n height: 24px;\n font-size: 14px;\n text-align: start;\n vertical-align: middle;\n line-height: 24px;\n}\n.igv-roi-table-four-column > div:first-child {\n border-color: transparent;\n border-top-left-radius: 4px;\n border-top-right-radius: 4px;\n border-top-width: 0;\n border-bottom-color: #7f7f7f;\n border-bottom-style: solid;\n border-bottom-width: thin;\n background-color: #eee;\n cursor: move;\n display: flex;\n flex-flow: row;\n flex-wrap: nowrap;\n justify-content: space-between;\n align-items: center;\n}\n.igv-roi-table-four-column > div:first-child > div:first-child {\n text-align: center;\n width: calc(100% - 4px - 12px);\n}\n.igv-roi-table-four-column > div:first-child > div:last-child {\n margin-right: 4px;\n margin-bottom: 2px;\n height: 12px;\n width: 12px;\n color: #7f7f7f;\n}\n.igv-roi-table-four-column > div:first-child > div:last-child > svg {\n display: block;\n}\n.igv-roi-table-four-column > div:first-child > div:last-child:hover {\n cursor: pointer;\n color: #444;\n}\n.igv-roi-table-four-column > .igv-roi-table-column-titles {\n height: 24px;\n display: flex;\n flex-flow: row;\n flex-wrap: nowrap;\n justify-content: stretch;\n align-items: stretch;\n padding-right: 16px;\n background-color: white;\n border-bottom-color: #7f7f7f;\n border-bottom-style: solid;\n border-bottom-width: thin;\n}\n.igv-roi-table-four-column > .igv-roi-table-column-titles > div {\n font-size: 14px;\n vertical-align: middle;\n line-height: 24px;\n text-align: center;\n margin-left: 4px;\n margin-right: 4px;\n height: 24px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.igv-roi-table-four-column > .igv-roi-table-column-titles > div:nth-child(1) {\n width: 25%;\n}\n.igv-roi-table-four-column > .igv-roi-table-column-titles > div:nth-child(2) {\n width: 20%;\n}\n.igv-roi-table-four-column > .igv-roi-table-column-titles > div:nth-child(3) {\n width: 20%;\n}\n.igv-roi-table-four-column > .igv-roi-table-column-titles > div:nth-child(4) {\n width: 35%;\n}\n.igv-roi-table-four-column > .igv-roi-table-row-container {\n resize: both;\n overflow: scroll;\n min-width: 512px;\n min-height: 72px;\n height: 144px;\n max-height: 480px;\n background-color: white;\n display: flex;\n flex-flow: column;\n flex-wrap: nowrap;\n justify-content: flex-start;\n align-items: stretch;\n}\n.igv-roi-table-four-column > .igv-roi-table-row-container > .igv-roi-table-row {\n height: 24px;\n display: flex;\n flex-flow: row;\n flex-wrap: nowrap;\n justify-content: stretch;\n align-items: stretch;\n}\n.igv-roi-table-four-column > .igv-roi-table-row-container > .igv-roi-table-row > div {\n font-size: 14px;\n vertical-align: middle;\n line-height: 24px;\n text-align: center;\n margin-left: 4px;\n margin-right: 4px;\n height: 24px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.igv-roi-table-four-column > .igv-roi-table-row-container > .igv-roi-table-row > div:nth-child(1) {\n width: 25%;\n}\n.igv-roi-table-four-column > .igv-roi-table-row-container > .igv-roi-table-row > div:nth-child(2) {\n width: 20%;\n}\n.igv-roi-table-four-column > .igv-roi-table-row-container > .igv-roi-table-row > div:nth-child(3) {\n width: 20%;\n}\n.igv-roi-table-four-column > .igv-roi-table-row-container > .igv-roi-table-row > div:nth-child(4) {\n width: 35%;\n}\n.igv-roi-table-four-column > .igv-roi-table-row-container > .igv-roi-table-row-hover {\n background-color: rgba(0, 0, 0, 0.04);\n}\n.igv-roi-table-four-column > div:last-child {\n height: 32px;\n line-height: 32px;\n border-top-color: #7f7f7f;\n border-top-style: solid;\n border-top-width: thin;\n border-bottom-color: transparent;\n border-bottom-left-radius: 4px;\n border-bottom-right-radius: 4px;\n border-bottom-width: 0;\n display: flex;\n flex-flow: row;\n flex-wrap: nowrap;\n justify-content: space-around;\n align-items: center;\n}\n\n.igv-roi-table-row-selected {\n background-color: rgba(0, 0, 0, 0.125);\n}\n\n.igv-roi-table-button {\n height: 20px;\n user-select: none;\n line-height: 20px;\n text-align: center;\n vertical-align: middle;\n font-family: \"Open Sans\", sans-serif;\n font-size: 13px;\n font-weight: 400;\n color: black;\n padding-left: 6px;\n padding-right: 6px;\n background-color: rgb(239, 239, 239);\n border-color: black;\n border-style: solid;\n border-width: thin;\n border-radius: 3px;\n}\n\n.igv-roi-table-button:hover {\n cursor: pointer;\n font-weight: 400;\n background-color: rgba(0, 0, 0, 0.13);\n}\n\n.igv-roi-region {\n z-index: 64;\n position: absolute;\n top: 0;\n bottom: 0;\n pointer-events: none;\n overflow: visible;\n margin-top: 44px;\n display: flex;\n flex-direction: column;\n flex-wrap: nowrap;\n justify-content: flex-start;\n align-items: stretch;\n}\n.igv-roi-region > div {\n position: relative;\n width: 100%;\n height: 8px;\n cursor: pointer;\n pointer-events: auto;\n}\n\n.igv-roi-menu {\n position: absolute;\n z-index: 1024;\n width: 144px;\n border-color: #7f7f7f;\n border-radius: 4px;\n border-style: solid;\n border-width: thin;\n font-family: \"Open Sans\", sans-serif;\n background-color: white;\n display: flex;\n flex-flow: column;\n flex-wrap: nowrap;\n justify-content: flex-start;\n align-items: stretch;\n}\n.igv-roi-menu > div:not(:last-child) {\n border-bottom-color: rgba(128, 128, 128, 0.5);\n border-bottom-style: solid;\n border-bottom-width: thin;\n}\n.igv-roi-menu > div:first-child {\n border-top-left-radius: 4px;\n border-top-right-radius: 4px;\n border-top-color: transparent;\n border-top-style: solid;\n border-top-width: 0;\n}\n.igv-roi-menu > div:last-child {\n border-bottom-left-radius: 4px;\n border-bottom-right-radius: 4px;\n border-bottom-color: transparent;\n border-bottom-style: solid;\n border-bottom-width: 0;\n}\n\n.igv-roi-menu-row {\n height: 24px;\n padding-left: 8px;\n font-size: small;\n text-align: start;\n vertical-align: middle;\n line-height: 24px;\n background-color: white;\n}\n\n.igv-roi-menu-row-edit-description {\n width: -webkit-fill-available;\n font-size: small;\n text-align: start;\n vertical-align: middle;\n background-color: white;\n padding-left: 4px;\n padding-right: 4px;\n padding-bottom: 4px;\n display: flex;\n flex-direction: column;\n flex-wrap: nowrap;\n justify-content: stretch;\n align-items: stretch;\n}\n.igv-roi-menu-row-edit-description > label {\n margin-left: 2px;\n margin-bottom: 0;\n display: block;\n width: -webkit-fill-available;\n}\n.igv-roi-menu-row-edit-description > input {\n display: block;\n margin-left: 2px;\n margin-right: 2px;\n margin-bottom: 1px;\n width: -webkit-fill-available;\n}\n\n.igv-container {\n position: relative;\n display: flex;\n flex-direction: column;\n flex-wrap: nowrap;\n justify-content: flex-start;\n align-items: flex-start;\n padding-top: 4px;\n user-select: none;\n -webkit-user-select: none;\n -ms-user-select: none;\n}\n\n.igv-viewport {\n position: relative;\n margin-top: 5px;\n overflow-x: hidden;\n overflow-y: hidden;\n}\n\n.igv-viewport-content {\n position: relative;\n width: 100%;\n}\n.igv-viewport-content > canvas {\n position: relative;\n display: block;\n}\n\n.igv-column-container {\n position: relative;\n display: flex;\n flex-direction: row;\n flex-wrap: nowrap;\n justify-content: flex-start;\n align-items: stretch;\n width: 100%;\n}\n\n.igv-column-shim {\n width: 1px;\n margin-left: 2px;\n margin-right: 2px;\n background-color: #545453;\n}\n\n.igv-column {\n position: relative;\n position: relative;\n display: flex;\n flex-direction: column;\n flex-wrap: nowrap;\n justify-content: flex-start;\n align-items: flex-start;\n box-sizing: border-box;\n height: 100%;\n}\n\n.igv-axis-column {\n position: relative;\n display: flex;\n flex-direction: column;\n flex-wrap: nowrap;\n justify-content: flex-start;\n align-items: flex-start;\n box-sizing: border-box;\n height: 100%;\n width: 50px;\n}\n.igv-axis-column > div {\n margin-top: 5px;\n width: 100%;\n}\n\n.igv-sample-name-column {\n position: relative;\n display: flex;\n flex-direction: column;\n flex-wrap: nowrap;\n justify-content: flex-start;\n align-items: flex-start;\n box-sizing: border-box;\n height: 100%;\n}\n\n.igv-scrollbar-column {\n position: relative;\n display: flex;\n flex-direction: column;\n flex-wrap: nowrap;\n justify-content: flex-start;\n align-items: flex-start;\n box-sizing: border-box;\n height: 100%;\n width: 14px;\n}\n.igv-scrollbar-column > div {\n position: relative;\n margin-top: 5px;\n width: 14px;\n}\n.igv-scrollbar-column > div > div {\n cursor: pointer;\n position: absolute;\n top: 0;\n left: 2px;\n width: 8px;\n border-width: 1px;\n border-style: solid;\n border-color: #c4c4c4;\n border-top-left-radius: 4px;\n border-top-right-radius: 4px;\n border-bottom-left-radius: 4px;\n border-bottom-right-radius: 4px;\n}\n.igv-scrollbar-column > div > div:hover {\n background-color: #c4c4c4;\n}\n\n.igv-track-drag-column {\n position: relative;\n display: flex;\n flex-direction: column;\n flex-wrap: nowrap;\n justify-content: flex-start;\n align-items: flex-start;\n box-sizing: border-box;\n height: 100%;\n width: 12px;\n background-color: white;\n}\n.igv-track-drag-column > .igv-track-drag-handle {\n z-index: 512;\n position: relative;\n cursor: pointer;\n margin-top: 5px;\n width: 100%;\n border-style: solid;\n border-width: 0;\n border-top-right-radius: 6px;\n border-bottom-right-radius: 6px;\n background-color: #c4c4c4;\n}\n.igv-track-drag-column .igv-track-drag-handle-hover {\n background-color: #787878;\n}\n.igv-track-drag-column > .igv-track-drag-shim {\n position: relative;\n margin-top: 5px;\n width: 100%;\n border-style: solid;\n border-width: 0;\n}\n\n.igv-gear-menu-column {\n position: relative;\n display: flex;\n flex-direction: column;\n flex-wrap: nowrap;\n justify-content: flex-start;\n align-items: flex-start;\n box-sizing: border-box;\n height: 100%;\n width: 28px;\n}\n.igv-gear-menu-column > div {\n display: flex;\n flex-direction: column;\n flex-wrap: nowrap;\n justify-content: flex-start;\n align-items: center;\n margin-top: 5px;\n width: 100%;\n background: white;\n}\n.igv-gear-menu-column > div > div {\n position: relative;\n margin-top: 4px;\n width: 16px;\n height: 16px;\n color: #7F7F7F;\n}\n.igv-gear-menu-column > div > div:hover {\n cursor: pointer;\n color: #444;\n}\n\n/*# sourceMappingURL=dom.css.map */\n';
|
|
70545
|
+
var css = '.igv-navbar {\n display: flex;\n flex-flow: row;\n flex-wrap: nowrap;\n justify-content: space-between;\n align-items: center;\n box-sizing: border-box;\n width: 100%;\n color: #444;\n font-size: 12px;\n font-family: \"Open Sans\", sans-serif;\n font-weight: 400;\n line-height: 32px;\n padding-left: 8px;\n padding-right: 8px;\n margin-top: 2px;\n margin-bottom: 6px;\n height: 32px;\n border-style: solid;\n border-radius: 3px;\n border-width: thin;\n border-color: #bfbfbf;\n background-color: #f3f3f3;\n}\n.igv-navbar .igv-navbar-left-container {\n display: flex;\n flex-flow: row;\n flex-wrap: nowrap;\n justify-content: space-between;\n align-items: center;\n height: 32px;\n line-height: 32px;\n}\n.igv-navbar .igv-navbar-left-container .igv-logo {\n width: 34px;\n height: 32px;\n margin-right: 8px;\n}\n.igv-navbar .igv-navbar-left-container .igv-current-genome {\n height: 32px;\n margin-left: 4px;\n margin-right: 4px;\n user-select: none;\n line-height: 32px;\n vertical-align: middle;\n text-align: center;\n}\n.igv-navbar .igv-navbar-left-container .igv-navbar-genomic-location {\n display: flex;\n flex-flow: row;\n flex-wrap: nowrap;\n justify-content: space-between;\n align-items: center;\n height: 100%;\n}\n.igv-navbar .igv-navbar-left-container .igv-navbar-genomic-location .igv-chromosome-select-widget-container {\n display: flex;\n flex-flow: column;\n flex-wrap: nowrap;\n justify-content: space-around;\n align-items: center;\n height: 100%;\n width: 125px;\n margin-right: 4px;\n}\n.igv-navbar .igv-navbar-left-container .igv-navbar-genomic-location .igv-chromosome-select-widget-container select {\n display: block;\n cursor: pointer;\n width: 100px;\n height: 75%;\n outline: none;\n font-size: 12px;\n font-family: \"Open Sans\", sans-serif;\n font-weight: 400;\n}\n.igv-navbar .igv-navbar-left-container .igv-navbar-genomic-location .igv-locus-size-group {\n display: flex;\n flex-flow: row;\n flex-wrap: nowrap;\n justify-content: space-between;\n align-items: center;\n margin-left: 8px;\n height: 22px;\n}\n.igv-navbar .igv-navbar-left-container .igv-navbar-genomic-location .igv-locus-size-group .igv-search-container {\n display: flex;\n flex-flow: row;\n flex-wrap: nowrap;\n justify-content: flex-start;\n align-items: center;\n width: 210px;\n height: 22px;\n line-height: 22px;\n}\n.igv-navbar .igv-navbar-left-container .igv-navbar-genomic-location .igv-locus-size-group .igv-search-container input.igv-search-input {\n cursor: text;\n width: 85%;\n height: 22px;\n line-height: 22px;\n font-size: 12px;\n font-family: \"Open Sans\", sans-serif;\n font-weight: 400;\n text-align: left;\n padding-left: 8px;\n margin-right: 8px;\n outline: none;\n border-style: solid;\n border-radius: 3px;\n border-width: thin;\n border-color: #bfbfbf;\n background-color: white;\n}\n.igv-navbar .igv-navbar-left-container .igv-navbar-genomic-location .igv-locus-size-group .igv-search-container .igv-search-icon-container {\n cursor: pointer;\n height: 16px;\n width: 16px;\n}\n.igv-navbar .igv-navbar-left-container .igv-navbar-genomic-location .igv-locus-size-group .igv-windowsize-panel-container {\n margin-left: 4px;\n user-select: none;\n}\n.igv-navbar .igv-navbar-right-container {\n display: flex;\n flex-flow: row;\n flex-wrap: nowrap;\n justify-content: space-between;\n align-items: center;\n height: 32px;\n line-height: 32px;\n}\n.igv-navbar .igv-navbar-right-container .igv-navbar-toggle-button-container {\n display: flex;\n flex-flow: row;\n flex-wrap: nowrap;\n justify-content: space-between;\n align-items: center;\n height: 100%;\n}\n.igv-navbar .igv-navbar-right-container .igv-navbar-toggle-button-container div {\n margin-left: 0;\n margin-right: 4px;\n}\n.igv-navbar .igv-navbar-right-container .igv-navbar-toggle-button-container div:last-child {\n margin-left: 0;\n margin-right: 0;\n}\n.igv-navbar .igv-navbar-right-container .igv-navbar-toggle-button-container-750 {\n display: none;\n}\n.igv-navbar .igv-navbar-right-container .igv-zoom-widget {\n color: #737373;\n font-size: 18px;\n height: 32px;\n line-height: 32px;\n margin-left: 8px;\n user-select: none;\n display: flex;\n flex-flow: row;\n flex-wrap: nowrap;\n justify-content: flex-end;\n align-items: center;\n}\n.igv-navbar .igv-navbar-right-container .igv-zoom-widget div {\n cursor: pointer;\n margin-left: unset;\n margin-right: unset;\n}\n.igv-navbar .igv-navbar-right-container .igv-zoom-widget div:first-child {\n height: 24px;\n width: 24px;\n margin-left: unset;\n margin-right: 8px;\n}\n.igv-navbar .igv-navbar-right-container .igv-zoom-widget div:last-child {\n height: 24px;\n width: 24px;\n margin-left: 8px;\n margin-right: unset;\n}\n.igv-navbar .igv-navbar-right-container .igv-zoom-widget div:nth-child(even) {\n display: block;\n height: fit-content;\n}\n.igv-navbar .igv-navbar-right-container .igv-zoom-widget input {\n display: block;\n width: 125px;\n}\n.igv-navbar .igv-navbar-right-container .igv-zoom-widget svg {\n display: block;\n}\n.igv-navbar .igv-navbar-right-container .igv-zoom-widget-900 {\n color: #737373;\n font-size: 18px;\n height: 32px;\n line-height: 32px;\n margin-left: 8px;\n user-select: none;\n display: flex;\n flex-flow: row;\n flex-wrap: nowrap;\n justify-content: flex-end;\n align-items: center;\n}\n.igv-navbar .igv-navbar-right-container .igv-zoom-widget-900 div {\n cursor: pointer;\n margin-left: unset;\n margin-right: unset;\n}\n.igv-navbar .igv-navbar-right-container .igv-zoom-widget-900 div:first-child {\n height: 24px;\n width: 24px;\n margin-left: unset;\n margin-right: 8px;\n}\n.igv-navbar .igv-navbar-right-container .igv-zoom-widget-900 div:last-child {\n height: 24px;\n width: 24px;\n margin-left: 8px;\n margin-right: unset;\n}\n.igv-navbar .igv-navbar-right-container .igv-zoom-widget-900 div:nth-child(even) {\n width: 0;\n height: 0;\n display: none;\n}\n.igv-navbar .igv-navbar-right-container .igv-zoom-widget-900 input {\n width: 0;\n height: 0;\n display: none;\n}\n.igv-navbar .igv-navbar-right-container .igv-zoom-widget-900 svg {\n display: block;\n}\n.igv-navbar .igv-navbar-right-container .igv-zoom-widget-hidden {\n display: none;\n}\n\n.igv-navbar-button {\n display: block;\n box-sizing: unset;\n padding-left: 6px;\n padding-right: 6px;\n height: 18px;\n text-transform: capitalize;\n user-select: none;\n line-height: 18px;\n text-align: center;\n vertical-align: middle;\n font-family: \"Open Sans\", sans-serif;\n font-size: 11px;\n font-weight: 200;\n color: #737373;\n background-color: #f3f3f3;\n border-color: #737373;\n border-style: solid;\n border-width: thin;\n border-radius: 6px;\n}\n\n.igv-navbar-button-clicked {\n color: white;\n background-color: #737373;\n}\n\n.igv-navbar-button:hover {\n cursor: pointer;\n}\n\n.igv-zoom-in-notice-container {\n z-index: 1024;\n position: absolute;\n top: 8px;\n left: 50%;\n transform: translate(-50%, 0%);\n display: flex;\n flex-direction: row;\n flex-wrap: nowrap;\n justify-content: center;\n align-items: center;\n background-color: white;\n}\n.igv-zoom-in-notice-container > div {\n padding-left: 4px;\n padding-right: 4px;\n padding-top: 2px;\n padding-bottom: 2px;\n width: 100%;\n height: 100%;\n font-family: \"Open Sans\", sans-serif;\n font-size: 14px;\n font-weight: 400;\n color: #3f3f3f;\n}\n\n.igv-zoom-in-notice {\n position: absolute;\n top: 10px;\n left: 50%;\n}\n.igv-zoom-in-notice div {\n position: relative;\n left: -50%;\n font-family: \"Open Sans\", sans-serif;\n font-size: medium;\n font-weight: 400;\n color: #3f3f3f;\n background-color: rgba(255, 255, 255, 0.51);\n z-index: 64;\n}\n\n.igv-container-spinner {\n position: absolute;\n top: 90%;\n left: 50%;\n transform: translate(-50%, -50%);\n z-index: 1024;\n width: 24px;\n height: 24px;\n pointer-events: none;\n color: #737373;\n}\n\n.igv-multi-locus-close-button {\n position: absolute;\n top: 2px;\n right: 0;\n padding-left: 2px;\n padding-right: 2px;\n width: 18px;\n height: 18px;\n color: #666666;\n background-color: white;\n z-index: 1000;\n}\n.igv-multi-locus-close-button > svg {\n vertical-align: top;\n}\n\n.igv-multi-locus-close-button:hover {\n cursor: pointer;\n color: #434343;\n}\n\n.igv-multi-locus-ruler-label {\n z-index: 64;\n position: absolute;\n top: 2px;\n left: 0;\n width: 100%;\n height: 14px;\n display: flex;\n flex-flow: row;\n flex-wrap: nowrap;\n justify-content: center;\n align-items: center;\n}\n.igv-multi-locus-ruler-label div {\n font-family: \"Open Sans\", sans-serif;\n font-size: 14px;\n font-weight: 400;\n color: rgb(16, 16, 16);\n background-color: white;\n}\n\n.igv-multi-locus-ruler-label-square-dot {\n z-index: 64;\n position: absolute;\n left: 50%;\n top: 5%;\n transform: translate(-50%, 0%);\n background-color: white;\n display: flex;\n flex-flow: row;\n flex-wrap: nowrap;\n justify-content: flex-start;\n align-items: center;\n}\n.igv-multi-locus-ruler-label-square-dot > div:first-child {\n width: 14px;\n height: 14px;\n}\n.igv-multi-locus-ruler-label-square-dot > div:last-child {\n margin-left: 16px;\n font-family: \"Open Sans\", sans-serif;\n font-size: 14px;\n font-weight: 400;\n color: rgb(16, 16, 16);\n}\n\n.igv-multi-locus-ruler-label:hover {\n cursor: pointer;\n}\n\n.igv-ruler-sweeper {\n display: none;\n pointer-events: none;\n position: absolute;\n top: 26px;\n bottom: 0;\n left: 0;\n width: 0;\n z-index: 99999;\n background-color: rgba(68, 134, 247, 0.25);\n}\n\n.igv-ruler-tooltip {\n pointer-events: none;\n z-index: 128;\n position: absolute;\n top: 0;\n left: 0;\n width: 1px;\n height: 32px;\n background-color: transparent;\n display: flex;\n flex-flow: row;\n flex-wrap: nowrap;\n justify-content: flex-start;\n align-items: center;\n}\n.igv-ruler-tooltip > div {\n pointer-events: none;\n width: 128px;\n height: auto;\n padding: 1px;\n color: #373737;\n font-size: 10px;\n font-family: \"Open Sans\", sans-serif;\n font-weight: 400;\n background-color: white;\n border-style: solid;\n border-width: thin;\n border-color: #373737;\n}\n\n.igv-track-label {\n position: absolute;\n left: 8px;\n top: 8px;\n width: auto;\n height: auto;\n max-width: 200px;\n padding-left: 4px;\n padding-right: 4px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n font-family: \"Open Sans\", sans-serif;\n font-size: small;\n font-weight: 400;\n text-align: center;\n user-select: none;\n -moz-user-select: none;\n -webkit-user-select: none;\n border-color: #444;\n border-radius: 2px;\n border-style: solid;\n border-width: thin;\n background-color: white;\n z-index: 128;\n cursor: pointer;\n}\n\n.igv-track-label:hover,\n.igv-track-label:focus,\n.igv-track-label:active {\n background-color: #e8e8e8;\n}\n\n.igv-track-label-popup-shim {\n padding-left: 8px;\n padding-right: 8px;\n padding-top: 4px;\n}\n\n.igv-center-line {\n display: none;\n pointer-events: none;\n position: absolute;\n top: 0;\n bottom: 0;\n left: 50%;\n transform: translateX(-50%);\n z-index: 8;\n user-select: none;\n -moz-user-select: none;\n -webkit-user-select: none;\n border-left-style: dashed;\n border-left-width: thin;\n border-right-style: dashed;\n border-right-width: thin;\n}\n\n.igv-center-line-wide {\n background-color: rgba(0, 0, 0, 0);\n border-left-color: rgba(127, 127, 127, 0.51);\n border-right-color: rgba(127, 127, 127, 0.51);\n}\n\n.igv-center-line-thin {\n background-color: rgba(0, 0, 0, 0);\n border-left-color: rgba(127, 127, 127, 0.51);\n border-right-color: rgba(0, 0, 0, 0);\n}\n\n.igv-cursor-guide-horizontal {\n display: none;\n pointer-events: none;\n user-select: none;\n -moz-user-select: none;\n -webkit-user-select: none;\n position: absolute;\n left: 0;\n right: 0;\n top: 50%;\n height: 1px;\n z-index: 1;\n margin-left: 50px;\n margin-right: 54px;\n border-top-style: dotted;\n border-top-width: thin;\n border-top-color: rgba(127, 127, 127, 0.76);\n}\n\n.igv-cursor-guide-vertical {\n pointer-events: none;\n user-select: none;\n -moz-user-select: none;\n -webkit-user-select: none;\n position: absolute;\n top: 0;\n bottom: 0;\n left: 50%;\n width: 1px;\n z-index: 1;\n border-left-style: dotted;\n border-left-width: thin;\n border-left-color: rgba(127, 127, 127, 0.76);\n display: none;\n}\n\n.igv-user-feedback {\n position: fixed;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: 512px;\n height: 360px;\n z-index: 2048;\n background-color: white;\n border-color: #a2a2a2;\n border-style: solid;\n border-width: thin;\n font-family: \"Open Sans\", sans-serif;\n font-size: medium;\n font-weight: 400;\n color: #444;\n display: flex;\n flex-direction: column;\n flex-wrap: nowrap;\n justify-content: flex-start;\n align-items: center;\n}\n.igv-user-feedback div:first-child {\n position: relative;\n height: 24px;\n width: 100%;\n background-color: white;\n border-bottom-color: #a2a2a2;\n border-bottom-style: solid;\n border-bottom-width: thin;\n}\n.igv-user-feedback div:first-child div {\n position: absolute;\n top: 2px;\n width: 16px;\n height: 16px;\n background-color: transparent;\n}\n.igv-user-feedback div:first-child div:first-child {\n left: 8px;\n}\n.igv-user-feedback div:first-child div:last-child {\n cursor: pointer;\n right: 8px;\n}\n.igv-user-feedback div:last-child {\n width: 100%;\n height: calc(100% - 24px);\n border-width: 0;\n}\n.igv-user-feedback div:last-child div {\n width: auto;\n height: auto;\n margin: 8px;\n}\n\n.igv-generic-dialog-container {\n position: absolute;\n top: 0;\n left: 0;\n width: 300px;\n height: 200px;\n border-color: #7F7F7F;\n border-radius: 4px;\n border-style: solid;\n border-width: thin;\n font-family: \"Open Sans\", sans-serif;\n font-size: medium;\n font-weight: 400;\n z-index: 2048;\n background-color: white;\n display: flex;\n flex-flow: column;\n flex-wrap: nowrap;\n justify-content: flex-start;\n align-items: center;\n}\n.igv-generic-dialog-container .igv-generic-dialog-header {\n display: flex;\n flex-flow: row;\n flex-wrap: nowrap;\n justify-content: flex-end;\n align-items: center;\n width: 100%;\n height: 24px;\n cursor: move;\n border-top-left-radius: 4px;\n border-top-right-radius: 4px;\n border-bottom-color: #7F7F7F;\n border-bottom-style: solid;\n border-bottom-width: thin;\n background-color: #eee;\n}\n.igv-generic-dialog-container .igv-generic-dialog-header div {\n margin-right: 4px;\n margin-bottom: 2px;\n height: 12px;\n width: 12px;\n color: #7F7F7F;\n}\n.igv-generic-dialog-container .igv-generic-dialog-header div:hover {\n cursor: pointer;\n color: #444;\n}\n.igv-generic-dialog-container .igv-generic-dialog-one-liner {\n color: #373737;\n width: 95%;\n height: 24px;\n line-height: 24px;\n text-align: left;\n margin-top: 8px;\n padding-left: 8px;\n overflow-wrap: break-word;\n background-color: white;\n}\n.igv-generic-dialog-container .igv-generic-dialog-label-input {\n margin-top: 8px;\n width: 95%;\n height: 24px;\n color: #373737;\n line-height: 24px;\n padding-left: 8px;\n background-color: white;\n display: flex;\n flex-flow: row;\n flex-wrap: nowrap;\n justify-content: flex-start;\n align-items: center;\n}\n.igv-generic-dialog-container .igv-generic-dialog-label-input div {\n width: 30%;\n height: 100%;\n font-size: 16px;\n text-align: right;\n padding-right: 8px;\n background-color: white;\n}\n.igv-generic-dialog-container .igv-generic-dialog-label-input input {\n display: block;\n height: 100%;\n width: 100%;\n padding-left: 4px;\n font-family: \"Open Sans\", sans-serif;\n font-weight: 400;\n color: #373737;\n text-align: left;\n outline: none;\n border-style: solid;\n border-width: thin;\n border-color: #7F7F7F;\n background-color: white;\n}\n.igv-generic-dialog-container .igv-generic-dialog-label-input input {\n width: 50%;\n font-size: 16px;\n}\n.igv-generic-dialog-container .igv-generic-dialog-input {\n margin-top: 8px;\n width: calc(100% - 16px);\n height: 24px;\n color: #373737;\n line-height: 24px;\n display: flex;\n flex-flow: row;\n flex-wrap: nowrap;\n justify-content: space-around;\n align-items: center;\n}\n.igv-generic-dialog-container .igv-generic-dialog-input input {\n display: block;\n height: 100%;\n width: 100%;\n padding-left: 4px;\n font-family: \"Open Sans\", sans-serif;\n font-weight: 400;\n color: #373737;\n text-align: left;\n outline: none;\n border-style: solid;\n border-width: thin;\n border-color: #7F7F7F;\n background-color: white;\n}\n.igv-generic-dialog-container .igv-generic-dialog-input input {\n font-size: 16px;\n}\n.igv-generic-dialog-container .igv-generic-dialog-ok-cancel {\n width: 100%;\n height: 28px;\n display: flex;\n flex-flow: row;\n flex-wrap: nowrap;\n justify-content: space-around;\n align-items: center;\n}\n.igv-generic-dialog-container .igv-generic-dialog-ok-cancel div {\n margin-top: 32px;\n color: white;\n font-family: \"Open Sans\", sans-serif;\n font-size: 14px;\n font-weight: 400;\n width: 75px;\n height: 28px;\n line-height: 28px;\n text-align: center;\n border-color: transparent;\n border-style: solid;\n border-width: thin;\n border-radius: 2px;\n}\n.igv-generic-dialog-container .igv-generic-dialog-ok-cancel div:first-child {\n margin-left: 32px;\n margin-right: 0;\n background-color: #5ea4e0;\n}\n.igv-generic-dialog-container .igv-generic-dialog-ok-cancel div:last-child {\n margin-left: 0;\n margin-right: 32px;\n background-color: #c4c4c4;\n}\n.igv-generic-dialog-container .igv-generic-dialog-ok-cancel div:first-child:hover {\n cursor: pointer;\n background-color: #3b5c7f;\n}\n.igv-generic-dialog-container .igv-generic-dialog-ok-cancel div:last-child:hover {\n cursor: pointer;\n background-color: #7f7f7f;\n}\n.igv-generic-dialog-container .igv-generic-dialog-ok {\n width: 100%;\n height: 36px;\n margin-top: 32px;\n display: flex;\n flex-flow: row;\n flex-wrap: nowrap;\n justify-content: space-around;\n align-items: center;\n}\n.igv-generic-dialog-container .igv-generic-dialog-ok div {\n width: 98px;\n height: 36px;\n line-height: 36px;\n text-align: center;\n color: white;\n font-family: \"Open Sans\", sans-serif;\n font-size: medium;\n font-weight: 400;\n border-color: white;\n border-style: solid;\n border-width: thin;\n border-radius: 4px;\n background-color: #2B81AF;\n}\n.igv-generic-dialog-container .igv-generic-dialog-ok div:hover {\n cursor: pointer;\n background-color: #25597f;\n}\n\n.igv-generic-container {\n position: absolute;\n top: 0;\n left: 0;\n z-index: 2048;\n background-color: white;\n cursor: pointer;\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n justify-content: flex-start;\n align-items: center;\n}\n.igv-generic-container div:first-child {\n cursor: move;\n display: flex;\n flex-flow: row;\n flex-wrap: nowrap;\n justify-content: flex-end;\n align-items: center;\n height: 24px;\n width: 100%;\n background-color: #dddddd;\n}\n.igv-generic-container div:first-child i {\n display: block;\n color: #5f5f5f;\n cursor: pointer;\n width: 14px;\n height: 14px;\n margin-right: 8px;\n margin-bottom: 4px;\n}\n\n.igv-menu-popup {\n position: absolute;\n top: 0;\n left: 0;\n width: max-content;\n z-index: 4096;\n cursor: pointer;\n font-family: \"Open Sans\", sans-serif;\n font-size: small;\n font-weight: 400;\n color: #4b4b4b;\n background: white;\n border-radius: 4px;\n border-color: #7F7F7F;\n border-style: solid;\n border-width: thin;\n display: flex;\n flex-flow: column;\n flex-wrap: nowrap;\n justify-content: flex-start;\n align-items: flex-end;\n text-align: left;\n}\n.igv-menu-popup > div:not(:first-child) {\n width: 100%;\n}\n.igv-menu-popup > div:not(:first-child) > div {\n background: white;\n}\n.igv-menu-popup > div:not(:first-child) > div.context-menu {\n padding-left: 4px;\n padding-right: 4px;\n}\n.igv-menu-popup > div:not(:first-child) > div:last-child {\n border-bottom-left-radius: 4px;\n border-bottom-right-radius: 4px;\n border-bottom-color: transparent;\n border-bottom-style: solid;\n border-bottom-width: thin;\n}\n.igv-menu-popup > div:not(:first-child) > div:hover {\n background: #efefef;\n}\n\n.igv-menu-popup-shim {\n padding-left: 8px;\n padding-right: 8px;\n padding-bottom: 1px;\n padding-top: 1px;\n}\n\n.igv-menu-popup-header {\n position: relative;\n width: 100%;\n height: 24px;\n cursor: move;\n border-top-color: transparent;\n border-top-left-radius: 4px;\n border-top-right-radius: 4px;\n border-bottom-color: #7F7F7F;\n border-bottom-style: solid;\n border-bottom-width: thin;\n background-color: #eee;\n display: flex;\n flex-flow: row;\n flex-wrap: nowrap;\n justify-content: flex-end;\n align-items: center;\n}\n.igv-menu-popup-header div {\n margin-right: 4px;\n height: 12px;\n width: 12px;\n color: #7F7F7F;\n}\n.igv-menu-popup-header div:hover {\n cursor: pointer;\n color: #444;\n}\n\n.igv-menu-popup-check-container {\n display: flex;\n flex-flow: row;\n flex-wrap: nowrap;\n justify-content: flex-start;\n align-items: center;\n width: 100%;\n height: 20px;\n margin-right: 4px;\n background-color: transparent;\n}\n.igv-menu-popup-check-container div {\n padding-top: 2px;\n padding-left: 8px;\n}\n.igv-menu-popup-check-container div:first-child {\n position: relative;\n width: 12px;\n height: 12px;\n}\n.igv-menu-popup-check-container div:first-child svg {\n position: absolute;\n width: 12px;\n height: 12px;\n}\n\n.igv-user-feedback {\n position: fixed;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: 512px;\n height: 360px;\n z-index: 2048;\n background-color: white;\n border-color: #a2a2a2;\n border-style: solid;\n border-width: thin;\n font-family: \"Open Sans\", sans-serif;\n font-size: medium;\n font-weight: 400;\n color: #444;\n display: flex;\n flex-direction: column;\n flex-wrap: nowrap;\n justify-content: flex-start;\n align-items: center;\n}\n.igv-user-feedback div:first-child {\n position: relative;\n height: 24px;\n width: 100%;\n background-color: white;\n border-bottom-color: #a2a2a2;\n border-bottom-style: solid;\n border-bottom-width: thin;\n}\n.igv-user-feedback div:first-child div {\n position: absolute;\n top: 2px;\n width: 16px;\n height: 16px;\n background-color: transparent;\n}\n.igv-user-feedback div:first-child div:first-child {\n left: 8px;\n}\n.igv-user-feedback div:first-child div:last-child {\n cursor: pointer;\n right: 8px;\n}\n.igv-user-feedback div:last-child {\n width: 100%;\n height: calc(100% - 24px);\n border-width: 0;\n}\n.igv-user-feedback div:last-child div {\n width: auto;\n height: auto;\n margin: 8px;\n}\n\n.igv-loading-spinner-container {\n z-index: 1024;\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: 32px;\n height: 32px;\n display: flex;\n flex-direction: row;\n flex-wrap: nowrap;\n justify-content: center;\n align-items: center;\n}\n.igv-loading-spinner-container > div {\n box-sizing: border-box;\n width: 100%;\n height: 100%;\n border-radius: 50%;\n border: 4px solid rgba(128, 128, 128, 0.5);\n border-top-color: rgb(255, 255, 255);\n animation: spin 1s ease-in-out infinite;\n -webkit-animation: spin 1s ease-in-out infinite;\n}\n\n@keyframes spin {\n to {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n@-webkit-keyframes spin {\n to {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n.igv-roi-menu-next-gen {\n position: absolute;\n z-index: 512;\n font-family: \"Open Sans\", sans-serif;\n font-size: small;\n font-weight: 400;\n color: #4b4b4b;\n background-color: white;\n width: 192px;\n border-radius: 4px;\n border-color: #7F7F7F;\n border-style: solid;\n border-width: thin;\n display: flex;\n flex-direction: column;\n flex-wrap: nowrap;\n justify-content: flex-start;\n align-items: stretch;\n}\n.igv-roi-menu-next-gen > div:first-child {\n height: 24px;\n border-top-color: transparent;\n border-top-left-radius: 4px;\n border-top-right-radius: 4px;\n border-bottom-color: #7F7F7F;\n border-bottom-style: solid;\n border-bottom-width: thin;\n background-color: #eee;\n display: flex;\n flex-flow: row;\n flex-wrap: nowrap;\n justify-content: flex-end;\n align-items: center;\n}\n.igv-roi-menu-next-gen > div:first-child > div {\n margin-right: 4px;\n height: 12px;\n width: 12px;\n color: #7F7F7F;\n}\n.igv-roi-menu-next-gen > div:first-child > div:hover {\n cursor: pointer;\n color: #444;\n}\n.igv-roi-menu-next-gen > div:last-child {\n background-color: white;\n border-bottom-left-radius: 4px;\n border-bottom-right-radius: 4px;\n border-bottom-color: transparent;\n border-bottom-style: solid;\n border-bottom-width: 0;\n display: flex;\n flex-direction: column;\n flex-wrap: nowrap;\n justify-content: flex-start;\n align-items: stretch;\n text-align: start;\n vertical-align: middle;\n cursor: pointer;\n}\n.igv-roi-menu-next-gen > div:last-child > div {\n height: 24px;\n padding-left: 4px;\n border-bottom-style: solid;\n border-bottom-width: thin;\n border-bottom-color: #7f7f7f;\n}\n.igv-roi-menu-next-gen > div:last-child > div:not(:first-child):hover {\n background-color: rgba(127, 127, 127, 0.1);\n}\n.igv-roi-menu-next-gen > div:last-child div:first-child {\n cursor: default;\n font-style: italic;\n text-align: center;\n padding-right: 4px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.igv-roi-menu-next-gen > div:last-child > div:last-child {\n border-bottom-width: 0;\n border-bottom-color: transparent;\n}\n\n.igv-roi-placeholder {\n font-style: normal;\n color: rgba(75, 75, 75, 0.6);\n}\n\n.igv-roi-table {\n position: absolute;\n z-index: 1024;\n width: fit-content;\n border-color: #7f7f7f;\n border-radius: 4px;\n border-style: solid;\n border-width: thin;\n font-family: \"Open Sans\", sans-serif;\n font-size: 12px;\n font-weight: 400;\n background-color: white;\n display: flex;\n flex-flow: column;\n flex-wrap: nowrap;\n justify-content: flex-start;\n align-items: stretch;\n}\n.igv-roi-table > div {\n height: 24px;\n font-size: 14px;\n text-align: start;\n vertical-align: middle;\n line-height: 24px;\n}\n.igv-roi-table > div:first-child {\n border-color: transparent;\n border-top-left-radius: 4px;\n border-top-right-radius: 4px;\n border-top-width: 0;\n border-bottom-color: #7f7f7f;\n border-bottom-style: solid;\n border-bottom-width: thin;\n background-color: #eee;\n cursor: move;\n display: flex;\n flex-flow: row;\n flex-wrap: nowrap;\n justify-content: space-between;\n align-items: center;\n}\n.igv-roi-table > div:first-child > div:first-child {\n text-align: center;\n width: calc(100% - 4px - 12px);\n}\n.igv-roi-table > div:first-child > div:last-child {\n margin-right: 4px;\n margin-bottom: 2px;\n height: 12px;\n width: 12px;\n color: #7f7f7f;\n}\n.igv-roi-table > div:first-child > div:last-child > svg {\n display: block;\n}\n.igv-roi-table > div:first-child > div:last-child:hover {\n cursor: pointer;\n color: #444;\n}\n.igv-roi-table > .igv-roi-table-column-titles {\n height: 24px;\n display: flex;\n flex-flow: row;\n flex-wrap: nowrap;\n justify-content: stretch;\n align-items: stretch;\n padding-right: 16px;\n background-color: white;\n border-bottom-color: #7f7f7f;\n border-bottom-style: solid;\n border-bottom-width: thin;\n}\n.igv-roi-table > .igv-roi-table-column-titles > div {\n font-size: 14px;\n vertical-align: middle;\n line-height: 24px;\n text-align: center;\n margin-left: 4px;\n margin-right: 4px;\n height: 24px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.igv-roi-table > .igv-roi-table-column-titles > div:nth-child(1) {\n width: 20%;\n}\n.igv-roi-table > .igv-roi-table-column-titles > div:nth-child(2) {\n width: 15%;\n}\n.igv-roi-table > .igv-roi-table-column-titles > div:nth-child(3) {\n width: 15%;\n}\n.igv-roi-table > .igv-roi-table-column-titles > div:nth-child(4) {\n width: 30%;\n}\n.igv-roi-table > .igv-roi-table-column-titles > div:nth-child(5) {\n width: 20%;\n}\n.igv-roi-table > .igv-roi-table-row-container {\n resize: both;\n overflow: scroll;\n min-width: 512px;\n min-height: 72px;\n height: 144px;\n max-height: 480px;\n background-color: white;\n display: flex;\n flex-flow: column;\n flex-wrap: nowrap;\n justify-content: flex-start;\n align-items: stretch;\n}\n.igv-roi-table > .igv-roi-table-row-container > .igv-roi-table-row {\n height: 24px;\n display: flex;\n flex-flow: row;\n flex-wrap: nowrap;\n justify-content: stretch;\n align-items: stretch;\n}\n.igv-roi-table > .igv-roi-table-row-container > .igv-roi-table-row > div {\n font-size: 14px;\n vertical-align: middle;\n line-height: 24px;\n text-align: center;\n margin-left: 4px;\n margin-right: 4px;\n height: 24px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.igv-roi-table > .igv-roi-table-row-container > .igv-roi-table-row > div:nth-child(1) {\n width: 20%;\n}\n.igv-roi-table > .igv-roi-table-row-container > .igv-roi-table-row > div:nth-child(2) {\n width: 15%;\n}\n.igv-roi-table > .igv-roi-table-row-container > .igv-roi-table-row > div:nth-child(3) {\n width: 15%;\n}\n.igv-roi-table > .igv-roi-table-row-container > .igv-roi-table-row > div:nth-child(4) {\n width: 30%;\n}\n.igv-roi-table > .igv-roi-table-row-container > .igv-roi-table-row > div:nth-child(5) {\n width: 20%;\n}\n.igv-roi-table > .igv-roi-table-row-container > .igv-roi-table-row-hover {\n background-color: rgba(0, 0, 0, 0.04);\n}\n.igv-roi-table > div:last-child {\n height: 32px;\n line-height: 32px;\n border-top-color: #7f7f7f;\n border-top-style: solid;\n border-top-width: thin;\n border-bottom-color: transparent;\n border-bottom-left-radius: 4px;\n border-bottom-right-radius: 4px;\n border-bottom-width: 0;\n display: flex;\n flex-flow: row;\n flex-wrap: nowrap;\n justify-content: space-around;\n align-items: center;\n}\n\n.igv-roi-table-four-column {\n position: absolute;\n z-index: 1024;\n width: fit-content;\n border-color: #7f7f7f;\n border-radius: 4px;\n border-style: solid;\n border-width: thin;\n font-family: \"Open Sans\", sans-serif;\n font-size: 12px;\n font-weight: 400;\n background-color: white;\n display: flex;\n flex-flow: column;\n flex-wrap: nowrap;\n justify-content: flex-start;\n align-items: stretch;\n}\n.igv-roi-table-four-column > div {\n height: 24px;\n font-size: 14px;\n text-align: start;\n vertical-align: middle;\n line-height: 24px;\n}\n.igv-roi-table-four-column > div:first-child {\n border-color: transparent;\n border-top-left-radius: 4px;\n border-top-right-radius: 4px;\n border-top-width: 0;\n border-bottom-color: #7f7f7f;\n border-bottom-style: solid;\n border-bottom-width: thin;\n background-color: #eee;\n cursor: move;\n display: flex;\n flex-flow: row;\n flex-wrap: nowrap;\n justify-content: space-between;\n align-items: center;\n}\n.igv-roi-table-four-column > div:first-child > div:first-child {\n text-align: center;\n width: calc(100% - 4px - 12px);\n}\n.igv-roi-table-four-column > div:first-child > div:last-child {\n margin-right: 4px;\n margin-bottom: 2px;\n height: 12px;\n width: 12px;\n color: #7f7f7f;\n}\n.igv-roi-table-four-column > div:first-child > div:last-child > svg {\n display: block;\n}\n.igv-roi-table-four-column > div:first-child > div:last-child:hover {\n cursor: pointer;\n color: #444;\n}\n.igv-roi-table-four-column > .igv-roi-table-column-titles {\n height: 24px;\n display: flex;\n flex-flow: row;\n flex-wrap: nowrap;\n justify-content: stretch;\n align-items: stretch;\n padding-right: 16px;\n background-color: white;\n border-bottom-color: #7f7f7f;\n border-bottom-style: solid;\n border-bottom-width: thin;\n}\n.igv-roi-table-four-column > .igv-roi-table-column-titles > div {\n font-size: 14px;\n vertical-align: middle;\n line-height: 24px;\n text-align: center;\n margin-left: 4px;\n margin-right: 4px;\n height: 24px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.igv-roi-table-four-column > .igv-roi-table-column-titles > div:nth-child(1) {\n width: 25%;\n}\n.igv-roi-table-four-column > .igv-roi-table-column-titles > div:nth-child(2) {\n width: 20%;\n}\n.igv-roi-table-four-column > .igv-roi-table-column-titles > div:nth-child(3) {\n width: 20%;\n}\n.igv-roi-table-four-column > .igv-roi-table-column-titles > div:nth-child(4) {\n width: 35%;\n}\n.igv-roi-table-four-column > .igv-roi-table-row-container {\n resize: both;\n overflow: scroll;\n min-width: 512px;\n min-height: 72px;\n height: 144px;\n max-height: 480px;\n background-color: white;\n display: flex;\n flex-flow: column;\n flex-wrap: nowrap;\n justify-content: flex-start;\n align-items: stretch;\n}\n.igv-roi-table-four-column > .igv-roi-table-row-container > .igv-roi-table-row {\n height: 24px;\n display: flex;\n flex-flow: row;\n flex-wrap: nowrap;\n justify-content: stretch;\n align-items: stretch;\n}\n.igv-roi-table-four-column > .igv-roi-table-row-container > .igv-roi-table-row > div {\n font-size: 14px;\n vertical-align: middle;\n line-height: 24px;\n text-align: center;\n margin-left: 4px;\n margin-right: 4px;\n height: 24px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.igv-roi-table-four-column > .igv-roi-table-row-container > .igv-roi-table-row > div:nth-child(1) {\n width: 25%;\n}\n.igv-roi-table-four-column > .igv-roi-table-row-container > .igv-roi-table-row > div:nth-child(2) {\n width: 20%;\n}\n.igv-roi-table-four-column > .igv-roi-table-row-container > .igv-roi-table-row > div:nth-child(3) {\n width: 20%;\n}\n.igv-roi-table-four-column > .igv-roi-table-row-container > .igv-roi-table-row > div:nth-child(4) {\n width: 35%;\n}\n.igv-roi-table-four-column > .igv-roi-table-row-container > .igv-roi-table-row-hover {\n background-color: rgba(0, 0, 0, 0.04);\n}\n.igv-roi-table-four-column > div:last-child {\n height: 32px;\n line-height: 32px;\n border-top-color: #7f7f7f;\n border-top-style: solid;\n border-top-width: thin;\n border-bottom-color: transparent;\n border-bottom-left-radius: 4px;\n border-bottom-right-radius: 4px;\n border-bottom-width: 0;\n display: flex;\n flex-flow: row;\n flex-wrap: nowrap;\n justify-content: space-around;\n align-items: center;\n}\n\n.igv-roi-table-row-selected {\n background-color: rgba(0, 0, 0, 0.125);\n}\n\n.igv-roi-table-button {\n height: 20px;\n user-select: none;\n line-height: 20px;\n text-align: center;\n vertical-align: middle;\n font-family: \"Open Sans\", sans-serif;\n font-size: 13px;\n font-weight: 400;\n color: black;\n padding-left: 6px;\n padding-right: 6px;\n background-color: rgb(239, 239, 239);\n border-color: black;\n border-style: solid;\n border-width: thin;\n border-radius: 3px;\n}\n\n.igv-roi-table-button:hover {\n cursor: pointer;\n font-weight: 400;\n background-color: rgba(0, 0, 0, 0.13);\n}\n\n.igv-roi-region {\n z-index: 64;\n position: absolute;\n top: 0;\n bottom: 0;\n pointer-events: none;\n overflow: visible;\n margin-top: 44px;\n display: flex;\n flex-direction: column;\n flex-wrap: nowrap;\n justify-content: flex-start;\n align-items: stretch;\n}\n.igv-roi-region > div {\n position: relative;\n width: 100%;\n height: 8px;\n cursor: pointer;\n pointer-events: auto;\n}\n\n.igv-roi-menu {\n position: absolute;\n z-index: 1024;\n width: 144px;\n border-color: #7f7f7f;\n border-radius: 4px;\n border-style: solid;\n border-width: thin;\n font-family: \"Open Sans\", sans-serif;\n background-color: white;\n display: flex;\n flex-flow: column;\n flex-wrap: nowrap;\n justify-content: flex-start;\n align-items: stretch;\n}\n.igv-roi-menu > div:not(:last-child) {\n border-bottom-color: rgba(128, 128, 128, 0.5);\n border-bottom-style: solid;\n border-bottom-width: thin;\n}\n.igv-roi-menu > div:first-child {\n border-top-left-radius: 4px;\n border-top-right-radius: 4px;\n border-top-color: transparent;\n border-top-style: solid;\n border-top-width: 0;\n}\n.igv-roi-menu > div:last-child {\n border-bottom-left-radius: 4px;\n border-bottom-right-radius: 4px;\n border-bottom-color: transparent;\n border-bottom-style: solid;\n border-bottom-width: 0;\n}\n\n.igv-roi-menu-row {\n height: 24px;\n padding-left: 8px;\n font-size: small;\n text-align: start;\n vertical-align: middle;\n line-height: 24px;\n background-color: white;\n}\n\n.igv-roi-menu-row-edit-description {\n width: -webkit-fill-available;\n font-size: small;\n text-align: start;\n vertical-align: middle;\n background-color: white;\n padding-left: 4px;\n padding-right: 4px;\n padding-bottom: 4px;\n display: flex;\n flex-direction: column;\n flex-wrap: nowrap;\n justify-content: stretch;\n align-items: stretch;\n}\n.igv-roi-menu-row-edit-description > label {\n margin-left: 2px;\n margin-bottom: 0;\n display: block;\n width: -webkit-fill-available;\n}\n.igv-roi-menu-row-edit-description > input {\n display: block;\n margin-left: 2px;\n margin-right: 2px;\n margin-bottom: 1px;\n width: -webkit-fill-available;\n}\n\n.igv-container {\n position: relative;\n display: flex;\n flex-direction: column;\n flex-wrap: nowrap;\n justify-content: flex-start;\n align-items: flex-start;\n padding-top: 4px;\n user-select: none;\n -webkit-user-select: none;\n -ms-user-select: none;\n}\n\n.igv-viewport {\n position: relative;\n margin-top: 5px;\n overflow-x: hidden;\n overflow-y: hidden;\n}\n\n.igv-viewport-content {\n position: relative;\n width: 100%;\n}\n.igv-viewport-content > canvas {\n position: relative;\n display: block;\n}\n\n.igv-column-container {\n position: relative;\n display: flex;\n flex-direction: row;\n flex-wrap: nowrap;\n justify-content: flex-start;\n align-items: stretch;\n width: 100%;\n}\n\n.igv-column-shim {\n width: 1px;\n margin-left: 2px;\n margin-right: 2px;\n background-color: #545453;\n}\n\n.igv-column {\n position: relative;\n position: relative;\n display: flex;\n flex-direction: column;\n flex-wrap: nowrap;\n justify-content: flex-start;\n align-items: flex-start;\n box-sizing: border-box;\n height: 100%;\n}\n\n.igv-axis-column {\n position: relative;\n display: flex;\n flex-direction: column;\n flex-wrap: nowrap;\n justify-content: flex-start;\n align-items: flex-start;\n box-sizing: border-box;\n height: 100%;\n width: 50px;\n}\n.igv-axis-column > div {\n margin-top: 5px;\n width: 100%;\n}\n\n.igv-sample-name-column {\n position: relative;\n display: flex;\n flex-direction: column;\n flex-wrap: nowrap;\n justify-content: flex-start;\n align-items: flex-start;\n box-sizing: border-box;\n height: 100%;\n}\n\n.igv-scrollbar-column {\n position: relative;\n display: flex;\n flex-direction: column;\n flex-wrap: nowrap;\n justify-content: flex-start;\n align-items: flex-start;\n box-sizing: border-box;\n height: 100%;\n width: 14px;\n}\n.igv-scrollbar-column > div {\n position: relative;\n margin-top: 5px;\n width: 14px;\n}\n.igv-scrollbar-column > div > div {\n cursor: pointer;\n position: absolute;\n top: 0;\n left: 2px;\n width: 8px;\n border-width: 1px;\n border-style: solid;\n border-color: #c4c4c4;\n border-top-left-radius: 4px;\n border-top-right-radius: 4px;\n border-bottom-left-radius: 4px;\n border-bottom-right-radius: 4px;\n}\n.igv-scrollbar-column > div > div:hover {\n background-color: #c4c4c4;\n}\n\n.igv-track-drag-column {\n position: relative;\n display: flex;\n flex-direction: column;\n flex-wrap: nowrap;\n justify-content: flex-start;\n align-items: flex-start;\n box-sizing: border-box;\n height: 100%;\n width: 12px;\n background-color: white;\n}\n.igv-track-drag-column > .igv-track-drag-handle {\n z-index: 512;\n position: relative;\n cursor: pointer;\n margin-top: 5px;\n width: 100%;\n border-style: solid;\n border-width: 0;\n border-top-right-radius: 6px;\n border-bottom-right-radius: 6px;\n background-color: #c4c4c4;\n}\n.igv-track-drag-column .igv-track-drag-handle-hover {\n background-color: #787878;\n}\n.igv-track-drag-column > .igv-track-drag-shim {\n position: relative;\n margin-top: 5px;\n width: 100%;\n border-style: solid;\n border-width: 0;\n}\n\n.igv-gear-menu-column {\n position: relative;\n display: flex;\n flex-direction: column;\n flex-wrap: nowrap;\n justify-content: flex-start;\n align-items: flex-start;\n box-sizing: border-box;\n height: 100%;\n width: 28px;\n}\n.igv-gear-menu-column > div {\n display: flex;\n flex-direction: column;\n flex-wrap: nowrap;\n justify-content: flex-start;\n align-items: center;\n margin-top: 5px;\n width: 100%;\n background: white;\n}\n.igv-gear-menu-column > div > div {\n position: relative;\n margin-top: 4px;\n width: 16px;\n height: 16px;\n color: #7F7F7F;\n}\n.igv-gear-menu-column > div > div:hover {\n cursor: pointer;\n color: #444;\n}\n\n/*# sourceMappingURL=dom.css.map */\n';
|
|
70555
70546
|
var style = document.createElement('style');
|
|
70556
70547
|
style.setAttribute('type', 'text/css');
|
|
70557
70548
|
style.innerHTML = css;
|
|
@@ -70582,7 +70573,7 @@
|
|
|
70582
70573
|
setGoogleOauthToken,
|
|
70583
70574
|
setOauthToken,
|
|
70584
70575
|
oauth,
|
|
70585
|
-
version,
|
|
70576
|
+
version: version$1,
|
|
70586
70577
|
setApiKey,
|
|
70587
70578
|
doAutoscale,
|
|
70588
70579
|
TrackView
|