@vizabi/bubblechart 4.1.1 → 4.1.2

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,4 +1,4 @@
1
- // https://github.com/vizabi/bubblechart#readme v4.1.1 build 1701881435565 Copyright 2023 Gapminder Foundation and contributors
1
+ // https://github.com/vizabi/bubblechart#readme v4.1.2 build 1702316063775 Copyright 2023 Gapminder Foundation and contributors
2
2
  (function (global, factory) {
3
3
  typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@vizabi/shared-components'), require('d3'), require('mobx')) :
4
4
  typeof define === 'function' && define.amd ? define(['exports', '@vizabi/shared-components', 'd3', 'mobx'], factory) :
@@ -2310,8 +2310,8 @@
2310
2310
  }
2311
2311
 
2312
2312
  const tooltipCache = {};
2313
- tooltipCache.labelX0 = this.xScale.invert(x);
2314
- tooltipCache.labelY0 = this.yScale.invert(y);
2313
+ tooltipCache.labelX0 = this.xScale.invert ? this.xScale.invert(x) : d.x;
2314
+ tooltipCache.labelY0 = this.yScale.invert ? this.yScale.invert(y) : d.y;
2315
2315
  tooltipCache.scaledS0 = s;
2316
2316
  tooltipCache.scaledC0 = null;
2317
2317
 
@@ -2878,7 +2878,7 @@
2878
2878
  }
2879
2879
  });
2880
2880
 
2881
- BubbleChart.versionInfo = { version: "4.1.1", build: 1701881435565, package: {"homepage":"https://github.com/vizabi/bubblechart#readme","name":"@vizabi/bubblechart","description":"Vizabi bubble chart"}, sharedComponents: sharedComponents.versionInfo};
2881
+ BubbleChart.versionInfo = { version: "4.1.2", build: 1702316063775, package: {"homepage":"https://github.com/vizabi/bubblechart#readme","name":"@vizabi/bubblechart","description":"Vizabi bubble chart"}, sharedComponents: sharedComponents.versionInfo};
2882
2882
 
2883
2883
  exports.Base = BubbleChart;
2884
2884
 
