@vizabi/bubblechart 5.5.3 → 5.5.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/bubblechart.js +121 -10
- package/build/bubblechart.js.map +1 -1
- package/build/stats.html +1 -1
- package/package.json +1 -1
package/build/bubblechart.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bubblechart.js","sources":["../src/panzoom.js","../src/axistitles.js","../src/decorations.js","../src/layers/label-layer/label-multi-icon-layer/label-multi-icon-layer-vertex.glsl.js","../src/layers/label-layer/label-multi-icon-layer/label-multi-icon-layer.js","../src/layers/label-layer/label-background-layer/label-background-layer-vertex.glsl.js","../src/layers/label-layer/label-background-layer/label-background-layer-fragment.glsl.js","../src/layers/label-layer/label-background-layer/label-background-layer.js","../src/layers/label-layer/label-line-layer/label-line-layer-vertex.glsl.js","../src/layers/label-layer/label-line-layer/label-line-layer.js","../src/layers/label-layer/label-close-button-layer/label-close-button-layer.js","../src/layers/label-layer/label-layer.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([1, 100])\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(event) {\n self.__savedTransform = event.transform;\n\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 if (_this.__labelDragging) {\n if (!self.__labelDragging) self.__labelDragging = true;\n return;\n }\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.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 if (self.__labelDragging) {\n self.__labelDragging = false;\n self.zoomSelection.property(\"__zoom\", self.__savedTransform);\n self.__savedTransform = null;\n return;\n }\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 this.strings = { title: {Y: \"\", X: \"\", S: \"\", C: \"\"}, title_short: {Y: \"\", X: \"\", S: \"\", C: \"\"}, subtitle: {Y:\"\", X: \"\"}};\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, {throttle_ms: 50});\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 };\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.strings.title.X,\n this.strings.title.Y,\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 \"strings\": observable,\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}","export default /*glsl*/`\\\n#version 300 es\n#define SHADER_NAME label-icon-layer-vertex-shader\n\nin vec2 positions;\n\nin vec3 instancePositions;\nin vec3 instancePositions64Low;\nin float instanceSizes;\nin float instanceAngles;\nin vec4 instanceColors;\nin vec3 instancePickingColors;\nin vec4 instanceIconFrames;\nin float instanceColorModes;\nin vec2 instanceOffsets;\nin vec2 instancePixelOffset;\nin vec4 instanceRects;\nin float instanceDragged;\n\nuniform float sizeScale;\nuniform vec2 iconsTextureDim;\nuniform float sizeMinPixels;\nuniform float sizeMaxPixels;\nuniform bool billboard;\nuniform int sizeUnits;\nuniform vec4 padding;\nuniform float edgeMaxCoord;\n\nout float vColorMode;\nout vec4 vColor;\nout vec2 vTextureCoords;\nout vec2 uv;\n\nvec2 rotate_by_angle(vec2 vertex, float angle) {\n float angle_radian = angle * PI / 180.0;\n float cos_angle = cos(angle_radian);\n float sin_angle = sin(angle_radian);\n mat2 rotationMatrix = mat2(cos_angle, -sin_angle, sin_angle, cos_angle);\n return rotationMatrix * vertex;\n}\n\nvoid main(void) {\n geometry.worldPosition = instancePositions;\n geometry.uv = positions;\n geometry.pickingColor = instancePickingColors;\n uv = positions;\n\n vec2 iconSize = instanceIconFrames.zw;\n // convert size in meters to pixels, then scaled and clamp\n \n // project meters to pixels and clamp to limits \n float sizePixels = clamp(\n project_size_to_pixel(instanceSizes * sizeScale, sizeUnits), \n sizeMinPixels, sizeMaxPixels\n );\n\n // scale icon height to match instanceSize\n float instanceScale = iconSize.y == 0.0 ? 0.0 : sizePixels / iconSize.y;\n\n // scale and rotate vertex in \"pixel\" value and convert back to fraction in clipspace\n vec2 pixelOffset = positions / 2.0 * iconSize + instanceOffsets;\n pixelOffset = rotate_by_angle(pixelOffset, instanceAngles) * instanceScale;\n vec2 offset_icon = pixelOffset;\n pixelOffset += instancePixelOffset;\n pixelOffset.y *= -1.0;\n\n if (billboard) {\n gl_Position = project_position_to_clipspace(instancePositions, instancePositions64Low, vec3(0.0), geometry.position);\n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\n vec3 offset = vec3(pixelOffset, 0.0);\n DECKGL_FILTER_SIZE(offset, geometry);\n gl_Position.xy += project_pixel_size_to_clipspace(offset.xy);\n\n vec2 dimensions_wo_padd = instanceRects.zw * instanceSizes;\n vec2 clip_paddLT = project_pixel_size_to_clipspace(padding.xy);\n vec2 clip_paddRB = project_pixel_size_to_clipspace(padding.zw);\n vec2 positions0 = (positions + vec2(1.)) * 0.5;\n vec2 clip_offset_icon = project_pixel_size_to_clipspace(offset_icon);\n vec2 clip_dimensions_wo_padd = project_pixel_size_to_clipspace(dimensions_wo_padd);\n \n //default pos switch on edge\n if (instanceDragged < 0.5) {\n vec2 clip_offset = project_pixel_size_to_clipspace(abs(instancePixelOffset));\n gl_Position.x += (1.0 - step(-edgeMaxCoord + clip_paddLT.x, gl_Position.x - clip_dimensions_wo_padd.x - clip_offset_icon.x)) * (clip_offset.x * 2.0 + clip_dimensions_wo_padd.x);\n gl_Position.y += (-step(edgeMaxCoord - clip_paddLT.y, gl_Position.y + clip_dimensions_wo_padd.y + clip_offset_icon.y)) * (clip_offset.y * 2.0 + clip_dimensions_wo_padd.y);\n }\n\n //edge check\n gl_Position.x = clamp(gl_Position.x, -edgeMaxCoord + clip_paddLT.x + clip_dimensions_wo_padd.x + clip_offset_icon.x , edgeMaxCoord - clip_paddRB.x + clip_offset_icon.x);\n gl_Position.y = clamp(gl_Position.y, -edgeMaxCoord + clip_paddRB.y - clip_offset_icon.y, edgeMaxCoord - clip_paddLT.y - clip_dimensions_wo_padd.y - clip_offset_icon.y);\n\n } else {\n vec3 offset_common = vec3(project_pixel_size(pixelOffset), 0.0);\n DECKGL_FILTER_SIZE(offset_common, geometry);\n gl_Position = project_position_to_clipspace(instancePositions, instancePositions64Low, offset_common, geometry.position); \n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\n }\n\n vTextureCoords = mix(\n instanceIconFrames.xy,\n instanceIconFrames.xy + iconSize,\n (positions.xy + 1.0) / 2.0\n ) / iconsTextureDim;\n\n vColor = instanceColors;\n DECKGL_FILTER_COLOR(vColor, geometry);\n\n vColorMode = instanceColorModes;\n}\n`;\n","import { _MultiIconLayer } from '@deck.gl/layers';\nimport vs from \"./label-multi-icon-layer-vertex.glsl\";\n\nexport default class LabelMultiIconLayer extends _MultiIconLayer {\n static defaultProps = {\n getBoundingRect: {type: 'accessor', value: [0, 0, 0, 0]},\n getDragged: {type: 'accessor', value: 0.0},\n };\n\n initializeState() {\n super.initializeState();\n\n this.getAttributeManager().addInstanced({\n instanceRects: {\n size: 4,\n //accessor: 'getBoundingRect'\n accessor: (object, info) => {\n return this.parent.getBoundingRect(object, info);\n }\n },\n instanceDragged: {\n size: 1,\n transition: false,\n accessor: \"getDragged\",\n //accessor: (object, info) => {\n // console.log(\"dragged\",this.id, this.parent.props.getDragged(object, info)); \n // return this.parent.props.getDragged(object, info);\n //}\n },\n });\n\n }\n \n draw(params) {\n const {edgeMaxCoord = 1.0 } = this.parent.props;\n let { backgroundPadding: padding = [0.0, 0.0, 0.0, 0.0] } = this.parent.props;\n if (padding.length < 4) {\n padding = [padding[0], padding[1], padding[0], padding[1]];\n } \n params.uniforms.padding = padding;\n params.uniforms.edgeMaxCoord = edgeMaxCoord;\n super.draw(params);\n }\n\n getShaders() {\n return { ...super.getShaders(), vs };\n }\n}\n","export default /*glsl*/`\\\n#version 300 es\n#define SHADER_NAME label-text-background-layer-vertex-shader\n\nin vec2 positions;\n\nin vec3 instancePositions;\nin vec3 instancePositions64Low;\nin vec4 instanceRects;\nin float instanceSizes;\nin float instanceAngles;\nin vec2 instancePixelOffsets;\nin float instanceLineWidths;\nin vec4 instanceFillColors;\nin vec4 instanceLineColors;\nin vec3 instancePickingColors;\nin float instanceDragged;\n\nuniform bool billboard;\nuniform float opacity;\nuniform float sizeScale;\nuniform float sizeMinPixels;\nuniform float sizeMaxPixels;\nuniform vec4 padding;\nuniform int sizeUnits;\nuniform float edgeMaxCoord;\n\nout vec4 vFillColor;\nout vec4 vLineColor;\nout float vLineWidth;\nout vec2 uv;\nout vec2 dimensions;\n\nvec2 rotate_by_angle(vec2 vertex, float angle) {\n float angle_radian = radians(angle);\n float cos_angle = cos(angle_radian);\n float sin_angle = sin(angle_radian);\n mat2 rotationMatrix = mat2(cos_angle, -sin_angle, sin_angle, cos_angle);\n return rotationMatrix * vertex;\n}\n\nvoid main(void) {\n geometry.worldPosition = instancePositions;\n geometry.uv = positions;\n geometry.pickingColor = instancePickingColors;\n uv = positions;\n vLineWidth = instanceLineWidths;\n\n // convert size in meters to pixels, then scaled and clamp\n\n // project meters to pixels and clamp to limits\n float sizePixels = clamp(\n project_size_to_pixel(instanceSizes * sizeScale, sizeUnits),\n sizeMinPixels, sizeMaxPixels\n );\n\n dimensions = instanceRects.zw * sizePixels + padding.xy + padding.zw;\n\n vec2 pixelOffset = (positions * instanceRects.zw + instanceRects.xy) * sizePixels + mix(-padding.xy, padding.zw, positions);\n pixelOffset = rotate_by_angle(pixelOffset, instanceAngles);\n pixelOffset += instancePixelOffsets;\n pixelOffset.y *= -1.0;\n\n if (billboard) {\n gl_Position = project_position_to_clipspace(instancePositions, instancePositions64Low, vec3(0.0), geometry.position);\n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\n vec3 offset = vec3(pixelOffset, 0.0);\n DECKGL_FILTER_SIZE(offset, geometry);\n gl_Position.xy += project_pixel_size_to_clipspace(offset.xy);\n\n vec2 clip_dimensions = project_pixel_size_to_clipspace(dimensions);\n\n //default pos switch on edge\n if (instanceDragged < 0.5) {\n vec2 clip_dimensions_wo_padd = project_pixel_size_to_clipspace(instanceRects.zw * sizePixels);\n vec2 clip_offset = project_pixel_size_to_clipspace(abs(instancePixelOffsets));\n gl_Position.xy += (vec2(1.0, 0.0) - step(vec2(-edgeMaxCoord, edgeMaxCoord), gl_Position.xy + vec2(-1.0, 1.0) * clip_dimensions * positions)) * (clip_offset * 2.0 + clip_dimensions_wo_padd);\n }\n\n //edge check\n vec2 a = clamp(gl_Position.xy, vec2(-edgeMaxCoord), vec2(edgeMaxCoord) - clip_dimensions);\n vec2 b = clamp(gl_Position.xy, clip_dimensions - edgeMaxCoord, vec2(edgeMaxCoord));\n //flip y\n gl_Position.xy = mix(a, b, vec2(positions.x, 1.0 - positions.y));\n\n } else {\n vec3 offset_common = vec3(project_pixel_size(pixelOffset), 0.0);\n DECKGL_FILTER_SIZE(offset_common, geometry);\n gl_Position = project_position_to_clipspace(instancePositions, instancePositions64Low, offset_common, geometry.position);\n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\n }\n\n // Apply opacity to instance color, or return instance picking color\n vFillColor = vec4(instanceFillColors.rgb, instanceFillColors.a * opacity);\n DECKGL_FILTER_COLOR(vFillColor, geometry);\n vLineColor = vec4(instanceLineColors.rgb, instanceLineColors.a * opacity);\n DECKGL_FILTER_COLOR(vLineColor, geometry);\n}\n`;\n","export default /*glsl*/`\\\n#version 300 es\n#define SHADER_NAME label-text-background-layer-fragment-shader\n\nprecision highp float;\n\nuniform bool stroked;\nuniform float cornerRadius;\n\nin vec4 vFillColor;\nin vec4 vLineColor;\nin float vLineWidth;\nin vec2 uv;\nin vec2 dimensions;\n\nout vec4 fragColor;\n\nfloat RectSDF(vec2 p, vec2 b, float r)\n{\n vec2 d = abs(p) - b + vec2(r);\n return min(max(d.x, d.y), 0.0) + length(max(d, 0.0)) - r; \n}\n\nvoid main() \n{\n geometry.uv = uv;\n\n vec2 pixelPosition = uv * dimensions;\n \n if (stroked) {\n float fDist = RectSDF(pixelPosition-dimensions/2.0, dimensions/2.0 - vLineWidth/2.0-1.0, cornerRadius);\n float fBlendAmount = smoothstep(-1.0, 1.0, abs(fDist) - vLineWidth / 2.0);\n\n vec4 v4FromColor = vLineColor;\n vec4 v4ToColor = (fDist < 0.0) ? vFillColor : vec4(0.0);\n fragColor = mix(v4FromColor, v4ToColor, fBlendAmount);\n } else {\n fragColor = vFillColor;\n }\n \n DECKGL_FILTER_COLOR(fragColor, geometry);\n}\n`;\n","import { _TextBackgroundLayer } from '@deck.gl/layers';\nimport vs from './label-background-layer-vertex.glsl';\nimport fs from './label-background-layer-fragment.glsl';\n\nexport default class LabelBackgroundLayer extends _TextBackgroundLayer {\n static defaultProps = {\n getDragged: {type: 'accessor', value: 0.0},\n };\n\n initializeState() {\n super.initializeState();\n\n this.getAttributeManager().addInstanced({\n instanceDragged: {\n size: 1,\n transition: false,\n accessor: \"getDragged\",\n //accessor: (object, info) => {\n // return this.parent.props.getDragged(object, info);\n //}\n },\n });\n }\n \n draw(params) {\n const {cornerRadius = 0} = this.props;\n const {edgeMaxCoord = 1.0 } = this.parent.props;\n params.uniforms.cornerRadius = cornerRadius;\n params.uniforms.edgeMaxCoord = edgeMaxCoord;\n super.draw(params);\n }\n\n getShaders() {\n return { ...super.getShaders(), vs, fs };\n }\n}\n","export default /*glsl*/`\\\n#version 300 es\n#define SHADER_NAME line-layer-vertex-shader\n\nin vec3 positions;\nin vec3 instanceSourcePositions;\nin vec3 instanceTargetPositions;\nin vec3 instanceSourcePositions64Low;\nin vec3 instanceTargetPositions64Low;\nin vec2 instanceTargetPixelOffsets;\nin vec4 instanceColors;\nin vec3 instancePickingColors;\nin vec4 instanceRects;\nin float instanceSizes;\nin float instanceWidths;\nin float instanceRadius;\nin float instanceSourceDashOffsets;\nin float instanceDragged;\n\nuniform float opacity;\nuniform float widthScale;\nuniform float widthMinPixels;\nuniform float widthMaxPixels;\nuniform float useShortestPath;\nuniform int widthUnits;\nuniform vec4 padding;\nuniform float edgeMaxCoord;\n\n\nout vec4 vColor;\nout vec2 uv;\n\n// offset vector by strokeWidth pixels\n// offset_direction is -1 (left) or 1 (right)\nvec2 getExtrusionOffset(vec2 line_clipspace, float offset_direction, float width) {\n // normalized direction of the line\n vec2 dir_screenspace = normalize(line_clipspace * project_uViewportSize);\n // rotate by 90 degrees\n dir_screenspace = vec2(-dir_screenspace.y, dir_screenspace.x);\n\n return dir_screenspace * offset_direction * width / 2.0;\n}\n\nvec3 splitLine(vec3 a, vec3 b, float x) {\n float t = (x - a.x) / (b.x - a.x);\n return vec3(x, mix(a.yz, b.yz, t));\n}\n\nvoid main(void) {\n geometry.worldPosition = instanceSourcePositions;\n geometry.worldPositionAlt = instanceTargetPositions;\n vec3 source_world = instanceSourcePositions;\n vec3 target_world = instanceTargetPositions;\n vec3 source_world_64low = instanceSourcePositions64Low;\n vec3 target_world_64low = instanceTargetPositions64Low;\n\n if (useShortestPath > 0.5 || useShortestPath < -0.5) {\n source_world.x = mod(source_world.x + 180., 360.0) - 180.;\n target_world.x = mod(target_world.x + 180., 360.0) - 180.;\n float deltaLng = target_world.x - source_world.x;\n\n if (deltaLng * useShortestPath > 180.) {\n source_world.x += 360. * useShortestPath;\n source_world = splitLine(source_world, target_world, 180. * useShortestPath);\n source_world_64low = vec3(0.0);\n } else if (deltaLng * useShortestPath < -180.) {\n target_world.x += 360. * useShortestPath;\n target_world = splitLine(source_world, target_world, 180. * useShortestPath);\n target_world_64low = vec3(0.0);\n } else if (useShortestPath < 0.) {\n // Line is not split, abort\n gl_Position = vec4(0.);\n return;\n }\n }\n\n // Position\n vec4 source_commonspace;\n vec4 target_commonspace;\n vec4 source = project_position_to_clipspace(source_world, source_world_64low, vec3(0.), source_commonspace);\n vec4 target = project_position_to_clipspace(target_world, target_world_64low, vec3(0.), target_commonspace);\n\n\n vec2 targetPixelOffsets = project_pixel_size_to_clipspace(instanceTargetPixelOffsets);\n\n vec2 dimensions = instanceRects.zw * instanceSizes + padding.xy; \n vec2 clip_padd_right_bottom = project_pixel_size_to_clipspace(padding.zw);\n vec2 clip_dimensions = project_pixel_size_to_clipspace(dimensions);\n vec2 dimensions_wo_pad = instanceRects.zw * instanceSizes;\n vec2 clip_dimensions_wo_pad = project_pixel_size_to_clipspace(dimensions_wo_pad);\n\n\n //default pos switch on edge\n if (instanceDragged < 0.5) {\n vec2 clip_offset = abs(targetPixelOffsets);\n targetPixelOffsets += (vec2(1.0, 0.0) - step(vec2(-edgeMaxCoord, edgeMaxCoord), target.xy + targetPixelOffsets * vec2(1.0, -1.0) + vec2(-1.0, 1.0) * clip_dimensions)) * (clip_offset * 2.0 + clip_dimensions_wo_pad) * vec2(1.0,-1.0);\n }\n\n target.xy += targetPixelOffsets * vec2(1.0,-1.0);\n \n //edge check\n target.x = clamp(target.x, -edgeMaxCoord + clip_dimensions.x, edgeMaxCoord - clip_padd_right_bottom.x);\n target.y = clamp(target.y, -edgeMaxCoord + clip_padd_right_bottom.y, edgeMaxCoord - clip_dimensions.y);\n\n // 8point\n target.xy -= 0.5 * clip_dimensions_wo_pad * (step(0., vec2(1.0, -1.0) * (target.xy - source.xy)) + step(0., vec2(1.0, -1.0) * (target.xy - source.xy) - clip_dimensions_wo_pad)) * vec2(1.0, -1.0);\n\n //dash source offset\n vec2 line = target.xy - source.xy;\n float lineLength = length(line);\n vec2 clip_dash = project_pixel_size_to_clipspace(vec2(instanceSourceDashOffsets, instanceSourceDashOffsets));\n float dashOffset = min( lineLength / sqrt(pow(line.x / clip_dash.x, 2.0) + pow(line.y / clip_dash.y, 2.0)), lineLength ) / lineLength;\n source = mix(source, target, dashOffset);\n\n // linear interpolation of source & target to pick right coord\n float segmentIndex = positions.x;\n vec4 p = mix(source, target, segmentIndex);\n geometry.position = mix(source_commonspace, target_commonspace, segmentIndex);\n uv = positions.xy;\n geometry.uv = uv;\n geometry.pickingColor = instancePickingColors;\n\n // Multiply out width and clamp to limits\n float widthPixels = clamp(\n project_size_to_pixel(instanceWidths * widthScale, widthUnits),\n widthMinPixels, widthMaxPixels\n );\n\n // extrude\n vec3 offset = vec3(\n getExtrusionOffset(target.xy - source.xy, positions.y, widthPixels),\n 0.0);\n DECKGL_FILTER_SIZE(offset, geometry);\n DECKGL_FILTER_GL_POSITION(p, geometry);\n gl_Position = p + vec4(project_pixel_size_to_clipspace(offset.xy), 0.0, 0.0);\n\n // Color\n vColor = vec4(instanceColors.rgb, instanceColors.a * opacity);\n DECKGL_FILTER_COLOR(vColor, geometry);\n}\n`;\n","import { LineLayer } from \"@deck.gl/layers\";\nimport vs from \"./label-line-layer-vertex.glsl\";\n\nexport default class LabelLineLayer extends LineLayer {\n static defaultProps = {\n getTargetPixelOffset: {type: 'accessor', value: [0, 0]},\n getSourceDashOffset: {type: 'accessor', value: 0},\n getBoundingRect: {type: 'accessor', value: [0, 0, 0, 0]},\n getSize: {type: 'accessor', value: 0},\n getRadius: {type: 'accessor', value: 0},\n getDragged: {type: 'accessor', value: 0.0},\n };\n\n initializeState() {\n super.initializeState();\n\n this.getAttributeManager().addInstanced({\n instanceTargetPixelOffsets: {\n size: 2,\n transition: true,\n accessor: 'getTargetPixelOffset'\n },\n instanceSourceDashOffsets: {\n size: 1,\n transition: true,\n accessor: 'getSourceDashOffset',\n defaultValue: 1\n },\n instanceRects: {\n size: 4,\n accessor: 'getBoundingRect'\n },\n instanceSizes: {\n size: 1,\n transition: true,\n accessor: 'getSize',\n defaultValue: 0\n },\n instanceRadius: {\n size: 1,\n transition: true,\n accessor: 'getRadius',\n defaultValue: 1\n },\n instanceDragged: {\n size: 1,\n transition: false,\n accessor: 'getDragged'\n }\n });\n }\n\n draw(params) {\n const { edgeMaxCoord = 1.0 } = this.props;\n let { padding = [0.0, 0.0, 0.0, 0.0] } = this.props;\n if (padding.length < 4) {\n padding = [padding[0], padding[1], padding[0], padding[1]];\n } \n params.uniforms.padding = padding;\n params.uniforms.edgeMaxCoord = edgeMaxCoord;\n super.draw(params);\n }\n\n getShaders() {\n return { ...super.getShaders(), vs };\n }\n}\n","import { TextLayer } from \"@deck.gl/layers\";\n\nexport default class LabelCloseButtonLayer extends TextLayer {\n renderLayers() {\n if (this.props.data[0]) {\n const rect = this.getBoundingRect(this.props.data[0], {});\n const w = rect[2];\n const h = rect[3];\n const indexOffset = w > h ? 0 : 1;\n const padding = this.props.backgroundPadding;\n const paddingOffset = Math.abs(w - h) * 0.5 * this.props.getSize;\n padding[indexOffset] -= paddingOffset;\n padding[indexOffset + 2] -= paddingOffset;\n const cornerRadius = ((w > h ? h : w) * this.props.getSize + padding[1 - indexOffset] + padding[3 -indexOffset]) * 0.5 * 0.85;\n this.props._subLayerProps.background.cornerRadius = cornerRadius;\n }\n return super.renderLayers();\n }\n}\n","import { TextLayer } from \"@deck.gl/layers\";\nimport LabelMultiIconLayer from \"./label-multi-icon-layer/label-multi-icon-layer\";\nimport LabelBackgroundLayer from \"./label-background-layer/label-background-layer\";\nimport LabelLineLayer from \"./label-line-layer/label-line-layer\";\nimport LabelCloseButtonLayer from \"./label-close-button-layer/label-close-button-layer\";\n\nexport default class LabelLayer extends TextLayer {\n static defaultProps = {\n getLineSourceFillOffset: {type: 'accessor', value: 0},\n getRadius: {type: 'accessor', value: 0},\n getDragged: {type: 'accessor', value: 0.0},\n }\n \n getPickingInfo(e) {\n const {info, sourceLayer} = e;\n //console.log(\"bounds\", this.getBoundingRect(info.object, info));\n if (info.index !== -1) {\n if (this.state.closeData?.[0]?.dataIndex !== info.index) {\n const labelSize = this.getBoundingRect(info.object, info).slice(2).map(b => b * this.props.getSize);\n this.setState({ labelSize, closeData: [Object.assign({labelSize, viewportW: info.viewport.width, viewportH: info.viewport.height, dataIndex: info.index }, info.object)]});\n }\n } else {\n this.setState({closeData: []});\n }\n return info;\n }\n\n //shouldUpdateState({props, oldProps, context, changeFlags}) {\n // console.log(\"label shouldUpdateState\", props, oldProps, context, changeFlags);\n //}\n /*\n updateState(e) {\n const {props, changeFlags} = e;\n if (changeFlags.dataChanged) {\n }\n console.log(\"updateState\", props, changeFlags);\n return super.updateState(e);\n }\n*/\n \n renderLayers() {\n /*const sLayers = super.renderLayers();\n const layers = sLayers.map(l => {\n return l && l.clone({\n updateTriggers: {...l.props.updateTriggers, getDragged: this.props.updateTriggers[\"getDragged\"]},\n getDragged: this.props.getDragged\n })\n });\n */\n //console.log(\"LabelLayer\", this.props.updateTriggers, this.props.transitions);\n\n return [\n new LabelLineLayer(\n this.getSubLayerProps({\n id: 'line',\n updateTriggers: {\n //getColor: [activeObject],\n getDragged: this.props.updateTriggers.getDragged,\n getTargetPixelOffset: this.props.updateTriggers.getPixelOffset,//[dragX, dragY],\n getSourcePosition: this.props.updateTriggers.getPosition,\n getTargetPosition: this.props.updateTriggers.getPosition,\n }\n }), {\n data: this.props.data,\n getColor: [102, 102, 102],\n getSourcePosition: this.props.getPosition,\n getTargetPosition: this.props.getPosition,\n getTargetPixelOffset: this.props.getPixelOffset,\n getSourceDashOffset: this.props.getLineSourceFillOffset,\n getBoundingRect: this.getBoundingRect,\n getRadius: this.props.getRadius,\n getSize: this.props.getSize,\n getWidth: 1,\n getDragged: this.props.getDragged,\n padding: this.props.backgroundPadding,\n edgeMaxCoord: this.props.edgeMaxCoord,\n transitions: {\n getSourcePosition: this.props.transitions?.getPosition,\n getTargetPosition: this.props.transitions?.getPosition,\n getTargetPixelOffset: this.props.transitions?.getPosition,\n getSourceDashOffset: this.props.transitions?.getPosition\n }\n //pickable: true,\n //_dataDiff: (newData, oldData) => {\n // console.log(\"_datediff line\", newData, oldData, _updateRangesLine);\n // return dataDiff ? playing ? _updateRangesLine : null : null;//}\n }\n ),\n //...layers,\n ...super.renderLayers(),\n this.state.closeData?.length && new LabelCloseButtonLayer(\n this.getSubLayerProps({\n id: 'close',\n _subLayerProps: {\n background: {\n type: LabelBackgroundLayer,\n cornerRadius: 0,\n getDragged: 1,\n },\n characters: {\n type: LabelMultiIconLayer,\n getDragged: 1,\n }\n },\n updateTriggers: {\n getPixelOffset: this.props.updateTriggers.getPixelOffset\n },\n }), {\n data: this.state.closeData || [],\n getPosition: (d) => { \n //console.log(\"close pos\", d);\n return this.props.getPosition(d, {index: d.dataIndex}); \n },\n getPixelOffset: (d) => {\n const offset = typeof this.props.getPixelOffset == \"function\" ? this.props.getPixelOffset(d) : this.props.getPixelOffset.slice(0);\n\n //adjust label offset if label with current offset located outside of vieport\n //const offset = labelOffset[key];\n const pPos = this.context.viewport.project(this.props.getPosition(d, {index: d.dataIndex}).slice(0,2));\n const vW = d.viewportW;\n const vH = d.viewportH;\n const [lW, lH] = d.labelSize;\n const [lPaddL, lPaddT, lPaddR = lPaddL, lPaddB = lPaddT] = this.props.backgroundPadding;\n const dragged = this.props.getDragged.name ? this.props.getDragged(d) : this.props.getDragged;\n \n if (!dragged) {\n if(pPos[0] + offset[0] < lW + lPaddL) {\n offset[0] = lW - offset[0];\n }\n if(pPos[1] + offset[1] < lH + lPaddT) {\n offset[1] = lH - offset[1];\n } \n }\n \n if(pPos[0] + offset[0] < lW + lPaddL) {\n offset[0] = lW + lPaddL - pPos[0];\n } else if(pPos[0] + offset[0] > vW - lPaddR) {\n offset[0] = vW - lPaddR - pPos[0];\n }\n \n if(pPos[1] + offset[1] < lH + lPaddT) {\n offset[1] = lH + lPaddT - pPos[1];\n } else if(pPos[1] + offset[1] > vH - lPaddB) {\n offset[1] = vH - lPaddB - pPos[1];\n }\n\n offset[0] += lPaddR + 9 * 0.5;//half size closecross .getSize\n offset[1] -= lH + lPaddT - 9 * 0.5;//half size closecross .getSize\n return offset;\n },\n getText: x=>\"❌\",\n getColor: [255, 255, 255],\n getSize: 9,\n getTextAnchor: 'end',\n getAlignmentBaseline: 'bottom',\n getDragged: x=>1,\n edgeMaxCoord: this.props.edgeMaxCoord,\n fontSettings: {\n sdf: true,\n fontSize: 9 * 3,\n buffer: 8,\n },\n characterSet:[\"❌\"],\n //getPolygonOffset: null,//({layerIndex}) => [0, layerIndex * 100],\n pickable: true,\n background: true,\n backgroundPadding: [9, 9, 9, 8],\n getBackgroundColor: [0x60, 0x78, 0x89],\n getBorderColor: [255, 255, 255],\n getBorderWidth: 2,\n outlineColor: [255, 255, 255],\n outlineWidth: 2,\n }\n )\n ]\n }\n}","import {\n Chart,\n Utils,\n LegacyUtils as utils,\n axisSmart,\n LabelSizeHelper,\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\";\nimport { Deck, OrthographicView } from \"@deck.gl/core\";\nimport { ScatterplotLayer, LineLayer, TextLayer } from \"@deck.gl/layers\";\nimport LabelLayer from \"./layers/label-layer/label-layer.js\";\nimport LabelBackgroundLayer from \"./layers/label-layer/label-background-layer/label-background-layer.js\";\nimport LabelMultiIconLayer from \"./layers/label-layer/label-multi-icon-layer/label-multi-icon-layer.js\";\n\nconst COLOR_WHITEISH = \"rgb(253, 253, 253)\";\nconst COLOR_BLACKISH = \"rgb(51, 51, 51)\";\nconst THICK_LINE_THRESHOLD_FOR_DARKER_COLOR = 3;\nconst SUPERHIGHLIGHT_DELAY = 500;\nconst CHARACTER_SET =\n'ABCDEFGHIJKLMNOPQRSTUVWXYZÅÄÖabcdefghijklmnopqrstuvwxyzåäéö0123456789+-−–*/%,.²:() '.split('');\n\nconst KEY = Symbol.for(\"key\");\nconst TRAIL_KEY = Symbol.for(\"trailHeadKey\");\nconst OPACITY_KEY = Symbol.for(\"opacity\");\nconst REQUIRED_KEY = Symbol.for(\"bubbleRequired\");\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[TRAIL_KEY];\n}\n\nconst MAX_RADIUS_EM = 0.05;\n\nconst PROFILE_CONSTANTS = (width, height) => ({\n SMALL: {\n margin: { top: 30, bottom: 40, 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: 45, 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: LabelSizeHelper,\n placeholder: \".vzb-bc-labels\", \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>\n <div class=\"vzb-bubblechart-canvas-wrap vzb-bubblechart-svg\"></div>\n <svg class=\"vzb-bubblechart-svg vzb-export\">\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 </svg>\n </svg>\n <svg class=\"vzb-bubblechart-svg vzb-export\">\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 this.__data;\n this.__oldData;\n this.__labelData;\n this.__trailsData;\n this.__lastLineTrailData;\n this.__newLastLineTrailData;\n this.activeObject = undefined;\n this.labelOffset = {};\n this.labelDragged = {};\n this.dragX0;\n this.dragY0;\n this.dragX;\n this.dragY;\n this.redrawUpdateTrigger = 0;\n this.lastLineRedrawUpdateTrigger = 0;\n this.opacityUpdateTrigger = 0;\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 canvasWrap: this.element.select(\".vzb-bubblechart-canvas-wrap\"),\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: \"LabelSizeHelper\"});\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.DOM.canvasWrap.style(\"pointer-events\", \"all\");\n this.FONT_FAMILY = \n 'Verdana, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\"';\n\n this.deckBubble = this.getDeck();\n this.props = this.getProps(); \n\n this._panZoom.zoomSelection(this.DOM.canvasWrap.select(\"canvas\"));\n this.DOM.canvasWrap.select(\"canvas\").node()\n .addEventListener(\"wheel\", e => {\n if(!_this.ui?.zoomOnScrolling) return;\n e.preventDefault();\n e.stopPropagation();\n },\n { passive: false }\n );\n this.DOM.canvasWrap.select(\"canvas\")\n .call(this._panZoom.dragRectangle)\n .call(this._panZoom.zoomer)\n .on(\"contextmenu\", (evt) => evt.preventDefault())\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 .on(\"mouseleave\", () => {\n if (this.MDL.highlighted.data.filter.any()) {\n this.MDL.highlighted.data.filter.clear();\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({interval: 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 this.frameStepIndexMax = this.MDL.frame.stepCount - 1;\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, {throttle_ms: 50});\n // this.addReaction(this._resetZoomMinMaxXReaction, {ignoreStatus: this._resetZoomMinMaxX});\n // this.addReaction(this._resetZoomMinMaxYReaction, {ignoreStatus: this._resetZoomMinMaxY});\n this.addReaction(this._redrawOpacity);\n this.addReaction(this._updateHighlighted);\n this.addReaction(this._updateLabelFontSizes);\n this.addReaction(this._updateSelected);\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.perfDataStart = performance.now();\n this._updateMarkerSizeLimits();\n this.processFrameData();\n this._drawBubbles();\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.duration;\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\n redrawData(duration = 0) {\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 if (duration) {\n const _pickable = this.deckBubble.props._pickable;\n this.deckBubble.setProps({ _pickable: false, layers: this.getBubbleLayers(this.__data, !!duration, 0.001) });\n requestAnimationFrame(() => {\n this.redrawUpdateTrigger++;\n this.deckBubble.setProps({ layers: this.getBubbleLayers(this.__data, !!duration, duration) });\n setTimeout(() => {\n this.deckBubble.setProps({ _pickable });\n }, duration);\n });\n } else {\n this.redrawUpdateTrigger++;\n this.deckBubble.setProps({ layers: this.getBubbleLayers(this.__data, !!duration, duration) });\n }\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 get duration() {\n return this.MDL.frame.playing ? this.MDL.frame.speed || 0 : 0;\n }\n\n _updateScales() {\n this.yScale = this.MDL.y.scale.d3Scale;\n this.xScale = this.MDL.x.scale.d3Scale;\n //this._labels.setScales(this.xScale, this.yScale);\n }\n\n get cScale() {\n return this.MDL.color.scale.d3Scale;\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 canvasWrap\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 canvasWrap.style(\"transform\", \"translate(\" + (margin.left * this.profileConstants.leftMarginRatio) + \"px,\" + margin.top + \"px)\");\n\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 textAnchor: \"start\",\n repositionLabels: Object.fromEntries(y.rollup.map(m => ([m.tickPosition, { x: 1.5 * 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.services.locale.auto({shareOrPercent: y.data?.conceptProps?.format})\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.services.locale.auto({shareOrPercent: x.data?.conceptProps?.format})\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 canvasWrap.style(\"max-width\", width + \"px\");\n canvasWrap.style(\"max-height\", Math.max(0, height) + \"px\");\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 _drawBubbles() {\n if (this.model.encoding.frame.playing) {\n //requestAnimationFrame(() => {\n this.deckBubble.setProps({layers: this.getBubbleLayers(this.__oldData, false, 0, undefined, this.__lastLineTrailData)})\n requestAnimationFrame(() => {\n this.lastLineRedrawUpdateTrigger++;\n this.deckBubble.setProps({layers: this.getBubbleLayers(this.__oldData, true, 0.001, undefined, this.__lastLineTrailData)})\n requestAnimationFrame(() => {\n this.redrawUpdateTrigger++;\n this.__labelData = this.__newLabelData;\n this.deckBubble.setProps({layers: this.getBubbleLayers(this.__data, true, this.duration + (this.perfDataStart - performance.now()) * 0.85, undefined, this.__newLastLineTrailData)})\n this.__trailsData = this.__newTrailsData;\n //_updateRangesLine = _newUpdateRangesLine;\n });\n });\n //});\n } else {\n //_updateRangesLine = _newUpdateRangesLine;\n this.deckBubble.setProps({layers: this.getBubbleLayers(this.__data, false)});\n }\n }\n\n processFrameData() {\n const trailsCount = this.frameStepIndexMax + 2;\n //const _endChunkIndexes = [];\n let trailChunkIndex = 0;\n let trailChunkIndex1 = 0;\n let indexOffset;\n let newData = [];\n //let deltaTrailChunkIndex = 0;\n let currentTrailKey = null;\n //const _updateRanges = [];\n //const _newUpdateRangesLine = [];\n const selectedData = new Map();\n const newTrailsData = [];\n const lastLineTrailData = [];\n const newLastLineTrailData = [];\n const trailsZ = {};\n let dataTrailChunkIndex;\n const trailsShowAndSomeSelected = this.MDL.trail.show && this.__someSelected;\n\n if (trailsShowAndSomeSelected) newData = this.model.dataArray.reduce((res, d, i) => {\n d.r = utils.areaToRadius(this.sScale(d.size || 0));\n if (d[TRAIL_KEY]) {\n if (!currentTrailKey) {\n currentTrailKey = d[TRAIL_KEY];\n newTrailsData.length += trailsCount;\n dataTrailChunkIndex = res.length; \n res.length += trailsCount;\n trailChunkIndex1 = trailChunkIndex + 1;\n }\n if (!d[REQUIRED_KEY]) {\n newTrailsData[trailChunkIndex++] = d;\n res[dataTrailChunkIndex++] = d;\n if (!selectedData.has(d[TRAIL_KEY])) selectedData.set(d[TRAIL_KEY], Object.assign({}, d));\n }\n } else {\n if (currentTrailKey) {\n trailsZ[currentTrailKey] = d.size;//d.z\n //newTrailsData[trailChunkIndex] = Object.assign({}, newTrailsData[trailChunkIndex - 1]);\n //_newUpdateRangesLine.push({startRow: trailChunkIndex - 2, endRow: trailChunkIndex});\n //newTrailsData[trailChunkIndex - 1] = d;\n if(!d[REQUIRED_KEY]) {\n newTrailsData.fill(d, trailChunkIndex, newTrailsData.length);\n indexOffset = trailChunkIndex == trailChunkIndex1 ? 1 : 2;\n lastLineTrailData.push([newTrailsData[trailChunkIndex - indexOffset], newTrailsData[trailChunkIndex - indexOffset]]);\n newLastLineTrailData.push([newTrailsData[trailChunkIndex - indexOffset], d]);\n res.fill(Object.assign({uz: -15000}, res[dataTrailChunkIndex - 1]), dataTrailChunkIndex, res.length - 1);\n res[res.length - 1] = d;\n } else {\n res.fill(Object.assign({uz: -15000}, res[dataTrailChunkIndex - 1]), dataTrailChunkIndex, res.length - 1);\n res.length--;\n }\n trailChunkIndex = newTrailsData.length;\n currentTrailKey = null;\n } else {\n if(!d[REQUIRED_KEY]) res.push(d);\n }\n }\n return res;\n\n }, []) \n \n //handle a situation when user is using opacity feature to hide unselected bubbles completely\n //the invisible bubbles should be completely transparent to mouse events, better yet not exist at all\n //it is convenient to do here because we are running O(N) filter for other purposes anyway\n else if (this.__someSelected && this.ui.opacitySelectDim === 0) newData = this.model.dataArray.filter(d => {\n if (d[REQUIRED_KEY] || !this.MDL.selected.data.filter.markers.has(d[KEY])) return false;\n d.r = utils.areaToRadius(this.sScale(d.size || 0));\n return true;\n });\n \n else newData = this.model.dataArray.filter(d => {\n if (d[REQUIRED_KEY]) return false;\n d.r = utils.areaToRadius(this.sScale(d.size || 0));\n return true;\n });\n\n if (newTrailsData.length) {\n newTrailsData.forEach(d => {\n if (!d[TRAIL_KEY]) return;\n d.z = trailsZ[d[TRAIL_KEY]];\n });\n }\n \n //console.log(\"__data\", this.model.dataArray, this.__data, newData, this.__trailsData, newTrailsData);\n \n this.__newLabelData = trailsShowAndSomeSelected ? this.__selectedKeys.map(key => selectedData.get(key) || this.model.dataMap.get(key)).filter(d => d && !d[REQUIRED_KEY])\n :\n this.__selectedKeys.map(key => this.model.dataMap.get(key)).filter(d => d && !d[REQUIRED_KEY]);\n\n if (this.__selectedKeys.length > this.__newLabelData.length) {\n const labelKeys = this.__newLabelData.map(d => d[TRAIL_KEY] || d[KEY]);\n this.__selectedKeys.sort((a, b) => labelKeys.includes(b) - labelKeys.includes(a));\n }\n \n if (this.model.encoding.frame.playing) {\n this.__oldData = this.resortData(this.__data, newData, trailsCount - 2);\n } else {\n this.__trailsData = newTrailsData;\n this.__labelData = this.__newLabelData;\n }\n this.__data = newData;\n this.__newTrailsData = newTrailsData;\n this.__newLastLineTrailData = newLastLineTrailData;\n this.__lastLineTrailData = lastLineTrailData;\n }\n\n resortData(data, newData, trailsCount) {\n const keyToIndex = {};\n const trailsStartIndex = {};\n let i = 0, index;\n \n data.forEach((d, i) => {\n if (d[TRAIL_KEY]) {\n if (trailsStartIndex[d[TRAIL_KEY]] === undefined) trailsStartIndex[d[TRAIL_KEY]] = i;\n } else {\n keyToIndex[d[KEY]] = d;\n }\n });\n //console.log(\"trailsStartIndex\", trailsStartIndex);\n return newData.map(d => {\n if (d[TRAIL_KEY]) {\n index = i++;\n if (i > trailsCount) i = 0;\n return data[trailsStartIndex[d[TRAIL_KEY]] + index] || Object.assign({ [OPACITY_KEY]: 0 }, d);\n }\n return keyToIndex[d[KEY]] || Object.assign({ [OPACITY_KEY]: 0 }, d);\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 if (this.root.ui.minMaxRadius) {\n this.root.ui.minMaxRadius.min = minRadiusPx;\n this.root.ui.minMaxRadius.max = maxRadiusPx;\n } else {\n this.root.ui.minMaxRadius = {\n min: minRadiusPx,\n max: maxRadiusPx\n };\n }\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 _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 _updateLabelFontSizes() {\n this._labels.MDL.size_label.scale.extent;\n\n this.__defaultFontSize = this._labels.defaultFontSize;\n this.__isConstantFontSize = this._labels.MDL.size_label.data.isConstant;\n this.__fontSize = this._labels.getFontSize(this._labels.MDL.size_label.data.constant);\n this.deckBubble.setProps({layers: this.getBubbleLayers(undefined, false)})\n }\n\n _updateHighlighted() {\n const highlightedFilter = this.MDL.highlighted.data.filter;\n\n this.__someHighlighted = highlightedFilter.any();\n this.__highlightedMarkers = new Map(highlightedFilter.markers);\n const activeObject = this.__highlightedMarkers.size == 1 ? Object.assign({}, this.model.dataMap.get(this.__highlightedMarkers.keys().next().value)) : null;\n this.activeObject = activeObject?.[REQUIRED_KEY] ? null : activeObject;\n this.activeObjectData = this.activeObject ? [this.activeObject] : [];\n this.opacityUpdateTrigger++;\n this.deckBubble.setProps({layers: this.getBubbleLayers(undefined, false)})\n }\n\n _updateSelected() {\n const selectedFilter = this.MDL.selected.data.filter;\n \n this.__someSelected = selectedFilter.any();\n this.__selectedMarkers = new Map(selectedFilter.markers);\n this.__selectedKeys = [...this.__selectedMarkers.keys()];\n\n this.labelZScale = d3.scaleLinear([0, this.__selectedKeys.length - 1],[-0.09, -0.05]);\n\n Object.keys(this.labelOffset).forEach(key => {\n if (!this.__selectedMarkers.has(key)) delete this.labelOffset[key];\n });\n Object.keys(this.labelDragged).forEach(key => {\n if (!this.__selectedMarkers.has(key)) delete this.labelDragged[key];\n });\n\n runInAction(() => {\n if (!this.MDL.trail.show) {\n this.__labelData = this.__selectedKeys.map(key => this.model.dataMap.get(key)).filter(d => d && !d[REQUIRED_KEY]);\n this.opacityUpdateTrigger++;\n this.deckBubble.setProps({layers: this.getBubbleLayers(undefined, false)});\n }\n });\n }\n\n _redrawOpacity() {\n this.ui.opacityRegular;\n this.ui.opacitySelect;\n this.ui.opacitySelectDim;\n this.ui.opacityHighlight;\n this.ui.opacityHighlightDim;\n this.MDL.color.scale.d3Scale;\n\n this.opacityUpdateTrigger++;\n this.deckBubble.setProps({layers: this.getBubbleLayers(this.__data, false, 0)});\n }\n\n _getBubbleOpacity(d) { \n const ui = this.ui;\n\n if (this.__highlightedMarkers.has(d[KEY])) return ui.opacityHighlight;\n if (isTrailBubble(d)) return ui.opacityRegular;\n if (this.__selectedMarkers.has(d[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 const d = this.activeObject;\n\n if (highlightedFilter.markers.size === 1 && d && !d[REQUIRED_KEY]) {\n const highlightedKey = highlightedFilter.markers.keys().next().value;\n //Object.assign(this.model.dataMap.get(highlightedKey));\n const selectedKey = d[TRAIL_KEY] || d[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({ [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, true);\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 if (!superHighlightFilter.any() || this.duration) {\n if (this.__superHLTimeoutID) {\n clearTimeout(this.__superHLTimeoutID);\n this.__superHLTimeoutID = null;\n this.opacityUpdateTrigger++;\n this.__superHLBlink = false;\n this.deckBubble.setProps({ layers: this.getBubbleLayers(this.__data, false, 0) });\n }\n return;\n }\n\n const _this = this;\n this.superHighlightFilter = superHighlightFilter;\n this.__superHLBlink = false;\n loop();\n\n function loop() {\n _this.__superHLTimeoutID = setTimeout(() => {\n _this.__superHLBlink = !_this.__superHLBlink;\n _this.opacityUpdateTrigger++;\n _this.deckBubble.setProps({ layers: _this.getBubbleLayers(_this.__data, false, 0) });\n\n loop();\n }, SUPERHIGHLIGHT_DELAY);\n }\n \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 wrapper = this.DOM.canvasWrap;\n if (this.ui.cursorMode === \"plus\") {\n wrapper.classed(\"vzb-zoomin\", true);\n wrapper.classed(\"vzb-zoomout\", false);\n wrapper.classed(\"vzb-panhand\", false);\n this.deckBubble.setProps({ _pickable: false });\n } else if (this.ui.cursorMode === \"minus\") {\n wrapper.classed(\"vzb-zoomin\", false);\n wrapper.classed(\"vzb-zoomout\", true);\n wrapper.classed(\"vzb-panhand\", false);\n this.deckBubble.setProps({ _pickable: false });\n } else if (this.ui.cursorMode === \"hand\") {\n wrapper.classed(\"vzb-zoomin\", false);\n wrapper.classed(\"vzb-zoomout\", false);\n wrapper.classed(\"vzb-panhand\", true);\n this.deckBubble.setProps({ _pickable: true });\n } else {\n wrapper.classed(\"vzb-zoomin\", false);\n wrapper.classed(\"vzb-zoomout\", false);\n wrapper.classed(\"vzb-panhand\", false);\n this.deckBubble.setProps({ _pickable: true });\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.duration);\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[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 getDeck() {\n const width = this.DOM.canvasWrap.node().offsetWidth;\n const height = this.DOM.canvasWrap.node().offsetHeight;\n this.__viewState = {\n target: [width * 0.5, height * 0.5, 0],\n maxZoom: 9.5,\n minZoom: -6.9,\n zoom: 0,\n width,\n height\n };\n\n return new Deck({\n // The HTML container to render into\n parent: this.DOM.canvasWrap.node(),\n //canvas: this.DOM.canvasWrap.select(\"canvas\").node(),\n views: this.getViews(),\n viewState: this.__viewState,\n // layerFilter: ({layer, viewport}) => {\n // //consolethis..log(\"layerFilter\", viewport.id, layer.id);\n // if (viewport.id == 'axis' && layer.id === 'Axis') {\n // return true;\n // }\n // if (viewport.id == 'bubble' && layer.id !== 'Axis') {\n // return true;\n // } \n // return false;\n // },\n getCursor: ({isDragging, isHovering}) => \n isDragging ? 'grabbing' : isHovering ? 'pointer' : 'default'\n ,\n onViewStateChange: e => {\n //console.log(\"onviewstatechange\", e);\n this.__viewState = e.viewState;\n this.deckBubble.setProps({ viewState: this.__viewState });\n },\n onResize: ({ width, height }) => {\n //console.log(\"onresize\", this, width, height);\n const targetDelta = [(this.__viewState.width - width) * 0.5, (this.__viewState.height - height) * 0.5, 0];\n this.deckBubble.setProps({ viewState: { ...this.__viewState, target: this.__viewState.target.map((v, i) => v - targetDelta[i])}});\n }\n });\n }\n\n getViews(controllerProps = true) {\n return [\n // new OrthographicView({id: 'axis', \n // controller: false,\n // //padding: { left: 50, top: 50, bottom: 50, right: 50 },\n // flipY: false, far: 1000}),\n new OrthographicView({id: 'bubble', \n //controller: controllerProps, \n flipY: true, far: 1000})\n ]\n }\n\n getProps() {\n return {\n getSourcePosition: (d, { target }) => {\n if (!d) return;\n target[0] = this.xScale(d.x);\n target[1] = this.yScale(d.y);\n target[2] = d.uz ? d.uz : this.zScale(d.z*1.01);\n return target;\n },\n getTargetPosition: (_d, { data, index, target }) => {\n if (!_d) return;\n const d = _d[TRAIL_KEY] ? data[index + 1] ? data[index + 1] : _d : _d;\n if (!d) return;\n target[0] = this.xScale(d.x);\n target[1] = this.yScale(d.y);\n target[2] = d.uz ? d.uz : this.zScale(d.z*1.01);\n return target;\n }, \n getLastLineSourcePosition: (d, { target }) => {\n if (!d) return;\n target[0] = this.xScale(d[0].x);\n target[1] = this.yScale(d[0].y);\n target[2] = this.zScale(d[0].z*1.01);\n return target;\n },\n getLastLineTargetPosition: (d, { target }) => {\n if (!d) return;\n target[0] = this.xScale(d[1].x);\n target[1] = this.yScale(d[1].y);\n target[2] = this.zScale(d[1].z*1.01);\n return target;\n }, \n getLabelText: (d) => {\n if (!d) return;\n return this.MDL.trail.show ? this.__labelWithFrame(d) : this.__labelWithoutFrame(d);\n },\n getTooltipText: (d) => {\n if (!d) return;\n return this.ui.labels.enabled ? d[TRAIL_KEY] || this.__selectedMarkers.has(d[KEY]) ? this.localise(d.frame) : this.__labelWithoutFrame(d)\n :\n d[TRAIL_KEY] ? this.__labelWithFrame(d) : this.__labelWithoutFrame(d);\n },\n getLabelPosition: (d) => {\n if (!d) return;\n //const z = d[KEY] == this.activeObject.?[KEY] ? 2: 1;\n //console.log(d[KEY],this.xScale(d.x), this.yScale(d.y));\n //return [this.xScale(d.x), this.yScale(d.y)];\n return [this.xScale(d.x), this.yScale(d.y)];\n },\n getLabelPositionZ: (d, { index }) => {\n if (!d) return;\n //const z = d[KEY] == this.activeObject.?[KEY] ? 2: 1;\n //console.log(\"posZ\", this.labelZScale(index), d[KEY], index);\n //return [this.xScale(d.x), this.yScale(d.y)];\n return [this.xScale(d.x), this.yScale(d.y), this.labelZScale(index)];\n },\n getTooltipPixelOffset: (d) => {\n if (!d) return;\n const r = d.r / Math.sqrt(2) + 7;\n return [-r, -r];\n },\n getPixelOffset: (d) => {\n if (!d) return;\n const key = d[TRAIL_KEY] || d[KEY];\n const offsetX = this.labelOffset[key] && this.labelOffset[key][0] || 0;\n const offsetY = this.labelOffset[key] && this.labelOffset[key][1] || 0;\n const r = d.r / Math.sqrt(2) + 4;\n return [offsetX || -r, offsetY || -r];\n },\n getDragged: (d) => {\n if (!d) return;\n const key = d[TRAIL_KEY] || d[KEY];\n return this.labelDragged[key];\n },\n onLabelDragStart: ({ object:d, x, y, coordinate, sourceLayer, viewport }, evt) => {\n console.log(\"onLabelDragStart\", d, x, y, coordinate, viewport, sourceLayer)\n if (!d) return;\n this.__labelDragging = true;\n const key = d[TRAIL_KEY] || d[KEY];\n if (!this.labelOffset[key]) {\n const r = d.r / Math.sqrt(2) + 4;\n this.labelOffset[key] = [-r, -r];\n }\n \n //adjust label offset if label with current offset located outside of vieport\n const offset = this.labelOffset[key];\n const pPos = viewport.project(this.props.getPosition(d, { target: [] }).slice(0,2));\n const vW = viewport.width;\n const vH = viewport.height;\n const [lW, lH] = sourceLayer.parent.state.labelSize;\n const [lPaddL, lPaddT, lPaddR = lPaddL, lPaddB = lPaddT] = sourceLayer.parent.props.backgroundPadding;\n \n if (!this.labelDragged[key]) {\n this.labelDragged[key] = 1.0;\n \n if(pPos[0] + offset[0] < lW + lPaddL) {\n offset[0] = lW - offset[0];\n }\n if(pPos[1] + offset[1] < lH + lPaddT) {\n offset[1] = lH - offset[1];\n } \n }\n \n if(pPos[0] + offset[0] < lW + lPaddL) {\n offset[0] = lW + lPaddL - pPos[0];\n } else if(pPos[0] + offset[0] > vW - lPaddR) {\n offset[0] = vW - lPaddR - pPos[0];\n }\n \n if(pPos[1] + offset[1] < lH + lPaddT) {\n offset[1] = lH + lPaddT - pPos[1];\n } else if(pPos[1] + offset[1] > vH - lPaddB) {\n offset[1] = vH - lPaddB - pPos[1];\n }\n \n //console.log(\"offset\", offset, \"point\", pPos, lW, lH, viewport);\n this.dragX0 = this.labelOffset[key][0] - x;\n this.dragY0 = this.labelOffset[key][1] - y;\n //this.deckBubble.setProps({layers: this.getBubbleLayers(undefined, false, 0, false), controller: { dragPan: dragFlag }}); \n return true;\n },\n onLabelDrag: ({ object:d, x, y, coordinate, sourceLayer, viewport }, evt) => {\n if (!d) return;\n \n this.dragX = this.dragX0 + x;\n this.dragY = this.dragY0 + y;\n const key = d[TRAIL_KEY] || d[KEY];\n this.labelOffset[key][0] = this.dragX;\n this.labelOffset[key][1] = this.dragY;\n //console.log(\"offset\", this.labelOffset[key], \"point\", sourceLayer.project(pos), viewport.getBounds(), viewport);\n this.deckBubble.setProps({layers: this.getBubbleLayers(undefined, false, 0, false),}); //views: this.getViews({ dragPan: dragFlag }),}); \n return true;\n },\n onLabelDragEnd: () => {\n //if (!d) return;\n this.__labelDragging = false; \n return true;\n },\n onLabelClick: ({ object:d, layer, sourceLayer }) => {\n if (!d) return;\n if (sourceLayer.id !== \"labelTextLayer-close\") return;\n \n const dataKey = {[KEY]: d[TRAIL_KEY] || d[KEY]}\n console.log(\"click pretoggle\", d, dataKey);\n runInAction(() => {\n this.MDL.selected.data.filter.toggle(dataKey);\n console.log(\"click toggle\", dataKey);\n })\n layer.setState({closeData: []});\n \n this.deckBubble.setProps({layers: this.getBubbleLayers(undefined, false, 0, false)});\n },\n onLabelHover: ({ object:d, layer }) => {\n if (d && this.__selectedKeys.at(-1) !== (d[TRAIL_KEY] || d[KEY])) {\n const index = this.__selectedKeys.indexOf(d[TRAIL_KEY] || d[KEY]);\n this.__selectedKeys.push(this.__selectedKeys.splice(index, 1)[0]);\n const data = this.__labelData.splice(index, 1);\n this.__labelData = [...this.__labelData, ...data];\n layer.setState({ closeData: [layer.state.closeData[0]]});\n layer.state.closeData[0].dataIndex = this.__selectedKeys.length - 1;\n this.deckBubble.setProps({layers: this.getBubbleLayers(undefined, false)});\n }\n },\n getLabelLineTargetPixelOffset: (d) => {\n if (!d) return;\n const key = d[TRAIL_KEY] || d[KEY];\n const offsetX = this.labelOffset[key] && this.labelOffset[key][0] || 0;\n const offsetY = this.labelOffset[key] && this.labelOffset[key][1] || 0;\n return [offsetX || 0, -offsetY || 0];\n },\n getPosition: (d, { target }) => {\n if (!d) return;\n target[0] = this.xScale(d.x);\n target[1] = this.yScale(d.y);\n target[2] = d.uz ? d.uz : this.zScale(d.size);\n return target;\n },\n getPositionHighlight: (d, { target }) => {\n if (!d) return;\n target[0] = this.xScale(d.x);\n target[1] = this.yScale(d.y);\n target[2] = -0.095;\n return target;\n },\n getPositionXY: (d, { target }) => {\n if (!d) return;\n target[0] = this.xScale(d.x);\n target[1] = this.yScale(d.y);\n return target;\n },\n \n getFillColor: (d, { target }) => {\n if (!d) return;\n if (this.__superHLBlink && this.superHighlightFilter.has(d)) {\n target[3] = 0;\n return target;\n }\n const c = d3.color(this.__getColor(d[TRAIL_KEY] || d[KEY], d.color)).formatRgb().slice(4, -1).split(\",\").map(v=>+v);\n target[0] = c[0];\n target[1] = c[1];\n target[2] = c[2];\n target[3] = this._getBubbleOpacity(d) * 255;\n return target;\n },\n getTrailLineFillColor: (d, { data, index, target }) => {\n if (!d) return;\n if (this.__superHLBlink && this.superHighlightFilter.has(d)) {\n target[3] = 0;\n return target;\n }\n const d1 = data[index + 1] || d;\n const c = d3.color(this.__getColorForTrail(d1.color, d1.size)).formatRgb().slice(4, -1).split(\",\").map(v=>+v);\n target[0] = c[0];\n target[1] = c[1];\n target[2] = c[2];\n target[3] = this._getBubbleOpacity(d) * 255;\n return target;\n },\n getLastTrailLineFillColor: (d, { target }) => {\n if (!d) return;\n const c = d3.color(this.__getColorForTrail(d[1].color, d[1].size)).formatRgb().slice(4, -1).split(\",\").map(v=>+v);\n target[0] = c[0];\n target[1] = c[1];\n target[2] = c[2];\n target[3] = this._getBubbleOpacity(d[0]) * 255;\n return target;\n },\n getLineColor: (d, { target }) => {\n if (!d) return;\n if (this.__superHLBlink && this.superHighlightFilter.has(d)) {\n target[3] = 0;\n return target;\n }\n target[0] = 0x33;\n target[1] = 0x33;\n target[2] = 0x33;\n target[3] = this._getBubbleOpacity(d) * 255;\n return target;\n },\n getRadius: (d) => {\n if (!d) return;\n return d.r;\n },\n getTrailLineWidth: (d, { data, index }) => {\n if (!d) return;\n const d1 = data[index + 1] || d;\n return this.trailSizeScale(d1.size);\n },\n getLastTrailLineWidth: (d) => {\n if (!d) return;\n return this.trailSizeScale(d[1].size);\n },\n onHover: ({ object: d }) => {\n //console.log(\"onhover\", d, this.activeObject);\n //zero opacity for non-selected markers\n if (d && this._getBubbleOpacity(d) == 0) return;\n const invalidate = d?.[KEY] !== this.activeObject?.[KEY]\n //this.activeObject = d;\n if (invalidate) {\n //setTimeout(() => {\n //console.log(\"invalidate\", d, this.activeObject);\n if (!d) {\n runInAction(() => {\n this.MDL.highlighted.data.filter.clear();\n //console.log(\"clear highlighted\");\n }) \n } else {\n runInAction(() => {\n this.MDL.highlighted.data.filter.clear();\n }) \n runInAction(() => {\n this.MDL.highlighted.data.filter.set({[KEY]: d[KEY]});\n //console.log(\"highlight\", d[KEY]);\n }) \n }\n //}, 0);\n }\n },\n onClick: ({ object:d, index }, event) => {\n if (!d) return;\n //invisible bubbles should not react to clicks\n if (this._getBubbleOpacity(d) == 0) return;\n //no reaction on trail bubbles either\n if (d[TRAIL_KEY]) return;\n \n runInAction(() => {\n const dataKey = {[KEY] : d[KEY]};\n\n if (event.rightButton) {\n dataKey.name = this.__labelWithoutFrame(d);\n const margin = this.profileConstants.margin;\n const toolNode = this.element.node();\n const x = (this.width - event.offsetCenter.x) < 250 ? this.width - 250 : event.offsetCenter.x - 5;\n\n //set context menu\n const contextMenuComponent = this.root.findChild({type: \"MarkerContextmenu\"});\n contextMenuComponent.show(dataKey, {\n x: toolNode.offsetLeft + x + margin.left * this.profileConstants.leftMarginRatio,\n y: toolNode.offsetTop + event.offsetCenter.y + margin.top - 5\n });\n } else {\n this.MDL.selected.data.filter.toggle(dataKey);\n }\n });\n\n // not sure why this is needed? -- angie\n //this.deckBubble.setProps({layers: this.getBubbleLayers(undefined, false, 0, false)})\n },\n }\n }\n\n //const chunkCount = 500;\n getBubbleLayers(data = this.__data, t = true, duration = 0, dataDiff = true, lastTrailLineData = []) {\n //console.log(\"data\", data, t, dataDiff, lastTrailLineData);\n /*const scatters = [0,500,1000,1500,2000,2500,3000,4500,4000,5000,5500,6000,6500].map(s => {\n return new ScatterplotLayer({\n //parameters: {depthTest: false},\n id: \"scatterPlotLayer_\"+s,\n data: data.slice(s, s+chunkCount),\n stroked: true,\n getPosition: this.props.getPosition,\n getRadius: this.props.getRadius,\n radiusUnits: 'pixels',\n getFillColor: this.props.getFillColor,\n getLineColor: this.props.getLineColor,\n getLineWidth: 1,\n lineWidthUnits: 'pixels',\n //billboard: true,\n pickable: true,\n onHover: this.props.onHover,\n onClick: this.props.onClick,\n updateTriggers: {\n getFillColor: [this.activeObject],\n getLineColor: [this.activeObject],\n //getPosition: [this.activeObject]\n },\n //_dataDiff: (newData, oldData) => {\n // console.log(\"_datediff\", newData, oldData, _updateRanges);\n //return dataDiff ? playing ? _updateRanges : null : null;\n //}\n })\n })*/\n //console.log(\"layers\", t, duration, this.redrawUpdateTrigger);\n return [//...scatters,\n // new Axis({\n // xScale: this.xScale,\n // yScale: this.yScale,\n // dimLabels: !!this.activeObject,//this.props.hoveredFeature !== null,\n // getXLabel: () => this.MDL.x.data.conceptProps.name,//this.props.getXLabel,\n // getYLabel: () => this.MDL.y.data.conceptProps.name,//this.props.getYLabel,\n // xFormat: \"tkr\",//this.props.xFormat,\n // yFormat: \"tkr\",//this.props.yFormat,\n // labelTextSize: 10,//this.props.axisLabelTextSize,\n // tickTextSize: 10,//this.props.axisTickTextSize,\n // //modelMatrix: getMMatrix(zoom)\n // }),\n new LineLayer({\n id: 'lineLayer',\n data: this.__trailsData,\n getColor: this.props.getTrailLineFillColor,\n getSourcePosition: this.props.getSourcePosition,\n getTargetPosition: this.props.getTargetPosition,\n getWidth: this.props.getTrailLineWidth,\n //getPolygonOffset: ({layerIndex}) => [0, layerIndex * 100],\n updateTriggers: {\n getColor: [this.activeObject, this.opacityUpdateTrigger],\n getSourcePosition: [this.redrawUpdateTrigger],\n getTargetPosition: [this.redrawUpdateTrigger]\n },\n transitions: t ? { \n getSourcePosition: duration,\n getTargetPosition: duration, \n } : null,\n padding: [6, 4],\n //pickable: true,\n //_dataDiff: (newData, oldData) => {\n // console.log(\"_datediff line\", newData, oldData, _updateRangesLine);\n // return dataDiff ? playing ? _updateRangesLine : null : null;\n //}\n visible: this.MDL.trail.show\n }),\n new LineLayer({\n id: 'lastLineLayer',\n data: lastTrailLineData,\n getColor: this.props.getLastTrailLineFillColor,\n getSourcePosition: this.props.getLastLineSourcePosition,\n getTargetPosition: this.props.getLastLineTargetPosition,\n getWidth: this.props.getLastTrailLineWidth,\n updateTriggers: {\n getColor: [this.activeObject, this.opacityUpdateTrigger],\n getTargetPosition: [this.redrawUpdateTrigger, this.lastLineRedrawUpdateTrigger]\n },\n transitions: t ? { \n getTargetPosition: { \n duration,\n },\n } : null,\n //pickable: true,\n //_dataDiff: (newData, oldData) => {\n // console.log(\"_datediff line\", newData, oldData, _updateRangesLine);\n // return dataDiff ? playing ? _updateRangesLine : null : null;\n //}\n visible: this.MDL.trail.show\n }),\n new ScatterplotLayer({\n parameters: {depthTest: false},\n id: \"scatterPlotLayer\",//_\"+s,\n data: data,//.slice(0),//.slice(s, s+chunkCount),\n stroked: true,\n getPosition: this.props.getPosition,\n getRadius: this.props.getRadius,\n radiusUnits: 'pixels',\n getFillColor: this.props.getFillColor,\n getLineColor: this.props.getLineColor,\n getLineWidth: 1.0,\n lineWidthUnits: 'pixels',\n padding: [6, 4],\n pickable: true,\n onHover: this.props.onHover,\n onClick: this.props.onClick,\n updateTriggers: {\n getFillColor: [this.activeObject, this.opacityUpdateTrigger],\n getLineColor: [this.activeObject, this.opacityUpdateTrigger],\n getPosition: [this.redrawUpdateTrigger]\n },\n //numInstances: 10,\n transitions: t ? { \n getPosition: { \n duration,\n },\n getRadius: {\n duration,\n },\n // getFillColor: {\n // duration,\n // },\n // getLineColor: {\n // duration,\n // }\n } : null,\n //_dataDiff: (newData, oldData) => {\n // console.log(\"_datediff\", newData, oldData, _updateRanges);\n //return dataDiff ? playing ? _updateRanges : null : null;\n //}\n }),\n new ScatterplotLayer({\n parameters: {depthTest: false},\n id: \"activeObjectScatterPlotLayer\",//_\"+s,\n data: this.activeObjectData,//.slice(0),//.slice(s, s+chunkCount),\n stroked: true,\n getPosition: this.props.getPositionHighlight,\n getRadius: this.props.getRadius,\n radiusUnits: 'pixels',\n getFillColor: this.props.getFillColor,\n getLineColor: this.props.getLineColor,\n getLineWidth: 1.0,\n lineWidthUnits: 'pixels',\n pickable: false,\n // onHover: this.props.onHover,\n // onClick: this.props.onClick,\n //padding: this.activeObject ? [6, 4] : 0,\n updateTriggers: {\n getFillColor: [this.activeObject, this.opacityUpdateTrigger],\n getLineColor: [this.activeObject, this.opacityUpdateTrigger],\n getPosition: [this.activeObject, this.redrawUpdateTrigger]\n },\n //numInstances: 10,\n transitions: t ? { \n getPosition: { \n duration,\n },\n getRadius: {\n duration,\n },\n } : null,\n visible: !!this.activeObject,\n //_dataDiff: (newData, oldData) => {\n // console.log(\"_datediff\", newData, oldData, _updateRanges);\n //return dataDiff ? playing ? _updateRanges : null : null;\n //}\n }),\n new TextLayer({\n id: 'tooltipTextLayer',\n _subLayerProps: {\n background: {\n type: LabelBackgroundLayer,\n cornerRadius: 5,\n getDragged: this.props.getDragged,\n updateTriggers: {\n getPixelOffset: [this.dragX, this.dragY],\n getDragged: [this.dragX0, this.dragY0],\n }, \n },\n characters: {\n type: LabelMultiIconLayer,\n getDragged: this.props.getDragged,\n updateTriggers: {\n getPixelOffset: [this.dragX, this.dragY],\n getDragged: [this.dragX0, this.dragY0],\n }, \n }\n },\n data: this.activeObject && this.__tooltipDataFilter() ? this.activeObjectData : null,\n fontSettings: this.ui.labels.removeLabelBox ? {\n sdf: true,\n // fontSize: 24,\n fontSize: Math.ceil(this.__fontSize * 1.3),\n buffer: 8,\n radius: 11,\n cutoff: 0.24,\n //smoothing: 0.1\n } : { sdf: false },\n //fontWeight: '500',\n getPosition: this.props.getLabelPosition,\n getPixelOffset: this.props.getTooltipPixelOffset,\n getText: this.props.getTooltipText,\n getColor: [0x33, 0x33, 0x33],\n getSize: this.__fontSize,\n getTextAnchor: 'end',\n getAlignmentBaseline: 'bottom',\n getDragged: this.props.getDragged,\n pickable: false,\n background: !this.ui.labels.removeLabelBox,\n backgroundPadding: [6, 4],\n getBorderWidth: 1,\n billboard: true,\n lineWidthUnits: 'pixels',\n radiusUnits: 'pixels',\n fontFamily: this.FONT_FAMILY,\n characterSet: CHARACTER_SET,\n outlineColor: [255, 255, 255],\n outlineWidth: this.ui.labels.removeLabelBox ? 3 : 0,\n updateTriggers: {\n getPosition: [this.redrawUpdateTrigger]\n },\n visible: !!this.activeObject,\n }),\n /*new LabelLineLayer({\n id: 'labelLineLayer',\n data: this.__labelData,\n getColor: [102, 102, 102],\n getSourcePosition: this.props.getLabelPositionZ,\n getTargetPosition: this.props.getLabelPositionZ,\n getTargetPixelOffset: this.props.getLabelLineTargetPixelOffset,\n getSourceDashOffset: this.props.getRadius,\n getWidth: 1,\n updateTriggers: {\n //getColor: [this.activeObject],\n getTargetPixelOffset: [this.dragX, this.dragY]\n },\n transitions: t ? { \n getSourcePosition: { \n duration,\n },\n getTargetPosition: { \n duration,\n },\n getTargetPixelOffset: { \n duration,\n },\n } : {},\n //pickable: true,\n //_dataDiff: (newData, oldData) => {\n // console.log(\"_datediff line\", newData, oldData, _updateRangesLine);\n // return dataDiff ? playing ? _updateRangesLine : null : null;\n //}\n }),*/\n \n this.ui.labels.enabled && this.__someSelected && new LabelLayer({\n //parameters: {depthTest: false},\n id: 'labelTextLayer',\n _subLayerProps: {\n background: {\n type: LabelBackgroundLayer,\n cornerRadius: 5,\n getDragged: this.props.getDragged,\n updateTriggers: {\n getDragged: [this.dragX0, this.dragY0],\n }, \n },\n characters: {\n type: LabelMultiIconLayer,\n getDragged: this.props.getDragged,\n updateTriggers: {\n getDragged: [this.dragX0, this.dragY0],\n }, \n padding: [6, 4],\n }\n },\n data: this.__labelData,\n fontSettings: this.ui.labels.removeLabelBox ? {\n sdf: true,\n // fontSize: 24,\n fontSize: Math.ceil((this.__isConstantFontSize ? this.__fontSize : this._labels.maxLabelTextSize) * 1.3),\n buffer: 8,\n radius: 11,\n cutoff: 0.24,\n //smoothing: 0.1\n } : { sdf: false },\n //fontWeight: '500',\n getPosition: this.props.getLabelPositionZ,\n getPixelOffset: this.props.getPixelOffset,\n getText: this.props.getLabelText,\n getLineSourceFillOffset: this.props.getRadius,\n getRadius: this.props.getRadius,\n getColor: [0x33, 0x33, 0x33],\n getSize: this.__isConstantFontSize ? this.__fontSize : this.props.getLabelFontSize,\n getTextAnchor: 'end',\n getAlignmentBaseline: 'bottom',\n getDragged: this.props.getDragged,\n getPolygonOffset: null,//({layerIndex}) => [0, layerIndex * 100],\n onDragStart: this.props.onLabelDragStart,\n onDrag: this.props.onLabelDrag,\n onDragEnd: this.props.onLabelDragEnd,\n onHover: this.props.onLabelHover,\n onClick: this.props.onLabelClick,\n characterSet: CHARACTER_SET,\n fontFamily: this.FONT_FAMILY,\n pickable: true,\n outlineColor: [255, 255, 255],\n outlineWidth: this.ui.labels.removeLabelBox ? 3 : 0,\n background: !this.ui.labels.removeLabelBox,\n backgroundPadding: [6, 4],\n getBorderWidth: 1,\n billboard: true,\n lineWidthUnits: 'pixels',\n radiusUnits: 'pixels',\n updateTriggers: {\n getPixelOffset: [this.dragX, this.dragY, this.redrawUpdateTrigger],\n getDragged: [this.dragX0, this.dragY0],\n getPosition: [this.redrawUpdateTrigger]\n }, \n transitions: t ? {\n getPosition: {\n duration,\n },\n getPixelOffset: {\n duration,\n },\n getLineSourceFillOffset: {\n duration,\n }\n } : null,\n visible: this.__someSelected\n }),\n ]\n }\n\n __tooltipDataFilter() {\n const index = this.__selectedKeys.indexOf(this.activeObject[TRAIL_KEY] || this.activeObject[KEY]);\n return !this.ui.labels.enabled || (this.MDL.trail.show ? this.activeObject.frame != this.__labelData[index]?.frame || ((this.activeObject[TRAIL_KEY] || this.activeObject[KEY]) != this.__labelData[index]?.[TRAIL_KEY]) \n : index == -1);\n }\n\n get zScale() {\n return d3.scaleLinear(this.MDL.size.scale.d3Scale.domain(), [-0.1, -0.3]);\n }\n\n}\n\n\n\n_VizabiBubbleChart.DEFAULT_UI = {\n};\n\n//export default BubbleChart;\nexport const VizabiBubbleChart = decorate(_VizabiBubbleChart, {\n \"MDL\": computed,\n \"cScale\": computed,\n \"zScale\": computed,\n \"duration\": computed\n});\n\nChart.add(\"bubblechart\", VizabiBubbleChart);\n","import \"./styles.scss\";\nimport { \n BaseComponent,\n TimeSlider,\n DataNotes,\n DataWarning,\n ErrorMessage,\n LocaleService,\n LayoutService,\n CapitalVizabiService,\n MarkerContextmenu,\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 fullMarker = config.model.markers?.bubble;\n const fullMarkerLegend = config.model.markers?.legend;\n config.Vizabi.utils.applyDefaults(fullMarker?.config || {}, BubbleChart.DEFAULT_MODEL.bubble); \n config.Vizabi.utils.applyDefaults(fullMarkerLegend?.config || {}, BubbleChart.DEFAULT_MODEL.legend); \n\n const frameType = config.Vizabi.stores.encodings.modelTypes.frame;\n const { marker, splashMarker } = frameType.splashMarker(fullMarker);\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: MarkerContextmenu,\n placeholder: \".vzb-marker-contextmenu\",\n model: marker,\n name: \"marker-contextmenu\"\n },{\n type: DataWarning,\n placeholder: \".vzb-datawarning\",\n options: {appendButtonHere: \".vzb-repeater\"},\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: 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-marker-contextmenu\"></div>\n <div class=\"vzb-datawarning\"></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 \"locale\": { \"id\": \"en\", \"shortNumberFormat\": true },\n \"layout\": { \"projector\": false },\n\n //ui\n \"buttons\": {\n \"buttons\": [\"markercontrols\", \"colors\", \"trails\", \"moreoptions\", \"presentation\", \"sidebarcollapse\", \"fullscreen\"]\n },\n \"dialogs\": {\n \"dialogs\": {\n \"popup\": [\"colors\", \"markercontrols\", \"moreoptions\"],\n \"sidebar\": [\"colors\", \"markercontrols\", \"size\", \"zoom\"],\n \"moreoptions\": [\"opacity\", \"speed\", \"axes\", \"size\", \"colors\", \"label\", \"zoom\", \"technical\", \"repeat\", \"presentation\", \"about\"]\n },\n \"markercontrols\": {\n \"disableSlice\": true,\n \"disableSwitch\": false,\n \"disableAddRemoveGroups\": true,\n \"primaryDim\": null,\n \"drilldown\": null,\n \"shortcutForSwitch\": false,\n \"shortcutForSwitch_allow\": null\n }\n },\n \"marker-contextmenu\": {\n \"primaryDim\": null,\n \"drilldown\": null,\n },\n \"chart\": {\n \"show_ticks\": true,\n \"showForecast\": false,\n \"showForecastOverlay\": true,\n \"pauseBeforeForecast\": true,\n \"endBeforeForecast\": null, //value like \"2022\", auto-resolved to current time minus one frame step\n \"opacityHighlight\": 1.0,\n \"opacitySelect\": 1.0,\n \"opacityHighlightDim\": 0.1,\n \"opacitySelectDim\": 0.3,\n \"opacityRegular\": 0.8,\n \"timeInBackground\": true,\n \"timeInTrails\": true,\n \"lockNonSelected\": 0,\n \"panWithArrow\": true,\n \"adaptMinMaxZoom\": false,\n \"cursorMode\": \"arrow\",\n \"zoomOnScrolling\": true,\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 \"decorations\": {\n \"enabled\": false,\n \"xAxisGroups\": null //left to be set by external page. example: {\n // \"gdp_pcap\": [\n // { \"min\": null, \"max\": 2650, \"label\": \"incomegroups/level1\", \"label_short\": \"incomegroups/level1short\" },\n // { \"min\": 2650, \"max\": 8000, \"label\": \"incomegroups/level2\", \"label_short\": \"incomegroups/level2short\" },\n // { \"min\": 8000, \"max\": 24200, \"label\": \"incomegroups/level3\", \"label_short\": \"incomegroups/level3short\" },\n // { \"min\": 24200, \"max\": null, \"label\": \"incomegroups/level4\", \"label_short\": \"incomegroups/level4short\" }\n // ]\n // }\n }\n },\n \"data-warning\": {\n \"enable\": false,\n \"margin\": {\n \"LARGE\": { \"bottom\": 90 },\n \"MEDIUM\": { \"bottom\": 70 },\n \"SMALL\": { \"bottom\": 50 }\n }\n },\n \"tree-menu\": {\n \"showDataSources\": false,\n \"folderStrategyByDataset\": {}\n }\n};\n\nBubbleChart.mainComponent = VizabiBubbleChart;\n\nBubbleChart.DEFAULT_MODEL = {\n \"bubble\": {\n \"requiredEncodings\": [\"x\", \"y\", \"size\"],\n \"encoding\": {\n \"show\": { \"modelType\": \"selection\" },\n \"selected\": {\n \"modelType\": \"selection\",\n \"data\": { \n \"filter\": { \n \"ref\": `markers.bubble.encoding.trail.data.filter`\n }\n }\n },\n \"highlighted\": { \"modelType\": \"selection\" },\n \"superhighlighted\": { \"modelType\": \"selection\" },\n \"x\": {\n \"data\": { },\n \"scale\": {\n \"allowedTypes\": [\"linear\", \"log\", \"genericLog\", \"pow\", \"time\"]\n }\n },\n \"y\": {\n \"modelType\": \"lane\",\n \"data\": { },\n \"scale\": {\n \"allowedTypes\": [\"linear\", \"log\", \"genericLog\", \"pow\", \"time\", \"rank\"]\n }\n },\n \"order\": { \n \"modelType\": \"order\",\n \"direction\": \"desc\",\n \"data\": { \n \"ref\": `markers.bubble.encoding.size.data.config`\n }\n },\n \"size\": {\n \"data\": { },\n \"scale\": {\n \"modelType\": \"size\",\n \"allowedTypes\": [\"linear\", \"point\"],\n \"range\": [0, 50],\n \"extent\": [0, 1]\n }\n },\n \"color\": {\n \"data\": { \"constant\": \"_default\" },\n \"scale\": {\n \"modelType\": \"color\"\n }\n },\n \"label\": { \"data\": { \"modelType\": \"entityPropertyDataConfig\" } },\n \"frame\": { \"modelType\": \"frame\", \"speed\": 200, \"splash\": true },\n \"trail\": { \"modelType\": \"trail\", \"show\": false }, \n \"size_label\": {\n \"data\": {\n \"constant\": \"_default\"\n },\n \"scale\": {\n \"extent\": [0, 0.22],\n \"modelType\": \"size\",\n \"allowedTypes\": [\"linear\", \"point\"],\n }\n },\n \"repeat\": {\n \"modelType\": \"repeat\",\n \"useConnectedRowsAndColumns\": false,\n \"row\": [\"y\"],\n \"column\": [\"x\"],\n \"allowEnc\": [\"y\", \"x\"]\n }\n }\n },\n \"legend\": {\n \"data\": {\n \"ref\": {\n \"transform\": \"entityConceptSkipFilter\",\n \"path\": \"markers.bubble.encoding.color\"\n }\n },\n \"encoding\": {\n \"color\": {\n \"data\": {\n \"concept\": { \"ref\": \"markers.bubble.encoding.color.data.concept\" },\n \"constant\": { \"ref\": \"markers.bubble.encoding.color.data.constant\" }\n },\n \"scale\": {\n \"modelType\": \"color\",\n \"palette\": { \"ref\": \"markers.bubble.encoding.color.scale.palette\" },\n \"domain\": null,\n \"range\": null,\n \"type\": null,\n \"zoomed\": null,\n \"zeroBaseline\": false,\n \"clamp\": false,\n \"allowedTypes\": null\n }\n //\"scale\": { \"ref\": \"markers.bubble.encoding.color.scale\" }\n },\n \"name\": { \n \"data\": {\n \"concept\": {\"filter\": { \"concept\": { \"$in\": [\"name\"]} } }\n }\n },\n \"order\": {\n \"modelType\": \"order\",\n \"direction\": \"asc\",\n \"data\": {\n \"concept\": {\"filter\": { \"concept\": { \"$in\": [\"rank\"]} } }\n }\n },\n \"map\": { \n \"data\": {\n \"concept\": {\"filter\": { \"concept\": { \"$in\": [\"shape_lores_svg\", \"shape\", \"svg\"]} } }\n }\n }\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","_MultiIconLayer","vs","_TextBackgroundLayer","LineLayer","TextLayer","Chart","LabelSizeHelper","DateTimeBackground","BCAxisTitles","axisSmart","runInAction","Deck","OrthographicView","ScatterplotLayer","Repeater","TimeSlider","SteppedSlider","TreeMenu","MarkerContextmenu","DataWarning","DataNotes","Dialogs","ButtonList","ErrorMessage","CapitalVizabiService","LocaleService","LayoutService","versionInfo"],"mappings":"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,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;EACnC,KAAK;EACL,GAAG;EACH;;AC3KA,aAAe,QAAQ,CAAC;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;EC1Gc,MAAM,mBAAmB,SAASK,sBAAe,CAAC;EACjE,EAAE,OAAO,YAAY,GAAG;EACxB,IAAI,eAAe,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;EAC5D,IAAI,UAAU,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,CAAC;EAC9C,GAAG,CAAC;AACJ;EACA,EAAE,eAAe,GAAG;EACpB,IAAI,KAAK,CAAC,eAAe,EAAE,CAAC;AAC5B;EACA,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC,YAAY,CAAC;EAC5C,MAAM,aAAa,EAAE;EACrB,QAAQ,IAAI,EAAE,CAAC;EACf;EACA,QAAQ,QAAQ,EAAE,CAAC,MAAM,EAAE,IAAI,KAAK;EACpC,UAAU,OAAO,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;EAC3D,SAAS;EACT,OAAO;EACP,MA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,KAAK,CAAC,UAAU,EAAE,MAAED,IAAE,EAAE,EAAE,EAAE,CAAC;EAC7C,GAAG;EACH;;ACnCA,WAAe,QAAQ,CAAC;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;ECzIc,MAAM,cAAc,SAASE,gBAAS,CAAC;EACtD,EAAE,OAAO,YAAY,GAAG;EACxB,IAAI,oBAAoB,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EAC3D,IAAI,mBAAmB,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;EACrD,IAAI,eAAe,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;EAC5D,IAAI,OAAO,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;EACzC,IAAI,SAAS,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"}
|
|
1
|
+
{"version":3,"file":"bubblechart.js","sources":["../src/panzoom.js","../src/axistitles.js","../src/decorations.js","../src/layers/label-layer/label-multi-icon-layer/label-multi-icon-layer-vertex.glsl.js","../src/layers/label-layer/label-multi-icon-layer/label-multi-icon-layer.js","../src/layers/label-layer/label-background-layer/label-background-layer-vertex.glsl.js","../src/layers/label-layer/label-background-layer/label-background-layer-fragment.glsl.js","../src/layers/label-layer/label-background-layer/label-background-layer.js","../src/layers/label-layer/label-line-layer/label-line-layer-vertex.glsl.js","../src/layers/label-layer/label-line-layer/label-line-layer.js","../src/layers/label-layer/label-close-button-layer/label-close-button-layer.js","../src/layers/label-layer/label-layer.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([1, 100])\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(event) {\n self.__savedTransform = event.transform;\n\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 if (_this.__labelDragging) {\n if (!self.__labelDragging) self.__labelDragging = true;\n return;\n }\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.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 if (self.__labelDragging) {\n self.__labelDragging = false;\n self.zoomSelection.property(\"__zoom\", self.__savedTransform);\n self.__savedTransform = null;\n return;\n }\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 this.strings = { title: {Y: \"\", X: \"\", S: \"\", C: \"\"}, title_short: {Y: \"\", X: \"\", S: \"\", C: \"\"}, subtitle: {Y:\"\", X: \"\"}};\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, {throttle_ms: 50});\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 };\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.strings.title.X,\n this.strings.title.Y,\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 \"strings\": observable,\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}","export default /*glsl*/`\\\n#version 300 es\n#define SHADER_NAME label-icon-layer-vertex-shader\n\nin vec2 positions;\n\nin vec3 instancePositions;\nin vec3 instancePositions64Low;\nin float instanceSizes;\nin float instanceAngles;\nin vec4 instanceColors;\nin vec3 instancePickingColors;\nin vec4 instanceIconFrames;\nin float instanceColorModes;\nin vec2 instanceOffsets;\nin vec2 instancePixelOffset;\nin vec4 instanceRects;\nin float instanceDragged;\n\nuniform float sizeScale;\nuniform vec2 iconsTextureDim;\nuniform float sizeMinPixels;\nuniform float sizeMaxPixels;\nuniform bool billboard;\nuniform int sizeUnits;\nuniform vec4 padding;\nuniform float edgeMaxCoord;\n\nout float vColorMode;\nout vec4 vColor;\nout vec2 vTextureCoords;\nout vec2 uv;\n\nvec2 rotate_by_angle(vec2 vertex, float angle) {\n float angle_radian = angle * PI / 180.0;\n float cos_angle = cos(angle_radian);\n float sin_angle = sin(angle_radian);\n mat2 rotationMatrix = mat2(cos_angle, -sin_angle, sin_angle, cos_angle);\n return rotationMatrix * vertex;\n}\n\nvoid main(void) {\n geometry.worldPosition = instancePositions;\n geometry.uv = positions;\n geometry.pickingColor = instancePickingColors;\n uv = positions;\n\n vec2 iconSize = instanceIconFrames.zw;\n // convert size in meters to pixels, then scaled and clamp\n \n // project meters to pixels and clamp to limits \n float sizePixels = clamp(\n project_size_to_pixel(instanceSizes * sizeScale, sizeUnits), \n sizeMinPixels, sizeMaxPixels\n );\n\n // scale icon height to match instanceSize\n float instanceScale = iconSize.y == 0.0 ? 0.0 : sizePixels / iconSize.y;\n\n // scale and rotate vertex in \"pixel\" value and convert back to fraction in clipspace\n vec2 pixelOffset = positions / 2.0 * iconSize + instanceOffsets;\n pixelOffset = rotate_by_angle(pixelOffset, instanceAngles) * instanceScale;\n vec2 offset_icon = pixelOffset;\n pixelOffset += instancePixelOffset;\n pixelOffset.y *= -1.0;\n\n if (billboard) {\n gl_Position = project_position_to_clipspace(instancePositions, instancePositions64Low, vec3(0.0), geometry.position);\n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\n vec3 offset = vec3(pixelOffset, 0.0);\n DECKGL_FILTER_SIZE(offset, geometry);\n gl_Position.xy += project_pixel_size_to_clipspace(offset.xy);\n\n vec2 dimensions_wo_padd = instanceRects.zw * instanceSizes;\n vec2 clip_paddLT = project_pixel_size_to_clipspace(padding.xy);\n vec2 clip_paddRB = project_pixel_size_to_clipspace(padding.zw);\n vec2 positions0 = (positions + vec2(1.)) * 0.5;\n vec2 clip_offset_icon = project_pixel_size_to_clipspace(offset_icon);\n vec2 clip_dimensions_wo_padd = project_pixel_size_to_clipspace(dimensions_wo_padd);\n \n //default pos switch on edge\n if (instanceDragged < 0.5) {\n vec2 clip_offset = project_pixel_size_to_clipspace(abs(instancePixelOffset));\n gl_Position.x += (1.0 - step(-edgeMaxCoord + clip_paddLT.x, gl_Position.x - clip_dimensions_wo_padd.x - clip_offset_icon.x)) * (clip_offset.x * 2.0 + clip_dimensions_wo_padd.x);\n gl_Position.y += (-step(edgeMaxCoord - clip_paddLT.y, gl_Position.y + clip_dimensions_wo_padd.y + clip_offset_icon.y)) * (clip_offset.y * 2.0 + clip_dimensions_wo_padd.y);\n }\n\n //edge check\n gl_Position.x = clamp(gl_Position.x, -edgeMaxCoord + clip_paddLT.x + clip_dimensions_wo_padd.x + clip_offset_icon.x , edgeMaxCoord - clip_paddRB.x + clip_offset_icon.x);\n gl_Position.y = clamp(gl_Position.y, -edgeMaxCoord + clip_paddRB.y - clip_offset_icon.y, edgeMaxCoord - clip_paddLT.y - clip_dimensions_wo_padd.y - clip_offset_icon.y);\n\n } else {\n vec3 offset_common = vec3(project_pixel_size(pixelOffset), 0.0);\n DECKGL_FILTER_SIZE(offset_common, geometry);\n gl_Position = project_position_to_clipspace(instancePositions, instancePositions64Low, offset_common, geometry.position); \n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\n }\n\n vTextureCoords = mix(\n instanceIconFrames.xy,\n instanceIconFrames.xy + iconSize,\n (positions.xy + 1.0) / 2.0\n ) / iconsTextureDim;\n\n vColor = instanceColors;\n DECKGL_FILTER_COLOR(vColor, geometry);\n\n vColorMode = instanceColorModes;\n}\n`;\n","import { _MultiIconLayer } from '@deck.gl/layers';\nimport vs from \"./label-multi-icon-layer-vertex.glsl\";\n\nexport default class LabelMultiIconLayer extends _MultiIconLayer {\n static defaultProps = {\n getBoundingRect: {type: 'accessor', value: [0, 0, 0, 0]},\n getDragged: {type: 'accessor', value: 0.0},\n };\n\n initializeState() {\n super.initializeState();\n\n this.getAttributeManager().addInstanced({\n instanceRects: {\n size: 4,\n //accessor: 'getBoundingRect'\n accessor: (object, info) => {\n return this.parent.getBoundingRect(object, info);\n }\n },\n instanceDragged: {\n size: 1,\n transition: false,\n accessor: \"getDragged\",\n //accessor: (object, info) => {\n // console.log(\"dragged\",this.id, this.parent.props.getDragged(object, info)); \n // return this.parent.props.getDragged(object, info);\n //}\n },\n });\n\n }\n \n draw(params) {\n const {edgeMaxCoord = 1.0 } = this.parent.props;\n let { backgroundPadding: padding = [0.0, 0.0, 0.0, 0.0] } = this.parent.props;\n if (padding.length < 4) {\n padding = [padding[0], padding[1], padding[0], padding[1]];\n } \n params.uniforms.padding = padding;\n params.uniforms.edgeMaxCoord = edgeMaxCoord;\n super.draw(params);\n }\n\n getShaders() {\n return { ...super.getShaders(), vs };\n }\n}\n","export default /*glsl*/`\\\n#version 300 es\n#define SHADER_NAME label-text-background-layer-vertex-shader\n\nin vec2 positions;\n\nin vec3 instancePositions;\nin vec3 instancePositions64Low;\nin vec4 instanceRects;\nin float instanceSizes;\nin float instanceAngles;\nin vec2 instancePixelOffsets;\nin float instanceLineWidths;\nin float instanceGlowWidths;\nin vec4 instanceFillColors;\nin vec4 instanceLineColors;\nin vec4 instanceGlowColors;\nin vec3 instancePickingColors;\nin float instanceDragged;\n\nuniform bool billboard;\nuniform float opacity;\nuniform float sizeScale;\nuniform float sizeMinPixels;\nuniform float sizeMaxPixels;\nuniform vec4 padding;\nuniform int sizeUnits;\nuniform float edgeMaxCoord;\n\nout vec4 vGlowColor;\nout vec4 vFillColor;\nout vec4 vLineColor;\nout float vLineWidth;\nout float vGlowWidth;\nout vec2 uv;\nout vec2 dimensions;\n\nvec2 rotate_by_angle(vec2 vertex, float angle) {\n float angle_radian = radians(angle);\n float cos_angle = cos(angle_radian);\n float sin_angle = sin(angle_radian);\n mat2 rotationMatrix = mat2(cos_angle, -sin_angle, sin_angle, cos_angle);\n return rotationMatrix * vertex;\n}\n\nvoid main(void) {\n geometry.worldPosition = instancePositions;\n geometry.uv = positions;\n geometry.pickingColor = instancePickingColors;\n uv = positions;\n vLineWidth = instanceLineWidths;\n vGlowWidth = instanceGlowWidths;\n vec4 glowPadding = padding + vec4(instanceGlowWidths);\n\n // convert size in meters to pixels, then scaled and clamp\n\n // project meters to pixels and clamp to limits\n float sizePixels = clamp(\n project_size_to_pixel(instanceSizes * sizeScale, sizeUnits),\n sizeMinPixels, sizeMaxPixels\n );\n\n dimensions = instanceRects.zw * sizePixels + glowPadding.xy + glowPadding.zw;\n\n vec2 pixelOffset = (positions * instanceRects.zw + instanceRects.xy) * sizePixels + mix(-glowPadding.xy, glowPadding.zw, positions);\n pixelOffset = rotate_by_angle(pixelOffset, instanceAngles);\n pixelOffset += instancePixelOffsets;\n pixelOffset.y *= -1.0;\n\n if (billboard) {\n gl_Position = project_position_to_clipspace(instancePositions, instancePositions64Low, vec3(0.0), geometry.position);\n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\n vec3 offset = vec3(pixelOffset, 0.0);\n DECKGL_FILTER_SIZE(offset, geometry);\n gl_Position.xy += project_pixel_size_to_clipspace(offset.xy);\n\n vec2 clip_dimensions = project_pixel_size_to_clipspace(dimensions);\n vec2 clip_glow = project_pixel_size_to_clipspace(vec2(vGlowWidth));\n\n //default pos switch on edge\n if (instanceDragged < 0.5) {\n vec2 clip_dimensions_wo_padd = project_pixel_size_to_clipspace(instanceRects.zw * sizePixels);\n vec2 clip_offset = project_pixel_size_to_clipspace(abs(instancePixelOffsets));\n gl_Position.xy += (vec2(1.0, 0.0) - step(vec2(-edgeMaxCoord, edgeMaxCoord), gl_Position.xy + vec2(-1.0, 1.0) * clip_dimensions * positions)) * (clip_offset * 2.0 + clip_dimensions_wo_padd);\n }\n\n //edge check\n vec2 a = clamp(gl_Position.xy, vec2(-edgeMaxCoord) - clip_glow, vec2(edgeMaxCoord) - clip_dimensions + clip_glow);\n vec2 b = clamp(gl_Position.xy, clip_dimensions - edgeMaxCoord - clip_glow, vec2(edgeMaxCoord) + clip_glow);\n //flip y\n gl_Position.xy = mix(a, b, vec2(positions.x, 1.0 - positions.y));\n\n } else {\n vec3 offset_common = vec3(project_pixel_size(pixelOffset), 0.0);\n DECKGL_FILTER_SIZE(offset_common, geometry);\n gl_Position = project_position_to_clipspace(instancePositions, instancePositions64Low, offset_common, geometry.position);\n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\n }\n\n // Apply opacity to instance color, or return instance picking color\n vFillColor = vec4(instanceFillColors.rgb, instanceFillColors.a * opacity);\n DECKGL_FILTER_COLOR(vFillColor, geometry);\n vLineColor = vec4(instanceLineColors.rgb, instanceLineColors.a * opacity);\n DECKGL_FILTER_COLOR(vLineColor, geometry);\n vGlowColor = vec4(instanceGlowColors.rgb, instanceGlowColors.a * opacity);\n DECKGL_FILTER_COLOR(vGlowColor, geometry);\n}\n`;\n","export default /*glsl*/`\\\n#version 300 es\n#define SHADER_NAME label-text-background-layer-fragment-shader\n\nprecision highp float;\n\nuniform bool stroked;\nuniform float cornerRadius;\n\nin vec4 vFillColor;\nin vec4 vLineColor;\nin float vLineWidth;\nin float vGlowWidth;\nin vec2 uv;\nin vec2 dimensions;\nin vec4 vGlowColor;\n\nout vec4 fragColor;\n\nfloat RectSDF(vec2 p, vec2 b, float r)\n{\n vec2 d = abs(p) - b + vec2(r);\n return min(max(d.x, d.y), 0.0) + length(max(d, 0.0)) - r; \n}\n\nvoid main() \n{\n geometry.uv = uv;\n\n vec2 pixelPosition = uv * dimensions;\n \n float fDist = RectSDF(pixelPosition-dimensions/2.0, dimensions/2.0 - vLineWidth/2.0-1.0 - vGlowWidth, cornerRadius);\n vec4 v4ToColor = (fDist < 0.0) ? vFillColor : vec4(0.0);\n\n if (stroked) {\n float fBlendAmount = smoothstep(-1.0, 1.0, abs(fDist) - vLineWidth / 2.0);\n\n vec4 v4FromColor = vLineColor;\n fragColor = mix(v4FromColor, v4ToColor, fBlendAmount);\n } else {\n fragColor = v4ToColor;\n }\n \n // Outer glow\n if (vGlowWidth > 0.0) {\n float glowFactor = (1.0 - smoothstep(0.3*vGlowWidth, vGlowWidth*1.3, fDist - vLineWidth/2.0));\n fragColor = fragColor + vec4(vGlowColor.rgb, vGlowColor.a * glowFactor) * (1.0 - fragColor.a);\n }\n\n DECKGL_FILTER_COLOR(fragColor, geometry);\n}\n`;\n","import { _TextBackgroundLayer } from '@deck.gl/layers';\nimport vs from './label-background-layer-vertex.glsl';\nimport fs from './label-background-layer-fragment.glsl';\n\nexport default class LabelBackgroundLayer extends _TextBackgroundLayer {\n static defaultProps = {\n getDragged: {type: 'accessor', value: 0.0},\n getGlowColor: {type: 'accessor', value: [0, 0, 0, 255]},\n getGlowWidth: {type: 'accessor', value: 0.0},\n };\n\n initializeState() {\n super.initializeState();\n\n this.getAttributeManager().addInstanced({\n instanceDragged: {\n size: 1,\n transition: false,\n accessor: \"getDragged\",\n //accessor: (object, info) => {\n // return this.parent.props.getDragged(object, info);\n //}\n },\n instanceGlowColors: {\n size: 4,\n transition: true,\n type: 'unorm8',\n accessor: 'getGlowColor',\n defaultValue: [0, 0, 0, 255]\n },\n instanceGlowWidths: {\n size: 1,\n transition: false,\n accessor: \"getGlowWidth\",\n defaultValue: 0.0\n },\n });\n }\n \n draw(params) {\n const {cornerRadius = 0} = this.props;\n const {edgeMaxCoord = 1.0 } = this.parent.props;\n params.uniforms.cornerRadius = cornerRadius;\n params.uniforms.edgeMaxCoord = edgeMaxCoord;\n super.draw(params);\n }\n\n getShaders() {\n return { ...super.getShaders(), vs, fs };\n }\n}\n","export default /*glsl*/`\\\n#version 300 es\n#define SHADER_NAME line-layer-vertex-shader\n\nin vec3 positions;\nin vec3 instanceSourcePositions;\nin vec3 instanceTargetPositions;\nin vec3 instanceSourcePositions64Low;\nin vec3 instanceTargetPositions64Low;\nin vec2 instanceTargetPixelOffsets;\nin vec4 instanceColors;\nin vec3 instancePickingColors;\nin vec4 instanceRects;\nin float instanceSizes;\nin float instanceWidths;\nin float instanceRadius;\nin float instanceSourceDashOffsets;\nin float instanceDragged;\n\nuniform float opacity;\nuniform float widthScale;\nuniform float widthMinPixels;\nuniform float widthMaxPixels;\nuniform float useShortestPath;\nuniform int widthUnits;\nuniform vec4 padding;\nuniform float edgeMaxCoord;\n\n\nout vec4 vColor;\nout vec2 uv;\n\n// offset vector by strokeWidth pixels\n// offset_direction is -1 (left) or 1 (right)\nvec2 getExtrusionOffset(vec2 line_clipspace, float offset_direction, float width) {\n // normalized direction of the line\n vec2 dir_screenspace = normalize(line_clipspace * project_uViewportSize);\n // rotate by 90 degrees\n dir_screenspace = vec2(-dir_screenspace.y, dir_screenspace.x);\n\n return dir_screenspace * offset_direction * width / 2.0;\n}\n\nvec3 splitLine(vec3 a, vec3 b, float x) {\n float t = (x - a.x) / (b.x - a.x);\n return vec3(x, mix(a.yz, b.yz, t));\n}\n\nvoid main(void) {\n geometry.worldPosition = instanceSourcePositions;\n geometry.worldPositionAlt = instanceTargetPositions;\n vec3 source_world = instanceSourcePositions;\n vec3 target_world = instanceTargetPositions;\n vec3 source_world_64low = instanceSourcePositions64Low;\n vec3 target_world_64low = instanceTargetPositions64Low;\n\n if (useShortestPath > 0.5 || useShortestPath < -0.5) {\n source_world.x = mod(source_world.x + 180., 360.0) - 180.;\n target_world.x = mod(target_world.x + 180., 360.0) - 180.;\n float deltaLng = target_world.x - source_world.x;\n\n if (deltaLng * useShortestPath > 180.) {\n source_world.x += 360. * useShortestPath;\n source_world = splitLine(source_world, target_world, 180. * useShortestPath);\n source_world_64low = vec3(0.0);\n } else if (deltaLng * useShortestPath < -180.) {\n target_world.x += 360. * useShortestPath;\n target_world = splitLine(source_world, target_world, 180. * useShortestPath);\n target_world_64low = vec3(0.0);\n } else if (useShortestPath < 0.) {\n // Line is not split, abort\n gl_Position = vec4(0.);\n return;\n }\n }\n\n // Position\n vec4 source_commonspace;\n vec4 target_commonspace;\n vec4 source = project_position_to_clipspace(source_world, source_world_64low, vec3(0.), source_commonspace);\n vec4 target = project_position_to_clipspace(target_world, target_world_64low, vec3(0.), target_commonspace);\n\n\n vec2 targetPixelOffsets = project_pixel_size_to_clipspace(instanceTargetPixelOffsets);\n\n vec2 dimensions = instanceRects.zw * instanceSizes + padding.xy; \n vec2 clip_padd_right_bottom = project_pixel_size_to_clipspace(padding.zw);\n vec2 clip_dimensions = project_pixel_size_to_clipspace(dimensions);\n vec2 dimensions_wo_pad = instanceRects.zw * instanceSizes;\n vec2 clip_dimensions_wo_pad = project_pixel_size_to_clipspace(dimensions_wo_pad);\n\n\n //default pos switch on edge\n if (instanceDragged < 0.5) {\n vec2 clip_offset = abs(targetPixelOffsets);\n targetPixelOffsets += (vec2(1.0, 0.0) - step(vec2(-edgeMaxCoord, edgeMaxCoord), target.xy + targetPixelOffsets * vec2(1.0, -1.0) + vec2(-1.0, 1.0) * clip_dimensions)) * (clip_offset * 2.0 + clip_dimensions_wo_pad) * vec2(1.0,-1.0);\n }\n\n target.xy += targetPixelOffsets * vec2(1.0,-1.0);\n \n //edge check\n target.x = clamp(target.x, -edgeMaxCoord + clip_dimensions.x, edgeMaxCoord - clip_padd_right_bottom.x);\n target.y = clamp(target.y, -edgeMaxCoord + clip_padd_right_bottom.y, edgeMaxCoord - clip_dimensions.y);\n\n // 8point\n target.xy -= 0.5 * clip_dimensions_wo_pad * (step(0., vec2(1.0, -1.0) * (target.xy - source.xy)) + step(0., vec2(1.0, -1.0) * (target.xy - source.xy) - clip_dimensions_wo_pad)) * vec2(1.0, -1.0);\n\n //dash source offset\n vec2 line = target.xy - source.xy;\n float lineLength = length(line);\n vec2 clip_dash = project_pixel_size_to_clipspace(vec2(instanceSourceDashOffsets, instanceSourceDashOffsets));\n float dashOffset = min( lineLength / sqrt(pow(line.x / clip_dash.x, 2.0) + pow(line.y / clip_dash.y, 2.0)), lineLength ) / lineLength;\n source = mix(source, target, dashOffset);\n\n // linear interpolation of source & target to pick right coord\n float segmentIndex = positions.x;\n vec4 p = mix(source, target, segmentIndex);\n geometry.position = mix(source_commonspace, target_commonspace, segmentIndex);\n uv = positions.xy;\n geometry.uv = uv;\n geometry.pickingColor = instancePickingColors;\n\n // Multiply out width and clamp to limits\n float widthPixels = clamp(\n project_size_to_pixel(instanceWidths * widthScale, widthUnits),\n widthMinPixels, widthMaxPixels\n );\n\n // extrude\n vec3 offset = vec3(\n getExtrusionOffset(target.xy - source.xy, positions.y, widthPixels),\n 0.0);\n DECKGL_FILTER_SIZE(offset, geometry);\n DECKGL_FILTER_GL_POSITION(p, geometry);\n gl_Position = p + vec4(project_pixel_size_to_clipspace(offset.xy), 0.0, 0.0);\n\n // Color\n vColor = vec4(instanceColors.rgb, instanceColors.a * opacity);\n DECKGL_FILTER_COLOR(vColor, geometry);\n}\n`;\n","import { LineLayer } from \"@deck.gl/layers\";\nimport vs from \"./label-line-layer-vertex.glsl\";\n\nexport default class LabelLineLayer extends LineLayer {\n static defaultProps = {\n getTargetPixelOffset: {type: 'accessor', value: [0, 0]},\n getSourceDashOffset: {type: 'accessor', value: 0},\n getBoundingRect: {type: 'accessor', value: [0, 0, 0, 0]},\n getSize: {type: 'accessor', value: 0},\n getRadius: {type: 'accessor', value: 0},\n getDragged: {type: 'accessor', value: 0.0},\n };\n\n initializeState() {\n super.initializeState();\n\n this.getAttributeManager().addInstanced({\n instanceTargetPixelOffsets: {\n size: 2,\n transition: true,\n accessor: 'getTargetPixelOffset'\n },\n instanceSourceDashOffsets: {\n size: 1,\n transition: true,\n accessor: 'getSourceDashOffset',\n defaultValue: 1\n },\n instanceRects: {\n size: 4,\n accessor: 'getBoundingRect'\n },\n instanceSizes: {\n size: 1,\n transition: true,\n accessor: 'getSize',\n defaultValue: 0\n },\n instanceRadius: {\n size: 1,\n transition: true,\n accessor: 'getRadius',\n defaultValue: 1\n },\n instanceDragged: {\n size: 1,\n transition: false,\n accessor: 'getDragged'\n }\n });\n }\n\n draw(params) {\n const { edgeMaxCoord = 1.0 } = this.props;\n let { padding = [0.0, 0.0, 0.0, 0.0] } = this.props;\n if (padding.length < 4) {\n padding = [padding[0], padding[1], padding[0], padding[1]];\n } \n params.uniforms.padding = padding;\n params.uniforms.edgeMaxCoord = edgeMaxCoord;\n super.draw(params);\n }\n\n getShaders() {\n return { ...super.getShaders(), vs };\n }\n}\n","import { TextLayer } from \"@deck.gl/layers\";\n\nexport default class LabelCloseButtonLayer extends TextLayer {\n renderLayers() {\n if (this.props.data[0]) {\n const rect = this.getBoundingRect(this.props.data[0], {});\n const w = rect[2];\n const h = rect[3];\n const indexOffset = w > h ? 0 : 1;\n const padding = this.props.backgroundPadding;\n const paddingOffset = Math.abs(w - h) * 0.5 * this.props.getSize;\n padding[indexOffset] -= paddingOffset;\n padding[indexOffset + 2] -= paddingOffset;\n const cornerRadius = ((w > h ? h : w) * this.props.getSize + padding[1 - indexOffset] + padding[3 -indexOffset]) * 0.5 * 0.85;\n this.props._subLayerProps.background.cornerRadius = cornerRadius;\n }\n return super.renderLayers();\n }\n}\n","import { TextLayer } from \"@deck.gl/layers\";\nimport LabelMultiIconLayer from \"./label-multi-icon-layer/label-multi-icon-layer\";\nimport LabelBackgroundLayer from \"./label-background-layer/label-background-layer\";\nimport LabelLineLayer from \"./label-line-layer/label-line-layer\";\nimport LabelCloseButtonLayer from \"./label-close-button-layer/label-close-button-layer\";\n\nexport default class LabelLayer extends TextLayer {\n static defaultProps = {\n getLineSourceFillOffset: {type: 'accessor', value: 0},\n getRadius: {type: 'accessor', value: 0},\n getDragged: {type: 'accessor', value: 0.0},\n getGlowColor: {type: 'accessor', value: [0, 0, 0, 255]},\n getGlowWidth: {type: 'accessor', value: 0.0}\n }\n \n getPickingInfo(e) {\n const {info, sourceLayer} = e;\n //console.log(\"bounds\", this.getBoundingRect(info.object, info));\n if (info.index !== -1) {\n if (this.state.closeData?.[0]?.dataIndex !== info.index) {\n const labelSize = this.getBoundingRect(info.object, info).slice(2).map(b => b * this.props.getSize);\n this.setState({ labelSize, closeData: [Object.assign({labelSize, viewportW: info.viewport.width, viewportH: info.viewport.height, dataIndex: info.index }, info.object)]});\n }\n } else {\n this.setState({closeData: []});\n }\n return info;\n }\n\n //shouldUpdateState({props, oldProps, context, changeFlags}) {\n // console.log(\"label shouldUpdateState\", props, oldProps, context, changeFlags);\n //}\n /*\n updateState(e) {\n const {props, changeFlags} = e;\n if (changeFlags.dataChanged) {\n }\n console.log(\"updateState\", props, changeFlags);\n return super.updateState(e);\n }\n*/\n \n renderLayers() {\n /*const sLayers = super.renderLayers();\n const layers = sLayers.map(l => {\n return l && l.clone({\n updateTriggers: {...l.props.updateTriggers, getDragged: this.props.updateTriggers[\"getDragged\"]},\n getDragged: this.props.getDragged\n })\n });\n */\n //console.log(\"LabelLayer\", this.props.updateTriggers, this.props.transitions);\n\n return [\n new LabelLineLayer(\n this.getSubLayerProps({\n id: 'line',\n updateTriggers: {\n //getColor: [activeObject],\n getDragged: this.props.updateTriggers.getDragged,\n getTargetPixelOffset: this.props.updateTriggers.getPixelOffset,//[dragX, dragY],\n getSourcePosition: this.props.updateTriggers.getPosition,\n getTargetPosition: this.props.updateTriggers.getPosition,\n }\n }), {\n data: this.props.data,\n getColor: [102, 102, 102],\n getSourcePosition: this.props.getPosition,\n getTargetPosition: this.props.getPosition,\n getTargetPixelOffset: this.props.getPixelOffset,\n getSourceDashOffset: this.props.getLineSourceFillOffset,\n getBoundingRect: this.getBoundingRect,\n getRadius: this.props.getRadius,\n getSize: this.props.getSize,\n getWidth: 1,\n getDragged: this.props.getDragged,\n padding: this.props.backgroundPadding,\n edgeMaxCoord: this.props.edgeMaxCoord,\n transitions: {\n getSourcePosition: this.props.transitions?.getPosition,\n getTargetPosition: this.props.transitions?.getPosition,\n getTargetPixelOffset: this.props.transitions?.getPosition,\n getSourceDashOffset: this.props.transitions?.getPosition\n }\n //pickable: true,\n //_dataDiff: (newData, oldData) => {\n // console.log(\"_datediff line\", newData, oldData, _updateRangesLine);\n // return dataDiff ? playing ? _updateRangesLine : null : null;//}\n }\n ),\n //...layers,\n this.props.glow && new LabelBackgroundLayer(\n this.getSubLayerProps({\n id: 'glow',\n updateTriggers: {\n //getColor: [activeObject],\n getDragged: this.props.updateTriggers.getDragged,\n getPixelOffset: this.props.updateTriggers.getPixelOffset,\n getPosition: this.props.updateTriggers.getPosition,\n getSize: this.props.updateTriggers.getSize,\n getGlowWidth: this.props.updateTriggers.getGlowWidth,\n }\n }), {\n data: this.props.data,\n getPosition: (d, { index, data }) => {\n const pos = this.props.getPosition(d, { index, data });\n return index == (data.length - 1) ? pos : [...pos.slice(0, 2), -10];\n },\n getBoundingRect: this.getBoundingRect,\n getPixelOffset: this.props.getPixelOffset,\n getSize: this.props.getSize,\n getFillColor: (_, { index, data }) => {\n const alpha = index == (data.length - 1) ? 255 : 0;\n return [255, 255, 255, alpha];\n },\n getLineColor: (d, { index, data }) => {\n const alpha = index == (data.length - 1) ? 255: 0;\n return [...(typeof this.props.getBorderColor == \"function\" ? this.props.getBorderColor(d) : this.props.getBorderColor).slice(0,3), alpha];\n },\n getLineWidth: (_, { index, data }) => {\n return index == (data.length - 1) ? 1: 0;\n },\n getGlowColor: this.props.getGlowColor,\n getGlowWidth: (d, { index, data }) => {\n return index == (data.length - 1) ? this.props.getGlowWidth(d) : 0;\n },\n getDragged: this.props.getDragged,\n padding: this.props.backgroundPadding,\n edgeMaxCoord: this.props.edgeMaxCoord,\n cornerRadius: 5,\n transitions: {\n getPosition: this.props.transitions?.getPosition,\n getPixelOffset: this.props.transitions?.getPosition,\n getSize: this.props.transitions?.getSize,\n getFillColor: this.props.transitions?.getBackgroundColor,\n getLineColor: this.props.transitions?.getBorderColor,\n getLineWidth: this.props.transitions?.getBorderWidth,\n getGlowColor: this.props.transitions?.getGlowColor,\n }\n }),\n ...super.renderLayers(),\n this.state.closeData?.length && new LabelCloseButtonLayer(\n this.getSubLayerProps({\n id: 'close',\n _subLayerProps: {\n background: {\n type: LabelBackgroundLayer,\n cornerRadius: 0,\n getDragged: 1,\n },\n characters: {\n type: LabelMultiIconLayer,\n getDragged: 1,\n }\n },\n updateTriggers: {\n getPixelOffset: this.props.updateTriggers.getPixelOffset\n },\n }), {\n data: this.state.closeData || [],\n getPosition: (d) => { \n //console.log(\"close pos\", d);\n return this.props.getPosition(d, {index: d.dataIndex}); \n },\n getPixelOffset: (d) => {\n const offset = typeof this.props.getPixelOffset == \"function\" ? this.props.getPixelOffset(d) : this.props.getPixelOffset.slice(0);\n\n //adjust label offset if label with current offset located outside of vieport\n //const offset = labelOffset[key];\n const pPos = this.context.viewport.project(this.props.getPosition(d, {index: d.dataIndex}).slice(0,2));\n const vW = d.viewportW;\n const vH = d.viewportH;\n const [lW, lH] = d.labelSize;\n const [lPaddL, lPaddT, lPaddR = lPaddL, lPaddB = lPaddT] = this.props.backgroundPadding;\n const dragged = this.props.getDragged.name ? this.props.getDragged(d) : this.props.getDragged;\n \n if (!dragged) {\n if(pPos[0] + offset[0] < lW + lPaddL) {\n offset[0] = lW - offset[0];\n }\n if(pPos[1] + offset[1] < lH + lPaddT) {\n offset[1] = lH - offset[1];\n } \n }\n \n if(pPos[0] + offset[0] < lW + lPaddL) {\n offset[0] = lW + lPaddL - pPos[0];\n } else if(pPos[0] + offset[0] > vW - lPaddR) {\n offset[0] = vW - lPaddR - pPos[0];\n }\n \n if(pPos[1] + offset[1] < lH + lPaddT) {\n offset[1] = lH + lPaddT - pPos[1];\n } else if(pPos[1] + offset[1] > vH - lPaddB) {\n offset[1] = vH - lPaddB - pPos[1];\n }\n\n offset[0] += lPaddR + 9 * 0.5;//half size closecross .getSize\n offset[1] -= lH + lPaddT - 9 * 0.5;//half size closecross .getSize\n return offset;\n },\n getText: x=>\"❌\",\n getColor: [255, 255, 255],\n getSize: 9,\n getTextAnchor: 'end',\n getAlignmentBaseline: 'bottom',\n getDragged: x=>1,\n edgeMaxCoord: this.props.edgeMaxCoord,\n fontSettings: {\n sdf: true,\n fontSize: 9 * 3,\n buffer: 8,\n },\n characterSet:[\"❌\"],\n //getPolygonOffset: null,//({layerIndex}) => [0, layerIndex * 100],\n pickable: true,\n background: true,\n backgroundPadding: [9, 9, 9, 8],\n getBackgroundColor: [0x60, 0x78, 0x89],\n getBorderColor: [255, 255, 255],\n getBorderWidth: 2,\n outlineColor: [255, 255, 255],\n outlineWidth: 2,\n }\n )\n ]\n }\n}","import {\n Chart,\n Utils,\n LegacyUtils as utils,\n axisSmart,\n LabelSizeHelper,\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\";\nimport { Deck, OrthographicView } from \"@deck.gl/core\";\nimport { ScatterplotLayer, LineLayer, TextLayer } from \"@deck.gl/layers\";\nimport LabelLayer from \"./layers/label-layer/label-layer.js\";\nimport LabelBackgroundLayer from \"./layers/label-layer/label-background-layer/label-background-layer.js\";\nimport LabelMultiIconLayer from \"./layers/label-layer/label-multi-icon-layer/label-multi-icon-layer.js\";\n\nconst COLOR_WHITEISH = \"rgb(253, 253, 253)\";\nconst COLOR_BLACKISH = \"rgb(51, 51, 51)\";\nconst THICK_LINE_THRESHOLD_FOR_DARKER_COLOR = 3;\nconst SUPERHIGHLIGHT_DELAY = 500;\nconst CHARACTER_SET =\n'ABCDEFGHIJKLMNOPQRSTUVWXYZÅÄÖabcdefghijklmnopqrstuvwxyzåäéö0123456789+-−–*/%,.²:() '.split('');\n\nconst KEY = Symbol.for(\"key\");\nconst TRAIL_KEY = Symbol.for(\"trailHeadKey\");\nconst OPACITY_KEY = Symbol.for(\"opacity\");\nconst REQUIRED_KEY = Symbol.for(\"bubbleRequired\");\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[TRAIL_KEY];\n}\n\nconst MAX_RADIUS_EM = 0.05;\n\nconst PROFILE_CONSTANTS = (width, height) => ({\n SMALL: {\n margin: { top: 30, bottom: 40, 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: 45, 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: LabelSizeHelper,\n placeholder: \".vzb-bc-labels\", \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>\n <div class=\"vzb-bubblechart-canvas-wrap vzb-bubblechart-svg\"></div>\n <svg class=\"vzb-bubblechart-svg vzb-export\">\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 </svg>\n </svg>\n <svg class=\"vzb-bubblechart-svg vzb-export\">\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 this.__data;\n this.__oldData;\n this.__labelData;\n this.__trailsData;\n this.__lastLineTrailData;\n this.__newLastLineTrailData;\n this.activeObject = undefined;\n this.labelOffset = {};\n this.labelDragged = {};\n this.dragX0;\n this.dragY0;\n this.dragX;\n this.dragY;\n this.redrawUpdateTrigger = 0;\n this.lastLineRedrawUpdateTrigger = 0;\n this.opacityUpdateTrigger = 0;\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 canvasWrap: this.element.select(\".vzb-bubblechart-canvas-wrap\"),\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: \"LabelSizeHelper\"});\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.DOM.canvasWrap.style(\"pointer-events\", \"all\");\n this.FONT_FAMILY = \n 'Verdana, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\"';\n\n this.deckBubble = this.getDeck();\n this.props = this.getProps(); \n\n this._panZoom.zoomSelection(this.DOM.canvasWrap.select(\"canvas\"));\n this.DOM.canvasWrap.select(\"canvas\").node()\n .addEventListener(\"wheel\", e => {\n if(!_this.ui?.zoomOnScrolling) return;\n e.preventDefault();\n e.stopPropagation();\n },\n { passive: false }\n );\n this.DOM.canvasWrap.select(\"canvas\")\n .call(this._panZoom.dragRectangle)\n .call(this._panZoom.zoomer)\n .on(\"contextmenu\", (evt) => evt.preventDefault())\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 .on(\"mouseleave\", () => {\n if (this.MDL.highlighted.data.filter.any()) {\n this.MDL.highlighted.data.filter.clear();\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({interval: 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 this.frameStepIndexMax = this.MDL.frame.stepCount - 1;\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, {throttle_ms: 50});\n // this.addReaction(this._resetZoomMinMaxXReaction, {ignoreStatus: this._resetZoomMinMaxX});\n // this.addReaction(this._resetZoomMinMaxYReaction, {ignoreStatus: this._resetZoomMinMaxY});\n this.addReaction(this._redrawOpacity);\n this.addReaction(this._updateHighlighted);\n this.addReaction(this._updateLabelFontSizes);\n this.addReaction(this._updateSelected);\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.perfDataStart = performance.now();\n this._updateMarkerSizeLimits();\n this.processFrameData();\n this._drawBubbles();\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.duration;\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\n redrawData(duration = 0) {\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 if (duration) {\n const _pickable = this.deckBubble.props._pickable;\n this.deckBubble.setProps({ _pickable: false, layers: this.getBubbleLayers(this.__data, !!duration, 0.001) });\n requestAnimationFrame(() => {\n this.redrawUpdateTrigger++;\n this.deckBubble.setProps({ layers: this.getBubbleLayers(this.__data, !!duration, duration) });\n setTimeout(() => {\n this.deckBubble.setProps({ _pickable });\n }, duration);\n });\n } else {\n this.redrawUpdateTrigger++;\n this.deckBubble.setProps({ layers: this.getBubbleLayers(this.__data, !!duration, duration) });\n }\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 get duration() {\n return this.MDL.frame.playing ? this.MDL.frame.speed || 0 : 0;\n }\n\n _updateScales() {\n this.yScale = this.MDL.y.scale.d3Scale;\n this.xScale = this.MDL.x.scale.d3Scale;\n //this._labels.setScales(this.xScale, this.yScale);\n }\n\n get cScale() {\n return this.MDL.color.scale.d3Scale;\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 canvasWrap\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 canvasWrap.style(\"transform\", \"translate(\" + (margin.left * this.profileConstants.leftMarginRatio) + \"px,\" + margin.top + \"px)\");\n\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 textAnchor: \"start\",\n repositionLabels: Object.fromEntries(y.rollup.map(m => ([m.tickPosition, { x: 1.5 * 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.services.locale.auto({shareOrPercent: y.data?.conceptProps?.format})\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.services.locale.auto({shareOrPercent: x.data?.conceptProps?.format})\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 canvasWrap.style(\"max-width\", width + \"px\");\n canvasWrap.style(\"max-height\", Math.max(0, height) + \"px\");\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 _drawBubbles() {\n if (this.model.encoding.frame.playing) {\n //requestAnimationFrame(() => {\n this.deckBubble.setProps({layers: this.getBubbleLayers(this.__oldData, false, 0, undefined, this.__lastLineTrailData)})\n requestAnimationFrame(() => {\n this.lastLineRedrawUpdateTrigger++;\n this.deckBubble.setProps({layers: this.getBubbleLayers(this.__oldData, true, 0.001, undefined, this.__lastLineTrailData)})\n requestAnimationFrame(() => {\n this.redrawUpdateTrigger++;\n this.__labelData = this.__newLabelData;\n this.deckBubble.setProps({layers: this.getBubbleLayers(this.__data, true, this.duration + (this.perfDataStart - performance.now()) * 0.85, undefined, this.__newLastLineTrailData)})\n this.__trailsData = this.__newTrailsData;\n //_updateRangesLine = _newUpdateRangesLine;\n });\n });\n //});\n } else {\n //_updateRangesLine = _newUpdateRangesLine;\n this.deckBubble.setProps({layers: this.getBubbleLayers(this.__data, false)});\n }\n }\n\n processFrameData() {\n const trailsCount = this.frameStepIndexMax + 2;\n //const _endChunkIndexes = [];\n let trailChunkIndex = 0;\n let trailChunkIndex1 = 0;\n let indexOffset;\n let newData = [];\n //let deltaTrailChunkIndex = 0;\n let currentTrailKey = null;\n //const _updateRanges = [];\n //const _newUpdateRangesLine = [];\n const selectedData = new Map();\n const newTrailsData = [];\n const lastLineTrailData = [];\n const newLastLineTrailData = [];\n const trailsZ = {};\n let dataTrailChunkIndex;\n const trailsShowAndSomeSelected = this.MDL.trail.show && this.__someSelected;\n\n if (trailsShowAndSomeSelected) newData = this.model.dataArray.reduce((res, d, i) => {\n d.r = utils.areaToRadius(this.sScale(d.size || 0));\n if (d[TRAIL_KEY]) {\n if (!currentTrailKey) {\n currentTrailKey = d[TRAIL_KEY];\n newTrailsData.length += trailsCount;\n dataTrailChunkIndex = res.length; \n res.length += trailsCount;\n trailChunkIndex1 = trailChunkIndex + 1;\n }\n if (!d[REQUIRED_KEY]) {\n newTrailsData[trailChunkIndex++] = d;\n res[dataTrailChunkIndex++] = d;\n if (!selectedData.has(d[TRAIL_KEY])) selectedData.set(d[TRAIL_KEY], Object.assign({}, d));\n }\n } else {\n if (currentTrailKey) {\n trailsZ[currentTrailKey] = d.size;//d.z\n //newTrailsData[trailChunkIndex] = Object.assign({}, newTrailsData[trailChunkIndex - 1]);\n //_newUpdateRangesLine.push({startRow: trailChunkIndex - 2, endRow: trailChunkIndex});\n //newTrailsData[trailChunkIndex - 1] = d;\n if(!d[REQUIRED_KEY]) {\n newTrailsData.fill(d, trailChunkIndex, newTrailsData.length);\n indexOffset = trailChunkIndex == trailChunkIndex1 ? 1 : 2;\n lastLineTrailData.push([newTrailsData[trailChunkIndex - indexOffset], newTrailsData[trailChunkIndex - indexOffset]]);\n newLastLineTrailData.push([newTrailsData[trailChunkIndex - indexOffset], d]);\n res.fill(Object.assign({uz: -15000}, res[dataTrailChunkIndex - 1]), dataTrailChunkIndex, res.length - 1);\n res[res.length - 1] = d;\n } else {\n res.fill(Object.assign({uz: -15000}, res[dataTrailChunkIndex - 1]), dataTrailChunkIndex, res.length - 1);\n res.length--;\n }\n trailChunkIndex = newTrailsData.length;\n currentTrailKey = null;\n } else {\n if(!d[REQUIRED_KEY]) res.push(d);\n }\n }\n return res;\n\n }, []) \n \n //handle a situation when user is using opacity feature to hide unselected bubbles completely\n //the invisible bubbles should be completely transparent to mouse events, better yet not exist at all\n //it is convenient to do here because we are running O(N) filter for other purposes anyway\n else if (this.__someSelected && this.ui.opacitySelectDim === 0) newData = this.model.dataArray.filter(d => {\n if (d[REQUIRED_KEY] || !this.MDL.selected.data.filter.markers.has(d[KEY])) return false;\n d.r = utils.areaToRadius(this.sScale(d.size || 0));\n return true;\n });\n \n else newData = this.model.dataArray.filter(d => {\n if (d[REQUIRED_KEY]) return false;\n d.r = utils.areaToRadius(this.sScale(d.size || 0));\n return true;\n });\n\n if (newTrailsData.length) {\n newTrailsData.forEach(d => {\n if (!d[TRAIL_KEY]) return;\n d.z = trailsZ[d[TRAIL_KEY]];\n });\n }\n \n //console.log(\"__data\", this.model.dataArray, this.__data, newData, this.__trailsData, newTrailsData);\n \n this.__newLabelData = trailsShowAndSomeSelected ? this.__selectedKeys.map(key => selectedData.get(key) || this.model.dataMap.get(key)).filter(d => d && !d[REQUIRED_KEY])\n :\n this.__selectedKeys.map(key => this.model.dataMap.get(key)).filter(d => d && !d[REQUIRED_KEY]);\n\n if (this.__selectedKeys.length > this.__newLabelData.length) {\n const labelKeys = this.__newLabelData.map(d => d[TRAIL_KEY] || d[KEY]);\n this.__selectedKeys.sort((a, b) => labelKeys.includes(b) - labelKeys.includes(a));\n }\n \n if (this.model.encoding.frame.playing) {\n this.__oldData = this.resortData(this.__data, newData, trailsCount - 2);\n } else {\n this.__trailsData = newTrailsData;\n this.__labelData = this.__newLabelData;\n }\n this.__data = newData;\n this.__newTrailsData = newTrailsData;\n this.__newLastLineTrailData = newLastLineTrailData;\n this.__lastLineTrailData = lastLineTrailData;\n }\n\n resortData(data, newData, trailsCount) {\n const keyToIndex = {};\n const trailsStartIndex = {};\n let i = 0, index;\n \n data.forEach((d, i) => {\n if (d[TRAIL_KEY]) {\n if (trailsStartIndex[d[TRAIL_KEY]] === undefined) trailsStartIndex[d[TRAIL_KEY]] = i;\n } else {\n keyToIndex[d[KEY]] = d;\n }\n });\n //console.log(\"trailsStartIndex\", trailsStartIndex);\n return newData.map(d => {\n if (d[TRAIL_KEY]) {\n index = i++;\n if (i > trailsCount) i = 0;\n return data[trailsStartIndex[d[TRAIL_KEY]] + index] || Object.assign({ [OPACITY_KEY]: 0 }, d);\n }\n return keyToIndex[d[KEY]] || Object.assign({ [OPACITY_KEY]: 0 }, d);\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 if (this.root.ui.minMaxRadius) {\n this.root.ui.minMaxRadius.min = minRadiusPx;\n this.root.ui.minMaxRadius.max = maxRadiusPx;\n } else {\n this.root.ui.minMaxRadius = {\n min: minRadiusPx,\n max: maxRadiusPx\n };\n }\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 _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 _updateLabelFontSizes() {\n this._labels.MDL.size_label.scale.extent;\n\n this.__defaultFontSize = this._labels.defaultFontSize;\n this.__isConstantFontSize = this._labels.MDL.size_label.data.isConstant;\n this.__fontSize = this._labels.getFontSize(this._labels.MDL.size_label.data.constant);\n this.deckBubble.setProps({layers: this.getBubbleLayers(undefined, false)})\n }\n\n _updateHighlighted() {\n const highlightedFilter = this.MDL.highlighted.data.filter;\n\n this.__someHighlighted = highlightedFilter.any();\n this.__highlightedMarkers = new Map(highlightedFilter.markers);\n const activeObject = this.__highlightedMarkers.size == 1 ? Object.assign({}, this.model.dataMap.get(this.__highlightedMarkers.keys().next().value)) : null;\n this.activeObject = activeObject?.[REQUIRED_KEY] ? null : activeObject;\n this.activeObjectData = this.activeObject ? [this.activeObject] : [];\n this.labelGlow = false;\n if (this.activeObject && this.__someSelected) {\n const index = this.__selectedKeys.indexOf(this.activeObject[TRAIL_KEY] || this.activeObject[KEY]);\n if (index > -1) {\n this.__selectedKeys.push(this.__selectedKeys.splice(index, 1)[0]);\n const data = this.__labelData.splice(index, 1);\n this.__labelData = [...this.__labelData, ...data];\n this.labelGlow = true;\n }\n }\n this.opacityUpdateTrigger++;\n this.deckBubble.setProps({layers: this.getBubbleLayers(undefined, false)})\n }\n\n _updateSelected() {\n const selectedFilter = this.MDL.selected.data.filter;\n \n this.__someSelected = selectedFilter.any();\n this.__selectedMarkers = new Map(selectedFilter.markers);\n this.__selectedKeys = [...this.__selectedMarkers.keys()];\n\n this.labelZScale = d3.scaleLinear([0, this.__selectedKeys.length - 1],[-0.09, -0.05]);\n\n Object.keys(this.labelOffset).forEach(key => {\n if (!this.__selectedMarkers.has(key)) delete this.labelOffset[key];\n });\n Object.keys(this.labelDragged).forEach(key => {\n if (!this.__selectedMarkers.has(key)) delete this.labelDragged[key];\n });\n\n runInAction(() => {\n if (!this.MDL.trail.show) {\n this.__labelData = this.__selectedKeys.map(key => this.model.dataMap.get(key)).filter(d => d && !d[REQUIRED_KEY]);\n this.opacityUpdateTrigger++;\n this.deckBubble.setProps({layers: this.getBubbleLayers(undefined, false)});\n }\n });\n }\n\n _redrawOpacity() {\n this.ui.opacityRegular;\n this.ui.opacitySelect;\n this.ui.opacitySelectDim;\n this.ui.opacityHighlight;\n this.ui.opacityHighlightDim;\n this.MDL.color.scale.d3Scale;\n\n this.opacityUpdateTrigger++;\n this.deckBubble.setProps({layers: this.getBubbleLayers(this.__data, false, 0)});\n }\n\n _getBubbleOpacity(d) { \n const ui = this.ui;\n\n if (this.__highlightedMarkers.has(d[KEY])) return ui.opacityHighlight;\n if (isTrailBubble(d)) return ui.opacityRegular;\n if (this.__selectedMarkers.has(d[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 const d = this.activeObject;\n\n if (highlightedFilter.markers.size === 1 && d && !d[REQUIRED_KEY]) {\n const highlightedKey = highlightedFilter.markers.keys().next().value;\n //Object.assign(this.model.dataMap.get(highlightedKey));\n const selectedKey = d[TRAIL_KEY] || d[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({ [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, true);\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 if (!superHighlightFilter.any() || this.duration) {\n if (this.__superHLTimeoutID) {\n clearTimeout(this.__superHLTimeoutID);\n this.__superHLTimeoutID = null;\n this.opacityUpdateTrigger++;\n this.__superHLBlink = false;\n this.deckBubble.setProps({ layers: this.getBubbleLayers(this.__data, false, 0) });\n }\n return;\n }\n\n const _this = this;\n this.superHighlightFilter = superHighlightFilter;\n this.__superHLBlink = false;\n loop();\n\n function loop() {\n _this.__superHLTimeoutID = setTimeout(() => {\n _this.__superHLBlink = !_this.__superHLBlink;\n _this.opacityUpdateTrigger++;\n _this.deckBubble.setProps({ layers: _this.getBubbleLayers(_this.__data, false, 0) });\n\n loop();\n }, SUPERHIGHLIGHT_DELAY);\n }\n \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 wrapper = this.DOM.canvasWrap;\n if (this.ui.cursorMode === \"plus\") {\n wrapper.classed(\"vzb-zoomin\", true);\n wrapper.classed(\"vzb-zoomout\", false);\n wrapper.classed(\"vzb-panhand\", false);\n this.deckBubble.setProps({ _pickable: false });\n } else if (this.ui.cursorMode === \"minus\") {\n wrapper.classed(\"vzb-zoomin\", false);\n wrapper.classed(\"vzb-zoomout\", true);\n wrapper.classed(\"vzb-panhand\", false);\n this.deckBubble.setProps({ _pickable: false });\n } else if (this.ui.cursorMode === \"hand\") {\n wrapper.classed(\"vzb-zoomin\", false);\n wrapper.classed(\"vzb-zoomout\", false);\n wrapper.classed(\"vzb-panhand\", true);\n this.deckBubble.setProps({ _pickable: true });\n } else {\n wrapper.classed(\"vzb-zoomin\", false);\n wrapper.classed(\"vzb-zoomout\", false);\n wrapper.classed(\"vzb-panhand\", false);\n this.deckBubble.setProps({ _pickable: true });\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.duration);\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[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 getDeck() {\n const width = this.DOM.canvasWrap.node().offsetWidth;\n const height = this.DOM.canvasWrap.node().offsetHeight;\n this.__viewState = {\n target: [width * 0.5, height * 0.5, 0],\n maxZoom: 9.5,\n minZoom: -6.9,\n zoom: 0,\n width,\n height\n };\n\n return new Deck({\n // The HTML container to render into\n parent: this.DOM.canvasWrap.node(),\n //canvas: this.DOM.canvasWrap.select(\"canvas\").node(),\n views: this.getViews(),\n viewState: this.__viewState,\n // layerFilter: ({layer, viewport}) => {\n // //consolethis..log(\"layerFilter\", viewport.id, layer.id);\n // if (viewport.id == 'axis' && layer.id === 'Axis') {\n // return true;\n // }\n // if (viewport.id == 'bubble' && layer.id !== 'Axis') {\n // return true;\n // } \n // return false;\n // },\n getCursor: ({isDragging, isHovering}) => \n isDragging ? 'grabbing' : isHovering ? 'pointer' : 'default'\n ,\n onViewStateChange: e => {\n //console.log(\"onviewstatechange\", e);\n this.__viewState = e.viewState;\n this.deckBubble.setProps({ viewState: this.__viewState });\n },\n onResize: ({ width, height }) => {\n //console.log(\"onresize\", this, width, height);\n const targetDelta = [(this.__viewState.width - width) * 0.5, (this.__viewState.height - height) * 0.5, 0];\n this.deckBubble.setProps({ viewState: { ...this.__viewState, target: this.__viewState.target.map((v, i) => v - targetDelta[i])}});\n }\n });\n }\n\n getViews(controllerProps = true) {\n return [\n // new OrthographicView({id: 'axis', \n // controller: false,\n // //padding: { left: 50, top: 50, bottom: 50, right: 50 },\n // flipY: false, far: 1000}),\n new OrthographicView({id: 'bubble', \n //controller: controllerProps, \n flipY: true, far: 1000})\n ]\n }\n\n getProps() {\n return {\n getSourcePosition: (d, { target }) => {\n if (!d) return;\n target[0] = this.xScale(d.x);\n target[1] = this.yScale(d.y);\n target[2] = d.uz ? d.uz : this.zScale(d.z*1.01);\n return target;\n },\n getTargetPosition: (_d, { data, index, target }) => {\n if (!_d) return;\n const d = _d[TRAIL_KEY] ? data[index + 1] ? data[index + 1] : _d : _d;\n if (!d) return;\n target[0] = this.xScale(d.x);\n target[1] = this.yScale(d.y);\n target[2] = d.uz ? d.uz : this.zScale(d.z*1.01);\n return target;\n }, \n getLastLineSourcePosition: (d, { target }) => {\n if (!d) return;\n target[0] = this.xScale(d[0].x);\n target[1] = this.yScale(d[0].y);\n target[2] = this.zScale(d[0].z*1.01);\n return target;\n },\n getLastLineTargetPosition: (d, { target }) => {\n if (!d) return;\n target[0] = this.xScale(d[1].x);\n target[1] = this.yScale(d[1].y);\n target[2] = this.zScale(d[1].z*1.01);\n return target;\n }, \n getLabelText: (d) => {\n if (!d) return;\n return this.MDL.trail.show ? this.__labelWithFrame(d) : this.__labelWithoutFrame(d);\n },\n getTooltipText: (d) => {\n if (!d) return;\n return this.ui.labels.enabled ? d[TRAIL_KEY] || this.__selectedMarkers.has(d[KEY]) ? this.localise(d.frame) : this.__labelWithoutFrame(d)\n :\n d[TRAIL_KEY] ? this.__labelWithFrame(d) : this.__labelWithoutFrame(d);\n },\n getLabelPosition: (d) => {\n if (!d) return;\n //const z = d[KEY] == this.activeObject.?[KEY] ? 2: 1;\n //console.log(d[KEY],this.xScale(d.x), this.yScale(d.y));\n //return [this.xScale(d.x), this.yScale(d.y)];\n return [this.xScale(d.x), this.yScale(d.y)];\n },\n getLabelPositionZ: (d, { index }) => {\n if (!d) return;\n //const z = d[KEY] == this.activeObject.?[KEY] ? 2: 1;\n //console.log(\"posZ\", this.labelZScale(index), d[KEY], index);\n //return [this.xScale(d.x), this.yScale(d.y)];\n return [this.xScale(d.x), this.yScale(d.y), this.labelZScale(index)];\n },\n getTooltipPixelOffset: (d) => {\n if (!d) return;\n const r = d.r / Math.sqrt(2) + 7;\n return [-r, -r];\n },\n getPixelOffset: (d) => {\n if (!d) return;\n const key = d[TRAIL_KEY] || d[KEY];\n const offsetX = this.labelOffset[key] && this.labelOffset[key][0] || 0;\n const offsetY = this.labelOffset[key] && this.labelOffset[key][1] || 0;\n const r = d.r / Math.sqrt(2) + 4;\n return [offsetX || -r, offsetY || -r];\n },\n getDragged: (d) => {\n if (!d) return;\n const key = d[TRAIL_KEY] || d[KEY];\n return this.labelDragged[key];\n },\n getGlowWidth: (d) => {\n if (!d) return 0;\n return this.activeObject && ((d[TRAIL_KEY] || d[KEY]) === (this.activeObject[TRAIL_KEY ] || this.activeObject[KEY])) ? 5 : 0;\n },\n getGlowColor: (d, { target }) => {\n if (!d) return;\n const c = d3.color(this.__getColor(d[TRAIL_KEY] || d[KEY], d.color)).formatRgb().slice(4, -1).split(\",\").map(v=>+v);\n target[0] = c[0];\n target[1] = c[1];\n target[2] = c[2];\n target[3] = 200;\n return target;\n },\n onLabelDragStart: ({ object:d, x, y, coordinate, sourceLayer, viewport }, evt) => {\n console.log(\"onLabelDragStart\", d, x, y, coordinate, viewport, sourceLayer)\n if (!d) return;\n this.__labelDragging = true;\n const key = d[TRAIL_KEY] || d[KEY];\n if (!this.labelOffset[key]) {\n const r = d.r / Math.sqrt(2) + 4;\n this.labelOffset[key] = [-r, -r];\n }\n \n //adjust label offset if label with current offset located outside of vieport\n const offset = this.labelOffset[key];\n const pPos = viewport.project(this.props.getPosition(d, { target: [] }).slice(0,2));\n const vW = viewport.width;\n const vH = viewport.height;\n const [lW, lH] = sourceLayer.parent.state.labelSize;\n const [lPaddL, lPaddT, lPaddR = lPaddL, lPaddB = lPaddT] = sourceLayer.parent.props.backgroundPadding;\n \n if (!this.labelDragged[key]) {\n this.labelDragged[key] = 1.0;\n \n if(pPos[0] + offset[0] < lW + lPaddL) {\n offset[0] = lW - offset[0];\n }\n if(pPos[1] + offset[1] < lH + lPaddT) {\n offset[1] = lH - offset[1];\n } \n }\n \n if(pPos[0] + offset[0] < lW + lPaddL) {\n offset[0] = lW + lPaddL - pPos[0];\n } else if(pPos[0] + offset[0] > vW - lPaddR) {\n offset[0] = vW - lPaddR - pPos[0];\n }\n \n if(pPos[1] + offset[1] < lH + lPaddT) {\n offset[1] = lH + lPaddT - pPos[1];\n } else if(pPos[1] + offset[1] > vH - lPaddB) {\n offset[1] = vH - lPaddB - pPos[1];\n }\n \n //console.log(\"offset\", offset, \"point\", pPos, lW, lH, viewport);\n this.dragX0 = this.labelOffset[key][0] - x;\n this.dragY0 = this.labelOffset[key][1] - y;\n //this.deckBubble.setProps({layers: this.getBubbleLayers(undefined, false, 0, false), controller: { dragPan: dragFlag }}); \n return true;\n },\n onLabelDrag: ({ object:d, x, y, coordinate, sourceLayer, viewport }, evt) => {\n if (!d) return;\n \n this.dragX = this.dragX0 + x;\n this.dragY = this.dragY0 + y;\n const key = d[TRAIL_KEY] || d[KEY];\n this.labelOffset[key][0] = this.dragX;\n this.labelOffset[key][1] = this.dragY;\n //console.log(\"offset\", this.labelOffset[key], \"point\", sourceLayer.project(pos), viewport.getBounds(), viewport);\n this.deckBubble.setProps({layers: this.getBubbleLayers(undefined, false, 0, false),}); //views: this.getViews({ dragPan: dragFlag }),}); \n return true;\n },\n onLabelDragEnd: () => {\n //if (!d) return;\n this.__labelDragging = false; \n return true;\n },\n onLabelClick: ({ object:d, layer, sourceLayer }) => {\n if (!d) return;\n if (sourceLayer.id !== \"labelTextLayer-close\") return;\n \n const dataKey = {[KEY]: d[TRAIL_KEY] || d[KEY]}\n console.log(\"click pretoggle\", d, dataKey);\n runInAction(() => {\n this.MDL.selected.data.filter.toggle(dataKey);\n console.log(\"click toggle\", dataKey);\n })\n layer.setState({closeData: []});\n \n this.deckBubble.setProps({layers: this.getBubbleLayers(undefined, false, 0, false)});\n },\n onLabelHover: ({ object:d, layer }) => {\n if (d && this.__selectedKeys.at(-1) !== (d[TRAIL_KEY] || d[KEY])) {\n const index = this.__selectedKeys.indexOf(d[TRAIL_KEY] || d[KEY]);\n this.__selectedKeys.push(this.__selectedKeys.splice(index, 1)[0]);\n const data = this.__labelData.splice(index, 1);\n this.__labelData = [...this.__labelData, ...data];\n layer.setState({ closeData: [layer.state.closeData[0]]});\n layer.state.closeData[0].dataIndex = this.__selectedKeys.length - 1;\n this.deckBubble.setProps({layers: this.getBubbleLayers(undefined, false)});\n }\n },\n getLabelLineTargetPixelOffset: (d) => {\n if (!d) return;\n const key = d[TRAIL_KEY] || d[KEY];\n const offsetX = this.labelOffset[key] && this.labelOffset[key][0] || 0;\n const offsetY = this.labelOffset[key] && this.labelOffset[key][1] || 0;\n return [offsetX || 0, -offsetY || 0];\n },\n getPosition: (d, { target }) => {\n if (!d) return;\n target[0] = this.xScale(d.x);\n target[1] = this.yScale(d.y);\n target[2] = d.uz ? d.uz : this.zScale(d.size);\n return target;\n },\n getPositionHighlight: (d, { target }) => {\n if (!d) return;\n target[0] = this.xScale(d.x);\n target[1] = this.yScale(d.y);\n target[2] = -0.095;\n return target;\n },\n getPositionXY: (d, { target }) => {\n if (!d) return;\n target[0] = this.xScale(d.x);\n target[1] = this.yScale(d.y);\n return target;\n },\n \n getFillColor: (d, { target }) => {\n if (!d) return;\n if (this.__superHLBlink && this.superHighlightFilter.has(d)) {\n target[3] = 0;\n return target;\n }\n const c = d3.color(this.__getColor(d[TRAIL_KEY] || d[KEY], d.color)).formatRgb().slice(4, -1).split(\",\").map(v=>+v);\n target[0] = c[0];\n target[1] = c[1];\n target[2] = c[2];\n target[3] = this._getBubbleOpacity(d) * 255;\n return target;\n },\n getTrailLineFillColor: (d, { data, index, target }) => {\n if (!d) return;\n if (this.__superHLBlink && this.superHighlightFilter.has(d)) {\n target[3] = 0;\n return target;\n }\n const d1 = data[index + 1] || d;\n const c = d3.color(this.__getColorForTrail(d1.color, d1.size)).formatRgb().slice(4, -1).split(\",\").map(v=>+v);\n target[0] = c[0];\n target[1] = c[1];\n target[2] = c[2];\n target[3] = this._getBubbleOpacity(d) * 255;\n return target;\n },\n getLastTrailLineFillColor: (d, { target }) => {\n if (!d) return;\n const c = d3.color(this.__getColorForTrail(d[1].color, d[1].size)).formatRgb().slice(4, -1).split(\",\").map(v=>+v);\n target[0] = c[0];\n target[1] = c[1];\n target[2] = c[2];\n target[3] = this._getBubbleOpacity(d[0]) * 255;\n return target;\n },\n getLineColor: (d, { target }) => {\n if (!d) return;\n if (this.__superHLBlink && this.superHighlightFilter.has(d)) {\n target[3] = 0;\n return target;\n }\n target[0] = 0x33;\n target[1] = 0x33;\n target[2] = 0x33;\n target[3] = this._getBubbleOpacity(d) * 255;\n return target;\n },\n getRadius: (d) => {\n if (!d) return;\n return d.r;\n },\n getTrailLineWidth: (d, { data, index }) => {\n if (!d) return;\n const d1 = data[index + 1] || d;\n return this.trailSizeScale(d1.size);\n },\n getLastTrailLineWidth: (d) => {\n if (!d) return;\n return this.trailSizeScale(d[1].size);\n },\n onHover: ({ object: d }) => {\n //console.log(\"onhover\", d, this.activeObject);\n //zero opacity for non-selected markers\n if (d && this._getBubbleOpacity(d) == 0) return;\n const invalidate = d?.[KEY] !== this.activeObject?.[KEY]\n //this.activeObject = d;\n if (invalidate) {\n //setTimeout(() => {\n //console.log(\"invalidate\", d, this.activeObject);\n if (!d) {\n runInAction(() => {\n this.MDL.highlighted.data.filter.clear();\n //console.log(\"clear highlighted\");\n }) \n } else {\n runInAction(() => {\n this.MDL.highlighted.data.filter.clear();\n }) \n runInAction(() => {\n this.MDL.highlighted.data.filter.set({[KEY]: d[KEY]});\n //console.log(\"highlight\", d[KEY]);\n }) \n }\n //}, 0);\n }\n },\n onClick: ({ object:d, index }, event) => {\n if (!d) return;\n //invisible bubbles should not react to clicks\n if (this._getBubbleOpacity(d) == 0) return;\n //no reaction on trail bubbles either\n if (d[TRAIL_KEY]) return;\n \n runInAction(() => {\n const dataKey = {[KEY] : d[KEY]};\n\n if (event.rightButton) {\n dataKey.name = this.__labelWithoutFrame(d);\n const margin = this.profileConstants.margin;\n const toolNode = this.element.node();\n const x = (this.width - event.offsetCenter.x) < 250 ? this.width - 250 : event.offsetCenter.x - 5;\n\n //set context menu\n const contextMenuComponent = this.root.findChild({type: \"MarkerContextmenu\"});\n contextMenuComponent.show(dataKey, {\n x: toolNode.offsetLeft + x + margin.left * this.profileConstants.leftMarginRatio,\n y: toolNode.offsetTop + event.offsetCenter.y + margin.top - 5\n });\n } else {\n this.MDL.selected.data.filter.toggle(dataKey);\n }\n });\n\n // not sure why this is needed? -- angie\n //this.deckBubble.setProps({layers: this.getBubbleLayers(undefined, false, 0, false)})\n },\n }\n }\n\n //const chunkCount = 500;\n getBubbleLayers(data = this.__data, t = true, duration = 0, dataDiff = true, lastTrailLineData = []) {\n //console.log(\"data\", data, t, dataDiff, lastTrailLineData);\n /*const scatters = [0,500,1000,1500,2000,2500,3000,4500,4000,5000,5500,6000,6500].map(s => {\n return new ScatterplotLayer({\n //parameters: {depthTest: false},\n id: \"scatterPlotLayer_\"+s,\n data: data.slice(s, s+chunkCount),\n stroked: true,\n getPosition: this.props.getPosition,\n getRadius: this.props.getRadius,\n radiusUnits: 'pixels',\n getFillColor: this.props.getFillColor,\n getLineColor: this.props.getLineColor,\n getLineWidth: 1,\n lineWidthUnits: 'pixels',\n //billboard: true,\n pickable: true,\n onHover: this.props.onHover,\n onClick: this.props.onClick,\n updateTriggers: {\n getFillColor: [this.activeObject],\n getLineColor: [this.activeObject],\n //getPosition: [this.activeObject]\n },\n //_dataDiff: (newData, oldData) => {\n // console.log(\"_datediff\", newData, oldData, _updateRanges);\n //return dataDiff ? playing ? _updateRanges : null : null;\n //}\n })\n })*/\n //console.log(\"layers\", t, duration, this.redrawUpdateTrigger);\n return [//...scatters,\n // new Axis({\n // xScale: this.xScale,\n // yScale: this.yScale,\n // dimLabels: !!this.activeObject,//this.props.hoveredFeature !== null,\n // getXLabel: () => this.MDL.x.data.conceptProps.name,//this.props.getXLabel,\n // getYLabel: () => this.MDL.y.data.conceptProps.name,//this.props.getYLabel,\n // xFormat: \"tkr\",//this.props.xFormat,\n // yFormat: \"tkr\",//this.props.yFormat,\n // labelTextSize: 10,//this.props.axisLabelTextSize,\n // tickTextSize: 10,//this.props.axisTickTextSize,\n // //modelMatrix: getMMatrix(zoom)\n // }),\n new LineLayer({\n id: 'lineLayer',\n data: this.__trailsData,\n getColor: this.props.getTrailLineFillColor,\n getSourcePosition: this.props.getSourcePosition,\n getTargetPosition: this.props.getTargetPosition,\n getWidth: this.props.getTrailLineWidth,\n //getPolygonOffset: ({layerIndex}) => [0, layerIndex * 100],\n updateTriggers: {\n getColor: [this.activeObject, this.opacityUpdateTrigger],\n getSourcePosition: [this.redrawUpdateTrigger],\n getTargetPosition: [this.redrawUpdateTrigger]\n },\n transitions: t ? { \n getSourcePosition: duration,\n getTargetPosition: duration, \n } : null,\n padding: [6, 4],\n //pickable: true,\n //_dataDiff: (newData, oldData) => {\n // console.log(\"_datediff line\", newData, oldData, _updateRangesLine);\n // return dataDiff ? playing ? _updateRangesLine : null : null;\n //}\n visible: this.MDL.trail.show\n }),\n new LineLayer({\n id: 'lastLineLayer',\n data: lastTrailLineData,\n getColor: this.props.getLastTrailLineFillColor,\n getSourcePosition: this.props.getLastLineSourcePosition,\n getTargetPosition: this.props.getLastLineTargetPosition,\n getWidth: this.props.getLastTrailLineWidth,\n updateTriggers: {\n getColor: [this.activeObject, this.opacityUpdateTrigger],\n getTargetPosition: [this.redrawUpdateTrigger, this.lastLineRedrawUpdateTrigger]\n },\n transitions: t ? { \n getTargetPosition: { \n duration,\n },\n } : null,\n //pickable: true,\n //_dataDiff: (newData, oldData) => {\n // console.log(\"_datediff line\", newData, oldData, _updateRangesLine);\n // return dataDiff ? playing ? _updateRangesLine : null : null;\n //}\n visible: this.MDL.trail.show\n }),\n new ScatterplotLayer({\n parameters: {depthTest: false},\n id: \"scatterPlotLayer\",//_\"+s,\n data: data,//.slice(0),//.slice(s, s+chunkCount),\n stroked: true,\n getPosition: this.props.getPosition,\n getRadius: this.props.getRadius,\n radiusUnits: 'pixels',\n getFillColor: this.props.getFillColor,\n getLineColor: this.props.getLineColor,\n getLineWidth: 1.0,\n lineWidthUnits: 'pixels',\n padding: [6, 4],\n pickable: true,\n onHover: this.props.onHover,\n onClick: this.props.onClick,\n updateTriggers: {\n getFillColor: [this.activeObject, this.opacityUpdateTrigger],\n getLineColor: [this.activeObject, this.opacityUpdateTrigger],\n getPosition: [this.redrawUpdateTrigger]\n },\n //numInstances: 10,\n transitions: t ? { \n getPosition: { \n duration,\n },\n getRadius: {\n duration,\n },\n // getFillColor: {\n // duration,\n // },\n // getLineColor: {\n // duration,\n // }\n } : null,\n //_dataDiff: (newData, oldData) => {\n // console.log(\"_datediff\", newData, oldData, _updateRanges);\n //return dataDiff ? playing ? _updateRanges : null : null;\n //}\n }),\n new ScatterplotLayer({\n parameters: {depthTest: false},\n id: \"activeObjectScatterPlotLayer\",//_\"+s,\n data: this.activeObjectData,//.slice(0),//.slice(s, s+chunkCount),\n stroked: true,\n getPosition: this.props.getPositionHighlight,\n getRadius: this.props.getRadius,\n radiusUnits: 'pixels',\n getFillColor: this.props.getFillColor,\n getLineColor: this.props.getLineColor,\n getLineWidth: 1.0,\n lineWidthUnits: 'pixels',\n pickable: false,\n // onHover: this.props.onHover,\n // onClick: this.props.onClick,\n //padding: this.activeObject ? [6, 4] : 0,\n updateTriggers: {\n getFillColor: [this.activeObject, this.opacityUpdateTrigger],\n getLineColor: [this.activeObject, this.opacityUpdateTrigger],\n getPosition: [this.activeObject, this.redrawUpdateTrigger]\n },\n //numInstances: 10,\n transitions: t ? { \n getPosition: { \n duration,\n },\n getRadius: {\n duration,\n },\n } : null,\n visible: !!this.activeObject,\n //_dataDiff: (newData, oldData) => {\n // console.log(\"_datediff\", newData, oldData, _updateRanges);\n //return dataDiff ? playing ? _updateRanges : null : null;\n //}\n }),\n new TextLayer({\n id: 'tooltipTextLayer',\n _subLayerProps: {\n background: {\n type: LabelBackgroundLayer,\n cornerRadius: 5,\n getDragged: this.props.getDragged,\n updateTriggers: {\n getPixelOffset: [this.dragX, this.dragY],\n getDragged: [this.dragX0, this.dragY0],\n }, \n },\n characters: {\n type: LabelMultiIconLayer,\n getDragged: this.props.getDragged,\n updateTriggers: {\n getPixelOffset: [this.dragX, this.dragY],\n getDragged: [this.dragX0, this.dragY0],\n }, \n }\n },\n data: this.activeObject && this.__tooltipDataFilter() ? this.activeObjectData : null,\n fontSettings: this.ui.labels.removeLabelBox ? {\n sdf: true,\n // fontSize: 24,\n fontSize: Math.ceil(this.__fontSize * 1.3),\n buffer: 8,\n radius: 11,\n cutoff: 0.24,\n //smoothing: 0.1\n } : { sdf: false },\n //fontWeight: '500',\n getPosition: this.props.getLabelPosition,\n getPixelOffset: this.props.getTooltipPixelOffset,\n getText: this.props.getTooltipText,\n getColor: [0x33, 0x33, 0x33],\n getSize: this.__fontSize,\n getTextAnchor: 'end',\n getAlignmentBaseline: 'bottom',\n getDragged: this.props.getDragged,\n pickable: false,\n background: !this.ui.labels.removeLabelBox,\n backgroundPadding: [6, 4],\n getBorderWidth: 1,\n billboard: true,\n lineWidthUnits: 'pixels',\n radiusUnits: 'pixels',\n fontFamily: this.FONT_FAMILY,\n characterSet: CHARACTER_SET,\n outlineColor: [255, 255, 255],\n outlineWidth: this.ui.labels.removeLabelBox ? 3 : 0,\n updateTriggers: {\n getPosition: [this.redrawUpdateTrigger]\n },\n visible: !!this.activeObject,\n }),\n /*new LabelLineLayer({\n id: 'labelLineLayer',\n data: this.__labelData,\n getColor: [102, 102, 102],\n getSourcePosition: this.props.getLabelPositionZ,\n getTargetPosition: this.props.getLabelPositionZ,\n getTargetPixelOffset: this.props.getLabelLineTargetPixelOffset,\n getSourceDashOffset: this.props.getRadius,\n getWidth: 1,\n updateTriggers: {\n //getColor: [this.activeObject],\n getTargetPixelOffset: [this.dragX, this.dragY]\n },\n transitions: t ? { \n getSourcePosition: { \n duration,\n },\n getTargetPosition: { \n duration,\n },\n getTargetPixelOffset: { \n duration,\n },\n } : {},\n //pickable: true,\n //_dataDiff: (newData, oldData) => {\n // console.log(\"_datediff line\", newData, oldData, _updateRangesLine);\n // return dataDiff ? playing ? _updateRangesLine : null : null;\n //}\n }),*/\n \n this.ui.labels.enabled && this.__someSelected && new LabelLayer({\n //parameters: {depthTest: false},\n id: 'labelTextLayer',\n _subLayerProps: {\n background: {\n type: LabelBackgroundLayer,\n cornerRadius: 5,\n getDragged: this.props.getDragged,\n updateTriggers: {\n getDragged: [this.dragX0, this.dragY0],\n }, \n },\n characters: {\n type: LabelMultiIconLayer,\n getDragged: this.props.getDragged,\n updateTriggers: {\n getDragged: [this.dragX0, this.dragY0],\n }, \n padding: [6, 4],\n }\n },\n data: this.__labelData,\n fontSettings: this.ui.labels.removeLabelBox ? {\n sdf: true,\n // fontSize: 24,\n fontSize: Math.ceil((this.__isConstantFontSize ? this.__fontSize : this._labels.maxLabelTextSize) * 1.3),\n buffer: 8,\n radius: 11,\n cutoff: 0.24,\n //smoothing: 0.1\n } : { sdf: false },\n //fontWeight: '500',\n glow: this.labelGlow,\n getGlowColor: this.props.getGlowColor,\n getGlowWidth: this.props.getGlowWidth,\n getPosition: this.props.getLabelPositionZ,\n getPixelOffset: this.props.getPixelOffset,\n getText: this.props.getLabelText,\n getLineSourceFillOffset: this.props.getRadius,\n getRadius: this.props.getRadius,\n getColor: [0x33, 0x33, 0x33],\n getSize: this.__isConstantFontSize ? this.__fontSize : this.props.getLabelFontSize,\n getTextAnchor: 'end',\n getAlignmentBaseline: 'bottom',\n getDragged: this.props.getDragged,\n getPolygonOffset: null,//({layerIndex}) => [0, layerIndex * 100],\n onDragStart: this.props.onLabelDragStart,\n onDrag: this.props.onLabelDrag,\n onDragEnd: this.props.onLabelDragEnd,\n onHover: this.props.onLabelHover,\n onClick: this.props.onLabelClick,\n characterSet: CHARACTER_SET,\n fontFamily: this.FONT_FAMILY,\n pickable: true,\n outlineColor: [255, 255, 255],\n outlineWidth: this.ui.labels.removeLabelBox ? 3 : 0,\n background: !this.ui.labels.removeLabelBox,\n backgroundPadding: [6, 4],\n getBorderWidth: 1,\n billboard: true,\n lineWidthUnits: 'pixels',\n radiusUnits: 'pixels',\n updateTriggers: {\n getPixelOffset: [this.dragX, this.dragY, this.redrawUpdateTrigger],\n getDragged: [this.dragX0, this.dragY0],\n getPosition: [this.redrawUpdateTrigger],\n getGlowWidth: [this.activeObject],\n }, \n transitions: t ? {\n getPosition: {\n duration,\n },\n getPixelOffset: {\n duration,\n },\n getLineSourceFillOffset: {\n duration,\n }\n } : null,\n visible: this.__someSelected\n }),\n ]\n }\n\n __tooltipDataFilter() {\n const index = this.__selectedKeys.indexOf(this.activeObject[TRAIL_KEY] || this.activeObject[KEY]);\n return !this.ui.labels.enabled || (this.MDL.trail.show ? this.activeObject.frame != this.__labelData[index]?.frame || ((this.activeObject[TRAIL_KEY] || this.activeObject[KEY]) != this.__labelData[index]?.[TRAIL_KEY]) \n : index == -1);\n }\n\n get zScale() {\n return d3.scaleLinear(this.MDL.size.scale.d3Scale.domain(), [-0.1, -0.3]);\n }\n\n}\n\n\n\n_VizabiBubbleChart.DEFAULT_UI = {\n};\n\n//export default BubbleChart;\nexport const VizabiBubbleChart = decorate(_VizabiBubbleChart, {\n \"MDL\": computed,\n \"cScale\": computed,\n \"zScale\": computed,\n \"duration\": computed\n});\n\nChart.add(\"bubblechart\", VizabiBubbleChart);\n","import \"./styles.scss\";\nimport { \n BaseComponent,\n TimeSlider,\n DataNotes,\n DataWarning,\n ErrorMessage,\n LocaleService,\n LayoutService,\n CapitalVizabiService,\n MarkerContextmenu,\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 fullMarker = config.model.markers?.bubble;\n const fullMarkerLegend = config.model.markers?.legend;\n config.Vizabi.utils.applyDefaults(fullMarker?.config || {}, BubbleChart.DEFAULT_MODEL.bubble); \n config.Vizabi.utils.applyDefaults(fullMarkerLegend?.config || {}, BubbleChart.DEFAULT_MODEL.legend); \n\n const frameType = config.Vizabi.stores.encodings.modelTypes.frame;\n const { marker, splashMarker } = frameType.splashMarker(fullMarker);\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: MarkerContextmenu,\n placeholder: \".vzb-marker-contextmenu\",\n model: marker,\n name: \"marker-contextmenu\"\n },{\n type: DataWarning,\n placeholder: \".vzb-datawarning\",\n options: {appendButtonHere: \".vzb-repeater\"},\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: 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-marker-contextmenu\"></div>\n <div class=\"vzb-datawarning\"></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 \"locale\": { \"id\": \"en\", \"shortNumberFormat\": true },\n \"layout\": { \"projector\": false },\n\n //ui\n \"buttons\": {\n \"buttons\": [\"markercontrols\", \"colors\", \"trails\", \"moreoptions\", \"presentation\", \"sidebarcollapse\", \"fullscreen\"]\n },\n \"dialogs\": {\n \"dialogs\": {\n \"popup\": [\"colors\", \"markercontrols\", \"moreoptions\"],\n \"sidebar\": [\"colors\", \"markercontrols\", \"size\", \"zoom\"],\n \"moreoptions\": [\"opacity\", \"speed\", \"axes\", \"size\", \"colors\", \"label\", \"zoom\", \"technical\", \"repeat\", \"presentation\", \"about\"]\n },\n \"markercontrols\": {\n \"disableSlice\": true,\n \"disableSwitch\": false,\n \"disableAddRemoveGroups\": true,\n \"primaryDim\": null,\n \"drilldown\": null,\n \"shortcutForSwitch\": false,\n \"shortcutForSwitch_allow\": null\n }\n },\n \"marker-contextmenu\": {\n \"primaryDim\": null,\n \"drilldown\": null,\n },\n \"chart\": {\n \"show_ticks\": true,\n \"showForecast\": false,\n \"showForecastOverlay\": true,\n \"pauseBeforeForecast\": true,\n \"endBeforeForecast\": null, //value like \"2022\", auto-resolved to current time minus one frame step\n \"opacityHighlight\": 1.0,\n \"opacitySelect\": 1.0,\n \"opacityHighlightDim\": 0.1,\n \"opacitySelectDim\": 0.3,\n \"opacityRegular\": 0.8,\n \"timeInBackground\": true,\n \"timeInTrails\": true,\n \"lockNonSelected\": 0,\n \"panWithArrow\": true,\n \"adaptMinMaxZoom\": false,\n \"cursorMode\": \"arrow\",\n \"zoomOnScrolling\": true,\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 \"decorations\": {\n \"enabled\": false,\n \"xAxisGroups\": null //left to be set by external page. example: {\n // \"gdp_pcap\": [\n // { \"min\": null, \"max\": 2650, \"label\": \"incomegroups/level1\", \"label_short\": \"incomegroups/level1short\" },\n // { \"min\": 2650, \"max\": 8000, \"label\": \"incomegroups/level2\", \"label_short\": \"incomegroups/level2short\" },\n // { \"min\": 8000, \"max\": 24200, \"label\": \"incomegroups/level3\", \"label_short\": \"incomegroups/level3short\" },\n // { \"min\": 24200, \"max\": null, \"label\": \"incomegroups/level4\", \"label_short\": \"incomegroups/level4short\" }\n // ]\n // }\n }\n },\n \"data-warning\": {\n \"enable\": false,\n \"margin\": {\n \"LARGE\": { \"bottom\": 90 },\n \"MEDIUM\": { \"bottom\": 70 },\n \"SMALL\": { \"bottom\": 50 }\n }\n },\n \"tree-menu\": {\n \"showDataSources\": false,\n \"folderStrategyByDataset\": {}\n }\n};\n\nBubbleChart.mainComponent = VizabiBubbleChart;\n\nBubbleChart.DEFAULT_MODEL = {\n \"bubble\": {\n \"requiredEncodings\": [\"x\", \"y\", \"size\"],\n \"encoding\": {\n \"show\": { \"modelType\": \"selection\" },\n \"selected\": {\n \"modelType\": \"selection\",\n \"data\": { \n \"filter\": { \n \"ref\": `markers.bubble.encoding.trail.data.filter`\n }\n }\n },\n \"highlighted\": { \"modelType\": \"selection\" },\n \"superhighlighted\": { \"modelType\": \"selection\" },\n \"x\": {\n \"data\": { },\n \"scale\": {\n \"allowedTypes\": [\"linear\", \"log\", \"genericLog\", \"pow\", \"time\"]\n }\n },\n \"y\": {\n \"modelType\": \"lane\",\n \"data\": { },\n \"scale\": {\n \"allowedTypes\": [\"linear\", \"log\", \"genericLog\", \"pow\", \"time\", \"rank\"]\n }\n },\n \"order\": { \n \"modelType\": \"order\",\n \"direction\": \"desc\",\n \"data\": { \n \"ref\": `markers.bubble.encoding.size.data.config`\n }\n },\n \"size\": {\n \"data\": { },\n \"scale\": {\n \"modelType\": \"size\",\n \"allowedTypes\": [\"linear\", \"point\"],\n \"range\": [0, 50],\n \"extent\": [0, 1]\n }\n },\n \"color\": {\n \"data\": { \"constant\": \"_default\" },\n \"scale\": {\n \"modelType\": \"color\"\n }\n },\n \"label\": { \"data\": { \"modelType\": \"entityPropertyDataConfig\" } },\n \"frame\": { \"modelType\": \"frame\", \"speed\": 200, \"splash\": true },\n \"trail\": { \"modelType\": \"trail\", \"show\": false }, \n \"size_label\": {\n \"data\": {\n \"constant\": \"_default\"\n },\n \"scale\": {\n \"extent\": [0, 0.22],\n \"modelType\": \"size\",\n \"allowedTypes\": [\"linear\", \"point\"],\n }\n },\n \"repeat\": {\n \"modelType\": \"repeat\",\n \"useConnectedRowsAndColumns\": false,\n \"row\": [\"y\"],\n \"column\": [\"x\"],\n \"allowEnc\": [\"y\", \"x\"]\n }\n }\n },\n \"legend\": {\n \"data\": {\n \"ref\": {\n \"transform\": \"entityConceptSkipFilter\",\n \"path\": \"markers.bubble.encoding.color\"\n }\n },\n \"encoding\": {\n \"color\": {\n \"data\": {\n \"concept\": { \"ref\": \"markers.bubble.encoding.color.data.concept\" },\n \"constant\": { \"ref\": \"markers.bubble.encoding.color.data.constant\" }\n },\n \"scale\": {\n \"modelType\": \"color\",\n \"palette\": { \"ref\": \"markers.bubble.encoding.color.scale.palette\" },\n \"domain\": null,\n \"range\": null,\n \"type\": null,\n \"zoomed\": null,\n \"zeroBaseline\": false,\n \"clamp\": false,\n \"allowedTypes\": null\n }\n //\"scale\": { \"ref\": \"markers.bubble.encoding.color.scale\" }\n },\n \"name\": { \n \"data\": {\n \"concept\": {\"filter\": { \"concept\": { \"$in\": [\"name\"]} } }\n }\n },\n \"order\": {\n \"modelType\": \"order\",\n \"direction\": \"asc\",\n \"data\": {\n \"concept\": {\"filter\": { \"concept\": { \"$in\": [\"rank\"]} } }\n }\n },\n \"map\": { \n \"data\": {\n \"concept\": {\"filter\": { \"concept\": { \"$in\": [\"shape_lores_svg\", \"shape\", \"svg\"]} } }\n }\n }\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","_MultiIconLayer","vs","_TextBackgroundLayer","LineLayer","TextLayer","Chart","LabelSizeHelper","DateTimeBackground","BCAxisTitles","axisSmart","runInAction","Deck","OrthographicView","ScatterplotLayer","Repeater","TimeSlider","SteppedSlider","TreeMenu","MarkerContextmenu","DataWarning","DataNotes","Dialogs","ButtonList","ErrorMessage","CapitalVizabiService","LocaleService","LayoutService","versionInfo"],"mappings":"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,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;EACnC,KAAK;EACL,GAAG;EACH;;AC3KA,aAAe,QAAQ,CAAC;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;EC1Gc,MAAM,mBAAmB,SAASK,sBAAe,CAAC;EACjE,EAAE,OAAO,YAAY,GAAG;EACxB,IAAI,eAAe,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;EAC5D,IAAI,UAAU,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,CAAC;EAC9C,GAAG,CAAC;AACJ;EACA,EAAE,eAAe,GAAG;EACpB,IAAI,KAAK,CAAC,eAAe,EAAE,CAAC;AAC5B;EACA,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC,YAAY,CAAC;EAC5C,MAAM,aAAa,EAAE;EACrB,QAAQ,IAAI,EAAE,CAAC;EACf;EACA,QAAQ,QAAQ,EAAE,CAAC,MAAM,EAAE,IAAI,KAAK;EACpC,UAAU,OAAO,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;EAC3D,SAAS;EACT,OAAO;EACP,MA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AAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;EACpC,OAAO;EACP,MAAM,kBAAkB,EAAE;EAC1B,QAAQ,IAAI,EAAE,CAAC;EACf,QAAQ,UAAU,EAAE,KAAK;EACzB,QAAQ,QAAQ,EAAE,cAAc;EAChC,QAAQ,YAAY,EAAE,GAAG;EACzB,OAAO;EACP,KAAK,CAAC,CAAC;EACP,GAAG;EACH;EACA,EAAE,IAAI,CAAC,MAAM,EAAE;EACf,IAAI,MAAM,CAAC,YAAY,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;EAC1C,IAAI,MAAM,CAAC,YAAY,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;EACpD,IAAI,MAAM,CAAC,QAAQ,CAAC,YAAY,GAAG,YAAY,CAAC;EAChD,IAAI,MAAM,CAAC,QAAQ,CAAC,YAAY,GAAG,YAAY,CAAC;EAChD,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;EACvB,GAAG;AACH;EACA,EAAE,UAAU,GAAG;EACf,IAAI,OAAO,EAAE,GAAG,KAAK,CAAC,UAAU,EAAE,MAAED,IAAE,EAAE,EAAE,EAAE,CAAC;EAC7C,GAAG;EACH;;AClDA,WAAe,QAAQ,CAAC;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA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"}
|