plotly.js 2.16.2 → 2.16.4

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.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * plotly.js v2.16.2
2
+ * plotly.js v2.16.4
3
3
  * Copyright 2012-2022, Plotly, Inc.
4
4
  * All rights reserved.
5
5
  * Licensed under the MIT license
@@ -108378,7 +108378,7 @@ module.exports = {
108378
108378
  calc: _dereq_('./calc'),
108379
108379
 
108380
108380
  // ./scales.js is required in lib/coerce.js ;
108381
- // it needs to be a separate module to avoid circular a dependency
108381
+ // it needs to be a separate module to avoid a circular dependency
108382
108382
  scales: scales.scales,
108383
108383
  defaultScale: scales.defaultScale,
108384
108384
  getScale: scales.get,
@@ -113680,7 +113680,17 @@ function createHoverText(hoverData, opts) {
113680
113680
  var xa = c0.xa;
113681
113681
  var ya = c0.ya;
113682
113682
  var axLetter = hovermode.charAt(0);
113683
- var t0 = c0[axLetter + 'Label'];
113683
+ var axLabel = axLetter + 'Label';
113684
+ var t0 = c0[axLabel];
113685
+
113686
+ // search in array for the label
113687
+ if(t0 === undefined && xa.type === 'multicategory') {
113688
+ for(var q = 0; q < hoverData.length; q++) {
113689
+ t0 = hoverData[q][axLabel];
113690
+ if(t0 !== undefined) break;
113691
+ }
113692
+ }
113693
+
113684
113694
  var outerContainerBB = getBoundingClientRect(gd, outerContainer);
113685
113695
  var outerTop = outerContainerBB.top;
113686
113696
  var outerWidth = outerContainerBB.width;
@@ -114859,7 +114869,7 @@ function getCoord(axLetter, winningPoint, fullLayout) {
114859
114869
 
114860
114870
  var cd0 = winningPoint.cd[0];
114861
114871
 
114862
- if(ax.type === 'category') val = ax._categoriesMap[val];
114872
+ if(ax.type === 'category' || ax.type === 'multicategory') val = ax._categoriesMap[val];
114863
114873
  else if(ax.type === 'date') {
114864
114874
  var periodalignment = winningPoint.trace[axLetter + 'periodalignment'];
114865
114875
  if(periodalignment) {
@@ -220457,11 +220467,12 @@ var ORDER = {
220457
220467
  nonCluster: ['fill', 'line', 'circle', 'symbol'],
220458
220468
  };
220459
220469
 
220460
- function ScatterMapbox(subplot, uid, clusterEnabled) {
220470
+ function ScatterMapbox(subplot, uid, clusterEnabled, isHidden) {
220461
220471
  this.type = 'scattermapbox';
220462
220472
  this.subplot = subplot;
220463
220473
  this.uid = uid;
220464
220474
  this.clusterEnabled = clusterEnabled;
220475
+ this.isHidden = isHidden;
220465
220476
 
220466
220477
  this.sourceIds = {
220467
220478
  fill: 'source-' + uid + '-fill',
@@ -220534,51 +220545,96 @@ proto.update = function update(calcTrace) {
220534
220545
  var map = subplot.map;
220535
220546
  var optsAll = convert(subplot.gd, calcTrace);
220536
220547
  var below = subplot.belowLookup['trace-' + this.uid];
220537
- var i, k, opts;
220538
220548
  var hasCluster = !!(trace.cluster && trace.cluster.enabled);
220539
220549
  var hadCluster = !!this.clusterEnabled;
220550
+ var lThis = this;
220540
220551
 
220541
- if(below !== this.below) {
220542
- var order = ORDER.nonCluster;
220543
-
220544
- for(i = order.length - 1; i >= 0; i--) {
220545
- k = order[i];
220546
- map.removeLayer(this.layerIds[k]);
220547
- }
220548
- for(i = 0; i < order.length; i++) {
220549
- k = order[i];
220550
- opts = optsAll[k];
220551
- this.addLayer(k, opts, below);
220552
+ function addCluster(noSource) {
220553
+ if(!noSource) lThis.addSource('circle', optsAll.circle, trace.cluster);
220554
+ var order = ORDER.cluster;
220555
+ for(var i = 0; i < order.length; i++) {
220556
+ var k = order[i];
220557
+ var opts = optsAll[k];
220558
+ lThis.addLayer(k, opts, below);
220552
220559
  }
220553
- this.below = below;
220554
- } else if(hasCluster && !hadCluster) {
220555
- for(i = ORDER.nonCluster.length - 1; i >= 0; i--) {
220556
- k = ORDER.nonCluster[i];
220557
- map.removeLayer(this.layerIds[k]);
220558
- map.removeSource(this.sourceIds[k]);
220560
+ }
220561
+
220562
+ function removeCluster(noSource) {
220563
+ var order = ORDER.cluster;
220564
+ for(var i = order.length - 1; i >= 0; i--) {
220565
+ var k = order[i];
220566
+ map.removeLayer(lThis.layerIds[k]);
220559
220567
  }
220560
- this.addSource('circle', optsAll.circle, trace.cluster);
220561
- for(i = 0; i < ORDER.cluster.length; i++) {
220562
- k = ORDER.cluster[i];
220563
- opts = optsAll[k];
220564
- this.addLayer(k, opts, below);
220568
+ if(!noSource) map.removeSource(lThis.sourceIds.circle);
220569
+ }
220570
+
220571
+ function addNonCluster(noSource) {
220572
+ var order = ORDER.nonCluster;
220573
+ for(var i = 0; i < order.length; i++) {
220574
+ var k = order[i];
220575
+ var opts = optsAll[k];
220576
+ if(!noSource) lThis.addSource(k, opts);
220577
+ lThis.addLayer(k, opts, below);
220565
220578
  }
220566
- this.clusterEnabled = hasCluster;
220567
- } else if(!hasCluster && hadCluster) {
220568
- for(i = 0; i < ORDER.cluster.length; i++) {
220569
- k = ORDER.cluster[i];
220570
- map.removeLayer(this.layerIds[k]);
220579
+ }
220580
+
220581
+ function removeNonCluster(noSource) {
220582
+ var order = ORDER.nonCluster;
220583
+ for(var i = order.length - 1; i >= 0; i--) {
220584
+ var k = order[i];
220585
+ map.removeLayer(lThis.layerIds[k]);
220586
+ if(!noSource) map.removeSource(lThis.sourceIds[k]);
220571
220587
  }
220572
- map.removeSource(this.sourceIds.circle);
220573
- for(i = 0; i < ORDER.nonCluster.length; i++) {
220574
- k = ORDER.nonCluster[i];
220575
- opts = optsAll[k];
220576
- this.addSource(k, opts, trace.cluster);
220577
- this.addLayer(k, opts, below);
220588
+ }
220589
+
220590
+ function remove(noSource) {
220591
+ if(hadCluster) removeCluster(noSource); else removeNonCluster(noSource);
220592
+ }
220593
+
220594
+ function add(noSource) {
220595
+ if(hasCluster) addCluster(noSource); else addNonCluster(noSource);
220596
+ }
220597
+
220598
+ function repaint() {
220599
+ var order = hasCluster ? ORDER.cluster : ORDER.nonCluster;
220600
+ for(var i = 0; i < order.length; i++) {
220601
+ var k = order[i];
220602
+ var opts = optsAll[k];
220603
+ if(!opts) continue;
220604
+
220605
+ subplot.setOptions(lThis.layerIds[k], 'setLayoutProperty', opts.layout);
220606
+
220607
+ if(opts.layout.visibility === 'visible') {
220608
+ if(k !== 'cluster') {
220609
+ lThis.setSourceData(k, opts);
220610
+ }
220611
+ subplot.setOptions(lThis.layerIds[k], 'setPaintProperty', opts.paint);
220612
+ }
220578
220613
  }
220579
- this.clusterEnabled = hasCluster;
220580
220614
  }
220581
220615
 
220616
+ var wasHidden = this.isHidden;
220617
+ var isHidden = trace.visible !== true;
220618
+
220619
+ if(isHidden) {
220620
+ if(!wasHidden) remove();
220621
+ } else if(wasHidden) {
220622
+ if(!isHidden) add();
220623
+ } else if(hadCluster !== hasCluster) {
220624
+ remove();
220625
+ add();
220626
+ } else if(this.below !== below) {
220627
+ remove(true);
220628
+ add(true);
220629
+ repaint();
220630
+ } else {
220631
+ repaint();
220632
+ }
220633
+
220634
+ this.clusterEnabled = hasCluster;
220635
+ this.isHidden = isHidden;
220636
+ this.below = below;
220637
+
220582
220638
  // link ref for quick update during selections
220583
220639
  calcTrace[0].trace._glTrace = this;
220584
220640
  };
@@ -220596,10 +220652,13 @@ proto.dispose = function dispose() {
220596
220652
  module.exports = function createScatterMapbox(subplot, calcTrace) {
220597
220653
  var trace = calcTrace[0].trace;
220598
220654
  var hasCluster = trace.cluster && trace.cluster.enabled;
220655
+ var isHidden = trace.visible !== true;
220656
+
220599
220657
  var scatterMapbox = new ScatterMapbox(
220600
220658
  subplot,
220601
220659
  trace.uid,
220602
- hasCluster
220660
+ hasCluster,
220661
+ isHidden
220603
220662
  );
220604
220663
 
220605
220664
  var optsAll = convert(subplot.gd, calcTrace);
@@ -233914,7 +233973,7 @@ function getSortFunc(opts, d2c) {
233914
233973
  'use strict';
233915
233974
 
233916
233975
  // package version injected by `npm run preprocess`
233917
- exports.version = '2.16.2';
233976
+ exports.version = '2.16.4';
233918
233977
 
233919
233978
  },{}],1133:[function(_dereq_,module,exports){
233920
233979
  (function (global){(function (){
package/dist/plotly.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * plotly.js v2.16.2
2
+ * plotly.js v2.16.4
3
3
  * Copyright 2012-2022, Plotly, Inc.
4
4
  * All rights reserved.
5
5
  * Licensed under the MIT license
@@ -107995,7 +107995,7 @@ module.exports = {
107995
107995
  calc: _dereq_('./calc'),
107996
107996
 
107997
107997
  // ./scales.js is required in lib/coerce.js ;
107998
- // it needs to be a separate module to avoid circular a dependency
107998
+ // it needs to be a separate module to avoid a circular dependency
107999
107999
  scales: scales.scales,
108000
108000
  defaultScale: scales.defaultScale,
108001
108001
  getScale: scales.get,
@@ -113183,7 +113183,17 @@ function createHoverText(hoverData, opts) {
113183
113183
  var xa = c0.xa;
113184
113184
  var ya = c0.ya;
113185
113185
  var axLetter = hovermode.charAt(0);
113186
- var t0 = c0[axLetter + 'Label'];
113186
+ var axLabel = axLetter + 'Label';
113187
+ var t0 = c0[axLabel];
113188
+
113189
+ // search in array for the label
113190
+ if(t0 === undefined && xa.type === 'multicategory') {
113191
+ for(var q = 0; q < hoverData.length; q++) {
113192
+ t0 = hoverData[q][axLabel];
113193
+ if(t0 !== undefined) break;
113194
+ }
113195
+ }
113196
+
113187
113197
  var outerContainerBB = getBoundingClientRect(gd, outerContainer);
113188
113198
  var outerTop = outerContainerBB.top;
113189
113199
  var outerWidth = outerContainerBB.width;
@@ -114362,7 +114372,7 @@ function getCoord(axLetter, winningPoint, fullLayout) {
114362
114372
 
114363
114373
  var cd0 = winningPoint.cd[0];
114364
114374
 
114365
- if(ax.type === 'category') val = ax._categoriesMap[val];
114375
+ if(ax.type === 'category' || ax.type === 'multicategory') val = ax._categoriesMap[val];
114366
114376
  else if(ax.type === 'date') {
114367
114377
  var periodalignment = winningPoint.trace[axLetter + 'periodalignment'];
114368
114378
  if(periodalignment) {
@@ -214829,11 +214839,12 @@ var ORDER = {
214829
214839
  nonCluster: ['fill', 'line', 'circle', 'symbol'],
214830
214840
  };
214831
214841
 
214832
- function ScatterMapbox(subplot, uid, clusterEnabled) {
214842
+ function ScatterMapbox(subplot, uid, clusterEnabled, isHidden) {
214833
214843
  this.type = 'scattermapbox';
214834
214844
  this.subplot = subplot;
214835
214845
  this.uid = uid;
214836
214846
  this.clusterEnabled = clusterEnabled;
214847
+ this.isHidden = isHidden;
214837
214848
 
214838
214849
  this.sourceIds = {
214839
214850
  fill: 'source-' + uid + '-fill',
@@ -214906,51 +214917,96 @@ proto.update = function update(calcTrace) {
214906
214917
  var map = subplot.map;
214907
214918
  var optsAll = convert(subplot.gd, calcTrace);
214908
214919
  var below = subplot.belowLookup['trace-' + this.uid];
214909
- var i, k, opts;
214910
214920
  var hasCluster = !!(trace.cluster && trace.cluster.enabled);
214911
214921
  var hadCluster = !!this.clusterEnabled;
214922
+ var lThis = this;
214912
214923
 
214913
- if(below !== this.below) {
214914
- var order = ORDER.nonCluster;
214915
-
214916
- for(i = order.length - 1; i >= 0; i--) {
214917
- k = order[i];
214918
- map.removeLayer(this.layerIds[k]);
214919
- }
214920
- for(i = 0; i < order.length; i++) {
214921
- k = order[i];
214922
- opts = optsAll[k];
214923
- this.addLayer(k, opts, below);
214924
+ function addCluster(noSource) {
214925
+ if(!noSource) lThis.addSource('circle', optsAll.circle, trace.cluster);
214926
+ var order = ORDER.cluster;
214927
+ for(var i = 0; i < order.length; i++) {
214928
+ var k = order[i];
214929
+ var opts = optsAll[k];
214930
+ lThis.addLayer(k, opts, below);
214924
214931
  }
214925
- this.below = below;
214926
- } else if(hasCluster && !hadCluster) {
214927
- for(i = ORDER.nonCluster.length - 1; i >= 0; i--) {
214928
- k = ORDER.nonCluster[i];
214929
- map.removeLayer(this.layerIds[k]);
214930
- map.removeSource(this.sourceIds[k]);
214932
+ }
214933
+
214934
+ function removeCluster(noSource) {
214935
+ var order = ORDER.cluster;
214936
+ for(var i = order.length - 1; i >= 0; i--) {
214937
+ var k = order[i];
214938
+ map.removeLayer(lThis.layerIds[k]);
214931
214939
  }
214932
- this.addSource('circle', optsAll.circle, trace.cluster);
214933
- for(i = 0; i < ORDER.cluster.length; i++) {
214934
- k = ORDER.cluster[i];
214935
- opts = optsAll[k];
214936
- this.addLayer(k, opts, below);
214940
+ if(!noSource) map.removeSource(lThis.sourceIds.circle);
214941
+ }
214942
+
214943
+ function addNonCluster(noSource) {
214944
+ var order = ORDER.nonCluster;
214945
+ for(var i = 0; i < order.length; i++) {
214946
+ var k = order[i];
214947
+ var opts = optsAll[k];
214948
+ if(!noSource) lThis.addSource(k, opts);
214949
+ lThis.addLayer(k, opts, below);
214937
214950
  }
214938
- this.clusterEnabled = hasCluster;
214939
- } else if(!hasCluster && hadCluster) {
214940
- for(i = 0; i < ORDER.cluster.length; i++) {
214941
- k = ORDER.cluster[i];
214942
- map.removeLayer(this.layerIds[k]);
214951
+ }
214952
+
214953
+ function removeNonCluster(noSource) {
214954
+ var order = ORDER.nonCluster;
214955
+ for(var i = order.length - 1; i >= 0; i--) {
214956
+ var k = order[i];
214957
+ map.removeLayer(lThis.layerIds[k]);
214958
+ if(!noSource) map.removeSource(lThis.sourceIds[k]);
214943
214959
  }
214944
- map.removeSource(this.sourceIds.circle);
214945
- for(i = 0; i < ORDER.nonCluster.length; i++) {
214946
- k = ORDER.nonCluster[i];
214947
- opts = optsAll[k];
214948
- this.addSource(k, opts, trace.cluster);
214949
- this.addLayer(k, opts, below);
214960
+ }
214961
+
214962
+ function remove(noSource) {
214963
+ if(hadCluster) removeCluster(noSource); else removeNonCluster(noSource);
214964
+ }
214965
+
214966
+ function add(noSource) {
214967
+ if(hasCluster) addCluster(noSource); else addNonCluster(noSource);
214968
+ }
214969
+
214970
+ function repaint() {
214971
+ var order = hasCluster ? ORDER.cluster : ORDER.nonCluster;
214972
+ for(var i = 0; i < order.length; i++) {
214973
+ var k = order[i];
214974
+ var opts = optsAll[k];
214975
+ if(!opts) continue;
214976
+
214977
+ subplot.setOptions(lThis.layerIds[k], 'setLayoutProperty', opts.layout);
214978
+
214979
+ if(opts.layout.visibility === 'visible') {
214980
+ if(k !== 'cluster') {
214981
+ lThis.setSourceData(k, opts);
214982
+ }
214983
+ subplot.setOptions(lThis.layerIds[k], 'setPaintProperty', opts.paint);
214984
+ }
214950
214985
  }
214951
- this.clusterEnabled = hasCluster;
214952
214986
  }
214953
214987
 
214988
+ var wasHidden = this.isHidden;
214989
+ var isHidden = trace.visible !== true;
214990
+
214991
+ if(isHidden) {
214992
+ if(!wasHidden) remove();
214993
+ } else if(wasHidden) {
214994
+ if(!isHidden) add();
214995
+ } else if(hadCluster !== hasCluster) {
214996
+ remove();
214997
+ add();
214998
+ } else if(this.below !== below) {
214999
+ remove(true);
215000
+ add(true);
215001
+ repaint();
215002
+ } else {
215003
+ repaint();
215004
+ }
215005
+
215006
+ this.clusterEnabled = hasCluster;
215007
+ this.isHidden = isHidden;
215008
+ this.below = below;
215009
+
214954
215010
  // link ref for quick update during selections
214955
215011
  calcTrace[0].trace._glTrace = this;
214956
215012
  };
@@ -214968,10 +215024,13 @@ proto.dispose = function dispose() {
214968
215024
  module.exports = function createScatterMapbox(subplot, calcTrace) {
214969
215025
  var trace = calcTrace[0].trace;
214970
215026
  var hasCluster = trace.cluster && trace.cluster.enabled;
215027
+ var isHidden = trace.visible !== true;
215028
+
214971
215029
  var scatterMapbox = new ScatterMapbox(
214972
215030
  subplot,
214973
215031
  trace.uid,
214974
- hasCluster
215032
+ hasCluster,
215033
+ isHidden
214975
215034
  );
214976
215035
 
214977
215036
  var optsAll = convert(subplot.gd, calcTrace);
@@ -227364,7 +227423,7 @@ function getSortFunc(opts, d2c) {
227364
227423
  'use strict';
227365
227424
 
227366
227425
  // package version injected by `npm run preprocess`
227367
- exports.version = '2.16.2';
227426
+ exports.version = '2.16.4';
227368
227427
 
227369
227428
  },{}],1133:[function(_dereq_,module,exports){
227370
227429
  (function (global){(function (){