@vizabi/bubblechart 0.0.4 → 0.0.11
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/build/assets/cursors/zoom-in.cur +0 -0
- package/build/assets/cursors/zoom-out.cur +0 -0
- package/build/bubblechart.css +3 -0
- package/build/bubblechart.js +138 -118
- package/build/bubblechart.js.map +1 -1
- package/build/stats.html +2513 -370
- package/package.json +3 -3
package/build/bubblechart.js
CHANGED
|
@@ -1,17 +1,37 @@
|
|
|
1
|
-
// https://github.com/vizabi/bubblechart#readme v0.0.
|
|
1
|
+
// https://github.com/vizabi/bubblechart#readme v0.0.11 build 1680128721323 Copyright 2023 Gapminder Foundation and contributors
|
|
2
2
|
(function (global, factory) {
|
|
3
|
-
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('
|
|
4
|
-
typeof define === 'function' && define.amd ? define(['
|
|
3
|
+
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('@vizabi/shared-components'), require('d3'), require('mobx')) :
|
|
4
|
+
typeof define === 'function' && define.amd ? define(['@vizabi/shared-components', 'd3', 'mobx'], factory) :
|
|
5
5
|
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.BubbleChart = factory(global.VizabiSharedComponents, global.d3, global.mobx));
|
|
6
|
-
})(this, (function (
|
|
6
|
+
})(this, (function (sharedComponents, d3, mobx) { 'use strict';
|
|
7
|
+
|
|
8
|
+
function _interopNamespace(e) {
|
|
9
|
+
if (e && e.__esModule) return e;
|
|
10
|
+
var n = Object.create(null);
|
|
11
|
+
if (e) {
|
|
12
|
+
Object.keys(e).forEach(function (k) {
|
|
13
|
+
if (k !== 'default') {
|
|
14
|
+
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
15
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
16
|
+
enumerable: true,
|
|
17
|
+
get: function () { return e[k]; }
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
n["default"] = e;
|
|
23
|
+
return Object.freeze(n);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
var d3__namespace = /*#__PURE__*/_interopNamespace(d3);
|
|
7
27
|
|
|
8
28
|
class PanZoom {
|
|
9
29
|
|
|
10
30
|
constructor(context) {
|
|
11
31
|
this.context = context;
|
|
12
32
|
|
|
13
|
-
this.dragRectangle =
|
|
14
|
-
this.zoomer =
|
|
33
|
+
this.dragRectangle = d3__namespace.drag();
|
|
34
|
+
this.zoomer = d3__namespace.zoom();
|
|
15
35
|
|
|
16
36
|
// this.dragLock = false;
|
|
17
37
|
|
|
@@ -55,8 +75,8 @@
|
|
|
55
75
|
}
|
|
56
76
|
|
|
57
77
|
return {
|
|
58
|
-
x:
|
|
59
|
-
y:
|
|
78
|
+
x: d3__namespace.pointer(event, this)[0],
|
|
79
|
+
y: d3__namespace.pointer(event, this)[1]
|
|
60
80
|
};
|
|
61
81
|
};
|
|
62
82
|
}
|
|
@@ -81,8 +101,8 @@
|
|
|
81
101
|
|
|
82
102
|
// self.dragLock = true;
|
|
83
103
|
this.origin = {
|
|
84
|
-
x:
|
|
85
|
-
y:
|
|
104
|
+
x: d3__namespace.pointer(event, this)[0],
|
|
105
|
+
y: d3__namespace.pointer(event, this)[1]
|
|
86
106
|
};
|
|
87
107
|
_this.DOM.zoomRect.classed("vzb-invisible", false);
|
|
88
108
|
},
|
|
@@ -111,8 +131,8 @@
|
|
|
111
131
|
.classed("vzb-invisible", true);
|
|
112
132
|
|
|
113
133
|
this.target = {
|
|
114
|
-
x:
|
|
115
|
-
y:
|
|
134
|
+
x: d3__namespace.pointer(event, this)[0],
|
|
135
|
+
y: d3__namespace.pointer(event, this)[1]
|
|
116
136
|
};
|
|
117
137
|
if (Math.abs(this.origin.x - this.target.x) < 10 || Math.abs(this.origin.y - this.target.y) < 10) return;
|
|
118
138
|
|
|
@@ -125,7 +145,7 @@
|
|
|
125
145
|
_this.ui.cursorMode === "plus";
|
|
126
146
|
|
|
127
147
|
self._zoomOnRectangle(
|
|
128
|
-
|
|
148
|
+
d3__namespace.select(this),
|
|
129
149
|
this.origin.x,
|
|
130
150
|
this.origin.y,
|
|
131
151
|
this.target.x,
|
|
@@ -245,7 +265,7 @@
|
|
|
245
265
|
}
|
|
246
266
|
|
|
247
267
|
//limit zoom translate
|
|
248
|
-
self.zoomSelection.property("__zoom",
|
|
268
|
+
self.zoomSelection.property("__zoom", d3__namespace.zoomIdentity.translate(pan[0], pan[1]).scale(zoom));
|
|
249
269
|
|
|
250
270
|
const xPanOffset = _this.width * zoom * ratioX;
|
|
251
271
|
const yPanOffset = _this.height * zoom * ratioY;
|
|
@@ -302,7 +322,7 @@
|
|
|
302
322
|
}
|
|
303
323
|
|
|
304
324
|
//zoomer.translate = pan;
|
|
305
|
-
//self.zoomSelection.property("__zoom",
|
|
325
|
+
//self.zoomSelection.property("__zoom", d3.zoomIdentity.translate(pan[0], pan[1]).scale(zoom));
|
|
306
326
|
|
|
307
327
|
/*
|
|
308
328
|
* Clamp the xRange and yRange by the amount that the bounds
|
|
@@ -369,7 +389,7 @@
|
|
|
369
389
|
}
|
|
370
390
|
|
|
371
391
|
const formatter = function(n) {
|
|
372
|
-
return
|
|
392
|
+
return sharedComponents.LegacyUtils.isDate(n) ? n : +n.toFixed(2);
|
|
373
393
|
};
|
|
374
394
|
|
|
375
395
|
const zoomedXRange = xRangeBoundsBumped;
|
|
@@ -453,12 +473,12 @@
|
|
|
453
473
|
if (!duration) duration = _this.duration;
|
|
454
474
|
|
|
455
475
|
//d3 extent returns min and max of the input array as [min, max]
|
|
456
|
-
const mmX =
|
|
457
|
-
const mmY =
|
|
476
|
+
const mmX = d3__namespace.extent(sharedComponents.LegacyUtils.values(_this.frame.x));
|
|
477
|
+
const mmY = d3__namespace.extent(sharedComponents.LegacyUtils.values(_this.frame.y));
|
|
458
478
|
|
|
459
479
|
//protection agains unreasonable min-max results -- abort function
|
|
460
480
|
if (!mmX[0] && mmX[0] !== 0 || !mmX[1] && mmX[1] !== 0 || !mmY[0] && mmY[0] !== 0 || !mmY[1] && mmY[1] !== 0) {
|
|
461
|
-
return
|
|
481
|
+
return sharedComponents.LegacyUtils.warn("panZoom.expandCanvas: X or Y min/max are broken. Aborting with no action");
|
|
462
482
|
}
|
|
463
483
|
/*
|
|
464
484
|
* Use a range bumped scale to correctly accommodate the range bump
|
|
@@ -553,7 +573,7 @@
|
|
|
553
573
|
_zoomOnRectangle(element, zoomedX1, zoomedY1, zoomedX2, zoomedY2, compensateDragging, duration, dontFeedToState) {
|
|
554
574
|
const _this = this.context;
|
|
555
575
|
const zoomer = this.zoomer;
|
|
556
|
-
const transform =
|
|
576
|
+
const transform = d3__namespace.zoomTransform(this.zoomSelection.node());
|
|
557
577
|
|
|
558
578
|
const x1 = zoomedX1;
|
|
559
579
|
const y1 = zoomedY1;
|
|
@@ -588,7 +608,7 @@
|
|
|
588
608
|
let zoom, ratioX, ratioY;
|
|
589
609
|
|
|
590
610
|
if (x1 == x2 || y1 == y2 || xRangeBoundsBumped[0] == xRangeBoundsBumped[1] || yRangeBoundsBumped[0] == yRangeBoundsBumped[1]) {
|
|
591
|
-
return
|
|
611
|
+
return sharedComponents.LegacyUtils.warn("_zoomOnRectangle(): can not proceed because this may result in infinity zooms");
|
|
592
612
|
}
|
|
593
613
|
|
|
594
614
|
if (Math.abs(x1 - x2) > Math.abs(y1 - y2)) {
|
|
@@ -633,7 +653,7 @@
|
|
|
633
653
|
zoomer.ratioX = ratioX || 1; //NaN defaults to 1
|
|
634
654
|
zoomer.duration = duration ? duration : 0;
|
|
635
655
|
|
|
636
|
-
this.zoomSelection.call(zoomer.transform,
|
|
656
|
+
this.zoomSelection.call(zoomer.transform, d3__namespace.zoomIdentity.translate(pan[0], pan[1]).scale(zoom));
|
|
637
657
|
}
|
|
638
658
|
|
|
639
659
|
/*
|
|
@@ -643,12 +663,12 @@
|
|
|
643
663
|
* function dblclicked() and what it refers to
|
|
644
664
|
*/
|
|
645
665
|
zoomByIncrement(event, direction, duration) {
|
|
646
|
-
const transform =
|
|
666
|
+
const transform = d3__namespace.zoomTransform(this.zoomSelection.node());
|
|
647
667
|
|
|
648
668
|
let ratio = transform.k;
|
|
649
669
|
const pan = [transform.x, transform.y];
|
|
650
670
|
|
|
651
|
-
const mouse =
|
|
671
|
+
const mouse = d3__namespace.pointer(event, this.zoomSelection.node());
|
|
652
672
|
let k = Math.log(ratio) / Math.LN2;
|
|
653
673
|
|
|
654
674
|
//change factor direction based on the input. default is no direction supplied
|
|
@@ -672,7 +692,7 @@
|
|
|
672
692
|
pan[1] += mouse[1] - locus[1];
|
|
673
693
|
|
|
674
694
|
this.zoomer.duration = duration || 0;
|
|
675
|
-
this.zoomSelection.call(this.zoomer.transform,
|
|
695
|
+
this.zoomSelection.call(this.zoomer.transform, d3__namespace.zoomIdentity.translate(pan[0], pan[1]).scale(ratio));
|
|
676
696
|
|
|
677
697
|
}
|
|
678
698
|
|
|
@@ -682,7 +702,7 @@
|
|
|
682
702
|
resetZoomState(element) {
|
|
683
703
|
this.zoomer.ratioY = 1;
|
|
684
704
|
this.zoomer.ratioX = 1;
|
|
685
|
-
(element || this.zoomSelection).property("__zoom",
|
|
705
|
+
(element || this.zoomSelection).property("__zoom", d3__namespace.zoomIdentity);
|
|
686
706
|
}
|
|
687
707
|
|
|
688
708
|
reset(element, duration) {
|
|
@@ -692,7 +712,7 @@
|
|
|
692
712
|
this.zoomer.ratioY = 1;
|
|
693
713
|
this.zoomer.ratioX = 1;
|
|
694
714
|
this.zoomer.duration = duration || 0;
|
|
695
|
-
(element || this.zoomSelection).call(this.zoomer.transform,
|
|
715
|
+
(element || this.zoomSelection).call(this.zoomer.transform, d3__namespace.zoomIdentity);
|
|
696
716
|
}
|
|
697
717
|
|
|
698
718
|
rerun(element) {
|
|
@@ -724,13 +744,13 @@
|
|
|
724
744
|
|
|
725
745
|
this.DOM.xAxisGroupsEl.classed("vzb-invisible", !showxAxisGroups);
|
|
726
746
|
if (showxAxisGroups) {
|
|
727
|
-
const axisGroupsData =
|
|
747
|
+
const axisGroupsData = sharedComponents.Utils.injectIndexes(uiSetting.xAxisGroups[this.MDL.x.data.concept]);
|
|
728
748
|
let xAxisGroups = this.DOM.xAxisGroupsEl.selectAll(".vzb-bc-x-axis-group").data(axisGroupsData);
|
|
729
749
|
|
|
730
750
|
xAxisGroups.exit().remove();
|
|
731
751
|
xAxisGroups = xAxisGroups.enter().append("g").attr("class", "vzb-bc-x-axis-group")
|
|
732
752
|
.each(function(){
|
|
733
|
-
const view =
|
|
753
|
+
const view = d3__namespace.select(this);
|
|
734
754
|
view.append("text").attr("class", "vzb-bc-x-axis-group-line").text("◆").style("text-anchor","middle");
|
|
735
755
|
view.append("text").attr("class", "vzb-bc-x-axis-group-text");
|
|
736
756
|
})
|
|
@@ -741,7 +761,7 @@
|
|
|
741
761
|
|
|
742
762
|
// first pass: calculate label text sizes and margins
|
|
743
763
|
xAxisGroups.each(function(d, i){
|
|
744
|
-
const view =
|
|
764
|
+
const view = d3__namespace.select(this);
|
|
745
765
|
|
|
746
766
|
const text = view.select("text.vzb-bc-x-axis-group-text")
|
|
747
767
|
.text(_this.localise(d.label));
|
|
@@ -751,8 +771,8 @@
|
|
|
751
771
|
calcs.textHeight = text.node().getBBox().height;
|
|
752
772
|
calcs.textWidth = text.node().getBBox().width;
|
|
753
773
|
|
|
754
|
-
calcs.boundaryMinX_px = _this.xScale(d.min || d.min === 0? d.min :
|
|
755
|
-
calcs.boundaryMaxX_px = _this.xScale(d.max || d.max === 0? d.max :
|
|
774
|
+
calcs.boundaryMinX_px = _this.xScale(d.min || d.min === 0? d.min : d3__namespace.min(_this.xScale.domain())) || 0;
|
|
775
|
+
calcs.boundaryMaxX_px = _this.xScale(d.max || d.max === 0? d.max : d3__namespace.max(_this.xScale.domain())) || 0;
|
|
756
776
|
|
|
757
777
|
calcs.centerX_px = (calcs.boundaryMinX_px + calcs.boundaryMaxX_px) / 2;
|
|
758
778
|
calcs.marginX_px = (Math.abs(calcs.boundaryMinX_px - calcs.boundaryMaxX_px) - calcs.textWidth) / 2;
|
|
@@ -765,7 +785,7 @@
|
|
|
765
785
|
// second pass: if at least one of labels doesn't fit, switch to compact mode and recalculate text sizes and margins
|
|
766
786
|
if (useShorterLabels) {
|
|
767
787
|
xAxisGroups.each(function(d, i){
|
|
768
|
-
const view =
|
|
788
|
+
const view = d3__namespace.select(this);
|
|
769
789
|
|
|
770
790
|
const text = view.select("text.vzb-bc-x-axis-group-text")
|
|
771
791
|
.text(_this.localise(d.label_short));
|
|
@@ -781,7 +801,7 @@
|
|
|
781
801
|
|
|
782
802
|
// third pass: actually put labels in places
|
|
783
803
|
xAxisGroups.each(function(d, i){
|
|
784
|
-
const view =
|
|
804
|
+
const view = d3__namespace.select(this);
|
|
785
805
|
|
|
786
806
|
const isFirst = (i == 0);
|
|
787
807
|
const isLast = (i == xAxisGroups_calcs.length - 1);
|
|
@@ -811,9 +831,9 @@
|
|
|
811
831
|
|
|
812
832
|
xAxisGroups.select("text.vzb-bc-x-axis-group-text").on("mouseenter", function(event, d) {
|
|
813
833
|
const calcs = xAxisGroups_calcs[d.i];
|
|
814
|
-
const parentView =
|
|
834
|
+
const parentView = d3__namespace.select(this.parentNode);
|
|
815
835
|
|
|
816
|
-
|
|
836
|
+
d3__namespace.select(this).attr("font-weight", "bold");
|
|
817
837
|
parentView.append("rect").lower()
|
|
818
838
|
.attr("x", calcs.boundaryMinX_px)
|
|
819
839
|
.attr("width", calcs.boundaryMaxX_px - calcs.boundaryMinX_px)
|
|
@@ -833,9 +853,9 @@
|
|
|
833
853
|
.attr("y2", _this.height);
|
|
834
854
|
|
|
835
855
|
}).on("mouseleave", function() {
|
|
836
|
-
const parentView =
|
|
856
|
+
const parentView = d3__namespace.select(this.parentNode);
|
|
837
857
|
|
|
838
|
-
|
|
858
|
+
d3__namespace.select(this).attr("font-weight", null);
|
|
839
859
|
parentView.selectAll("rect").remove();
|
|
840
860
|
parentView.selectAll("line").remove();
|
|
841
861
|
});
|
|
@@ -849,8 +869,8 @@
|
|
|
849
869
|
|
|
850
870
|
this.DOM.lineEqualXY.classed("vzb-invisible", !showLineEqualXY);
|
|
851
871
|
if (showLineEqualXY) {
|
|
852
|
-
const min =
|
|
853
|
-
const max =
|
|
872
|
+
const min = d3__namespace.min(this.yScale.domain().concat(this.xScale.domain()));
|
|
873
|
+
const max = d3__namespace.max(this.yScale.domain().concat(this.xScale.domain()));
|
|
854
874
|
|
|
855
875
|
this.DOM.lineEqualXY
|
|
856
876
|
.transition()
|
|
@@ -863,7 +883,7 @@
|
|
|
863
883
|
}
|
|
864
884
|
}
|
|
865
885
|
|
|
866
|
-
const {ICON_QUESTION} =
|
|
886
|
+
const {ICON_QUESTION} = sharedComponents.Icons;
|
|
867
887
|
const COLOR_WHITEISH = "rgb(253, 253, 253)";
|
|
868
888
|
|
|
869
889
|
const marginScaleH = (marginMin, ratio = 0) => height => marginMin + height * ratio;
|
|
@@ -881,7 +901,7 @@
|
|
|
881
901
|
leftMarginRatio: 1,
|
|
882
902
|
padding: 2,
|
|
883
903
|
minRadiusPx: 0.5,
|
|
884
|
-
maxRadiusPx: Math.max(0.5, MAX_RADIUS_EM *
|
|
904
|
+
maxRadiusPx: Math.max(0.5, MAX_RADIUS_EM * sharedComponents.LegacyUtils.hypotenuse(width, height)),
|
|
885
905
|
infoElHeight: 16,
|
|
886
906
|
yAxisTitleBottomMargin: 6,
|
|
887
907
|
xAxisTitleBottomMargin: 4
|
|
@@ -891,7 +911,7 @@
|
|
|
891
911
|
leftMarginRatio: 1.6,
|
|
892
912
|
padding: 2,
|
|
893
913
|
minRadiusPx: 1,
|
|
894
|
-
maxRadiusPx: Math.max(0.5, MAX_RADIUS_EM *
|
|
914
|
+
maxRadiusPx: Math.max(0.5, MAX_RADIUS_EM * sharedComponents.LegacyUtils.hypotenuse(width, height)),
|
|
895
915
|
infoElHeight: 20,
|
|
896
916
|
yAxisTitleBottomMargin: 3,
|
|
897
917
|
xAxisTitleBottomMargin: 4
|
|
@@ -901,7 +921,7 @@
|
|
|
901
921
|
leftMarginRatio: 1.8,
|
|
902
922
|
padding: 2,
|
|
903
923
|
minRadiusPx: 1,
|
|
904
|
-
maxRadiusPx: Math.max(0.5, MAX_RADIUS_EM *
|
|
924
|
+
maxRadiusPx: Math.max(0.5, MAX_RADIUS_EM * sharedComponents.LegacyUtils.hypotenuse(width, height)),
|
|
905
925
|
infoElHeight: 22,
|
|
906
926
|
yAxisTitleBottomMargin: 3,//marginScaleH(4, 0.01)(height),
|
|
907
927
|
xAxisTitleBottomMargin: marginScaleH(0, 0.01)(height),
|
|
@@ -919,18 +939,18 @@
|
|
|
919
939
|
LARGE: {
|
|
920
940
|
margin: { top: 30, bottom: marginScaleH(45, 0.03)(height), left: marginScaleW(35, 0.025)(width), right: 30 },
|
|
921
941
|
yAxisTitleBottomMargin: 3,//marginScaleH(4, 0.01)(height),
|
|
922
|
-
xAxisTitleBottomMargin: marginScaleH(-
|
|
942
|
+
xAxisTitleBottomMargin: marginScaleH(-10, 0.01)(height),
|
|
923
943
|
infoElHeight: 32,
|
|
924
944
|
hideSTitle: true
|
|
925
945
|
}
|
|
926
946
|
});
|
|
927
947
|
|
|
928
948
|
// BUBBLE CHART COMPONENT
|
|
929
|
-
class _VizabiBubbleChart extends
|
|
949
|
+
class _VizabiBubbleChart extends sharedComponents.Chart {
|
|
930
950
|
|
|
931
951
|
constructor(config) {
|
|
932
952
|
config.subcomponents = [{
|
|
933
|
-
type:
|
|
953
|
+
type: sharedComponents.Labels,
|
|
934
954
|
placeholder: ".vzb-bc-labels",
|
|
935
955
|
options: {
|
|
936
956
|
CSS_PREFIX: "vzb-bc",
|
|
@@ -940,7 +960,7 @@
|
|
|
940
960
|
},
|
|
941
961
|
name: "labels"
|
|
942
962
|
},{
|
|
943
|
-
type:
|
|
963
|
+
type: sharedComponents.DateTimeBackground,
|
|
944
964
|
placeholder: ".vzb-bc-date"
|
|
945
965
|
}];
|
|
946
966
|
|
|
@@ -1081,10 +1101,10 @@
|
|
|
1081
1101
|
this.decorations = new BCDecorations(this);
|
|
1082
1102
|
this._initInfoElements();
|
|
1083
1103
|
|
|
1084
|
-
this.scrollableAncestor =
|
|
1104
|
+
this.scrollableAncestor = sharedComponents.LegacyUtils.findScrollableAncestor(this.element);
|
|
1085
1105
|
|
|
1086
|
-
this.xAxis =
|
|
1087
|
-
this.yAxis =
|
|
1106
|
+
this.xAxis = sharedComponents.axisSmart("bottom");
|
|
1107
|
+
this.yAxis = sharedComponents.axisSmart("left");
|
|
1088
1108
|
|
|
1089
1109
|
this.axisTitleComplimentStrings = {Y: "", X: "", S: "", C: ""};
|
|
1090
1110
|
|
|
@@ -1096,7 +1116,7 @@
|
|
|
1096
1116
|
|
|
1097
1117
|
const _this = this;
|
|
1098
1118
|
//keyboard listeners
|
|
1099
|
-
|
|
1119
|
+
d3__namespace.select("body")
|
|
1100
1120
|
.on("keydown", (event) => {
|
|
1101
1121
|
if (_this.ui.cursorMode !== "arrow" && _this.ui.cursorMode !== "hand") return;
|
|
1102
1122
|
if (event.metaKey || event.ctrlKey) _this.DOM.chartSvgAll.classed("vzb-zoomin", true);
|
|
@@ -1138,14 +1158,14 @@
|
|
|
1138
1158
|
const dataNotesDialog = () => this.root.findChild({type: "DataNotes"});
|
|
1139
1159
|
const timeSlider = () => this.root.findChild({type: "TimeSlider"});
|
|
1140
1160
|
|
|
1141
|
-
|
|
1161
|
+
sharedComponents.LegacyUtils.setIcon(this.DOM.yInfoEl, ICON_QUESTION)
|
|
1142
1162
|
.on("click", () => {
|
|
1143
1163
|
dataNotesDialog().pin();
|
|
1144
1164
|
})
|
|
1145
1165
|
.on("mouseover", function() {
|
|
1146
1166
|
if (timeSlider().ui.dragging) return;
|
|
1147
1167
|
const rect = this.getBBox();
|
|
1148
|
-
const coord =
|
|
1168
|
+
const coord = sharedComponents.LegacyUtils.makeAbsoluteContext(this, this.farthestViewportElement)(rect.x - 10, rect.y + rect.height + 10);
|
|
1149
1169
|
const toolRect = _this.root.element.node().getBoundingClientRect();
|
|
1150
1170
|
const chartRect = _this.element.node().getBoundingClientRect();
|
|
1151
1171
|
dataNotesDialog()
|
|
@@ -1158,14 +1178,14 @@
|
|
|
1158
1178
|
dataNotesDialog().hide();
|
|
1159
1179
|
});
|
|
1160
1180
|
|
|
1161
|
-
|
|
1181
|
+
sharedComponents.LegacyUtils.setIcon(this.DOM.xInfoEl, ICON_QUESTION)
|
|
1162
1182
|
.on("click", () => {
|
|
1163
1183
|
dataNotesDialog().pin();
|
|
1164
1184
|
})
|
|
1165
1185
|
.on("mouseover", function() {
|
|
1166
1186
|
if (timeSlider().ui.dragging) return;
|
|
1167
1187
|
const rect = this.getBBox();
|
|
1168
|
-
const coord =
|
|
1188
|
+
const coord = sharedComponents.LegacyUtils.makeAbsoluteContext(this, this.farthestViewportElement)(rect.x - 10, rect.y + rect.height + 10);
|
|
1169
1189
|
const toolRect = _this.root.element.node().getBoundingClientRect();
|
|
1170
1190
|
const chartRect = _this.element.node().getBoundingClientRect();
|
|
1171
1191
|
dataNotesDialog()
|
|
@@ -1249,7 +1269,7 @@
|
|
|
1249
1269
|
.attr("patternContentUnits", "objectBoundingBox")
|
|
1250
1270
|
.html(d => d[1][colorConcept])
|
|
1251
1271
|
.each(function() {
|
|
1252
|
-
const svg =
|
|
1272
|
+
const svg = d3__namespace.select(this).select("svg");
|
|
1253
1273
|
if (svg.empty()) return;
|
|
1254
1274
|
|
|
1255
1275
|
if (!svg.attr("viewBox"))
|
|
@@ -1314,7 +1334,7 @@
|
|
|
1314
1334
|
.attr("id", d => `vzb-bc-bubble-${d[Symbol.for("key")]}-${this.id}`)
|
|
1315
1335
|
.style("opacity", d => d[Symbol.for("opacity")] = this._getBubbleOpacity(d))
|
|
1316
1336
|
.call(selection => {
|
|
1317
|
-
if(!
|
|
1337
|
+
if(!sharedComponents.LegacyUtils.isTouchDevice()){
|
|
1318
1338
|
selection
|
|
1319
1339
|
.on("mouseover", (event, d) => {
|
|
1320
1340
|
if (this.ui.cursorMode !== "arrow" && this.ui.cursorMode !== "hand") return;
|
|
@@ -1344,7 +1364,7 @@
|
|
|
1344
1364
|
const isTrail = isTrailBubble(d);
|
|
1345
1365
|
const isExtrapolated = d[Symbol.for("extrapolated")];
|
|
1346
1366
|
const headTrail = isTrail && !dataNext[Symbol.for("trailHeadKey")];
|
|
1347
|
-
const view =
|
|
1367
|
+
const view = d3__namespace.select(this);
|
|
1348
1368
|
const circle = view.select("circle");
|
|
1349
1369
|
const diagonalLine = view.select(".vzb-diagonal-line");
|
|
1350
1370
|
|
|
@@ -1356,7 +1376,7 @@
|
|
|
1356
1376
|
//d.hidden = (!valueS && valueS !== 0) || valueX == null || valueY == null;
|
|
1357
1377
|
|
|
1358
1378
|
//view.classed("vzb-hidden", d.hidden);
|
|
1359
|
-
d.r =
|
|
1379
|
+
d.r = sharedComponents.LegacyUtils.areaToRadius(_this.sScale(valueS || 0));
|
|
1360
1380
|
const scaledX = _this.xScale(valueX);
|
|
1361
1381
|
const scaledY = _this.yScale(valueY);
|
|
1362
1382
|
const scaledC = _this.__getColor(d[Symbol.for(isTrail ? "trailHeadKey" : "key")], valueC);
|
|
@@ -1417,7 +1437,7 @@
|
|
|
1417
1437
|
const headTrail = isTrail && !dataNext[Symbol.for("trailHeadKey")];
|
|
1418
1438
|
|
|
1419
1439
|
const valueS = d.size;
|
|
1420
|
-
d.r =
|
|
1440
|
+
d.r = sharedComponents.LegacyUtils.areaToRadius(_this.sScale(valueS || 0));
|
|
1421
1441
|
if (isTrail && d["frame"] < trailRedrawDate) return;
|
|
1422
1442
|
|
|
1423
1443
|
const valueX = d[_this._alias("x")];
|
|
@@ -1431,7 +1451,7 @@
|
|
|
1431
1451
|
const scaledY = _this.yScale(valueY);
|
|
1432
1452
|
const scaledC = _this.__getColor(d[Symbol.for(isTrail ? "trailHeadKey" : "key")], valueC);
|
|
1433
1453
|
|
|
1434
|
-
const group =
|
|
1454
|
+
const group = d3__namespace.select(this);
|
|
1435
1455
|
if (!duration || !headTrail) {
|
|
1436
1456
|
const circle = group.select("circle");
|
|
1437
1457
|
if (duration && !isTrail) {
|
|
@@ -1505,11 +1525,11 @@
|
|
|
1505
1525
|
const isTrail = isTrailBubble(d);
|
|
1506
1526
|
|
|
1507
1527
|
const view = duration && !isTrail ?
|
|
1508
|
-
|
|
1528
|
+
d3__namespace.select(this).transition(transition)
|
|
1509
1529
|
.duration(duration*0.9)
|
|
1510
1530
|
.style("opacity", 0)
|
|
1511
1531
|
:
|
|
1512
|
-
|
|
1532
|
+
d3__namespace.select(this).interrupt();
|
|
1513
1533
|
|
|
1514
1534
|
view
|
|
1515
1535
|
.remove();
|
|
@@ -1546,12 +1566,12 @@
|
|
|
1546
1566
|
const valueS = d.size;
|
|
1547
1567
|
const valueC = d.color;
|
|
1548
1568
|
|
|
1549
|
-
d.r =
|
|
1569
|
+
d.r = sharedComponents.LegacyUtils.areaToRadius(_this.sScale(valueS || 0));
|
|
1550
1570
|
const scaledX = _this.xScale(valueX);
|
|
1551
1571
|
const scaledY = _this.yScale(valueY);
|
|
1552
1572
|
const scaledC = _this.__getColor(d[Symbol.for(isTrail ? "trailHeadKey" : "key")], valueC);
|
|
1553
1573
|
|
|
1554
|
-
const group =
|
|
1574
|
+
const group = d3__namespace.select(this);
|
|
1555
1575
|
|
|
1556
1576
|
if (duration && headTrail) {
|
|
1557
1577
|
group.style("opacity", 0)
|
|
@@ -1620,7 +1640,7 @@
|
|
|
1620
1640
|
|
|
1621
1641
|
__getZoomed(type, zoomed, domain) {
|
|
1622
1642
|
//const zoomed = values[`zoomed${type}`];
|
|
1623
|
-
return
|
|
1643
|
+
return d3__namespace[type.toLowerCase()](zoomed !== null ? zoomed : domain);
|
|
1624
1644
|
}
|
|
1625
1645
|
|
|
1626
1646
|
__getZoomedMin(values, domain) {
|
|
@@ -1710,7 +1730,7 @@
|
|
|
1710
1730
|
PROFILE_CONSTANTS_FOR_PROJECTOR(this.elementWidth, this.elementHeight)
|
|
1711
1731
|
);
|
|
1712
1732
|
|
|
1713
|
-
if (!this.elementHeight || !this.elementWidth) return
|
|
1733
|
+
if (!this.elementHeight || !this.elementWidth) return sharedComponents.LegacyUtils.warn("Chart _updateProfile() abort: container is too little or has display:none");
|
|
1714
1734
|
}
|
|
1715
1735
|
|
|
1716
1736
|
_getDuration() {
|
|
@@ -1734,34 +1754,34 @@
|
|
|
1734
1754
|
|
|
1735
1755
|
this.strings = {
|
|
1736
1756
|
title: {
|
|
1737
|
-
Y:
|
|
1738
|
-
X:
|
|
1739
|
-
S:
|
|
1740
|
-
C:
|
|
1757
|
+
Y: sharedComponents.Utils.getConceptName(y, this.localise),
|
|
1758
|
+
X: sharedComponents.Utils.getConceptName(x, this.localise),
|
|
1759
|
+
S: sharedComponents.Utils.getConceptName(size, this.localise),
|
|
1760
|
+
C: sharedComponents.Utils.getConceptName(color, this.localise)
|
|
1741
1761
|
},
|
|
1742
1762
|
title_short: {
|
|
1743
|
-
Y:
|
|
1744
|
-
X:
|
|
1745
|
-
S:
|
|
1746
|
-
C:
|
|
1763
|
+
Y: sharedComponents.Utils.getConceptShortName(y, this.localise),
|
|
1764
|
+
X: sharedComponents.Utils.getConceptShortName(x, this.localise),
|
|
1765
|
+
S: sharedComponents.Utils.getConceptShortName(size, this.localise),
|
|
1766
|
+
C: sharedComponents.Utils.getConceptShortName(color, this.localise)
|
|
1747
1767
|
},
|
|
1748
1768
|
subtitle: {
|
|
1749
|
-
Y:
|
|
1750
|
-
X:
|
|
1769
|
+
Y: sharedComponents.Utils.getConceptNameMinusShortName(y, this.localise),
|
|
1770
|
+
X: sharedComponents.Utils.getConceptNameMinusShortName(x, this.localise)
|
|
1751
1771
|
},
|
|
1752
1772
|
unit: {
|
|
1753
|
-
Y:
|
|
1754
|
-
X:
|
|
1755
|
-
S:
|
|
1756
|
-
C:
|
|
1773
|
+
Y: sharedComponents.Utils.getConceptUnit(y),
|
|
1774
|
+
X: sharedComponents.Utils.getConceptUnit(x),
|
|
1775
|
+
S: sharedComponents.Utils.getConceptUnit(size),
|
|
1776
|
+
C: sharedComponents.Utils.getConceptUnit(color)
|
|
1757
1777
|
}
|
|
1758
1778
|
};
|
|
1759
1779
|
|
|
1760
1780
|
Promise.all([
|
|
1761
|
-
|
|
1762
|
-
|
|
1763
|
-
|
|
1764
|
-
|
|
1781
|
+
sharedComponents.Utils.getConceptNameCompliment(y),
|
|
1782
|
+
sharedComponents.Utils.getConceptNameCompliment(x),
|
|
1783
|
+
sharedComponents.Utils.getConceptNameCompliment(size),
|
|
1784
|
+
sharedComponents.Utils.getConceptNameCompliment(color)
|
|
1765
1785
|
]).then(mobx.action(response => {
|
|
1766
1786
|
[
|
|
1767
1787
|
this.axisTitleComplimentStrings.Y,
|
|
@@ -1776,7 +1796,7 @@
|
|
|
1776
1796
|
const treemenu = this.root.findChild({type: "TreeMenu"});
|
|
1777
1797
|
|
|
1778
1798
|
this.DOM.yTitleEl
|
|
1779
|
-
.classed("vzb-disabled", treemenu.state.ownReadiness !==
|
|
1799
|
+
.classed("vzb-disabled", treemenu.state.ownReadiness !== sharedComponents.Utils.STATUS.READY)
|
|
1780
1800
|
.on("click", () => {
|
|
1781
1801
|
treemenu
|
|
1782
1802
|
.encoding(this._alias("y"))
|
|
@@ -1787,7 +1807,7 @@
|
|
|
1787
1807
|
});
|
|
1788
1808
|
|
|
1789
1809
|
this.DOM.xTitleEl
|
|
1790
|
-
.classed("vzb-disabled", treemenu.state.ownReadiness !==
|
|
1810
|
+
.classed("vzb-disabled", treemenu.state.ownReadiness !== sharedComponents.Utils.STATUS.READY)
|
|
1791
1811
|
.on("click", () => {
|
|
1792
1812
|
treemenu
|
|
1793
1813
|
.encoding(this._alias("x"))
|
|
@@ -2022,7 +2042,7 @@
|
|
|
2022
2042
|
|
|
2023
2043
|
if (yInfoEl.select("svg").node()) {
|
|
2024
2044
|
const titleBBox = yTitleEl.node().getBBox();
|
|
2025
|
-
const t =
|
|
2045
|
+
const t = sharedComponents.LegacyUtils.transform(yTitleEl.node());
|
|
2026
2046
|
const hTranslate = isRTL ? (titleBBox.x + t.translateX - infoElHeight * 1.4) : (titleBBox.x + t.translateX + titleBBox.width + infoElHeight * 0.4);
|
|
2027
2047
|
const vTranslate = isRTL ? (t.translateY + infoElHeight * 1.4 + titleBBox.width * 0.5) : (t.translateY - infoElHeight * 0.4 - titleBBox.width * 0.5);
|
|
2028
2048
|
const conceptPropsY = y.data.conceptProps;
|
|
@@ -2039,7 +2059,7 @@
|
|
|
2039
2059
|
|
|
2040
2060
|
if (xInfoEl.select("svg").node()) {
|
|
2041
2061
|
const titleBBox = xTitleEl.node().getBBox();
|
|
2042
|
-
const t =
|
|
2062
|
+
const t = sharedComponents.LegacyUtils.transform(xTitleEl.node());
|
|
2043
2063
|
const hTranslate = isRTL ? (titleBBox.x + t.translateX - infoElHeight * 1.4) : (titleBBox.x + t.translateX + titleBBox.width + infoElHeight * 0.4);
|
|
2044
2064
|
const conceptPropsX = x.data.conceptProps;
|
|
2045
2065
|
|
|
@@ -2055,7 +2075,7 @@
|
|
|
2055
2075
|
_rangeBump(arg, undo) {
|
|
2056
2076
|
const bump = this.profileConstants.maxRadiusPx;
|
|
2057
2077
|
undo = undo ? -1 : 1;
|
|
2058
|
-
if (
|
|
2078
|
+
if (sharedComponents.LegacyUtils.isArray(arg) && arg.length > 1) {
|
|
2059
2079
|
let z1 = arg[0];
|
|
2060
2080
|
let z2 = arg[arg.length - 1];
|
|
2061
2081
|
|
|
@@ -2073,7 +2093,7 @@
|
|
|
2073
2093
|
} else ;
|
|
2074
2094
|
return [z1, z2];
|
|
2075
2095
|
}
|
|
2076
|
-
|
|
2096
|
+
sharedComponents.LegacyUtils.warn("rangeBump error: input is not an array or empty");
|
|
2077
2097
|
}
|
|
2078
2098
|
|
|
2079
2099
|
_updateSTitle(titleS, titleC) {
|
|
@@ -2116,9 +2136,9 @@
|
|
|
2116
2136
|
}
|
|
2117
2137
|
|
|
2118
2138
|
_getTransition(duration) {
|
|
2119
|
-
return duration ?
|
|
2139
|
+
return duration ? d3__namespace.transition()
|
|
2120
2140
|
.duration(duration)
|
|
2121
|
-
.ease(
|
|
2141
|
+
.ease(d3__namespace.easeLinear) : d3__namespace.transition();
|
|
2122
2142
|
}
|
|
2123
2143
|
|
|
2124
2144
|
_bubblesInteract() {
|
|
@@ -2166,11 +2186,11 @@
|
|
|
2166
2186
|
|
|
2167
2187
|
const extent = this.MDL.size.scale.extent || [0, 1];
|
|
2168
2188
|
|
|
2169
|
-
let minArea =
|
|
2170
|
-
let maxArea =
|
|
2189
|
+
let minArea = sharedComponents.LegacyUtils.radiusToArea(Math.max(maxRadiusPx * extent[0], minRadiusPx));
|
|
2190
|
+
let maxArea = sharedComponents.LegacyUtils.radiusToArea(Math.max(maxRadiusPx * extent[1], minRadiusPx));
|
|
2171
2191
|
|
|
2172
2192
|
let range = minArea === maxArea? [minArea, maxArea] :
|
|
2173
|
-
|
|
2193
|
+
d3__namespace.range(minArea, maxArea, (maxArea - minArea)/(this.sScale.domain().length - 1)).concat(maxArea);
|
|
2174
2194
|
|
|
2175
2195
|
this.sScale.range(range);
|
|
2176
2196
|
}
|
|
@@ -2408,7 +2428,7 @@
|
|
|
2408
2428
|
const _this = this;
|
|
2409
2429
|
const selectedFilter = this.MDL.selected.data.filter;
|
|
2410
2430
|
|
|
2411
|
-
if (
|
|
2431
|
+
if (sharedComponents.LegacyUtils.isTouchDevice()) {
|
|
2412
2432
|
_this.MDL.highlighted.data.filter.clear();
|
|
2413
2433
|
_this._labels.showCloseCross(null, false);
|
|
2414
2434
|
} else {
|
|
@@ -2479,7 +2499,7 @@
|
|
|
2479
2499
|
cache.labelX0 = trailData[this._alias("x")];
|
|
2480
2500
|
cache.labelY0 = trailData[this._alias("y")];
|
|
2481
2501
|
cache.scaledC0 = trailData.color != null ? this.cScale(trailData.color) : COLOR_WHITEISH,
|
|
2482
|
-
cache.scaledS0 = (trailData.size || trailData.size === 0) ?
|
|
2502
|
+
cache.scaledS0 = (trailData.size || trailData.size === 0) ? sharedComponents.LegacyUtils.areaToRadius(this.sScale(trailData.size)) : null;
|
|
2483
2503
|
cache.valueS0 = trailData.size;
|
|
2484
2504
|
trailData.hidden = hidden;
|
|
2485
2505
|
this._labels.updateLabel(trailData, cache, cache.labelX0, cache.labelY0, trailData.size, trailData.color, labelText, trailData.size_label, duration, showhide);
|
|
@@ -2489,7 +2509,7 @@
|
|
|
2489
2509
|
cache.labelX0 = x;
|
|
2490
2510
|
cache.labelY0 = y;
|
|
2491
2511
|
cache.scaledC0 = d.color != null ? this.cScale(d.color) : COLOR_WHITEISH,
|
|
2492
|
-
cache.scaledS0 = (d.size || d.size === 0) ?
|
|
2512
|
+
cache.scaledS0 = (d.size || d.size === 0) ? sharedComponents.LegacyUtils.areaToRadius(this.sScale(d.size)) : null;
|
|
2493
2513
|
cache.valueS0 = d.size;
|
|
2494
2514
|
d.hidden = hidden;
|
|
2495
2515
|
this._labels.updateLabel(d, cache, x, y, d.size, d.color, labelText, d.size_label, duration, showhide);
|
|
@@ -2520,7 +2540,7 @@
|
|
|
2520
2540
|
cache.labelX0 = d[this._alias("x")];
|
|
2521
2541
|
cache.labelY0 = d[this._alias("y")];
|
|
2522
2542
|
cache.scaledC0 = d.color != null ? this.cScale(d.color) : COLOR_WHITEISH,
|
|
2523
|
-
cache.scaledS0 = (d.size || d.size === 0) ?
|
|
2543
|
+
cache.scaledS0 = (d.size || d.size === 0) ? sharedComponents.LegacyUtils.areaToRadius(this.sScale(d.size)) : null;
|
|
2524
2544
|
cache.valueS0 = d.size;
|
|
2525
2545
|
cache.initTextBBox = null;
|
|
2526
2546
|
cache.initFontSize = null;
|
|
@@ -2532,7 +2552,7 @@
|
|
|
2532
2552
|
if (typeof d.label == "object")
|
|
2533
2553
|
return Object.entries(d.label)
|
|
2534
2554
|
.filter(entry => entry[0] != this.MDL.frame.data.concept)
|
|
2535
|
-
.map(entry =>
|
|
2555
|
+
.map(entry => sharedComponents.LegacyUtils.isNumber(entry[1]) ? (entry[0] + ": " + entry[1]) : entry[1])
|
|
2536
2556
|
.join(", ");
|
|
2537
2557
|
if (d.label != null) return "" + d.label;
|
|
2538
2558
|
return d[Symbol.for("key")];
|
|
@@ -2595,9 +2615,9 @@
|
|
|
2595
2615
|
"cScale": mobx.computed
|
|
2596
2616
|
});
|
|
2597
2617
|
|
|
2598
|
-
|
|
2618
|
+
sharedComponents.Chart.add("bubblechart", VizabiBubbleChart);
|
|
2599
2619
|
|
|
2600
|
-
class BubbleChart extends
|
|
2620
|
+
class BubbleChart extends sharedComponents.BaseComponent {
|
|
2601
2621
|
|
|
2602
2622
|
constructor(config){
|
|
2603
2623
|
|
|
@@ -2613,7 +2633,7 @@
|
|
|
2613
2633
|
config.name = "bubblechart";
|
|
2614
2634
|
|
|
2615
2635
|
config.subcomponents = [{
|
|
2616
|
-
type:
|
|
2636
|
+
type: sharedComponents.Repeater,
|
|
2617
2637
|
placeholder: ".vzb-repeater",
|
|
2618
2638
|
model: marker,
|
|
2619
2639
|
options: {
|
|
@@ -2622,48 +2642,48 @@
|
|
|
2622
2642
|
},
|
|
2623
2643
|
name: "chart",
|
|
2624
2644
|
},{
|
|
2625
|
-
type:
|
|
2645
|
+
type: sharedComponents.TimeSlider,
|
|
2626
2646
|
placeholder: ".vzb-timeslider",
|
|
2627
2647
|
model: marker,
|
|
2628
2648
|
name: "time-slider"
|
|
2629
2649
|
},{
|
|
2630
|
-
type:
|
|
2650
|
+
type: sharedComponents.SteppedSlider,
|
|
2631
2651
|
placeholder: ".vzb-speedslider",
|
|
2632
2652
|
model: marker,
|
|
2633
2653
|
name: "speed-slider"
|
|
2634
2654
|
},{
|
|
2635
|
-
type:
|
|
2655
|
+
type: sharedComponents.TreeMenu,
|
|
2636
2656
|
placeholder: ".vzb-treemenu",
|
|
2637
2657
|
model: marker,
|
|
2638
2658
|
name: "tree-menu"
|
|
2639
2659
|
},{
|
|
2640
|
-
type:
|
|
2660
|
+
type: sharedComponents.DataWarning,
|
|
2641
2661
|
placeholder: ".vzb-datawarning",
|
|
2642
2662
|
options: {button: ".vzb-datawarning-button"},
|
|
2643
2663
|
model: marker,
|
|
2644
2664
|
name: "data-warning"
|
|
2645
2665
|
},{
|
|
2646
|
-
type:
|
|
2666
|
+
type: sharedComponents.DataNotes,
|
|
2647
2667
|
placeholder: ".vzb-datanotes",
|
|
2648
2668
|
model: marker
|
|
2649
2669
|
},{
|
|
2650
|
-
type:
|
|
2670
|
+
type: sharedComponents.Dialogs,
|
|
2651
2671
|
placeholder: ".vzb-dialogs",
|
|
2652
2672
|
model: marker,
|
|
2653
2673
|
name: "dialogs"
|
|
2654
2674
|
},{
|
|
2655
|
-
type:
|
|
2675
|
+
type: sharedComponents.ButtonList,
|
|
2656
2676
|
placeholder: ".vzb-buttonlist",
|
|
2657
2677
|
model: marker,
|
|
2658
2678
|
name: "buttons"
|
|
2659
2679
|
},{
|
|
2660
|
-
type:
|
|
2680
|
+
type: sharedComponents.SpaceConfig,
|
|
2661
2681
|
placeholder: ".vzb-spaceconfig",
|
|
2662
2682
|
options: {button: ".vzb-spaceconfig-button"},
|
|
2663
2683
|
model: marker,
|
|
2664
2684
|
name: "space-config"
|
|
2665
2685
|
},{
|
|
2666
|
-
type:
|
|
2686
|
+
type: sharedComponents.ErrorMessage,
|
|
2667
2687
|
placeholder: ".vzb-errormessage",
|
|
2668
2688
|
model: marker,
|
|
2669
2689
|
name: "error-message"
|
|
@@ -2687,9 +2707,9 @@
|
|
|
2687
2707
|
`;
|
|
2688
2708
|
|
|
2689
2709
|
config.services = {
|
|
2690
|
-
Vizabi: new
|
|
2691
|
-
locale: new
|
|
2692
|
-
layout: new
|
|
2710
|
+
Vizabi: new sharedComponents.CapitalVizabiService({Vizabi: config.Vizabi}),
|
|
2711
|
+
locale: new sharedComponents.LocaleService(config.locale),
|
|
2712
|
+
layout: new sharedComponents.LayoutService(config.layout)
|
|
2693
2713
|
};
|
|
2694
2714
|
|
|
2695
2715
|
super(config);
|
|
@@ -2751,7 +2771,7 @@
|
|
|
2751
2771
|
}
|
|
2752
2772
|
});
|
|
2753
2773
|
|
|
2754
|
-
BubbleChart.versionInfo = { version: "0.0.
|
|
2774
|
+
BubbleChart.versionInfo = { version: "0.0.11", build: 1680128721323, package: {"homepage":"https://github.com/vizabi/bubblechart#readme","name":"@vizabi/bubblechart","description":"Vizabi bubble chart"}, sharedComponents: sharedComponents.versionInfo};
|
|
2755
2775
|
|
|
2756
2776
|
return BubbleChart;
|
|
2757
2777
|
|