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 (strict) v2.16.2
2
+ * plotly.js (strict) v2.16.4
3
3
  * Copyright 2012-2022, Plotly, Inc.
4
4
  * All rights reserved.
5
5
  * Licensed under the MIT license
@@ -107975,7 +107975,7 @@ module.exports = {
107975
107975
  calc: _dereq_('./calc'),
107976
107976
 
107977
107977
  // ./scales.js is required in lib/coerce.js ;
107978
- // it needs to be a separate module to avoid circular a dependency
107978
+ // it needs to be a separate module to avoid a circular dependency
107979
107979
  scales: scales.scales,
107980
107980
  defaultScale: scales.defaultScale,
107981
107981
  getScale: scales.get,
@@ -113163,7 +113163,17 @@ function createHoverText(hoverData, opts) {
113163
113163
  var xa = c0.xa;
113164
113164
  var ya = c0.ya;
113165
113165
  var axLetter = hovermode.charAt(0);
113166
- var t0 = c0[axLetter + 'Label'];
113166
+ var axLabel = axLetter + 'Label';
113167
+ var t0 = c0[axLabel];
113168
+
113169
+ // search in array for the label
113170
+ if(t0 === undefined && xa.type === 'multicategory') {
113171
+ for(var q = 0; q < hoverData.length; q++) {
113172
+ t0 = hoverData[q][axLabel];
113173
+ if(t0 !== undefined) break;
113174
+ }
113175
+ }
113176
+
113167
113177
  var outerContainerBB = getBoundingClientRect(gd, outerContainer);
113168
113178
  var outerTop = outerContainerBB.top;
113169
113179
  var outerWidth = outerContainerBB.width;
@@ -114342,7 +114352,7 @@ function getCoord(axLetter, winningPoint, fullLayout) {
114342
114352
 
114343
114353
  var cd0 = winningPoint.cd[0];
114344
114354
 
114345
- if(ax.type === 'category') val = ax._categoriesMap[val];
114355
+ if(ax.type === 'category' || ax.type === 'multicategory') val = ax._categoriesMap[val];
114346
114356
  else if(ax.type === 'date') {
114347
114357
  var periodalignment = winningPoint.trace[axLetter + 'periodalignment'];
114348
114358
  if(periodalignment) {
@@ -237811,11 +237821,12 @@ var ORDER = {
237811
237821
  nonCluster: ['fill', 'line', 'circle', 'symbol'],
237812
237822
  };
237813
237823
 
237814
- function ScatterMapbox(subplot, uid, clusterEnabled) {
237824
+ function ScatterMapbox(subplot, uid, clusterEnabled, isHidden) {
237815
237825
  this.type = 'scattermapbox';
237816
237826
  this.subplot = subplot;
237817
237827
  this.uid = uid;
237818
237828
  this.clusterEnabled = clusterEnabled;
237829
+ this.isHidden = isHidden;
237819
237830
 
237820
237831
  this.sourceIds = {
237821
237832
  fill: 'source-' + uid + '-fill',
@@ -237888,51 +237899,96 @@ proto.update = function update(calcTrace) {
237888
237899
  var map = subplot.map;
237889
237900
  var optsAll = convert(subplot.gd, calcTrace);
237890
237901
  var below = subplot.belowLookup['trace-' + this.uid];
237891
- var i, k, opts;
237892
237902
  var hasCluster = !!(trace.cluster && trace.cluster.enabled);
237893
237903
  var hadCluster = !!this.clusterEnabled;
237904
+ var lThis = this;
237894
237905
 
237895
- if(below !== this.below) {
237896
- var order = ORDER.nonCluster;
237897
-
237898
- for(i = order.length - 1; i >= 0; i--) {
237899
- k = order[i];
237900
- map.removeLayer(this.layerIds[k]);
237901
- }
237902
- for(i = 0; i < order.length; i++) {
237903
- k = order[i];
237904
- opts = optsAll[k];
237905
- this.addLayer(k, opts, below);
237906
+ function addCluster(noSource) {
237907
+ if(!noSource) lThis.addSource('circle', optsAll.circle, trace.cluster);
237908
+ var order = ORDER.cluster;
237909
+ for(var i = 0; i < order.length; i++) {
237910
+ var k = order[i];
237911
+ var opts = optsAll[k];
237912
+ lThis.addLayer(k, opts, below);
237906
237913
  }
237907
- this.below = below;
237908
- } else if(hasCluster && !hadCluster) {
237909
- for(i = ORDER.nonCluster.length - 1; i >= 0; i--) {
237910
- k = ORDER.nonCluster[i];
237911
- map.removeLayer(this.layerIds[k]);
237912
- map.removeSource(this.sourceIds[k]);
237914
+ }
237915
+
237916
+ function removeCluster(noSource) {
237917
+ var order = ORDER.cluster;
237918
+ for(var i = order.length - 1; i >= 0; i--) {
237919
+ var k = order[i];
237920
+ map.removeLayer(lThis.layerIds[k]);
237913
237921
  }
237914
- this.addSource('circle', optsAll.circle, trace.cluster);
237915
- for(i = 0; i < ORDER.cluster.length; i++) {
237916
- k = ORDER.cluster[i];
237917
- opts = optsAll[k];
237918
- this.addLayer(k, opts, below);
237922
+ if(!noSource) map.removeSource(lThis.sourceIds.circle);
237923
+ }
237924
+
237925
+ function addNonCluster(noSource) {
237926
+ var order = ORDER.nonCluster;
237927
+ for(var i = 0; i < order.length; i++) {
237928
+ var k = order[i];
237929
+ var opts = optsAll[k];
237930
+ if(!noSource) lThis.addSource(k, opts);
237931
+ lThis.addLayer(k, opts, below);
237919
237932
  }
237920
- this.clusterEnabled = hasCluster;
237921
- } else if(!hasCluster && hadCluster) {
237922
- for(i = 0; i < ORDER.cluster.length; i++) {
237923
- k = ORDER.cluster[i];
237924
- map.removeLayer(this.layerIds[k]);
237933
+ }
237934
+
237935
+ function removeNonCluster(noSource) {
237936
+ var order = ORDER.nonCluster;
237937
+ for(var i = order.length - 1; i >= 0; i--) {
237938
+ var k = order[i];
237939
+ map.removeLayer(lThis.layerIds[k]);
237940
+ if(!noSource) map.removeSource(lThis.sourceIds[k]);
237925
237941
  }
237926
- map.removeSource(this.sourceIds.circle);
237927
- for(i = 0; i < ORDER.nonCluster.length; i++) {
237928
- k = ORDER.nonCluster[i];
237929
- opts = optsAll[k];
237930
- this.addSource(k, opts, trace.cluster);
237931
- this.addLayer(k, opts, below);
237942
+ }
237943
+
237944
+ function remove(noSource) {
237945
+ if(hadCluster) removeCluster(noSource); else removeNonCluster(noSource);
237946
+ }
237947
+
237948
+ function add(noSource) {
237949
+ if(hasCluster) addCluster(noSource); else addNonCluster(noSource);
237950
+ }
237951
+
237952
+ function repaint() {
237953
+ var order = hasCluster ? ORDER.cluster : ORDER.nonCluster;
237954
+ for(var i = 0; i < order.length; i++) {
237955
+ var k = order[i];
237956
+ var opts = optsAll[k];
237957
+ if(!opts) continue;
237958
+
237959
+ subplot.setOptions(lThis.layerIds[k], 'setLayoutProperty', opts.layout);
237960
+
237961
+ if(opts.layout.visibility === 'visible') {
237962
+ if(k !== 'cluster') {
237963
+ lThis.setSourceData(k, opts);
237964
+ }
237965
+ subplot.setOptions(lThis.layerIds[k], 'setPaintProperty', opts.paint);
237966
+ }
237932
237967
  }
237933
- this.clusterEnabled = hasCluster;
237934
237968
  }
237935
237969
 
237970
+ var wasHidden = this.isHidden;
237971
+ var isHidden = trace.visible !== true;
237972
+
237973
+ if(isHidden) {
237974
+ if(!wasHidden) remove();
237975
+ } else if(wasHidden) {
237976
+ if(!isHidden) add();
237977
+ } else if(hadCluster !== hasCluster) {
237978
+ remove();
237979
+ add();
237980
+ } else if(this.below !== below) {
237981
+ remove(true);
237982
+ add(true);
237983
+ repaint();
237984
+ } else {
237985
+ repaint();
237986
+ }
237987
+
237988
+ this.clusterEnabled = hasCluster;
237989
+ this.isHidden = isHidden;
237990
+ this.below = below;
237991
+
237936
237992
  // link ref for quick update during selections
237937
237993
  calcTrace[0].trace._glTrace = this;
237938
237994
  };
@@ -237950,10 +238006,13 @@ proto.dispose = function dispose() {
237950
238006
  module.exports = function createScatterMapbox(subplot, calcTrace) {
237951
238007
  var trace = calcTrace[0].trace;
237952
238008
  var hasCluster = trace.cluster && trace.cluster.enabled;
238009
+ var isHidden = trace.visible !== true;
238010
+
237953
238011
  var scatterMapbox = new ScatterMapbox(
237954
238012
  subplot,
237955
238013
  trace.uid,
237956
- hasCluster
238014
+ hasCluster,
238015
+ isHidden
237957
238016
  );
237958
238017
 
237959
238018
  var optsAll = convert(subplot.gd, calcTrace);
@@ -250400,7 +250459,7 @@ function getSortFunc(opts, d2c) {
250400
250459
  'use strict';
250401
250460
 
250402
250461
  // package version injected by `npm run preprocess`
250403
- exports.version = '2.16.2';
250462
+ exports.version = '2.16.4';
250404
250463
 
250405
250464
  },{}],1151:[function(_dereq_,module,exports){
250406
250465
  (function (global){(function (){