@@ -1 +1 @@
1
- {"version":3,"file":"bubblechart.js","sources":["../src/panzoom.js","../src/axistitles.js","../src/decorations.js","../src/bubblechart-cmp.js","../src/bubblechart-tool.js"],"sourcesContent":["import {\n LegacyUtils as utils,\n} from \"@vizabi/shared-components\";\nimport * as d3 from \"d3\";\n\nexport default class PanZoom {\n\n constructor(context) {\n this.context = context;\n\n this.dragRectangle = d3.drag();\n this.zoomer = d3.zoom();\n\n // this.dragLock = false;\n\n this.dragRectangle\n .filter(event => !event.button)\n .subject(this.dragSubject())\n .on(\"start\", this.drag().start)\n .on(\"drag\", this.drag().go)\n .on(\"end\", this.drag().stop);\n\n this.zoomer\n .filter(this.zoomFilter())\n .scaleExtent([0.0625, +Infinity])\n .on(\"start\", this.zoom().start)\n .on(\"zoom\", this.zoom().go)\n .on(\"end\", this.zoom().stop);\n\n this.zoomer.ratioX = 1;\n this.zoomer.ratioY = 1;\n\n this.context._zoomedXYMinMax = {\n x: { zoomedMin: null, zoomedMax: null },\n y: { zoomedMin: null, zoomedMax: null }\n };\n }\n\n dragSubject() {\n const _this = this.context;\n\n return function(event) {\n /*\n * Do not drag if the Ctrl key, Meta key, or plus cursor mode is\n * not enabled. Also do not drag if zoom-pinching on touchmove\n * events.\n */\n if (!(event.sourceEvent.ctrlKey || event.sourceEvent.metaKey ||\n _this.ui.cursorMode === \"plus\") || (_this.ui.cursorMode === \"minus\") ||\n (event.sourceEvent.type === \"touchmove\" || event.sourceEvent.type === \"touchstart\") &&\n (event.sourceEvent.touches.length > 1 || event.sourceEvent.targetTouches.length > 1)) {\n return null;\n }\n\n return {\n x: d3.pointer(event, this)[0],\n y: d3.pointer(event, this)[1]\n };\n };\n }\n\n drag() {\n const _this = this.context;\n const self = this;\n\n return {\n start(event) {\n /*\n * Do not drag if the Ctrl key, Meta key, or plus cursor mode is\n * not enabled. Also do not drag if zoom-pinching on touchmove\n * events.\n */\n // if(!(event.sourceEvent.ctrlKey || event.sourceEvent.metaKey ||\n // _this.ui.cursorMode === \"plus\") ||\n // (event.sourceEvent.type === \"touchmove\" || event.sourceEvent.type === \"touchstart\") &&\n // (event.sourceEvent.touches.length > 1 || event.sourceEvent.targetTouches.length > 1)) {\n // return;\n // }\n\n // self.dragLock = true;\n this.origin = {\n x: d3.pointer(event, this)[0],\n y: d3.pointer(event, this)[1]\n };\n _this.DOM.zoomRect.classed(\"vzb-invisible\", false);\n },\n\n go(event) {\n const origin = this.origin;\n const mouse = {\n x: event.x,\n y: event.y\n };\n\n _this.DOM.zoomRect\n .attr(\"x\", Math.min(mouse.x, origin.x))\n .attr(\"y\", Math.min(mouse.y, origin.y))\n .attr(\"width\", Math.abs(mouse.x - origin.x))\n .attr(\"height\", Math.abs(mouse.y - origin.y));\n },\n\n stop(event) {\n // if (!self.dragLock) return;\n // self.dragLock = false;\n\n _this.DOM.zoomRect\n .attr(\"width\", 0)\n .attr(\"height\", 0)\n .classed(\"vzb-invisible\", true);\n\n this.target = {\n x: d3.pointer(event, this)[0],\n y: d3.pointer(event, this)[1]\n };\n if (Math.abs(this.origin.x - this.target.x) < 10 || Math.abs(this.origin.y - this.target.y) < 10) return;\n\n /*\n * Only compensate for dragging when the Ctrl key or Meta key\n * are pressed, or if the cursorMode is not in plus mode.\n */\n const compensateDragging = event.sourceEvent.ctrlKey ||\n event.sourceEvent.metaKey ||\n _this.ui.cursorMode === \"plus\";\n\n self._zoomOnRectangle(\n d3.select(this),\n this.origin.x,\n this.origin.y,\n this.target.x,\n this.target.y,\n compensateDragging, 500\n );\n }\n };\n }\n\n zoomFilter() {\n const _this = this.context;\n\n return function(event) {\n\n if (event.ctrlKey || event.metaKey) return false;\n\n // Cancel drag lock when zoom-pinching via touchmove events.\n if ((event.type === \"touchmove\" || event.type === \"touchstart\") &&\n (event.touches.length > 1 || event.targetTouches.length > 1)) return true;\n\n if ((event.type === \"wheel\" || event.type === \"mousewheel\") &&\n _this.ui.zoomOnScrolling) {\n return true;\n }\n\n if ((event.type === \"mousedown\" || event.type === \"touchstart\") &&\n (_this.ui.cursorMode !== \"plus\") && (_this.ui.cursorMode !== \"minus\") &&\n (_this.ui.panWithArrow || _this.ui.cursorMode === \"hand\")) return true;\n\n return false;\n };\n }\n\n zoom() {\n const _this = this.context;\n const zoomer = this.zoomer;\n const self = this;\n\n return {\n start() {\n //this.savedScale = zoomer.scale;\n if ((_this.ui.cursorMode !== \"plus\") && (_this.ui.cursorMode !== \"minus\")) {\n _this.DOM.chartSvg.classed(\"vzb-zooming\", true);\n }\n\n },\n go(event) {\n\n const sourceEvent = event.sourceEvent;\n\n let zoom = event.transform.k;\n\n let pan = [event.transform.x, event.transform.y];//event.translate;\n let ratioY = zoomer.ratioY;\n let ratioX = zoomer.ratioX;\n\n _this.draggingNow = true;\n\n //value protections and fallbacks\n if (isNaN(zoom) || zoom == null) zoom = zoomer.scale;\n if (isNaN(zoom) || zoom == null) zoom = 1;\n\n //TODO: this is a patch to fix #221. A proper code review of zoom and zoomOnRectangle logic is needed\n /*\n * Mouse wheel and touchmove events set the zoom value\n * independently of axis ratios. If the zoom event was triggered\n * by a mouse wheel event scrolling down or touchmove event with\n * more than 1 contact that sets zoom to 1, then set the axis\n * ratios to 1 as well, which will fully zoom out.\n */\n if (zoom === 1 && sourceEvent !== null &&\n ((sourceEvent.type === \"wheel\" || sourceEvent.type === \"mousewheel\") && (sourceEvent.deltaY || -sourceEvent.wheelDelta) > 0 ||\n sourceEvent.type === \"touchmove\" && sourceEvent.touches.length > 1)) {\n zoomer.ratioX = 1;\n ratioX = 1;\n zoomer.ratioY = 1;\n ratioY = 1;\n }\n\n if (isNaN(pan[0]) || isNaN(pan[1]) || pan[0] == null || pan[1] == null) pan = [0, 0];\n\n // limit the zooming, so that it never goes below min value of zoom for any of the axes\n const minZoomScale = zoomer.scaleExtent()[0];\n if (zoom * ratioY < minZoomScale) {\n ratioY = minZoomScale / zoom;\n zoomer.ratioY = ratioY;\n }\n if (zoom * ratioX < minZoomScale) {\n ratioX = minZoomScale / zoom;\n zoomer.ratioX = ratioX;\n }\n\n const zoomXOut = zoom * ratioX < 1;\n const zoomYOut = zoom * ratioY < 1;\n\n //limit the panning, so that we are never outside the possible range\n if (!zoomXOut) {\n if (pan[0] > 0) pan[0] = 0;\n if (pan[0] < (1 - zoom * ratioX) * _this.width) pan[0] = (1 - zoom * ratioX) * _this.width;\n } else {\n if (pan[0] < 0) pan[0] = 0;\n if (pan[0] > (1 - zoom * ratioX) * _this.width) pan[0] = (1 - zoom * ratioX) * _this.width;\n }\n\n if (!zoomYOut) {\n if (pan[1] > 0) pan[1] = 0;\n if (pan[1] < (1 - zoom * ratioY) * _this.height) pan[1] = (1 - zoom * ratioY) * _this.height;\n } else {\n if (pan[1] < 0) pan[1] = 0;\n if (pan[1] > (1 - zoom * ratioY) * _this.height) pan[1] = (1 - zoom * ratioY) * _this.height;\n }\n\n //limit zoom translate\n self.zoomSelection.property(\"__zoom\", d3.zoomIdentity.translate(pan[0], pan[1]).scale(zoom));\n\n const xPanOffset = _this.width * zoom * ratioX;\n const yPanOffset = _this.height * zoom * ratioY;\n\n const xRange = [0 * zoom * ratioX + pan[0], xPanOffset + pan[0]];\n const yRange = [yPanOffset + pan[1], 0 * zoom * ratioY + pan[1]];\n\n const xRangeBumped = _this._rangeBump(xRange);\n const yRangeBumped = _this._rangeBump(yRange);\n\n /*\n * Shift xRange and yRange by the difference between the bumped\n * ranges, which is scaled by the zoom factor. This accounts for\n * the range bump, which controls a gutter around the\n * bubblechart, while correctly zooming.\n */\n const xRangeMinOffset = (xRangeBumped[0] - xRange[0]) * zoom * ratioX;\n const xRangeMaxOffset = (xRangeBumped[1] - xRange[1]) * zoom * ratioX;\n\n const yRangeMinOffset = (yRangeBumped[0] - yRange[0]) * zoom * ratioY;\n const yRangeMaxOffset = (yRangeBumped[1] - yRange[1]) * zoom * ratioY;\n\n xRange[0] += xRangeMinOffset;\n xRange[1] += xRangeMaxOffset;\n\n yRange[0] += yRangeMinOffset;\n yRange[1] += yRangeMaxOffset;\n\n // Calculate the maximum xRange and yRange available.\n const xRangeBounds = [0, _this.width];\n const yRangeBounds = [_this.height, 0];\n\n const xRangeBoundsBumped = _this._rangeBump(xRangeBounds);\n const yRangeBoundsBumped = _this._rangeBump(yRangeBounds);\n\n /*\n * Set the pan to account for the range bump by subtracting\n * offsets and preventing panning past the range bump gutter.\n */\n if (!zoomXOut) {\n if (xRange[0] > xRangeBoundsBumped[0]) pan[0] = xRangeBoundsBumped[0] - xRangeMinOffset;\n if (xRange[1] < xRangeBoundsBumped[1]) pan[0] = xRangeBoundsBumped[1] - xRangeMaxOffset - xPanOffset;\n } else {\n if (xRange[0] < xRangeBoundsBumped[0]) pan[0] = xRangeBoundsBumped[0] - xRangeMinOffset;\n if (xRange[1] > xRangeBoundsBumped[1]) pan[0] = xRangeBoundsBumped[1] - xRangeMaxOffset - xPanOffset;\n }\n\n if (!zoomYOut) {\n if (yRange[0] < yRangeBoundsBumped[0]) pan[1] = yRangeBoundsBumped[0] - yRangeMinOffset - yPanOffset;\n if (yRange[1] > yRangeBoundsBumped[1]) pan[1] = yRangeBoundsBumped[1] - yRangeMaxOffset;\n } else {\n if (yRange[0] > yRangeBoundsBumped[0]) pan[1] = yRangeBoundsBumped[0] - yRangeMinOffset - yPanOffset;\n if (yRange[1] < yRangeBoundsBumped[1]) pan[1] = yRangeBoundsBumped[1] - yRangeMaxOffset;\n }\n\n //zoomer.translate = pan;\n //self.zoomSelection.property(\"__zoom\", d3.zoomIdentity.translate(pan[0], pan[1]).scale(zoom));\n\n /*\n * Clamp the xRange and yRange by the amount that the bounds\n * that are range bumped.\n *\n * Additionally, take the amount clamped on the end of the range\n * and either subtract or add it to the range's other end. This\n * prevents visible stretching of the range when only panning.\n */\n if (!zoomXOut) {\n if (xRange[0] > xRangeBoundsBumped[0]) {\n xRange[1] -= Math.abs(xRange[0] - xRangeBoundsBumped[0]);\n xRange[0] = xRangeBoundsBumped[0];\n }\n\n if (xRange[1] < xRangeBoundsBumped[1]) {\n xRange[0] += Math.abs(xRange[1] - xRangeBoundsBumped[1]);\n xRange[1] = xRangeBoundsBumped[1];\n }\n } else {\n if (xRange[0] < xRangeBoundsBumped[0]) {\n xRange[1] += Math.abs(xRange[0] - xRangeBoundsBumped[0]);\n xRange[0] = xRangeBoundsBumped[0];\n }\n\n if (xRange[1] > xRangeBoundsBumped[1]) {\n xRange[0] -= Math.abs(xRange[1] - xRangeBoundsBumped[1]);\n xRange[1] = xRangeBoundsBumped[1];\n }\n }\n\n if (!zoomYOut) {\n if (yRange[0] < yRangeBoundsBumped[0]) {\n yRange[1] += Math.abs(yRange[0] - yRangeBoundsBumped[0]);\n yRange[0] = yRangeBoundsBumped[0];\n }\n\n if (yRange[1] > yRangeBoundsBumped[1]) {\n yRange[0] -= Math.abs(yRange[1] - yRangeBoundsBumped[1]);\n yRange[1] = yRangeBoundsBumped[1];\n }\n } else {\n if (yRange[0] > yRangeBoundsBumped[0]) {\n yRange[1] -= Math.abs(yRange[0] - yRangeBoundsBumped[0]);\n yRange[0] = yRangeBoundsBumped[0];\n }\n\n if (yRange[1] < yRangeBoundsBumped[1]) {\n yRange[0] += Math.abs(yRange[1] - yRangeBoundsBumped[1]);\n yRange[1] = yRangeBoundsBumped[1];\n }\n }\n\n if (_this.MDL.x.scale.type === \"ordinal\") {\n _this.xScale.rangeBands(xRange);\n } else {\n _this.xScale.range(xRange);\n }\n\n if (_this.MDL.y.scale.type === \"ordinal\") {\n _this.yScale.rangeBands(yRange);\n } else {\n _this.yScale.range(yRange);\n }\n\n const formatter = function(n) {\n return utils.isDate(n) ? n : +n.toFixed(2);\n };\n\n const zoomedXRange = xRangeBoundsBumped;\n const zoomedYRange = yRangeBoundsBumped;\n\n /*\n * Set the zoomed min/max to the correct value depending on if the\n * min/max values lie within the range bound regions.\n */\n /*\n if(!zoomXOut) {\n zoomedXRange[0] = xRangeBounds[0] > xRange[0] ? xRangeBounds[0] : xRange[0];\n zoomedXRange[1] = xRangeBounds[1] < xRange[1] ? xRangeBounds[1] : xRange[1];\n }\n\n if(!zoomYOut) {\n zoomedYRange[0] = yRangeBounds[0] < yRange[0] ? yRangeBounds[0] : yRange[0];\n zoomedYRange[1] = yRangeBounds[1] > yRange[1] ? yRangeBounds[1] : yRange[1];\n }\n */\n\n _this._zoomedXYMinMax = {\n x: {\n zoomedMin: formatter(_this.xScale.invert(zoomedXRange[0])),\n zoomedMax: formatter(_this.xScale.invert(zoomedXRange[1]))\n },\n y: {\n zoomedMin: formatter(_this.yScale.invert(zoomedYRange[0])),\n zoomedMax: formatter(_this.yScale.invert(zoomedYRange[1]))\n }\n };\n\n //TODO/*avoid storing it in URL*/\n if (!zoomer.dontFeedToState) {\n // _this.ui.panzoom = {\n // x: Object.assign({}, _this._zoomedXYMinMax.x),\n // y: Object.assign({}, _this._zoomedXYMinMax.y), \n // }\n _this.MDL.x.scale.zoomed = [_this._zoomedXYMinMax.x.zoomedMin, _this._zoomedXYMinMax.x.zoomedMax];\n _this.MDL.y.scale.zoomed = [_this._zoomedXYMinMax.y.zoomedMin, _this._zoomedXYMinMax.y.zoomedMax];\n }\n\n const optionsY = _this.yAxis.labelerOptions();\n const optionsX = _this.xAxis.labelerOptions();\n optionsY.limitMaxTickNumber = zoom * ratioY < 1.5 ? 8 : zoom * ratioY * 8;\n optionsX.limitMaxTickNumber = zoom * ratioX < 1.5 ? 8 : zoom * ratioX * 8;\n optionsY.transitionDuration = zoomer.duration;\n optionsX.transitionDuration = zoomer.duration;\n\n _this.DOM.xAxisEl.call(_this.xAxis.labelerOptions(optionsX));\n _this.DOM.yAxisEl.call(_this.yAxis.labelerOptions(optionsY));\n _this.redrawData(zoomer.duration);\n //_this._trails.run(\"resize\", null, zoomer.duration);\n\n zoomer.duration = 0;\n },\n\n stop() {\n _this.DOM.chartSvg.classed(\"vzb-zooming\", false);\n // if (this.quitZoom) return;\n\n //Force the update of the URL and history, with the same values\n if (!zoomer.dontFeedToState) {\n // _this.ui.panzoom = {\n // x: Object.assign({}, _this._zoomedXYMinMax.x),\n // y: Object.assign({}, _this._zoomedXYMinMax.y), \n // }\n _this.MDL.x.scale.zoomed = [_this._zoomedXYMinMax.x.zoomedMin, _this._zoomedXYMinMax.x.zoomedMax];\n _this.MDL.y.scale.zoomed = [_this._zoomedXYMinMax.y.zoomedMin, _this._zoomedXYMinMax.y.zoomedMax];\n //_this.model.marker.set(_this._zoomedXYMinMax, true, true);\n }\n zoomer.dontFeedToState = null;\n\n _this.draggingNow = false;\n }\n };\n }\n\n expandCanvas(duration) {\n const _this = this.context;\n if (!duration) duration = _this.duration;\n\n //d3 extent returns min and max of the input array as [min, max]\n const mmX = d3.extent(utils.values(_this.frame.x));\n const mmY = d3.extent(utils.values(_this.frame.y));\n\n //protection agains unreasonable min-max results -- abort function\n if (!mmX[0] && mmX[0] !== 0 || !mmX[1] && mmX[1] !== 0 || !mmY[0] && mmY[0] !== 0 || !mmY[1] && mmY[1] !== 0) {\n return utils.warn(\"panZoom.expandCanvas: X or Y min/max are broken. Aborting with no action\");\n }\n /*\n * Use a range bumped scale to correctly accommodate the range bump\n * gutter.\n */\n const suggestedFrame = {\n x1: _this.xScale(mmX[0]),\n y1: _this.yScale(mmY[0]),\n x2: _this.xScale(mmX[1]),\n y2: _this.yScale(mmY[1])\n };\n const xBounds = [0, _this.width];\n const yBounds = [_this.height, 0];\n\n // Get the current zoom frame based on the current dimensions.\n const frame = {\n x1: xBounds[0],\n x2: xBounds[1],\n y1: yBounds[0],\n y2: yBounds[1]\n };\n\n const TOLERANCE = 0.0;\n\n /*\n * If there is no current zoom frame, or if any of the suggested frame\n * points extend outside of the current zoom frame, then expand the\n * canvas.\n */\n if (!_this.isCanvasPreviouslyExpanded ||\n suggestedFrame.x1 < frame.x1 * (1 - TOLERANCE) || suggestedFrame.x2 > frame.x2 * (1 + TOLERANCE) ||\n suggestedFrame.y2 < frame.y2 * (1 - TOLERANCE) || suggestedFrame.y1 > frame.y1 * (1 + TOLERANCE)) {\n /*\n * If there is already a zoom frame, then clamp the suggested frame\n * points to only zoom out and expand the canvas.\n *\n * If any of x1, x2, y1, or y2 is within the current frame\n * boundaries, then clamp them to the frame boundaries. If any of\n * the above values will translate into a data value that is outside\n * of the possible data range, then clamp them to the frame\n * coordinate that corresponds to the maximum data value that can\n * be displayed.\n */\n if (_this.isCanvasPreviouslyExpanded) {\n /*\n * Calculate bounds and bumped scale for calculating the data boundaries\n * to which the suggested frame points need to be clamped.\n */\n const xBoundsBumped = _this._rangeBump(xBounds);\n const yBoundsBumped = _this._rangeBump(yBounds);\n\n if (suggestedFrame.x1 > xBoundsBumped[0]) suggestedFrame.x1 = xBoundsBumped[0];\n if (suggestedFrame.x2 < xBoundsBumped[1]) suggestedFrame.x2 = xBoundsBumped[1];\n if (suggestedFrame.y1 < yBoundsBumped[0]) suggestedFrame.y1 = yBoundsBumped[0];\n if (suggestedFrame.y2 > yBoundsBumped[0]) suggestedFrame.y2 = yBoundsBumped[1];\n }\n\n _this.isCanvasPreviouslyExpanded = true;\n this._zoomOnRectangle(_this.element, suggestedFrame.x1, suggestedFrame.y1,\n suggestedFrame.x2, suggestedFrame.y2, false, duration);\n } else {\n _this.redrawDataPoints(duration);\n }\n }\n\n zoomToMaxMin(zoomedMinX, zoomedMaxX, zoomedMinY, zoomedMaxY, duration, dontFeedToState) {\n const _this = this.context;\n let minX = zoomedMinX;\n let maxX = zoomedMaxX;\n let minY = zoomedMinY;\n let maxY = zoomedMaxY;\n\n const xDomain = _this.xScale.domain();\n const yDomain = _this.yScale.domain();\n\n /*\n * Prevent zoomout if only one of zoom edges set outside domain\n */\n if (minX < xDomain[0] && maxX < xDomain[1]) minX = xDomain[0];\n if (minX > xDomain[0] && maxX > xDomain[1]) maxX = xDomain[1];\n if (minY < yDomain[0] && maxY < yDomain[1]) minY = yDomain[0];\n if (minY > yDomain[0] && maxY > yDomain[1]) maxY = yDomain[1];\n\n\n const xRange = [_this.xScale(minX), _this.xScale(maxX)];\n const yRange = [_this.yScale(minY), _this.yScale(maxY)];\n\n\n this._zoomOnRectangle(_this.element, xRange[0], yRange[0], xRange[1], yRange[1], false, duration, dontFeedToState);\n }\n\n _zoomOnRectangle(element, zoomedX1, zoomedY1, zoomedX2, zoomedY2, compensateDragging, duration, dontFeedToState) {\n const _this = this.context;\n const zoomer = this.zoomer;\n const transform = d3.zoomTransform(this.zoomSelection.node());\n\n const x1 = zoomedX1;\n const y1 = zoomedY1;\n const x2 = zoomedX2;\n const y2 = zoomedY2;\n\n /*\n * When dragging to draw a rectangle, the translate vector has (x2 - x1)\n * added to zoomer.translate()[0], and (y2 - 1) added to\n * zoomer.translate()[1].\n *\n * We need to compensate for this addition when\n * zooming with a rectangle, because zooming with a rectangle will\n * update the translate vector with new values based on the rectangle\n * dimensions.\n */\n if (compensateDragging) {\n transform.translate(\n x1 - x2,\n y1 - y2\n );\n }\n\n const xRangeBounds = [0, _this.width];\n const yRangeBounds = [_this.height, 0];\n\n const xRangeBoundsBumped = _this._rangeBump(xRangeBounds);\n const yRangeBoundsBumped = _this._rangeBump(yRangeBounds);\n\n const minZoom = zoomer.scaleExtent()[0];\n const maxZoom = zoomer.scaleExtent()[1];\n let zoom, ratioX, ratioY;\n\n if (x1 == x2 || y1 == y2 || xRangeBoundsBumped[0] == xRangeBoundsBumped[1] || yRangeBoundsBumped[0] == yRangeBoundsBumped[1]) {\n return utils.warn(\"_zoomOnRectangle(): can not proceed because this may result in infinity zooms\");\n }\n\n if (Math.abs(x1 - x2) > Math.abs(y1 - y2)) {\n zoom = Math.abs(yRangeBoundsBumped[0] - yRangeBoundsBumped[1]) / Math.abs(y1 - y2) * transform.k;\n\n /*\n * Clamp the zoom scalar to the maximum zoom allowed before\n * calculating the next ratioX and ratioY.\n */\n if (zoom < minZoom) {\n zoomer.ratioY *= zoom / transform.k;\n zoom = minZoom;\n }\n if (zoom > maxZoom) zoom = maxZoom;\n\n ratioX = Math.abs(xRangeBoundsBumped[0] - xRangeBoundsBumped[1]) / Math.abs(x1 - x2) * transform.k / zoom * zoomer.ratioX;\n ratioY = zoomer.ratioY;\n } else {\n zoom = Math.abs(xRangeBoundsBumped[0] - xRangeBoundsBumped[1]) / Math.abs(x1 - x2) * transform.k;\n\n /*\n * Clamp the zoom scalar to the maximum zoom allowed before\n * calculating the next ratioX and ratioY.\n */\n if (zoom < minZoom) {\n zoomer.ratioX *= zoom / transform.k;\n zoom = minZoom;\n }\n if (zoom > maxZoom) zoom = maxZoom;\n\n ratioY = Math.abs(yRangeBoundsBumped[0] - yRangeBoundsBumped[1]) / Math.abs(y1 - y2) * transform.k / zoom * zoomer.ratioY;\n ratioX = zoomer.ratioX;\n }\n\n const pan = [\n (transform.x - Math.min(x1, x2)) / transform.k / zoomer.ratioX * zoom * ratioX + (xRangeBoundsBumped[0] - xRangeBounds[0]),\n (transform.y - Math.min(y1, y2)) / transform.k / zoomer.ratioY * zoom * ratioY + (yRangeBoundsBumped[1] - yRangeBounds[1])\n ];\n\n zoomer.dontFeedToState = dontFeedToState;\n zoomer.ratioY = ratioY || 1; //NaN defaults to 1\n zoomer.ratioX = ratioX || 1; //NaN defaults to 1\n zoomer.duration = duration ? duration : 0;\n\n this.zoomSelection.call(zoomer.transform, d3.zoomIdentity.translate(pan[0], pan[1]).scale(zoom));\n }\n\n /*\n * Incrementally zoom in or out and pan the view so that it never looses the point where click happened\n * this function is a modified d3's own zoom behavior on double click\n * for the original code see https://github.com/mbostock/d3/blob/master/src/behavior/zoom.js\n * function dblclicked() and what it refers to\n */\n zoomByIncrement(event, direction, duration) {\n const transform = d3.zoomTransform(this.zoomSelection.node());\n\n let ratio = transform.k;\n const pan = [transform.x, transform.y];\n\n const mouse = d3.pointer(event, this.zoomSelection.node());\n let k = Math.log(ratio) / Math.LN2;\n\n //change factor direction based on the input. default is no direction supplied\n if (direction == \"plus\" || !direction) k = Math.floor(k) + 1;\n if (direction == \"minus\") k = Math.ceil(k) - 1;\n\n //decode panning\n let locus = [(mouse[0] - pan[0]) / ratio, (mouse[1] - pan[1]) / ratio];\n\n //recalculate zoom ratio\n const scaleExtent = this.zoomer.scaleExtent();\n if (ratio == scaleExtent[0]) {\n this.zoomer.ratioY = 1;\n this.zoomer.ratioX = 1;\n }\n ratio = Math.max(scaleExtent[0], Math.min(scaleExtent[1], Math.pow(2, k)));\n\n //recalculate panning\n locus = [locus[0] * ratio + pan[0], locus[1] * ratio + pan[1]];\n pan[0] += mouse[0] - locus[0];\n pan[1] += mouse[1] - locus[1];\n\n this.zoomer.duration = duration || 0;\n this.zoomSelection.call(this.zoomer.transform, d3.zoomIdentity.translate(pan[0], pan[1]).scale(ratio));\n\n }\n\n /*\n * Reset zoom values without triggering a zoom event.\n */\n resetZoomState(element) {\n this.zoomer.ratioY = 1;\n this.zoomer.ratioX = 1;\n (element || this.zoomSelection).property(\"__zoom\", d3.zoomIdentity);\n }\n\n reset(element, duration) {\n const _this = this.context;\n _this.isCanvasPreviouslyExpanded = false;\n\n this.zoomer.ratioY = 1;\n this.zoomer.ratioX = 1;\n this.zoomer.duration = duration || 0;\n (element || this.zoomSelection).call(this.zoomer.transform, d3.zoomIdentity);\n }\n\n rerun(element) {\n (element || this.zoomSelection).call(this.zoomer.scaleBy, 1);\n }\n\n zoomSelection(element) {\n this.zoomSelection = element;\n }\n\n}\n","import {\n Utils,\n Icons,\n LegacyUtils as utils,\n BaseComponent,\n} from \"@vizabi/shared-components\";\n\nimport {\n decorate, computed, action, observable\n} from \"mobx\";\n \nconst {ICON_QUESTION} = Icons;\n\nclass BCAxisTitles extends BaseComponent {\n\n constructor(config) {\n config.template = `\n <g class=\"vzb-bc-axis-x-title\"><text></text></g>\n <g class=\"vzb-bc-axis-y-title\"><text></text></g>\n <g class=\"vzb-bc-axis-s-title\"><text></text></g>\n <g class=\"vzb-bc-axis-x-subtitle\"><text></text></g>\n <g class=\"vzb-bc-axis-y-subtitle\"><text></text></g>\n <g class=\"vzb-bc-axis-x-info vzb-noexport\"></g>\n <g class=\"vzb-bc-axis-y-info vzb-noexport\"></g>\n `;\n super(config);\n }\n\n setup(){\n this.DOM = {\n xTitle: this.element.select(\".vzb-bc-axis-x-title\"),\n yTitle: this.element.select(\".vzb-bc-axis-y-title\"),\n sTitle: this.element.select(\".vzb-bc-axis-s-title\"),\n xSubTitle: this.element.select(\".vzb-bc-axis-x-subtitle\"),\n ySubTitle: this.element.select(\".vzb-bc-axis-y-subtitle\"),\n xInfo: this.element.select(\".vzb-bc-axis-x-info\"),\n yInfo: this.element.select(\".vzb-bc-axis-y-info\")\n };\n\n this.axisTitleComplimentStrings = {Y: \"\", X: \"\", S: \"\", C: \"\"};\n\n this._initInfoElements();\n }\n\n draw(){\n this.localise = this.services.locale.auto();\n\n this.addReaction(this.updateUIStrings);\n this.addReaction(this.updateTreemenu);\n this.addReaction(this.updateSize);\n this.addReaction(this.updateInfoElements);\n }\n\n get MDL(){\n return {\n y: this.model.encoding[this.parent.state.alias?.y || \"y\"],\n x: this.model.encoding[this.parent.state.alias?.x || \"x\"],\n size: this.model.encoding.size,\n color: this.model.encoding.color\n };\n }\n\n updateTreemenu(){\n const treemenu = this.root.findChild({type: \"TreeMenu\"});\n\n this.DOM.yTitle\n .classed(\"vzb-disabled\", treemenu.state.ownReadiness !== Utils.STATUS.READY)\n .on(\"click\", () => {\n treemenu\n .encoding(this.parent._alias(\"y\"))\n .alignX(this.services.locale.isRTL() ? \"right\" : \"left\")\n .alignY(\"top\")\n .updateView()\n .toggle();\n });\n\n this.DOM.xTitle\n .classed(\"vzb-disabled\", treemenu.state.ownReadiness !== Utils.STATUS.READY)\n .on(\"click\", () => {\n treemenu\n .encoding(this.parent._alias(\"x\"))\n .alignX(this.services.locale.isRTL() ? \"right\" : \"left\")\n .alignY(\"bottom\")\n .updateView()\n .toggle();\n }); \n }\n\n updateUIStrings() {\n const {\n y, x, size, color\n } = this.MDL;\n\n this.strings = {\n title: {\n Y: Utils.getConceptName(y, this.localise),\n X: Utils.getConceptName(x, this.localise),\n S: Utils.getConceptName(size, this.localise),\n C: Utils.getConceptName(color, this.localise)\n },\n title_short: {\n Y: Utils.getConceptShortName(y, this.localise),\n X: Utils.getConceptShortName(x, this.localise),\n S: Utils.getConceptShortName(size, this.localise),\n C: Utils.getConceptShortName(color, this.localise)\n },\n subtitle: {\n Y: Utils.getConceptNameMinusShortName(y, this.localise),\n X: Utils.getConceptNameMinusShortName(x, this.localise)\n },\n unit: {\n Y: Utils.getConceptUnit(y),\n X: Utils.getConceptUnit(x),\n S: Utils.getConceptUnit(size),\n C: Utils.getConceptUnit(color)\n }\n };\n\n Promise.all([\n Utils.getConceptNameCompliment(y),\n Utils.getConceptNameCompliment(x),\n Utils.getConceptNameCompliment(size),\n Utils.getConceptNameCompliment(color)\n ]).then(action(response => { \n [ \n this.axisTitleComplimentStrings.Y,\n this.axisTitleComplimentStrings.X,\n this.axisTitleComplimentStrings.S,\n this.axisTitleComplimentStrings.C\n ] = response;\n }));\n }\n\n\n _initInfoElements() {\n const _this = this;\n const dataNotesDialog = () => this.root.findChild({type: \"DataNotes\"});\n const timeSlider = () => this.root.findChild({type: \"TimeSlider\"});\n\n utils.setIcon(this.DOM.yInfo, ICON_QUESTION)\n .on(\"click\", () => {\n dataNotesDialog().pin();\n })\n .on(\"mouseover\", function() {\n if (timeSlider().ui.dragging) return;\n const rect = this.getBBox();\n const coord = utils.makeAbsoluteContext(this, this.farthestViewportElement)(rect.x - 10, rect.y + rect.height + 10);\n const toolRect = _this.root.element.node().getBoundingClientRect();\n const chartRect = _this.element.node().getBoundingClientRect();\n dataNotesDialog()\n .setEncoding(_this.MDL.y)\n .show()\n .setPos(coord.x + chartRect.left - toolRect.left, coord.y);\n })\n .on(\"mouseout\", () => {\n if (timeSlider().ui.dragging) return;\n dataNotesDialog().hide();\n });\n\n utils.setIcon(this.DOM.xInfo, ICON_QUESTION)\n .on(\"click\", () => {\n dataNotesDialog().pin();\n })\n .on(\"mouseover\", function() {\n if (timeSlider().ui.dragging) return;\n const rect = this.getBBox();\n const coord = utils.makeAbsoluteContext(this, this.farthestViewportElement)(rect.x - 10, rect.y + rect.height + 10);\n const toolRect = _this.root.element.node().getBoundingClientRect();\n const chartRect = _this.element.node().getBoundingClientRect();\n dataNotesDialog()\n .setEncoding(_this.MDL.x)\n .show()\n .setPos(coord.x + chartRect.left - toolRect.left, coord.y);\n })\n .on(\"mouseout\", () => {\n if (timeSlider().ui.dragging) return;\n dataNotesDialog().hide();\n });\n }\n\n updateInfoElements() {\n this.services.layout.size;\n this.axisTitleComplimentStrings.X;\n this.axisTitleComplimentStrings.Y;\n\n const {xInfo, yInfo, xTitle, yTitle} = this.DOM;\n const {x, y} = this.MDL;\n const isRTL = this.services.locale.isRTL();\n const infoElHeight = this.parent.profileConstants.infoElHeight;\n const layoutProfile = this.services.layout.profile;\n\n if (yInfo.select(\"svg\").node()) {\n const titleBBox = yTitle.node().getBBox();\n const t = utils.transform(yTitle.node());\n const hTranslate = isRTL ? (titleBBox.x + t.translateX - infoElHeight * 1.4) : (titleBBox.x + t.translateX + titleBBox.width + infoElHeight * 0.4);\n const vTranslate = isRTL ? (t.translateY + infoElHeight * 1.4 + titleBBox.width * 0.5) : (t.translateY - infoElHeight * 0.4 - titleBBox.width * 0.5);\n const conceptPropsY = y.data.conceptProps;\n\n yInfo\n .classed(\"vzb-hidden\", !conceptPropsY.description && !conceptPropsY.sourceLink || this.services.layout.projector)\n .attr(\"transform\", layoutProfile !== \"SMALL\" ?\n `translate(${ t.translateX - infoElHeight * 0.8 }, ${ vTranslate }) rotate(-90)` :\n `translate(${ hTranslate },${ t.translateY - infoElHeight * 0.8 })`)\n .select(\"svg\")\n .attr(\"width\", infoElHeight + \"px\")\n .attr(\"height\", infoElHeight + \"px\");\n }\n\n if (xInfo.select(\"svg\").node()) {\n const titleBBox = xTitle.node().getBBox();\n const t = utils.transform(xTitle.node());\n const hTranslate = isRTL ? (titleBBox.x + t.translateX - infoElHeight * 1.4) : (titleBBox.x + t.translateX + titleBBox.width + infoElHeight * 0.4);\n const conceptPropsX = x.data.conceptProps;\n\n xInfo\n .classed(\"vzb-hidden\", !conceptPropsX.description && !conceptPropsX.sourceLink || this.services.layout.projector)\n .attr(\"transform\", `translate(${ hTranslate }, ${ t.translateY - infoElHeight * 0.8 })`)\n .select(\"svg\")\n .attr(\"width\", infoElHeight + \"px\")\n .attr(\"height\", infoElHeight + \"px\");\n }\n }\n\n\n _updateSTitle(width = this.parent.width, height = this.parent.height) {\n const { sTitle } = this.DOM;\n const { size, color } = this.MDL;\n const compl = this.axisTitleComplimentStrings;\n \n // vertical text about size and color\n const invisible = this.parent.profileConstants.hideSTitle\n && this.root.ui.dialogs.dialogs.sidebar.includes(\"colors\")\n && this.root.ui.dialogs.dialogs.sidebar.includes(\"size\");\n\n sTitle.classed(\"vzb-invisible\", invisible);\n if (invisible) return;\n\n const sTitleContent = !size.data.constant \n ? this.localise(\"buttons/size\") + \": \" + this.strings.title.S + (compl.S ? \" · \" + compl.S : \"\")\n : \"\";\n const cTitleContent = !color.data.constant \n ? this.localise(\"buttons/colors\") + \": \" + this.strings.title.C + (compl.C ? \" · \" + compl.C : \"\") \n : \"\";\n\n const sTitleText = sTitle\n .attr(\"text-anchor\", \"end\")\n .attr(\"transform\", \"translate(\" + width + \",\" + 20 + \") rotate(-90)\")\n .select(\"text\")\n .style(\"font-size\", null) // reset font size to remove jumpy measurement\n .text(sTitleContent + (sTitleContent && cTitleContent ? \", \" : \"\") + cTitleContent);\n\n // reduce font size if the caption doesn't fit\n const sTitleWidth = sTitleText.node().getBBox().width;\n const padding = 30;\n const font = parseInt(sTitleText.style(\"font-size\")) * (height - padding) / sTitleWidth;\n sTitleText.style(\"font-size\", sTitleWidth > (height - padding) ? font + \"px\" : null);\n }\n\n\n _updateYTitle(width = this.parent.width, height = this.parent.height) {\n const { yTitle, ySubTitle } = this.DOM;\n\n const { \n margin, \n infoElHeight, \n yAxisTitleBottomMargin, \n } = this.parent.profileConstants;\n\n const layoutProfile = this.services.layout.profile;\n\n const compl = this.axisTitleComplimentStrings;\n const isRTL = this.services.locale.isRTL();\n\n if (layoutProfile !== \"SMALL\") {\n ySubTitle\n .attr(\"transform\", \"translate(\" + 0 + \",\" + 0 + \") rotate(-90)\")\n .select(\"text\")\n .attr(\"dy\", infoElHeight * 0.6)\n .style(\"font-size\", (infoElHeight * 0.8) + \"px\")\n .text(this.strings.subtitle.Y);\n \n const yTitleText = yTitle.select(\"text\")\n .style(\"font-size\", infoElHeight + \"px\")\n .text(this.strings.title_short.Y + (compl.Y ? \" · \" + compl.Y : \"\"));\n\n yTitleText.append(\"tspan\")\n .classed(\"vzb-noexport\", true)\n .style(\"font-size\", (infoElHeight * 0.7) + \"px\")\n .attr(\"dx\", ( (isRTL ? -1 : 1) * infoElHeight * 0.25) + \"px\")\n .text(\"▼\");\n\n const doesntFit = yTitle.node().getBBox().width > height; \n \n yTitle\n .attr(\"text-anchor\", doesntFit ? \"start\" : \"middle\")\n .attr(\"transform\", \"translate(\" + (-margin.left - yAxisTitleBottomMargin) + \",\" + (doesntFit ? (isRTL ? 0 : height) : height / 2 ) + \") rotate(-90)\");\n\n } else {\n ySubTitle.select(\"text\").text(\"\");\n\n const yTitleText = yTitle\n .select(\"text\")\n .text(this.strings.title.Y + (compl.Y ? \" · \" + compl.Y : \"\"));\n \n const doesntFit = yTitleText.node().getBBox().width > width; \n if (doesntFit) yTitleText.text(this.strings.title_short.Y + (compl.Y ? \" · \" + compl.Y : \"\"));\n \n yTitle\n .attr(\"text-anchor\", \"start\")\n .attr(\"transform\", \"translate(\" + (isRTL ? width : 10 - margin.left) + \", -\" + yAxisTitleBottomMargin + \")\");\n }\n }\n\n\n _updateXTitle(width = this.parent.width, height = this.parent.height) {\n const { xTitle, xSubTitle } = this.DOM;\n\n const { \n margin, \n infoElHeight, \n xAxisTitleBottomMargin, \n } = this.parent.profileConstants;\n\n const layoutProfile = this.services.layout.profile;\n\n const compl = this.axisTitleComplimentStrings;\n const isRTL = this.services.locale.isRTL();\n\n if (layoutProfile !== \"SMALL\") {\n xSubTitle\n .attr(\"transform\", \"translate(\" + width + \",\" + height + \")\")\n .select(\"text\")\n .attr(\"dy\", -infoElHeight * 0.3)\n .style(\"font-size\", (infoElHeight * 0.8) + \"px\")\n .text(this.strings.subtitle.X);\n \n const xTitleText = xTitle.select(\"text\")\n .style(\"font-size\", infoElHeight + \"px\")\n .text(this.strings.title_short.X + (compl.X ? \" · \" + compl.X : \"\"));\n\n xTitleText \n .append(\"tspan\")\n .classed(\"vzb-noexport\", true)\n .style(\"font-size\", (infoElHeight * 0.7) + \"px\")\n .attr(\"dx\", ( (isRTL ? -1 : 1) * infoElHeight * 0.25) + \"px\")\n .text(\"▼\");\n\n } else {\n xSubTitle.select(\"text\").text(\"\");\n\n xTitle.select(\"text\") \n .text(this.strings.title.X + (compl.X ? \" · \" + compl.X : \"\"));\n }\n\n const doesntFit = xTitle.node().getBBox().width > width - 100;\n xTitle\n .attr(\"text-anchor\", doesntFit ? \"start\" : \"middle\")\n .attr(\"transform\", \"translate(\" + (doesntFit ? (isRTL ? width : 0) : width / 2) + \",\" + (height + margin.bottom - xAxisTitleBottomMargin) + \")\");\n \n if (doesntFit && layoutProfile === \"SMALL\") xTitle.select(\"text\").text(this.strings.title_short.X) + (compl.X ? \" · \" + compl.X : \"\"); \n }\n\n\n updateSize() {\n this.services.layout.size;\n \n const { \n margin, \n leftMarginRatio \n } = this.parent.profileConstants;\n\n const height = (this.parent.elementHeight - margin.top - margin.bottom) || 0;\n const width = (this.parent.elementWidth - margin.left * leftMarginRatio - margin.right) || 0;\n\n this._updateSTitle(width, height);\n this._updateYTitle(width, height);\n this._updateXTitle(width, height);\n \n }\n}\n\nconst decorated = decorate(BCAxisTitles, {\n \"MDL\": computed,\n \"axisTitleComplimentStrings\": observable\n});\nexport { decorated as BCAxisTitles };","import {\n Utils\n} from \"@vizabi/shared-components\";\nimport * as d3 from \"d3\";\n\nexport default class BCDecorations{\n constructor(){\n }\n \n update(duration) {\n const _this = this;\n\n const uiSetting = this.ui.decorations;\n const layoutProfile = this.services.layout.profile;\n const margin = this.profileConstants.margin;\n \n // x axis groups used for incomes\n const showxAxisGroups = uiSetting.xAxisGroups \n && uiSetting.xAxisGroups[this.MDL.x.data.concept] \n && uiSetting.enabled\n && layoutProfile !== \"SMALL\";\n \n this.DOM.xAxisGroupsEl.classed(\"vzb-invisible\", !showxAxisGroups);\n if (showxAxisGroups) {\n const axisGroupsData = Utils.injectIndexes(uiSetting.xAxisGroups[this.MDL.x.data.concept]);\n let xAxisGroups = this.DOM.xAxisGroupsEl.selectAll(\".vzb-bc-x-axis-group\").data(axisGroupsData);\n \n xAxisGroups.exit().remove();\n xAxisGroups = xAxisGroups.enter().append(\"g\").attr(\"class\", \"vzb-bc-x-axis-group\")\n .each(function(){\n const view = d3.select(this);\n view.append(\"text\").attr(\"class\", \"vzb-bc-x-axis-group-line\").text(\"◆\").style(\"text-anchor\",\"middle\");\n view.append(\"text\").attr(\"class\", \"vzb-bc-x-axis-group-text\");\n })\n .merge(xAxisGroups);\n \n const xAxisGroups_calcs = [];\n let useShorterLabels = false;\n \n // first pass: calculate label text sizes and margins\n xAxisGroups.each(function(d, i){\n const view = d3.select(this);\n \n const text = view.select(\"text.vzb-bc-x-axis-group-text\")\n .text(_this.localise(d.label));\n \n const calcs = {min: d.min, max: d.max};\n \n calcs.textHeight = text.node().getBBox().height;\n calcs.textWidth = text.node().getBBox().width;\n \n calcs.boundaryMinX_px = _this.xScale(d.min || d.min === 0? d.min : d3.min(_this.xScale.domain())) || 0;\n calcs.boundaryMaxX_px = _this.xScale(d.max || d.max === 0? d.max : d3.max(_this.xScale.domain())) || 0;\n \n calcs.centerX_px = (calcs.boundaryMinX_px + calcs.boundaryMaxX_px) / 2;\n calcs.marginX_px = (Math.abs(calcs.boundaryMinX_px - calcs.boundaryMaxX_px) - calcs.textWidth) / 2;\n \n if (calcs.marginX_px - calcs.textHeight < 0) useShorterLabels = true;\n \n xAxisGroups_calcs[i] = calcs;\n });\n \n // second pass: if at least one of labels doesn't fit, switch to compact mode and recalculate text sizes and margins\n if (useShorterLabels) {\n xAxisGroups.each(function(d, i){\n const view = d3.select(this);\n\n const text = view.select(\"text.vzb-bc-x-axis-group-text\")\n .text(_this.localise(d.label_short));\n\n const calcs = xAxisGroups_calcs[i];\n\n calcs.textWidth = text.node().getBBox().width;\n calcs.marginX_px = (Math.abs(calcs.boundaryMinX_px - calcs.boundaryMaxX_px) - calcs.textWidth) / 2;\n\n xAxisGroups_calcs[i] = calcs;\n });\n }\n \n // third pass: actually put labels in places\n xAxisGroups.each(function(d, i){\n const view = d3.select(this);\n \n const isFirst = (i == 0);\n const isLast = (i == xAxisGroups_calcs.length - 1);\n const calcs = xAxisGroups_calcs[i];\n const minMargin = calcs.textHeight/4;\n let x = calcs.centerX_px;\n \n if (isFirst) x = xAxisGroups_calcs[i+1].boundaryMinX_px - Math.max(xAxisGroups_calcs[i+1].marginX_px, minMargin);\n if (isLast) x = xAxisGroups_calcs[i-1].boundaryMaxX_px + Math.max(xAxisGroups_calcs[i-1].marginX_px, minMargin);\n \n view.select(\"text.vzb-bc-x-axis-group-text\")\n .style(\"text-anchor\", isFirst ? \"end\" : isLast ? \"start\" : \"middle\")\n .transition()\n .duration(duration || 0)\n .attr(\"dy\", \"-0.2em\")\n .attr(\"y\", calcs.textHeight)\n .attr(\"x\", x);\n \n view.select(\"text.vzb-bc-x-axis-group-line\")\n .classed(\"vzb-invisible\", isLast)\n .transition()\n .duration(duration || 0)\n .attr(\"dy\", \"-0.2em\")\n .attr(\"y\", calcs.textHeight * 0.9)\n .attr(\"x\", calcs.boundaryMaxX_px);\n });\n \n xAxisGroups.select(\"text.vzb-bc-x-axis-group-text\").on(\"mouseenter\", function(event, d) {\n const calcs = xAxisGroups_calcs[d.i];\n const parentView = d3.select(this.parentNode);\n \n d3.select(this).attr(\"font-weight\", \"bold\");\n parentView.append(\"rect\").lower()\n .attr(\"x\", calcs.boundaryMinX_px)\n .attr(\"width\", calcs.boundaryMaxX_px - calcs.boundaryMinX_px)\n .attr(\"y\", - margin.top)\n .attr(\"height\", _this.height + margin.top);\n \n if (calcs.min || calcs.min === 0) parentView.append(\"line\").lower()\n .attr(\"x1\", calcs.boundaryMinX_px)\n .attr(\"x2\", calcs.boundaryMinX_px)\n .attr(\"y1\", - margin.top)\n .attr(\"y2\", _this.height);\n \n if (calcs.max || calcs.max === 0) parentView.append(\"line\").lower()\n .attr(\"x1\", calcs.boundaryMaxX_px)\n .attr(\"x2\", calcs.boundaryMaxX_px)\n .attr(\"y1\", - margin.top)\n .attr(\"y2\", _this.height);\n \n }).on(\"mouseleave\", function() {\n const parentView = d3.select(this.parentNode);\n \n d3.select(this).attr(\"font-weight\", null);\n parentView.selectAll(\"rect\").remove();\n parentView.selectAll(\"line\").remove();\n });\n } \n \n // diagonal line that is used when the same idicator ID is used for both axis X and Y\n const showLineEqualXY = \n this.MDL.x.data.concept == this.MDL.y.data.concept \n && uiSetting.enabled\n && layoutProfile !== \"SMALL\";\n \n this.DOM.lineEqualXY.classed(\"vzb-invisible\", !showLineEqualXY);\n\n if (showLineEqualXY) {\n this.MDL.x.scale.type; //watch\n this.MDL.y.scale.type; //watch\n\n const domains = this.yScale.domain().concat(this.xScale.domain()),\n min = d3.min(domains), \n max = d3.max(domains), \n step = (max-min)/100;\n\n const sequence = d3.range(min, max, step).concat(max);\n\n const line = d3.line()\n .curve(d3.curveBasis)\n .x(d => this.xScale(d))\n .y(d => this.yScale(d));\n\n this.DOM.lineEqualXY\n .transition()\n .duration(duration || 0)\n .attr(\"d\", line(sequence));\n }\n }\n}","import {\n Chart,\n Utils,\n LegacyUtils as utils,\n axisSmart,\n Labels,\n DateTimeBackground\n} from \"@vizabi/shared-components\";\nimport PanZoom from \"./panzoom\";\nimport {BCAxisTitles} from \"./axistitles\";\nimport * as d3 from \"d3\";\n\nimport BCDecorations from \"./decorations.js\";\n\nimport {\n runInAction\n} from \"mobx\";\n\nimport {decorate, computed, observable} from \"mobx\";\n\nconst COLOR_WHITEISH = \"rgb(253, 253, 253)\";\nconst COLOR_BLACKISH = \"rgb(51, 51, 51)\";\nconst THICK_LINE_THRESHOLD_FOR_DARKER_COLOR = 3;\n\nconst marginScaleH = (marginMin, ratio = 0) => height => marginMin + height * ratio;\nconst marginScaleW = (marginMin, ratio = 0) => width => marginMin + width * ratio;\n\nfunction isTrailBubble(d){\n return !!d[Symbol.for(\"trailHeadKey\")];\n}\n\nconst MAX_RADIUS_EM = 0.05;\n\nconst PROFILE_CONSTANTS = (width, height) => ({\n SMALL: {\n margin: { top: 30, bottom: 35, left: 30, right: 10},\n leftMarginRatio: 1,\n padding: 2,\n minRadiusPx: 0.5,\n maxRadiusPx: Math.max(0.5, MAX_RADIUS_EM * utils.hypotenuse(width, height)),\n minTrailThicknessPx: 1,\n maxTrailThicknessPx: 4,\n infoElHeight: 16,\n yAxisTitleBottomMargin: 6,\n xAxisTitleBottomMargin: 4\n },\n MEDIUM: {\n margin: { top: 15, bottom: 40, left: 40, right: 15},\n leftMarginRatio: 1.6,\n padding: 2,\n minRadiusPx: 1,\n maxRadiusPx: Math.max(0.5, MAX_RADIUS_EM * utils.hypotenuse(width, height)),\n minTrailThicknessPx: 2,\n maxTrailThicknessPx: 6,\n infoElHeight: 20,\n yAxisTitleBottomMargin: 3,\n xAxisTitleBottomMargin: 4\n },\n LARGE: {\n margin: { top: 15, bottom: marginScaleH(30, 0.03)(height), left: marginScaleW(31, 0.015)(width), right: 20},\n leftMarginRatio: 1.8,\n padding: 2,\n minRadiusPx: 1,\n maxRadiusPx: Math.max(0.5, MAX_RADIUS_EM * utils.hypotenuse(width, height)),\n minTrailThicknessPx: 2,\n maxTrailThicknessPx: 8,\n infoElHeight: 22,\n yAxisTitleBottomMargin: 3,//marginScaleH(4, 0.01)(height),\n xAxisTitleBottomMargin: marginScaleH(0, 0.01)(height),\n hideSTitle: true\n }\n});\n\nconst PROFILE_CONSTANTS_FOR_PROJECTOR = (width, height) => ({\n MEDIUM: {\n margin: { top: 20, bottom: 55, left: 50, right: 20 },\n yAxisTitleBottomMargin: 3,\n xAxisTitleBottomMargin: 4,\n infoElHeight: 26,\n },\n LARGE: {\n margin: { top: 30, bottom: marginScaleH(45, 0.03)(height), left: marginScaleW(35, 0.025)(width), right: 30 },\n yAxisTitleBottomMargin: 3,//marginScaleH(4, 0.01)(height),\n xAxisTitleBottomMargin: marginScaleH(-5, 0.01)(height),\n infoElHeight: 32,\n hideSTitle: true\n }\n});\n\n// BUBBLE CHART COMPONENT\nclass _VizabiBubbleChart extends Chart {\n\n constructor(config) {\n config.subcomponents = [{\n type: Labels,\n placeholder: \".vzb-bc-labels\", \n options: {\n CSS_PREFIX: \"vzb-bc\",\n LABELS_CONTAINER_CLASS: \"vzb-bc-labels\",\n LINES_CONTAINER_CLASS: \"vzb-bc-lines\",\n SUPPRESS_HIGHLIGHT_DURING_PLAY: false\n },\n name: \"labels\"\n },{\n type: DateTimeBackground,\n placeholder: \".vzb-bc-date\"\n },{\n type: BCAxisTitles,\n placeholder: \".vzb-bc-axis-titles\"\n }];\n\n config.template = `\n <svg class=\"vzb-bubblechart-svg vzb-export\">\n <svg class=\"vzb-bubblechart-svg-back\">\n <g class=\"vzb-bc-graph\">\n <g class=\"vzb-bc-date\"></g>\n <svg class=\"vzb-bc-axis-x\"><g></g></svg>\n <svg class=\"vzb-bc-axis-y\"><g></g></svg>\n <line class=\"vzb-bc-projection-x\"></line>\n <line class=\"vzb-bc-projection-y\"></line>\n </g>\n </svg>\n <svg class=\"vzb-bubblechart-svg-main\">\n <g class=\"vzb-bc-graph\">\n <g class=\"vzb-bc-axis-titles\"></g>\n\n <svg class=\"vzb-bc-bubbles-crop\">\n <g class=\"vzb-zoom-selection\"></g>\n <rect class=\"vzb-bc-eventarea\"></rect>\n <g class=\"vzb-bc-trails\"></g>\n <g class=\"vzb-bc-bubbles\"></g>\n <rect class=\"vzb-bc-forecastoverlay vzb-hidden\" x=\"0\" y=\"0\" width=\"100%\" height=\"100%\" fill=\"url(#vzb-bc-pattern-lines-${config.id})\" pointer-events='none'></rect>\n </svg>\n\n <rect class=\"vzb-bc-zoom-rect\"></rect>\n </g>\n <g class=\"vzb-datawarning-button vzb-noexport\"></g>\n </svg>\n <svg class=\"vzb-bubblechart-svg-front\">\n <g class=\"vzb-bc-graph\">\n <svg class=\"vzb-bc-bubbles-crop\">\n <g class=\"vzb-bc-decorations\">\n <path class=\"vzb-bc-line-equal-xy vzb-invisible\"></path>\n <g class=\"vzb-bc-x-axis-groups\"></g>\n </g> \n <g class=\"vzb-bc-lines\"></g>\n <g class=\"vzb-bc-bubble-crown vzb-hidden\">\n <circle class=\"vzb-crown-glow\"></circle>\n <circle class=\"vzb-crown\"></circle>\n </g> \n </svg>\n <svg class=\"vzb-bc-labels-crop\">\n <g class=\"vzb-bc-labels\"></g>\n </svg>\n </g>\n </svg>\n <svg width=\"0\" height=\"0\">\n <defs>\n <filter class=\"vzb-noexport\" id=\"vzb-glow-filter-${config.id}\" x=\"-50%\" y=\"-50%\" width=\"200%\" height=\"200%\">\n <feGaussianBlur in=\"SourceGraphic\" stdDeviation=\"2\"></feGaussianBlur>\n </filter>\n <pattern class=\"vzb-noexport\" id=\"vzb-bc-pattern-lines-${config.id}\" x=\"0\" y=\"0\" patternUnits=\"userSpaceOnUse\" width=\"50\" height=\"50\" viewBox=\"0 0 10 10\"> \n <path d='M-1,1 l2,-2M0,10 l10,-10M9,11 l2,-2' stroke='black' stroke-width='3' opacity='0.08'/>\n </pattern> \n </defs>\n </svg>\n </svg>\n <div class=\"vzb-tooltip vzb-hidden vzb-tooltip-mobile\"></div>\n `;\n\n super(config);\n }\n\n setup() {\n\n this.DOM = {\n element: this.element,\n chartSvg: this.element.select(\"svg.vzb-bubblechart-svg-main\"),\n chartSvgFront: this.element.select(\"svg.vzb-bubblechart-svg-front\"),\n chartSvgBack: this.element.select(\"svg.vzb-bubblechart-svg-back\"),\n chartSvgAll: this.element.selectAll(\"svg.vzb-bubblechart-svg\"),\n graphAll: this.element.selectAll(\".vzb-bc-graph\"),\n bubbleContainerCropAll: this.element.selectAll(\".vzb-bc-bubbles-crop\"),\n zoomRect: this.element.select(\".vzb-bc-zoom-rect\"),\n eventArea: this.element.select(\".vzb-bc-eventarea\"),\n forecastOverlay: this.element.select(\".vzb-bc-forecastoverlay\"),\n tooltipMobile: this.element.select(\".vzb-tooltip-mobile\"),\n defs: this.element.select(\"defs\")\n };\n this.DOM.chartSvg.select(\".vzb-bc-graph\").call(graph => \n Object.assign(this.DOM, {\n graph: graph,\n trailsContainer: graph.select(\".vzb-bc-trails\"),\n bubbleContainer: graph.select(\".vzb-bc-bubbles\"),\n bubbleContainerCrop: graph.select(\".vzb-bc-bubbles-crop\"),\n zoomSelection: graph.select(\".vzb-zoom-selection\"),\n })\n );\n this.DOM.chartSvgFront.select(\".vzb-bc-graph\").call(graphFront => {\n Object.assign(this.DOM, {\n graphFront: graphFront,\n labelsContainer: graphFront.select(\".vzb-bc-labels\"),\n labelsContainerCrop: graphFront.select(\".vzb-bc-labels-crop\"),\n linesContainer: graphFront.select(\".vzb-bc-lines\"),\n bubbleCrown: graphFront.select(\".vzb-bc-bubble-crown\"),\n decorationsEl: graphFront.select(\".vzb-bc-decorations\"),\n });\n this.DOM.lineEqualXY = this.DOM.decorationsEl.select(\".vzb-bc-line-equal-xy\");\n this.DOM.xAxisGroupsEl = this.DOM.decorationsEl.select(\".vzb-bc-x-axis-groups\");\n });\n this.DOM.chartSvgBack.select(\".vzb-bc-graph\").call(graphBack => {\n Object.assign(this.DOM, {\n yAxisElContainer: graphBack.select(\".vzb-bc-axis-y\"),\n xAxisElContainer: graphBack.select(\".vzb-bc-axis-x\"),\n date: graphBack.select(\".vzb-bc-date\"),\n projectionX: graphBack.select(\".vzb-bc-projection-x\"),\n projectionY: graphBack.select(\".vzb-bc-projection-y\"),\n });\n this.DOM.yAxisEl = this.DOM.yAxisElContainer.select(\"g\");\n this.DOM.xAxisEl = this.DOM.xAxisElContainer.select(\"g\");\n });\n\n //set filter\n this.DOM.bubbleCrown.selectAll(\".vzb-crown-glow\")\n .attr(\"filter\", `url(#vzb-glow-filter-${this.id})`);\n\n this._date = this.findChild({type: \"DateTimeBackground\"});\n this._labels = this.findChild({type: \"Labels\"});\n this._panZoom = new PanZoom(this); \n this.decorations = new BCDecorations(this);\n \n this.xAxis = axisSmart(\"bottom\");\n this.yAxis = axisSmart(\"left\");\n\n\n this.isCanvasPreviouslyExpanded = false;\n this.draggingNow = null;\n\n this.hoverBubble = false;\n this.__lastStep = 0;\n\n const _this = this;\n //keyboard listeners\n d3.select(\"body\")\n .on(\"keydown\", (event) => {\n if (_this.ui.cursorMode !== \"arrow\" && _this.ui.cursorMode !== \"hand\") return;\n if (event.metaKey || event.ctrlKey) _this.DOM.chartSvgAll.classed(\"vzb-zoomin\", true);\n })\n .on(\"keyup\", (event) => {\n if (_this.ui.cursorMode !== \"arrow\" && _this.ui.cursorMode !== \"hand\") return;\n if (!event.metaKey && !event.ctrlKey) _this.DOM.chartSvgAll.classed(\"vzb-zoomin\", false);\n })\n //this is for the case when user would press ctrl and move away from the browser tab or window\n //keyup event would happen somewhere else and won't be captured, so zoomin class would get stuck\n .on(\"mouseenter\", (event) => {\n if (_this.ui.cursorMode !== \"arrow\" && _this.ui.cursorMode !== \"hand\") return;\n if (!event.metaKey && !event.ctrlKey) _this.DOM.chartSvgAll.classed(\"vzb-zoomin\", false);\n });\n \n this.root.element.on(\"custom-resetZoom\", () => {\n _this._panZoom.reset(null, 500);\n });\n\n this._panZoom.zoomSelection(this.DOM.bubbleContainerCrop);\n this.DOM.bubbleContainerCrop\n .call(this._panZoom.dragRectangle)\n .call(this._panZoom.zoomer)\n .on(\"dblclick.zoom\", null)\n .on(\"mouseup\", () => {\n _this.draggingNow = false;\n })\n .on(\"click\", (event) => {\n const cursor = _this.ui.cursorMode;\n if (!event.defaultPrevented && cursor !== \"arrow\" && cursor !== \"hand\") {\n _this._panZoom.zoomByIncrement(event, cursor, 500);\n }\n });\n\n }\n\n\n get MDL(){\n return {\n frame: this.model.encoding.frame,\n selected: this.model.encoding.selected,\n highlighted: this.model.encoding.highlighted,\n superHighlighted: this.model.encoding.superhighlighted,\n y: this.model.encoding[this.state.alias?.y || \"y\"],\n x: this.model.encoding[this.state.alias?.x || \"x\"],\n size: this.model.encoding.size,\n color: this.model.encoding.color,\n label: this.model.encoding.label,\n trail: this.model.encoding.trail\n };\n }\n\n draw() {\n this.localise = this.services.locale.auto(this.MDL.frame.interval);\n\n //this.MDL.trail.config.show = false;\n //this.ui.cursorMode = \"plus\";\n this.sScale = this.MDL.size.scale.d3Scale;\n this.trailSizeScale = this.MDL.size.scale.d3Scale.copy();\n\n this.TIMEDIM = this.MDL.frame.data.concept;\n this.KEYS = this.model.data.space.filter(dim => dim !== this.TIMEDIM);\n\n if (this._updateLayoutProfile()) return; //return if exists with error\n this.addReaction(this._updateScales);\n this.addReaction(this._updateSize);\n // this.addReaction(this._resetZoomMinMaxXReaction, this._resetZoomMinMaxX);\n // this.addReaction(this._resetZoomMinMaxYReaction, this._resetZoomMinMaxY);\n this.addReaction(this._updateOpacity);\n this.addReaction(this.updateColorPatterns);\n this.addReaction(this._updateShowYear);\n this.addReaction(this._updateYear);\n this.addReaction(this.drawData);\n this.addReaction(this._zoomToMarkerMaxMin);\n this.addReaction(this.redrawData);\n\n this.addReaction(this._selectDataPoints);\n this.addReaction(this._highlightDataPoints);\n this.addReaction(this._blinkSuperHighlighted);\n this.addReaction(this._drawForecastOverlay);\n this.addReaction(this._setupCursorMode);\n this.addReaction(this.updateDecorations);\n }\n\n drawData() {\n this.processFrameData();\n this._updateMarkerSizeLimits();\n this._createAndDeleteBubbles();\n //this.redrawData();\n }\n\n updateColorPatterns() {\n if (this.MDL.color.scale.isPattern) {\n const colorConcept = this.MDL.color.data.concept;\n this.DOM.defs.selectAll(\".flag\")\n .data(this.MDL.color.data.domainData, d => d[0])\n .enter()\n .append(\"pattern\")\n .attr(\"id\", d => `flag-${d[0]}-${this.id}`)\n .attr(\"class\", \"flag\")\n .attr(\"width\", \"100%\")\n .attr(\"height\", \"100%\")\n .attr(\"patternContentUnits\", \"objectBoundingBox\")\n .html(d => d[1][colorConcept])\n .each(function() {\n const svg = d3.select(this).select(\"svg\");\n if (svg.empty()) return;\n \n if (!svg.attr(\"viewBox\"))\n svg.attr(\"viewBox\", `0 0 ${svg.attr(\"width\")} ${svg.attr(\"height\")}`);\n\n // xMidYMid: center the image in the circle\n // slice: scale the image to fill the circle\n if (!svg.attr(\"preserveAspectRatio\"))\n svg.attr(\"preserveAspectRatio\", \"xMidYMid slice\");\n\n svg.attr(\"width\", 1).attr(\"height\", 1);\n });\n } else {\n this.DOM.defs.selectAll(\".flag\").remove();\n }\n }\n\n _updateShowYear() {\n this.DOM.date.classed(\"vzb-hidden\", !this.ui.timeInBackground);\n }\n\n _updateYear() {\n const duration = this._getDuration();\n this._date.setText(this.MDL.frame.value, duration); \n }\n\n __getColor(key, valueC) {\n return valueC != null && !utils.isNaN(valueC) \n ? (this.MDL.color.scale.isPattern ? `url(#flag-${key}-${this.id})` : this.cScale(valueC)) \n : COLOR_WHITEISH;\n }\n __getColorForTrail(valueC, valueS) {\n if(valueC == null || utils.isNaN(valueC) || this.MDL.color.scale.isPattern) return COLOR_BLACKISH; \n if(this.trailSizeScale(valueS) > THICK_LINE_THRESHOLD_FOR_DARKER_COLOR) return this.cScale(valueC);\n return this.MDL.color.scale.palette.getColorShade({colorID: valueC}) || COLOR_BLACKISH;\n }\n\n _createAndDeleteBubbles() {\n const _this = this;\n const duration = this._getDuration();\n const transition = this._getTransition(duration);\n const data = this.__dataProcessed;\n let trailRedrawDate;\n\n runInAction(()=>{\n trailRedrawDate = this.MDL.frame.stepScale.invert(Math.min(this.__lastStep, this.__lastStep = this.MDL.frame.step << 0) - 1);\n });\n\n this.bubbles = this.DOM.bubbleContainer.selectAll(\".vzb-bc-entity\")\n .data(this.__dataProcessed, d => d[Symbol.for(\"key\")])\n .join(\n enter => enter\n .append(d => {\n const g = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n const circle = document.createElementNS(\"http://www.w3.org/2000/svg\", \"circle\");\n const trailLine = document.createElementNS(\"http://www.w3.org/2000/svg\", \"line\");\n const diagonalLine = document.createElementNS(\"http://www.w3.org/2000/svg\", \"line\");\n trailLine.classList.add(\"vzb-trail-line\");\n diagonalLine.classList.add(\"vzb-diagonal-line\");\n g.appendChild(circle);\n g.appendChild(diagonalLine);\n if (isTrailBubble(d)) g.appendChild(trailLine);\n return g;\n })\n .attr(\"class\", \"vzb-bc-entity\")\n .attr(\"id\", d => `vzb-bc-bubble-${d[Symbol.for(\"key\")]}-${this.id}`)\n .style(\"opacity\", d => d[Symbol.for(\"opacity\")] = this._getBubbleOpacity(d))\n .call(selection => {\n if(!utils.isTouchDevice()){\n selection\n .on(\"mouseover\", (event, d) => {\n if (this.ui.cursorMode !== \"arrow\" && this.ui.cursorMode !== \"hand\") return;\n if (this._labels.dragging) return;\n this._bubblesInteract().mouseover(event, d);\n })\n .on(\"mouseout\", (event, d) => {\n if (this.ui.cursorMode !== \"arrow\" && this.ui.cursorMode !== \"hand\") return;\n if (this._labels.dragging) return;\n this._bubblesInteract().mouseout(event, d);\n })\n .on(\"click\", (event, d) => {\n if (this.ui.cursorMode !== \"arrow\" && this.ui.cursorMode !== \"hand\") return;\n this._bubblesInteract().click(event, d);\n });\n } else {\n selection\n .onTap((event, d) => {\n event.stopPropagation();\n this._bubblesInteract().click(event, d);\n })\n .onLongTap(() => {});\n }\n })\n .each(function(d, index) {\n const dataNext = data[index + 1] || {};\n const isTrail = isTrailBubble(d);\n const isExtrapolated = d[Symbol.for(\"extrapolated\")];\n const headTrail = isTrail && !dataNext[Symbol.for(\"trailHeadKey\")];\n const view = d3.select(this);\n const circle = view.select(\"circle\");\n const diagonalLine = view.select(\".vzb-diagonal-line\");\n \n const valueX = d[_this._alias(\"x\")];\n const valueY = d[_this._alias(\"y\")];\n const valueS = d.size;\n const valueC = d.color;\n \n //d.hidden = (!valueS && valueS !== 0) || valueX == null || valueY == null;\n \n //view.classed(\"vzb-hidden\", d.hidden);\n d.r = utils.areaToRadius(_this.sScale(valueS || 0));\n const scaledX = _this.xScale(valueX);\n const scaledY = _this.yScale(valueY);\n const scaledC = _this.__getColor(d[Symbol.for(isTrail ? \"trailHeadKey\" : \"key\")], valueC);\n \n if (!duration || !headTrail) {\n circle\n .attr(\"r\", d.r)\n .attr(\"fill\", scaledC)\n .attr(\"cy\", scaledY)\n .attr(\"cx\", scaledX);\n //.transition(transition)\n\n if(isExtrapolated)\n diagonalLine\n .attr(\"x1\", scaledX + d.r/Math.sqrt(2))\n .attr(\"y1\", scaledY + d.r/Math.sqrt(2))\n .attr(\"x2\", scaledX - d.r/Math.sqrt(2))\n .attr(\"y2\", scaledY - d.r/Math.sqrt(2));\n diagonalLine\n .classed(\"vzb-hidden\", !isExtrapolated);\n \n //trail line\n if (isTrail) {\n const trailLine = view.select(\".vzb-trail-line\");\n\n const scaledX0 = _this.xScale(dataNext[_this._alias(\"x\")]);\n const scaledY0 = _this.yScale(dataNext[_this._alias(\"y\")]);\n const scaledCT = _this.__getColorForTrail(dataNext.color, dataNext.size);\n\n const nextR = utils.areaToRadius(_this.sScale(dataNext.size || 0));\n const length = Math.sqrt( (scaledX - scaledX0)**2 + (scaledY - scaledY0)**2 ) - d.r - nextR;\n \n trailLine\n .attr(\"x1\", scaledX)\n .attr(\"y1\", scaledY)\n .attr(\"x2\", scaledX0)\n .attr(\"y2\", scaledY0) \n .attr(\"stroke-dasharray\", `0 ${d.r} ${length > 0 ? length : 0} ${nextR}`)\n .style(\"stroke-width\", _this.trailSizeScale(dataNext.size))\n .style(\"stroke\", scaledCT);\n }\n }\n \n if (duration && !isTrail) {\n view\n .style(\"opacity\", 0)\n .transition().duration(duration*0.9)\n .style(\"opacity\", d[Symbol.for(\"opacity\")]);\n }\n \n if (!isTrail) {\n _this._updateLabel(d, valueX, valueY, duration, true, false);\n }\n }),\n\n update => update\n .each(function(d, index) {\n \n const isTrail = isTrailBubble(d);\n const isExtrapolated = d[Symbol.for(\"extrapolated\")];\n const dataNext = data[index + 1] || {};\n const headTrail = isTrail && !dataNext[Symbol.for(\"trailHeadKey\")];\n \n const valueS = d.size;\n d.r = utils.areaToRadius(_this.sScale(valueS || 0));\n if (isTrail && d[\"frame\"] < trailRedrawDate) return;\n \n const valueX = d[_this._alias(\"x\")];\n const valueY = d[_this._alias(\"y\")];\n const valueC = d.color;\n \n //d.hidden = (!valueS && valueS !== 0) || valueX == null || valueY == null;\n \n //view.classed(\"vzb-hidden\", d.hidden);\n const scaledX = _this.xScale(valueX);\n const scaledY = _this.yScale(valueY);\n const scaledC = _this.__getColor(d[Symbol.for(isTrail ? \"trailHeadKey\" : \"key\")], valueC);\n \n const group = d3.select(this);\n if (!duration || !headTrail) {\n const circle = group.select(\"circle\");\n if (duration && !isTrail) {\n circle.transition(transition)\n .attr(\"r\", d.r)\n .attr(\"fill\", scaledC)\n .attr(\"cy\", scaledY)\n .attr(\"cx\", scaledX);\n } else {\n circle.interrupt()\n .attr(\"r\", d.r)\n .attr(\"fill\", scaledC)\n .attr(\"cy\", scaledY)\n .attr(\"cx\", scaledX);\n }\n \n const diagonalLine = group.select(\".vzb-diagonal-line\");\n diagonalLine\n .classed(\"vzb-hidden\", !isExtrapolated);\n if(isExtrapolated){\n if (duration && !isTrail){\n diagonalLine.transition(transition)\n .attr(\"x1\", scaledX + d.r/Math.sqrt(2))\n .attr(\"y1\", scaledY + d.r/Math.sqrt(2))\n .attr(\"x2\", scaledX - d.r/Math.sqrt(2))\n .attr(\"y2\", scaledY - d.r/Math.sqrt(2));\n } else {\n diagonalLine.interrupt()\n .attr(\"x1\", scaledX + d.r/Math.sqrt(2))\n .attr(\"y1\", scaledY + d.r/Math.sqrt(2))\n .attr(\"x2\", scaledX - d.r/Math.sqrt(2))\n .attr(\"y2\", scaledY - d.r/Math.sqrt(2));\n }\n }\n \n //trail line\n if (isTrail) {\n const trailLine = group.select(\".vzb-trail-line\");\n const scaledX0 = _this.xScale(dataNext[_this._alias(\"x\")]);\n const scaledY0 = _this.yScale(dataNext[_this._alias(\"y\")]);\n const scaledCT = _this.__getColorForTrail(dataNext.color, dataNext.size);\n \n trailLine\n .attr(\"x1\", scaledX)\n .attr(\"y1\", scaledY);\n if (duration && !data[index + 2][Symbol.for(\"trailHeadKey\")]) {\n trailLine\n .attr(\"x2\", scaledX)\n .attr(\"y2\", scaledY)\n .transition(transition)\n .attr(\"x2\", scaledX0)\n .attr(\"y2\", scaledY0);\n } else {\n trailLine.interrupt()\n .attr(\"x2\", scaledX0)\n .attr(\"y2\", scaledY0);\n }\n \n const nextR = utils.areaToRadius(_this.sScale(dataNext.size || 0));\n const length = Math.sqrt( (scaledX - scaledX0)**2 + (scaledY - scaledY0)**2 ) - d.r - nextR;\n\n trailLine\n .style(\"stroke\", scaledCT)\n .style(\"stroke-width\", _this.trailSizeScale(dataNext.size))\n .attr(\"stroke-dasharray\", `0 ${d.r} ${length > 0 ? length : 0} ${nextR}`);\n }\n }\n \n if (!isTrail)\n _this._updateLabel(d, valueX, valueY, duration, false, false); \n }), \n\n exit => exit\n .each(function(d) {\n const isTrail = isTrailBubble(d);\n \n const view = duration && !isTrail ?\n d3.select(this).transition(transition)\n .duration(duration*0.9)\n .style(\"opacity\", 0)\n :\n d3.select(this).interrupt();\n \n view\n .remove();\n \n if (!isTrail) \n _this._updateLabel(d, d[_this._alias(\"x\")], d[_this._alias(\"y\")], duration, true, true);\n })\n )\n .order();\n\n }\n\n\n redrawData(duration) {\n //this.services.layout.size;\n //this.MDL.x.scale.type;\n //this.MDL.y.scale.type;\n this.MDL.color.scale.type;\n this.MDL.size.scale.type;\n this.MDL.size.scale.extent;\n\n const _this = this;\n const data = this.__dataProcessed;\n const transition = this._getTransition(duration);\n\n if (this.bubbles) this.bubbles.each(function(d, index) {\n const isTrail = isTrailBubble(d);\n const dataNext = data[index + 1] || {};\n const headTrail = isTrail && !dataNext[Symbol.for(\"trailHeadKey\")];\n const isExtrapolated = d[Symbol.for(\"extrapolated\")];\n\n const valueX = d[_this._alias(\"x\")];\n const valueY = d[_this._alias(\"y\")];\n const valueS = d.size;\n const valueC = d.color;\n\n d.r = utils.areaToRadius(_this.sScale(valueS || 0));\n const scaledX = _this.xScale(valueX);\n const scaledY = _this.yScale(valueY);\n const scaledC = _this.__getColor(d[Symbol.for(isTrail ? \"trailHeadKey\" : \"key\")], valueC);\n\n const group = d3.select(this);\n\n if (duration && headTrail) {\n group.style(\"opacity\", 0)\n .transition().delay(duration).duration(0)\n .style(\"opacity\", d[Symbol.for(\"opacity\")]);\n }\n\n const circle = group.select(\"circle\"); \n if (duration && !headTrail) {\n circle.transition(transition)\n .attr(\"r\", d.r)\n .attr(\"fill\", scaledC)\n .attr(\"cy\", scaledY)\n .attr(\"cx\", scaledX);\n } else {\n circle.interrupt()\n .attr(\"r\", d.r)\n .attr(\"fill\", scaledC)\n .attr(\"cy\", scaledY)\n .attr(\"cx\", scaledX);\n }\n\n const diagonalLine = group.select(\".vzb-diagonal-line\");\n diagonalLine\n .classed(\"vzb-hidden\", !isExtrapolated);\n if(isExtrapolated){\n if (duration && !headTrail){\n diagonalLine.transition(transition)\n .attr(\"x1\", scaledX + d.r/Math.sqrt(2))\n .attr(\"y1\", scaledY + d.r/Math.sqrt(2))\n .attr(\"x2\", scaledX - d.r/Math.sqrt(2))\n .attr(\"y2\", scaledY - d.r/Math.sqrt(2));\n } else {\n diagonalLine.interrupt()\n .attr(\"x1\", scaledX + d.r/Math.sqrt(2))\n .attr(\"y1\", scaledY + d.r/Math.sqrt(2))\n .attr(\"x2\", scaledX - d.r/Math.sqrt(2))\n .attr(\"y2\", scaledY - d.r/Math.sqrt(2));\n }\n }\n \n\n if (isTrail) {\n const trailLine = (duration && !headTrail) ? \n group.select(\".vzb-trail-line\")\n .transition(transition)\n : group.select(\".vzb-trail-line\").interrupt();\n\n const dataNext = data[index + 1];\n const scaledX0 = _this.xScale(dataNext[_this._alias(\"x\")]);\n const scaledY0 = _this.yScale(dataNext[_this._alias(\"y\")]);\n const scaledCT = _this.__getColorForTrail(dataNext.color, dataNext.size);\n\n const nextR = utils.areaToRadius(_this.sScale(dataNext.size || 0));\n const length = Math.sqrt( (scaledX - scaledX0)**2 + (scaledY - scaledY0)**2 ) - d.r - nextR;\n\n trailLine\n .attr(\"x1\", scaledX)\n .attr(\"y1\", scaledY)\n .attr(\"x2\", scaledX0)\n .attr(\"y2\", scaledY0)\n .style(\"stroke\", scaledCT)\n .style(\"stroke-width\", _this.trailSizeScale(dataNext.size))\n .attr(\"stroke-dasharray\", `0 ${d.r} ${length > 0 ? length : 0} ${nextR}`);\n }\n });\n\n runInAction(() => _this._updateLabels(duration));\n }\n\n __getZoomed(type, zoomed, domain) {\n //const zoomed = values[`zoomed${type}`];\n return d3[type.toLowerCase()](zoomed !== null ? zoomed : domain);\n }\n\n __getZoomedMin(values, domain) {\n return this.__getZoomed(\"Min\", values, domain);\n }\n\n __getZoomedMax(values, domain) {\n return this.__getZoomed(\"Max\", values, domain);\n }\n\n /*\n * Zoom to the min and max values given in the URL axes markers.\n */\n _zoomToMarkerMaxMin() {\n this.services.layout.size;\n this.MDL.x.scale.type;\n this.MDL.y.scale.type;\n\n const panzoom = //this.ui.panzoom;\n {\n x: this.MDL.x.scale.zoomed,\n y: this.MDL.y.scale.zoomed\n };\n \n const xDomain = this.MDL.x.data.domain;\n const yDomain = this.MDL.y.data.domain;\n\n if (this.draggingNow) return;\n\n /*\n * Reset just the zoom values without triggering a zoom event. This ensures\n * a clean zoom state for the subsequent zoom event.\n */\n this._panZoom.resetZoomState();\n\n this.yScale.range(this._rangeBump([this.height, 0]));\n this.xScale.range(this._rangeBump([0, this.width]));\n \n /*\n * The axes may return null when there is no value given for the zoomed\n * min and max values. In that case, fall back to the axes' domain values.\n */\n const zoomedMinX = this.__getZoomedMin(panzoom.x, xDomain);\n const zoomedMaxX = this.__getZoomedMax(panzoom.x, xDomain);\n const zoomedMinY = this.__getZoomedMin(panzoom.y, yDomain);\n const zoomedMaxY = this.__getZoomedMax(panzoom.y, yDomain);\n\n //by default this will apply no transition and feed values back to state\n runInAction(() => {\n this._panZoom.zoomToMaxMin(zoomedMinX, zoomedMaxX, zoomedMinY, zoomedMaxY, 0, \"don't feed these zoom values back to state\");\n });\n }\n\n _resetZoomMinMaxXReaction() {\n return { concept: this.MDL.x.data.concept };\n }\n\n _resetZoomMinMaxX() {\n this.ui.panzoom.x = {zoomedMin: null, zoomedMax: null};\n }\n\n _resetZoomMinMaxYReaction() {\n return { concept: this.MDL.y.data.concept };\n }\n\n _resetZoomMinMaxY() {\n this.ui.panzoom.y = {zoomedMin: null, zoomedMax: null};\n }\n\n _drawForecastOverlay() {\n this.DOM.forecastOverlay.classed(\"vzb-hidden\", \n !this.ui.showForecast || \n !this.ui.showForecastOverlay || \n !this.ui.endBeforeForecast || \n (this.MDL.frame.value <= this.MDL.frame.parseValue(this.ui.endBeforeForecast))\n );\n }\n\n _updateLayoutProfile(){\n this.services.layout.size;\n\n this.elementHeight = (this.element.node().clientHeight) || 0;\n this.elementWidth = (this.element.node().clientWidth) || 0;\n\n this.profileConstants = this.services.layout.getProfileConstants(\n PROFILE_CONSTANTS(this.elementWidth, this.elementHeight), \n PROFILE_CONSTANTS_FOR_PROJECTOR(this.elementWidth, this.elementHeight)\n );\n\n if (!this.elementHeight || !this.elementWidth) return utils.warn(\"Chart _updateProfile() abort: container is too little or has display:none\");\n }\n\n _getDuration() {\n return this.MDL.frame.playing ? this.MDL.frame.speed || 0 : 0;\n }\n\n _updateScales() {\n this.yScale = this.MDL.y.scale.d3Scale.copy();\n this.xScale = this.MDL.x.scale.d3Scale.copy();\n this._labels.setScales(this.xScale, this.yScale);\n }\n\n get cScale() {\n return this.MDL.color.scale.d3Scale;\n }\n \n\n\n _updateSize() {\n this.services.layout.size;\n\n const {\n x,\n y\n } = this.MDL;\n \n this.model.encoding.y.scale.d3Scale;\n \n const {\n graphAll,\n eventArea,\n bubbleContainerCropAll,\n labelsContainerCrop,\n xAxisElContainer,\n xAxisEl,\n yAxisElContainer,\n yAxisEl,\n projectionX,\n projectionY,\n xAxisGroupsEl,\n } = this.DOM;\n\n const _this = this;\n\n const layoutProfile = this.services.layout.profile;\n\n const margin = this.profileConstants.margin;\n const infoElHeight = this.profileConstants.infoElHeight;\n const xAxisTitleBottomMargin = this.profileConstants.xAxisTitleBottomMargin;\n\n //stage\n const height = this.height = (this.elementHeight - margin.top - margin.bottom) || 0;\n const width = this.width = (this.elementWidth - margin.left * this.profileConstants.leftMarginRatio - margin.right) || 0;\n\n // if (height <= 0 || width <= 0) {\n // height = 0;\n // width = 0;\n // utils.warn(\"Bubble chart updateSize(): vizabi container is too little or has display:none\");\n // }\n\n //graph group is shifted according to margins (while svg element is at 100 by 100%)\n graphAll\n .attr(\"transform\", \"translate(\" + (margin.left * this.profileConstants.leftMarginRatio) + \",\" + margin.top + \")\");\n\n this._date.resizeText(width, height);\n \n eventArea\n .attr(\"width\", width)\n .attr(\"height\", Math.max(0, height));\n\n this.yScale.range(this._rangeBump([height, 0]));\n this.xScale.range(this._rangeBump([0, width]));\n\n //only applied to swimming lane sclae\n const rankScaleModifications = y.scale.type === \"rank\" \n ? {\n ticks: y.rollup.map(m => m.tickPosition),\n formatter: (d) => y.rollup.find(f => f.tickPosition === d).name,\n repositionLabels: Object.fromEntries(y.rollup.map(m => ([m.tickPosition, { x: 4 * infoElHeight, y: -infoElHeight }]))) \n }\n : {};\n\n //apply scales to axes and redraw\n this.yAxis.scale(this.yScale)\n .tickSizeInner(-width)\n .tickSizeOuter(0)\n .tickPadding(6)\n .tickSizeMinor(-width, 0)\n .labelerOptions(Object.assign({\n scaleType: y.scale.type,\n toolMargin: margin,\n limitMaxTickNumber: 6,\n bump: this.profileConstants.maxRadiusPx / 2,\n viewportLength: height,\n formatter: this.localise\n }, rankScaleModifications));\n\n this.xAxis.scale(this.xScale)\n .tickSizeInner(-height)\n .tickSizeOuter(0)\n .tickPadding(6)\n .tickSizeMinor(-height, 0)\n .labelerOptions({\n scaleType: x.scale.type,\n toolMargin: margin,\n bump: this.profileConstants.maxRadiusPx / 2,\n viewportLength: width,\n formatter: this.localise\n });\n\n\n bubbleContainerCropAll\n .attr(\"width\", width)\n .attr(\"height\", Math.max(0, height));\n\n labelsContainerCrop\n .attr(\"width\", width)\n .attr(\"height\", Math.max(0, height));\n\n xAxisElContainer\n .attr(\"width\", width + 1)\n .attr(\"height\", this.profileConstants.margin.bottom + height)\n .attr(\"y\", -1)\n .attr(\"x\", -1);\n xAxisEl\n .attr(\"transform\", \"translate(1,\" + (1 + height) + \")\");\n\n yAxisElContainer\n .attr(\"width\", this.profileConstants.margin.left + width)\n .attr(\"height\", Math.max(0, height))\n .attr(\"x\", -this.profileConstants.margin.left);\n yAxisEl\n .attr(\"transform\", \"translate(\" + (this.profileConstants.margin.left - 1) + \",\" + 0 + \")\");\n\n yAxisEl.call(this.yAxis);\n xAxisEl.call(this.xAxis);\n\n const rangeBump = this.profileConstants.maxRadiusPx;\n projectionX.attr(\"y1\", _this.yScale.range()[0] + rangeBump);\n projectionY.attr(\"x2\", _this.xScale.range()[0] - rangeBump);\n\n xAxisGroupsEl\n .style(\"font-size\", infoElHeight * 0.8 + \"px\");\n\n this.root.findChild({type: \"_DataWarning\"}).setOptions({\n width: this.elementWidth,\n height: this.elementHeight,\n vertical: \"bottom\", \n horizontal: \"right\", \n right: margin.right,\n bottom: xAxisTitleBottomMargin,\n wLimit: (layoutProfile !== \"SMALL\" ? 0.5 : 1) *\n (this.elementWidth - this.DOM.graph.select(\".vzb-bc-axis-x-title\").node().getBBox().width - infoElHeight * 3)\n });\n\n }\n\n\n _rangeBump(arg, undo) {\n const bump = this.profileConstants.maxRadiusPx;\n undo = undo ? -1 : 1;\n if (utils.isArray(arg) && arg.length > 1) {\n let z1 = arg[0];\n let z2 = arg[arg.length - 1];\n\n //the sign of bump depends on the direction of the scale\n if (z1 < z2) {\n z1 += bump * undo;\n z2 -= bump * undo;\n // if the scale gets inverted because of bump, set it to avg between z1 and z2\n if (z1 > z2) z1 = z2 = (z1 + z2) / 2;\n } else if (z1 > z2) {\n z1 -= bump * undo;\n z2 += bump * undo;\n // if the scale gets inverted because of bump, set it to avg between z1 and z2\n if (z1 < z2) z1 = z2 = (z1 + z2) / 2;\n } else {\n // rangeBump error: the input scale range has 0 length. that sucks but we keep cool\n }\n return [z1, z2];\n }\n utils.warn(\"rangeBump error: input is not an array or empty\");\n }\n\n\n processFrameData() {\n return this.__dataProcessed = this.model.dataArray;\n }\n\n _getTransition(duration) {\n return duration ? d3.transition()\n .duration(duration)\n .ease(d3.easeLinear) : d3.transition();\n } \n\n _bubblesInteract() {\n const _this = this;\n\n return {\n mouseover(event, d) {\n _this.hoverBubble = true;\n _this.MDL.highlighted.data.filter.set(d);\n _this._labels.showCloseCross(d, true);\n },\n\n mouseout(event, d) {\n _this.hoverBubble = false;\n _this.MDL.highlighted.data.filter.delete(d);\n //_this._setTooltip();\n _this._labels.showCloseCross(d, false);\n },\n\n click(event, d) {\n if (_this.draggingNow) return;\n // // const isSelected = d.isSelected;\n if (!isTrailBubble(d)) _this.MDL.selected.data.filter.toggle(d);\n //_this.MDL.selected.data.filter.toggle(d);\n // // //return to highlighted state\n // // if (!utils.isTouchDevice()) {\n // // if (isSelected) _this.model.marker.highlightMarker(d);\n // // _this.highlightDataPoints();\n }\n };\n }\n \n\n _updateMarkerSizeLimits() {\n this.services.layout.size;\n this.MDL.size.scale.domain;\n\n const {\n minRadiusPx,\n maxRadiusPx,\n minTrailThicknessPx,\n maxTrailThicknessPx,\n } = this.profileConstants;\n\n //transfer min max radius to size dialog via root ui observable (probably a cleaner way is possible)\n this.root.ui.minMaxRadius = {min: minRadiusPx, max: maxRadiusPx};\n \n const extent = this.MDL.size.scale.extent || [0, 1];\n \n let minArea = utils.radiusToArea(Math.max(maxRadiusPx * extent[0], minRadiusPx));\n let maxArea = utils.radiusToArea(Math.max(maxRadiusPx * extent[1], minRadiusPx));\n\n this.sScale.range([minArea, maxArea]);\n this.trailSizeScale.domain(this.MDL.size.scale.domain).range([minTrailThicknessPx, maxTrailThicknessPx]);\n }\n\n _setTooltip(tooltipText, x, y, s, c, d) {\n if (tooltipText) {\n const labelValues = {};\n if (d) {\n labelValues.valueY = d[this._alias(\"y\")];\n labelValues.valueX = d[this._alias(\"x\")];\n labelValues.valueS = d.size;\n labelValues.valueC = d.color;\n labelValues.valueLST = d.size_label || null;\n labelValues.labelText = this.__labelWithoutFrame(d, this.localise);\n }\n\n const tooltipCache = {};\n tooltipCache.labelX0 = this.xScale.invert(x);\n tooltipCache.labelY0 = this.yScale.invert(y);\n tooltipCache.scaledS0 = s;\n tooltipCache.scaledC0 = null;\n\n this._labels.setTooltip(d, tooltipText, tooltipCache, labelValues);\n } else {\n this._labels.setTooltip();\n }\n }\n\n _getLabelText(d) {\n return this.KEYS.map(key => d.label[key]).join(\",\");\n //// + (this.model.ui.chart.timeInTrails && time && (this.model.time.start - this.model.time.end !== 0) ? \" \" + time : \"\");\n }\n\n _updateOpacity(selection) {\n //this.MDL.frame.value; //listen\n\n const highlightedFilter = this.MDL.highlighted.data.filter;\n const selectedFilter = this.MDL.selected.data.filter;\n\n this.__highlightedMarkers = new Map(highlightedFilter.markers);\n this.__selectedMarkers = new Map(selectedFilter.markers);\n this.__someSelected = this.__selectedMarkers.size != 0;\n this.__someHighlighted = this.__highlightedMarkers.size != 0;\n\n const _selection = selection || this.bubbles;\n if(!_selection) return;\n _selection\n .style(\"opacity\", d => this._getBubbleOpacity(d, this.ui))\n .style(\"pointer-events\", d => this._getBubbleOpacity(d, this.ui) === 0 ? \"none\" : \"visible\");\n }\n\n _getBubbleOpacity(d) { \n const ui = this.ui;\n\n if (this.__highlightedMarkers.has(d[Symbol.for(\"key\")])) return ui.opacityHighlight;\n if (isTrailBubble(d)) return ui.opacityRegular;\n if (this.__selectedMarkers.has(d[Symbol.for(\"key\")])) return ui.opacitySelect;\n\n if (this.__someSelected) return ui.opacitySelectDim;\n if (this.__someHighlighted) return ui.opacityHighlightDim;\n\n return ui.opacityRegular;\n }\n\n _setBubbleCrown(x, y, r, glow, skipInnerFill) {\n const bubbleCrown = this.DOM.bubbleCrown;\n if (x != null) {\n bubbleCrown.classed(\"vzb-hidden\", false);\n bubbleCrown.select(\".vzb-crown\")\n .attr(\"cx\", x)\n .attr(\"cy\", y)\n .attr(\"r\", r)\n .attr(\"fill\", skipInnerFill ? \"none\" : glow);\n bubbleCrown.selectAll(\".vzb-crown-glow\")\n .attr(\"cx\", x)\n .attr(\"cy\", y)\n .attr(\"r\", r + 10)\n .attr(\"stroke\", glow);\n\n } else {\n bubbleCrown.classed(\"vzb-hidden\", true);\n }\n\n }\n\n /*\n * Shows and hides axis projections\n */\n _axisProjections(d) {\n const {\n projectionX,\n projectionY,\n xAxisEl,\n yAxisEl\n } = this.DOM;\n\n if (d != null) {\n\n const valueY = d[this._alias(\"y\")];\n const valueX = d[this._alias(\"x\")];\n const radius = d.r;\n\n //if (!valueY && valueY !== 0 || !valueX && valueX !== 0 || !valueS && valueS !== 0) return;\n\n if (this.ui.whenHovering.showProjectionLineX\n && this.xScale(valueX) > 0 && this.xScale(valueX) < this.width\n && (this.yScale(valueY) + radius) < this.height) {\n projectionX\n .style(\"opacity\", 1)\n .attr(\"y2\", this.yScale(valueY) + radius)\n .attr(\"x1\", this.xScale(valueX))\n .attr(\"x2\", this.xScale(valueX));\n }\n\n if (this.ui.whenHovering.showProjectionLineY\n && this.yScale(valueY) > 0 && this.yScale(valueY) < this.height\n && (this.xScale(valueX) - radius) > 0) {\n projectionY\n .style(\"opacity\", 1)\n .attr(\"y1\", this.yScale(valueY))\n .attr(\"y2\", this.yScale(valueY))\n .attr(\"x1\", this.xScale(valueX) - radius);\n }\n\n if (this.ui.whenHovering.higlightValueX && this.MDL.x.scale.type !== \"rank\") xAxisEl.call(\n this.xAxis.highlightValue(valueX)\n );\n\n if (this.ui.whenHovering.higlightValueY && this.MDL.y.scale.type !== \"rank\") yAxisEl.call(\n this.yAxis.highlightValue(valueY)\n );\n\n\n } else {\n\n projectionX.style(\"opacity\", 0);\n projectionY.style(\"opacity\", 0);\n xAxisEl.call(this.xAxis.highlightValue(\"none\"));\n yAxisEl.call(this.yAxis.highlightValue(\"none\"));\n\n }\n\n }\n\n /*\n * Highlights all hovered bubbles\n */\n _highlightDataPoints() {\n const _this = this;\n\n const highlightedFilter = this.MDL.highlighted.data.filter;\n const selectedFilter = this.MDL.selected.data.filter;\n this.someHighlighted = highlightedFilter.any();\n\n //this.updateBubbleOpacity();\n const trailShow = this.MDL.trail.show;\n const trailStarts = this.MDL.trail.starts;\n const trailGroupDim = this.MDL.trail.groupDim;\n\n if (highlightedFilter.markers.size === 1) {\n const highlightedKey = highlightedFilter.markers.keys().next().value;\n const d = Object.assign(this.model.dataMap.getByStr(highlightedKey));\n const selectedKey = d[Symbol.for(\"trailHeadKey\")] || d[Symbol.for(\"key\")];\n\n const x = _this.xScale(d[_this._alias(\"x\")]);\n const y = _this.yScale(d[_this._alias(\"y\")]);\n const s = d.r;\n const c = _this.__getColor(selectedKey, d.color);\n let entityOutOfView = false;\n\n if (x + s < 0 || x - s > this.width || y + s < 0 || y - s > this.height) {\n entityOutOfView = true;\n }\n\n //show tooltip\n // const trailShow = this.MDL.trail.show;\n // const trailStarts = this.MDL.trail.starts;\n // const trailGroupDim = this.MDL.trail.groupDim;\n const isSelected = selectedFilter.has(selectedKey);\n const isTailTrail = !(trailStarts[selectedKey] - d[trailGroupDim]);\n const isTrail = isTrailBubble(d);\n\n let text = \"\";\n \n text = isSelected ? \n !trailShow || isTailTrail || (!isTrail && !this.hoverBubble) ? \"\": this.localise(d[trailGroupDim])\n : \n this.__labelWithoutFrame(d);\n \n _this._labels.highlight(null, false);\n _this._labels.highlight({ [Symbol.for(\"key\")]: selectedKey }, true);\n if (isSelected) {\n const skipCrownInnerFill = !isTrail;\n //!d.trailStartTime || d.trailStartTime == _this.model.time.formatDate(_this.time);\n _this._setBubbleCrown(x, y, s, c, skipCrownInnerFill);\n }\n\n if (!entityOutOfView) {\n _this._axisProjections(d);\n }\n\n //set tooltip and show axis projections\n if (text && !entityOutOfView) {\n _this._setTooltip(text, x, y, s + 3, c, d);\n }\n\n // // const selectedData = utils.find(_this.model.marker.select, f => utils.getKey(f, KEYS) == d[KEY]);\n // // if (selectedData) {\n // // const clonedSelectedData = utils.clone(selectedData);\n // // //change opacity to OPACITY_HIGHLT = 1.0;\n // // clonedSelectedData.opacity = 1.0;\n // // _this._trails.run([\"opacityHandler\"], clonedSelectedData);\n // // }\n } else {\n this._axisProjections();\n ////this._trails.run([\"opacityHandler\"]);\n //hide tooltip\n this._setTooltip();\n this._setBubbleCrown();\n this._labels.highlight(null, false);\n }\n\n }\n\n _blinkSuperHighlighted() {\n if (!this.MDL.superHighlighted) return;\n\n const superHighlightFilter = this.MDL.superHighlighted.data.filter;\n\n this.bubbles\n .classed(\"vzb-super-highlighted\", d => superHighlightFilter.has(d));\n }\n\n _selectDataPoints() {\n const _this = this;\n const selectedFilter = this.MDL.selected.data.filter;\n \n if (utils.isTouchDevice()) {\n _this.MDL.highlighted.data.filter.clear();\n _this._labels.showCloseCross(null, false);\n } else {\n //hide tooltip\n _this._setTooltip();\n ////_this._setBubbleCrown();\n }\n\n // utils.forEach(_this.bubbles.data(), d => {\n // d.isSelected = _this.model.marker.isSelected(d);\n // });\n\n _this.someSelected = selectedFilter.any();\n _this.nonSelectedOpacityZero = false;\n\n }\n\n _setupCursorMode() {\n const svg = this.DOM.chartSvgAll;\n if (this.ui.cursorMode === \"plus\") {\n svg.classed(\"vzb-zoomin\", true);\n svg.classed(\"vzb-zoomout\", false);\n svg.classed(\"vzb-panhand\", false);\n } else if (this.ui.cursorMode === \"minus\") {\n svg.classed(\"vzb-zoomin\", false);\n svg.classed(\"vzb-zoomout\", true);\n svg.classed(\"vzb-panhand\", false);\n } else if (this.ui.cursorMode === \"hand\") {\n svg.classed(\"vzb-zoomin\", false);\n svg.classed(\"vzb-zoomout\", false);\n svg.classed(\"vzb-panhand\", true);\n } else {\n svg.classed(\"vzb-zoomin\", false);\n svg.classed(\"vzb-zoomout\", false);\n svg.classed(\"vzb-panhand\", false);\n }\n }\n\n updateDecorations(){\n this.services.layout.size;\n this.MDL.x.scale.zoomed;\n this.MDL.y.scale.zoomed;\n this.decorations.update.bind(this)(this._getDuration());\n }\n\n _updateLabel(d, x, y, duration, showhide, hidden) {\n const selectedMarkers = this.MDL.selected.data.filter.markers;\n const key = d[Symbol.for(\"key\")];\n // only for selected markers\n if (selectedMarkers.has(key)) {\n const trail = this.MDL.trail;\n \n const cache = {};\n\n let labelText = \"\";\n\n //if (showhide && hidden && trail.show && trailStartTime && (trailStartTime < _this.time)) showhide = false;\n if (hidden && !trail.show) showhide = true;\n\n if (trail.show && key in trail.starts) {\n const trailStart = trail.starts[key];\n //console.log(\"trailstart\", trailStart)\n // if this bubble is trail start bubble\n if (trailStart >= this.MDL.frame.value || showhide) {\n const trailData = this.model.getDataMapByFrameValue(trailStart, \"trail.addTrails\").getByStr(key);\n \n cache.labelText = labelText = this.__labelWithFrame(trailData);\n cache.labelX0 = trailData[this._alias(\"x\")];\n cache.labelY0 = trailData[this._alias(\"y\")];\n cache.scaledC0 = trailData.color != null ? this.cScale(trailData.color) : COLOR_WHITEISH,\n cache.scaledS0 = (trailData.size || trailData.size === 0) ? utils.areaToRadius(this.sScale(trailData.size)) : null;\n cache.valueS0 = trailData.size;\n trailData.hidden = hidden;\n this._labels.updateLabel(trailData, cache, cache.labelX0, cache.labelY0, trailData.size, trailData.color, labelText, trailData.size_label, duration, showhide);\n }\n } else {\n cache.labelText = labelText = this.__labelWithoutFrame(d);\n cache.labelX0 = x;\n cache.labelY0 = y;\n cache.scaledC0 = d.color != null ? this.cScale(d.color) : COLOR_WHITEISH,\n cache.scaledS0 = (d.size || d.size === 0) ? utils.areaToRadius(this.sScale(d.size)) : null;\n cache.valueS0 = d.size;\n d.hidden = hidden;\n this._labels.updateLabel(d, cache, x, y, d.size, d.color, labelText, d.size_label, duration, showhide);\n }\n }\n }\n \n _updateLabels(duration) {\n //console.log(\"updateLabels\");\n\n const selectedFilter = this.MDL.selected.data.filter;\n const trail = this.MDL.trail;\n\n for (const key of selectedFilter.markers.keys()) {\n if (!(key in trail.starts))\n continue;\n\n if (!this._labels.cached[key]) this._labels.cached[key] = {};\n const cache = this._labels.cached[key];\n\n const datamap = (trail.show ? this.model.getDataMapByFrameValue(trail.starts[key], \"trail.addTrails\") : this.model.dataMap);\n if (!datamap.hasByStr(key))\n continue;\n\n const d = datamap.getByStr(key);\n \n cache.labelText = this[(trail.show && this.ui.timeInTrails ? \"__labelWithFrame\" : \"__labelWithoutFrame\")](d);\n cache.labelX0 = d[this._alias(\"x\")];\n cache.labelY0 = d[this._alias(\"y\")];\n cache.scaledC0 = d.color != null ? this.cScale(d.color) : COLOR_WHITEISH,\n cache.scaledS0 = (d.size || d.size === 0) ? utils.areaToRadius(this.sScale(d.size)) : null;\n cache.valueS0 = d.size;\n cache.initTextBBox = null;\n cache.initFontSize = null;\n this._labels.updateLabel({ [Symbol.for(\"key\")]: key }, null, null, null, null, null, null, d.size_label, duration);\n }\n }\n\n __labelWithoutFrame(d) {\n const markerSpace = this.model.data.space;\n if (typeof d.label == \"object\") \n return Object.entries(d.label)\n .filter(([k, v]) => k != this.MDL.frame.data.concept)\n //sort parts of the name along the marker space array, so we get geo, gender instead of gender, geo\n .sort(([ak, av], [bk, bv]) => markerSpace.indexOf(ak) - markerSpace.indexOf(bk))\n //add keys where values are numbers, such as \"age: 69\"\n .map(([k, v]) => utils.isNumber(v) ? k + \": \" + v : v)\n .join(\", \");\n if (d.label != null) return \"\" + d.label;\n return d[Symbol.for(\"key\")];\n }\n\n __labelWithFrame(d) {\n const frameConcept = this.MDL.frame.data.concept;\n return this.__labelWithoutFrame(d) + \" \" + this.localise(d && d.label && d.label[frameConcept] || d && d.frame || this.MDL.frame.value);\n }\n\n _alias(enc) {\n return this.state.alias?.[enc] || enc;\n }\n}\n\n_VizabiBubbleChart.DEFAULT_UI = {\n show_ticks: true,\n showForecast: false,\n showForecastOverlay: true,\n pauseBeforeForecast: true,\n opacityHighlight: 1.0,\n opacitySelect: 1.0,\n opacityHighlightDim: 0.1,\n opacitySelectDim: 0.3,\n opacityRegular: 0.5,\n timeInBackground: true,\n timeInTrails: true,\n lockNonSelected: 0,\n panWithArrow: false,\n adaptMinMaxZoom: false,\n cursorMode: \"arrow\",\n zoomOnScrolling: true,\n decorations: {\n enabled: true,\n xAxisGroups: null //left to be set by external page\n },\n superhighlightOnMinimapHover: true,\n whenHovering: {\n showProjectionLineX: true,\n showProjectionLineY: true,\n higlightValueX: true,\n higlightValueY: true\n },\n labels: {\n enabled: true,\n dragging: true,\n removeLabelBox: false\n },\n margin: {\n left: 0,\n top: 0\n }\n};\n\n//export default BubbleChart;\nexport const VizabiBubbleChart = decorate(_VizabiBubbleChart, {\n \"MDL\": computed,\n \"cScale\": computed\n});\n\nChart.add(\"bubblechart\", VizabiBubbleChart);\n","import \"./styles.scss\";\nimport { \n BaseComponent,\n TimeSlider,\n DataNotes,\n DataWarning,\n ErrorMessage,\n SpaceConfig,\n LocaleService,\n LayoutService,\n CapitalVizabiService,\n TreeMenu,\n SteppedSlider,\n Dialogs,\n ButtonList,\n Repeater,\n versionInfo\n} from \"@vizabi/shared-components\";\nimport {VizabiBubbleChart} from \"./bubblechart-cmp.js\";\n\nexport default class BubbleChart extends BaseComponent {\n\n constructor(config){\n\n const markerName = config.options?.markerNames?.bubble || \"bubble\";\n const fullMarker = config.model.markers[markerName];\n config.Vizabi.utils.applyDefaults(fullMarker.config, BubbleChart.DEFAULT_CORE(markerName)); \n\n const frameType = config.Vizabi.stores.encodings.modelTypes.frame;\n const { marker, splashMarker } = frameType.splashMarker(fullMarker);\n \n config.model.markers[markerName] = marker;\n\n config.name = \"bubblechart\";\n\n config.subcomponents = [{\n type: Repeater,\n placeholder: \".vzb-repeater\",\n model: marker,\n options: {\n repeatedComponent: VizabiBubbleChart,\n repeatedComponentCssClass: \"vzb-bubblechart\"\n },\n name: \"chart\",\n },{\n type: TimeSlider,\n placeholder: \".vzb-timeslider\",\n model: marker,\n name: \"time-slider\"\n },{\n type: SteppedSlider,\n placeholder: \".vzb-speedslider\",\n model: marker,\n name: \"speed-slider\"\n },{\n type: TreeMenu,\n placeholder: \".vzb-treemenu\",\n model: marker,\n name: \"tree-menu\"\n },{\n type: DataWarning,\n placeholder: \".vzb-datawarning\",\n options: {button: \".vzb-datawarning-button\"},\n model: marker,\n name: \"data-warning\"\n },{\n type: DataNotes,\n placeholder: \".vzb-datanotes\",\n model: marker\n },{\n type: Dialogs,\n placeholder: \".vzb-dialogs\",\n model: marker,\n name: \"dialogs\"\n },{\n type: ButtonList,\n placeholder: \".vzb-buttonlist\",\n model: marker,\n name: \"buttons\"\n },{\n type: SpaceConfig,\n placeholder: \".vzb-spaceconfig\",\n options: {button: \".vzb-spaceconfig-button\"},\n model: marker,\n name: \"space-config\"\n },{\n type: ErrorMessage,\n placeholder: \".vzb-errormessage\",\n model: marker,\n name: \"error-message\"\n }];\n\n config.template = `\n <div class=\"vzb-repeater\"></div>\n <div class=\"vzb-animationcontrols\">\n <div class=\"vzb-timeslider\"></div>\n <div class=\"vzb-speedslider\"></div>\n </div>\n <div class=\"vzb-sidebar\">\n <div class=\"vzb-dialogs\"></div>\n <div class=\"vzb-buttonlist\"></div>\n </div>\n <div class=\"vzb-treemenu\"></div>\n <div class=\"vzb-datawarning\"></div>\n <div class=\"vzb-spaceconfig\"></div>\n <div class=\"vzb-datanotes\"></div>\n <div class=\"vzb-errormessage\"></div>\n `;\n\n config.locale.Vizabi = config.Vizabi;\n config.layout.Vizabi = config.Vizabi;\n config.services = {\n Vizabi: new CapitalVizabiService({Vizabi: config.Vizabi}),\n locale: new LocaleService(config.locale),\n layout: new LayoutService(config.layout)\n };\n\n super(config);\n\n this.splashMarker = splashMarker;\n }\n}\n\nBubbleChart.DEFAULT_UI = {\n chart: {\n }\n};\n\nBubbleChart.mainComponent = VizabiBubbleChart;\n\nBubbleChart.DEFAULT_CORE = (markerName) => ({\n requiredEncodings: [\"x\", \"y\", \"size\"],\n encoding: {\n \"selected\": {\n modelType: \"selection\",\n data: { \n filter: { \n ref: `markers.${markerName}.encoding.trail.data.filter`\n }\n }\n },\n \"highlighted\": { modelType: \"selection\" },\n \"superhighlighted\": { modelType: \"selection\" },\n \"x\": { },\n \"y\": { },\n \"order\": { modelType: \"order\",\n data: { \n ref: `markers.${markerName}.encoding.size.data.config`\n }\n },\n \"size\": {\n scale: {\n modelType: \"size\",\n allowedTypes: [\"linear\", \"log\", \"genericLog\", \"pow\", \"point\"],\n range: [0, 50]\n }\n },\n \"color\": { scale: { modelType: \"color\" } },\n \"label\": { data: { modelType: \"entityPropertyDataConfig\" } },\n \"frame\": { modelType: \"frame\" },\n \"trail\": { modelType: \"trail\" }, \n \"size_label\": {\n data: {\n constant: \"_default\"\n },\n scale: {\n modelType: \"size\",\n allowedTypes: [\"linear\", \"log\", \"genericLog\", \"pow\", \"point\"]\n }\n },\n \"repeat\": {\n modelType: \"repeat\",\n allowEnc: [\"y\", \"x\"]\n }\n }\n});\n\nBubbleChart.versionInfo = { version: __VERSION, build: __BUILD, package: __PACKAGE_JSON_FIELDS, sharedComponents: versionInfo};\n"],"names":["utils","Icons","BaseComponent","Utils","action","decorate","computed","observable","Chart","Labels","DateTimeBackground","BCAxisTitles","axisSmart","runInAction","Repeater","TimeSlider","SteppedSlider","TreeMenu","DataWarning","DataNotes","Dialogs","ButtonList","SpaceConfig","ErrorMessage","CapitalVizabiService","LocaleService","LayoutService","versionInfo"],"mappings":"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"}
1
+ {"version":3,"file":"bubblechart.js","sources":["../src/panzoom.js","../src/axistitles.js","../src/decorations.js","../src/bubblechart-cmp.js","../src/bubblechart-tool.js"],"sourcesContent":["import {\n LegacyUtils as utils,\n} from \"@vizabi/shared-components\";\nimport * as d3 from \"d3\";\n\nexport default class PanZoom {\n\n constructor(context) {\n this.context = context;\n\n this.dragRectangle = d3.drag();\n this.zoomer = d3.zoom();\n\n // this.dragLock = false;\n\n this.dragRectangle\n .filter(event => !event.button)\n .subject(this.dragSubject())\n .on(\"start\", this.drag().start)\n .on(\"drag\", this.drag().go)\n .on(\"end\", this.drag().stop);\n\n this.zoomer\n .filter(this.zoomFilter())\n .scaleExtent([0.0625, +Infinity])\n .on(\"start\", this.zoom().start)\n .on(\"zoom\", this.zoom().go)\n .on(\"end\", this.zoom().stop);\n\n this.zoomer.ratioX = 1;\n this.zoomer.ratioY = 1;\n\n this.context._zoomedXYMinMax = {\n x: { zoomedMin: null, zoomedMax: null },\n y: { zoomedMin: null, zoomedMax: null }\n };\n }\n\n dragSubject() {\n const _this = this.context;\n\n return function(event) {\n /*\n * Do not drag if the Ctrl key, Meta key, or plus cursor mode is\n * not enabled. Also do not drag if zoom-pinching on touchmove\n * events.\n */\n if (!(event.sourceEvent.ctrlKey || event.sourceEvent.metaKey ||\n _this.ui.cursorMode === \"plus\") || (_this.ui.cursorMode === \"minus\") ||\n (event.sourceEvent.type === \"touchmove\" || event.sourceEvent.type === \"touchstart\") &&\n (event.sourceEvent.touches.length > 1 || event.sourceEvent.targetTouches.length > 1)) {\n return null;\n }\n\n return {\n x: d3.pointer(event, this)[0],\n y: d3.pointer(event, this)[1]\n };\n };\n }\n\n drag() {\n const _this = this.context;\n const self = this;\n\n return {\n start(event) {\n /*\n * Do not drag if the Ctrl key, Meta key, or plus cursor mode is\n * not enabled. Also do not drag if zoom-pinching on touchmove\n * events.\n */\n // if(!(event.sourceEvent.ctrlKey || event.sourceEvent.metaKey ||\n // _this.ui.cursorMode === \"plus\") ||\n // (event.sourceEvent.type === \"touchmove\" || event.sourceEvent.type === \"touchstart\") &&\n // (event.sourceEvent.touches.length > 1 || event.sourceEvent.targetTouches.length > 1)) {\n // return;\n // }\n\n // self.dragLock = true;\n this.origin = {\n x: d3.pointer(event, this)[0],\n y: d3.pointer(event, this)[1]\n };\n _this.DOM.zoomRect.classed(\"vzb-invisible\", false);\n },\n\n go(event) {\n const origin = this.origin;\n const mouse = {\n x: event.x,\n y: event.y\n };\n\n _this.DOM.zoomRect\n .attr(\"x\", Math.min(mouse.x, origin.x))\n .attr(\"y\", Math.min(mouse.y, origin.y))\n .attr(\"width\", Math.abs(mouse.x - origin.x))\n .attr(\"height\", Math.abs(mouse.y - origin.y));\n },\n\n stop(event) {\n // if (!self.dragLock) return;\n // self.dragLock = false;\n\n _this.DOM.zoomRect\n .attr(\"width\", 0)\n .attr(\"height\", 0)\n .classed(\"vzb-invisible\", true);\n\n this.target = {\n x: d3.pointer(event, this)[0],\n y: d3.pointer(event, this)[1]\n };\n if (Math.abs(this.origin.x - this.target.x) < 10 || Math.abs(this.origin.y - this.target.y) < 10) return;\n\n /*\n * Only compensate for dragging when the Ctrl key or Meta key\n * are pressed, or if the cursorMode is not in plus mode.\n */\n const compensateDragging = event.sourceEvent.ctrlKey ||\n event.sourceEvent.metaKey ||\n _this.ui.cursorMode === \"plus\";\n\n self._zoomOnRectangle(\n d3.select(this),\n this.origin.x,\n this.origin.y,\n this.target.x,\n this.target.y,\n compensateDragging, 500\n );\n }\n };\n }\n\n zoomFilter() {\n const _this = this.context;\n\n return function(event) {\n\n if (event.ctrlKey || event.metaKey) return false;\n\n // Cancel drag lock when zoom-pinching via touchmove events.\n if ((event.type === \"touchmove\" || event.type === \"touchstart\") &&\n (event.touches.length > 1 || event.targetTouches.length > 1)) return true;\n\n if ((event.type === \"wheel\" || event.type === \"mousewheel\") &&\n _this.ui.zoomOnScrolling) {\n return true;\n }\n\n if ((event.type === \"mousedown\" || event.type === \"touchstart\") &&\n (_this.ui.cursorMode !== \"plus\") && (_this.ui.cursorMode !== \"minus\") &&\n (_this.ui.panWithArrow || _this.ui.cursorMode === \"hand\")) return true;\n\n return false;\n };\n }\n\n zoom() {\n const _this = this.context;\n const zoomer = this.zoomer;\n const self = this;\n\n return {\n start() {\n //this.savedScale = zoomer.scale;\n if ((_this.ui.cursorMode !== \"plus\") && (_this.ui.cursorMode !== \"minus\")) {\n _this.DOM.chartSvg.classed(\"vzb-zooming\", true);\n }\n\n },\n go(event) {\n\n const sourceEvent = event.sourceEvent;\n\n let zoom = event.transform.k;\n\n let pan = [event.transform.x, event.transform.y];//event.translate;\n let ratioY = zoomer.ratioY;\n let ratioX = zoomer.ratioX;\n\n _this.draggingNow = true;\n\n //value protections and fallbacks\n if (isNaN(zoom) || zoom == null) zoom = zoomer.scale;\n if (isNaN(zoom) || zoom == null) zoom = 1;\n\n //TODO: this is a patch to fix #221. A proper code review of zoom and zoomOnRectangle logic is needed\n /*\n * Mouse wheel and touchmove events set the zoom value\n * independently of axis ratios. If the zoom event was triggered\n * by a mouse wheel event scrolling down or touchmove event with\n * more than 1 contact that sets zoom to 1, then set the axis\n * ratios to 1 as well, which will fully zoom out.\n */\n if (zoom === 1 && sourceEvent !== null &&\n ((sourceEvent.type === \"wheel\" || sourceEvent.type === \"mousewheel\") && (sourceEvent.deltaY || -sourceEvent.wheelDelta) > 0 ||\n sourceEvent.type === \"touchmove\" && sourceEvent.touches.length > 1)) {\n zoomer.ratioX = 1;\n ratioX = 1;\n zoomer.ratioY = 1;\n ratioY = 1;\n }\n\n if (isNaN(pan[0]) || isNaN(pan[1]) || pan[0] == null || pan[1] == null) pan = [0, 0];\n\n // limit the zooming, so that it never goes below min value of zoom for any of the axes\n const minZoomScale = zoomer.scaleExtent()[0];\n if (zoom * ratioY < minZoomScale) {\n ratioY = minZoomScale / zoom;\n zoomer.ratioY = ratioY;\n }\n if (zoom * ratioX < minZoomScale) {\n ratioX = minZoomScale / zoom;\n zoomer.ratioX = ratioX;\n }\n\n const zoomXOut = zoom * ratioX < 1;\n const zoomYOut = zoom * ratioY < 1;\n\n //limit the panning, so that we are never outside the possible range\n if (!zoomXOut) {\n if (pan[0] > 0) pan[0] = 0;\n if (pan[0] < (1 - zoom * ratioX) * _this.width) pan[0] = (1 - zoom * ratioX) * _this.width;\n } else {\n if (pan[0] < 0) pan[0] = 0;\n if (pan[0] > (1 - zoom * ratioX) * _this.width) pan[0] = (1 - zoom * ratioX) * _this.width;\n }\n\n if (!zoomYOut) {\n if (pan[1] > 0) pan[1] = 0;\n if (pan[1] < (1 - zoom * ratioY) * _this.height) pan[1] = (1 - zoom * ratioY) * _this.height;\n } else {\n if (pan[1] < 0) pan[1] = 0;\n if (pan[1] > (1 - zoom * ratioY) * _this.height) pan[1] = (1 - zoom * ratioY) * _this.height;\n }\n\n //limit zoom translate\n self.zoomSelection.property(\"__zoom\", d3.zoomIdentity.translate(pan[0], pan[1]).scale(zoom));\n\n const xPanOffset = _this.width * zoom * ratioX;\n const yPanOffset = _this.height * zoom * ratioY;\n\n const xRange = [0 * zoom * ratioX + pan[0], xPanOffset + pan[0]];\n const yRange = [yPanOffset + pan[1], 0 * zoom * ratioY + pan[1]];\n\n const xRangeBumped = _this._rangeBump(xRange);\n const yRangeBumped = _this._rangeBump(yRange);\n\n /*\n * Shift xRange and yRange by the difference between the bumped\n * ranges, which is scaled by the zoom factor. This accounts for\n * the range bump, which controls a gutter around the\n * bubblechart, while correctly zooming.\n */\n const xRangeMinOffset = (xRangeBumped[0] - xRange[0]) * zoom * ratioX;\n const xRangeMaxOffset = (xRangeBumped[1] - xRange[1]) * zoom * ratioX;\n\n const yRangeMinOffset = (yRangeBumped[0] - yRange[0]) * zoom * ratioY;\n const yRangeMaxOffset = (yRangeBumped[1] - yRange[1]) * zoom * ratioY;\n\n xRange[0] += xRangeMinOffset;\n xRange[1] += xRangeMaxOffset;\n\n yRange[0] += yRangeMinOffset;\n yRange[1] += yRangeMaxOffset;\n\n // Calculate the maximum xRange and yRange available.\n const xRangeBounds = [0, _this.width];\n const yRangeBounds = [_this.height, 0];\n\n const xRangeBoundsBumped = _this._rangeBump(xRangeBounds);\n const yRangeBoundsBumped = _this._rangeBump(yRangeBounds);\n\n /*\n * Set the pan to account for the range bump by subtracting\n * offsets and preventing panning past the range bump gutter.\n */\n if (!zoomXOut) {\n if (xRange[0] > xRangeBoundsBumped[0]) pan[0] = xRangeBoundsBumped[0] - xRangeMinOffset;\n if (xRange[1] < xRangeBoundsBumped[1]) pan[0] = xRangeBoundsBumped[1] - xRangeMaxOffset - xPanOffset;\n } else {\n if (xRange[0] < xRangeBoundsBumped[0]) pan[0] = xRangeBoundsBumped[0] - xRangeMinOffset;\n if (xRange[1] > xRangeBoundsBumped[1]) pan[0] = xRangeBoundsBumped[1] - xRangeMaxOffset - xPanOffset;\n }\n\n if (!zoomYOut) {\n if (yRange[0] < yRangeBoundsBumped[0]) pan[1] = yRangeBoundsBumped[0] - yRangeMinOffset - yPanOffset;\n if (yRange[1] > yRangeBoundsBumped[1]) pan[1] = yRangeBoundsBumped[1] - yRangeMaxOffset;\n } else {\n if (yRange[0] > yRangeBoundsBumped[0]) pan[1] = yRangeBoundsBumped[0] - yRangeMinOffset - yPanOffset;\n if (yRange[1] < yRangeBoundsBumped[1]) pan[1] = yRangeBoundsBumped[1] - yRangeMaxOffset;\n }\n\n //zoomer.translate = pan;\n //self.zoomSelection.property(\"__zoom\", d3.zoomIdentity.translate(pan[0], pan[1]).scale(zoom));\n\n /*\n * Clamp the xRange and yRange by the amount that the bounds\n * that are range bumped.\n *\n * Additionally, take the amount clamped on the end of the range\n * and either subtract or add it to the range's other end. This\n * prevents visible stretching of the range when only panning.\n */\n if (!zoomXOut) {\n if (xRange[0] > xRangeBoundsBumped[0]) {\n xRange[1] -= Math.abs(xRange[0] - xRangeBoundsBumped[0]);\n xRange[0] = xRangeBoundsBumped[0];\n }\n\n if (xRange[1] < xRangeBoundsBumped[1]) {\n xRange[0] += Math.abs(xRange[1] - xRangeBoundsBumped[1]);\n xRange[1] = xRangeBoundsBumped[1];\n }\n } else {\n if (xRange[0] < xRangeBoundsBumped[0]) {\n xRange[1] += Math.abs(xRange[0] - xRangeBoundsBumped[0]);\n xRange[0] = xRangeBoundsBumped[0];\n }\n\n if (xRange[1] > xRangeBoundsBumped[1]) {\n xRange[0] -= Math.abs(xRange[1] - xRangeBoundsBumped[1]);\n xRange[1] = xRangeBoundsBumped[1];\n }\n }\n\n if (!zoomYOut) {\n if (yRange[0] < yRangeBoundsBumped[0]) {\n yRange[1] += Math.abs(yRange[0] - yRangeBoundsBumped[0]);\n yRange[0] = yRangeBoundsBumped[0];\n }\n\n if (yRange[1] > yRangeBoundsBumped[1]) {\n yRange[0] -= Math.abs(yRange[1] - yRangeBoundsBumped[1]);\n yRange[1] = yRangeBoundsBumped[1];\n }\n } else {\n if (yRange[0] > yRangeBoundsBumped[0]) {\n yRange[1] -= Math.abs(yRange[0] - yRangeBoundsBumped[0]);\n yRange[0] = yRangeBoundsBumped[0];\n }\n\n if (yRange[1] < yRangeBoundsBumped[1]) {\n yRange[0] += Math.abs(yRange[1] - yRangeBoundsBumped[1]);\n yRange[1] = yRangeBoundsBumped[1];\n }\n }\n\n if (_this.MDL.x.scale.type === \"ordinal\") {\n _this.xScale.rangeBands(xRange);\n } else {\n _this.xScale.range(xRange);\n }\n\n if (_this.MDL.y.scale.type === \"ordinal\") {\n _this.yScale.rangeBands(yRange);\n } else {\n _this.yScale.range(yRange);\n }\n\n const formatter = function(n) {\n return utils.isDate(n) ? n : +n.toFixed(2);\n };\n\n const zoomedXRange = xRangeBoundsBumped;\n const zoomedYRange = yRangeBoundsBumped;\n\n /*\n * Set the zoomed min/max to the correct value depending on if the\n * min/max values lie within the range bound regions.\n */\n /*\n if(!zoomXOut) {\n zoomedXRange[0] = xRangeBounds[0] > xRange[0] ? xRangeBounds[0] : xRange[0];\n zoomedXRange[1] = xRangeBounds[1] < xRange[1] ? xRangeBounds[1] : xRange[1];\n }\n\n if(!zoomYOut) {\n zoomedYRange[0] = yRangeBounds[0] < yRange[0] ? yRangeBounds[0] : yRange[0];\n zoomedYRange[1] = yRangeBounds[1] > yRange[1] ? yRangeBounds[1] : yRange[1];\n }\n */\n\n _this._zoomedXYMinMax = {\n x: {\n zoomedMin: formatter(_this.xScale.invert(zoomedXRange[0])),\n zoomedMax: formatter(_this.xScale.invert(zoomedXRange[1]))\n },\n y: {\n zoomedMin: formatter(_this.yScale.invert(zoomedYRange[0])),\n zoomedMax: formatter(_this.yScale.invert(zoomedYRange[1]))\n }\n };\n\n //TODO/*avoid storing it in URL*/\n if (!zoomer.dontFeedToState) {\n // _this.ui.panzoom = {\n // x: Object.assign({}, _this._zoomedXYMinMax.x),\n // y: Object.assign({}, _this._zoomedXYMinMax.y), \n // }\n _this.MDL.x.scale.zoomed = [_this._zoomedXYMinMax.x.zoomedMin, _this._zoomedXYMinMax.x.zoomedMax];\n _this.MDL.y.scale.zoomed = [_this._zoomedXYMinMax.y.zoomedMin, _this._zoomedXYMinMax.y.zoomedMax];\n }\n\n const optionsY = _this.yAxis.labelerOptions();\n const optionsX = _this.xAxis.labelerOptions();\n optionsY.limitMaxTickNumber = zoom * ratioY < 1.5 ? 8 : zoom * ratioY * 8;\n optionsX.limitMaxTickNumber = zoom * ratioX < 1.5 ? 8 : zoom * ratioX * 8;\n optionsY.transitionDuration = zoomer.duration;\n optionsX.transitionDuration = zoomer.duration;\n\n _this.DOM.xAxisEl.call(_this.xAxis.labelerOptions(optionsX));\n _this.DOM.yAxisEl.call(_this.yAxis.labelerOptions(optionsY));\n _this.redrawData(zoomer.duration);\n //_this._trails.run(\"resize\", null, zoomer.duration);\n\n zoomer.duration = 0;\n },\n\n stop() {\n _this.DOM.chartSvg.classed(\"vzb-zooming\", false);\n // if (this.quitZoom) return;\n\n //Force the update of the URL and history, with the same values\n if (!zoomer.dontFeedToState) {\n // _this.ui.panzoom = {\n // x: Object.assign({}, _this._zoomedXYMinMax.x),\n // y: Object.assign({}, _this._zoomedXYMinMax.y), \n // }\n _this.MDL.x.scale.zoomed = [_this._zoomedXYMinMax.x.zoomedMin, _this._zoomedXYMinMax.x.zoomedMax];\n _this.MDL.y.scale.zoomed = [_this._zoomedXYMinMax.y.zoomedMin, _this._zoomedXYMinMax.y.zoomedMax];\n //_this.model.marker.set(_this._zoomedXYMinMax, true, true);\n }\n zoomer.dontFeedToState = null;\n\n _this.draggingNow = false;\n }\n };\n }\n\n expandCanvas(duration) {\n const _this = this.context;\n if (!duration) duration = _this.duration;\n\n //d3 extent returns min and max of the input array as [min, max]\n const mmX = d3.extent(utils.values(_this.frame.x));\n const mmY = d3.extent(utils.values(_this.frame.y));\n\n //protection agains unreasonable min-max results -- abort function\n if (!mmX[0] && mmX[0] !== 0 || !mmX[1] && mmX[1] !== 0 || !mmY[0] && mmY[0] !== 0 || !mmY[1] && mmY[1] !== 0) {\n return utils.warn(\"panZoom.expandCanvas: X or Y min/max are broken. Aborting with no action\");\n }\n /*\n * Use a range bumped scale to correctly accommodate the range bump\n * gutter.\n */\n const suggestedFrame = {\n x1: _this.xScale(mmX[0]),\n y1: _this.yScale(mmY[0]),\n x2: _this.xScale(mmX[1]),\n y2: _this.yScale(mmY[1])\n };\n const xBounds = [0, _this.width];\n const yBounds = [_this.height, 0];\n\n // Get the current zoom frame based on the current dimensions.\n const frame = {\n x1: xBounds[0],\n x2: xBounds[1],\n y1: yBounds[0],\n y2: yBounds[1]\n };\n\n const TOLERANCE = 0.0;\n\n /*\n * If there is no current zoom frame, or if any of the suggested frame\n * points extend outside of the current zoom frame, then expand the\n * canvas.\n */\n if (!_this.isCanvasPreviouslyExpanded ||\n suggestedFrame.x1 < frame.x1 * (1 - TOLERANCE) || suggestedFrame.x2 > frame.x2 * (1 + TOLERANCE) ||\n suggestedFrame.y2 < frame.y2 * (1 - TOLERANCE) || suggestedFrame.y1 > frame.y1 * (1 + TOLERANCE)) {\n /*\n * If there is already a zoom frame, then clamp the suggested frame\n * points to only zoom out and expand the canvas.\n *\n * If any of x1, x2, y1, or y2 is within the current frame\n * boundaries, then clamp them to the frame boundaries. If any of\n * the above values will translate into a data value that is outside\n * of the possible data range, then clamp them to the frame\n * coordinate that corresponds to the maximum data value that can\n * be displayed.\n */\n if (_this.isCanvasPreviouslyExpanded) {\n /*\n * Calculate bounds and bumped scale for calculating the data boundaries\n * to which the suggested frame points need to be clamped.\n */\n const xBoundsBumped = _this._rangeBump(xBounds);\n const yBoundsBumped = _this._rangeBump(yBounds);\n\n if (suggestedFrame.x1 > xBoundsBumped[0]) suggestedFrame.x1 = xBoundsBumped[0];\n if (suggestedFrame.x2 < xBoundsBumped[1]) suggestedFrame.x2 = xBoundsBumped[1];\n if (suggestedFrame.y1 < yBoundsBumped[0]) suggestedFrame.y1 = yBoundsBumped[0];\n if (suggestedFrame.y2 > yBoundsBumped[0]) suggestedFrame.y2 = yBoundsBumped[1];\n }\n\n _this.isCanvasPreviouslyExpanded = true;\n this._zoomOnRectangle(_this.element, suggestedFrame.x1, suggestedFrame.y1,\n suggestedFrame.x2, suggestedFrame.y2, false, duration);\n } else {\n _this.redrawDataPoints(duration);\n }\n }\n\n zoomToMaxMin(zoomedMinX, zoomedMaxX, zoomedMinY, zoomedMaxY, duration, dontFeedToState) {\n const _this = this.context;\n let minX = zoomedMinX;\n let maxX = zoomedMaxX;\n let minY = zoomedMinY;\n let maxY = zoomedMaxY;\n\n const xDomain = _this.xScale.domain();\n const yDomain = _this.yScale.domain();\n\n /*\n * Prevent zoomout if only one of zoom edges set outside domain\n */\n if (minX < xDomain[0] && maxX < xDomain[1]) minX = xDomain[0];\n if (minX > xDomain[0] && maxX > xDomain[1]) maxX = xDomain[1];\n if (minY < yDomain[0] && maxY < yDomain[1]) minY = yDomain[0];\n if (minY > yDomain[0] && maxY > yDomain[1]) maxY = yDomain[1];\n\n\n const xRange = [_this.xScale(minX), _this.xScale(maxX)];\n const yRange = [_this.yScale(minY), _this.yScale(maxY)];\n\n\n this._zoomOnRectangle(_this.element, xRange[0], yRange[0], xRange[1], yRange[1], false, duration, dontFeedToState);\n }\n\n _zoomOnRectangle(element, zoomedX1, zoomedY1, zoomedX2, zoomedY2, compensateDragging, duration, dontFeedToState) {\n const _this = this.context;\n const zoomer = this.zoomer;\n const transform = d3.zoomTransform(this.zoomSelection.node());\n\n const x1 = zoomedX1;\n const y1 = zoomedY1;\n const x2 = zoomedX2;\n const y2 = zoomedY2;\n\n /*\n * When dragging to draw a rectangle, the translate vector has (x2 - x1)\n * added to zoomer.translate()[0], and (y2 - 1) added to\n * zoomer.translate()[1].\n *\n * We need to compensate for this addition when\n * zooming with a rectangle, because zooming with a rectangle will\n * update the translate vector with new values based on the rectangle\n * dimensions.\n */\n if (compensateDragging) {\n transform.translate(\n x1 - x2,\n y1 - y2\n );\n }\n\n const xRangeBounds = [0, _this.width];\n const yRangeBounds = [_this.height, 0];\n\n const xRangeBoundsBumped = _this._rangeBump(xRangeBounds);\n const yRangeBoundsBumped = _this._rangeBump(yRangeBounds);\n\n const minZoom = zoomer.scaleExtent()[0];\n const maxZoom = zoomer.scaleExtent()[1];\n let zoom, ratioX, ratioY;\n\n if (x1 == x2 || y1 == y2 || xRangeBoundsBumped[0] == xRangeBoundsBumped[1] || yRangeBoundsBumped[0] == yRangeBoundsBumped[1]) {\n return utils.warn(\"_zoomOnRectangle(): can not proceed because this may result in infinity zooms\");\n }\n\n if (Math.abs(x1 - x2) > Math.abs(y1 - y2)) {\n zoom = Math.abs(yRangeBoundsBumped[0] - yRangeBoundsBumped[1]) / Math.abs(y1 - y2) * transform.k;\n\n /*\n * Clamp the zoom scalar to the maximum zoom allowed before\n * calculating the next ratioX and ratioY.\n */\n if (zoom < minZoom) {\n zoomer.ratioY *= zoom / transform.k;\n zoom = minZoom;\n }\n if (zoom > maxZoom) zoom = maxZoom;\n\n ratioX = Math.abs(xRangeBoundsBumped[0] - xRangeBoundsBumped[1]) / Math.abs(x1 - x2) * transform.k / zoom * zoomer.ratioX;\n ratioY = zoomer.ratioY;\n } else {\n zoom = Math.abs(xRangeBoundsBumped[0] - xRangeBoundsBumped[1]) / Math.abs(x1 - x2) * transform.k;\n\n /*\n * Clamp the zoom scalar to the maximum zoom allowed before\n * calculating the next ratioX and ratioY.\n */\n if (zoom < minZoom) {\n zoomer.ratioX *= zoom / transform.k;\n zoom = minZoom;\n }\n if (zoom > maxZoom) zoom = maxZoom;\n\n ratioY = Math.abs(yRangeBoundsBumped[0] - yRangeBoundsBumped[1]) / Math.abs(y1 - y2) * transform.k / zoom * zoomer.ratioY;\n ratioX = zoomer.ratioX;\n }\n\n const pan = [\n (transform.x - Math.min(x1, x2)) / transform.k / zoomer.ratioX * zoom * ratioX + (xRangeBoundsBumped[0] - xRangeBounds[0]),\n (transform.y - Math.min(y1, y2)) / transform.k / zoomer.ratioY * zoom * ratioY + (yRangeBoundsBumped[1] - yRangeBounds[1])\n ];\n\n zoomer.dontFeedToState = dontFeedToState;\n zoomer.ratioY = ratioY || 1; //NaN defaults to 1\n zoomer.ratioX = ratioX || 1; //NaN defaults to 1\n zoomer.duration = duration ? duration : 0;\n\n this.zoomSelection.call(zoomer.transform, d3.zoomIdentity.translate(pan[0], pan[1]).scale(zoom));\n }\n\n /*\n * Incrementally zoom in or out and pan the view so that it never looses the point where click happened\n * this function is a modified d3's own zoom behavior on double click\n * for the original code see https://github.com/mbostock/d3/blob/master/src/behavior/zoom.js\n * function dblclicked() and what it refers to\n */\n zoomByIncrement(event, direction, duration) {\n const transform = d3.zoomTransform(this.zoomSelection.node());\n\n let ratio = transform.k;\n const pan = [transform.x, transform.y];\n\n const mouse = d3.pointer(event, this.zoomSelection.node());\n let k = Math.log(ratio) / Math.LN2;\n\n //change factor direction based on the input. default is no direction supplied\n if (direction == \"plus\" || !direction) k = Math.floor(k) + 1;\n if (direction == \"minus\") k = Math.ceil(k) - 1;\n\n //decode panning\n let locus = [(mouse[0] - pan[0]) / ratio, (mouse[1] - pan[1]) / ratio];\n\n //recalculate zoom ratio\n const scaleExtent = this.zoomer.scaleExtent();\n if (ratio == scaleExtent[0]) {\n this.zoomer.ratioY = 1;\n this.zoomer.ratioX = 1;\n }\n ratio = Math.max(scaleExtent[0], Math.min(scaleExtent[1], Math.pow(2, k)));\n\n //recalculate panning\n locus = [locus[0] * ratio + pan[0], locus[1] * ratio + pan[1]];\n pan[0] += mouse[0] - locus[0];\n pan[1] += mouse[1] - locus[1];\n\n this.zoomer.duration = duration || 0;\n this.zoomSelection.call(this.zoomer.transform, d3.zoomIdentity.translate(pan[0], pan[1]).scale(ratio));\n\n }\n\n /*\n * Reset zoom values without triggering a zoom event.\n */\n resetZoomState(element) {\n this.zoomer.ratioY = 1;\n this.zoomer.ratioX = 1;\n (element || this.zoomSelection).property(\"__zoom\", d3.zoomIdentity);\n }\n\n reset(element, duration) {\n const _this = this.context;\n _this.isCanvasPreviouslyExpanded = false;\n\n this.zoomer.ratioY = 1;\n this.zoomer.ratioX = 1;\n this.zoomer.duration = duration || 0;\n (element || this.zoomSelection).call(this.zoomer.transform, d3.zoomIdentity);\n }\n\n rerun(element) {\n (element || this.zoomSelection).call(this.zoomer.scaleBy, 1);\n }\n\n zoomSelection(element) {\n this.zoomSelection = element;\n }\n\n}\n","import {\n Utils,\n Icons,\n LegacyUtils as utils,\n BaseComponent,\n} from \"@vizabi/shared-components\";\n\nimport {\n decorate, computed, action, observable\n} from \"mobx\";\n \nconst {ICON_QUESTION} = Icons;\n\nclass BCAxisTitles extends BaseComponent {\n\n constructor(config) {\n config.template = `\n <g class=\"vzb-bc-axis-x-title\"><text></text></g>\n <g class=\"vzb-bc-axis-y-title\"><text></text></g>\n <g class=\"vzb-bc-axis-s-title\"><text></text></g>\n <g class=\"vzb-bc-axis-x-subtitle\"><text></text></g>\n <g class=\"vzb-bc-axis-y-subtitle\"><text></text></g>\n <g class=\"vzb-bc-axis-x-info vzb-noexport\"></g>\n <g class=\"vzb-bc-axis-y-info vzb-noexport\"></g>\n `;\n super(config);\n }\n\n setup(){\n this.DOM = {\n xTitle: this.element.select(\".vzb-bc-axis-x-title\"),\n yTitle: this.element.select(\".vzb-bc-axis-y-title\"),\n sTitle: this.element.select(\".vzb-bc-axis-s-title\"),\n xSubTitle: this.element.select(\".vzb-bc-axis-x-subtitle\"),\n ySubTitle: this.element.select(\".vzb-bc-axis-y-subtitle\"),\n xInfo: this.element.select(\".vzb-bc-axis-x-info\"),\n yInfo: this.element.select(\".vzb-bc-axis-y-info\")\n };\n\n this.axisTitleComplimentStrings = {Y: \"\", X: \"\", S: \"\", C: \"\"};\n\n this._initInfoElements();\n }\n\n draw(){\n this.localise = this.services.locale.auto();\n\n this.addReaction(this.updateUIStrings);\n this.addReaction(this.updateTreemenu);\n this.addReaction(this.updateSize);\n this.addReaction(this.updateInfoElements);\n }\n\n get MDL(){\n return {\n y: this.model.encoding[this.parent.state.alias?.y || \"y\"],\n x: this.model.encoding[this.parent.state.alias?.x || \"x\"],\n size: this.model.encoding.size,\n color: this.model.encoding.color\n };\n }\n\n updateTreemenu(){\n const treemenu = this.root.findChild({type: \"TreeMenu\"});\n\n this.DOM.yTitle\n .classed(\"vzb-disabled\", treemenu.state.ownReadiness !== Utils.STATUS.READY)\n .on(\"click\", () => {\n treemenu\n .encoding(this.parent._alias(\"y\"))\n .alignX(this.services.locale.isRTL() ? \"right\" : \"left\")\n .alignY(\"top\")\n .updateView()\n .toggle();\n });\n\n this.DOM.xTitle\n .classed(\"vzb-disabled\", treemenu.state.ownReadiness !== Utils.STATUS.READY)\n .on(\"click\", () => {\n treemenu\n .encoding(this.parent._alias(\"x\"))\n .alignX(this.services.locale.isRTL() ? \"right\" : \"left\")\n .alignY(\"bottom\")\n .updateView()\n .toggle();\n }); \n }\n\n updateUIStrings() {\n const {\n y, x, size, color\n } = this.MDL;\n\n this.strings = {\n title: {\n Y: Utils.getConceptName(y, this.localise),\n X: Utils.getConceptName(x, this.localise),\n S: Utils.getConceptName(size, this.localise),\n C: Utils.getConceptName(color, this.localise)\n },\n title_short: {\n Y: Utils.getConceptShortName(y, this.localise),\n X: Utils.getConceptShortName(x, this.localise),\n S: Utils.getConceptShortName(size, this.localise),\n C: Utils.getConceptShortName(color, this.localise)\n },\n subtitle: {\n Y: Utils.getConceptNameMinusShortName(y, this.localise),\n X: Utils.getConceptNameMinusShortName(x, this.localise)\n },\n unit: {\n Y: Utils.getConceptUnit(y),\n X: Utils.getConceptUnit(x),\n S: Utils.getConceptUnit(size),\n C: Utils.getConceptUnit(color)\n }\n };\n\n Promise.all([\n Utils.getConceptNameCompliment(y),\n Utils.getConceptNameCompliment(x),\n Utils.getConceptNameCompliment(size),\n Utils.getConceptNameCompliment(color)\n ]).then(action(response => { \n [ \n this.axisTitleComplimentStrings.Y,\n this.axisTitleComplimentStrings.X,\n this.axisTitleComplimentStrings.S,\n this.axisTitleComplimentStrings.C\n ] = response;\n }));\n }\n\n\n _initInfoElements() {\n const _this = this;\n const dataNotesDialog = () => this.root.findChild({type: \"DataNotes\"});\n const timeSlider = () => this.root.findChild({type: \"TimeSlider\"});\n\n utils.setIcon(this.DOM.yInfo, ICON_QUESTION)\n .on(\"click\", () => {\n dataNotesDialog().pin();\n })\n .on(\"mouseover\", function() {\n if (timeSlider().ui.dragging) return;\n const rect = this.getBBox();\n const coord = utils.makeAbsoluteContext(this, this.farthestViewportElement)(rect.x - 10, rect.y + rect.height + 10);\n const toolRect = _this.root.element.node().getBoundingClientRect();\n const chartRect = _this.element.node().getBoundingClientRect();\n dataNotesDialog()\n .setEncoding(_this.MDL.y)\n .show()\n .setPos(coord.x + chartRect.left - toolRect.left, coord.y);\n })\n .on(\"mouseout\", () => {\n if (timeSlider().ui.dragging) return;\n dataNotesDialog().hide();\n });\n\n utils.setIcon(this.DOM.xInfo, ICON_QUESTION)\n .on(\"click\", () => {\n dataNotesDialog().pin();\n })\n .on(\"mouseover\", function() {\n if (timeSlider().ui.dragging) return;\n const rect = this.getBBox();\n const coord = utils.makeAbsoluteContext(this, this.farthestViewportElement)(rect.x - 10, rect.y + rect.height + 10);\n const toolRect = _this.root.element.node().getBoundingClientRect();\n const chartRect = _this.element.node().getBoundingClientRect();\n dataNotesDialog()\n .setEncoding(_this.MDL.x)\n .show()\n .setPos(coord.x + chartRect.left - toolRect.left, coord.y);\n })\n .on(\"mouseout\", () => {\n if (timeSlider().ui.dragging) return;\n dataNotesDialog().hide();\n });\n }\n\n updateInfoElements() {\n this.services.layout.size;\n this.axisTitleComplimentStrings.X;\n this.axisTitleComplimentStrings.Y;\n\n const {xInfo, yInfo, xTitle, yTitle} = this.DOM;\n const {x, y} = this.MDL;\n const isRTL = this.services.locale.isRTL();\n const infoElHeight = this.parent.profileConstants.infoElHeight;\n const layoutProfile = this.services.layout.profile;\n\n if (yInfo.select(\"svg\").node()) {\n const titleBBox = yTitle.node().getBBox();\n const t = utils.transform(yTitle.node());\n const hTranslate = isRTL ? (titleBBox.x + t.translateX - infoElHeight * 1.4) : (titleBBox.x + t.translateX + titleBBox.width + infoElHeight * 0.4);\n const vTranslate = isRTL ? (t.translateY + infoElHeight * 1.4 + titleBBox.width * 0.5) : (t.translateY - infoElHeight * 0.4 - titleBBox.width * 0.5);\n const conceptPropsY = y.data.conceptProps;\n\n yInfo\n .classed(\"vzb-hidden\", !conceptPropsY.description && !conceptPropsY.sourceLink || this.services.layout.projector)\n .attr(\"transform\", layoutProfile !== \"SMALL\" ?\n `translate(${ t.translateX - infoElHeight * 0.8 }, ${ vTranslate }) rotate(-90)` :\n `translate(${ hTranslate },${ t.translateY - infoElHeight * 0.8 })`)\n .select(\"svg\")\n .attr(\"width\", infoElHeight + \"px\")\n .attr(\"height\", infoElHeight + \"px\");\n }\n\n if (xInfo.select(\"svg\").node()) {\n const titleBBox = xTitle.node().getBBox();\n const t = utils.transform(xTitle.node());\n const hTranslate = isRTL ? (titleBBox.x + t.translateX - infoElHeight * 1.4) : (titleBBox.x + t.translateX + titleBBox.width + infoElHeight * 0.4);\n const conceptPropsX = x.data.conceptProps;\n\n xInfo\n .classed(\"vzb-hidden\", !conceptPropsX.description && !conceptPropsX.sourceLink || this.services.layout.projector)\n .attr(\"transform\", `translate(${ hTranslate }, ${ t.translateY - infoElHeight * 0.8 })`)\n .select(\"svg\")\n .attr(\"width\", infoElHeight + \"px\")\n .attr(\"height\", infoElHeight + \"px\");\n }\n }\n\n\n _updateSTitle(width = this.parent.width, height = this.parent.height) {\n const { sTitle } = this.DOM;\n const { size, color } = this.MDL;\n const compl = this.axisTitleComplimentStrings;\n \n // vertical text about size and color\n const invisible = this.parent.profileConstants.hideSTitle\n && this.root.ui.dialogs.dialogs.sidebar.includes(\"colors\")\n && this.root.ui.dialogs.dialogs.sidebar.includes(\"size\");\n\n sTitle.classed(\"vzb-invisible\", invisible);\n if (invisible) return;\n\n const sTitleContent = !size.data.constant \n ? this.localise(\"buttons/size\") + \": \" + this.strings.title.S + (compl.S ? \" · \" + compl.S : \"\")\n : \"\";\n const cTitleContent = !color.data.constant \n ? this.localise(\"buttons/colors\") + \": \" + this.strings.title.C + (compl.C ? \" · \" + compl.C : \"\") \n : \"\";\n\n const sTitleText = sTitle\n .attr(\"text-anchor\", \"end\")\n .attr(\"transform\", \"translate(\" + width + \",\" + 20 + \") rotate(-90)\")\n .select(\"text\")\n .style(\"font-size\", null) // reset font size to remove jumpy measurement\n .text(sTitleContent + (sTitleContent && cTitleContent ? \", \" : \"\") + cTitleContent);\n\n // reduce font size if the caption doesn't fit\n const sTitleWidth = sTitleText.node().getBBox().width;\n const padding = 30;\n const font = parseInt(sTitleText.style(\"font-size\")) * (height - padding) / sTitleWidth;\n sTitleText.style(\"font-size\", sTitleWidth > (height - padding) ? font + \"px\" : null);\n }\n\n\n _updateYTitle(width = this.parent.width, height = this.parent.height) {\n const { yTitle, ySubTitle } = this.DOM;\n\n const { \n margin, \n infoElHeight, \n yAxisTitleBottomMargin, \n } = this.parent.profileConstants;\n\n const layoutProfile = this.services.layout.profile;\n\n const compl = this.axisTitleComplimentStrings;\n const isRTL = this.services.locale.isRTL();\n\n if (layoutProfile !== \"SMALL\") {\n ySubTitle\n .attr(\"transform\", \"translate(\" + 0 + \",\" + 0 + \") rotate(-90)\")\n .select(\"text\")\n .attr(\"dy\", infoElHeight * 0.6)\n .style(\"font-size\", (infoElHeight * 0.8) + \"px\")\n .text(this.strings.subtitle.Y);\n \n const yTitleText = yTitle.select(\"text\")\n .style(\"font-size\", infoElHeight + \"px\")\n .text(this.strings.title_short.Y + (compl.Y ? \" · \" + compl.Y : \"\"));\n\n yTitleText.append(\"tspan\")\n .classed(\"vzb-noexport\", true)\n .style(\"font-size\", (infoElHeight * 0.7) + \"px\")\n .attr(\"dx\", ( (isRTL ? -1 : 1) * infoElHeight * 0.25) + \"px\")\n .text(\"▼\");\n\n const doesntFit = yTitle.node().getBBox().width > height; \n \n yTitle\n .attr(\"text-anchor\", doesntFit ? \"start\" : \"middle\")\n .attr(\"transform\", \"translate(\" + (-margin.left - yAxisTitleBottomMargin) + \",\" + (doesntFit ? (isRTL ? 0 : height) : height / 2 ) + \") rotate(-90)\");\n\n } else {\n ySubTitle.select(\"text\").text(\"\");\n\n const yTitleText = yTitle\n .select(\"text\")\n .text(this.strings.title.Y + (compl.Y ? \" · \" + compl.Y : \"\"));\n \n const doesntFit = yTitleText.node().getBBox().width > width; \n if (doesntFit) yTitleText.text(this.strings.title_short.Y + (compl.Y ? \" · \" + compl.Y : \"\"));\n \n yTitle\n .attr(\"text-anchor\", \"start\")\n .attr(\"transform\", \"translate(\" + (isRTL ? width : 10 - margin.left) + \", -\" + yAxisTitleBottomMargin + \")\");\n }\n }\n\n\n _updateXTitle(width = this.parent.width, height = this.parent.height) {\n const { xTitle, xSubTitle } = this.DOM;\n\n const { \n margin, \n infoElHeight, \n xAxisTitleBottomMargin, \n } = this.parent.profileConstants;\n\n const layoutProfile = this.services.layout.profile;\n\n const compl = this.axisTitleComplimentStrings;\n const isRTL = this.services.locale.isRTL();\n\n if (layoutProfile !== \"SMALL\") {\n xSubTitle\n .attr(\"transform\", \"translate(\" + width + \",\" + height + \")\")\n .select(\"text\")\n .attr(\"dy\", -infoElHeight * 0.3)\n .style(\"font-size\", (infoElHeight * 0.8) + \"px\")\n .text(this.strings.subtitle.X);\n \n const xTitleText = xTitle.select(\"text\")\n .style(\"font-size\", infoElHeight + \"px\")\n .text(this.strings.title_short.X + (compl.X ? \" · \" + compl.X : \"\"));\n\n xTitleText \n .append(\"tspan\")\n .classed(\"vzb-noexport\", true)\n .style(\"font-size\", (infoElHeight * 0.7) + \"px\")\n .attr(\"dx\", ( (isRTL ? -1 : 1) * infoElHeight * 0.25) + \"px\")\n .text(\"▼\");\n\n } else {\n xSubTitle.select(\"text\").text(\"\");\n\n xTitle.select(\"text\") \n .text(this.strings.title.X + (compl.X ? \" · \" + compl.X : \"\"));\n }\n\n const doesntFit = xTitle.node().getBBox().width > width - 100;\n xTitle\n .attr(\"text-anchor\", doesntFit ? \"start\" : \"middle\")\n .attr(\"transform\", \"translate(\" + (doesntFit ? (isRTL ? width : 0) : width / 2) + \",\" + (height + margin.bottom - xAxisTitleBottomMargin) + \")\");\n \n if (doesntFit && layoutProfile === \"SMALL\") xTitle.select(\"text\").text(this.strings.title_short.X) + (compl.X ? \" · \" + compl.X : \"\"); \n }\n\n\n updateSize() {\n this.services.layout.size;\n \n const { \n margin, \n leftMarginRatio \n } = this.parent.profileConstants;\n\n const height = (this.parent.elementHeight - margin.top - margin.bottom) || 0;\n const width = (this.parent.elementWidth - margin.left * leftMarginRatio - margin.right) || 0;\n\n this._updateSTitle(width, height);\n this._updateYTitle(width, height);\n this._updateXTitle(width, height);\n \n }\n}\n\nconst decorated = decorate(BCAxisTitles, {\n \"MDL\": computed,\n \"axisTitleComplimentStrings\": observable\n});\nexport { decorated as BCAxisTitles };","import {\n Utils\n} from \"@vizabi/shared-components\";\nimport * as d3 from \"d3\";\n\nexport default class BCDecorations{\n constructor(){\n }\n \n update(duration) {\n const _this = this;\n\n const uiSetting = this.ui.decorations;\n const layoutProfile = this.services.layout.profile;\n const margin = this.profileConstants.margin;\n \n // x axis groups used for incomes\n const showxAxisGroups = uiSetting.xAxisGroups \n && uiSetting.xAxisGroups[this.MDL.x.data.concept] \n && uiSetting.enabled\n && layoutProfile !== \"SMALL\";\n \n this.DOM.xAxisGroupsEl.classed(\"vzb-invisible\", !showxAxisGroups);\n if (showxAxisGroups) {\n const axisGroupsData = Utils.injectIndexes(uiSetting.xAxisGroups[this.MDL.x.data.concept]);\n let xAxisGroups = this.DOM.xAxisGroupsEl.selectAll(\".vzb-bc-x-axis-group\").data(axisGroupsData);\n \n xAxisGroups.exit().remove();\n xAxisGroups = xAxisGroups.enter().append(\"g\").attr(\"class\", \"vzb-bc-x-axis-group\")\n .each(function(){\n const view = d3.select(this);\n view.append(\"text\").attr(\"class\", \"vzb-bc-x-axis-group-line\").text(\"◆\").style(\"text-anchor\",\"middle\");\n view.append(\"text\").attr(\"class\", \"vzb-bc-x-axis-group-text\");\n })\n .merge(xAxisGroups);\n \n const xAxisGroups_calcs = [];\n let useShorterLabels = false;\n \n // first pass: calculate label text sizes and margins\n xAxisGroups.each(function(d, i){\n const view = d3.select(this);\n \n const text = view.select(\"text.vzb-bc-x-axis-group-text\")\n .text(_this.localise(d.label));\n \n const calcs = {min: d.min, max: d.max};\n \n calcs.textHeight = text.node().getBBox().height;\n calcs.textWidth = text.node().getBBox().width;\n \n calcs.boundaryMinX_px = _this.xScale(d.min || d.min === 0? d.min : d3.min(_this.xScale.domain())) || 0;\n calcs.boundaryMaxX_px = _this.xScale(d.max || d.max === 0? d.max : d3.max(_this.xScale.domain())) || 0;\n \n calcs.centerX_px = (calcs.boundaryMinX_px + calcs.boundaryMaxX_px) / 2;\n calcs.marginX_px = (Math.abs(calcs.boundaryMinX_px - calcs.boundaryMaxX_px) - calcs.textWidth) / 2;\n \n if (calcs.marginX_px - calcs.textHeight < 0) useShorterLabels = true;\n \n xAxisGroups_calcs[i] = calcs;\n });\n \n // second pass: if at least one of labels doesn't fit, switch to compact mode and recalculate text sizes and margins\n if (useShorterLabels) {\n xAxisGroups.each(function(d, i){\n const view = d3.select(this);\n\n const text = view.select(\"text.vzb-bc-x-axis-group-text\")\n .text(_this.localise(d.label_short));\n\n const calcs = xAxisGroups_calcs[i];\n\n calcs.textWidth = text.node().getBBox().width;\n calcs.marginX_px = (Math.abs(calcs.boundaryMinX_px - calcs.boundaryMaxX_px) - calcs.textWidth) / 2;\n\n xAxisGroups_calcs[i] = calcs;\n });\n }\n \n // third pass: actually put labels in places\n xAxisGroups.each(function(d, i){\n const view = d3.select(this);\n \n const isFirst = (i == 0);\n const isLast = (i == xAxisGroups_calcs.length - 1);\n const calcs = xAxisGroups_calcs[i];\n const minMargin = calcs.textHeight/4;\n let x = calcs.centerX_px;\n \n if (isFirst) x = xAxisGroups_calcs[i+1].boundaryMinX_px - Math.max(xAxisGroups_calcs[i+1].marginX_px, minMargin);\n if (isLast) x = xAxisGroups_calcs[i-1].boundaryMaxX_px + Math.max(xAxisGroups_calcs[i-1].marginX_px, minMargin);\n \n view.select(\"text.vzb-bc-x-axis-group-text\")\n .style(\"text-anchor\", isFirst ? \"end\" : isLast ? \"start\" : \"middle\")\n .transition()\n .duration(duration || 0)\n .attr(\"dy\", \"-0.2em\")\n .attr(\"y\", calcs.textHeight)\n .attr(\"x\", x);\n \n view.select(\"text.vzb-bc-x-axis-group-line\")\n .classed(\"vzb-invisible\", isLast)\n .transition()\n .duration(duration || 0)\n .attr(\"dy\", \"-0.2em\")\n .attr(\"y\", calcs.textHeight * 0.9)\n .attr(\"x\", calcs.boundaryMaxX_px);\n });\n \n xAxisGroups.select(\"text.vzb-bc-x-axis-group-text\").on(\"mouseenter\", function(event, d) {\n const calcs = xAxisGroups_calcs[d.i];\n const parentView = d3.select(this.parentNode);\n \n d3.select(this).attr(\"font-weight\", \"bold\");\n parentView.append(\"rect\").lower()\n .attr(\"x\", calcs.boundaryMinX_px)\n .attr(\"width\", calcs.boundaryMaxX_px - calcs.boundaryMinX_px)\n .attr(\"y\", - margin.top)\n .attr(\"height\", _this.height + margin.top);\n \n if (calcs.min || calcs.min === 0) parentView.append(\"line\").lower()\n .attr(\"x1\", calcs.boundaryMinX_px)\n .attr(\"x2\", calcs.boundaryMinX_px)\n .attr(\"y1\", - margin.top)\n .attr(\"y2\", _this.height);\n \n if (calcs.max || calcs.max === 0) parentView.append(\"line\").lower()\n .attr(\"x1\", calcs.boundaryMaxX_px)\n .attr(\"x2\", calcs.boundaryMaxX_px)\n .attr(\"y1\", - margin.top)\n .attr(\"y2\", _this.height);\n \n }).on(\"mouseleave\", function() {\n const parentView = d3.select(this.parentNode);\n \n d3.select(this).attr(\"font-weight\", null);\n parentView.selectAll(\"rect\").remove();\n parentView.selectAll(\"line\").remove();\n });\n } \n \n // diagonal line that is used when the same idicator ID is used for both axis X and Y\n const showLineEqualXY = \n this.MDL.x.data.concept == this.MDL.y.data.concept \n && uiSetting.enabled\n && layoutProfile !== \"SMALL\";\n \n this.DOM.lineEqualXY.classed(\"vzb-invisible\", !showLineEqualXY);\n\n if (showLineEqualXY) {\n this.MDL.x.scale.type; //watch\n this.MDL.y.scale.type; //watch\n\n const domains = this.yScale.domain().concat(this.xScale.domain()),\n min = d3.min(domains), \n max = d3.max(domains), \n step = (max-min)/100;\n\n const sequence = d3.range(min, max, step).concat(max);\n\n const line = d3.line()\n .curve(d3.curveBasis)\n .x(d => this.xScale(d))\n .y(d => this.yScale(d));\n\n this.DOM.lineEqualXY\n .transition()\n .duration(duration || 0)\n .attr(\"d\", line(sequence));\n }\n }\n}","import {\n Chart,\n Utils,\n LegacyUtils as utils,\n axisSmart,\n Labels,\n DateTimeBackground\n} from \"@vizabi/shared-components\";\nimport PanZoom from \"./panzoom\";\nimport {BCAxisTitles} from \"./axistitles\";\nimport * as d3 from \"d3\";\n\nimport BCDecorations from \"./decorations.js\";\n\nimport {\n runInAction\n} from \"mobx\";\n\nimport {decorate, computed, observable} from \"mobx\";\n\nconst COLOR_WHITEISH = \"rgb(253, 253, 253)\";\nconst COLOR_BLACKISH = \"rgb(51, 51, 51)\";\nconst THICK_LINE_THRESHOLD_FOR_DARKER_COLOR = 3;\n\nconst marginScaleH = (marginMin, ratio = 0) => height => marginMin + height * ratio;\nconst marginScaleW = (marginMin, ratio = 0) => width => marginMin + width * ratio;\n\nfunction isTrailBubble(d){\n return !!d[Symbol.for(\"trailHeadKey\")];\n}\n\nconst MAX_RADIUS_EM = 0.05;\n\nconst PROFILE_CONSTANTS = (width, height) => ({\n SMALL: {\n margin: { top: 30, bottom: 35, left: 30, right: 10},\n leftMarginRatio: 1,\n padding: 2,\n minRadiusPx: 0.5,\n maxRadiusPx: Math.max(0.5, MAX_RADIUS_EM * utils.hypotenuse(width, height)),\n minTrailThicknessPx: 1,\n maxTrailThicknessPx: 4,\n infoElHeight: 16,\n yAxisTitleBottomMargin: 6,\n xAxisTitleBottomMargin: 4\n },\n MEDIUM: {\n margin: { top: 15, bottom: 40, left: 40, right: 15},\n leftMarginRatio: 1.6,\n padding: 2,\n minRadiusPx: 1,\n maxRadiusPx: Math.max(0.5, MAX_RADIUS_EM * utils.hypotenuse(width, height)),\n minTrailThicknessPx: 2,\n maxTrailThicknessPx: 6,\n infoElHeight: 20,\n yAxisTitleBottomMargin: 3,\n xAxisTitleBottomMargin: 4\n },\n LARGE: {\n margin: { top: 15, bottom: marginScaleH(30, 0.03)(height), left: marginScaleW(31, 0.015)(width), right: 20},\n leftMarginRatio: 1.8,\n padding: 2,\n minRadiusPx: 1,\n maxRadiusPx: Math.max(0.5, MAX_RADIUS_EM * utils.hypotenuse(width, height)),\n minTrailThicknessPx: 2,\n maxTrailThicknessPx: 8,\n infoElHeight: 22,\n yAxisTitleBottomMargin: 3,//marginScaleH(4, 0.01)(height),\n xAxisTitleBottomMargin: marginScaleH(0, 0.01)(height),\n hideSTitle: true\n }\n});\n\nconst PROFILE_CONSTANTS_FOR_PROJECTOR = (width, height) => ({\n MEDIUM: {\n margin: { top: 20, bottom: 55, left: 50, right: 20 },\n yAxisTitleBottomMargin: 3,\n xAxisTitleBottomMargin: 4,\n infoElHeight: 26,\n },\n LARGE: {\n margin: { top: 30, bottom: marginScaleH(45, 0.03)(height), left: marginScaleW(35, 0.025)(width), right: 30 },\n yAxisTitleBottomMargin: 3,//marginScaleH(4, 0.01)(height),\n xAxisTitleBottomMargin: marginScaleH(-5, 0.01)(height),\n infoElHeight: 32,\n hideSTitle: true\n }\n});\n\n// BUBBLE CHART COMPONENT\nclass _VizabiBubbleChart extends Chart {\n\n constructor(config) {\n config.subcomponents = [{\n type: Labels,\n placeholder: \".vzb-bc-labels\", \n options: {\n CSS_PREFIX: \"vzb-bc\",\n LABELS_CONTAINER_CLASS: \"vzb-bc-labels\",\n LINES_CONTAINER_CLASS: \"vzb-bc-lines\",\n SUPPRESS_HIGHLIGHT_DURING_PLAY: false\n },\n name: \"labels\"\n },{\n type: DateTimeBackground,\n placeholder: \".vzb-bc-date\"\n },{\n type: BCAxisTitles,\n placeholder: \".vzb-bc-axis-titles\"\n }];\n\n config.template = `\n <svg class=\"vzb-bubblechart-svg vzb-export\">\n <svg class=\"vzb-bubblechart-svg-back\">\n <g class=\"vzb-bc-graph\">\n <g class=\"vzb-bc-date\"></g>\n <svg class=\"vzb-bc-axis-x\"><g></g></svg>\n <svg class=\"vzb-bc-axis-y\"><g></g></svg>\n <line class=\"vzb-bc-projection-x\"></line>\n <line class=\"vzb-bc-projection-y\"></line>\n </g>\n </svg>\n <svg class=\"vzb-bubblechart-svg-main\">\n <g class=\"vzb-bc-graph\">\n <g class=\"vzb-bc-axis-titles\"></g>\n\n <svg class=\"vzb-bc-bubbles-crop\">\n <g class=\"vzb-zoom-selection\"></g>\n <rect class=\"vzb-bc-eventarea\"></rect>\n <g class=\"vzb-bc-trails\"></g>\n <g class=\"vzb-bc-bubbles\"></g>\n <rect class=\"vzb-bc-forecastoverlay vzb-hidden\" x=\"0\" y=\"0\" width=\"100%\" height=\"100%\" fill=\"url(#vzb-bc-pattern-lines-${config.id})\" pointer-events='none'></rect>\n </svg>\n\n <rect class=\"vzb-bc-zoom-rect\"></rect>\n </g>\n <g class=\"vzb-datawarning-button vzb-noexport\"></g>\n </svg>\n <svg class=\"vzb-bubblechart-svg-front\">\n <g class=\"vzb-bc-graph\">\n <svg class=\"vzb-bc-bubbles-crop\">\n <g class=\"vzb-bc-decorations\">\n <path class=\"vzb-bc-line-equal-xy vzb-invisible\"></path>\n <g class=\"vzb-bc-x-axis-groups\"></g>\n </g> \n <g class=\"vzb-bc-lines\"></g>\n <g class=\"vzb-bc-bubble-crown vzb-hidden\">\n <circle class=\"vzb-crown-glow\"></circle>\n <circle class=\"vzb-crown\"></circle>\n </g> \n </svg>\n <svg class=\"vzb-bc-labels-crop\">\n <g class=\"vzb-bc-labels\"></g>\n </svg>\n </g>\n </svg>\n <svg width=\"0\" height=\"0\">\n <defs>\n <filter class=\"vzb-noexport\" id=\"vzb-glow-filter-${config.id}\" x=\"-50%\" y=\"-50%\" width=\"200%\" height=\"200%\">\n <feGaussianBlur in=\"SourceGraphic\" stdDeviation=\"2\"></feGaussianBlur>\n </filter>\n <pattern class=\"vzb-noexport\" id=\"vzb-bc-pattern-lines-${config.id}\" x=\"0\" y=\"0\" patternUnits=\"userSpaceOnUse\" width=\"50\" height=\"50\" viewBox=\"0 0 10 10\"> \n <path d='M-1,1 l2,-2M0,10 l10,-10M9,11 l2,-2' stroke='black' stroke-width='3' opacity='0.08'/>\n </pattern> \n </defs>\n </svg>\n </svg>\n <div class=\"vzb-tooltip vzb-hidden vzb-tooltip-mobile\"></div>\n `;\n\n super(config);\n }\n\n setup() {\n\n this.DOM = {\n element: this.element,\n chartSvg: this.element.select(\"svg.vzb-bubblechart-svg-main\"),\n chartSvgFront: this.element.select(\"svg.vzb-bubblechart-svg-front\"),\n chartSvgBack: this.element.select(\"svg.vzb-bubblechart-svg-back\"),\n chartSvgAll: this.element.selectAll(\"svg.vzb-bubblechart-svg\"),\n graphAll: this.element.selectAll(\".vzb-bc-graph\"),\n bubbleContainerCropAll: this.element.selectAll(\".vzb-bc-bubbles-crop\"),\n zoomRect: this.element.select(\".vzb-bc-zoom-rect\"),\n eventArea: this.element.select(\".vzb-bc-eventarea\"),\n forecastOverlay: this.element.select(\".vzb-bc-forecastoverlay\"),\n tooltipMobile: this.element.select(\".vzb-tooltip-mobile\"),\n defs: this.element.select(\"defs\")\n };\n this.DOM.chartSvg.select(\".vzb-bc-graph\").call(graph => \n Object.assign(this.DOM, {\n graph: graph,\n trailsContainer: graph.select(\".vzb-bc-trails\"),\n bubbleContainer: graph.select(\".vzb-bc-bubbles\"),\n bubbleContainerCrop: graph.select(\".vzb-bc-bubbles-crop\"),\n zoomSelection: graph.select(\".vzb-zoom-selection\"),\n })\n );\n this.DOM.chartSvgFront.select(\".vzb-bc-graph\").call(graphFront => {\n Object.assign(this.DOM, {\n graphFront: graphFront,\n labelsContainer: graphFront.select(\".vzb-bc-labels\"),\n labelsContainerCrop: graphFront.select(\".vzb-bc-labels-crop\"),\n linesContainer: graphFront.select(\".vzb-bc-lines\"),\n bubbleCrown: graphFront.select(\".vzb-bc-bubble-crown\"),\n decorationsEl: graphFront.select(\".vzb-bc-decorations\"),\n });\n this.DOM.lineEqualXY = this.DOM.decorationsEl.select(\".vzb-bc-line-equal-xy\");\n this.DOM.xAxisGroupsEl = this.DOM.decorationsEl.select(\".vzb-bc-x-axis-groups\");\n });\n this.DOM.chartSvgBack.select(\".vzb-bc-graph\").call(graphBack => {\n Object.assign(this.DOM, {\n yAxisElContainer: graphBack.select(\".vzb-bc-axis-y\"),\n xAxisElContainer: graphBack.select(\".vzb-bc-axis-x\"),\n date: graphBack.select(\".vzb-bc-date\"),\n projectionX: graphBack.select(\".vzb-bc-projection-x\"),\n projectionY: graphBack.select(\".vzb-bc-projection-y\"),\n });\n this.DOM.yAxisEl = this.DOM.yAxisElContainer.select(\"g\");\n this.DOM.xAxisEl = this.DOM.xAxisElContainer.select(\"g\");\n });\n\n //set filter\n this.DOM.bubbleCrown.selectAll(\".vzb-crown-glow\")\n .attr(\"filter\", `url(#vzb-glow-filter-${this.id})`);\n\n this._date = this.findChild({type: \"DateTimeBackground\"});\n this._labels = this.findChild({type: \"Labels\"});\n this._panZoom = new PanZoom(this); \n this.decorations = new BCDecorations(this);\n \n this.xAxis = axisSmart(\"bottom\");\n this.yAxis = axisSmart(\"left\");\n\n\n this.isCanvasPreviouslyExpanded = false;\n this.draggingNow = null;\n\n this.hoverBubble = false;\n this.__lastStep = 0;\n\n const _this = this;\n //keyboard listeners\n d3.select(\"body\")\n .on(\"keydown\", (event) => {\n if (_this.ui.cursorMode !== \"arrow\" && _this.ui.cursorMode !== \"hand\") return;\n if (event.metaKey || event.ctrlKey) _this.DOM.chartSvgAll.classed(\"vzb-zoomin\", true);\n })\n .on(\"keyup\", (event) => {\n if (_this.ui.cursorMode !== \"arrow\" && _this.ui.cursorMode !== \"hand\") return;\n if (!event.metaKey && !event.ctrlKey) _this.DOM.chartSvgAll.classed(\"vzb-zoomin\", false);\n })\n //this is for the case when user would press ctrl and move away from the browser tab or window\n //keyup event would happen somewhere else and won't be captured, so zoomin class would get stuck\n .on(\"mouseenter\", (event) => {\n if (_this.ui.cursorMode !== \"arrow\" && _this.ui.cursorMode !== \"hand\") return;\n if (!event.metaKey && !event.ctrlKey) _this.DOM.chartSvgAll.classed(\"vzb-zoomin\", false);\n });\n \n this.root.element.on(\"custom-resetZoom\", () => {\n _this._panZoom.reset(null, 500);\n });\n\n this._panZoom.zoomSelection(this.DOM.bubbleContainerCrop);\n this.DOM.bubbleContainerCrop\n .call(this._panZoom.dragRectangle)\n .call(this._panZoom.zoomer)\n .on(\"dblclick.zoom\", null)\n .on(\"mouseup\", () => {\n _this.draggingNow = false;\n })\n .on(\"click\", (event) => {\n const cursor = _this.ui.cursorMode;\n if (!event.defaultPrevented && cursor !== \"arrow\" && cursor !== \"hand\") {\n _this._panZoom.zoomByIncrement(event, cursor, 500);\n }\n });\n\n }\n\n\n get MDL(){\n return {\n frame: this.model.encoding.frame,\n selected: this.model.encoding.selected,\n highlighted: this.model.encoding.highlighted,\n superHighlighted: this.model.encoding.superhighlighted,\n y: this.model.encoding[this.state.alias?.y || \"y\"],\n x: this.model.encoding[this.state.alias?.x || \"x\"],\n size: this.model.encoding.size,\n color: this.model.encoding.color,\n label: this.model.encoding.label,\n trail: this.model.encoding.trail\n };\n }\n\n draw() {\n this.localise = this.services.locale.auto(this.MDL.frame.interval);\n\n //this.MDL.trail.config.show = false;\n //this.ui.cursorMode = \"plus\";\n this.sScale = this.MDL.size.scale.d3Scale;\n this.trailSizeScale = this.MDL.size.scale.d3Scale.copy();\n\n this.TIMEDIM = this.MDL.frame.data.concept;\n this.KEYS = this.model.data.space.filter(dim => dim !== this.TIMEDIM);\n\n if (this._updateLayoutProfile()) return; //return if exists with error\n this.addReaction(this._updateScales);\n this.addReaction(this._updateSize);\n // this.addReaction(this._resetZoomMinMaxXReaction, this._resetZoomMinMaxX);\n // this.addReaction(this._resetZoomMinMaxYReaction, this._resetZoomMinMaxY);\n this.addReaction(this._updateOpacity);\n this.addReaction(this.updateColorPatterns);\n this.addReaction(this._updateShowYear);\n this.addReaction(this._updateYear);\n this.addReaction(this.drawData);\n this.addReaction(this._zoomToMarkerMaxMin);\n this.addReaction(this.redrawData);\n\n this.addReaction(this._selectDataPoints);\n this.addReaction(this._highlightDataPoints);\n this.addReaction(this._blinkSuperHighlighted);\n this.addReaction(this._drawForecastOverlay);\n this.addReaction(this._setupCursorMode);\n this.addReaction(this.updateDecorations);\n }\n\n drawData() {\n this.processFrameData();\n this._updateMarkerSizeLimits();\n this._createAndDeleteBubbles();\n //this.redrawData();\n }\n\n updateColorPatterns() {\n if (this.MDL.color.scale.isPattern) {\n const colorConcept = this.MDL.color.data.concept;\n this.DOM.defs.selectAll(\".flag\")\n .data(this.MDL.color.data.domainData, d => d[0])\n .enter()\n .append(\"pattern\")\n .attr(\"id\", d => `flag-${d[0]}-${this.id}`)\n .attr(\"class\", \"flag\")\n .attr(\"width\", \"100%\")\n .attr(\"height\", \"100%\")\n .attr(\"patternContentUnits\", \"objectBoundingBox\")\n .html(d => d[1][colorConcept])\n .each(function() {\n const svg = d3.select(this).select(\"svg\");\n if (svg.empty()) return;\n \n if (!svg.attr(\"viewBox\"))\n svg.attr(\"viewBox\", `0 0 ${svg.attr(\"width\")} ${svg.attr(\"height\")}`);\n\n // xMidYMid: center the image in the circle\n // slice: scale the image to fill the circle\n if (!svg.attr(\"preserveAspectRatio\"))\n svg.attr(\"preserveAspectRatio\", \"xMidYMid slice\");\n\n svg.attr(\"width\", 1).attr(\"height\", 1);\n });\n } else {\n this.DOM.defs.selectAll(\".flag\").remove();\n }\n }\n\n _updateShowYear() {\n this.DOM.date.classed(\"vzb-hidden\", !this.ui.timeInBackground);\n }\n\n _updateYear() {\n const duration = this._getDuration();\n this._date.setText(this.MDL.frame.value, duration); \n }\n\n __getColor(key, valueC) {\n return valueC != null && !utils.isNaN(valueC) \n ? (this.MDL.color.scale.isPattern ? `url(#flag-${key}-${this.id})` : this.cScale(valueC)) \n : COLOR_WHITEISH;\n }\n __getColorForTrail(valueC, valueS) {\n if(valueC == null || utils.isNaN(valueC) || this.MDL.color.scale.isPattern) return COLOR_BLACKISH; \n if(this.trailSizeScale(valueS) > THICK_LINE_THRESHOLD_FOR_DARKER_COLOR) return this.cScale(valueC);\n return this.MDL.color.scale.palette.getColorShade({colorID: valueC}) || COLOR_BLACKISH;\n }\n\n _createAndDeleteBubbles() {\n const _this = this;\n const duration = this._getDuration();\n const transition = this._getTransition(duration);\n const data = this.__dataProcessed;\n let trailRedrawDate;\n\n runInAction(()=>{\n trailRedrawDate = this.MDL.frame.stepScale.invert(Math.min(this.__lastStep, this.__lastStep = this.MDL.frame.step << 0) - 1);\n });\n\n this.bubbles = this.DOM.bubbleContainer.selectAll(\".vzb-bc-entity\")\n .data(this.__dataProcessed, d => d[Symbol.for(\"key\")])\n .join(\n enter => enter\n .append(d => {\n const g = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n const circle = document.createElementNS(\"http://www.w3.org/2000/svg\", \"circle\");\n const trailLine = document.createElementNS(\"http://www.w3.org/2000/svg\", \"line\");\n const diagonalLine = document.createElementNS(\"http://www.w3.org/2000/svg\", \"line\");\n trailLine.classList.add(\"vzb-trail-line\");\n diagonalLine.classList.add(\"vzb-diagonal-line\");\n g.appendChild(circle);\n g.appendChild(diagonalLine);\n if (isTrailBubble(d)) g.appendChild(trailLine);\n return g;\n })\n .attr(\"class\", \"vzb-bc-entity\")\n .attr(\"id\", d => `vzb-bc-bubble-${d[Symbol.for(\"key\")]}-${this.id}`)\n .style(\"opacity\", d => d[Symbol.for(\"opacity\")] = this._getBubbleOpacity(d))\n .call(selection => {\n if(!utils.isTouchDevice()){\n selection\n .on(\"mouseover\", (event, d) => {\n if (this.ui.cursorMode !== \"arrow\" && this.ui.cursorMode !== \"hand\") return;\n if (this._labels.dragging) return;\n this._bubblesInteract().mouseover(event, d);\n })\n .on(\"mouseout\", (event, d) => {\n if (this.ui.cursorMode !== \"arrow\" && this.ui.cursorMode !== \"hand\") return;\n if (this._labels.dragging) return;\n this._bubblesInteract().mouseout(event, d);\n })\n .on(\"click\", (event, d) => {\n if (this.ui.cursorMode !== \"arrow\" && this.ui.cursorMode !== \"hand\") return;\n this._bubblesInteract().click(event, d);\n });\n } else {\n selection\n .onTap((event, d) => {\n event.stopPropagation();\n this._bubblesInteract().click(event, d);\n })\n .onLongTap(() => {});\n }\n })\n .each(function(d, index) {\n const dataNext = data[index + 1] || {};\n const isTrail = isTrailBubble(d);\n const isExtrapolated = d[Symbol.for(\"extrapolated\")];\n const headTrail = isTrail && !dataNext[Symbol.for(\"trailHeadKey\")];\n const view = d3.select(this);\n const circle = view.select(\"circle\");\n const diagonalLine = view.select(\".vzb-diagonal-line\");\n \n const valueX = d[_this._alias(\"x\")];\n const valueY = d[_this._alias(\"y\")];\n const valueS = d.size;\n const valueC = d.color;\n \n //d.hidden = (!valueS && valueS !== 0) || valueX == null || valueY == null;\n \n //view.classed(\"vzb-hidden\", d.hidden);\n d.r = utils.areaToRadius(_this.sScale(valueS || 0));\n const scaledX = _this.xScale(valueX);\n const scaledY = _this.yScale(valueY);\n const scaledC = _this.__getColor(d[Symbol.for(isTrail ? \"trailHeadKey\" : \"key\")], valueC);\n \n if (!duration || !headTrail) {\n circle\n .attr(\"r\", d.r)\n .attr(\"fill\", scaledC)\n .attr(\"cy\", scaledY)\n .attr(\"cx\", scaledX);\n //.transition(transition)\n\n if(isExtrapolated)\n diagonalLine\n .attr(\"x1\", scaledX + d.r/Math.sqrt(2))\n .attr(\"y1\", scaledY + d.r/Math.sqrt(2))\n .attr(\"x2\", scaledX - d.r/Math.sqrt(2))\n .attr(\"y2\", scaledY - d.r/Math.sqrt(2));\n diagonalLine\n .classed(\"vzb-hidden\", !isExtrapolated);\n \n //trail line\n if (isTrail) {\n const trailLine = view.select(\".vzb-trail-line\");\n\n const scaledX0 = _this.xScale(dataNext[_this._alias(\"x\")]);\n const scaledY0 = _this.yScale(dataNext[_this._alias(\"y\")]);\n const scaledCT = _this.__getColorForTrail(dataNext.color, dataNext.size);\n\n const nextR = utils.areaToRadius(_this.sScale(dataNext.size || 0));\n const length = Math.sqrt( (scaledX - scaledX0)**2 + (scaledY - scaledY0)**2 ) - d.r - nextR;\n \n trailLine\n .attr(\"x1\", scaledX)\n .attr(\"y1\", scaledY)\n .attr(\"x2\", scaledX0)\n .attr(\"y2\", scaledY0) \n .attr(\"stroke-dasharray\", `0 ${d.r} ${length > 0 ? length : 0} ${nextR}`)\n .style(\"stroke-width\", _this.trailSizeScale(dataNext.size))\n .style(\"stroke\", scaledCT);\n }\n }\n \n if (duration && !isTrail) {\n view\n .style(\"opacity\", 0)\n .transition().duration(duration*0.9)\n .style(\"opacity\", d[Symbol.for(\"opacity\")]);\n }\n \n if (!isTrail) {\n _this._updateLabel(d, valueX, valueY, duration, true, false);\n }\n }),\n\n update => update\n .each(function(d, index) {\n \n const isTrail = isTrailBubble(d);\n const isExtrapolated = d[Symbol.for(\"extrapolated\")];\n const dataNext = data[index + 1] || {};\n const headTrail = isTrail && !dataNext[Symbol.for(\"trailHeadKey\")];\n \n const valueS = d.size;\n d.r = utils.areaToRadius(_this.sScale(valueS || 0));\n if (isTrail && d[\"frame\"] < trailRedrawDate) return;\n \n const valueX = d[_this._alias(\"x\")];\n const valueY = d[_this._alias(\"y\")];\n const valueC = d.color;\n \n //d.hidden = (!valueS && valueS !== 0) || valueX == null || valueY == null;\n \n //view.classed(\"vzb-hidden\", d.hidden);\n const scaledX = _this.xScale(valueX);\n const scaledY = _this.yScale(valueY);\n const scaledC = _this.__getColor(d[Symbol.for(isTrail ? \"trailHeadKey\" : \"key\")], valueC);\n \n const group = d3.select(this);\n if (!duration || !headTrail) {\n const circle = group.select(\"circle\");\n if (duration && !isTrail) {\n circle.transition(transition)\n .attr(\"r\", d.r)\n .attr(\"fill\", scaledC)\n .attr(\"cy\", scaledY)\n .attr(\"cx\", scaledX);\n } else {\n circle.interrupt()\n .attr(\"r\", d.r)\n .attr(\"fill\", scaledC)\n .attr(\"cy\", scaledY)\n .attr(\"cx\", scaledX);\n }\n \n const diagonalLine = group.select(\".vzb-diagonal-line\");\n diagonalLine\n .classed(\"vzb-hidden\", !isExtrapolated);\n if(isExtrapolated){\n if (duration && !isTrail){\n diagonalLine.transition(transition)\n .attr(\"x1\", scaledX + d.r/Math.sqrt(2))\n .attr(\"y1\", scaledY + d.r/Math.sqrt(2))\n .attr(\"x2\", scaledX - d.r/Math.sqrt(2))\n .attr(\"y2\", scaledY - d.r/Math.sqrt(2));\n } else {\n diagonalLine.interrupt()\n .attr(\"x1\", scaledX + d.r/Math.sqrt(2))\n .attr(\"y1\", scaledY + d.r/Math.sqrt(2))\n .attr(\"x2\", scaledX - d.r/Math.sqrt(2))\n .attr(\"y2\", scaledY - d.r/Math.sqrt(2));\n }\n }\n \n //trail line\n if (isTrail) {\n const trailLine = group.select(\".vzb-trail-line\");\n const scaledX0 = _this.xScale(dataNext[_this._alias(\"x\")]);\n const scaledY0 = _this.yScale(dataNext[_this._alias(\"y\")]);\n const scaledCT = _this.__getColorForTrail(dataNext.color, dataNext.size);\n \n trailLine\n .attr(\"x1\", scaledX)\n .attr(\"y1\", scaledY);\n if (duration && !data[index + 2][Symbol.for(\"trailHeadKey\")]) {\n trailLine\n .attr(\"x2\", scaledX)\n .attr(\"y2\", scaledY)\n .transition(transition)\n .attr(\"x2\", scaledX0)\n .attr(\"y2\", scaledY0);\n } else {\n trailLine.interrupt()\n .attr(\"x2\", scaledX0)\n .attr(\"y2\", scaledY0);\n }\n \n const nextR = utils.areaToRadius(_this.sScale(dataNext.size || 0));\n const length = Math.sqrt( (scaledX - scaledX0)**2 + (scaledY - scaledY0)**2 ) - d.r - nextR;\n\n trailLine\n .style(\"stroke\", scaledCT)\n .style(\"stroke-width\", _this.trailSizeScale(dataNext.size))\n .attr(\"stroke-dasharray\", `0 ${d.r} ${length > 0 ? length : 0} ${nextR}`);\n }\n }\n \n if (!isTrail)\n _this._updateLabel(d, valueX, valueY, duration, false, false); \n }), \n\n exit => exit\n .each(function(d) {\n const isTrail = isTrailBubble(d);\n \n const view = duration && !isTrail ?\n d3.select(this).transition(transition)\n .duration(duration*0.9)\n .style(\"opacity\", 0)\n :\n d3.select(this).interrupt();\n \n view\n .remove();\n \n if (!isTrail) \n _this._updateLabel(d, d[_this._alias(\"x\")], d[_this._alias(\"y\")], duration, true, true);\n })\n )\n .order();\n\n }\n\n\n redrawData(duration) {\n //this.services.layout.size;\n //this.MDL.x.scale.type;\n //this.MDL.y.scale.type;\n this.MDL.color.scale.type;\n this.MDL.size.scale.type;\n this.MDL.size.scale.extent;\n\n const _this = this;\n const data = this.__dataProcessed;\n const transition = this._getTransition(duration);\n\n if (this.bubbles) this.bubbles.each(function(d, index) {\n const isTrail = isTrailBubble(d);\n const dataNext = data[index + 1] || {};\n const headTrail = isTrail && !dataNext[Symbol.for(\"trailHeadKey\")];\n const isExtrapolated = d[Symbol.for(\"extrapolated\")];\n\n const valueX = d[_this._alias(\"x\")];\n const valueY = d[_this._alias(\"y\")];\n const valueS = d.size;\n const valueC = d.color;\n\n d.r = utils.areaToRadius(_this.sScale(valueS || 0));\n const scaledX = _this.xScale(valueX);\n const scaledY = _this.yScale(valueY);\n const scaledC = _this.__getColor(d[Symbol.for(isTrail ? \"trailHeadKey\" : \"key\")], valueC);\n\n const group = d3.select(this);\n\n if (duration && headTrail) {\n group.style(\"opacity\", 0)\n .transition().delay(duration).duration(0)\n .style(\"opacity\", d[Symbol.for(\"opacity\")]);\n }\n\n const circle = group.select(\"circle\"); \n if (duration && !headTrail) {\n circle.transition(transition)\n .attr(\"r\", d.r)\n .attr(\"fill\", scaledC)\n .attr(\"cy\", scaledY)\n .attr(\"cx\", scaledX);\n } else {\n circle.interrupt()\n .attr(\"r\", d.r)\n .attr(\"fill\", scaledC)\n .attr(\"cy\", scaledY)\n .attr(\"cx\", scaledX);\n }\n\n const diagonalLine = group.select(\".vzb-diagonal-line\");\n diagonalLine\n .classed(\"vzb-hidden\", !isExtrapolated);\n if(isExtrapolated){\n if (duration && !headTrail){\n diagonalLine.transition(transition)\n .attr(\"x1\", scaledX + d.r/Math.sqrt(2))\n .attr(\"y1\", scaledY + d.r/Math.sqrt(2))\n .attr(\"x2\", scaledX - d.r/Math.sqrt(2))\n .attr(\"y2\", scaledY - d.r/Math.sqrt(2));\n } else {\n diagonalLine.interrupt()\n .attr(\"x1\", scaledX + d.r/Math.sqrt(2))\n .attr(\"y1\", scaledY + d.r/Math.sqrt(2))\n .attr(\"x2\", scaledX - d.r/Math.sqrt(2))\n .attr(\"y2\", scaledY - d.r/Math.sqrt(2));\n }\n }\n \n\n if (isTrail) {\n const trailLine = (duration && !headTrail) ? \n group.select(\".vzb-trail-line\")\n .transition(transition)\n : group.select(\".vzb-trail-line\").interrupt();\n\n const dataNext = data[index + 1];\n const scaledX0 = _this.xScale(dataNext[_this._alias(\"x\")]);\n const scaledY0 = _this.yScale(dataNext[_this._alias(\"y\")]);\n const scaledCT = _this.__getColorForTrail(dataNext.color, dataNext.size);\n\n const nextR = utils.areaToRadius(_this.sScale(dataNext.size || 0));\n const length = Math.sqrt( (scaledX - scaledX0)**2 + (scaledY - scaledY0)**2 ) - d.r - nextR;\n\n trailLine\n .attr(\"x1\", scaledX)\n .attr(\"y1\", scaledY)\n .attr(\"x2\", scaledX0)\n .attr(\"y2\", scaledY0)\n .style(\"stroke\", scaledCT)\n .style(\"stroke-width\", _this.trailSizeScale(dataNext.size))\n .attr(\"stroke-dasharray\", `0 ${d.r} ${length > 0 ? length : 0} ${nextR}`);\n }\n });\n\n runInAction(() => _this._updateLabels(duration));\n }\n\n __getZoomed(type, zoomed, domain) {\n //const zoomed = values[`zoomed${type}`];\n return d3[type.toLowerCase()](zoomed !== null ? zoomed : domain);\n }\n\n __getZoomedMin(values, domain) {\n return this.__getZoomed(\"Min\", values, domain);\n }\n\n __getZoomedMax(values, domain) {\n return this.__getZoomed(\"Max\", values, domain);\n }\n\n /*\n * Zoom to the min and max values given in the URL axes markers.\n */\n _zoomToMarkerMaxMin() {\n this.services.layout.size;\n this.MDL.x.scale.type;\n this.MDL.y.scale.type;\n\n const panzoom = //this.ui.panzoom;\n {\n x: this.MDL.x.scale.zoomed,\n y: this.MDL.y.scale.zoomed\n };\n \n const xDomain = this.MDL.x.data.domain;\n const yDomain = this.MDL.y.data.domain;\n\n if (this.draggingNow) return;\n\n /*\n * Reset just the zoom values without triggering a zoom event. This ensures\n * a clean zoom state for the subsequent zoom event.\n */\n this._panZoom.resetZoomState();\n\n this.yScale.range(this._rangeBump([this.height, 0]));\n this.xScale.range(this._rangeBump([0, this.width]));\n \n /*\n * The axes may return null when there is no value given for the zoomed\n * min and max values. In that case, fall back to the axes' domain values.\n */\n const zoomedMinX = this.__getZoomedMin(panzoom.x, xDomain);\n const zoomedMaxX = this.__getZoomedMax(panzoom.x, xDomain);\n const zoomedMinY = this.__getZoomedMin(panzoom.y, yDomain);\n const zoomedMaxY = this.__getZoomedMax(panzoom.y, yDomain);\n\n //by default this will apply no transition and feed values back to state\n runInAction(() => {\n this._panZoom.zoomToMaxMin(zoomedMinX, zoomedMaxX, zoomedMinY, zoomedMaxY, 0, \"don't feed these zoom values back to state\");\n });\n }\n\n _resetZoomMinMaxXReaction() {\n return { concept: this.MDL.x.data.concept };\n }\n\n _resetZoomMinMaxX() {\n this.ui.panzoom.x = {zoomedMin: null, zoomedMax: null};\n }\n\n _resetZoomMinMaxYReaction() {\n return { concept: this.MDL.y.data.concept };\n }\n\n _resetZoomMinMaxY() {\n this.ui.panzoom.y = {zoomedMin: null, zoomedMax: null};\n }\n\n _drawForecastOverlay() {\n this.DOM.forecastOverlay.classed(\"vzb-hidden\", \n !this.ui.showForecast || \n !this.ui.showForecastOverlay || \n !this.ui.endBeforeForecast || \n (this.MDL.frame.value <= this.MDL.frame.parseValue(this.ui.endBeforeForecast))\n );\n }\n\n _updateLayoutProfile(){\n this.services.layout.size;\n\n this.elementHeight = (this.element.node().clientHeight) || 0;\n this.elementWidth = (this.element.node().clientWidth) || 0;\n\n this.profileConstants = this.services.layout.getProfileConstants(\n PROFILE_CONSTANTS(this.elementWidth, this.elementHeight), \n PROFILE_CONSTANTS_FOR_PROJECTOR(this.elementWidth, this.elementHeight)\n );\n\n if (!this.elementHeight || !this.elementWidth) return utils.warn(\"Chart _updateProfile() abort: container is too little or has display:none\");\n }\n\n _getDuration() {\n return this.MDL.frame.playing ? this.MDL.frame.speed || 0 : 0;\n }\n\n _updateScales() {\n this.yScale = this.MDL.y.scale.d3Scale.copy();\n this.xScale = this.MDL.x.scale.d3Scale.copy();\n this._labels.setScales(this.xScale, this.yScale);\n }\n\n get cScale() {\n return this.MDL.color.scale.d3Scale;\n }\n \n\n\n _updateSize() {\n this.services.layout.size;\n\n const {\n x,\n y\n } = this.MDL;\n \n this.model.encoding.y.scale.d3Scale;\n \n const {\n graphAll,\n eventArea,\n bubbleContainerCropAll,\n labelsContainerCrop,\n xAxisElContainer,\n xAxisEl,\n yAxisElContainer,\n yAxisEl,\n projectionX,\n projectionY,\n xAxisGroupsEl,\n } = this.DOM;\n\n const _this = this;\n\n const layoutProfile = this.services.layout.profile;\n\n const margin = this.profileConstants.margin;\n const infoElHeight = this.profileConstants.infoElHeight;\n const xAxisTitleBottomMargin = this.profileConstants.xAxisTitleBottomMargin;\n\n //stage\n const height = this.height = (this.elementHeight - margin.top - margin.bottom) || 0;\n const width = this.width = (this.elementWidth - margin.left * this.profileConstants.leftMarginRatio - margin.right) || 0;\n\n // if (height <= 0 || width <= 0) {\n // height = 0;\n // width = 0;\n // utils.warn(\"Bubble chart updateSize(): vizabi container is too little or has display:none\");\n // }\n\n //graph group is shifted according to margins (while svg element is at 100 by 100%)\n graphAll\n .attr(\"transform\", \"translate(\" + (margin.left * this.profileConstants.leftMarginRatio) + \",\" + margin.top + \")\");\n\n this._date.resizeText(width, height);\n \n eventArea\n .attr(\"width\", width)\n .attr(\"height\", Math.max(0, height));\n\n this.yScale.range(this._rangeBump([height, 0]));\n this.xScale.range(this._rangeBump([0, width]));\n\n //only applied to swimming lane sclae\n const rankScaleModifications = y.scale.type === \"rank\" \n ? {\n ticks: y.rollup.map(m => m.tickPosition),\n formatter: (d) => y.rollup.find(f => f.tickPosition === d).name,\n repositionLabels: Object.fromEntries(y.rollup.map(m => ([m.tickPosition, { x: 4 * infoElHeight, y: -infoElHeight }]))) \n }\n : {};\n\n //apply scales to axes and redraw\n this.yAxis.scale(this.yScale)\n .tickSizeInner(-width)\n .tickSizeOuter(0)\n .tickPadding(6)\n .tickSizeMinor(-width, 0)\n .labelerOptions(Object.assign({\n scaleType: y.scale.type,\n toolMargin: margin,\n limitMaxTickNumber: 6,\n bump: this.profileConstants.maxRadiusPx / 2,\n viewportLength: height,\n formatter: this.localise\n }, rankScaleModifications));\n\n this.xAxis.scale(this.xScale)\n .tickSizeInner(-height)\n .tickSizeOuter(0)\n .tickPadding(6)\n .tickSizeMinor(-height, 0)\n .labelerOptions({\n scaleType: x.scale.type,\n toolMargin: margin,\n bump: this.profileConstants.maxRadiusPx / 2,\n viewportLength: width,\n formatter: this.localise\n });\n\n\n bubbleContainerCropAll\n .attr(\"width\", width)\n .attr(\"height\", Math.max(0, height));\n\n labelsContainerCrop\n .attr(\"width\", width)\n .attr(\"height\", Math.max(0, height));\n\n xAxisElContainer\n .attr(\"width\", width + 1)\n .attr(\"height\", this.profileConstants.margin.bottom + height)\n .attr(\"y\", -1)\n .attr(\"x\", -1);\n xAxisEl\n .attr(\"transform\", \"translate(1,\" + (1 + height) + \")\");\n\n yAxisElContainer\n .attr(\"width\", this.profileConstants.margin.left + width)\n .attr(\"height\", Math.max(0, height))\n .attr(\"x\", -this.profileConstants.margin.left);\n yAxisEl\n .attr(\"transform\", \"translate(\" + (this.profileConstants.margin.left - 1) + \",\" + 0 + \")\");\n\n yAxisEl.call(this.yAxis);\n xAxisEl.call(this.xAxis);\n\n const rangeBump = this.profileConstants.maxRadiusPx;\n projectionX.attr(\"y1\", _this.yScale.range()[0] + rangeBump);\n projectionY.attr(\"x2\", _this.xScale.range()[0] - rangeBump);\n\n xAxisGroupsEl\n .style(\"font-size\", infoElHeight * 0.8 + \"px\");\n\n this.root.findChild({type: \"_DataWarning\"}).setOptions({\n width: this.elementWidth,\n height: this.elementHeight,\n vertical: \"bottom\", \n horizontal: \"right\", \n right: margin.right,\n bottom: xAxisTitleBottomMargin,\n wLimit: (layoutProfile !== \"SMALL\" ? 0.5 : 1) *\n (this.elementWidth - this.DOM.graph.select(\".vzb-bc-axis-x-title\").node().getBBox().width - infoElHeight * 3)\n });\n\n }\n\n\n _rangeBump(arg, undo) {\n const bump = this.profileConstants.maxRadiusPx;\n undo = undo ? -1 : 1;\n if (utils.isArray(arg) && arg.length > 1) {\n let z1 = arg[0];\n let z2 = arg[arg.length - 1];\n\n //the sign of bump depends on the direction of the scale\n if (z1 < z2) {\n z1 += bump * undo;\n z2 -= bump * undo;\n // if the scale gets inverted because of bump, set it to avg between z1 and z2\n if (z1 > z2) z1 = z2 = (z1 + z2) / 2;\n } else if (z1 > z2) {\n z1 -= bump * undo;\n z2 += bump * undo;\n // if the scale gets inverted because of bump, set it to avg between z1 and z2\n if (z1 < z2) z1 = z2 = (z1 + z2) / 2;\n } else {\n // rangeBump error: the input scale range has 0 length. that sucks but we keep cool\n }\n return [z1, z2];\n }\n utils.warn(\"rangeBump error: input is not an array or empty\");\n }\n\n\n processFrameData() {\n return this.__dataProcessed = this.model.dataArray;\n }\n\n _getTransition(duration) {\n return duration ? d3.transition()\n .duration(duration)\n .ease(d3.easeLinear) : d3.transition();\n } \n\n _bubblesInteract() {\n const _this = this;\n\n return {\n mouseover(event, d) {\n _this.hoverBubble = true;\n _this.MDL.highlighted.data.filter.set(d);\n _this._labels.showCloseCross(d, true);\n },\n\n mouseout(event, d) {\n _this.hoverBubble = false;\n _this.MDL.highlighted.data.filter.delete(d);\n //_this._setTooltip();\n _this._labels.showCloseCross(d, false);\n },\n\n click(event, d) {\n if (_this.draggingNow) return;\n // // const isSelected = d.isSelected;\n if (!isTrailBubble(d)) _this.MDL.selected.data.filter.toggle(d);\n //_this.MDL.selected.data.filter.toggle(d);\n // // //return to highlighted state\n // // if (!utils.isTouchDevice()) {\n // // if (isSelected) _this.model.marker.highlightMarker(d);\n // // _this.highlightDataPoints();\n }\n };\n }\n \n\n _updateMarkerSizeLimits() {\n this.services.layout.size;\n this.MDL.size.scale.domain;\n\n const {\n minRadiusPx,\n maxRadiusPx,\n minTrailThicknessPx,\n maxTrailThicknessPx,\n } = this.profileConstants;\n\n //transfer min max radius to size dialog via root ui observable (probably a cleaner way is possible)\n this.root.ui.minMaxRadius = {min: minRadiusPx, max: maxRadiusPx};\n \n const extent = this.MDL.size.scale.extent || [0, 1];\n \n let minArea = utils.radiusToArea(Math.max(maxRadiusPx * extent[0], minRadiusPx));\n let maxArea = utils.radiusToArea(Math.max(maxRadiusPx * extent[1], minRadiusPx));\n\n this.sScale.range([minArea, maxArea]);\n this.trailSizeScale.domain(this.MDL.size.scale.domain).range([minTrailThicknessPx, maxTrailThicknessPx]);\n }\n\n _setTooltip(tooltipText, x, y, s, c, d) {\n if (tooltipText) {\n const labelValues = {};\n if (d) {\n labelValues.valueY = d[this._alias(\"y\")];\n labelValues.valueX = d[this._alias(\"x\")];\n labelValues.valueS = d.size;\n labelValues.valueC = d.color;\n labelValues.valueLST = d.size_label || null;\n labelValues.labelText = this.__labelWithoutFrame(d, this.localise);\n }\n\n const tooltipCache = {};\n tooltipCache.labelX0 = this.xScale.invert ? this.xScale.invert(x) : d.x;\n tooltipCache.labelY0 = this.yScale.invert ? this.yScale.invert(y) : d.y;\n tooltipCache.scaledS0 = s;\n tooltipCache.scaledC0 = null;\n\n this._labels.setTooltip(d, tooltipText, tooltipCache, labelValues);\n } else {\n this._labels.setTooltip();\n }\n }\n\n _getLabelText(d) {\n return this.KEYS.map(key => d.label[key]).join(\",\");\n //// + (this.model.ui.chart.timeInTrails && time && (this.model.time.start - this.model.time.end !== 0) ? \" \" + time : \"\");\n }\n\n _updateOpacity(selection) {\n //this.MDL.frame.value; //listen\n\n const highlightedFilter = this.MDL.highlighted.data.filter;\n const selectedFilter = this.MDL.selected.data.filter;\n\n this.__highlightedMarkers = new Map(highlightedFilter.markers);\n this.__selectedMarkers = new Map(selectedFilter.markers);\n this.__someSelected = this.__selectedMarkers.size != 0;\n this.__someHighlighted = this.__highlightedMarkers.size != 0;\n\n const _selection = selection || this.bubbles;\n if(!_selection) return;\n _selection\n .style(\"opacity\", d => this._getBubbleOpacity(d, this.ui))\n .style(\"pointer-events\", d => this._getBubbleOpacity(d, this.ui) === 0 ? \"none\" : \"visible\");\n }\n\n _getBubbleOpacity(d) { \n const ui = this.ui;\n\n if (this.__highlightedMarkers.has(d[Symbol.for(\"key\")])) return ui.opacityHighlight;\n if (isTrailBubble(d)) return ui.opacityRegular;\n if (this.__selectedMarkers.has(d[Symbol.for(\"key\")])) return ui.opacitySelect;\n\n if (this.__someSelected) return ui.opacitySelectDim;\n if (this.__someHighlighted) return ui.opacityHighlightDim;\n\n return ui.opacityRegular;\n }\n\n _setBubbleCrown(x, y, r, glow, skipInnerFill) {\n const bubbleCrown = this.DOM.bubbleCrown;\n if (x != null) {\n bubbleCrown.classed(\"vzb-hidden\", false);\n bubbleCrown.select(\".vzb-crown\")\n .attr(\"cx\", x)\n .attr(\"cy\", y)\n .attr(\"r\", r)\n .attr(\"fill\", skipInnerFill ? \"none\" : glow);\n bubbleCrown.selectAll(\".vzb-crown-glow\")\n .attr(\"cx\", x)\n .attr(\"cy\", y)\n .attr(\"r\", r + 10)\n .attr(\"stroke\", glow);\n\n } else {\n bubbleCrown.classed(\"vzb-hidden\", true);\n }\n\n }\n\n /*\n * Shows and hides axis projections\n */\n _axisProjections(d) {\n const {\n projectionX,\n projectionY,\n xAxisEl,\n yAxisEl\n } = this.DOM;\n\n if (d != null) {\n\n const valueY = d[this._alias(\"y\")];\n const valueX = d[this._alias(\"x\")];\n const radius = d.r;\n\n //if (!valueY && valueY !== 0 || !valueX && valueX !== 0 || !valueS && valueS !== 0) return;\n\n if (this.ui.whenHovering.showProjectionLineX\n && this.xScale(valueX) > 0 && this.xScale(valueX) < this.width\n && (this.yScale(valueY) + radius) < this.height) {\n projectionX\n .style(\"opacity\", 1)\n .attr(\"y2\", this.yScale(valueY) + radius)\n .attr(\"x1\", this.xScale(valueX))\n .attr(\"x2\", this.xScale(valueX));\n }\n\n if (this.ui.whenHovering.showProjectionLineY\n && this.yScale(valueY) > 0 && this.yScale(valueY) < this.height\n && (this.xScale(valueX) - radius) > 0) {\n projectionY\n .style(\"opacity\", 1)\n .attr(\"y1\", this.yScale(valueY))\n .attr(\"y2\", this.yScale(valueY))\n .attr(\"x1\", this.xScale(valueX) - radius);\n }\n\n if (this.ui.whenHovering.higlightValueX && this.MDL.x.scale.type !== \"rank\") xAxisEl.call(\n this.xAxis.highlightValue(valueX)\n );\n\n if (this.ui.whenHovering.higlightValueY && this.MDL.y.scale.type !== \"rank\") yAxisEl.call(\n this.yAxis.highlightValue(valueY)\n );\n\n\n } else {\n\n projectionX.style(\"opacity\", 0);\n projectionY.style(\"opacity\", 0);\n xAxisEl.call(this.xAxis.highlightValue(\"none\"));\n yAxisEl.call(this.yAxis.highlightValue(\"none\"));\n\n }\n\n }\n\n /*\n * Highlights all hovered bubbles\n */\n _highlightDataPoints() {\n const _this = this;\n\n const highlightedFilter = this.MDL.highlighted.data.filter;\n const selectedFilter = this.MDL.selected.data.filter;\n this.someHighlighted = highlightedFilter.any();\n\n //this.updateBubbleOpacity();\n const trailShow = this.MDL.trail.show;\n const trailStarts = this.MDL.trail.starts;\n const trailGroupDim = this.MDL.trail.groupDim;\n\n if (highlightedFilter.markers.size === 1) {\n const highlightedKey = highlightedFilter.markers.keys().next().value;\n const d = Object.assign(this.model.dataMap.getByStr(highlightedKey));\n const selectedKey = d[Symbol.for(\"trailHeadKey\")] || d[Symbol.for(\"key\")];\n\n const x = _this.xScale(d[_this._alias(\"x\")]);\n const y = _this.yScale(d[_this._alias(\"y\")]);\n const s = d.r;\n const c = _this.__getColor(selectedKey, d.color);\n let entityOutOfView = false;\n\n if (x + s < 0 || x - s > this.width || y + s < 0 || y - s > this.height) {\n entityOutOfView = true;\n }\n\n //show tooltip\n // const trailShow = this.MDL.trail.show;\n // const trailStarts = this.MDL.trail.starts;\n // const trailGroupDim = this.MDL.trail.groupDim;\n const isSelected = selectedFilter.has(selectedKey);\n const isTailTrail = !(trailStarts[selectedKey] - d[trailGroupDim]);\n const isTrail = isTrailBubble(d);\n\n let text = \"\";\n \n text = isSelected ? \n !trailShow || isTailTrail || (!isTrail && !this.hoverBubble) ? \"\": this.localise(d[trailGroupDim])\n : \n this.__labelWithoutFrame(d);\n \n _this._labels.highlight(null, false);\n _this._labels.highlight({ [Symbol.for(\"key\")]: selectedKey }, true);\n if (isSelected) {\n const skipCrownInnerFill = !isTrail;\n //!d.trailStartTime || d.trailStartTime == _this.model.time.formatDate(_this.time);\n _this._setBubbleCrown(x, y, s, c, skipCrownInnerFill);\n }\n\n if (!entityOutOfView) {\n _this._axisProjections(d);\n }\n\n //set tooltip and show axis projections\n if (text && !entityOutOfView) {\n _this._setTooltip(text, x, y, s + 3, c, d);\n }\n\n // // const selectedData = utils.find(_this.model.marker.select, f => utils.getKey(f, KEYS) == d[KEY]);\n // // if (selectedData) {\n // // const clonedSelectedData = utils.clone(selectedData);\n // // //change opacity to OPACITY_HIGHLT = 1.0;\n // // clonedSelectedData.opacity = 1.0;\n // // _this._trails.run([\"opacityHandler\"], clonedSelectedData);\n // // }\n } else {\n this._axisProjections();\n ////this._trails.run([\"opacityHandler\"]);\n //hide tooltip\n this._setTooltip();\n this._setBubbleCrown();\n this._labels.highlight(null, false);\n }\n\n }\n\n _blinkSuperHighlighted() {\n if (!this.MDL.superHighlighted) return;\n\n const superHighlightFilter = this.MDL.superHighlighted.data.filter;\n\n this.bubbles\n .classed(\"vzb-super-highlighted\", d => superHighlightFilter.has(d));\n }\n\n _selectDataPoints() {\n const _this = this;\n const selectedFilter = this.MDL.selected.data.filter;\n \n if (utils.isTouchDevice()) {\n _this.MDL.highlighted.data.filter.clear();\n _this._labels.showCloseCross(null, false);\n } else {\n //hide tooltip\n _this._setTooltip();\n ////_this._setBubbleCrown();\n }\n\n // utils.forEach(_this.bubbles.data(), d => {\n // d.isSelected = _this.model.marker.isSelected(d);\n // });\n\n _this.someSelected = selectedFilter.any();\n _this.nonSelectedOpacityZero = false;\n\n }\n\n _setupCursorMode() {\n const svg = this.DOM.chartSvgAll;\n if (this.ui.cursorMode === \"plus\") {\n svg.classed(\"vzb-zoomin\", true);\n svg.classed(\"vzb-zoomout\", false);\n svg.classed(\"vzb-panhand\", false);\n } else if (this.ui.cursorMode === \"minus\") {\n svg.classed(\"vzb-zoomin\", false);\n svg.classed(\"vzb-zoomout\", true);\n svg.classed(\"vzb-panhand\", false);\n } else if (this.ui.cursorMode === \"hand\") {\n svg.classed(\"vzb-zoomin\", false);\n svg.classed(\"vzb-zoomout\", false);\n svg.classed(\"vzb-panhand\", true);\n } else {\n svg.classed(\"vzb-zoomin\", false);\n svg.classed(\"vzb-zoomout\", false);\n svg.classed(\"vzb-panhand\", false);\n }\n }\n\n updateDecorations(){\n this.services.layout.size;\n this.MDL.x.scale.zoomed;\n this.MDL.y.scale.zoomed;\n this.decorations.update.bind(this)(this._getDuration());\n }\n\n _updateLabel(d, x, y, duration, showhide, hidden) {\n const selectedMarkers = this.MDL.selected.data.filter.markers;\n const key = d[Symbol.for(\"key\")];\n // only for selected markers\n if (selectedMarkers.has(key)) {\n const trail = this.MDL.trail;\n \n const cache = {};\n\n let labelText = \"\";\n\n //if (showhide && hidden && trail.show && trailStartTime && (trailStartTime < _this.time)) showhide = false;\n if (hidden && !trail.show) showhide = true;\n\n if (trail.show && key in trail.starts) {\n const trailStart = trail.starts[key];\n //console.log(\"trailstart\", trailStart)\n // if this bubble is trail start bubble\n if (trailStart >= this.MDL.frame.value || showhide) {\n const trailData = this.model.getDataMapByFrameValue(trailStart, \"trail.addTrails\").getByStr(key);\n \n cache.labelText = labelText = this.__labelWithFrame(trailData);\n cache.labelX0 = trailData[this._alias(\"x\")];\n cache.labelY0 = trailData[this._alias(\"y\")];\n cache.scaledC0 = trailData.color != null ? this.cScale(trailData.color) : COLOR_WHITEISH,\n cache.scaledS0 = (trailData.size || trailData.size === 0) ? utils.areaToRadius(this.sScale(trailData.size)) : null;\n cache.valueS0 = trailData.size;\n trailData.hidden = hidden;\n this._labels.updateLabel(trailData, cache, cache.labelX0, cache.labelY0, trailData.size, trailData.color, labelText, trailData.size_label, duration, showhide);\n }\n } else {\n cache.labelText = labelText = this.__labelWithoutFrame(d);\n cache.labelX0 = x;\n cache.labelY0 = y;\n cache.scaledC0 = d.color != null ? this.cScale(d.color) : COLOR_WHITEISH,\n cache.scaledS0 = (d.size || d.size === 0) ? utils.areaToRadius(this.sScale(d.size)) : null;\n cache.valueS0 = d.size;\n d.hidden = hidden;\n this._labels.updateLabel(d, cache, x, y, d.size, d.color, labelText, d.size_label, duration, showhide);\n }\n }\n }\n \n _updateLabels(duration) {\n //console.log(\"updateLabels\");\n\n const selectedFilter = this.MDL.selected.data.filter;\n const trail = this.MDL.trail;\n\n for (const key of selectedFilter.markers.keys()) {\n if (!(key in trail.starts))\n continue;\n\n if (!this._labels.cached[key]) this._labels.cached[key] = {};\n const cache = this._labels.cached[key];\n\n const datamap = (trail.show ? this.model.getDataMapByFrameValue(trail.starts[key], \"trail.addTrails\") : this.model.dataMap);\n if (!datamap.hasByStr(key))\n continue;\n\n const d = datamap.getByStr(key);\n \n cache.labelText = this[(trail.show && this.ui.timeInTrails ? \"__labelWithFrame\" : \"__labelWithoutFrame\")](d);\n cache.labelX0 = d[this._alias(\"x\")];\n cache.labelY0 = d[this._alias(\"y\")];\n cache.scaledC0 = d.color != null ? this.cScale(d.color) : COLOR_WHITEISH,\n cache.scaledS0 = (d.size || d.size === 0) ? utils.areaToRadius(this.sScale(d.size)) : null;\n cache.valueS0 = d.size;\n cache.initTextBBox = null;\n cache.initFontSize = null;\n this._labels.updateLabel({ [Symbol.for(\"key\")]: key }, null, null, null, null, null, null, d.size_label, duration);\n }\n }\n\n __labelWithoutFrame(d) {\n const markerSpace = this.model.data.space;\n if (typeof d.label == \"object\") \n return Object.entries(d.label)\n .filter(([k, v]) => k != this.MDL.frame.data.concept)\n //sort parts of the name along the marker space array, so we get geo, gender instead of gender, geo\n .sort(([ak, av], [bk, bv]) => markerSpace.indexOf(ak) - markerSpace.indexOf(bk))\n //add keys where values are numbers, such as \"age: 69\"\n .map(([k, v]) => utils.isNumber(v) ? k + \": \" + v : v)\n .join(\", \");\n if (d.label != null) return \"\" + d.label;\n return d[Symbol.for(\"key\")];\n }\n\n __labelWithFrame(d) {\n const frameConcept = this.MDL.frame.data.concept;\n return this.__labelWithoutFrame(d) + \" \" + this.localise(d && d.label && d.label[frameConcept] || d && d.frame || this.MDL.frame.value);\n }\n\n _alias(enc) {\n return this.state.alias?.[enc] || enc;\n }\n}\n\n_VizabiBubbleChart.DEFAULT_UI = {\n show_ticks: true,\n showForecast: false,\n showForecastOverlay: true,\n pauseBeforeForecast: true,\n opacityHighlight: 1.0,\n opacitySelect: 1.0,\n opacityHighlightDim: 0.1,\n opacitySelectDim: 0.3,\n opacityRegular: 0.5,\n timeInBackground: true,\n timeInTrails: true,\n lockNonSelected: 0,\n panWithArrow: false,\n adaptMinMaxZoom: false,\n cursorMode: \"arrow\",\n zoomOnScrolling: true,\n decorations: {\n enabled: true,\n xAxisGroups: null //left to be set by external page\n },\n superhighlightOnMinimapHover: true,\n whenHovering: {\n showProjectionLineX: true,\n showProjectionLineY: true,\n higlightValueX: true,\n higlightValueY: true\n },\n labels: {\n enabled: true,\n dragging: true,\n removeLabelBox: false\n },\n margin: {\n left: 0,\n top: 0\n }\n};\n\n//export default BubbleChart;\nexport const VizabiBubbleChart = decorate(_VizabiBubbleChart, {\n \"MDL\": computed,\n \"cScale\": computed\n});\n\nChart.add(\"bubblechart\", VizabiBubbleChart);\n","import \"./styles.scss\";\nimport { \n BaseComponent,\n TimeSlider,\n DataNotes,\n DataWarning,\n ErrorMessage,\n SpaceConfig,\n LocaleService,\n LayoutService,\n CapitalVizabiService,\n TreeMenu,\n SteppedSlider,\n Dialogs,\n ButtonList,\n Repeater,\n versionInfo\n} from \"@vizabi/shared-components\";\nimport {VizabiBubbleChart} from \"./bubblechart-cmp.js\";\n\nexport default class BubbleChart extends BaseComponent {\n\n constructor(config){\n\n const markerName = config.options?.markerNames?.bubble || \"bubble\";\n const fullMarker = config.model.markers[markerName];\n config.Vizabi.utils.applyDefaults(fullMarker.config, BubbleChart.DEFAULT_CORE(markerName)); \n\n const frameType = config.Vizabi.stores.encodings.modelTypes.frame;\n const { marker, splashMarker } = frameType.splashMarker(fullMarker);\n \n config.model.markers[markerName] = marker;\n\n config.name = \"bubblechart\";\n\n config.subcomponents = [{\n type: Repeater,\n placeholder: \".vzb-repeater\",\n model: marker,\n options: {\n repeatedComponent: VizabiBubbleChart,\n repeatedComponentCssClass: \"vzb-bubblechart\"\n },\n name: \"chart\",\n },{\n type: TimeSlider,\n placeholder: \".vzb-timeslider\",\n model: marker,\n name: \"time-slider\"\n },{\n type: SteppedSlider,\n placeholder: \".vzb-speedslider\",\n model: marker,\n name: \"speed-slider\"\n },{\n type: TreeMenu,\n placeholder: \".vzb-treemenu\",\n model: marker,\n name: \"tree-menu\"\n },{\n type: DataWarning,\n placeholder: \".vzb-datawarning\",\n options: {button: \".vzb-datawarning-button\"},\n model: marker,\n name: \"data-warning\"\n },{\n type: DataNotes,\n placeholder: \".vzb-datanotes\",\n model: marker\n },{\n type: Dialogs,\n placeholder: \".vzb-dialogs\",\n model: marker,\n name: \"dialogs\"\n },{\n type: ButtonList,\n placeholder: \".vzb-buttonlist\",\n model: marker,\n name: \"buttons\"\n },{\n type: SpaceConfig,\n placeholder: \".vzb-spaceconfig\",\n options: {button: \".vzb-spaceconfig-button\"},\n model: marker,\n name: \"space-config\"\n },{\n type: ErrorMessage,\n placeholder: \".vzb-errormessage\",\n model: marker,\n name: \"error-message\"\n }];\n\n config.template = `\n <div class=\"vzb-repeater\"></div>\n <div class=\"vzb-animationcontrols\">\n <div class=\"vzb-timeslider\"></div>\n <div class=\"vzb-speedslider\"></div>\n </div>\n <div class=\"vzb-sidebar\">\n <div class=\"vzb-dialogs\"></div>\n <div class=\"vzb-buttonlist\"></div>\n </div>\n <div class=\"vzb-treemenu\"></div>\n <div class=\"vzb-datawarning\"></div>\n <div class=\"vzb-spaceconfig\"></div>\n <div class=\"vzb-datanotes\"></div>\n <div class=\"vzb-errormessage\"></div>\n `;\n\n config.locale.Vizabi = config.Vizabi;\n config.layout.Vizabi = config.Vizabi;\n config.services = {\n Vizabi: new CapitalVizabiService({Vizabi: config.Vizabi}),\n locale: new LocaleService(config.locale),\n layout: new LayoutService(config.layout)\n };\n\n super(config);\n\n this.splashMarker = splashMarker;\n }\n}\n\nBubbleChart.DEFAULT_UI = {\n chart: {\n }\n};\n\nBubbleChart.mainComponent = VizabiBubbleChart;\n\nBubbleChart.DEFAULT_CORE = (markerName) => ({\n requiredEncodings: [\"x\", \"y\", \"size\"],\n encoding: {\n \"selected\": {\n modelType: \"selection\",\n data: { \n filter: { \n ref: `markers.${markerName}.encoding.trail.data.filter`\n }\n }\n },\n \"highlighted\": { modelType: \"selection\" },\n \"superhighlighted\": { modelType: \"selection\" },\n \"x\": { },\n \"y\": { },\n \"order\": { modelType: \"order\",\n data: { \n ref: `markers.${markerName}.encoding.size.data.config`\n }\n },\n \"size\": {\n scale: {\n modelType: \"size\",\n allowedTypes: [\"linear\", \"log\", \"genericLog\", \"pow\", \"point\"],\n range: [0, 50]\n }\n },\n \"color\": { scale: { modelType: \"color\" } },\n \"label\": { data: { modelType: \"entityPropertyDataConfig\" } },\n \"frame\": { modelType: \"frame\" },\n \"trail\": { modelType: \"trail\" }, \n \"size_label\": {\n data: {\n constant: \"_default\"\n },\n scale: {\n modelType: \"size\",\n allowedTypes: [\"linear\", \"log\", \"genericLog\", \"pow\", \"point\"]\n }\n },\n \"repeat\": {\n modelType: \"repeat\",\n allowEnc: [\"y\", \"x\"]\n }\n }\n});\n\nBubbleChart.versionInfo = { version: __VERSION, build: __BUILD, package: __PACKAGE_JSON_FIELDS, sharedComponents: versionInfo};\n"],"names":["utils","Icons","BaseComponent","Utils","action","decorate","computed","observable","Chart","Labels","DateTimeBackground","BCAxisTitles","axisSmart","runInAction","Repeater","TimeSlider","SteppedSlider","TreeMenu","DataWarning","DataNotes","Dialogs","ButtonList","SpaceConfig","ErrorMessage","CapitalVizabiService","LocaleService","LayoutService","versionInfo"],"mappings":"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"}
package/build/stats.html CHANGED
@@ -4014,7 +4014,7 @@ var drawChart = (function (exports) {
4014
4014
  </script>
4015
4015
  <script>
4016
4016
  /*<!--*/
4017
- const data = {"version":2,"tree":{"name":"root","children":[{"name":"bubblechart.js","children":[{"name":"src","children":[{"uid":"3b4c-1","name":"panzoom.js"},{"uid":"3b4c-3","name":"axistitles.js"},{"uid":"3b4c-5","name":"decorations.js"},{"uid":"3b4c-7","name":"bubblechart-cmp.js"},{"uid":"3b4c-9","name":"bubblechart-tool.js"},{"uid":"3b4c-11","name":"index.js"}]}]}],"isRoot":true},"nodeParts":{"3b4c-1":{"renderedLength":26310,"gzipLength":0,"brotliLength":0,"mainUid":"3b4c-0"},"3b4c-3":{"renderedLength":14437,"gzipLength":0,"brotliLength":0,"mainUid":"3b4c-2"},"3b4c-5":{"renderedLength":6610,"gzipLength":0,"brotliLength":0,"mainUid":"3b4c-4"},"3b4c-7":{"renderedLength":55201,"gzipLength":0,"brotliLength":0,"mainUid":"3b4c-6"},"3b4c-9":{"renderedLength":4826,"gzipLength":0,"brotliLength":0,"mainUid":"3b4c-8"},"3b4c-11":{"renderedLength":0,"gzipLength":0,"brotliLength":0,"mainUid":"3b4c-10"}},"nodeMetas":{"3b4c-0":{"id":"/src/panzoom.js","moduleParts":{"bubblechart.js":"3b4c-1"},"imported":[{"uid":"3b4c-13"},{"uid":"3b4c-14"}],"importedBy":[{"uid":"3b4c-6"}]},"3b4c-2":{"id":"/src/axistitles.js","moduleParts":{"bubblechart.js":"3b4c-3"},"imported":[{"uid":"3b4c-13"},{"uid":"3b4c-15"}],"importedBy":[{"uid":"3b4c-6"}]},"3b4c-4":{"id":"/src/decorations.js","moduleParts":{"bubblechart.js":"3b4c-5"},"imported":[{"uid":"3b4c-13"},{"uid":"3b4c-14"}],"importedBy":[{"uid":"3b4c-6"}]},"3b4c-6":{"id":"/src/bubblechart-cmp.js","moduleParts":{"bubblechart.js":"3b4c-7"},"imported":[{"uid":"3b4c-13"},{"uid":"3b4c-0"},{"uid":"3b4c-2"},{"uid":"3b4c-14"},{"uid":"3b4c-4"},{"uid":"3b4c-15"}],"importedBy":[{"uid":"3b4c-8"}]},"3b4c-8":{"id":"/src/bubblechart-tool.js","moduleParts":{"bubblechart.js":"3b4c-9"},"imported":[{"uid":"3b4c-12"},{"uid":"3b4c-13"},{"uid":"3b4c-6"}],"importedBy":[{"uid":"3b4c-10"}]},"3b4c-10":{"id":"/src/index.js","moduleParts":{"bubblechart.js":"3b4c-11"},"imported":[{"uid":"3b4c-8"}],"importedBy":[],"isEntry":true},"3b4c-12":{"id":"/src/styles.scss","moduleParts":{},"imported":[],"importedBy":[{"uid":"3b4c-8"}]},"3b4c-13":{"id":"@vizabi/shared-components","moduleParts":{},"imported":[],"importedBy":[{"uid":"3b4c-8"},{"uid":"3b4c-6"},{"uid":"3b4c-0"},{"uid":"3b4c-2"},{"uid":"3b4c-4"}],"isExternal":true},"3b4c-14":{"id":"d3","moduleParts":{},"imported":[],"importedBy":[{"uid":"3b4c-6"},{"uid":"3b4c-0"},{"uid":"3b4c-4"}],"isExternal":true},"3b4c-15":{"id":"mobx","moduleParts":{},"imported":[],"importedBy":[{"uid":"3b4c-6"},{"uid":"3b4c-2"}],"isExternal":true}},"env":{"rollup":"2.79.1"},"options":{"gzip":false,"brotli":false,"sourcemap":false}};
4017
+ const data = {"version":2,"tree":{"name":"root","children":[{"name":"bubblechart.js","children":[{"name":"src","children":[{"uid":"598b-1","name":"panzoom.js"},{"uid":"598b-3","name":"axistitles.js"},{"uid":"598b-5","name":"decorations.js"},{"uid":"598b-7","name":"bubblechart-cmp.js"},{"uid":"598b-9","name":"bubblechart-tool.js"},{"uid":"598b-11","name":"index.js"}]}]}],"isRoot":true},"nodeParts":{"598b-1":{"renderedLength":26310,"gzipLength":0,"brotliLength":0,"mainUid":"598b-0"},"598b-3":{"renderedLength":14437,"gzipLength":0,"brotliLength":0,"mainUid":"598b-2"},"598b-5":{"renderedLength":6610,"gzipLength":0,"brotliLength":0,"mainUid":"598b-4"},"598b-7":{"renderedLength":55255,"gzipLength":0,"brotliLength":0,"mainUid":"598b-6"},"598b-9":{"renderedLength":4826,"gzipLength":0,"brotliLength":0,"mainUid":"598b-8"},"598b-11":{"renderedLength":0,"gzipLength":0,"brotliLength":0,"mainUid":"598b-10"}},"nodeMetas":{"598b-0":{"id":"/src/panzoom.js","moduleParts":{"bubblechart.js":"598b-1"},"imported":[{"uid":"598b-13"},{"uid":"598b-14"}],"importedBy":[{"uid":"598b-6"}]},"598b-2":{"id":"/src/axistitles.js","moduleParts":{"bubblechart.js":"598b-3"},"imported":[{"uid":"598b-13"},{"uid":"598b-15"}],"importedBy":[{"uid":"598b-6"}]},"598b-4":{"id":"/src/decorations.js","moduleParts":{"bubblechart.js":"598b-5"},"imported":[{"uid":"598b-13"},{"uid":"598b-14"}],"importedBy":[{"uid":"598b-6"}]},"598b-6":{"id":"/src/bubblechart-cmp.js","moduleParts":{"bubblechart.js":"598b-7"},"imported":[{"uid":"598b-13"},{"uid":"598b-0"},{"uid":"598b-2"},{"uid":"598b-14"},{"uid":"598b-4"},{"uid":"598b-15"}],"importedBy":[{"uid":"598b-8"}]},"598b-8":{"id":"/src/bubblechart-tool.js","moduleParts":{"bubblechart.js":"598b-9"},"imported":[{"uid":"598b-12"},{"uid":"598b-13"},{"uid":"598b-6"}],"importedBy":[{"uid":"598b-10"}]},"598b-10":{"id":"/src/index.js","moduleParts":{"bubblechart.js":"598b-11"},"imported":[{"uid":"598b-8"}],"importedBy":[],"isEntry":true},"598b-12":{"id":"/src/styles.scss","moduleParts":{},"imported":[],"importedBy":[{"uid":"598b-8"}]},"598b-13":{"id":"@vizabi/shared-components","moduleParts":{},"imported":[],"importedBy":[{"uid":"598b-8"},{"uid":"598b-6"},{"uid":"598b-0"},{"uid":"598b-2"},{"uid":"598b-4"}],"isExternal":true},"598b-14":{"id":"d3","moduleParts":{},"imported":[],"importedBy":[{"uid":"598b-6"},{"uid":"598b-0"},{"uid":"598b-4"}],"isExternal":true},"598b-15":{"id":"mobx","moduleParts":{},"imported":[],"importedBy":[{"uid":"598b-6"},{"uid":"598b-2"}],"isExternal":true}},"env":{"rollup":"2.79.1"},"options":{"gzip":false,"brotli":false,"sourcemap":false}};
4018
4018
 
4019
4019
  const run = () => {
4020
4020
  const width = window.innerWidth;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vizabi/bubblechart",
3
- "version": "4.1.1",
3
+ "version": "4.1.2",
4
4
  "description": "Vizabi bubble chart",
5
5
  "scripts": {
6
6
  "prepublishOnly": "npm run build",