@vizabi/bubblechart 0.0.3 → 0.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"bubblechart.js","sources":["../src/panzoom.js","../src/decorations.js","../src/component.js","../src/index.js"],"sourcesContent":["import {\n LegacyUtils as utils,\n} from \"VizabiSharedComponents\";\nimport {\n select as d3_select,\n extent as d3_extent,\n drag as d3_drag,\n zoom as d3_zoom,\n pointer as d3_pointer,\n zoomIdentity as d3_zoomIdentity,\n zoomTransform as d3_zoomTransform\n} from \"d3\";\nexport default class PanZoom {\n\n constructor(context) {\n this.context = context;\n\n this.dragRectangle = d3_drag();\n this.zoomer = d3_zoom();\n\n // this.dragLock = false;\n\n this.dragRectangle\n .filter(event => !event.button)\n .subject(this.dragSubject())\n .on(\"start\", this.drag().start)\n .on(\"drag\", this.drag().go)\n .on(\"end\", this.drag().stop);\n\n this.zoomer\n .filter(this.zoomFilter())\n .scaleExtent([0.0625, +Infinity])\n .on(\"start\", this.zoom().start)\n .on(\"zoom\", this.zoom().go)\n .on(\"end\", this.zoom().stop);\n\n this.zoomer.ratioX = 1;\n this.zoomer.ratioY = 1;\n\n this.context._zoomedXYMinMax = {\n x: { zoomedMin: null, zoomedMax: null },\n y: { zoomedMin: null, zoomedMax: null }\n };\n }\n\n dragSubject() {\n const _this = this.context;\n\n return function(event) {\n /*\n * Do not drag if the Ctrl key, Meta key, or plus cursor mode is\n * not enabled. Also do not drag if zoom-pinching on touchmove\n * events.\n */\n if (!(event.sourceEvent.ctrlKey || event.sourceEvent.metaKey ||\n _this.ui.cursorMode === \"plus\") || (_this.ui.cursorMode === \"minus\") ||\n (event.sourceEvent.type === \"touchmove\" || event.sourceEvent.type === \"touchstart\") &&\n (event.sourceEvent.touches.length > 1 || event.sourceEvent.targetTouches.length > 1)) {\n return null;\n }\n\n return {\n x: d3_pointer(event, this)[0],\n y: d3_pointer(event, this)[1]\n };\n };\n }\n\n drag() {\n const _this = this.context;\n const self = this;\n\n return {\n start(event) {\n /*\n * Do not drag if the Ctrl key, Meta key, or plus cursor mode is\n * not enabled. Also do not drag if zoom-pinching on touchmove\n * events.\n */\n // if(!(event.sourceEvent.ctrlKey || event.sourceEvent.metaKey ||\n // _this.ui.cursorMode === \"plus\") ||\n // (event.sourceEvent.type === \"touchmove\" || event.sourceEvent.type === \"touchstart\") &&\n // (event.sourceEvent.touches.length > 1 || event.sourceEvent.targetTouches.length > 1)) {\n // return;\n // }\n\n // self.dragLock = true;\n this.origin = {\n x: d3_pointer(event, this)[0],\n y: d3_pointer(event, this)[1]\n };\n _this.DOM.zoomRect.classed(\"vzb-invisible\", false);\n },\n\n go(event) {\n const origin = this.origin;\n const mouse = {\n x: event.x,\n y: event.y\n };\n\n _this.DOM.zoomRect\n .attr(\"x\", Math.min(mouse.x, origin.x))\n .attr(\"y\", Math.min(mouse.y, origin.y))\n .attr(\"width\", Math.abs(mouse.x - origin.x))\n .attr(\"height\", Math.abs(mouse.y - origin.y));\n },\n\n stop(event) {\n // if (!self.dragLock) return;\n // self.dragLock = false;\n\n _this.DOM.zoomRect\n .attr(\"width\", 0)\n .attr(\"height\", 0)\n .classed(\"vzb-invisible\", true);\n\n this.target = {\n x: d3_pointer(event, this)[0],\n y: d3_pointer(event, this)[1]\n };\n if (Math.abs(this.origin.x - this.target.x) < 10 || Math.abs(this.origin.y - this.target.y) < 10) return;\n\n /*\n * Only compensate for dragging when the Ctrl key or Meta key\n * are pressed, or if the cursorMode is not in plus mode.\n */\n const compensateDragging = event.sourceEvent.ctrlKey ||\n event.sourceEvent.metaKey ||\n _this.ui.cursorMode === \"plus\";\n\n self._zoomOnRectangle(\n d3_select(this),\n this.origin.x,\n this.origin.y,\n this.target.x,\n this.target.y,\n compensateDragging, 500\n );\n }\n };\n }\n\n zoomFilter() {\n const _this = this.context;\n\n return function(event) {\n\n if (event.ctrlKey || event.metaKey) return false;\n\n // Cancel drag lock when zoom-pinching via touchmove events.\n if ((event.type === \"touchmove\" || event.type === \"touchstart\") &&\n (event.touches.length > 1 || event.targetTouches.length > 1)) return true;\n\n if ((event.type === \"wheel\" || event.type === \"mousewheel\") &&\n _this.ui.zoomOnScrolling) {\n // if (_this.scrollableAncestor) {\n // _this.scrollableAncestor.scrollTop -= (event.deltaY || -event.wheelDelta);\n // }\n // event.scale = null;\n //zoomer.scale(this.savedScale);\n return true;\n }\n\n if ((event.type === \"mousedown\" || event.type === \"touchstart\") &&\n (_this.ui.cursorMode !== \"plus\") && (_this.ui.cursorMode !== \"minus\") &&\n (_this.ui.panWithArrow || _this.ui.cursorMode === \"hand\")) return true;\n\n return false;\n };\n }\n\n zoom() {\n const _this = this.context;\n const zoomer = this.zoomer;\n const self = this;\n\n return {\n start() {\n //this.savedScale = zoomer.scale;\n if ((_this.ui.cursorMode !== \"plus\") && (_this.ui.cursorMode !== \"minus\")) {\n _this.DOM.chartSvg.classed(\"vzb-zooming\", true);\n }\n\n },\n go(event) {\n\n const sourceEvent = event.sourceEvent;\n\n let zoom = event.transform.k;\n\n let pan = [event.transform.x, event.transform.y];//event.translate;\n let ratioY = zoomer.ratioY;\n let ratioX = zoomer.ratioX;\n\n _this.draggingNow = true;\n\n //value protections and fallbacks\n if (isNaN(zoom) || zoom == null) zoom = zoomer.scale;\n if (isNaN(zoom) || zoom == null) zoom = 1;\n\n //TODO: this is a patch to fix #221. A proper code review of zoom and zoomOnRectangle logic is needed\n /*\n * Mouse wheel and touchmove events set the zoom value\n * independently of axis ratios. If the zoom event was triggered\n * by a mouse wheel event scrolling down or touchmove event with\n * more than 1 contact that sets zoom to 1, then set the axis\n * ratios to 1 as well, which will fully zoom out.\n */\n if (zoom === 1 && sourceEvent !== null &&\n ((sourceEvent.type === \"wheel\" || sourceEvent.type === \"mousewheel\") && (sourceEvent.deltaY || -sourceEvent.wheelDelta) > 0 ||\n sourceEvent.type === \"touchmove\" && sourceEvent.touches.length > 1)) {\n zoomer.ratioX = 1;\n ratioX = 1;\n zoomer.ratioY = 1;\n ratioY = 1;\n }\n\n if (isNaN(pan[0]) || isNaN(pan[1]) || pan[0] == null || pan[1] == null) pan = [0, 0];\n\n // limit the zooming, so that it never goes below min value of zoom for any of the axes\n const minZoomScale = zoomer.scaleExtent()[0];\n if (zoom * ratioY < minZoomScale) {\n ratioY = minZoomScale / zoom;\n zoomer.ratioY = ratioY;\n }\n if (zoom * ratioX < minZoomScale) {\n ratioX = minZoomScale / zoom;\n zoomer.ratioX = ratioX;\n }\n\n const zoomXOut = zoom * ratioX < 1;\n const zoomYOut = zoom * ratioY < 1;\n\n //limit the panning, so that we are never outside the possible range\n if (!zoomXOut) {\n if (pan[0] > 0) pan[0] = 0;\n if (pan[0] < (1 - zoom * ratioX) * _this.width) pan[0] = (1 - zoom * ratioX) * _this.width;\n } else {\n if (pan[0] < 0) pan[0] = 0;\n if (pan[0] > (1 - zoom * ratioX) * _this.width) pan[0] = (1 - zoom * ratioX) * _this.width;\n }\n\n if (!zoomYOut) {\n if (pan[1] > 0) pan[1] = 0;\n if (pan[1] < (1 - zoom * ratioY) * _this.height) pan[1] = (1 - zoom * ratioY) * _this.height;\n } else {\n if (pan[1] < 0) pan[1] = 0;\n if (pan[1] > (1 - zoom * ratioY) * _this.height) pan[1] = (1 - zoom * ratioY) * _this.height;\n }\n\n //limit zoom translate\n self.zoomSelection.property(\"__zoom\", d3_zoomIdentity.translate(pan[0], pan[1]).scale(zoom));\n\n const xPanOffset = _this.width * zoom * ratioX;\n const yPanOffset = _this.height * zoom * ratioY;\n\n const xRange = [0 * zoom * ratioX + pan[0], xPanOffset + pan[0]];\n const yRange = [yPanOffset + pan[1], 0 * zoom * ratioY + pan[1]];\n\n const xRangeBumped = _this._rangeBump(xRange);\n const yRangeBumped = _this._rangeBump(yRange);\n\n /*\n * Shift xRange and yRange by the difference between the bumped\n * ranges, which is scaled by the zoom factor. This accounts for\n * the range bump, which controls a gutter around the\n * bubblechart, while correctly zooming.\n */\n const xRangeMinOffset = (xRangeBumped[0] - xRange[0]) * zoom * ratioX;\n const xRangeMaxOffset = (xRangeBumped[1] - xRange[1]) * zoom * ratioX;\n\n const yRangeMinOffset = (yRangeBumped[0] - yRange[0]) * zoom * ratioY;\n const yRangeMaxOffset = (yRangeBumped[1] - yRange[1]) * zoom * ratioY;\n\n xRange[0] += xRangeMinOffset;\n xRange[1] += xRangeMaxOffset;\n\n yRange[0] += yRangeMinOffset;\n yRange[1] += yRangeMaxOffset;\n\n // Calculate the maximum xRange and yRange available.\n const xRangeBounds = [0, _this.width];\n const yRangeBounds = [_this.height, 0];\n\n const xRangeBoundsBumped = _this._rangeBump(xRangeBounds);\n const yRangeBoundsBumped = _this._rangeBump(yRangeBounds);\n\n /*\n * Set the pan to account for the range bump by subtracting\n * offsets and preventing panning past the range bump gutter.\n */\n if (!zoomXOut) {\n if (xRange[0] > xRangeBoundsBumped[0]) pan[0] = xRangeBoundsBumped[0] - xRangeMinOffset;\n if (xRange[1] < xRangeBoundsBumped[1]) pan[0] = xRangeBoundsBumped[1] - xRangeMaxOffset - xPanOffset;\n } else {\n if (xRange[0] < xRangeBoundsBumped[0]) pan[0] = xRangeBoundsBumped[0] - xRangeMinOffset;\n if (xRange[1] > xRangeBoundsBumped[1]) pan[0] = xRangeBoundsBumped[1] - xRangeMaxOffset - xPanOffset;\n }\n\n if (!zoomYOut) {\n if (yRange[0] < yRangeBoundsBumped[0]) pan[1] = yRangeBoundsBumped[0] - yRangeMinOffset - yPanOffset;\n if (yRange[1] > yRangeBoundsBumped[1]) pan[1] = yRangeBoundsBumped[1] - yRangeMaxOffset;\n } else {\n if (yRange[0] > yRangeBoundsBumped[0]) pan[1] = yRangeBoundsBumped[0] - yRangeMinOffset - yPanOffset;\n if (yRange[1] < yRangeBoundsBumped[1]) pan[1] = yRangeBoundsBumped[1] - yRangeMaxOffset;\n }\n\n //zoomer.translate = pan;\n //self.zoomSelection.property(\"__zoom\", d3_zoomIdentity.translate(pan[0], pan[1]).scale(zoom));\n\n /*\n * Clamp the xRange and yRange by the amount that the bounds\n * that are range bumped.\n *\n * Additionally, take the amount clamped on the end of the range\n * and either subtract or add it to the range's other end. This\n * prevents visible stretching of the range when only panning.\n */\n if (!zoomXOut) {\n if (xRange[0] > xRangeBoundsBumped[0]) {\n xRange[1] -= Math.abs(xRange[0] - xRangeBoundsBumped[0]);\n xRange[0] = xRangeBoundsBumped[0];\n }\n\n if (xRange[1] < xRangeBoundsBumped[1]) {\n xRange[0] += Math.abs(xRange[1] - xRangeBoundsBumped[1]);\n xRange[1] = xRangeBoundsBumped[1];\n }\n } else {\n if (xRange[0] < xRangeBoundsBumped[0]) {\n xRange[1] += Math.abs(xRange[0] - xRangeBoundsBumped[0]);\n xRange[0] = xRangeBoundsBumped[0];\n }\n\n if (xRange[1] > xRangeBoundsBumped[1]) {\n xRange[0] -= Math.abs(xRange[1] - xRangeBoundsBumped[1]);\n xRange[1] = xRangeBoundsBumped[1];\n }\n }\n\n if (!zoomYOut) {\n if (yRange[0] < yRangeBoundsBumped[0]) {\n yRange[1] += Math.abs(yRange[0] - yRangeBoundsBumped[0]);\n yRange[0] = yRangeBoundsBumped[0];\n }\n\n if (yRange[1] > yRangeBoundsBumped[1]) {\n yRange[0] -= Math.abs(yRange[1] - yRangeBoundsBumped[1]);\n yRange[1] = yRangeBoundsBumped[1];\n }\n } else {\n if (yRange[0] > yRangeBoundsBumped[0]) {\n yRange[1] -= Math.abs(yRange[0] - yRangeBoundsBumped[0]);\n yRange[0] = yRangeBoundsBumped[0];\n }\n\n if (yRange[1] < yRangeBoundsBumped[1]) {\n yRange[0] += Math.abs(yRange[1] - yRangeBoundsBumped[1]);\n yRange[1] = yRangeBoundsBumped[1];\n }\n }\n\n if (_this.MDL.x.scale.type === \"ordinal\") {\n _this.xScale.rangeBands(xRange);\n } else {\n _this.xScale.range(xRange);\n }\n\n if (_this.MDL.y.scale.type === \"ordinal\") {\n _this.yScale.rangeBands(yRange);\n } else {\n _this.yScale.range(yRange);\n }\n\n const formatter = function(n) {\n return utils.isDate(n) ? n : +n.toFixed(2);\n };\n\n const zoomedXRange = xRangeBoundsBumped;\n const zoomedYRange = yRangeBoundsBumped;\n\n /*\n * Set the zoomed min/max to the correct value depending on if the\n * min/max values lie within the range bound regions.\n */\n /*\n if(!zoomXOut) {\n zoomedXRange[0] = xRangeBounds[0] > xRange[0] ? xRangeBounds[0] : xRange[0];\n zoomedXRange[1] = xRangeBounds[1] < xRange[1] ? xRangeBounds[1] : xRange[1];\n }\n\n if(!zoomYOut) {\n zoomedYRange[0] = yRangeBounds[0] < yRange[0] ? yRangeBounds[0] : yRange[0];\n zoomedYRange[1] = yRangeBounds[1] > yRange[1] ? yRangeBounds[1] : yRange[1];\n }\n */\n\n _this._zoomedXYMinMax = {\n x: {\n zoomedMin: formatter(_this.xScale.invert(zoomedXRange[0])),\n zoomedMax: formatter(_this.xScale.invert(zoomedXRange[1]))\n },\n y: {\n zoomedMin: formatter(_this.yScale.invert(zoomedYRange[0])),\n zoomedMax: formatter(_this.yScale.invert(zoomedYRange[1]))\n }\n };\n\n //TODO/*avoid storing it in URL*/\n if (!zoomer.dontFeedToState) {\n // _this.ui.panzoom = {\n // x: Object.assign({}, _this._zoomedXYMinMax.x),\n // y: Object.assign({}, _this._zoomedXYMinMax.y), \n // }\n _this.MDL.x.scale.zoomed = [_this._zoomedXYMinMax.x.zoomedMin, _this._zoomedXYMinMax.x.zoomedMax];\n _this.MDL.y.scale.zoomed = [_this._zoomedXYMinMax.y.zoomedMin, _this._zoomedXYMinMax.y.zoomedMax];\n }\n\n const optionsY = _this.yAxis.labelerOptions();\n const optionsX = _this.xAxis.labelerOptions();\n optionsY.limitMaxTickNumber = zoom * ratioY < 1.5 ? 8 : zoom * ratioY * 8;\n optionsX.limitMaxTickNumber = zoom * ratioX < 1.5 ? 8 : zoom * ratioX * 8;\n optionsY.transitionDuration = zoomer.duration;\n optionsX.transitionDuration = zoomer.duration;\n\n _this.DOM.xAxisEl.call(_this.xAxis.labelerOptions(optionsX));\n _this.DOM.yAxisEl.call(_this.yAxis.labelerOptions(optionsY));\n _this.redrawData(zoomer.duration);\n //_this._trails.run(\"resize\", null, zoomer.duration);\n\n zoomer.duration = 0;\n },\n\n stop() {\n _this.DOM.chartSvg.classed(\"vzb-zooming\", false);\n // if (this.quitZoom) return;\n\n //Force the update of the URL and history, with the same values\n if (!zoomer.dontFeedToState) {\n // _this.ui.panzoom = {\n // x: Object.assign({}, _this._zoomedXYMinMax.x),\n // y: Object.assign({}, _this._zoomedXYMinMax.y), \n // }\n _this.MDL.x.scale.zoomed = [_this._zoomedXYMinMax.x.zoomedMin, _this._zoomedXYMinMax.x.zoomedMax];\n _this.MDL.y.scale.zoomed = [_this._zoomedXYMinMax.y.zoomedMin, _this._zoomedXYMinMax.y.zoomedMax];\n //_this.model.marker.set(_this._zoomedXYMinMax, true, true);\n }\n zoomer.dontFeedToState = null;\n\n _this.draggingNow = false;\n }\n };\n }\n\n expandCanvas(duration) {\n const _this = this.context;\n if (!duration) duration = _this.duration;\n\n //d3 extent returns min and max of the input array as [min, max]\n const mmX = d3_extent(utils.values(_this.frame.x));\n const mmY = d3_extent(utils.values(_this.frame.y));\n\n //protection agains unreasonable min-max results -- abort function\n if (!mmX[0] && mmX[0] !== 0 || !mmX[1] && mmX[1] !== 0 || !mmY[0] && mmY[0] !== 0 || !mmY[1] && mmY[1] !== 0) {\n return utils.warn(\"panZoom.expandCanvas: X or Y min/max are broken. Aborting with no action\");\n }\n /*\n * Use a range bumped scale to correctly accommodate the range bump\n * gutter.\n */\n const suggestedFrame = {\n x1: _this.xScale(mmX[0]),\n y1: _this.yScale(mmY[0]),\n x2: _this.xScale(mmX[1]),\n y2: _this.yScale(mmY[1])\n };\n const xBounds = [0, _this.width];\n const yBounds = [_this.height, 0];\n\n // Get the current zoom frame based on the current dimensions.\n const frame = {\n x1: xBounds[0],\n x2: xBounds[1],\n y1: yBounds[0],\n y2: yBounds[1]\n };\n\n const TOLERANCE = 0.0;\n\n /*\n * If there is no current zoom frame, or if any of the suggested frame\n * points extend outside of the current zoom frame, then expand the\n * canvas.\n */\n if (!_this.isCanvasPreviouslyExpanded ||\n suggestedFrame.x1 < frame.x1 * (1 - TOLERANCE) || suggestedFrame.x2 > frame.x2 * (1 + TOLERANCE) ||\n suggestedFrame.y2 < frame.y2 * (1 - TOLERANCE) || suggestedFrame.y1 > frame.y1 * (1 + TOLERANCE)) {\n /*\n * If there is already a zoom frame, then clamp the suggested frame\n * points to only zoom out and expand the canvas.\n *\n * If any of x1, x2, y1, or y2 is within the current frame\n * boundaries, then clamp them to the frame boundaries. If any of\n * the above values will translate into a data value that is outside\n * of the possible data range, then clamp them to the frame\n * coordinate that corresponds to the maximum data value that can\n * be displayed.\n */\n if (_this.isCanvasPreviouslyExpanded) {\n /*\n * Calculate bounds and bumped scale for calculating the data boundaries\n * to which the suggested frame points need to be clamped.\n */\n const xBoundsBumped = _this._rangeBump(xBounds);\n const yBoundsBumped = _this._rangeBump(yBounds);\n\n if (suggestedFrame.x1 > xBoundsBumped[0]) suggestedFrame.x1 = xBoundsBumped[0];\n if (suggestedFrame.x2 < xBoundsBumped[1]) suggestedFrame.x2 = xBoundsBumped[1];\n if (suggestedFrame.y1 < yBoundsBumped[0]) suggestedFrame.y1 = yBoundsBumped[0];\n if (suggestedFrame.y2 > yBoundsBumped[0]) suggestedFrame.y2 = yBoundsBumped[1];\n }\n\n _this.isCanvasPreviouslyExpanded = true;\n this._zoomOnRectangle(_this.element, suggestedFrame.x1, suggestedFrame.y1,\n suggestedFrame.x2, suggestedFrame.y2, false, duration);\n } else {\n _this.redrawDataPoints(duration);\n }\n }\n\n zoomToMaxMin(zoomedMinX, zoomedMaxX, zoomedMinY, zoomedMaxY, duration, dontFeedToState) {\n const _this = this.context;\n let minX = zoomedMinX;\n let maxX = zoomedMaxX;\n let minY = zoomedMinY;\n let maxY = zoomedMaxY;\n\n const xDomain = _this.xScale.domain();\n const yDomain = _this.yScale.domain();\n\n /*\n * Prevent zoomout if only one of zoom edges set outside domain\n */\n if (minX < xDomain[0] && maxX < xDomain[1]) minX = xDomain[0];\n if (minX > xDomain[0] && maxX > xDomain[1]) maxX = xDomain[1];\n if (minY < yDomain[0] && maxY < yDomain[1]) minY = yDomain[0];\n if (minY > yDomain[0] && maxY > yDomain[1]) maxY = yDomain[1];\n\n\n const xRange = [_this.xScale(minX), _this.xScale(maxX)];\n const yRange = [_this.yScale(minY), _this.yScale(maxY)];\n\n\n this._zoomOnRectangle(_this.element, xRange[0], yRange[0], xRange[1], yRange[1], false, duration, dontFeedToState);\n }\n\n _zoomOnRectangle(element, zoomedX1, zoomedY1, zoomedX2, zoomedY2, compensateDragging, duration, dontFeedToState) {\n const _this = this.context;\n const zoomer = this.zoomer;\n const transform = d3_zoomTransform(this.zoomSelection.node());\n\n const x1 = zoomedX1;\n const y1 = zoomedY1;\n const x2 = zoomedX2;\n const y2 = zoomedY2;\n\n /*\n * When dragging to draw a rectangle, the translate vector has (x2 - x1)\n * added to zoomer.translate()[0], and (y2 - 1) added to\n * zoomer.translate()[1].\n *\n * We need to compensate for this addition when\n * zooming with a rectangle, because zooming with a rectangle will\n * update the translate vector with new values based on the rectangle\n * dimensions.\n */\n if (compensateDragging) {\n transform.translate(\n x1 - x2,\n y1 - y2\n );\n }\n\n const xRangeBounds = [0, _this.width];\n const yRangeBounds = [_this.height, 0];\n\n const xRangeBoundsBumped = _this._rangeBump(xRangeBounds);\n const yRangeBoundsBumped = _this._rangeBump(yRangeBounds);\n\n const minZoom = zoomer.scaleExtent()[0];\n const maxZoom = zoomer.scaleExtent()[1];\n let zoom, ratioX, ratioY;\n\n if (x1 == x2 || y1 == y2 || xRangeBoundsBumped[0] == xRangeBoundsBumped[1] || yRangeBoundsBumped[0] == yRangeBoundsBumped[1]) {\n return utils.warn(\"_zoomOnRectangle(): can not proceed because this may result in infinity zooms\");\n }\n\n if (Math.abs(x1 - x2) > Math.abs(y1 - y2)) {\n zoom = Math.abs(yRangeBoundsBumped[0] - yRangeBoundsBumped[1]) / Math.abs(y1 - y2) * transform.k;\n\n /*\n * Clamp the zoom scalar to the maximum zoom allowed before\n * calculating the next ratioX and ratioY.\n */\n if (zoom < minZoom) {\n zoomer.ratioY *= zoom / transform.k;\n zoom = minZoom;\n }\n if (zoom > maxZoom) zoom = maxZoom;\n\n ratioX = Math.abs(xRangeBoundsBumped[0] - xRangeBoundsBumped[1]) / Math.abs(x1 - x2) * transform.k / zoom * zoomer.ratioX;\n ratioY = zoomer.ratioY;\n } else {\n zoom = Math.abs(xRangeBoundsBumped[0] - xRangeBoundsBumped[1]) / Math.abs(x1 - x2) * transform.k;\n\n /*\n * Clamp the zoom scalar to the maximum zoom allowed before\n * calculating the next ratioX and ratioY.\n */\n if (zoom < minZoom) {\n zoomer.ratioX *= zoom / transform.k;\n zoom = minZoom;\n }\n if (zoom > maxZoom) zoom = maxZoom;\n\n ratioY = Math.abs(yRangeBoundsBumped[0] - yRangeBoundsBumped[1]) / Math.abs(y1 - y2) * transform.k / zoom * zoomer.ratioY;\n ratioX = zoomer.ratioX;\n }\n\n const pan = [\n (transform.x - Math.min(x1, x2)) / transform.k / zoomer.ratioX * zoom * ratioX + (xRangeBoundsBumped[0] - xRangeBounds[0]),\n (transform.y - Math.min(y1, y2)) / transform.k / zoomer.ratioY * zoom * ratioY + (yRangeBoundsBumped[1] - yRangeBounds[1])\n ];\n\n zoomer.dontFeedToState = dontFeedToState;\n zoomer.ratioY = ratioY || 1; //NaN defaults to 1\n zoomer.ratioX = ratioX || 1; //NaN defaults to 1\n zoomer.duration = duration ? duration : 0;\n\n this.zoomSelection.call(zoomer.transform, d3_zoomIdentity.translate(pan[0], pan[1]).scale(zoom));\n }\n\n /*\n * Incrementally zoom in or out and pan the view so that it never looses the point where click happened\n * this function is a modified d3's own zoom behavior on double click\n * for the original code see https://github.com/mbostock/d3/blob/master/src/behavior/zoom.js\n * function dblclicked() and what it refers to\n */\n zoomByIncrement(event, direction, duration) {\n const transform = d3_zoomTransform(this.zoomSelection.node());\n\n let ratio = transform.k;\n const pan = [transform.x, transform.y];\n\n const mouse = d3_pointer(event, this.zoomSelection.node());\n let k = Math.log(ratio) / Math.LN2;\n\n //change factor direction based on the input. default is no direction supplied\n if (direction == \"plus\" || !direction) k = Math.floor(k) + 1;\n if (direction == \"minus\") k = Math.ceil(k) - 1;\n\n //decode panning\n let locus = [(mouse[0] - pan[0]) / ratio, (mouse[1] - pan[1]) / ratio];\n\n //recalculate zoom ratio\n const scaleExtent = this.zoomer.scaleExtent();\n if (ratio == scaleExtent[0]) {\n this.zoomer.ratioY = 1;\n this.zoomer.ratioX = 1;\n }\n ratio = Math.max(scaleExtent[0], Math.min(scaleExtent[1], Math.pow(2, k)));\n\n //recalculate panning\n locus = [locus[0] * ratio + pan[0], locus[1] * ratio + pan[1]];\n pan[0] += mouse[0] - locus[0];\n pan[1] += mouse[1] - locus[1];\n\n this.zoomer.duration = duration || 0;\n this.zoomSelection.call(this.zoomer.transform, d3_zoomIdentity.translate(pan[0], pan[1]).scale(ratio));\n\n }\n\n /*\n * Reset zoom values without triggering a zoom event.\n */\n resetZoomState(element) {\n this.zoomer.ratioY = 1;\n this.zoomer.ratioX = 1;\n (element || this.zoomSelection).property(\"__zoom\", d3_zoomIdentity);\n }\n\n reset(element, duration) {\n const _this = this.context;\n _this.isCanvasPreviouslyExpanded = false;\n\n this.zoomer.ratioY = 1;\n this.zoomer.ratioX = 1;\n this.zoomer.duration = duration || 0;\n (element || this.zoomSelection).call(this.zoomer.transform, d3_zoomIdentity);\n }\n\n rerun(element) {\n (element || this.zoomSelection).call(this.zoomer.scaleBy, 1);\n }\n\n zoomSelection(element) {\n this.zoomSelection = element;\n }\n\n}\n","import {\n Utils\n} from \"VizabiSharedComponents\";\nimport {\n select as d3_select,\n min as d3_min,\n max as d3_max\n} 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 if (showLineEqualXY) {\n const min = d3_min(this.yScale.domain().concat(this.xScale.domain()));\n const max = d3_max(this.yScale.domain().concat(this.xScale.domain()));\n\n this.DOM.lineEqualXY\n .transition()\n .duration(duration || 0)\n .attr(\"y1\", this.yScale(min) || 0)\n .attr(\"y2\", this.yScale(max) || 0)\n .attr(\"x1\", this.xScale(min) || 0)\n .attr(\"x2\", this.xScale(max) || 0);\n }\n }\n}","import {\n Chart,\n Icons,\n Utils,\n LegacyUtils as utils,\n axisSmart,\n Labels,\n DateTimeBackground\n} from \"VizabiSharedComponents\";\nimport PanZoom from \"./panzoom\";\nimport {\n select as d3_select, \n transition as d3_transition, \n easeLinear as d3_easeLinear, \n range as d3_range\n} from \"d3\";\n\nimport BCDecorations from \"./decorations.js\";\n\nimport {\n runInAction\n} from \"mobx\";\n\nimport {decorate, computed, observable, action} from \"mobx\";\n\nconst {ICON_QUESTION} = Icons;\nconst COLOR_WHITEISH = \"rgb(253, 253, 253)\";\n\nconst marginScaleH = (marginMin, ratio = 0) => height => marginMin + height * ratio;\nconst marginScaleW = (marginMin, ratio = 0) => width => marginMin + width * ratio;\n\nfunction isTrailBubble(d){\n return !!d[Symbol.for(\"trailHeadKey\")];\n}\n\nconst MAX_RADIUS_EM = 0.05;\n\nconst PROFILE_CONSTANTS = (width, height) => ({\n SMALL: {\n margin: { top: 30, bottom: 35, left: 30, right: 10},\n leftMarginRatio: 1,\n padding: 2,\n minRadiusPx: 0.5,\n maxRadiusPx: Math.max(0.5, MAX_RADIUS_EM * utils.hypotenuse(width, height)),\n infoElHeight: 16,\n yAxisTitleBottomMargin: 6,\n xAxisTitleBottomMargin: 4\n },\n MEDIUM: {\n margin: { top: 15, bottom: 40, left: 40, right: 15},\n leftMarginRatio: 1.6,\n padding: 2,\n minRadiusPx: 1,\n maxRadiusPx: Math.max(0.5, MAX_RADIUS_EM * utils.hypotenuse(width, height)),\n 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 infoElHeight: 22,\n yAxisTitleBottomMargin: 3,//marginScaleH(4, 0.01)(height),\n xAxisTitleBottomMargin: marginScaleH(0, 0.01)(height),\n hideSTitle: true\n }\n});\n\nconst PROFILE_CONSTANTS_FOR_PROJECTOR = (width, height) => ({\n MEDIUM: {\n margin: { top: 20, bottom: 55, left: 50, right: 20 },\n yAxisTitleBottomMargin: 3,\n xAxisTitleBottomMargin: 4,\n infoElHeight: 26,\n },\n LARGE: {\n margin: { top: 30, bottom: marginScaleH(45, 0.03)(height), left: marginScaleW(35, 0.025)(width), right: 30 },\n yAxisTitleBottomMargin: 3,//marginScaleH(4, 0.01)(height),\n xAxisTitleBottomMargin: marginScaleH(-5, 0.01)(height),\n infoElHeight: 32,\n hideSTitle: true\n }\n});\n\n// BUBBLE CHART COMPONENT\nclass _VizabiBubbleChart extends Chart {\n\n constructor(config) {\n config.subcomponents = [{\n type: Labels,\n placeholder: \".vzb-bc-labels\", \n options: {\n CSS_PREFIX: \"vzb-bc\",\n LABELS_CONTAINER_CLASS: \"vzb-bc-labels\",\n LINES_CONTAINER_CLASS: \"vzb-bc-lines\",\n SUPPRESS_HIGHLIGHT_DURING_PLAY: false\n },\n name: \"labels\"\n },{\n type: DateTimeBackground,\n placeholder: \".vzb-bc-date\"\n }];\n\n config.template = `\n <svg class=\"vzb-bubblechart-svg vzb-export\">\n <svg class=\"vzb-bubblechart-svg-back\">\n <g class=\"vzb-bc-graph\">\n <g class=\"vzb-bc-date\"></g>\n <svg class=\"vzb-bc-axis-x\"><g></g></svg>\n <svg class=\"vzb-bc-axis-y\"><g></g></svg>\n <line class=\"vzb-bc-projection-x\"></line>\n <line class=\"vzb-bc-projection-y\"></line>\n </g>\n </svg>\n <svg class=\"vzb-bubblechart-svg-main\">\n <g class=\"vzb-bc-graph\">\n <g class=\"vzb-bc-axis-x-title\"><text></text></g>\n <g class=\"vzb-bc-axis-x-info vzb-noexport\"></g>\n\n <g class=\"vzb-bc-axis-y-title\"><text></text></g>\n <g class=\"vzb-bc-axis-y-info vzb-noexport\"></g>\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 <g class=\"vzb-bc-axis-y-subtitle\"><text></text></g>\n <g class=\"vzb-bc-axis-x-subtitle\"><text></text></g>\n <g class=\"vzb-bc-axis-s-title\"><text></text></g>\n <g class=\"vzb-bc-axis-c-title\"><text></text></g>\n\n <rect class=\"vzb-bc-zoom-rect\"></rect>\n </g>\n <g class=\"vzb-datawarning-button vzb-noexport\"></g>\n </svg>\n <svg class=\"vzb-bubblechart-svg-front\">\n <g class=\"vzb-bc-graph\">\n <svg class=\"vzb-bc-bubbles-crop\">\n <g class=\"vzb-bc-decorations\">\n <line class=\"vzb-bc-line-equal-xy vzb-invisible\"></line>\n <g class=\"vzb-bc-x-axis-groups\"></g>\n </g> \n <g class=\"vzb-bc-lines\"></g>\n <g class=\"vzb-bc-bubble-crown vzb-hidden\">\n <circle class=\"vzb-crown-glow\"></circle>\n <circle class=\"vzb-crown\"></circle>\n </g> \n </svg>\n <svg class=\"vzb-bc-labels-crop\">\n <g class=\"vzb-bc-labels\"></g>\n </svg>\n </g>\n </svg>\n <svg width=\"0\" height=\"0\">\n <defs>\n <filter class=\"vzb-noexport\" id=\"vzb-glow-filter-${config.id}\" x=\"-50%\" y=\"-50%\" width=\"200%\" height=\"200%\">\n <feGaussianBlur in=\"SourceGraphic\" stdDeviation=\"2\"></feGaussianBlur>\n </filter>\n <pattern class=\"vzb-noexport\" id=\"vzb-bc-pattern-lines-${config.id}\" x=\"0\" y=\"0\" patternUnits=\"userSpaceOnUse\" width=\"50\" height=\"50\" viewBox=\"0 0 10 10\"> \n <path d='M-1,1 l2,-2M0,10 l10,-10M9,11 l2,-2' stroke='black' stroke-width='3' opacity='0.08'/>\n </pattern> \n </defs>\n </svg>\n </svg>\n <div class=\"vzb-tooltip vzb-hidden vzb-tooltip-mobile\"></div>\n `;\n\n super(config);\n }\n\n setup() {\n\n this.DOM = {\n element: this.element,\n chartSvg: this.element.select(\"svg.vzb-bubblechart-svg-main\"),\n chartSvgFront: this.element.select(\"svg.vzb-bubblechart-svg-front\"),\n chartSvgBack: this.element.select(\"svg.vzb-bubblechart-svg-back\"),\n chartSvgAll: this.element.selectAll(\"svg.vzb-bubblechart-svg\"),\n graphAll: this.element.selectAll(\".vzb-bc-graph\"),\n bubbleContainerCropAll: this.element.selectAll(\".vzb-bc-bubbles-crop\"),\n zoomRect: this.element.select(\".vzb-bc-zoom-rect\"),\n eventArea: this.element.select(\".vzb-bc-eventarea\"),\n forecastOverlay: this.element.select(\".vzb-bc-forecastoverlay\"),\n tooltipMobile: this.element.select(\".vzb-tooltip-mobile\"),\n defs: this.element.select(\"defs\")\n };\n this.DOM.chartSvg.select(\".vzb-bc-graph\").call(graph => \n Object.assign(this.DOM, {\n graph: graph,\n ySubTitleEl: graph.select(\".vzb-bc-axis-y-subtitle\"),\n xSubTitleEl: graph.select(\".vzb-bc-axis-x-subtitle\"),\n yTitleEl: graph.select(\".vzb-bc-axis-y-title\"),\n xTitleEl: graph.select(\".vzb-bc-axis-x-title\"),\n sTitleEl: graph.select(\".vzb-bc-axis-s-title\"),\n cTitleEl: graph.select(\".vzb-bc-axis-c-title\"),\n yInfoEl: graph.select(\".vzb-bc-axis-y-info\"),\n xInfoEl: graph.select(\".vzb-bc-axis-x-info\"),\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(${location.pathname}#vzb-glow-filter-${this.id})`);\n\n this._date = this.findChild({type: \"DateTimeBackground\"});\n this._labels = this.findChild({type: \"Labels\"});\n this._panZoom = new PanZoom(this); \n this.decorations = new BCDecorations(this);\n this._initInfoElements();\n \n this.scrollableAncestor = utils.findScrollableAncestor(this.element);\n\n this.xAxis = axisSmart(\"bottom\");\n this.yAxis = axisSmart(\"left\");\n\n this.axisTitleComplimentStrings = {Y: \"\", X: \"\", S: \"\", C: \"\"};\n\n this.isCanvasPreviouslyExpanded = false;\n this.draggingNow = null;\n\n this.hoverBubble = false;\n this.__lastStep = 0;\n\n const _this = this;\n //keyboard listeners\n d3_select(\"body\")\n .on(\"keydown\", (event) => {\n if (_this.ui.cursorMode !== \"arrow\" && _this.ui.cursorMode !== \"hand\") return;\n if (event.metaKey || event.ctrlKey) _this.DOM.chartSvgAll.classed(\"vzb-zoomin\", true);\n })\n .on(\"keyup\", (event) => {\n if (_this.ui.cursorMode !== \"arrow\" && _this.ui.cursorMode !== \"hand\") return;\n if (!event.metaKey && !event.ctrlKey) _this.DOM.chartSvgAll.classed(\"vzb-zoomin\", false);\n })\n //this is for the case when user would press ctrl and move away from the browser tab or window\n //keyup event would happen somewhere else and won't be captured, so zoomin class would get stuck\n .on(\"mouseenter\", (event) => {\n if (_this.ui.cursorMode !== \"arrow\" && _this.ui.cursorMode !== \"hand\") return;\n if (!event.metaKey && !event.ctrlKey) _this.DOM.chartSvgAll.classed(\"vzb-zoomin\", false);\n });\n \n this.root.element.on(\"custom-resetZoom\", () => {\n _this._panZoom.reset(null, 500);\n });\n\n this._panZoom.zoomSelection(this.DOM.bubbleContainerCrop);\n this.DOM.bubbleContainerCrop\n .call(this._panZoom.dragRectangle)\n .call(this._panZoom.zoomer)\n .on(\"dblclick.zoom\", null)\n .on(\"mouseup\", () => {\n _this.draggingNow = false;\n })\n .on(\"click\", (event) => {\n const cursor = _this.ui.cursorMode;\n if (!event.defaultPrevented && cursor !== \"arrow\" && cursor !== \"hand\") {\n _this._panZoom.zoomByIncrement(event, cursor, 500);\n }\n });\n\n }\n\n _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.yInfoEl, 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.xInfoEl, 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 get MDL(){\n return {\n frame: this.model.encoding.frame,\n selected: this.model.encoding.selected,\n highlighted: this.model.encoding.highlighted,\n superHighlighted: this.model.encoding.superhighlighted,\n y: this.model.encoding[this.state.alias?.y || \"y\"],\n x: this.model.encoding[this.state.alias?.x || \"x\"],\n size: this.model.encoding.size,\n color: this.model.encoding.color,\n label: this.model.encoding.label,\n trail: this.model.encoding.trail\n };\n }\n\n draw() {\n this.localise = this.services.locale.auto(this.MDL.frame.interval);\n\n //this.MDL.trail.config.show = false;\n //this.ui.cursorMode = \"plus\";\n this.sScale = this.MDL.size.scale.d3Scale;\n\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.updateUIStrings);\n this.addReaction(this.updateTreemenu);\n this.addReaction(this._updateSize);\n this.addReaction(this.updateInfoElements);\n // this.addReaction(this._resetZoomMinMaxXReaction, this._resetZoomMinMaxX);\n // this.addReaction(this._resetZoomMinMaxYReaction, this._resetZoomMinMaxY);\n this.addReaction(this._updateOpacity);\n this.addReaction(this.updateColorPatterns);\n this.addReaction(this._updateShowYear);\n this.addReaction(this._updateYear);\n this.addReaction(this.drawData);\n this.addReaction(this._zoomToMarkerMaxMin);\n this.addReaction(this.redrawData);\n\n this.addReaction(this._selectDataPoints);\n this.addReaction(this._highlightDataPoints);\n this.addReaction(this._blinkSuperHighlighted);\n this.addReaction(this._drawForecastOverlay);\n this.addReaction(this._setupCursorMode);\n this.addReaction(this.updateDecorations);\n }\n\n drawData() {\n this.processFrameData();\n this._updateMarkerSizeLimits();\n this._createAndDeleteBubbles();\n //this.redrawData();\n }\n\n updateColorPatterns() {\n if (this.MDL.color.scale.isPattern) {\n const colorConcept = this.MDL.color.data.concept;\n this.DOM.defs.selectAll(\".flag\")\n .data(this.MDL.color.data.domainData, d => d[0])\n .enter()\n .append(\"pattern\")\n .attr(\"id\", d => `flag-${d[0]}-${this.id}`)\n .attr(\"class\", \"flag\")\n .attr(\"width\", \"100%\")\n .attr(\"height\", \"100%\")\n .attr(\"patternContentUnits\", \"objectBoundingBox\")\n .html(d => d[1][colorConcept])\n .each(function() {\n const svg = d3_select(this).select(\"svg\");\n if (svg.empty()) return;\n \n if (!svg.attr(\"viewBox\"))\n svg.attr(\"viewBox\", `0 0 ${svg.attr(\"width\")} ${svg.attr(\"height\")}`);\n\n // xMidYMid: center the image in the circle\n // slice: scale the image to fill the circle\n if (!svg.attr(\"preserveAspectRatio\"))\n svg.attr(\"preserveAspectRatio\", \"xMidYMid slice\")\n\n svg.attr(\"width\", 1).attr(\"height\", 1);\n });\n // .attr(\"xlink:href\", function(d) {\n // return \"flags/\" + d.CountryCode + \".svg\";\n // });\n } else {\n this.DOM.defs.selectAll(\".flag\").remove();\n }\n }\n\n _updateShowYear() {\n this.DOM.date.classed(\"vzb-hidden\", !this.ui.timeInBackground);\n }\n\n _updateYear() {\n const duration = this._getDuration();\n this._date.setText(this.MDL.frame.value, duration); \n }\n\n __getColor(key, valueC) {\n return valueC != null ? (this.MDL.color.scale.isPattern ? `url(#flag-${key}-${this.id})` : this.cScale(valueC)) : COLOR_WHITEISH;\n }\n\n _createAndDeleteBubbles() {\n const _this = this;\n const duration = this._getDuration();\n const transition = this._getTransition(duration);\n const data = this.__dataProcessed;\n let trailRedrawDate;\n\n runInAction(()=>{\n trailRedrawDate = this.MDL.frame.stepScale.invert(Math.min(this.__lastStep, this.__lastStep = this.MDL.frame.step << 0) - 1);\n })\n\n this.bubbles = this.DOM.bubbleContainer.selectAll(\".vzb-bc-entity\")\n .data(this.__dataProcessed, d => d[Symbol.for(\"key\")])\n .join(\n enter => enter\n .append(d => {\n const g = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n const circle = document.createElementNS(\"http://www.w3.org/2000/svg\", \"circle\");\n const trailLine = document.createElementNS(\"http://www.w3.org/2000/svg\", \"line\");\n const diagonalLine = document.createElementNS(\"http://www.w3.org/2000/svg\", \"line\");\n trailLine.classList.add(\"vzb-trail-line\");\n diagonalLine.classList.add(\"vzb-diagonal-line\");\n g.appendChild(circle);\n g.appendChild(diagonalLine);\n if (isTrailBubble(d)) g.appendChild(trailLine);\n return g;\n })\n .attr(\"class\", \"vzb-bc-entity\")\n .attr(\"id\", d => `vzb-bc-bubble-${d[Symbol.for(\"key\")]}-${this.id}`)\n .style(\"opacity\", d => d[Symbol.for(\"opacity\")] = this._getBubbleOpacity(d))\n .call(selection => {\n if(!utils.isTouchDevice()){\n selection\n .on(\"mouseover\", (event, d) => {\n if (this.ui.cursorMode !== \"arrow\" && this.ui.cursorMode !== \"hand\") return;\n if (this._labels.dragging) return;\n this._bubblesInteract().mouseover(event, d);\n })\n .on(\"mouseout\", (event, d) => {\n if (this.ui.cursorMode !== \"arrow\" && this.ui.cursorMode !== \"hand\") return;\n if (this._labels.dragging) return;\n this._bubblesInteract().mouseout(event, d);\n })\n .on(\"click\", (event, d) => {\n if (this.ui.cursorMode !== \"arrow\" && this.ui.cursorMode !== \"hand\") return;\n this._bubblesInteract().click(event, d);\n });\n } else {\n selection\n .onTap((event, d) => {\n event.stopPropagation();\n this._bubblesInteract().click(event, d);\n })\n .onLongTap(() => {});\n }\n })\n .each(function(d, index) {\n const dataNext = data[index + 1] || {};\n const isTrail = isTrailBubble(d);\n const isExtrapolated = d[Symbol.for(\"extrapolated\")];\n const headTrail = isTrail && !dataNext[Symbol.for(\"trailHeadKey\")];\n const view = d3_select(this);\n const circle = view.select(\"circle\");\n const diagonalLine = view.select(\".vzb-diagonal-line\");\n \n const valueX = d[_this._alias(\"x\")];\n const valueY = d[_this._alias(\"y\")];\n const valueS = d.size;\n const valueC = d.color;\n \n //d.hidden = (!valueS && valueS !== 0) || valueX == null || valueY == null;\n \n //view.classed(\"vzb-hidden\", d.hidden);\n d.r = utils.areaToRadius(_this.sScale(valueS || 0));\n const scaledX = _this.xScale(valueX);\n const scaledY = _this.yScale(valueY);\n const scaledC = _this.__getColor(d[Symbol.for(isTrail ? \"trailHeadKey\" : \"key\")], valueC);\n \n if (!duration || !headTrail) {\n circle\n .attr(\"r\", d.r)\n .attr(\"fill\", scaledC)\n .attr(\"cy\", scaledY)\n .attr(\"cx\", scaledX);\n //.transition(transition)\n\n if(isExtrapolated)\n diagonalLine\n .attr(\"x1\", scaledX + d.r/Math.sqrt(2))\n .attr(\"y1\", scaledY + d.r/Math.sqrt(2))\n .attr(\"x2\", scaledX - d.r/Math.sqrt(2))\n .attr(\"y2\", scaledY - d.r/Math.sqrt(2));\n diagonalLine\n .classed(\"vzb-hidden\", !isExtrapolated);\n \n //trail line\n if (isTrail) {\n const trailLine = view.select(\".vzb-trail-line\");\n\n const scaledX0 = _this.xScale(dataNext[_this._alias(\"x\")]);\n const scaledY0 = _this.yScale(dataNext[_this._alias(\"y\")]);\n \n trailLine\n .attr(\"x1\", scaledX)\n .attr(\"y1\", scaledY)\n .attr(\"x2\", scaledX0)\n .attr(\"y2\", scaledY0) \n .attr(\"stroke-dasharray\", Math.abs(scaledX - scaledX0) + Math.abs(scaledY - scaledY0))\n .attr(\"stroke-dashoffset\", -d.r)\n .style(\"stroke\", _this.MDL.color.scale.isPattern ? null : scaledC);\n }\n }\n \n if (duration && !isTrail) {\n view\n .style(\"opacity\", 0)\n .transition().duration(duration*0.9)\n .style(\"opacity\", d[Symbol.for(\"opacity\")]);\n }\n \n if (!isTrail) {\n _this._updateLabel(d, valueX, valueY, duration, true, false);\n }\n }),\n\n update => update\n .each(function(d, index) {\n \n const isTrail = isTrailBubble(d);\n const isExtrapolated = d[Symbol.for(\"extrapolated\")];\n const dataNext = data[index + 1] || {};\n const headTrail = isTrail && !dataNext[Symbol.for(\"trailHeadKey\")];\n \n const valueS = d.size;\n d.r = utils.areaToRadius(_this.sScale(valueS || 0));\n if (isTrail && d[\"frame\"] < trailRedrawDate) return;\n \n const valueX = d[_this._alias(\"x\")];\n const valueY = d[_this._alias(\"y\")];\n const valueC = d.color;\n \n //d.hidden = (!valueS && valueS !== 0) || valueX == null || valueY == null;\n \n //view.classed(\"vzb-hidden\", d.hidden);\n const scaledX = _this.xScale(valueX);\n const scaledY = _this.yScale(valueY);\n const scaledC = _this.__getColor(d[Symbol.for(isTrail ? \"trailHeadKey\" : \"key\")], valueC);\n \n const group = d3_select(this);\n if (!duration || !headTrail) {\n const circle = group.select(\"circle\");\n if (duration && !isTrail) {\n circle.transition(transition)\n .attr(\"r\", d.r)\n .attr(\"fill\", scaledC)\n .attr(\"cy\", scaledY)\n .attr(\"cx\", scaledX);\n } else {\n circle.interrupt()\n .attr(\"r\", d.r)\n .attr(\"fill\", scaledC)\n .attr(\"cy\", scaledY)\n .attr(\"cx\", scaledX);\n }\n \n const diagonalLine = group.select(\".vzb-diagonal-line\");\n diagonalLine\n .classed(\"vzb-hidden\", !isExtrapolated);\n if(isExtrapolated){\n if (duration && !isTrail){\n diagonalLine.transition(transition)\n .attr(\"x1\", scaledX + d.r/Math.sqrt(2))\n .attr(\"y1\", scaledY + d.r/Math.sqrt(2))\n .attr(\"x2\", scaledX - d.r/Math.sqrt(2))\n .attr(\"y2\", scaledY - d.r/Math.sqrt(2));\n } else {\n diagonalLine.interrupt()\n .attr(\"x1\", scaledX + d.r/Math.sqrt(2))\n .attr(\"y1\", scaledY + d.r/Math.sqrt(2))\n .attr(\"x2\", scaledX - d.r/Math.sqrt(2))\n .attr(\"y2\", scaledY - d.r/Math.sqrt(2));\n }\n }\n \n //trail line\n if (isTrail) {\n const trailLine = group.select(\".vzb-trail-line\");\n const scaledX0 = _this.xScale(dataNext[_this._alias(\"x\")]);\n const scaledY0 = _this.yScale(dataNext[_this._alias(\"y\")]);\n \n trailLine\n .attr(\"x1\", scaledX)\n .attr(\"y1\", scaledY);\n if (duration && !data[index + 2][Symbol.for(\"trailHeadKey\")]) {\n trailLine\n .attr(\"x2\", scaledX)\n .attr(\"y2\", scaledY)\n .transition(transition)\n .attr(\"x2\", scaledX0)\n .attr(\"y2\", scaledY0);\n } else {\n trailLine.interrupt()\n .attr(\"x2\", scaledX0)\n .attr(\"y2\", scaledY0);\n }\n \n trailLine\n .style(\"stroke\", _this.MDL.color.scale.isPattern ? null : scaledC)\n .attr(\"stroke-dasharray\", Math.abs(scaledX - scaledX0) + Math.abs(scaledY - scaledY0))\n .attr(\"stroke-dashoffset\", -d.r);\n }\n }\n \n if (!isTrail)\n _this._updateLabel(d, valueX, valueY, duration, false, false); \n }), \n\n exit => exit\n .each(function(d) {\n const isTrail = isTrailBubble(d);\n \n const view = duration && !isTrail ?\n d3_select(this).transition(transition)\n .duration(duration*0.9)\n .style(\"opacity\", 0)\n :\n d3_select(this).interrupt();\n \n view\n .remove();\n \n if (!isTrail) \n _this._updateLabel(d, d[_this._alias(\"x\")], d[_this._alias(\"y\")], duration, true, true);\n })\n )\n .order();\n\n }\n\n\n redrawData(duration) {\n //this.services.layout.size;\n //this.MDL.x.scale.type;\n //this.MDL.y.scale.type;\n this.MDL.color.scale.type;\n this.MDL.size.scale.type;\n this.MDL.size.scale.extent;\n\n const _this = this;\n const data = this.__dataProcessed;\n const transition = this._getTransition(duration);\n\n if (this.bubbles) this.bubbles.each(function(d, index) {\n const isTrail = isTrailBubble(d);\n const dataNext = data[index + 1] || {};\n const headTrail = isTrail && !dataNext[Symbol.for(\"trailHeadKey\")];\n const isExtrapolated = d[Symbol.for(\"extrapolated\")];\n\n const valueX = d[_this._alias(\"x\")];\n const valueY = d[_this._alias(\"y\")];\n const valueS = d.size;\n const valueC = d.color;\n\n d.r = utils.areaToRadius(_this.sScale(valueS || 0));\n const scaledX = _this.xScale(valueX);\n const scaledY = _this.yScale(valueY);\n const scaledC = _this.__getColor(d[Symbol.for(isTrail ? \"trailHeadKey\" : \"key\")], valueC);\n\n const group = d3_select(this);\n\n if (duration && headTrail) {\n group.style(\"opacity\", 0)\n .transition().delay(duration).duration(0)\n .style(\"opacity\", d[Symbol.for(\"opacity\")]);\n }\n\n const circle = group.select(\"circle\"); \n if (duration && !headTrail) {\n circle.transition(transition)\n .attr(\"r\", d.r)\n .attr(\"fill\", scaledC)\n .attr(\"cy\", scaledY)\n .attr(\"cx\", scaledX);\n } else {\n circle.interrupt()\n .attr(\"r\", d.r)\n .attr(\"fill\", scaledC)\n .attr(\"cy\", scaledY)\n .attr(\"cx\", scaledX);\n }\n\n const diagonalLine = group.select(\".vzb-diagonal-line\");\n diagonalLine\n .classed(\"vzb-hidden\", !isExtrapolated);\n if(isExtrapolated){\n if (duration && !headTrail){\n diagonalLine.transition(transition)\n .attr(\"x1\", scaledX + d.r/Math.sqrt(2))\n .attr(\"y1\", scaledY + d.r/Math.sqrt(2))\n .attr(\"x2\", scaledX - d.r/Math.sqrt(2))\n .attr(\"y2\", scaledY - d.r/Math.sqrt(2));\n } else {\n diagonalLine.interrupt()\n .attr(\"x1\", scaledX + d.r/Math.sqrt(2))\n .attr(\"y1\", scaledY + d.r/Math.sqrt(2))\n .attr(\"x2\", scaledX - d.r/Math.sqrt(2))\n .attr(\"y2\", scaledY - d.r/Math.sqrt(2));\n }\n }\n \n\n if (isTrail) {\n const trailLine = (duration && !headTrail) ? \n group.select(\".vzb-trail-line\")\n .transition(transition)\n : group.select(\".vzb-trail-line\").interrupt();\n\n const dataNext = data[index + 1];\n const scaledX0 = _this.xScale(dataNext[_this._alias(\"x\")]);\n const scaledY0 = _this.yScale(dataNext[_this._alias(\"y\")]);\n\n trailLine\n .attr(\"x1\", scaledX)\n .attr(\"y1\", scaledY)\n .attr(\"x2\", scaledX0)\n .attr(\"y2\", scaledY0)\n .style(\"stroke\", _this.MDL.color.scale.isPattern ? null : scaledC)\n .attr(\"stroke-dasharray\", Math.abs(scaledX - scaledX0) + Math.abs(scaledY - scaledY0))\n .attr(\"stroke-dashoffset\", -d.r);\n }\n });\n\n runInAction(() => _this._updateLabels(duration));\n }\n\n __getZoomed(type, zoomed, domain) {\n //const zoomed = values[`zoomed${type}`];\n return d3[type.toLowerCase()](zoomed !== null ? zoomed : domain);\n }\n\n __getZoomedMin(values, domain) {\n return this.__getZoomed(\"Min\", values, domain);\n }\n\n __getZoomedMax(values, domain) {\n return this.__getZoomed(\"Max\", values, domain);\n }\n\n /*\n * Zoom to the min and max values given in the URL axes markers.\n */\n _zoomToMarkerMaxMin() {\n this.services.layout.size;\n this.MDL.x.scale.type;\n this.MDL.y.scale.type;\n\n const panzoom = //this.ui.panzoom;\n {\n x: this.MDL.x.scale.zoomed,\n y: this.MDL.y.scale.zoomed\n };\n \n const xDomain = this.MDL.x.data.domain;\n const yDomain = this.MDL.y.data.domain;\n\n if (this.draggingNow) return;\n\n /*\n * Reset just the zoom values without triggering a zoom event. This ensures\n * a clean zoom state for the subsequent zoom event.\n */\n this._panZoom.resetZoomState();\n\n this.yScale.range(this._rangeBump([this.height, 0]));\n this.xScale.range(this._rangeBump([0, this.width]));\n \n /*\n * The axes may return null when there is no value given for the zoomed\n * min and max values. In that case, fall back to the axes' domain values.\n */\n const zoomedMinX = this.__getZoomedMin(panzoom.x, xDomain);\n const zoomedMaxX = this.__getZoomedMax(panzoom.x, xDomain);\n const zoomedMinY = this.__getZoomedMin(panzoom.y, yDomain);\n const zoomedMaxY = this.__getZoomedMax(panzoom.y, yDomain);\n\n //by default this will apply no transition and feed values back to state\n runInAction(() => {\n this._panZoom.zoomToMaxMin(zoomedMinX, zoomedMaxX, zoomedMinY, zoomedMaxY, 0, \"don't feed these zoom values back to state\");\n });\n }\n\n _resetZoomMinMaxXReaction() {\n return { concept: this.MDL.x.data.concept };\n }\n\n _resetZoomMinMaxX() {\n this.ui.panzoom.x = {zoomedMin: null, zoomedMax: null};\n }\n\n _resetZoomMinMaxYReaction() {\n return { concept: this.MDL.y.data.concept };\n }\n\n _resetZoomMinMaxY() {\n this.ui.panzoom.y = {zoomedMin: null, zoomedMax: null};\n }\n\n _drawForecastOverlay() {\n this.DOM.forecastOverlay.classed(\"vzb-hidden\", \n !this.ui.showForecast || \n !this.ui.showForecastOverlay || \n !this.ui.endBeforeForecast || \n (this.MDL.frame.value <= this.MDL.frame.parseValue(this.ui.endBeforeForecast))\n );\n }\n\n _updateLayoutProfile(){\n this.services.layout.size;\n\n this.elementHeight = (this.element.node().clientHeight) || 0;\n this.elementWidth = (this.element.node().clientWidth) || 0;\n\n this.profileConstants = this.services.layout.getProfileConstants(\n PROFILE_CONSTANTS(this.elementWidth, this.elementHeight), \n PROFILE_CONSTANTS_FOR_PROJECTOR(this.elementWidth, this.elementHeight)\n );\n\n if (!this.elementHeight || !this.elementWidth) return utils.warn(\"Chart _updateProfile() abort: container is too little or has display:none\");\n }\n\n _getDuration() {\n return this.MDL.frame.playing ? this.MDL.frame.speed || 0 : 0;\n }\n\n _updateScales() {\n this.yScale = this.MDL.y.scale.d3Scale.copy();\n this.xScale = this.MDL.x.scale.d3Scale.copy();\n this._labels.setScales(this.xScale, this.yScale);\n }\n\n get cScale() {\n return this.MDL.color.scale.d3Scale;\n }\n \n updateUIStrings() {\n const {\n y, x, size, color\n } = this.MDL;\n\n this.strings = {\n title: {\n Y: Utils.getConceptName(y, this.localise),\n X: Utils.getConceptName(x, this.localise),\n S: Utils.getConceptName(size, this.localise),\n C: Utils.getConceptName(color, this.localise)\n },\n title_short: {\n Y: Utils.getConceptShortName(y, this.localise),\n X: Utils.getConceptShortName(x, this.localise),\n S: Utils.getConceptShortName(size, this.localise),\n C: Utils.getConceptShortName(color, this.localise)\n },\n subtitle: {\n Y: Utils.getConceptNameMinusShortName(y, this.localise),\n X: Utils.getConceptNameMinusShortName(x, this.localise)\n },\n unit: {\n Y: Utils.getConceptUnit(y),\n X: Utils.getConceptUnit(x),\n S: Utils.getConceptUnit(size),\n C: Utils.getConceptUnit(color)\n }\n };\n\n Promise.all([\n Utils.getConceptNameCompliment(y),\n Utils.getConceptNameCompliment(x),\n Utils.getConceptNameCompliment(size),\n Utils.getConceptNameCompliment(color)\n ]).then(action(response => { \n [ \n this.axisTitleComplimentStrings.Y,\n this.axisTitleComplimentStrings.X,\n this.axisTitleComplimentStrings.S,\n this.axisTitleComplimentStrings.C\n ] = response;\n }));\n }\n\n updateTreemenu(){\n const treemenu = this.root.findChild({type: \"TreeMenu\"});\n\n this.DOM.yTitleEl\n .classed(\"vzb-disabled\", treemenu.state.ownReadiness !== Utils.STATUS.READY)\n .on(\"click\", () => {\n treemenu\n .encoding(this._alias(\"y\"))\n .alignX(this.services.locale.isRTL() ? \"right\" : \"left\")\n .alignY(\"top\")\n .updateView()\n .toggle();\n });\n\n this.DOM.xTitleEl\n .classed(\"vzb-disabled\", treemenu.state.ownReadiness !== Utils.STATUS.READY)\n .on(\"click\", () => {\n treemenu\n .encoding(this._alias(\"x\"))\n .alignX(this.services.locale.isRTL() ? \"right\" : \"left\")\n .alignY(\"bottom\")\n .updateView()\n .toggle();\n }); \n }\n\n _updateSize() {\n this.services.layout.size;\n\n const {\n x,\n y\n } = this.MDL;\n \n const {\n graphAll,\n eventArea,\n bubbleContainerCropAll,\n labelsContainerCrop,\n xAxisElContainer,\n xAxisEl,\n yAxisElContainer,\n yAxisEl,\n projectionX,\n projectionY,\n sTitleEl,\n xTitleEl,\n yTitleEl,\n xSubTitleEl,\n ySubTitleEl,\n xAxisGroupsEl,\n } = this.DOM;\n\n const _this = this;\n\n const layoutProfile = this.services.layout.profile;\n\n const margin = this.profileConstants.margin;\n const infoElHeight = this.profileConstants.infoElHeight;\n const xAxisTitleBottomMargin = this.profileConstants.xAxisTitleBottomMargin;\n\n //stage\n const height = this.height = (this.elementHeight - margin.top - margin.bottom) || 0;\n const width = this.width = (this.elementWidth - margin.left * this.profileConstants.leftMarginRatio - margin.right) || 0;\n\n // if (height <= 0 || width <= 0) {\n // height = 0;\n // width = 0;\n // utils.warn(\"Bubble chart updateSize(): vizabi container is too little or has display:none\");\n // }\n\n //graph group is shifted according to margins (while svg element is at 100 by 100%)\n graphAll\n .attr(\"transform\", \"translate(\" + (margin.left * this.profileConstants.leftMarginRatio) + \",\" + margin.top + \")\");\n\n this._date.resizeText(width, height);\n \n eventArea\n .attr(\"width\", width)\n .attr(\"height\", Math.max(0, height));\n\n //update scales to the new range\n // // if (this.model.marker.y.scaleType !== \"ordinal\") {\n // // this.yScale.range(this._rangeBump([height, 0]));\n // // } else {\n // // this.yScale.rangePoints([height, 0], _this.profileConstants.padding).range();\n // // }\n // // if (this.model.marker.x.scaleType !== \"ordinal\") {\n // // this.xScale.range(this._rangeBump([0, width]));\n // // } else {\n // // this.xScale.rangePoints([0, width], _this.profileConstants.padding).range();\n // // }\n this.yScale.range(this._rangeBump([height, 0]));\n this.xScale.range(this._rangeBump([0, width]));\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({\n scaleType: y.scale.type,\n toolMargin: margin,\n limitMaxTickNumber: 6,\n bump: this.profileConstants.maxRadiusPx / 2,\n viewportLength: height,\n formatter: this.localise\n });\n\n this.xAxis.scale(this.xScale)\n .tickSizeInner(-height)\n .tickSizeOuter(0)\n .tickPadding(6)\n .tickSizeMinor(-height, 0)\n .labelerOptions({\n scaleType: x.scale.type,\n toolMargin: margin,\n bump: this.profileConstants.maxRadiusPx / 2,\n viewportLength: width,\n formatter: this.localise\n });\n\n\n bubbleContainerCropAll\n .attr(\"width\", width)\n .attr(\"height\", Math.max(0, height));\n\n labelsContainerCrop\n .attr(\"width\", width)\n .attr(\"height\", Math.max(0, height));\n\n xAxisElContainer\n .attr(\"width\", width + 1)\n .attr(\"height\", this.profileConstants.margin.bottom + height)\n .attr(\"y\", -1)\n .attr(\"x\", -1);\n xAxisEl\n .attr(\"transform\", \"translate(1,\" + (1 + height) + \")\");\n\n yAxisElContainer\n .attr(\"width\", this.profileConstants.margin.left + width)\n .attr(\"height\", Math.max(0, height))\n .attr(\"x\", -this.profileConstants.margin.left);\n yAxisEl\n .attr(\"transform\", \"translate(\" + (this.profileConstants.margin.left - 1) + \",\" + 0 + \")\");\n\n yAxisEl.call(this.yAxis);\n xAxisEl.call(this.xAxis);\n\n const rangeBump = this.profileConstants.maxRadiusPx;\n projectionX.attr(\"y1\", _this.yScale.range()[0] + rangeBump);\n projectionY.attr(\"x2\", _this.xScale.range()[0] - rangeBump);\n\n\n // reduce font size if the caption doesn't fit\n this._updateSTitle();\n sTitleEl\n .attr(\"text-anchor\", \"end\")\n .attr(\"transform\", \"translate(\" + width + \",\" + 20 + \") rotate(-90)\");\n\n const compl = this.axisTitleComplimentStrings;\n if (layoutProfile !== \"SMALL\") {\n ySubTitleEl.select(\"text\").attr(\"dy\", infoElHeight * 0.6).text(this.strings.subtitle.Y);\n xSubTitleEl.select(\"text\").attr(\"dy\", -infoElHeight * 0.3).text(this.strings.subtitle.X);\n \n yTitleEl.select(\"text\").text(this.strings.title_short.Y + (compl.Y ? \" · \" + compl.Y : \"\") + \" \")\n .append(\"tspan\")\n .classed(\"vzb-noexport\", true)\n .style(\"font-size\", (infoElHeight * 0.7) + \"px\")\n .text(\"▼\");\n xTitleEl.select(\"text\").text(this.strings.title_short.X + (compl.X ? \" · \" + compl.X : \"\") + \" \")\n .append(\"tspan\")\n .classed(\"vzb-noexport\", true)\n .style(\"font-size\", (infoElHeight * 0.7) + \"px\")\n .text(\"▼\");\n } else {\n ySubTitleEl.select(\"text\").text(\"\");\n xSubTitleEl.select(\"text\").text(\"\");\n\n const yTitleText = yTitleEl.select(\"text\").text(this.strings.title.Y + (compl.Y ? \" · \" + compl.Y : \"\"));\n if (yTitleText.node().getBBox().width > width) yTitleText.text(this.strings.title_short.Y + (compl.Y ? \" · \" + compl.Y : \"\"));\n \n const xTitleText = xTitleEl.select(\"text\").text(this.strings.title.X + (compl.X ? \" · \" + compl.X : \"\"));\n if (xTitleText.node().getBBox().width > width - 100) xTitleText.text(this.strings.title_short.X) + (compl.X ? \" · \" + compl.X : \"\"); \n }\n\n const isRTL = this.services.locale.isRTL();\n ySubTitleEl\n .style(\"font-size\", (infoElHeight * 0.8) + \"px\")\n .attr(\"transform\", \"translate(\" + 0 + \",\" + 0 + \") rotate(-90)\");\n xSubTitleEl\n .style(\"font-size\", (infoElHeight * 0.8) + \"px\")\n .attr(\"transform\", \"translate(\" + width + \",\" + height + \")\");\n \n yTitleEl\n .style(\"font-size\", infoElHeight + \"px\")\n .attr(\"transform\", layoutProfile !== \"SMALL\" ?\n \"translate(\" + (-margin.left - this.profileConstants.yAxisTitleBottomMargin) + \",\" + (height * 0.5) + \") rotate(-90)\"\n : \n \"translate(\" + (isRTL ? width : 10 - this.profileConstants.margin.left) + \", -\" + this.profileConstants.yAxisTitleBottomMargin + \")\");\n\n xTitleEl\n .style(\"font-size\", infoElHeight + \"px\")\n .attr(\"transform\", layoutProfile !== \"SMALL\" ?\n \"translate(\" + (width * 0.5) + \",\" + (height + margin.bottom - xAxisTitleBottomMargin) + \")\"\n :\n \"translate(\" + (isRTL ? width : 0) + \",\" + (height + margin.bottom - xAxisTitleBottomMargin) + \")\");\n \n xAxisGroupsEl\n .style(\"font-size\", infoElHeight * 0.8 + \"px\");\n\n this.root.findChild({type: \"_DataWarning\"}).setOptions({\n width: this.elementWidth,\n height: this.elementHeight,\n vertical: \"bottom\", \n horizontal: \"right\", \n right: margin.right,\n bottom: xAxisTitleBottomMargin,\n wLimit: (layoutProfile !== \"SMALL\" ? 0.5 : 1) *\n (this.elementWidth - xTitleEl.node().getBBox().width - infoElHeight * 3)\n });\n\n //this.services.layout.setHGrid([this.elementWidth - marginRightAdjusted]);\n //this.ui.margin.set(\"left\", margin.left * this.profileConstants.leftMarginRatio, false, false);\n\n // (function(xMin, xMax, yMin, yMax) {\n // if ((xMin && xMax && yMin && yMax) === null) return;\n // _this._panZoom.zoomer.dontFeedToState = true;\n // _this._panZoom.rerun(); // includes redraw data points and trail resize\n // _this._panZoom.zoomToMaxMin(xMin, xMax, yMin, yMax, 0, true);\n // })(_this._zoomedXYMinMax.x.zoomedMin,\n // _this._zoomedXYMinMax.x.zoomedMax,\n // _this._zoomedXYMinMax.y.zoomedMin,\n // _this._zoomedXYMinMax.y.zoomedMax);\n }\n\n updateInfoElements() {\n this.services.layout.size;\n this.axisTitleComplimentStrings.X;\n this.axisTitleComplimentStrings.Y;\n\n const {xInfoEl, yInfoEl, xTitleEl, yTitleEl} = this.DOM;\n const {x, y} = this.MDL;\n const isRTL = this.services.locale.isRTL();\n const infoElHeight = this.profileConstants.infoElHeight;\n const layoutProfile = this.services.layout.profile;\n\n if (yInfoEl.select(\"svg\").node()) {\n const titleBBox = yTitleEl.node().getBBox();\n const t = utils.transform(yTitleEl.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 yInfoEl\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 (xInfoEl.select(\"svg\").node()) {\n const titleBBox = xTitleEl.node().getBBox();\n const t = utils.transform(xTitleEl.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 xInfoEl\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 _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 _updateSTitle(titleS, titleC) {\n const { sTitleEl } = this.DOM;\n const {\n size,\n color\n } = this.MDL;\n const compl = this.axisTitleComplimentStrings;\n // vertical text about size and color\n if (this.profileConstants.hideSTitle\n && this.root.ui.dialogs.dialogs.sidebar.indexOf(\"colors\") > -1\n && this.root.ui.dialogs.dialogs.sidebar.indexOf(\"size\") > -1) {\n sTitleEl.classed(\"vzb-invisible\", true);\n return;\n }\n if (sTitleEl.classed(\"vzb-invisible\")) {\n sTitleEl.classed(\"vzb-invisible\", false);\n }\n const sTitleContentON = !size.data.constant;\n const cTitleContentON = !color.data.constant;\n const sTitleText = sTitleEl.select(\"text\")\n // reset font size to remove jumpy measurement\n .style(\"font-size\", null)\n .text(\n (sTitleContentON ? this.localise(\"buttons/size\") + \": \" + (titleS ? titleS : this.strings.title.S) : \"\") +\n (compl.S ? \" · \" + compl.S : \"\") +\n (sTitleContentON && cTitleContentON ? \", \" : \"\") +\n (cTitleContentON ? this.localise(\"buttons/colors\") + \": \" + (titleC ? titleC : this.strings.title.C) : \"\") +\n (compl.C ? \" · \" + compl.C : \"\")\n );\n const sTitleWidth = sTitleText.node().getBBox().width;\n const remainigHeight = this.height - 30;\n const font = parseInt(sTitleText.style(\"font-size\")) * remainigHeight / sTitleWidth;\n sTitleText.style(\"font-size\", sTitleWidth > remainigHeight ? font + \"px\" : null);\n }\n\n processFrameData() {\n return this.__dataProcessed = this.model.dataArray;\n }\n\n _getTransition(duration) {\n return duration ? d3_transition()\n .duration(duration)\n .ease(d3_easeLinear) : d3_transition();\n } \n\n _bubblesInteract() {\n const _this = this;\n\n return {\n mouseover(event, d) {\n _this.hoverBubble = true;\n _this.MDL.highlighted.data.filter.set(d);\n _this._labels.showCloseCross(d, true);\n },\n\n mouseout(event, d) {\n _this.hoverBubble = false;\n _this.MDL.highlighted.data.filter.delete(d);\n //_this._setTooltip();\n _this._labels.showCloseCross(d, false);\n },\n\n click(event, d) {\n if (_this.draggingNow) return;\n // // const isSelected = d.isSelected;\n if (!isTrailBubble(d)) _this.MDL.selected.data.filter.toggle(d);\n //_this.MDL.selected.data.filter.toggle(d);\n // // //return to highlighted state\n // // if (!utils.isTouchDevice()) {\n // // if (isSelected) _this.model.marker.highlightMarker(d);\n // // _this.highlightDataPoints();\n }\n };\n }\n \n\n _updateMarkerSizeLimits() {\n this.services.layout.size;\n this.MDL.size.scale.domain;\n\n const {\n minRadiusPx,\n maxRadiusPx\n } = this.profileConstants;\n\n //transfer min max radius to size dialog via root ui observable (probably a cleaner way is possible)\n this.root.ui.minMaxRadius = {min: minRadiusPx, max: maxRadiusPx};\n \n const extent = this.MDL.size.scale.extent || [0, 1];\n \n let minArea = utils.radiusToArea(Math.max(maxRadiusPx * extent[0], minRadiusPx));\n let maxArea = utils.radiusToArea(Math.max(maxRadiusPx * extent[1], minRadiusPx));\n\n let range = minArea === maxArea? [minArea, maxArea] :\n d3_range(minArea, maxArea, (maxArea - minArea)/(this.sScale.domain().length - 1)).concat(maxArea);\n\n this.sScale.range(range);\n }\n\n _setTooltip(tooltipText, x, y, s, c, d) {\n if (tooltipText) {\n const labelValues = {};\n if (d) {\n labelValues.valueY = d[this._alias(\"y\")];\n labelValues.valueX = d[this._alias(\"x\")];\n labelValues.valueS = d.size;\n labelValues.valueC = d.color;\n labelValues.valueLST = d.size_label || null;\n labelValues.labelText = this.__labelWithoutFrame(d, this.localise);\n }\n\n const tooltipCache = {};\n tooltipCache.labelX0 = this.xScale.invert(x);\n tooltipCache.labelY0 = this.yScale.invert(y);\n tooltipCache.scaledS0 = s;\n tooltipCache.scaledC0 = null;\n\n this._labels.setTooltip(d, tooltipText, tooltipCache, labelValues);\n } else {\n this._labels.setTooltip();\n }\n }\n\n _getLabelText(d) {\n return this.KEYS.map(key => d.label[key]).join(\",\");\n //// + (this.model.ui.chart.timeInTrails && time && (this.model.time.start - this.model.time.end !== 0) ? \" \" + time : \"\");\n }\n\n _updateOpacity(selection) {\n //this.MDL.frame.value; //listen\n\n const highlightedFilter = this.MDL.highlighted.data.filter;\n const selectedFilter = this.MDL.selected.data.filter;\n\n this.__highlightedMarkers = new Map(highlightedFilter.markers);\n this.__selectedMarkers = new Map(selectedFilter.markers);\n this.__someSelected = this.__selectedMarkers.size != 0;\n this.__someHighlighted = this.__highlightedMarkers.size != 0;\n\n const _selection = selection || this.bubbles;\n if (_selection) _selection.style(\"opacity\", d => this._getBubbleOpacity(d, this.ui));\n }\n\n _getBubbleOpacity(d) { \n const ui = this.ui;\n\n if (this.__highlightedMarkers.has(d[Symbol.for(\"key\")])) return ui.opacityHighlight;\n if (isTrailBubble(d)) return ui.opacityRegular;\n if (this.__selectedMarkers.has(d[Symbol.for(\"key\")])) return ui.opacitySelect;\n\n if (this.__someSelected) return ui.opacitySelectDim;\n if (this.__someHighlighted) return ui.opacityHighlightDim;\n\n return ui.opacityRegular;\n }\n\n _setBubbleCrown(x, y, r, glow, skipInnerFill) {\n const bubbleCrown = this.DOM.bubbleCrown;\n if (x != null) {\n bubbleCrown.classed(\"vzb-hidden\", false);\n bubbleCrown.select(\".vzb-crown\")\n .attr(\"cx\", x)\n .attr(\"cy\", y)\n .attr(\"r\", r)\n .attr(\"fill\", skipInnerFill ? \"none\" : glow);\n bubbleCrown.selectAll(\".vzb-crown-glow\")\n .attr(\"cx\", x)\n .attr(\"cy\", y)\n .attr(\"r\", r + 10)\n .attr(\"stroke\", glow);\n\n } else {\n bubbleCrown.classed(\"vzb-hidden\", true);\n }\n\n }\n\n /*\n * Shows and hides axis projections\n */\n _axisProjections(d) {\n const {\n projectionX,\n projectionY,\n xAxisEl,\n yAxisEl\n } = this.DOM;\n\n if (d != null) {\n\n const valueY = d[this._alias(\"y\")];\n const valueX = d[this._alias(\"x\")];\n const radius = d.r;\n\n //if (!valueY && valueY !== 0 || !valueX && valueX !== 0 || !valueS && valueS !== 0) return;\n\n if (this.ui.whenHovering.showProjectionLineX\n && this.xScale(valueX) > 0 && this.xScale(valueX) < this.width\n && (this.yScale(valueY) + radius) < this.height) {\n projectionX\n .style(\"opacity\", 1)\n .attr(\"y2\", this.yScale(valueY) + radius)\n .attr(\"x1\", this.xScale(valueX))\n .attr(\"x2\", this.xScale(valueX));\n }\n\n if (this.ui.whenHovering.showProjectionLineY\n && this.yScale(valueY) > 0 && this.yScale(valueY) < this.height\n && (this.xScale(valueX) - radius) > 0) {\n projectionY\n .style(\"opacity\", 1)\n .attr(\"y1\", this.yScale(valueY))\n .attr(\"y2\", this.yScale(valueY))\n .attr(\"x1\", this.xScale(valueX) - radius);\n }\n\n if (this.ui.whenHovering.higlightValueX) xAxisEl.call(\n this.xAxis.highlightValue(valueX)\n );\n\n if (this.ui.whenHovering.higlightValueY) yAxisEl.call(\n this.yAxis.highlightValue(valueY)\n );\n\n\n } else {\n\n projectionX.style(\"opacity\", 0);\n projectionY.style(\"opacity\", 0);\n xAxisEl.call(this.xAxis.highlightValue(\"none\"));\n yAxisEl.call(this.yAxis.highlightValue(\"none\"));\n\n }\n\n }\n\n /*\n * Highlights all hovered bubbles\n */\n _highlightDataPoints() {\n const _this = this;\n\n const highlightedFilter = this.MDL.highlighted.data.filter;\n const selectedFilter = this.MDL.selected.data.filter;\n this.someHighlighted = highlightedFilter.any();\n\n //this.updateBubbleOpacity();\n const trailShow = this.MDL.trail.show;\n const trailStarts = this.MDL.trail.starts;\n const trailGroupDim = this.MDL.trail.groupDim;\n\n if (highlightedFilter.markers.size === 1) {\n const highlightedKey = highlightedFilter.markers.keys().next().value;\n const d = Object.assign(this.model.dataMap.getByStr(highlightedKey));\n const selectedKey = d[Symbol.for(\"trailHeadKey\")] || d[Symbol.for(\"key\")];\n\n const x = _this.xScale(d[_this._alias(\"x\")]);\n const y = _this.yScale(d[_this._alias(\"y\")]);\n const s = d.r;\n const c = _this.__getColor(selectedKey, d.color);\n let entityOutOfView = false;\n\n ////const titles = _this._formatSTitleValues(values.size[utils.getKey(d, dataKeys.size)], values.color[utils.getKey(d, dataKeys.color)]);\n ////_this._updateSTitle(titles[0], titles[1]);\n if (x + s < 0 || x - s > this.width || y + s < 0 || y - s > this.height) {\n entityOutOfView = true;\n }\n\n //show tooltip\n // const trailShow = this.MDL.trail.show;\n // const trailStarts = this.MDL.trail.starts;\n // const trailGroupDim = this.MDL.trail.groupDim;\n const isSelected = selectedFilter.has(selectedKey);\n const isTailTrail = !(trailStarts[selectedKey] - d[trailGroupDim]);\n const isTrail = isTrailBubble(d);\n\n let text = \"\";\n \n text = isSelected ? \n !trailShow || isTailTrail || (!isTrail && !this.hoverBubble) ? \"\": this.localise(d[trailGroupDim])\n : \n this.__labelWithoutFrame(d);\n \n _this._labels.highlight(null, false);\n _this._labels.highlight({ [Symbol.for(\"key\")]: selectedKey }, true);\n if (isSelected) {\n const skipCrownInnerFill = !isTrail;\n //!d.trailStartTime || d.trailStartTime == _this.model.time.formatDate(_this.time);\n _this._setBubbleCrown(x, y, s, c, skipCrownInnerFill);\n }\n\n if (!entityOutOfView) {\n _this._axisProjections(d);\n }\n\n //set tooltip and show axis projections\n if (text && !entityOutOfView) {\n _this._setTooltip(text, x, y, s + 3, c, d);\n }\n\n // // const selectedData = utils.find(_this.model.marker.select, f => utils.getKey(f, KEYS) == d[KEY]);\n // // if (selectedData) {\n // // const clonedSelectedData = utils.clone(selectedData);\n // // //change opacity to OPACITY_HIGHLT = 1.0;\n // // clonedSelectedData.opacity = 1.0;\n // // _this._trails.run([\"opacityHandler\"], clonedSelectedData);\n // // }\n } else {\n this._axisProjections();\n ////this._trails.run([\"opacityHandler\"]);\n //hide tooltip\n //this._updateSTitle();\n this._setTooltip();\n this._setBubbleCrown();\n this._labels.highlight(null, false);\n }\n\n }\n\n _blinkSuperHighlighted() {\n if (!this.MDL.superHighlighted) return;\n\n const superHighlightFilter = this.MDL.superHighlighted.data.filter;\n\n this.bubbles\n .classed(\"vzb-super-highlighted\", d => superHighlightFilter.has(d));\n }\n\n _selectDataPoints() {\n const _this = this;\n const selectedFilter = this.MDL.selected.data.filter;\n \n if (utils.isTouchDevice()) {\n _this.MDL.highlighted.data.filter.clear();\n _this._labels.showCloseCross(null, false);\n } else {\n //hide tooltip\n _this._setTooltip();\n ////_this._setBubbleCrown();\n }\n\n // utils.forEach(_this.bubbles.data(), d => {\n // d.isSelected = _this.model.marker.isSelected(d);\n // });\n\n _this.someSelected = selectedFilter.any();\n _this.nonSelectedOpacityZero = false;\n\n }\n\n _setupCursorMode() {\n const svg = this.DOM.chartSvgAll;\n if (this.ui.cursorMode === \"plus\") {\n svg.classed(\"vzb-zoomin\", true);\n svg.classed(\"vzb-zoomout\", false);\n svg.classed(\"vzb-panhand\", false);\n } else if (this.ui.cursorMode === \"minus\") {\n svg.classed(\"vzb-zoomin\", false);\n svg.classed(\"vzb-zoomout\", true);\n svg.classed(\"vzb-panhand\", false);\n } else if (this.ui.cursorMode === \"hand\") {\n svg.classed(\"vzb-zoomin\", false);\n svg.classed(\"vzb-zoomout\", false);\n svg.classed(\"vzb-panhand\", true);\n } else {\n svg.classed(\"vzb-zoomin\", false);\n svg.classed(\"vzb-zoomout\", false);\n svg.classed(\"vzb-panhand\", false);\n }\n }\n\n updateDecorations(){\n this.services.layout.size;\n this.MDL.x.scale.zoomed;\n this.MDL.y.scale.zoomed;\n this.decorations.update.bind(this)(this._getDuration());\n }\n\n _updateLabel(d, x, y, duration, showhide, hidden) {\n const selectedMarkers = this.MDL.selected.data.filter.markers;\n const key = d[Symbol.for(\"key\")];\n // only for selected markers\n if (selectedMarkers.has(key)) {\n const trail = this.MDL.trail;\n \n const cache = {};\n\n let labelText = \"\";\n\n //if (showhide && hidden && trail.show && trailStartTime && (trailStartTime < _this.time)) showhide = false;\n if (hidden && !trail.show) showhide = true;\n\n if (trail.show && key in trail.starts) {\n const trailStart = trail.starts[key];\n //console.log(\"trailstart\", trailStart)\n // if this bubble is trail start bubble\n if (trailStart >= this.MDL.frame.value || showhide) {\n const trailData = this.model.getDataMapByFrameValue(trailStart).getByStr(key);\n \n cache.labelText = labelText = this.__labelWithFrame(trailData);\n cache.labelX0 = trailData[this._alias(\"x\")];\n cache.labelY0 = trailData[this._alias(\"y\")];\n cache.scaledC0 = trailData.color != null ? this.cScale(trailData.color) : COLOR_WHITEISH,\n cache.scaledS0 = (trailData.size || trailData.size === 0) ? utils.areaToRadius(this.sScale(trailData.size)) : null;\n cache.valueS0 = trailData.size;\n trailData.hidden = hidden;\n this._labels.updateLabel(trailData, cache, cache.labelX0, cache.labelY0, trailData.size, trailData.color, labelText, trailData.size_label, duration, showhide);\n }\n } else {\n cache.labelText = labelText = this.__labelWithoutFrame(d);\n cache.labelX0 = x;\n cache.labelY0 = y;\n cache.scaledC0 = d.color != null ? this.cScale(d.color) : COLOR_WHITEISH,\n cache.scaledS0 = (d.size || d.size === 0) ? utils.areaToRadius(this.sScale(d.size)) : null;\n cache.valueS0 = d.size;\n d.hidden = hidden;\n this._labels.updateLabel(d, cache, x, y, d.size, d.color, labelText, d.size_label, duration, showhide);\n }\n }\n }\n \n _updateLabels(duration) {\n //console.log(\"updateLabels\");\n\n const selectedFilter = this.MDL.selected.data.filter;\n const trail = this.MDL.trail;\n\n for (const key of selectedFilter.markers.keys()) {\n if (!(key in trail.starts))\n continue;\n\n if (!this._labels.cached[key]) this._labels.cached[key] = {};\n const cache = this._labels.cached[key];\n\n const datamap = (trail.show ? this.model.getDataMapByFrameValue(trail.starts[key]) : this.model.dataMap);\n if (!datamap.hasByStr(key))\n continue;\n\n const d = datamap.getByStr(key);\n \n cache.labelText = this[(trail.show && this.ui.timeInTrails ? \"__labelWithFrame\" : \"__labelWithoutFrame\")](d);\n cache.labelX0 = d[this._alias(\"x\")];\n cache.labelY0 = d[this._alias(\"y\")];\n cache.scaledC0 = d.color != null ? this.cScale(d.color) : COLOR_WHITEISH,\n cache.scaledS0 = (d.size || d.size === 0) ? utils.areaToRadius(this.sScale(d.size)) : null;\n cache.valueS0 = d.size;\n cache.initTextBBox = null;\n cache.initFontSize = null;\n this._labels.updateLabel({ [Symbol.for(\"key\")]: key }, null, null, null, null, null, null, d.size_label, duration);\n }\n }\n\n __labelWithoutFrame(d) {\n if (typeof d.label == \"object\") \n return Object.entries(d.label)\n .filter(entry => entry[0] != this.MDL.frame.data.concept)\n .map(entry => utils.isNumber(entry[1]) ? (entry[0] + \": \" + entry[1]) : entry[1])\n .join(\", \");\n if (d.label != null) return \"\" + d.label;\n return d[Symbol.for(\"key\")];\n }\n\n __labelWithFrame(d) {\n const frameConcept = this.MDL.frame.data.concept;\n return this.__labelWithoutFrame(d) + \" \" + this.localise(d && d.label && d.label[frameConcept] || d && d.frame || this.MDL.frame.value);\n }\n\n _alias(enc) {\n return this.state.alias?.[enc] || enc;\n }\n}\n\n_VizabiBubbleChart.DEFAULT_UI = {\n show_ticks: true,\n showForecast: false,\n showForecastOverlay: true,\n pauseBeforeForecast: true,\n opacityHighlight: 1.0,\n opacitySelect: 1.0,\n opacityHighlightDim: 0.1,\n opacitySelectDim: 0.3,\n opacityRegular: 0.5,\n timeInBackground: true,\n timeInTrails: true,\n lockNonSelected: 0,\n numberFormatSIPrefix: true,\n panWithArrow: false,\n adaptMinMaxZoom: false,\n cursorMode: \"arrow\",\n zoomOnScrolling: true,\n decorations: {\n enabled: true,\n xAxisGroups: null //left to be set by external page\n },\n superhighlightOnMinimapHover: true,\n whenHovering: {\n showProjectionLineX: true,\n showProjectionLineY: true,\n higlightValueX: true,\n higlightValueY: true\n },\n labels: {\n enabled: true,\n dragging: true,\n removeLabelBox: false\n },\n margin: {\n left: 0,\n top: 0\n }\n};\n\n//export default BubbleChart;\nexport const VizabiBubbleChart = decorate(_VizabiBubbleChart, {\n \"MDL\": computed,\n \"axisTitleComplimentStrings\": observable,\n \"cScale\": computed\n});\n\nChart.add(\"bubblechart\", VizabiBubbleChart);\n","import \"./styles.scss\";\nimport { \n BaseComponent,\n TimeSlider,\n DataNotes,\n DataWarning,\n ErrorMessage,\n SpaceConfig,\n LocaleService,\n LayoutService,\n CapitalVizabiService,\n TreeMenu,\n SteppedSlider,\n Dialogs,\n ButtonList,\n Repeater,\n versionInfo\n} from \"VizabiSharedComponents\";\nimport {VizabiBubbleChart} from \"./component.js\";\n\nexport default class BubbleChart extends BaseComponent {\n\n constructor(config){\n\n const markerName = config.options?.markerNames?.bubble || \"bubble\";\n const fullMarker = config.model.markers[markerName];\n config.Vizabi.utils.applyDefaults(fullMarker.config, BubbleChart.DEFAULT_CORE(markerName)); \n\n const frameType = config.Vizabi.stores.encodings.modelTypes.frame;\n const { marker, splashMarker } = frameType.splashMarker(fullMarker);\n \n config.model.markers[markerName] = marker;\n\n config.name = \"bubblechart\";\n\n config.subcomponents = [{\n type: Repeater,\n placeholder: \".vzb-repeater\",\n model: marker,\n options: {\n repeatedComponent: VizabiBubbleChart,\n repeatedComponentCssClass: \"vzb-bubblechart\"\n },\n name: \"chart\",\n },{\n type: TimeSlider,\n placeholder: \".vzb-timeslider\",\n model: marker,\n name: \"time-slider\"\n },{\n type: SteppedSlider,\n placeholder: \".vzb-speedslider\",\n model: marker,\n name: \"speed-slider\"\n },{\n type: TreeMenu,\n placeholder: \".vzb-treemenu\",\n model: marker,\n name: \"tree-menu\"\n },{\n type: DataWarning,\n placeholder: \".vzb-datawarning\",\n options: {button: \".vzb-datawarning-button\"},\n model: marker,\n name: \"data-warning\"\n },{\n type: DataNotes,\n placeholder: \".vzb-datanotes\",\n model: marker\n },{\n type: Dialogs,\n placeholder: \".vzb-dialogs\",\n model: marker,\n name: \"dialogs\"\n },{\n type: ButtonList,\n placeholder: \".vzb-buttonlist\",\n model: marker,\n name: \"buttons\"\n },{\n type: SpaceConfig,\n placeholder: \".vzb-spaceconfig\",\n options: {button: \".vzb-spaceconfig-button\"},\n model: marker,\n name: \"space-config\"\n },{\n type: ErrorMessage,\n placeholder: \".vzb-errormessage\",\n model: marker,\n name: \"error-message\"\n }];\n\n config.template = `\n <div class=\"vzb-repeater\"></div>\n <div class=\"vzb-animationcontrols\">\n <div class=\"vzb-timeslider\"></div>\n <div class=\"vzb-speedslider\"></div>\n </div>\n <div class=\"vzb-sidebar\">\n <div class=\"vzb-dialogs\"></div>\n <div class=\"vzb-buttonlist\"></div>\n </div>\n <div class=\"vzb-treemenu\"></div>\n <div class=\"vzb-datawarning\"></div>\n <div class=\"vzb-spaceconfig\"></div>\n <div class=\"vzb-datanotes\"></div>\n <div class=\"vzb-errormessage\"></div>\n `;\n\n config.services = {\n Vizabi: new CapitalVizabiService({Vizabi: config.Vizabi}),\n locale: new LocaleService(config.locale),\n layout: new LayoutService(config.layout)\n };\n\n super(config);\n\n this.splashMarker = splashMarker;\n }\n}\n\nBubbleChart.DEFAULT_UI = {\n chart: {\n }\n};\n\nBubbleChart.mainComponent = VizabiBubbleChart;\n\nBubbleChart.DEFAULT_CORE = (markerName) => ({\n requiredEncodings: [\"x\", \"y\", \"size\"],\n encoding: {\n \"selected\": {\n modelType: \"selection\",\n data: { \n filter: { \n ref: `markers.${markerName}.encoding.trail.data.filter`\n }\n }\n },\n \"highlighted\": { modelType: \"selection\" },\n \"superhighlighted\": { modelType: \"selection\" },\n \"x\": { },\n \"y\": { },\n \"order\": { modelType: \"order\",\n data: { \n ref: `markers.${markerName}.encoding.size.data.config`\n }\n },\n \"size\": {\n scale: {\n modelType: \"size\",\n range: [0, 50]\n }\n },\n \"color\": { scale: { modelType: \"color\" } },\n \"label\": { data: { modelType: \"entityPropertyDataConfig\" } },\n \"frame\": { modelType: \"frame\" },\n \"trail\": { modelType: \"trail\" }, \n \"size_label\": {\n data: {\n constant: \"_default\"\n },\n scale: {\n modelType: \"size\",\n allowedTypes: [\"linear\", \"log\", \"genericLog\", \"pow\", \"point\", \"ordinal\"]\n }\n },\n \"repeat\": {\n modelType: \"repeat\",\n allowEnc: [\"y\", \"x\"]\n }\n }\n});\n\nBubbleChart.versionInfo = { version: __VERSION, build: __BUILD, package: __PACKAGE_JSON_FIELDS, sharedComponents: versionInfo};\n"],"names":["d3_drag","d3_zoom","d3_pointer","d3_select","d3_zoomIdentity","utils","d3_extent","d3_zoomTransform","Utils","d3_min","d3_max","Icons","Chart","Labels","DateTimeBackground","axisSmart","runInAction","action","d3_transition","d3_easeLinear","d3_range","decorate","computed","observable","BaseComponent","Repeater","TimeSlider","SteppedSlider","TreeMenu","DataWarning","DataNotes","Dialogs","ButtonList","SpaceConfig","ErrorMessage","CapitalVizabiService","LocaleService","LayoutService","versionInfo"],"mappings":"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"}
1
+ {"version":3,"file":"bubblechart.js","sources":["../node_modules/@vizabi/shared-components/build/VizabiSharedComponents.js","../src/panzoom.js","../src/decorations.js","../src/component.js","../src/index.js"],"sourcesContent":["// https://github.com/vizabi/@vizabi/shared-components#readme v0.0.3 build 1680083553567 Copyright 2023 Gapminder Foundation and contributors\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('d3'), require('mobx')) :\n typeof define === 'function' && define.amd ? define(['exports', 'd3', 'mobx'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.VizabiSharedComponents = {}, global.d3, global.mobx));\n})(this, (function (exports, d3, mobx) { 'use strict';\n\n function _interopNamespace(e) {\n if (e && e.__esModule) return e;\n var n = Object.create(null);\n if (e) {\n Object.keys(e).forEach(function (k) {\n if (k !== 'default') {\n var d = Object.getOwnPropertyDescriptor(e, k);\n Object.defineProperty(n, k, d.get ? d : {\n enumerable: true,\n get: function () { return e[k]; }\n });\n }\n });\n }\n n[\"default\"] = e;\n return Object.freeze(n);\n }\n\n var d3__namespace = /*#__PURE__*/_interopNamespace(d3);\n\n const ICON_PAINTBRUSH =\n '<svg class=\"vzb-icon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1792 1792\"><path d=\"M1615 0q70 0 122.5 46.5t52.5 116.5q0 63-45 151-332 629-465 752-97 91-218 91-126 0-216.5-92.5t-90.5-219.5q0-128 92-212l638-579q59-54 130-54zm-909 1034q39 76 106.5 130t150.5 76l1 71q4 213-129.5 347t-348.5 134q-123 0-218-46.5t-152.5-127.5-86.5-183-29-220q7 5 41 30t62 44.5 59 36.5 46 17q41 0 55-37 25-66 57.5-112.5t69.5-76 88-47.5 103-25.5 125-10.5z\"/></svg>';\n const ICON_SEARCH =\n '<svg class=\"vzb-icon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1792 1792\"><path d=\"M1216 832q0-185-131.5-316.5t-316.5-131.5-316.5 131.5-131.5 316.5 131.5 316.5 316.5 131.5 316.5-131.5 131.5-316.5zm512 832q0 52-38 90t-90 38q-54 0-90-38l-343-342q-179 124-399 124-143 0-273.5-55.5t-225-150-150-225-55.5-273.5 55.5-273.5 150-225 225-150 273.5-55.5 273.5 55.5 225 150 150 225 55.5 273.5q0 220-124 399l343 343q37 37 37 90z\"/></svg>';\n const ICON_CIRCLE =\n '<svg class=\"vzb-icon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1792 1792\"><path d=\"M1664 896q0 209-103 385.5t-279.5 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103 385.5 103 279.5 279.5 103 385.5z\"/></svg>';\n const ICON_EXPAND =\n '<svg class=\"vzb-icon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1792 1792\"><path d=\"M883 1056q0 13-10 23l-332 332 144 144q19 19 19 45t-19 45-45 19h-448q-26 0-45-19t-19-45v-448q0-26 19-45t45-19 45 19l144 144 332-332q10-10 23-10t23 10l114 114q10 10 10 23zm781-864v448q0 26-19 45t-45 19-45-19l-144-144-332 332q-10 10-23 10t-23-10l-114-114q-10-10-10-23t10-23l332-332-144-144q-19-19-19-45t19-45 45-19h448q26 0 45 19t19 45z\"/></svg>';\n const ICON_ASTERISK =\n '<svg class=\"vzb-icon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1792 1792\"><path d=\"M1546 1050q46 26 59.5 77.5t-12.5 97.5l-64 110q-26 46-77.5 59.5t-97.5-12.5l-266-153v307q0 52-38 90t-90 38h-128q-52 0-90-38t-38-90v-307l-266 153q-46 26-97.5 12.5t-77.5-59.5l-64-110q-26-46-12.5-97.5t59.5-77.5l266-154-266-154q-46-26-59.5-77.5t12.5-97.5l64-110q26-46 77.5-59.5t97.5 12.5l266 153v-307q0-52 38-90t90-38h128q52 0 90 38t38 90v307l266-153q46-26 97.5-12.5t77.5 59.5l64 110q26 46 12.5 97.5t-59.5 77.5l-266 154z\"/></svg>';\n const ICON_TRAILS =\n '<svg class=\"vzb-icon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1792 1792\"><path d=\"M 1381.375 17.1875 C 1375.7825 17.176804 1370.1216 17.316078 1364.4375 17.5625 C 1273.4913 21.505489 1197.0982 57.199956 1135.2188 124.6875 C 1076.5961 188.62338 1047.6964 263.96059 1048.5312 350.65625 L 835.71875 433 C 797.77288 391.67699 749.96961 361.96416 692.3125 343.84375 C 604.96227 316.39162 520.95691 323.70366 440.25 365.8125 C 359.5432 407.92133 305.45225 472.64985 278 560 C 250.54783 647.35004 257.89117 731.38694 300 812.09375 C 342.10886 892.80075 406.83755 946.89147 494.1875 974.34375 C 576.9404 1000.3512 657.38873 994.58645 735.5625 957.09375 L 959.28125 1171.4375 L 972.375 1184.4062 C 966.2931 1198.3454 961.94845 1209.2226 959.34375 1217.0625 C 956.73915 1224.9024 953.7186 1236.224 950.25 1251.0312 L 711.03125 1285.1875 C 669.59175 1209.0324 607.72526 1157.2863 525.40625 1129.9375 C 438.51381 1101.0693 354.34933 1107.021 272.96875 1147.8125 C 191.58796 1188.6039 136.49335 1252.4513 107.625 1339.3438 C 78.756758 1426.2362 84.708528 1510.3694 125.5 1591.75 C 166.29138 1673.1307 230.1387 1728.2567 317.03125 1757.125 C 403.92369 1785.9933 488.05682 1780.0415 569.4375 1739.25 C 650.81799 1698.4587 705.94425 1634.6111 734.8125 1547.7188 C 737.41718 1539.8788 740.43763 1528.5573 743.90625 1513.75 L 983.125 1479.5938 C 1024.5644 1555.7487 1086.4309 1607.4948 1168.75 1634.8438 C 1255.6425 1663.7119 1339.8069 1657.7603 1421.1875 1616.9688 C 1502.5682 1576.1772 1557.6631 1512.3299 1586.5312 1425.4375 C 1615.3996 1338.5451 1609.4477 1254.4119 1568.6562 1173.0312 C 1527.8647 1091.6506 1464.0174 1036.5244 1377.125 1007.6562 C 1294.9259 980.34721 1214.5066 984.74084 1135.8438 1020.8125 L 1120.2812 1005.9062 L 898.0625 785.96875 C 902.79653 774.40321 906.33847 765.03422 908.5 758.15625 C 920.42249 720.22 925.7916 682.90194 924.59375 646.21875 L 1130.9688 566.34375 C 1141.2015 577.59424 1149.3796 586.0106 1155.4688 591.59375 C 1222.9566 653.47326 1302.1474 682.44278 1393.0938 678.5 C 1484.04 674.55731 1560.4642 638.83151 1622.3438 571.34375 C 1684.2232 503.85591 1713.1929 424.6337 1709.25 333.6875 C 1705.3072 242.74139 1669.5816 166.34819 1602.0938 104.46875 C 1538.8238 46.456824 1465.2625 17.347946 1381.375 17.1875 z \"/></svg>';\n const ICON_LOCK =\n '<svg class=\"vzb-icon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1792 1792\"><path d=\"M640 768h512v-192q0-106-75-181t-181-75-181 75-75 181v192zm832 96v576q0 40-28 68t-68 28h-960q-40 0-68-28t-28-68v-576q0-40 28-68t68-28h32v-192q0-184 132-316t316-132 316 132 132 316v192h32q40 0 68 28t28 68z\"/></svg>';\n const ICON_UNLOCK =\n '<svg class=\"vzb-icon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1792 1792\"><path d=\"M1376 768q40 0 68 28t28 68v576q0 40-28 68t-68 28h-960q-40 0-68-28t-28-68v-576q0-40 28-68t68-28h32v-320q0-185 131.5-316.5t316.5-131.5 316.5 131.5 131.5 316.5q0 26-19 45t-45 19h-64q-26 0-45-19t-19-45q0-106-75-181t-181-75-181 75-75 181v320h736z\"/></svg>';\n const ICON_UNEXPAND =\n '<svg class=\"vzb-icon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1792 1792\"><path d=\"M896 960v448q0 26-19 45t-45 19-45-19l-144-144-332 332q-10 10-23 10t-23-10l-114-114q-10-10-10-23t10-23l332-332-144-144q-19-19-19-45t19-45 45-19h448q26 0 45 19t19 45zm755-672q0 13-10 23l-332 332 144 144q19 19 19 45t-19 45-45 19h-448q-26 0-45-19t-19-45v-448q0-26 19-45t45-19 45 19l144 144 332-332q10-10 23-10t23 10l114 114q10 10 10 23z\"/></svg>';\n const ICON_AXES =\n '<svg class=\"vzb-icon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 500 500\"><path d=\"M430.25,379.655l-75.982-43.869v59.771H120.73V151.966h59.774l-43.869-75.983L92.767,0L48.898,75.983L5.029,151.966h59.775 v271.557c0,15.443,12.52,27.965,27.963,27.965h261.5v59.773l75.982-43.869l75.982-43.867L430.25,379.655z\"/></svg>';\n const ICON_GEAR =\n '<svg class=\"vzb-icon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1792 1792\"><path d=\"M1152 896q0-106-75-181t-181-75-181 75-75 181 75 181 181 75 181-75 75-181zm512-109v222q0 12-8 23t-20 13l-185 28q-19 54-39 91 35 50 107 138 10 12 10 25t-9 23q-27 37-99 108t-94 71q-12 0-26-9l-138-108q-44 23-91 38-16 136-29 186-7 28-36 28h-222q-14 0-24.5-8.5t-11.5-21.5l-28-184q-49-16-90-37l-141 107q-10 9-25 9-14 0-25-11-126-114-165-168-7-10-7-23 0-12 8-23 15-21 51-66.5t54-70.5q-27-50-41-99l-183-27q-13-2-21-12.5t-8-23.5v-222q0-12 8-23t19-13l186-28q14-46 39-92-40-57-107-138-10-12-10-24 0-10 9-23 26-36 98.5-107.5t94.5-71.5q13 0 26 10l138 107q44-23 91-38 16-136 29-186 7-28 36-28h222q14 0 24.5 8.5t11.5 21.5l28 184q49 16 90 37l142-107q9-9 24-9 13 0 25 10 129 119 165 170 7 8 7 22 0 12-8 23-15 21-51 66.5t-54 70.5q26 50 41 98l183 28q13 2 21 12.5t8 23.5z\"/></svg>';\n const ICON_STACK =\n '<svg class=\"vzb-icon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 54.849 54.849\"><g><path d=\"M54.497,39.614l-10.363-4.49l-14.917,5.968c-0.537,0.214-1.165,0.319-1.793,0.319c-0.627,0-1.254-0.104-1.79-0.318 l-14.921-5.968L0.351,39.614c-0.472,0.203-0.467,0.524,0.01,0.716L26.56,50.81c0.477,0.191,1.251,0.191,1.729,0L54.488,40.33 C54.964,40.139,54.969,39.817,54.497,39.614z\"/><path d=\"M54.497,27.512l-10.364-4.491l-14.916,5.966c-0.536,0.215-1.165,0.321-1.792,0.321c-0.628,0-1.256-0.106-1.793-0.321 l-14.918-5.966L0.351,27.512c-0.472,0.203-0.467,0.523,0.01,0.716L26.56,38.706c0.477,0.19,1.251,0.19,1.729,0l26.199-10.479 C54.964,28.036,54.969,27.716,54.497,27.512z\"/><path d=\"M0.361,16.125l13.662,5.465l12.537,5.015c0.477,0.191,1.251,0.191,1.729,0l12.541-5.016l13.658-5.463 c0.477-0.191,0.48-0.511,0.01-0.716L28.277,4.048c-0.471-0.204-1.236-0.204-1.708,0L0.351,15.41 C-0.121,15.614-0.116,15.935,0.361,16.125z\"/></g></svg>';\n const ICON_DRAG =\n '<svg class=\"vzb-icon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1792 1792\"><path d=\"M896 384q-53 0-90.5 37.5t-37.5 90.5v128h-32v-93q0-48-32-81.5t-80-33.5q-46 0-79 33t-33 79v429l-32-30v-172q0-48-32-81.5t-80-33.5q-46 0-79 33t-33 79v224q0 47 35 82l310 296q39 39 39 102 0 26 19 45t45 19h640q26 0 45-19t19-45v-25q0-41 10-77l108-436q10-36 10-77v-246q0-48-32-81.5t-80-33.5q-46 0-79 33t-33 79v32h-32v-125q0-40-25-72.5t-64-40.5q-14-2-23-2-46 0-79 33t-33 79v128h-32v-122q0-51-32.5-89.5t-82.5-43.5q-5-1-13-1zm0-128q84 0 149 50 57-34 123-34 59 0 111 27t86 76q27-7 59-7 100 0 170 71.5t70 171.5v246q0 51-13 108l-109 436q-6 24-6 71 0 80-56 136t-136 56h-640q-84 0-138-58.5t-54-142.5l-308-296q-76-73-76-175v-224q0-99 70.5-169.5t169.5-70.5q11 0 16 1 6-95 75.5-160t164.5-65q52 0 98 21 72-69 174-69z\"/></svg>';\n const ICON_WARN =\n '<svg class=\"vzb-icon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512.209 512.209\"><path d=\"M507.345,439.683L288.084,37.688c-3.237-5.899-7.71-10.564-13.429-13.988c-5.705-3.427-11.893-5.142-18.554-5.142 s-12.85,1.718-18.558,5.142c-5.708,3.424-10.184,8.089-13.418,13.988L4.859,439.683c-6.663,11.998-6.473,23.989,0.57,35.98 c3.239,5.517,7.664,9.897,13.278,13.128c5.618,3.237,11.66,4.859,18.132,4.859h438.529c6.479,0,12.519-1.622,18.134-4.859 c5.62-3.23,10.038-7.611,13.278-13.128C513.823,463.665,514.015,451.681,507.345,439.683z M292.655,411.132 c0,2.662-0.91,4.897-2.71,6.704c-1.807,1.811-3.949,2.71-6.427,2.71h-54.816c-2.474,0-4.616-0.899-6.423-2.71 c-1.809-1.807-2.713-4.042-2.713-6.704v-54.248c0-2.662,0.905-4.897,2.713-6.704c1.807-1.811,3.946-2.71,6.423-2.71h54.812 c2.479,0,4.62,0.899,6.428,2.71c1.803,1.807,2.71,4.042,2.71,6.704v54.248H292.655z M292.088,304.357 c-0.198,1.902-1.198,3.47-3.001,4.709c-1.811,1.238-4.046,1.854-6.711,1.854h-52.82c-2.663,0-4.947-0.62-6.849-1.854 c-1.908-1.243-2.858-2.807-2.858-4.716l-4.853-130.47c0-2.667,0.953-4.665,2.856-5.996c2.474-2.093,4.758-3.14,6.854-3.14h62.809 c2.098,0,4.38,1.043,6.854,3.14c1.902,1.331,2.851,3.14,2.851,5.424L292.088,304.357z\"/></svg>';\n const ICON_PIN =\n '<svg class=\"vzb-icon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1792 1792\"><path d=\"M800 864v-448q0-14-9-23t-23-9-23 9-9 23v448q0 14 9 23t23 9 23-9 9-23zm672 352q0 26-19 45t-45 19h-429l-51 483q-2 12-10.5 20.5t-20.5 8.5h-1q-27 0-32-27l-76-485h-404q-26 0-45-19t-19-45q0-123 78.5-221.5t177.5-98.5v-512q-52 0-90-38t-38-90 38-90 90-38h640q52 0 90 38t38 90-38 90-90 38v512q99 0 177.5 98.5t78.5 221.5z\"/></svg>';\n const ICON_QUESTION =\n '<svg class=\"vzb-icon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"17 17 483 483\"> <circle stroke-width=\"40\" cx=\"258.57\" cy=\"258.57\" r=\"220\"/> <path d=\"M299.756,413.021v-61.78c0-3.003-0.966-5.472-2.896-7.401s-4.398-2.896-7.401-2.896h-61.78 c-3.003,0-5.47,0.965-7.4,2.896c-1.932,1.931-2.896,4.398-2.896,7.401v61.78c0,3.002,0.965,5.47,2.896,7.399 c1.931,1.931,4.396,2.896,7.4,2.896h61.779c3.003,0,5.472-0.967,7.401-2.896S299.756,416.021,299.756,413.021z\"/> <path d=\"M382.128,196.789c0-18.877-5.952-36.36-17.856-52.449c-11.905-16.088-26.762-28.53-44.566-37.325 c-17.804-8.795-36.037-13.192-54.7-13.192c-52.127,0-91.919,22.845-119.377,68.537c-3.218,5.148-2.359,9.653,2.574,13.514 l42.474,32.177c1.502,1.287,3.54,1.931,6.114,1.931c3.433,0,6.115-1.287,8.044-3.861c11.369-14.587,20.594-24.454,27.672-29.603 c7.294-5.148,16.519-7.723,27.673-7.723c10.297,0,19.468,2.789,27.513,8.366c8.044,5.578,12.065,11.906,12.065,18.985 c0,8.151-2.146,14.694-6.437,19.628c-4.29,4.934-11.583,9.76-21.881,14.479c-13.514,6.006-25.901,15.284-37.164,27.834 c-11.263,12.549-16.894,26.01-16.894,40.382v11.583c0,3.004,0.965,5.472,2.896,7.401c1.931,1.93,4.396,2.896,7.4,2.896h61.779 c3.003,0,5.471-0.965,7.401-2.896c1.93-1.931,2.896-4.397,2.896-7.401c0-4.075,2.306-9.385,6.917-15.928 c4.612-6.542,10.458-11.852,17.537-15.927c6.863-3.861,12.119-6.918,15.768-9.171c3.646-2.252,8.579-6.008,14.802-11.263 c6.22-5.255,10.993-10.402,14.317-15.443c3.325-5.042,6.328-11.53,9.01-19.467C380.788,214.916,382.128,206.228,382.128,196.789z\"/> </svg>';\n const ICON_CLOSE =\n '<svg class=\"vzb-icon vzb-icon-pin\" viewBox=\"-150 -250 1792 1792\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M1149 414q0 26 -19 45l-181 181l181 181q19 19 19 45q0 27 -19 46l-90 90q-19 19 -46 19q-26 0 -45 -19l-181 -181l-181 181q-19 19 -45 19q-27 0 -46 -19l-90 -90q-19 -19 -19 -46q0 -26 19 -45l181 -181l-181 -181q-19 -19 -19 -45q0 -27 19 -46l90 -90q19 -19 46 -19 q26 0 45 19l181 181l181 -181q19 -19 45 -19q27 0 46 19l90 90q19 19 19 46z\"/></svg>';\n const ICON_PRESENTATION =\n '<svg class=\"vzb-icon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"><path id=\"flip-chart-1\" d=\"M334.549,393.834l58.607,68.666h-45.096l-58.709-68.666H334.549z M240.333,462.5h34.333v-68.666h-34.333 V462.5z M360.5,153.5h-34.334v137.334H360.5V153.5z M121.566,462.5h45.113l58.709-68.666h-45.197L121.566,462.5z M206,273.666 h-34.333v17.168H206V273.666z M257.5,239.333h-34.333v51.5H257.5V239.333z M309,205h-34.334v85.834H309V205z M446.334,102h-17.168 v257.5H85.833V102H68.667V50.5h377.667V102z M394.834,102H120.167v223.166h274.667V102z\"/></svg>';\n const ICON_ABOUT =\n '<svg class=\"vzb-icon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1792 1792\"><path d=\"M1088 1256v240q0 16-12 28t-28 12h-240q-16 0-28-12t-12-28v-240q0-16 12-28t28-12h240q16 0 28 12t12 28zm316-600q0 54-15.5 101t-35 76.5-55 59.5-57.5 43.5-61 35.5q-41 23-68.5 65t-27.5 67q0 17-12 32.5t-28 15.5h-240q-15 0-25.5-18.5t-10.5-37.5v-45q0-83 65-156.5t143-108.5q59-27 84-56t25-76q0-42-46.5-74t-107.5-32q-65 0-108 29-35 25-107 115-13 16-31 16-12 0-25-8l-164-125q-13-10-15.5-25t5.5-28q160-266 464-266 80 0 161 31t146 83 106 127.5 41 158.5z\"/></svg>';\n const ICON_REPEAT =\n '<svg class=\"vzb-icon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1792 1792\"><path d=\"M576 1376v-192q0-14-9-23t-23-9h-320q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm0-384v-192q0-14-9-23t-23-9h-320q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm512 384v-192q0-14-9-23t-23-9h-320q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm-512-768v-192q0-14-9-23t-23-9h-320q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm512 384v-192q0-14-9-23t-23-9h-320q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm512 384v-192q0-14-9-23t-23-9h-320q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm-512-768v-192q0-14-9-23t-23-9h-320q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm512 384v-192q0-14-9-23t-23-9h-320q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm0-384v-192q0-14-9-23t-23-9h-320q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm128-320v1088q0 66-47 113t-113 47h-1344q-66 0-113-47t-47-113v-1088q0-66 47-113t113-47h1344q66 0 113 47t47 113z\"/></svg>';\n const ICON_CURSORARROW =\n '<svg class=\"vzb-icon\" viewBox=\"-200 0 1792 1792\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M1389 1043q31 30 14 69-17 40-59 40h-382l201 476q10 25 0 49t-34 35l-177 75q-25 10-49 0t-35-34l-191-452-312 312q-19 19-45 19-12 0-24-5-40-17-40-59v-1504q0-42 40-59 12-5 24-5 27 0 45 19z\"/></svg>';\n const ICON_CURSORPLUS =\n '<svg class=\"vzb-icon\" viewBox=\"0 0 1792 1792\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M1088 800v64q0 13-9.5 22.5t-22.5 9.5h-224v224q0 13-9.5 22.5t-22.5 9.5h-64q-13 0-22.5-9.5t-9.5-22.5v-224h-224q-13 0-22.5-9.5t-9.5-22.5v-64q0-13 9.5-22.5t22.5-9.5h224v-224q0-13 9.5-22.5t22.5-9.5h64q13 0 22.5 9.5t9.5 22.5v224h224q13 0 22.5 9.5t9.5 22.5zm128 32q0-185-131.5-316.5t-316.5-131.5-316.5 131.5-131.5 316.5 131.5 316.5 316.5 131.5 316.5-131.5 131.5-316.5zm512 832q0 53-37.5 90.5t-90.5 37.5q-54 0-90-38l-343-342q-179 124-399 124-143 0-273.5-55.5t-225-150-150-225-55.5-273.5 55.5-273.5 150-225 225-150 273.5-55.5 273.5 55.5 225 150 150 225 55.5 273.5q0 220-124 399l343 343q37 37 37 90z\"/></svg>';\n const ICON_CURSORMINUS =\n '<svg class=\"vzb-icon\" viewBox=\"0 0 1792 1792\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M1088 800v64q0 13-9.5 22.5t-22.5 9.5h-576q-13 0-22.5-9.5t-9.5-22.5v-64q0-13 9.5-22.5t22.5-9.5h576q13 0 22.5 9.5t9.5 22.5zm128 32q0-185-131.5-316.5t-316.5-131.5-316.5 131.5-131.5 316.5 131.5 316.5 316.5 131.5 316.5-131.5 131.5-316.5zm512 832q0 53-37.5 90.5t-90.5 37.5q-54 0-90-38l-343-342q-179 124-399 124-143 0-273.5-55.5t-225-150-150-225-55.5-273.5 55.5-273.5 150-225 225-150 273.5-55.5 273.5 55.5 225 150 150 225 55.5 273.5q0 220-124 399l343 343q37 37 37 90z\"/></svg>';\n const ICON_HUNDREDPERCENT =\n '<svg class=\"vzb-icon\" xmlns=\"http://www.w3.org/2000/svg\"><g transform=\"translate(18 11)\"><text transform=\"scale(0.9 1)\" x=\"0\" y=\"0\">100</text><text transform=\"scale(0.6 1)\" class=\"percent\" x=\"0\" y=\"0\">%</text></g></svg>';\n const ICON_PERCENT =\n '<svg class=\"vzb-icon\" viewBox=\"0 0 1792 1792\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M1408 1280q0-52-38-90t-90-38-90 38-38 90 38 90 90 38 90-38 38-90zm-768-768q0-52-38-90t-90-38-90 38-38 90 38 90 90 38 90-38 38-90zm1024 768q0 159-112.5 271.5t-271.5 112.5-271.5-112.5-112.5-271.5 112.5-271.5 271.5-112.5 271.5 112.5 112.5 271.5zm-96-1088q0 20-13 38l-1056 1408q-19 26-51 26h-160q-26 0-45-19t-19-45q0-20 13-38l1056-1408q19-26 51-26h160q26 0 45 19t19 45zm-672 320q0 159-112.5 271.5t-271.5 112.5-271.5-112.5-112.5-271.5 112.5-271.5 271.5-112.5 271.5 112.5 112.5 271.5z\"/></svg>';\n const ICON_SIDE =\n '<svg class=\"vzb-icon\" viewBox=\"-120 -1540 1792 1792\" xmlns=\"http://www.w3.org/2000/svg\"><path transform=\"rotate(-90) scale(1.2)\" d=\"M1024 448q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19l-448 448q-19 19 -19 45t19 45t45 19h896q26 0 45 -19t19 -45zM1024 832q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45l448 448q19 19 45 19t45 -19l448 -448q19 -19 19 -45z\"/></svg>';\n const ICON_CURSORHAND =\n '<svg class=\"vzb-icon\" viewBox=\"0 -1540 1792 1792\" xmlns=\"http://www.w3.org/2000/svg\"><path transform=\"scale(1,-1)\" d=\"M880 1408q-46 0 -79 -33t-33 -79v-656h-32v528q0 46 -33 79t-79 33t-79 -33t-33 -79v-528v-256l-154 205q-38 51 -102 51q-53 0 -90.5 -37.5t-37.5 -90.5q0 -43 26 -77l384 -512q38 -51 102 -51h688q34 0 61 22t34 56l76 405q5 32 5 59v498q0 46 -33 79t-79 33t-79 -33t-33 -79v-272h-32v528q0 46 -33 79t-79 33t-79 -33t-33 -79v-528h-32v656q0 46 -33 79t-79 33zM880 1536q68 0 125.5 -35.5t88.5 -96.5q19 4 42 4q99 0 169.5 -70.5t70.5 -169.5v-17q105 6 180.5 -64t75.5 -175v-498q0 -40 -8 -83l-76 -404q-14 -79 -76.5 -131t-143.5 -52h-688q-60 0 -114.5 27.5t-90.5 74.5l-384 512q-51 68 -51 154q0 106 75 181t181 75q78 0 128 -34v434q0 99 70.5 169.5t169.5 70.5q23 0 42 -4q31 61 88.5 96.5t125.5 35.5z\"/></svg>';\n const ICON_ANGLEDOUBLELEFT =\n '<svg class=\"vzb-icon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"><path d=\"M223.7 239l136-136c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9L319.9 256l96.4 96.4c9.4 9.4 9.4 24.6 0 33.9L393.7 409c-9.4 9.4-24.6 9.4-33.9 0l-136-136c-9.5-9.4-9.5-24.6-.1-34zm-192 34l136 136c9.4 9.4 24.6 9.4 33.9 0l22.6-22.6c9.4-9.4 9.4-24.6 0-33.9L127.9 256l96.4-96.4c9.4-9.4 9.4-24.6 0-33.9L201.7 103c-9.4-9.4-24.6-9.4-33.9 0l-136 136c-9.5 9.4-9.5 24.6-.1 34z\"/></svg>';\n const ICON_FORECAST =\n '<svg class=\"vzb-icon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1792 1792\"><g><path d=\"M560.7,775.2c-8.5,8.4-17.2,17.1-26,25.8C418,917.8,327.5,1039.9,231.9,1209.3c-72.9,129.4-131,262.4-172.5,395.4l171.8,53.7c37.8-120.9,90.8-242.3,157.5-360.7c43.8-77.7,85.9-143.7,128.7-201.7c43.7-59.3,91-114.2,144.6-167.7c11.3-11.3,22.2-22.2,33-32.8L560.7,775.2z\"/><path d=\"M973.7,461.9c-21.4,12.1-43.4,24.8-66.1,38.5c-56.1,33.7-103.4,65.5-145.8,97.2l114.5,139.2c36.3-26.8,76.5-53.6,124-82.1c23.6-14.2,46.3-27.3,68.4-39.7L973.7,461.9z\"/><path d=\"M1448.9,252.3c-37.1,13.4-75.2,27.2-111.3,40.9c-37.6,14.2-76.7,29.6-118,47.2l71.7,165.1c36.5-15.5,72.9-29.8,110.1-44c33.7-12.8,69.4-25.8,104.4-38.4L1448.9,252.3z\"/></g></svg>';\n const ICON_ELLIPSIS_V =\n '<svg class=\"vzb-icon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1792 1792\"><g><path d=\"M1088 1248v192q0 40-28 68t-68 28h-192q-40 0-68-28t-28-68v-192q0-40 28-68t68-28h192q40 0 68 28t28 68zm0-512v192q0 40-28 68t-68 28h-192q-40 0-68-28t-28-68v-192q0-40 28-68t68-28h192q40 0 68 28t28 68zm0-512v192q0 40-28 68t-68 28h-192q-40 0-68-28t-28-68v-192q0-40 28-68t68-28h192q40 0 68 28t28 68z\"/></g></svg>';\n\n var iconset = /*#__PURE__*/Object.freeze({\n __proto__: null,\n ICON_PAINTBRUSH: ICON_PAINTBRUSH,\n ICON_SEARCH: ICON_SEARCH,\n ICON_CIRCLE: ICON_CIRCLE,\n ICON_EXPAND: ICON_EXPAND,\n ICON_ASTERISK: ICON_ASTERISK,\n ICON_TRAILS: ICON_TRAILS,\n ICON_LOCK: ICON_LOCK,\n ICON_UNLOCK: ICON_UNLOCK,\n ICON_UNEXPAND: ICON_UNEXPAND,\n ICON_AXES: ICON_AXES,\n ICON_GEAR: ICON_GEAR,\n ICON_STACK: ICON_STACK,\n ICON_DRAG: ICON_DRAG,\n ICON_WARN: ICON_WARN,\n ICON_PIN: ICON_PIN,\n ICON_QUESTION: ICON_QUESTION,\n ICON_CLOSE: ICON_CLOSE,\n ICON_PRESENTATION: ICON_PRESENTATION,\n ICON_ABOUT: ICON_ABOUT,\n ICON_REPEAT: ICON_REPEAT,\n ICON_CURSORARROW: ICON_CURSORARROW,\n ICON_CURSORPLUS: ICON_CURSORPLUS,\n ICON_CURSORMINUS: ICON_CURSORMINUS,\n ICON_HUNDREDPERCENT: ICON_HUNDREDPERCENT,\n ICON_PERCENT: ICON_PERCENT,\n ICON_SIDE: ICON_SIDE,\n ICON_CURSORHAND: ICON_CURSORHAND,\n ICON_ANGLEDOUBLELEFT: ICON_ANGLEDOUBLELEFT,\n ICON_FORECAST: ICON_FORECAST,\n ICON_ELLIPSIS_V: ICON_ELLIPSIS_V\n });\n\n const d3json = function (path, callback) {\n d3__namespace.json(path)\n .then(response => callback(null, response))\n .catch(error => callback(error));\n };\n const d3text = function (path, callback) {\n d3__namespace.text(path)\n .then(response => callback(null, response))\n .catch(error => callback(error));\n };\n const approxEqual = function (a, b, tolerance) {\n tolerance = tolerance || 0;\n if (b > 0) {\n return (1 - tolerance) * b <= a && a <= b * (1 + tolerance);\n } else if (b < 0) {\n return (1 + tolerance) * b <= a && a <= b * (1 - tolerance);\n }\n return Math.abs(a) <= tolerance;\n };\n const printAutoconfigResult = (function (mdl) {\n console.info(\n \"AUTOCONFIG: \" + mdl._name\n + (mdl.isHook() ? \" of \" + mdl._parent._name : \"\")\n + \" choses \" + (mdl.dim || mdl.which)\n + \" from \" + (mdl.dataSource ? mdl.dataSource._name : \"<DATA SOURCE MISSING!>\")\n + \" to be \" + (mdl._type === \"entities\" || mdl._type === \"time\" ? \"DIM\" : \"WHICH\")\n );\n });\n const uniqueId = (function () {\n let id = 0;\n return function (p) {\n return p ? p + (id += 1) : id += 1;\n };\n })();\n const isElement = function (obj) {\n return !!(obj && obj.nodeType === 1);\n };\n const isArray = Array.isArray || (target => Object.prototype.toString.call(target) === \"[object Array]\");\n const isObject = function (obj) {\n const type = typeof obj;\n return type === \"object\" && !!obj;\n };\n const isDate = function (arg) {\n return arg instanceof Date;\n };\n const isString = value => typeof value === \"string\";\n const isNaN$1 = function (arg) {\n return isNumber(arg) && arg !== +arg;\n };\n const isEmpty = function (obj) {\n return Object.keys(obj).length === 0 && obj.constructor === Object;\n };\n const isNumber = function (arg) {\n return typeof arg === \"number\" || !!arg && typeof arg === \"object\" && Object.prototype.toString.call(arg) ===\n \"[object Number]\";\n };\n const isPlainObject = function (obj) {\n return obj !== null && Object.prototype.toString.call(obj) === \"[object Object]\";\n };\n const arrayEquals = function (a, b) {\n if (a === b) return true;\n if (a == null || b == null) return false;\n if (a.length != b.length) return false;\n for (let i = 0; i < a.length; ++i) {\n if (a[i] !== b[i]) return false;\n }\n return true;\n };\n const deepArrayEquals = function (a, b) {\n if (a === b) return true;\n if (a == null || b == null) return false;\n if (a.length != b.length) return false;\n for (let i = 0; i < a.length; ++i) {\n if (isPlainObject(a[i]) && isPlainObject(b[i])) {\n if (!comparePlainObjects(a[i], b[i])) return false;\n } else if (a[i] !== b[i]) return false;\n }\n return true;\n };\n const comparePlainObjects = function (a, b) {\n const getClass = function (val) {\n return Object.prototype.toString.call(val)\n .match(/^\\[object\\s(.*)\\]$/)[1];\n };\n const whatis = function (val) {\n if (val === undefined) {\n return \"undefined\";\n }\n if (val === null) {\n return \"null\";\n }\n let type = typeof val;\n if (type === \"object\") {\n type = getClass(val).toLowerCase();\n }\n if (type === \"number\") {\n return val.toString().indexOf(\".\") > 0 ?\n \"float\" :\n \"integer\";\n }\n return type;\n };\n const compare = function (a, b) {\n if (a === b) {\n return true;\n }\n for (const i in a) {\n if (b.hasOwnProperty(i)) {\n if (!equal(a[i], b[i])) {\n return false;\n }\n } else {\n return false;\n }\n }\n for (const i in b) {\n if (!a.hasOwnProperty(i)) {\n return false;\n }\n }\n return true;\n };\n const compareArrays = function (a, b) {\n if (a === b) {\n return true;\n }\n if (a.length !== b.length) {\n return false;\n }\n for (let i = 0; i < a.length; i++) {\n if (!equal(a[i], b[i])) {\n return false;\n }\n }\n return true;\n };\n const _equal = {};\n _equal.array = compareArrays;\n _equal.object = compare;\n _equal.date = function (a, b) {\n return a.getTime() === b.getTime();\n };\n _equal.regexp = function (a, b) {\n return a.toString() === b.toString();\n };\n const equal = function (a, b) {\n if (a !== b) {\n const atype = whatis(a);\n const btype = whatis(b);\n if (atype === btype) {\n return _equal.hasOwnProperty(atype) ? _equal[atype](a, b) : a == b;\n }\n return false;\n }\n return true;\n };\n return compare(a, b);\n };\n const getViewportPosition = function (element) {\n let xPosition = 0;\n let yPosition = 0;\n while (element) {\n xPosition += (element.offsetLeft - element.scrollLeft + element.clientLeft);\n yPosition += (element.offsetTop - element.scrollTop + element.clientTop);\n element = element.offsetParent;\n }\n return {\n x: xPosition,\n y: yPosition\n };\n };\n const findScrollableAncestor = function (node) {\n const scrollable = [\"scroll\", \"auto\"];\n while (node = node.parentNode) {\n const scrollHeight = node.scrollHeight;\n const height = node.clientHeight;\n if (scrollHeight > height && scrollable.indexOf(d3__namespace.select(node).style(\"overflow\")) !== -1) {\n return node;\n }\n }\n return null;\n };\n const strToFloat = function (string) {\n return +string.replace(/[^\\d.-]/g, \"\");\n };\n const forEach = function (obj, callback, ctx) {\n if (!obj) {\n return;\n }\n let i, size;\n if (isArray(obj)) {\n size = obj.length;\n for (i = 0; i < size; i += 1) {\n const result = callback.apply(ctx, [obj[i], i]);\n if (result === false) {\n break;\n }\n }\n } else {\n const keys = Object.keys(obj);\n size = keys.length;\n for (i = 0; i < size; i += 1) {\n const result = callback.apply(ctx, [obj[keys[i]], keys[i]]);\n if (result === false) {\n break;\n }\n }\n }\n };\n const extend = function (dest) {\n const objs = Array.prototype.slice.call(arguments, 1);\n forEach(objs, (obj) => {\n forEach(obj, (value, k) => {\n if (obj.hasOwnProperty(k)) {\n dest[k] = value;\n }\n });\n });\n return dest;\n };\n function isSpecificValue(val) {\n return Boolean((\n val instanceof Date\n || val instanceof RegExp\n ));\n }\n function cloneSpecificValue(val) {\n if (val instanceof Date) {\n return new Date(val.getTime());\n } else if (val instanceof RegExp) {\n return new RegExp(val);\n }\n throw new Error(\"Unexpected situation\");\n }\n function deepCloneArray(arr) {\n const clone = [];\n forEach(arr, (item, index) => {\n if (typeof item === \"object\" && item !== null) {\n if (isArray(item)) {\n clone[index] = deepCloneArray(item);\n } else if (isSpecificValue(item)) {\n clone[index] = cloneSpecificValue(item);\n } else {\n clone[index] = deepExtend({}, item);\n }\n } else {\n clone[index] = item;\n }\n });\n return clone;\n }\n const deepExtend = function () {\n if (arguments.length < 1 || typeof arguments[0] !== \"object\") {\n return false;\n }\n if (arguments.length < 2) {\n return arguments[0];\n }\n const target = arguments[0];\n const lastArgIsBool = typeof arguments[arguments.length - 1] === \"boolean\";\n const overwriteByEmpty = lastArgIsBool && arguments[arguments.length - 1];\n const args = Array.prototype.slice.call(arguments, 1, (lastArgIsBool ? -1 : arguments.length));\n let val, src;\n forEach(args, obj => {\n if (typeof obj !== \"object\" || isArray(obj)) {\n return;\n }\n forEach(Object.getOwnPropertyNames(obj), key => {\n src = target[key];\n val = obj[key];\n if (val === target) ; else if (typeof val !== \"object\" || val === null || val._data) {\n target[key] = val;\n } else if (isArray(val)) {\n target[key] = deepCloneArray(val);\n } else if (isSpecificValue(val)) {\n target[key] = cloneSpecificValue(val);\n } else if (typeof src !== \"object\" || src === null || isArray(src)) {\n target[key] = deepExtend({}, val);\n } else if (overwriteByEmpty && isEmpty(val)) {\n target[key] = {};\n } else {\n target[key] = deepExtend(src, val, overwriteByEmpty);\n }\n });\n });\n return target;\n };\n const merge = function (dest) {\n const objs = Array.prototype.slice.call(arguments, 1);\n forEach(objs, (obj) => {\n forEach(obj, (value, k) => {\n if (obj.hasOwnProperty(k)) {\n if (dest.hasOwnProperty(k)) {\n if (!isArray(dest[k])) {\n dest[k] = [dest[k]];\n }\n dest[k].push(value);\n } else {\n dest[k] = value;\n }\n }\n });\n });\n return dest;\n };\n const clone = function (src, arr, exclude) {\n if (isArray(src)) {\n return src.slice(0);\n }\n const clone = {};\n forEach(src, (value, k) => {\n if ((arr && arr.indexOf(k) === -1) || (exclude && exclude.indexOf(k) !== -1)) {\n return;\n }\n if (src.hasOwnProperty(k)) {\n clone[k] = value;\n }\n });\n return clone;\n };\n const deepClone = function (src) {\n let clone = {};\n if (isArray(src)) clone = [];\n forEach(src, (value, k) => {\n if (isObject(value) || isArray(value)) {\n clone[k] = deepClone(value);\n } else {\n clone[k] = value;\n }\n });\n return clone;\n };\n const without = function (arr, el) {\n const idx = arr.indexOf(el);\n if (idx !== -1) {\n arr.splice(idx, 1);\n }\n return arr;\n };\n const unique = (array, map = data => data) => {\n const uniqueValues = {};\n return array.filter(item => {\n const value = map(item);\n if (uniqueValues.hasOwnProperty(value)) {\n return false;\n }\n uniqueValues[value] = 1;\n return true;\n });\n };\n const uniqueLast = function (arr, func) {\n const u = {};\n const a = [];\n if (!func) {\n func = function (d) {\n return d;\n };\n }\n for (let i = 0, l = arr.length; i < l; i += 1) {\n const key = func(arr[i]);\n if (u.hasOwnProperty(key)) {\n a.splice(u[key], 1);\n }\n a.push(arr[i]);\n u[key] = a.length - 1;\n }\n return a;\n };\n const find = function (arr, func) {\n let found;\n forEach(arr, i => {\n if (func(i)) {\n found = i;\n return false;\n }\n });\n return found;\n };\n const filter = function (arr, filter) {\n let index = -1;\n const length = arr.length;\n let resIndex = -1;\n const result = [];\n const keys = Object.keys(filter);\n const s_keys = keys.length;\n let i;\n let f;\n while ((index += 1) < length) {\n const value = arr[index];\n let match = true;\n for (i = 0; i < s_keys; i += 1) {\n f = keys[i];\n if (!value.hasOwnProperty(f) || value[f] !== filter[f]) {\n match = false;\n break;\n }\n }\n if (match) {\n result[resIndex += 1] = value;\n }\n }\n return result;\n };\n const filterAny = function (arr, filter, wildcard) {\n let index = -1;\n const length = arr.length;\n let resIndex = -1;\n const result = [];\n const keys = Object.keys(filter);\n const s_keys = keys.length;\n let i, f;\n while ((index += 1) < length) {\n const value = arr[index];\n let match = true;\n for (i = 0; i < s_keys; i += 1) {\n f = keys[i];\n if (!value.hasOwnProperty(f) || !matchAny(value[f], filter[f], wildcard)) {\n match = false;\n break;\n }\n }\n if (match) {\n result[resIndex += 1] = value;\n }\n }\n return result;\n };\n const matchAny = function (values, compare, wildc) {\n if (!isArray(values)) values = [values];\n if (!wildc) wildc = \"*\";\n let match = false;\n for (let e = 0; e < values.length; e++) {\n const value = values[e];\n if (!isArray(compare) && value == compare) {\n match = true;\n break;\n } else if (isArray(compare)) {\n let found = -1;\n for (let i = 0; i < compare.length; i++) {\n const c = compare[i];\n if (!isArray(c) && (c == value || c === wildc)) {\n found = i;\n break;\n } else if (isArray(c)) {\n const min = c[0];\n const max = c[1] || min;\n if (value >= min && value <= max) {\n found = i;\n break;\n }\n }\n }\n if (found !== -1) {\n match = true;\n break;\n }\n }\n }\n return match;\n };\n const preventAncestorScrolling = function (element) {\n let preventScrolling = false;\n element.on(\"mousewheel\", function (event) {\n const scrollTop = this.scrollTop;\n const scrollHeight = this.scrollHeight;\n const height = element.node().offsetHeight;\n const delta = event.wheelDelta;\n const up = delta > 0;\n const prevent = function () {\n event.stopPropagation();\n event.preventDefault();\n event.returnValue = false;\n return false;\n };\n const scrollTopTween = function (scrollTop) {\n return function () {\n const _this = this;\n const i = d3__namespace.interpolateNumber(this.scrollTop, scrollTop);\n return function (t) {\n _this.scrollTop = i(t);\n };\n };\n };\n if (!up) {\n if (-delta > scrollHeight - height - scrollTop && scrollHeight != height + scrollTop) {\n element.transition().delay(0).duration(0).tween(\"scrolltween\", scrollTopTween(scrollHeight));\n preventScrolling = true;\n setTimeout(() => {\n preventScrolling = false;\n }, 2000);\n } else if (scrollTop == 0) {\n preventScrolling = false;\n }\n } else if (up) {\n if (delta > scrollTop && scrollTop > 0) {\n element.transition().delay(0).duration(0).tween(\"scrolltween\", scrollTopTween(0));\n preventScrolling = true;\n setTimeout(() => {\n preventScrolling = false;\n }, 2000);\n } else if (scrollHeight == height + scrollTop) {\n preventScrolling = false;\n }\n }\n if (preventScrolling) {\n return prevent();\n }\n });\n };\n const radiusToArea = function (r) {\n return r * r * Math.PI;\n };\n const hypotenuse = function (x, y) {\n return Math.sqrt(x * x + y * y);\n };\n const cathetus = function (h, c) {\n return Math.sqrt(h * h - c * c);\n };\n const areaToRadius = function (a) {\n return Math.sqrt(a / Math.PI);\n };\n const timeStamp = function (message) {\n if (console && typeof console.timeStamp === \"function\") {\n console.timeStamp(message);\n }\n };\n const warn = function (message) {\n message = Array.prototype.slice.call(arguments)\n .map(m => m instanceof Object ? JSON.stringify(m, null, 4) : m)\n .join(\" \");\n if (console && typeof console.warn === \"function\") {\n console.warn(message);\n }\n return true;\n };\n const groupCollapsed = function (message) {\n message = Array.prototype.slice.call(arguments).join(\" \");\n if (console && typeof console.groupCollapsed === \"function\") {\n console.groupCollapsed(message);\n }\n };\n const groupEnd = function () {\n if (console && typeof console.groupEnd === \"function\") {\n console.groupEnd();\n }\n };\n const error = function (err) {\n if (console && typeof console.error === \"function\") {\n if (err.stack) {\n console.error(err.stack);\n } else {\n console.error(err);\n }\n if (arguments.length > 1) {\n console.error.apply(this, Array.prototype.slice.call(arguments, 1));\n }\n }\n };\n const countDecimals = function (number) {\n if (Math.floor(number.valueOf()) === number.valueOf()) {\n return 0;\n }\n return number.toString().split(\".\")[1].length || 0;\n };\n const addClass = function (el, className) {\n if (el.classList) {\n el.classList.add(className);\n } else {\n el.className += \" \" + className;\n }\n };\n const removeClass = function (el, className) {\n if (el.classList) {\n el.classList.remove(className);\n } else {\n el.className = el.className.replace(new RegExp(\"(^|\\\\b)\" + className.split(\" \").join(\"|\") + \"(\\\\b|$)\", \"gi\"),\n \" \");\n }\n };\n const classed = function (el, className, value) {\n if (value === true) {\n addClass(el, className);\n } else if (value === false) {\n removeClass(el, className);\n } else {\n return hasClass(el, className);\n }\n };\n const hasClass = (el, className) => (\n el.classList ?\n el.classList.contains(className) :\n new RegExp(\"(^| )\" + className + \"( |$)\", \"gi\").test(el.className)\n );\n const throttle = function (func, ms) {\n let throttled = false;\n let savedArgs;\n let savedThis;\n let nextTime;\n const __recallLast = function () {\n if (throttled) {\n throttled = false;\n func.apply(savedThis, savedArgs);\n }\n };\n const wrapper = function () {\n if (nextTime > Date.now()) {\n throttled = true;\n savedArgs = arguments;\n savedThis = this;\n return;\n }\n nextTime = Date.now() + ms;\n throttled = false;\n func.apply(this, arguments);\n setTimeout(() => {\n __recallLast();\n }, ms);\n };\n wrapper.recallLast = __recallLast;\n return wrapper;\n };\n const keys = function (arg) {\n return Object.keys(arg);\n };\n const values = function (obj) {\n const arr = [];\n const keys = Object.keys(obj);\n const size = keys.length;\n for (let i = 0; i < size; i += 1) {\n arr.push(obj[keys[i]]);\n }\n return arr;\n };\n const arrayMin = function (arr) {\n return arr.reduce((p, v) => (p < v ? p : v));\n };\n const arrayMax = function (arr) {\n return arr.reduce((p, v) => (p > v ? p : v));\n };\n const arrayMean = function (arr) {\n return arraySum(arr) / arr.length;\n };\n const arraySum = function (arr) {\n return arr.reduce((a, b) => a + b);\n };\n const arrayMedian = arr => {\n arr = arr.sort((a, b) => a - b);\n const middle = Math.floor((arr.length - 1) / 2);\n return arr.length % 2 ?\n arr[middle] :\n (arr[middle] + arr[middle + 1]) / 2;\n };\n const arrayLast = function (arr) {\n if (!arr.length) return null;\n return arr[arr.length - 1];\n };\n const diffObject = function (obj2, obj1) {\n const diff = {};\n forEach(obj1, (value, key) => {\n if (!obj2.hasOwnProperty(key) && isPlainObject(value)) {\n diff[key] = diffObject({}, value);\n }\n });\n forEach(obj2, (value, key) => {\n if (!obj1.hasOwnProperty(key)) {\n diff[key] = value;\n } else if (value !== obj1[key]) {\n if (isPlainObject(value) && isPlainObject(obj1[key])) {\n if (isEmpty(value)) {\n if (!isEmpty(obj1[key])) {\n diff[key] = {};\n }\n } else {\n const d = diffObject(value, obj1[key]);\n if (Object.keys(d).length > 0) {\n diff[key] = d;\n }\n }\n } else if (!isArray(value) || !isArray(obj1[key]) || !deepArrayEquals(value, obj1[key])) {\n diff[key] = value;\n }\n }\n });\n return diff;\n };\n const defer = function (func) {\n setTimeout(func, 1);\n };\n const delay = function (delay) {\n return new Promise(resolve => setTimeout(resolve, delay));\n };\n const clearDelay = function (delayId) {\n return clearTimeout(delayId);\n };\n const hashCode = function (str) {\n if (!isString(str)) {\n str = JSON.stringify(str);\n }\n let hash = 0;\n const size = str.length;\n let c;\n if (size === 0) {\n return hash;\n }\n for (let i = 0; i < size; i += 1) {\n c = str.charCodeAt(i);\n hash = (hash << 5) - hash + c;\n hash &= hash;\n }\n return hash.toString();\n };\n const nestArrayToObj = function (arr) {\n if (!arr || !arr.length || !arr[0].key) return arr;\n const res = {};\n for (let i = 0; i < arr.length; i++) {\n res[arr[i].key] = nestArrayToObj(arr[i].values);\n }\n return res;\n };\n const nestArrayToObjWithFlatKeys = function (arr, res = {}, keys, key = \"\") {\n if (!arr || !arr.length || !arr[0].key) {\n if (keys) {\n keys += \"]\";\n !res[keys] && (res[keys] = {});\n res[keys][key] = arr;\n } else {\n res[key] = arr;\n }\n return arr;\n }\n if (key) keys = keys ? keys + \",\" + JSON.stringify(key) : (\"[\" + JSON.stringify(key));\n for (let i = 0; i < arr.length; i++) {\n nestArrayToObjWithFlatKeys(arr[i].values || arr[i].value, res, keys, arr[i].key);\n }\n return res;\n };\n const nestArrayToValues = function (arr, res = []) {\n if (!arr || !arr.length || !arr[0].key) {\n res.push(...arr);\n return;\n }\n for (let i = 0; i < arr.length; i++) {\n nestArrayToValues(arr[i].values || arr[i].value, res);\n }\n return res;\n };\n const interpolateVector = function () {\n };\n const ajax = function (options) {\n const request = new XMLHttpRequest();\n request.open(options.method, options.url, true);\n if (options.method === \"POST\" && !options.json) {\n request.setRequestHeader(\"Content-Type\", \"application/x-www-form-urlencoded; charset=UTF-8\");\n } else if (options.method === \"POST\" && options.json) {\n request.setRequestHeader(\"Content-Type\", \"application/json; charset=UTF-8\");\n }\n request.onload = function () {\n if (request.status >= 200 && request.status < 400) {\n const data = options.json ? JSON.parse(request.responseText) : request.responseText;\n if (options.success) {\n options.success(data);\n }\n } else {\n if (options.error) {\n options.error();\n }\n }\n };\n request.onerror = function () {\n if (options.error) {\n options.error();\n }\n };\n request.send(options.data);\n };\n const get = function (url, pars, success, error, json) {\n pars = pars || [];\n forEach(pars, (value, key) => {\n pars.push(key + \"=\" + value);\n });\n url = pars.length ? url + \"?\" + pars.join(\"&\") : url;\n ajax({\n method: \"GET\",\n url,\n success,\n error,\n json\n });\n };\n const post = function (url, pars, success, error, json) {\n ajax({\n method: \"POST\",\n url,\n success,\n error,\n json,\n data: pars\n });\n };\n const memoize = function (fn) {\n return function () {\n const args = Array.prototype.slice.call(arguments);\n let hash = \"\";\n let i = args.length;\n let currentArg = null;\n while (i--) {\n currentArg = args[i];\n hash += (currentArg === Object(currentArg)) ? JSON.stringify(currentArg) : currentArg;\n fn.memoize || (fn.memoize = {});\n }\n return (hash in fn.memoize) ? fn.memoize[hash] : fn.memoize[hash] = fn.apply(this, args);\n };\n };\n const debounce = function (func, wait, immediate) {\n let timeout;\n return function () {\n const context = this;\n const args = arguments;\n const later = function () {\n timeout = null;\n if (!immediate) func.apply(context, args);\n };\n const callNow = immediate && !timeout;\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n if (callNow) func.apply(context, args);\n };\n };\n const isTouchDevice = function () {\n return !!(\"ontouchstart\" in document.documentElement);\n };\n const pruneTree = function (tree, filterCallback) {\n const filteredTree = {};\n let filteredChildrens = [];\n if (tree.hasOwnProperty(\"children\")) {\n filteredChildrens = tree.children.map(childrenTree => pruneTree(childrenTree, filterCallback)).filter(childrenTree => Object.keys(childrenTree).length !== 0);\n }\n if (filteredChildrens.length != 0 || filterCallback(tree)) {\n forEach(tree, (value, key) => {\n filteredTree[key] = value;\n });\n }\n if (filteredChildrens.length != 0) {\n filteredTree[\"children\"] = filteredChildrens;\n }\n return filteredTree;\n };\n const eachTree = function (tree, filterCallback, parentTree) {\n if (tree.hasOwnProperty(\"children\")) {\n tree.children.forEach(childrenTree => eachTree(childrenTree, filterCallback, tree));\n }\n filterCallback(tree, parentTree);\n };\n const setIcon = function (element, icon) {\n const svgIcon = element.node().ownerDocument.importNode(\n new DOMParser().parseFromString(icon, \"application/xml\").documentElement,\n true\n );\n svgIcon.setAttribute(\"width\", \"0px\");\n svgIcon.setAttribute(\"height\", \"0px\");\n element.selectAll(\".svg-icon\").remove();\n element.node().appendChild(svgIcon);\n return element;\n };\n function makeAbsoluteContext(element, svgDocument) {\n return function (x, y) {\n const offset = svgDocument.getBoundingClientRect();\n const matrix = element.getScreenCTM();\n return {\n x: (matrix.a * x) + (matrix.c * y) + matrix.e - offset.left,\n y: (matrix.b * x) + (matrix.d * y) + matrix.f - offset.top\n };\n };\n }\n function firstBy() {\n function identity(v) {\n return v;\n }\n function ignoreCase(v) {\n return typeof (v) === \"string\" ? v.toLowerCase() : v;\n }\n function makeCompareFunction(f, opt) {\n opt = typeof (opt) === \"number\" ? {direction: opt} : opt || {};\n if (typeof (f) !== \"function\") {\n const prop = f;\n f = function (v1) {\n return v1[prop] ? v1[prop] : \"\";\n };\n }\n if (f.length === 1) {\n const uf = f;\n const preprocess = opt.ignoreCase ? ignoreCase : identity;\n f = function (v1, v2) {\n return preprocess(uf(v1)) < preprocess(uf(v2)) ? -1 : preprocess(uf(v1)) > preprocess(uf(v2)) ? 1 : 0;\n };\n }\n if (opt.direction === -1) return function (v1, v2) {\n return -f(v1, v2);\n };\n return f;\n }\n function tb(func, opt) {\n const x = typeof (this) === \"function\" ? this : false;\n const y = makeCompareFunction(func, opt);\n const f = x ? function (a, b) {\n return x(a, b) || y(a, b);\n }\n : y;\n f.thenBy = tb;\n return f;\n }\n return tb;\n }\n function transform(node) {\n const {a, b, c, d, e, f} = node.transform.baseVal.consolidate().matrix;\n return (function (a, b, c, d, e, f) {\n let scaleX, scaleY, skewX;\n if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n return {\n translateX: e,\n translateY: f,\n rotate: Math.atan2(b, a) * Math.PI / 180,\n skewX: Math.atan(skewX) * Math.PI / 180,\n scaleX,\n scaleY\n };\n })(a, b, c, d, e, f);\n }\n const capitalize = string => string.slice(0, 1).toUpperCase() + string.slice(1).toLowerCase();\n const isMobileOrTablet = (agent = navigator.userAgent || navigator.vendor || window.opera) => /(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(agent) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw-(n|u)|c55\\/|capi|ccwa|cdm-|cell|chtm|cldc|cmd-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc-s|devi|dica|dmob|do(c|p)o|ds(12|-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(-|_)|g1 u|g560|gene|gf-5|g-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd-(m|p|t)|hei-|hi(pt|ta)|hp( i|ip)|hs-c|ht(c(-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i-(20|go|ma)|i230|iac( |-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|-[a-w])|libw|lynx|m1-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|-([1-8]|c))|phil|pire|pl(ay|uc)|pn-2|po(ck|rt|se)|prox|psio|pt-g|qa-a|qc(07|12|21|32|60|-[2-7]|i-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h-|oo|p-)|sdk\\/|se(c(-|0|1)|47|mc|nd|ri)|sgh-|shar|sie(-|m)|sk-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h-|v-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl-|tdg-|tel(i|m)|tim-|t-mo|to(pl|sh)|ts(70|m-|m3|m5)|tx-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas-|your|zeto|zte-/i.test(agent.substr(0, 4));\n function getKey(d, keysArray) {\n let key = d[keysArray[0]];\n for (let i = 1, j = keysArray.length; i < j; i++) {\n key = key + \",\" + d[keysArray[i]];\n }\n return key;\n }\n const isFunction = value => typeof value === \"function\";\n const getProp = (object, props, defaultValue) => {\n for (let prop of Array.isArray(props) ? props : [props]) {\n if (object.hasOwnProperty(prop)) {\n object = object[prop];\n } else {\n return defaultValue;\n }\n }\n return object;\n };\n const px2num = pixels => (\n isString(pixels) && pixels.endsWith(\"px\") ?\n parseFloat(pixels) :\n console.warn(`Strange pixels value: ${pixels}`) || pixels\n );\n const replaceNumberSpacesToNonBreak = numString => numString ? numString.replace(/\\d{1,3}(?: \\d{3})+(?=\\W)/g, match => match.replace(/ /g, \"\\xa0\")) : numString;\n const getSubtitle = (title, shortTitle) => {\n let subtitle = (title ?? \"\").replace(shortTitle, \"\");\n if (subtitle[0] === \",\") subtitle = subtitle.slice(1);\n const regexpResult = /^\\((.*)\\)$|.*/.exec(subtitle.trim());\n return regexpResult[1] || regexpResult[0] || \"\";\n };\n const getBrowserDetails = () => {\n const nAgt = navigator.userAgent;\n let browserName = navigator.appName;\n let fullVersion = \"\" + parseFloat(navigator.appVersion);\n let majorVersion = parseInt(navigator.appVersion, 10);\n let nameOffset, verOffset, ix;\n const isElectron = navigator.userAgent.toLowerCase().indexOf(\" electron/\") > -1;\n if ((verOffset = nAgt.indexOf(\"Opera\")) != -1) {\n browserName = \"Opera\";\n fullVersion = nAgt.substring(verOffset + 6);\n if ((verOffset = nAgt.indexOf(\"Version\")) != -1)\n fullVersion = nAgt.substring(verOffset + 8);\n }\n else if ((verOffset = nAgt.indexOf(\"MSIE\")) != -1) {\n browserName = \"Microsoft Internet Explorer\";\n fullVersion = nAgt.substring(verOffset + 5);\n }\n else if ((verOffset = nAgt.indexOf(\"Chrome\")) != -1) {\n browserName = \"Chrome\";\n fullVersion = nAgt.substring(verOffset + 7);\n }\n else if ((verOffset = nAgt.indexOf(\"Safari\")) != -1) {\n browserName = \"Safari\";\n fullVersion = nAgt.substring(verOffset + 7);\n if ((verOffset = nAgt.indexOf(\"Version\")) != -1)\n fullVersion = nAgt.substring(verOffset + 8);\n }\n else if ((verOffset = nAgt.indexOf(\"Firefox\")) != -1) {\n browserName = \"Firefox\";\n fullVersion = nAgt.substring(verOffset + 8);\n }\n else if ((nameOffset = nAgt.lastIndexOf(\" \") + 1) <\n (verOffset = nAgt.lastIndexOf(\"/\"))) {\n browserName = nAgt.substring(nameOffset, verOffset);\n fullVersion = nAgt.substring(verOffset + 1);\n if (browserName.toLowerCase() == browserName.toUpperCase()) {\n browserName = navigator.appName;\n }\n }\n if ((ix = fullVersion.indexOf(\";\")) != -1)\n fullVersion = fullVersion.substring(0, ix);\n if ((ix = fullVersion.indexOf(\" \")) != -1)\n fullVersion = fullVersion.substring(0, ix);\n majorVersion = parseInt(\"\" + fullVersion, 10);\n if (isNaN$1(majorVersion)) {\n fullVersion = \"\" + parseFloat(navigator.appVersion);\n majorVersion = parseInt(navigator.appVersion, 10);\n }\n return (isElectron ? \"Electron \" : \"\") + browserName + \" \" + majorVersion + \" (\" + fullVersion + \")\";\n };\n const normaliseLink = input => {\n if (!input) return input;\n if (input.indexOf(\"http://\") === 0 || input.indexOf(\"https://\") === 0) return input;\n if (input.indexOf(\"//\") === 0) return \"http://\" + input.slice(2);\n return \"http://\" + input;\n };\n const getOSname = () => {\n let OSName = \"Unknown\";\n if (window.navigator.userAgent.indexOf(\"Windows NT 10.0\") != -1) OSName = \"Windows 10\";\n if (window.navigator.userAgent.indexOf(\"Windows NT 6.2\") != -1) OSName = \"Windows 8\";\n if (window.navigator.userAgent.indexOf(\"Windows NT 6.1\") != -1) OSName = \"Windows 7\";\n if (window.navigator.userAgent.indexOf(\"Windows NT 6.0\") != -1) OSName = \"Windows Vista\";\n if (window.navigator.userAgent.indexOf(\"Windows NT 5.1\") != -1) OSName = \"Windows XP\";\n if (window.navigator.userAgent.indexOf(\"Windows NT 5.0\") != -1) OSName = \"Windows 2000\";\n if (window.navigator.userAgent.indexOf(\"Mac\") != -1) OSName = \"Mac/iOS\";\n if (window.navigator.userAgent.indexOf(\"X11\") != -1) OSName = \"UNIX\";\n if (window.navigator.userAgent.indexOf(\"Linux\") != -1) OSName = \"Linux\";\n return OSName;\n };\n const rebind = function(target, source) {\n let i = 1, method;\n const n = arguments.length;\n while (++i < n) target[method = arguments[i]] = d3_rebind(target, source, source[method]);\n return target;\n };\n function d3_rebind(target, source, method) {\n return function() {\n const value = method.apply(source, arguments);\n return value === source ? target : value;\n };\n }\n\n var _LegacyUtils = /*#__PURE__*/Object.freeze({\n __proto__: null,\n d3json: d3json,\n d3text: d3text,\n approxEqual: approxEqual,\n printAutoconfigResult: printAutoconfigResult,\n uniqueId: uniqueId,\n isElement: isElement,\n isArray: isArray,\n isObject: isObject,\n isDate: isDate,\n isString: isString,\n isNaN: isNaN$1,\n isEmpty: isEmpty,\n isNumber: isNumber,\n isPlainObject: isPlainObject,\n arrayEquals: arrayEquals,\n deepArrayEquals: deepArrayEquals,\n comparePlainObjects: comparePlainObjects,\n getViewportPosition: getViewportPosition,\n findScrollableAncestor: findScrollableAncestor,\n strToFloat: strToFloat,\n forEach: forEach,\n extend: extend,\n deepExtend: deepExtend,\n merge: merge,\n clone: clone,\n deepClone: deepClone,\n without: without,\n unique: unique,\n uniqueLast: uniqueLast,\n find: find,\n filter: filter,\n filterAny: filterAny,\n matchAny: matchAny,\n preventAncestorScrolling: preventAncestorScrolling,\n radiusToArea: radiusToArea,\n hypotenuse: hypotenuse,\n cathetus: cathetus,\n areaToRadius: areaToRadius,\n timeStamp: timeStamp,\n warn: warn,\n groupCollapsed: groupCollapsed,\n groupEnd: groupEnd,\n error: error,\n countDecimals: countDecimals,\n addClass: addClass,\n removeClass: removeClass,\n classed: classed,\n hasClass: hasClass,\n throttle: throttle,\n keys: keys,\n values: values,\n arrayMin: arrayMin,\n arrayMax: arrayMax,\n arrayMean: arrayMean,\n arraySum: arraySum,\n arrayMedian: arrayMedian,\n arrayLast: arrayLast,\n diffObject: diffObject,\n defer: defer,\n delay: delay,\n clearDelay: clearDelay,\n hashCode: hashCode,\n nestArrayToObj: nestArrayToObj,\n nestArrayToObjWithFlatKeys: nestArrayToObjWithFlatKeys,\n nestArrayToValues: nestArrayToValues,\n interpolateVector: interpolateVector,\n ajax: ajax,\n get: get,\n post: post,\n memoize: memoize,\n debounce: debounce,\n isTouchDevice: isTouchDevice,\n pruneTree: pruneTree,\n eachTree: eachTree,\n setIcon: setIcon,\n makeAbsoluteContext: makeAbsoluteContext,\n firstBy: firstBy,\n transform: transform,\n capitalize: capitalize,\n isMobileOrTablet: isMobileOrTablet,\n getKey: getKey,\n isFunction: isFunction,\n getProp: getProp,\n px2num: px2num,\n replaceNumberSpacesToNonBreak: replaceNumberSpacesToNonBreak,\n getSubtitle: getSubtitle,\n getBrowserDetails: getBrowserDetails,\n normaliseLink: normaliseLink,\n getOSname: getOSname,\n rebind: rebind\n });\n\n const STATUS = {\n INIT: \"init\",\n PENDING: \"pending\",\n READY: \"fulfilled\",\n ERROR: \"rejected\"\n };\n function injectIndexes(array) {\n return array.map((m, i) => Object.assign({}, m, {i}));\n }\n function isEntityConcept(concept = {}) {\n return [\"entity_set\", \"entity_domain\"].includes(concept.concept_type);\n }\n function getSpaceName(enc, space){\n if(!space) space = enc.data.space;\n if(!isArray(space)) space = [space];\n return space.map(m => enc.data.source.getConcept(m).name).join(\", \");\n }\n function getConceptNameCompliment(enc) {\n const dims = enc.data.filter.dimensions;\n if(!dims) Promise.resolve(\"\");\n return requestEntityNames(enc.data.source, Object.keys(dims))\n .then(response => {\n return response.map(({data,dim}) => {\n const value = dims[dim][dim];\n return data.raw.find(f => f[dim]==value).name;\n }).join(\", \");\n });\n }\n function requestEntityNames(datasource, dims) {\n if(!isArray(dims)) dims = [dims];\n const promises = dims.map(dim => {\n return datasource.query({\n select: {\n key: [dim],\n value: [\"name\"]\n },\n from: \"entities\"\n }).then(data => {\n return { data, dim };\n });\n });\n return Promise.all(promises);\n }\n function getConceptName(enc, localise) {\n const cp = enc.data.conceptProps;\n if (enc.data.isConstant)\n return localise(\"indicator/\" + enc.data.constant + \"/\" + enc.scale.modelType);\n return cp.name || cp.concept || localise(enc.name);\n }\n function getConceptShortName(enc, localise) {\n const cp = enc.data.conceptProps;\n if (enc.data.isConstant)\n return localise(\"indicator/\" + enc.data.constant + \"/\" + enc.scale.modelType);\n return cp.name_short || getConceptName(enc, localise);\n }\n function getConceptNameMinusShortName(enc, localise) {\n const name = getConceptName(enc, localise);\n const shortName = getConceptShortName(enc, localise);\n if (enc.data.isConstant)\n return name;\n let result = name.replace(shortName,\"\");\n if (result[0] === \",\") result = result.slice(1);\n result = result.trim();\n const regexpResult = /^\\((.*)\\)$|.*/.exec(result);\n return regexpResult[1] || regexpResult[0] || \"\";\n }\n function getConceptUnit(enc) {\n const cp = enc.data.conceptProps;\n return cp && cp.unit || \"\";\n }\n function getDefaultStateTree(defaultState, component) {\n const _defaultState = getChildrenDefaultState(defaultState, component.DEFAULT_UI);\n component.children.forEach(child => {\n if (child.name) {\n _defaultState[child.name] = getDefaultStateTree(_defaultState[child.name], child);\n } else {\n deepExtend(_defaultState, getDefaultStateTree(_defaultState, child));\n }\n });\n return _defaultState;\n }\n function getChildrenDefaultState(parent, children) {\n const cloneChildren = deepClone(children);\n return deepExtend(cloneChildren, parent);\n }\n function clearEmpties(obj) {\n for (const key in obj) {\n if (!obj[key] || typeof obj[key] !== \"object\" || obj[key] instanceof Date) {\n continue;\n }\n clearEmpties(obj[key]);\n if (Object.keys(obj[key]).length === 0) {\n delete obj[key];\n }\n }\n return obj;\n }\n function mergeInTarget(target, source, blocks = [], keystack = \"\") {\n for (const key in source) {\n if (typeof source[key] === \"object\" && !Array.isArray(source[key]) && source[key] !== null) {\n if ( target[key] && !blocks.some(s => (keystack + \".\" + key).endsWith(s)) ) {\n mergeInTarget(target[key], source[key], blocks, keystack + \".\" + key);\n } else {\n target[key] = deepExtend({}, source[key]);\n }\n } else {\n target[key] = source[key];\n }\n }\n return target;\n }\n function replaceProps(target, source) {\n for (const key in target) {\n if (typeof target[key] === \"object\" && !Array.isArray(target[key]) && target[key] !== null) {\n replaceProps(target[key], source[key] || {});\n } else {\n if (typeof source[key] !== \"undefined\") {\n target[key] = source[key];\n } else {\n delete target[key];\n }\n }\n }\n return target;\n }\n function computeObjectsSimilarityScore(forConfig, againstConfig, specialKeySubstring = \"\"){\n function isThereASpecialKeySubstringInBoth(a, b, specialKeySubstring) {\n return specialKeySubstring\n && Object.keys(a).find(f => f.includes(specialKeySubstring))\n && Object.keys(b).find(f => f.includes(specialKeySubstring));\n }\n function compare(a, b) {\n let score = 0;\n let total = 0;\n for (const key in a) {\n if (typeof a[key] === \"object\" && !Array.isArray(a[key]) && a[key] != null && b[key] != null) {\n const deeper = compare(a[key], b[key]);\n score += deeper.score;\n total += deeper.total;\n } else {\n if (a[key] == b[key]) score ++;\n else if (a[key] != null && b[key] != null) score += 0.5;\n else if (isThereASpecialKeySubstringInBoth(a, b, specialKeySubstring)) score += 0.1;\n total++;\n }\n }\n return {score, total};\n }\n const result = compare(forConfig, againstConfig);\n return result.score / result.total;\n }\n\n var _Utils = /*#__PURE__*/Object.freeze({\n __proto__: null,\n STATUS: STATUS,\n injectIndexes: injectIndexes,\n isEntityConcept: isEntityConcept,\n getSpaceName: getSpaceName,\n getConceptNameCompliment: getConceptNameCompliment,\n requestEntityNames: requestEntityNames,\n getConceptName: getConceptName,\n getConceptShortName: getConceptShortName,\n getConceptNameMinusShortName: getConceptNameMinusShortName,\n getConceptUnit: getConceptUnit,\n getDefaultStateTree: getDefaultStateTree,\n getChildrenDefaultState: getChildrenDefaultState,\n clearEmpties: clearEmpties,\n mergeInTarget: mergeInTarget,\n replaceProps: replaceProps,\n computeObjectsSimilarityScore: computeObjectsSimilarityScore\n });\n\n function axisSmart$1(_orient) {\n return (function d3_axis_smart(_super) {\n const VERTICAL = \"vertical axis\";\n const HORIZONTAL = \"horizontal axis\";\n const X = \"labels stack side by side\";\n const Y = \"labels stack top to bottom\";\n const OPTIMISTIC = \"optimistic approximation: labels have different lengths\";\n const PESSIMISTIC = \"pessimistic approximation: all labels have the largest length\";\n const DEFAULT_LOGBASE = 10;\n function onlyUnique(value, index, self) {\n return self.indexOf(value) === index;\n }\n function axis(g) {\n const checkDmn = axis.scale().domain();\n const checkRng = axis.scale().range();\n if (!checkDmn.length || !checkRng.length || [...checkDmn, ...checkRng].some(s => s == null || isNaN(s))) {\n return warn(`axisSmart() skips action because of bad domain ${checkDmn} or range ${checkRng} of the attached scale`);\n }\n if (highlightValue != null) {\n axis.highlightValueRun(g);\n return;\n }\n const widthSampleG = g.append(\"g\").attr(\"class\", \"tick widthSampling\");\n const widthSampleT = widthSampleG.append(\"text\").text(\"0M\");\n if (!options.cssMargin) options.cssMargin = {};\n options.cssMargin.top = widthSampleT.style(\"margin-top\");\n options.cssMargin.bottom = widthSampleT.style(\"margin-bottom\");\n options.cssMargin.left = widthSampleT.style(\"margin-left\");\n options.cssMargin.right = widthSampleT.style(\"margin-right\");\n options.widthOfOneDigit = widthSampleT.node().getBBox().width * 0.5;\n options.heightOfOneDigit = widthSampleT.node().getBBox().height;\n widthSampleG.remove();\n axis.labelFactory(options);\n let transition = null;\n if (options.transitionDuration > 0) {\n _super(transition = g.transition().duration(options.transitionDuration));\n } else {\n _super(g);\n }\n g.attr(\"fill\", null);\n g.attr(\"font-size\", null);\n g.attr(\"font-family\", null);\n g.attr(\"text-anchor\", null);\n const orient = axis.orient() == \"top\" || axis.orient() == \"bottom\" ? HORIZONTAL : VERTICAL;\n const dimension = (orient == HORIZONTAL && axis.pivot() || orient == VERTICAL && !axis.pivot()) ? Y : X;\n g.selectAll(\".vzb-axis-value\")\n .data([null])\n .enter().call(selection => {\n selection.append(\"g\")\n .attr(\"class\", \"vzb-axis-value\")\n .classed(\"vzb-hidden\", true)\n .append(\"text\")\n .each(function() {\n const textEl = d3__namespace.select(this);\n textEl.classed(\"stroke\", true);\n if (!textEl.style(\"paint-order\").length) {\n textEl.clone().classed(\"stroke\", false);\n }\n });\n selection.append(\"g\")\n .attr(\"class\", \"vzb-axis-value vzb-axis-value-shadow\")\n .style(\"opacity\", 0)\n .append(\"text\");\n });\n const padding = axis.tickPadding();\n g.selectAll(\"text\")\n .each(function() {\n if (axis.pivot() == null) return;\n const view = d3__namespace.select(this);\n view.attr(\"transform\", \"rotate(\" + (axis.pivot() ? -90 : 0) + \")\");\n view.style(\"text-anchor\", dimension == X ? \"middle\" : \"end\");\n view.attr(\"x\", dimension == X ? (orient == VERTICAL ? -padding : 0) : -padding);\n view.attr(\"y\", dimension == X ? (orient == VERTICAL ? 0 : padding) : 0);\n view.attr(\"dx\", dimension == X ? (orient == VERTICAL ? padding : 0) : 0);\n view.attr(\"dy\", dimension == X ? (orient == VERTICAL ? -padding : \".72em\") : \".32em\");\n });\n if (axis.repositionLabels() != null) {\n const patchLabelsPosition = () => {\n g.selectAll(\".tick\")\n .each(function(d) {\n const view = d3__namespace.select(this).select(\"text\");\n const shift = axis.repositionLabels()[d] || { x: 0, y: 0 };\n view.attr(\"x\", +view.attr(\"x\") + shift.x);\n view.attr(\"y\", +view.attr(\"y\") + shift.y);\n });\n };\n transition ? transition.on(\"end\", () => patchLabelsPosition()) : patchLabelsPosition();\n }\n const scale = axis.scale();\n if (options.viewportLength) {\n g.selectAll(\".tick\")\n .classed(\"vzb-hidden\", d => scale(d) < 0 || scale(d) > options.viewportLength);\n }\n if (axis.tickValuesMinor() == null) axis.tickValuesMinor([]);\n let minorTicks = g.selectAll(\".tick-minor\").data(tickValuesMinor);\n minorTicks.exit().remove();\n minorTicks = minorTicks.enter().append(\"line\")\n .attr(\"class\", \"tick-minor\")\n .merge(minorTicks);\n const tickLengthOut = axis.tickSizeMinor().outbound;\n const tickLengthIn = axis.tickSizeMinor().inbound;\n if (options.viewportLength) {\n minorTicks\n .classed(\"vzb-hidden\", d => scale(d) < 0 || scale(d) > options.viewportLength);\n }\n minorTicks\n .attr(\"y1\", orient == HORIZONTAL ? (axis.orient() == \"top\" ? 1 : -1) * tickLengthIn : scale)\n .attr(\"y2\", orient == HORIZONTAL ? (axis.orient() == \"top\" ? -1 : 1) * tickLengthOut : scale)\n .attr(\"x1\", orient == VERTICAL ? (axis.orient() == \"right\" ? -1 : 1) * tickLengthIn : scale)\n .attr(\"x2\", orient == VERTICAL ? (axis.orient() == \"right\" ? 1 : -1) * tickLengthOut : scale);\n g.selectAll(\"path\").remove();\n let rake = g.selectAll(\".vzb-axis-line\").data([0]);\n rake.exit().remove();\n rake = rake.enter().append(\"line\")\n .attr(\"class\", \"vzb-axis-line\")\n .merge(rake);\n if (options.viewportLength) {\n rake\n .attr(\"x1\", orient == VERTICAL ? 0 : -1)\n .attr(\"x2\", orient == VERTICAL ? 0 : options.viewportLength)\n .attr(\"y1\", orient == HORIZONTAL ? 0 : 0)\n .attr(\"y2\", orient == HORIZONTAL ? 0 : options.viewportLength);\n } else {\n rake\n .attr(\"x1\", orient == VERTICAL ? 0 : d3__namespace.min(scale.range()) - (options.bump || 0) - 1)\n .attr(\"x2\", orient == VERTICAL ? 0 : d3__namespace.max(scale.range()) + (options.bump || 0))\n .attr(\"y1\", orient == HORIZONTAL ? 0 : d3__namespace.min(scale.range()) - (options.bump || 0))\n .attr(\"y2\", orient == HORIZONTAL ? 0 : d3__namespace.max(scale.range()) + (options.bump || 0));\n }\n }\n axis.highlightValueRun = function(g) {\n if (options.viewportLength && highlightValue != \"none\" && (\n axis.scale()(highlightValue) > options.viewportLength ||\n axis.scale()(highlightValue) < 0\n )) highlightValue = \"none\";\n const orient = axis.orient() == \"top\" || axis.orient() == \"bottom\" ? HORIZONTAL : VERTICAL;\n const dimension = (orient == HORIZONTAL && axis.pivot() || orient == VERTICAL && !axis.pivot()) ? \"y\" : \"x\";\n const pivot = axis.pivot() ? -1 : 1;\n g.select(\".vzb-axis-value\")\n .classed(\"vzb-hidden\", highlightValue == \"none\");\n g.select(\".vzb-axis-value-shadow\").select(\"text\")\n .text(highlightValue == \"none\" ? \"\" : options.formatter(highlightValue));\n let bbox;\n const o = {};\n if (highlightValue != \"none\") {\n bbox = g.select(\".vzb-axis-value-shadow\").node().getBBox();\n o.bump = options.bump;\n o.formatter = options.formatter;\n o.viewportLength = options.viewportLength;\n o.toolMargin = options.toolMargin;\n o.cssMargin = options.cssMargin;\n o.widthOfOneDigit = bbox[axis.pivot() ? \"height\" : \"width\"] / (options.formatter(highlightValue).length);\n o.heightOfOneDigit = bbox[axis.pivot() ? \"width\" : \"height\"];\n }\n const hlValueShift = (highlightValue == \"none\" ? { x: 0, y: 0 } :\n repositionLabelsThatStickOut([highlightValue], o, orient, axis.scale(), dimension)[highlightValue])[dimension];\n const getTransform = function() {\n return highlightValue == \"none\" ? \"translate(0,0)\" :\n \"translate(\"\n + (orient == HORIZONTAL ? axis.scale()(highlightValue) + hlValueShift * pivot : 0) + \",\"\n + (orient == VERTICAL ? axis.scale()(highlightValue) + hlValueShift * pivot : 0)\n + \")\";\n };\n const getOpacity = function(d, t, view) {\n if (highlightValue == \"none\") return 1;\n const wh = orient == HORIZONTAL ? \"width\" : \"height\";\n const shift = ((axis.repositionLabels() || {})[d] || { x: 0, y: 0 })[dimension];\n return axis.hlOpacityScale()(\n Math.abs(axis.scale()(d) + shift * pivot - axis.scale()(highlightValue) - hlValueShift * pivot)\n - view.getBBox()[wh] / 2 - bbox[wh] / 2\n );\n };\n if (highlightTransDuration) {\n g.select(\".vzb-axis-value\")\n .transition()\n .duration(highlightTransDuration)\n .ease(d3__namespace.easeLinear)\n .attr(\"transform\", getTransform);\n g.select(\".vzb-axis-value\")\n .selectAll(\"text\")\n .interrupt(\"text\" + (highlightValue == \"none\" ? \"on\" : \"off\"))\n .transition(\"text\" + (highlightValue == \"none\" ? \"off\" : \"on\"))\n .delay(highlightTransDuration)\n .text(highlightValue == \"none\" ? \"\" : options.formatter(highlightValue));\n g.selectAll(\".tick:not(.vzb-hidden)\").each(function(d, t) {\n d3__namespace.select(this).select(\"text\")\n .transition()\n .duration(highlightTransDuration)\n .ease(d3__namespace.easeLinear)\n .style(\"opacity\", getOpacity(d, t, this));\n });\n } else {\n g.select(\".vzb-axis-value\")\n .interrupt()\n .attr(\"transform\", getTransform);\n g.select(\".vzb-axis-value\")\n .selectAll(\"text\")\n .interrupt(\"texton\").interrupt(\"textoff\")\n .text(highlightValue == \"none\" ? \"\" : options.formatter(highlightValue));\n g.selectAll(\".tick:not(.vzb-hidden)\").each(function(d, t) {\n d3__namespace.select(this).select(\"text\")\n .interrupt()\n .style(\"opacity\", getOpacity(d, t, this));\n });\n }\n highlightValue = null;\n };\n let hlOpacityScale = d3__namespace.scaleLinear().domain([0, 5]).range([0, 1]).clamp(true);\n axis.hlOpacityScale = function(arg) {\n if (!arguments.length) return hlOpacityScale;\n hlOpacityScale = arg;\n return axis;\n };\n let highlightValue = null;\n axis.highlightValue = function(arg) {\n if (!arguments.length) return highlightValue;\n highlightValue = arg;\n return axis;\n };\n let highlightTransDuration = 0;\n axis.highlightTransDuration = function(arg) {\n if (!arguments.length) return highlightTransDuration;\n highlightTransDuration = arg;\n return axis;\n };\n let repositionLabels = null;\n axis.repositionLabels = function(arg) {\n if (!arguments.length) return repositionLabels;\n repositionLabels = arg;\n return axis;\n };\n let pivot = false;\n axis.pivot = function(arg) {\n if (!arguments.length) return pivot;\n pivot = !!arg;\n return axis;\n };\n let tickValuesMinor = [];\n axis.tickValuesMinor = function(arg) {\n if (!arguments.length) return tickValuesMinor;\n tickValuesMinor = arg;\n return axis;\n };\n let tickSizeMinor = {\n outbound: 0,\n inbound: 0\n };\n axis.tickSizeMinor = function(arg1, arg2) {\n if (!arguments.length) return tickSizeMinor;\n tickSizeMinor = {\n outbound: arg1,\n inbound: arg2 || 0\n };\n meow(\"setting\", tickSizeMinor);\n return axis;\n };\n let options = {};\n axis.labelerOptions = function(arg) {\n if (!arguments.length) return options;\n options = arg;\n return axis;\n };\n axis.METHOD_REPEATING = \"repeating specified powers\";\n axis.METHOD_DOUBLING = \"doubling the value\";\n axis.labelFactory = function(options) {\n if (options == null) options = {};\n if (options.scaleType != \"linear\" &&\n options.scaleType != \"time\" &&\n options.scaleType != \"genericLog\" &&\n options.scaleType != \"log\" &&\n options.scaleType != \"ordinal\") {\n return axis.ticks(options.limitMaxTickNumber)\n .tickFormat(null)\n .tickValues(null)\n .tickValuesMinor(null)\n .pivot(null)\n .repositionLabels(null);\n }\n if (options.scaleType == \"ordinal\") return axis;\n if (options.logBase == null) options.logBase = DEFAULT_LOGBASE;\n if (options.stops == null) options.stops = [1, 2, 5, 3, 7, 4, 6, 8, 9];\n if (options.removeAllLabels == null) options.removeAllLabels = false;\n if (options.formatter == null) options.formatter = axis.tickFormat() ?\n axis.tickFormat() : function(d) { return d + \"\"; };\n options.cssLabelMarginLimit = 5;\n if (options.cssMargin == null) options.cssMargin = {};\n if (options.cssMargin.left == null || parseInt(options.cssMargin.left) < options.cssLabelMarginLimit)\n options.cssMargin.left = options.cssLabelMarginLimit + \"px\";\n if (options.cssMargin.right == null || parseInt(options.cssMargin.right) < options.cssLabelMarginLimit)\n options.cssMargin.right = options.cssLabelMarginLimit + \"px\";\n if (options.cssMargin.top == null || parseInt(options.cssMargin.top) < options.cssLabelMarginLimit)\n options.cssMargin.top = options.cssLabelMarginLimit + \"px\";\n if (options.cssMargin.bottom == null || parseInt(options.cssMargin.bottom) < options.cssLabelMarginLimit)\n options.cssMargin.bottom = options.cssLabelMarginLimit + \"px\";\n if (options.toolMargin == null) options.toolMargin = {\n left: 30,\n bottom: 30,\n right: 30,\n top: 30\n };\n if (options.bump == null) options.bump = 0;\n if (options.viewportLength == null) options.viewportLength = 0;\n if (options.pivotingLimit == null) options.pivotingLimit = options.toolMargin[this.orient()];\n if (options.showOuter == null) options.showOuter = false;\n if (options.limitMaxTickNumber == null) options.limitMaxTickNumber = 0;\n const orient = this.orient() == \"top\" || this.orient() == \"bottom\" ? HORIZONTAL : VERTICAL;\n if (options.isPivotAuto == null) options.isPivotAuto = orient == VERTICAL;\n if (options.cssFontSize == null) options.cssFontSize = \"13px\";\n if (options.widthToFontsizeRatio == null) options.widthToFontsizeRatio = 0.75;\n if (options.heightToFontsizeRatio == null) options.heightToFontsizeRatio = 1.20;\n if (options.widthOfOneDigit == null) options.widthOfOneDigit =\n parseInt(options.cssFontSize) * options.widthToFontsizeRatio;\n if (options.heightOfOneDigit == null) options.heightOfOneDigit =\n parseInt(options.cssFontSize) * options.heightToFontsizeRatio;\n if (options.fitIntoScale == null || options.fitIntoScale == \"pessimistic\") options.fitIntoScale = PESSIMISTIC;\n if (options.fitIntoScale == \"optimistic\") options.fitIntoScale = OPTIMISTIC;\n meow(\"********** \" + orient + \" **********\");\n const domain = axis.scale().domain();\n const range = axis.scale().range();\n const lengthRange = Math.abs(range[range.length - 1] - range[0]);\n const min = d3__namespace.min([domain[0], domain[domain.length - 1]]);\n const max = d3__namespace.max([domain[0], domain[domain.length - 1]]);\n const bothSidesUsed = ((options.scaleType == \"linear\" ? min < 0 : min <= 0) && max >= 0) && options.scaleType != \"time\";\n let tickValues = options.showOuter ? [min, max] : [];\n let tickValuesMinor = [];\n let ticksNumber = 5;\n function getBaseLog(x, base) {\n if (x == 0 || base == 0) {\n return 0;\n }\n if (base == null) base = options.logBase;\n return Math.log(x) / Math.log(base);\n }\n const estLongestLabelLength =\n d3__namespace.max(d3__namespace.range(min, max, (max - min) / 17).concat(max).map(d => options.formatter(d).replace(\".\", \"\").length)) * options.widthOfOneDigit + parseInt(options.cssMargin.left);\n const pivot = options.isPivotAuto && (\n (estLongestLabelLength > options.pivotingLimit) && (orient == VERTICAL)\n ||\n !(estLongestLabelLength > options.pivotingLimit) && !(orient == VERTICAL)\n );\n const labelsStackOnTop = (orient == HORIZONTAL && pivot || orient == VERTICAL && !pivot);\n const labelsJustDontFit = (!labelsStackOnTop && options.heightOfOneDigit > options.pivotingLimit);\n if (options.removeAllLabels) return axis.tickValues([]);\n if (min == max) return axis.tickValues([min]).ticks(1).tickFormat(options.formatter);\n const labelsFitIntoScale = function(tickValues, lengthRange, approximationStyle, rescalingLabels) {\n if (tickValues == null || tickValues.length <= 1) return true;\n if (approximationStyle == null) approximationStyle = PESSIMISTIC;\n if (labelsStackOnTop) {\n return lengthRange >\n tickValues.length * (\n options.heightOfOneDigit +\n parseInt(options.cssMargin.top) +\n parseInt(options.cssMargin.bottom)\n );\n }\n const marginsLR = parseInt(options.cssMargin.left) + parseInt(options.cssMargin.right);\n const maxLength = d3__namespace.max(tickValues.map(d => options.formatter(d).length));\n if (rescalingLabels == \"log\") {\n lengthRange = Math.abs(axis.scale()(d3__namespace.max(tickValues)) - axis.scale()(d3__namespace.min(tickValues)));\n return lengthRange >\n d3__namespace.sum(tickValues.map(d => (\n options.widthOfOneDigit * (approximationStyle == PESSIMISTIC ? maxLength : options.formatter(\n d).length) + marginsLR\n )\n * (1 + Math.log(d.toString().replace(/([0.])/g, \"\")[0]) / Math.LN10)));\n }\n return lengthRange >\n tickValues.length * marginsLR + (approximationStyle == PESSIMISTIC ?\n options.widthOfOneDigit * tickValues.length * maxLength : 0) + (approximationStyle == OPTIMISTIC ?\n options.widthOfOneDigit * (\n tickValues.map(d => options.formatter(d)).join(\"\").length\n ) : 0);\n };\n const collisionBetween = function(one, two) {\n if (two == null || two.length == 0) return false;\n if (!(two instanceof Array)) two = [two];\n for (let i = 0; i < two.length; i++) {\n if (\n one != two[i] && one != 0 &&\n Math.abs(axis.scale()(one) - axis.scale()(two[i])) <\n (labelsStackOnTop ?\n (options.heightOfOneDigit) :\n (options.formatter(one).length + options.formatter(two[i]).length) * options.widthOfOneDigit / 2\n )\n ) return true;\n }\n return false;\n };\n if (options.scaleType == \"genericLog\" || options.scaleType == \"log\") {\n const eps = axis.scale().constant ? axis.scale().constant() : 0;\n const spawnZero = bothSidesUsed ? [0] : [];\n const spawnPos = max < eps ? [] : (\n d3__namespace.range(\n Math.floor(getBaseLog(Math.max(eps, min))),\n Math.ceil(getBaseLog(max)),\n 1)\n .concat(Math.ceil(getBaseLog(max)))\n .map(d => Math.pow(options.logBase, d))\n );\n const spawnNeg = min > -eps ? [] : (\n d3__namespace.range(\n Math.floor(getBaseLog(Math.max(eps, -max))),\n Math.ceil(getBaseLog(-min)),\n 1)\n .concat(Math.ceil(getBaseLog(-min)))\n .map(d => -Math.pow(options.logBase, d))\n );\n if (options.method == null) {\n const coverage = bothSidesUsed ?\n Math.max(Math.abs(max), Math.abs(min)) / eps :\n Math.max(Math.abs(max), Math.abs(min)) / Math.min(Math.abs(max), Math.abs(min));\n options.method = 10 <= coverage && coverage <= 1024 ? this.METHOD_DOUBLING : this.METHOD_REPEATING;\n }\n if (options.method == this.METHOD_DOUBLING) {\n let doublingLabels = [];\n if (bothSidesUsed) tickValues.push(0);\n const avoidCollidingWith = [].concat(tickValues);\n const startPos = max < eps ? null : 4 * spawnPos[Math.floor(spawnPos.length / 2) - 1];\n const startNeg = min > -eps ? null : 4 * spawnNeg[Math.floor(spawnNeg.length / 2) - 1];\n if (startPos) {\n for (let l = startPos; l <= max; l *= 2) doublingLabels.push(l);\n }\n if (startPos) {\n for (let l = startPos / 2; l >= Math.max(min, eps); l /= 2) doublingLabels.push(l);\n }\n if (startNeg) {\n for (let l = startNeg; l >= min; l *= 2) doublingLabels.push(l);\n }\n if (startNeg) {\n for (let l = startNeg / 2; l <= Math.min(max, -eps); l /= 2) doublingLabels.push(l);\n }\n doublingLabels = doublingLabels\n .sort(d3__namespace.ascending)\n .filter(d => min <= d && d <= max);\n tickValuesMinor = tickValuesMinor.concat(doublingLabels);\n doublingLabels = groupByPriorities(doublingLabels, false);\n const tickValues_1 = tickValues;\n for (let j = 0; j < doublingLabels.length; j++) {\n const trytofit = tickValues_1.concat(doublingLabels[j])\n .filter(d => !collisionBetween(d, avoidCollidingWith))\n .filter(onlyUnique);\n if (!labelsFitIntoScale(trytofit, lengthRange, PESSIMISTIC, \"none\")) break;\n tickValues = trytofit;\n }\n }\n if (options.method == this.METHOD_REPEATING) {\n let spawn = spawnZero.concat(spawnPos).concat(spawnNeg).sort(d3__namespace.ascending);\n options.stops.forEach((stop) => {\n tickValuesMinor = tickValuesMinor.concat(spawn.map(d => d * stop));\n });\n spawn = groupByPriorities(spawn);\n const avoidCollidingWith = spawnZero.concat(tickValues);\n let stopTrying = false;\n options.stops.forEach((stop, i) => {\n if (i == 0) {\n for (let j = 0; j < spawn.length; j++) {\n const trytofit = tickValues\n .concat(spawn[j].map(d => d * stop))\n .filter(d => !collisionBetween(d, avoidCollidingWith))\n .filter(d => min <= d && d <= max)\n .filter(onlyUnique);\n if (!labelsFitIntoScale(trytofit, lengthRange, PESSIMISTIC, \"none\")) break;\n tickValues = trytofit;\n }\n spawn = [].concat(...spawn);\n } else {\n if (stopTrying) return;\n const trytofit = tickValues\n .concat(spawn.map(d => d * stop))\n .filter(d => min <= d && d <= max)\n .filter(onlyUnique);\n if (!labelsFitIntoScale(trytofit, lengthRange, PESSIMISTIC, \"log\")) {\n stopTrying = true;\n return;\n }\n if (tickValues.length > options.limitMaxTickNumber && options.limitMaxTickNumber != 0) {\n stopTrying = true;\n return;\n }\n tickValues = trytofit;\n }\n });\n }\n }\n if (options.scaleType == \"linear\" || options.scaleType == \"time\") {\n if (bothSidesUsed) tickValues.push(0);\n const avoidCollidingWith = [].concat(tickValues);\n if (labelsStackOnTop) {\n ticksNumber = Math.max(Math.floor(lengthRange / (options.heightOfOneDigit + parseInt(options.cssMargin.top))), 2);\n } else {\n ticksNumber = Math.max(Math.floor(lengthRange / estLongestLabelLength), 2);\n }\n if (options.limitMaxTickNumber != 0 && ticksNumber > options.limitMaxTickNumber) ticksNumber = options.limitMaxTickNumber;\n let addLabels = axis.scale().ticks(ticksNumber)\n .sort(d3__namespace.ascending)\n .filter(d => min <= d && d <= max);\n tickValuesMinor = tickValuesMinor.concat(addLabels);\n addLabels = groupByPriorities(addLabels, false);\n const tickValues_1 = tickValues;\n for (let j = 0; j < addLabels.length; j++) {\n const trytofit = tickValues_1.concat(addLabels[j])\n .filter(d => !collisionBetween(d, avoidCollidingWith))\n .filter(onlyUnique);\n if (!labelsFitIntoScale(trytofit, lengthRange, options.fitIntoScale, \"none\")) break;\n tickValues = trytofit;\n }\n tickValues = tickValues\n .filter(d => !collisionBetween(d, avoidCollidingWith))\n .filter(onlyUnique);\n }\n if (tickValues != null && tickValues.length < 2 && !bothSidesUsed) {\n tickValues = Math.abs(axis.scale()(min) - axis.scale()(max)) < (labelsStackOnTop ?\n (options.heightOfOneDigit) :\n (options.formatter(min).length + options.formatter(max).length) * options.widthOfOneDigit) ? [max] : [min, max];\n if (tickValues.length == 1 && (options.scaleType == \"linear\" || options.scaleType == \"time\")) {\n tickValuesMinor = [];\n }\n }\n if (tickValues != null && tickValues.length <= 3 && bothSidesUsed) {\n if (!collisionBetween(0, [min, max])) {\n tickValues = [min, 0, max];\n } else {\n tickValues = [min, max];\n }\n }\n if (tickValues != null) tickValues.sort((a, b) => (orient == HORIZONTAL ? -1 : 1) * (axis.scale()(b) - axis.scale()(a)));\n if (labelsJustDontFit) tickValues = [];\n tickValuesMinor = tickValuesMinor.filter(d => tickValues.indexOf(d) == -1 && min <= d && d <= max);\n meow(\"final result\", tickValues);\n return axis\n .ticks(ticksNumber)\n .tickFormat(options.formatter)\n .tickValues(tickValues)\n .tickValuesMinor(tickValuesMinor)\n .pivot(pivot)\n .repositionLabels(\n repositionLabelsThatStickOut(tickValues, options, orient, axis.scale(), labelsStackOnTop ? \"y\" : \"x\")\n );\n };\n function groupByPriorities(array, removeDuplicates) {\n if (removeDuplicates == null) removeDuplicates = true;\n const result = [];\n const taken = [];\n if (array.indexOf(0) != -1) {\n result.push([0]);\n taken.push(array.indexOf(0));\n }\n for (let k = array.length; k >= 1; k = k < 4 ? k - 1 : k / 2) {\n result.push(array.filter((d, i) => {\n if (i % Math.floor(k) == 0 && (taken.indexOf(i) == -1 || !removeDuplicates)) {\n taken.push(i);\n return true;\n }\n return false;\n }));\n }\n return result;\n }\n function repositionLabelsThatStickOut(tickValues, options, orient, scale, dimension) {\n if (!tickValues) return null;\n const result = {};\n const margin =\n orient == VERTICAL ? {\n head: options.toolMargin.top,\n tail: options.toolMargin.bottom\n } : {\n head: options.toolMargin.right,\n tail: options.toolMargin.left\n };\n let range = scale.range();\n let bump = options.bump;\n if (options.viewportLength) {\n tickValues = tickValues.filter(d => scale(d) >= 0 && scale(d) <= options.viewportLength);\n range = [0, options.viewportLength];\n bump = 0;\n }\n tickValues.forEach((d, i) => {\n if (i != 0 && i != tickValues.length - 1) return;\n let repositionHead = Math.min(margin.head, options.widthOfOneDigit * 0.5) + bump\n + (orient == HORIZONTAL ? 1 : 0) * d3__namespace.max(range)\n - (orient == HORIZONTAL ? 0 : 1) * d3__namespace.min(range)\n + (orient == HORIZONTAL ? -1 : 1) * scale(d)\n - (dimension == \"x\") * options.formatter(d).length * options.widthOfOneDigit / 2\n - (dimension == \"y\") * options.heightOfOneDigit / 2\n - (dimension == \"x\") * parseInt(options.cssMargin.right)\n - (dimension == \"y\") * parseInt(options.cssMargin.top);\n let repositionTail = Math.min(margin.tail, options.widthOfOneDigit * 0.5) + bump\n + (orient == VERTICAL ? 1 : 0) * d3__namespace.max(range)\n - (orient == VERTICAL ? 0 : 1) * d3__namespace.min(range)\n + (orient == VERTICAL ? -1 : 1) * scale(d)\n - (dimension == \"x\") * options.formatter(d).length * options.widthOfOneDigit / 2\n - (dimension == \"y\") * options.heightOfOneDigit / 2\n - (dimension == \"x\") * parseInt(options.cssMargin.left)\n - (dimension == \"y\") * parseInt(options.cssMargin.bottom);\n if (repositionHead > 0) repositionHead = 0;\n if (repositionTail > 0) repositionTail = 0;\n result[d] = { x: 0, y: 0 };\n result[d][dimension] = (dimension == \"y\" && orient == VERTICAL ? -1 : 1) * (repositionHead - repositionTail);\n });\n tickValues.forEach((d, i) => {\n if (i == 0 || i == tickValues.length - 1) return;\n let repositionHead =\n Math.abs(scale(d) - scale(tickValues[tickValues.length - 1]))\n - (dimension == \"y\") * (orient == HORIZONTAL ? -1 : 1) * result[tickValues[tickValues.length - 1]][dimension]\n - (dimension == \"x\") * (orient == HORIZONTAL ? 1 : -1) * result[tickValues[tickValues.length - 1]][dimension]\n - (dimension == \"x\") * options.widthOfOneDigit / 2 * options.formatter(d).length\n - (dimension == \"x\") * options.widthOfOneDigit / 2 * options.formatter(tickValues[tickValues.length - 1]).length\n - (dimension == \"y\") * options.heightOfOneDigit * 0.7\n - (dimension == \"x\") * parseInt(options.cssMargin.left)\n - (dimension == \"y\") * parseInt(options.cssMargin.bottom);\n let repositionTail =\n Math.abs(scale(d) - scale(tickValues[0]))\n - (dimension == \"y\") * (orient == VERTICAL ? -1 : 1) * result[tickValues[0]][dimension]\n - (dimension == \"x\") * (orient == VERTICAL ? 1 : -1) * result[tickValues[0]][dimension]\n - (dimension == \"x\") * options.widthOfOneDigit / 2 * options.formatter(d).length\n - (dimension == \"x\") * options.widthOfOneDigit / 2 * options.formatter(tickValues[0]).length\n - (dimension == \"y\") * options.heightOfOneDigit * 0.7\n - (dimension == \"x\") * parseInt(options.cssMargin.left)\n - (dimension == \"y\") * parseInt(options.cssMargin.bottom);\n if (repositionHead > 0) repositionHead = 0;\n if (repositionTail > 0) repositionTail = 0;\n result[d] = { x: 0, y: 0 };\n result[d][dimension] = (dimension == \"y\" && orient == VERTICAL ? -1 : 1) * (repositionHead - repositionTail);\n });\n return result;\n }\n axis.copy = function() {\n return d3_axis_smart(d3__namespace[\"axis\" + capitalize(_orient)]());\n };\n axis.orient = function() {\n if (!arguments.length) return _orient;\n return axis;\n };\n return rebind(axis, _super,\n \"scale\", \"ticks\", \"tickArguments\", \"tickValues\", \"tickFormat\",\n \"tickSize\", \"tickSizeInner\", \"tickSizeOuter\", \"tickPadding\"\n );\n function meow() {\n if (!axis.labelerOptions().isDevMode) return;\n console.log(...arguments);\n }\n })(d3__namespace[\"axis\" + capitalize(_orient)]());\n }\n\n function collisionResolver$1() {\n return (function collision_resolver() {\n const DURATION = 300;\n let labelHeight = 0;\n function resolver(g) {\n if (selector == null) {\n console.warn(\"D3 collision resolver stopped: missing a CSS slector\");\n return;\n }\n if (height == null) {\n console.warn(\"D3 collision resolver stopped: missing height of the canvas\");\n return;\n }\n if (value == null) {\n console.warn(\n \"D3 collision resolver stopped: missing pointer within data objects. Example: value = 'valueY' \");\n return;\n }\n if (KEY == null) {\n console.warn(\"D3 collision resolver stopped: missing a key for data. Example: key = 'geo' \");\n return;\n }\n if (!g.node()) {\n console.warn(\"D3 collision resolver stopped: missing the target DOM element\", g);\n return;\n }\n labelHeight = g.node().getBBox().height * 0.8;\n const data = g.filter(d => filter(d, time))\n .sort((x, y) => d3__namespace.ascending(x.valueY, y.valueY))\n .data();\n const keys = {};\n for (let i = 0; i < data.length - 1; i++) {\n const first = data[i];\n const second = data[i + 1];\n if (!first.shiftY) first.shiftY = 0;\n second.shiftY = 0;\n if ((second.valueY - first.valueY - first.shiftY) >= labelHeight) continue;\n let upperAvailable = 0;\n if (first.valueY > labelHeight) {\n if (i == 0) {\n upperAvailable = Math.min(labelHeight, first.valueY);\n } else if (first.valueY - data[i - 1].valueY + data[i - 1].shiftY > labelHeight) {\n upperAvailable = Math.min(labelHeight, first.valueY - data[i - 1].valueY + data[i - 1].shiftY);\n }\n }\n first.upperAvailable = upperAvailable;\n let underAvailable = 0;\n if (second.valueY < height) {\n if (i == data.length - 2) {\n underAvailable = Math.min(labelHeight, height - second.valueY);\n } else if (data[i + 2].valueY - second.valueY > labelHeight) {\n underAvailable = Math.min(labelHeight, data[i + 2].valueY - second.valueY);\n }\n }\n second.underAvailable = underAvailable;\n const neededSpace = labelHeight - (second.valueY - first.valueY - first.shiftY);\n keys[first[KEY]] = {};\n keys[second[KEY]] = {};\n if (upperAvailable >= neededSpace / 2 && underAvailable >= neededSpace / 2) {\n first.shiftY = -neededSpace / 2;\n second.shiftY = neededSpace / 2;\n } else if (upperAvailable >= neededSpace / 2) {\n second.shiftY = underAvailable;\n first.shiftY = -Math.min(upperAvailable, neededSpace - underAvailable);\n } else if (underAvailable >= neededSpace / 2) {\n first.shiftY -= upperAvailable;\n second.shiftY = Math.min(underAvailable, neededSpace - upperAvailable);\n } else {\n first.shiftY = -upperAvailable;\n second.shiftY = underAvailable;\n }\n keys[first[KEY]].valueY = first.valueY + first.shiftY;\n keys[second[KEY]].valueY = second.valueY + second.shiftY;\n }\n g.each(function(d) {\n if (keys[d[KEY]] && keys[d[KEY]].valueY) {\n d3__namespace.select(this).selectAll(selector).transition().duration(DURATION).attr(\"transform\", \"translate(0,\" +\n keys[d[KEY]].valueY + \")\");\n }\n });\n }\n let selector = null;\n resolver.selector = function(arg) {\n if (!arguments.length)\n return selector;\n selector = arg;\n return resolver;\n };\n let height = null;\n resolver.height = function(arg) {\n if (!arguments.length)\n return height;\n height = arg;\n return resolver;\n };\n let scale = d3__namespace.scaleLinear()\n .domain([0, 1])\n .range([0, 1]);\n resolver.scale = function(arg) {\n if (!arguments.length)\n return scale;\n scale = arg;\n return resolver;\n };\n let value = null;\n resolver.value = function(arg) {\n if (!arguments.length)\n return value;\n value = arg;\n return resolver;\n };\n let time = null;\n resolver.time = function(arg) {\n if (!arguments.length)\n return time;\n time = arg;\n return resolver;\n };\n let filter = function() { return true; };\n resolver.filter = function(arg) {\n if (!arguments.length)\n return filter;\n filter = arg;\n return resolver;\n };\n let fixed = null;\n resolver.fixed = function(arg) {\n if (!arguments.length)\n return fixed;\n fixed = arg;\n return resolver;\n };\n let handleResult = null;\n resolver.handleResult = function(arg) {\n if (!arguments.length)\n return handleResult;\n handleResult = arg;\n return resolver;\n };\n let KEY = null;\n resolver.KEY = function(arg) {\n if (!arguments.length)\n return KEY;\n KEY = arg;\n return resolver;\n };\n return resolver;\n })();\n }\n\n class TextEllipsis$1 {\n constructor(context) {\n this.context = context;\n this.interact = this._createInteract();\n }\n setTooltip(tooltip) {\n this.tooltip = tooltip;\n }\n _createInteract() {\n const _this = this;\n return {\n mouseOver(event) {\n const mouse = d3__namespace.pointer(event, _this.context.element.node());\n _this._setTooltip(d3__namespace.select(event.target).attr(\"data-text\"), mouse[0], mouse[1]);\n },\n mouseOut() {\n _this._setTooltip();\n },\n tap() {\n }\n };\n }\n _setTooltip(tooltipText, x, y) {\n if (tooltipText) {\n this.tooltip.classed(\"vzb-hidden\", false)\n .selectAll(\"text\")\n .text(tooltipText);\n const contentBBox = this.tooltip.select(\"text\").node().getBBox();\n if (x - contentBBox.width < 0) {\n x += contentBBox.width + 5;\n } else {\n x -= 5;\n }\n if (y - contentBBox.height < 0) {\n y += contentBBox.height;\n } else {\n y -= 11;\n }\n this.tooltip.attr(\"transform\", \"translate(\" + x + \",\" + y + \")\");\n this.tooltip.selectAll(\"rect\")\n .attr(\"width\", contentBBox.width + 8)\n .attr(\"height\", contentBBox.height * 1.2)\n .attr(\"x\", -contentBBox.width - 4)\n .attr(\"y\", -contentBBox.height * 0.85)\n .attr(\"rx\", contentBBox.height * 0.2)\n .attr(\"ry\", contentBBox.height * 0.2);\n } else {\n this.tooltip.classed(\"vzb-hidden\", true);\n }\n }\n clear(selection) {\n selection.attr(\"data-text\", null);\n }\n wrap(_this, width) {\n const textEl = d3__namespace.select(_this);\n const abs = Math.abs;\n let initialText = textEl.attr(\"data-text\");\n if (!initialText) {\n initialText = textEl.text();\n textEl.attr(\"data-text\", initialText);\n }\n textEl.text(initialText);\n let text = initialText;\n let textLength = text.length;\n let textWidth = textEl.node().getComputedTextLength();\n while (width - textWidth <= 0 && text !== \"\") {\n text = (textWidth >= width) ? text.slice(0, -abs(textLength * 0.5)) : initialText.slice(0, abs(textLength * 0.5));\n textEl.text(text + \"…\");\n textWidth = textEl.node().getComputedTextLength();\n textLength = text.length;\n }\n if (text !== initialText) {\n if (text === \"\") {\n textEl.text(initialText[0]);\n }\n textEl\n .on(\"mouseover.tooltip\", this.interact.mouseOver)\n .on(\"mouseout.tooltip\", this.interact.mouseOut)\n .style(\"pointer-events\", \"all\");\n } else {\n textEl\n .on(\"mouseover.tooltip\", null)\n .on(\"mouseout.tooltip\", null)\n .style(\"pointer-events\", null);\n }\n }\n }\n\n function detectTouchEvent(element, onTap, onLongTap) {\n var start;\n var coordX;\n var coordY;\n var namespace = onTap ? \".onTap\" : \".onLongTap\";\n d3__namespace.select(element)\n .on(\"touchstart\" + namespace, function(event) {\n start = event.timeStamp;\n coordX = event.changedTouches[0].screenX;\n coordY = event.changedTouches[0].screenY;\n })\n .on(\"touchend\" + namespace, function(event, d) {\n coordX = Math.abs(coordX - event.changedTouches[0].screenX);\n coordY = Math.abs(coordY - event.changedTouches[0].screenY);\n if (coordX < 5 && coordY < 5) {\n if (event.timeStamp - start < 500)\n return onTap ? onTap(event, d) : undefined;\n return onLongTap ? onLongTap(event, d) : undefined;\n } else return undefined;\n });\n }\n var onTap = function(callback) {\n return this.each(function() {\n detectTouchEvent(this, callback);\n });\n };\n var onLongTap = function(callback) {\n return this.each(function() {\n detectTouchEvent(this, null, callback);\n });\n };\n\n d3.selection.prototype.onTap = onTap;\n d3.selection.prototype.onLongTap = onLongTap;\n const versionInfo = {version: \"0.0.3\", build: 1680083553567, package: {\"contributors\":[{\"name\":\"Jasper\",\"url\":\"https://github.com/jheeffer\"},{\"name\":\"Angie\",\"url\":\"https://github.com/angieskazka\"},{\"name\":\"Dima\",\"url\":\"https://github.com/dab2000\"},{\"name\":\"Ola\",\"url\":\"https://github.com/olarosling\"}],\"author\":{\"name\":\"Gapminder Foundation\",\"url\":\"https://www.gapminder.org\",\"email\":\"info@gapminder.org\"},\"homepage\":\"https://github.com/vizabi/@vizabi/shared-components#readme\",\"name\":\"@vizabi/shared-components\",\"description\":\"Vizabi shared components\"}};\n const Icons = iconset;\n const Utils = _Utils;\n const LegacyUtils = _LegacyUtils;\n const axisSmart = axisSmart$1;\n const collisionResolver = collisionResolver$1;\n const TextEllipsis = TextEllipsis$1;\n\n class BaseService {\n isService() {return true;}\n constructor(config = {}){\n this.config = config;\n this.setup();\n }\n deconstruct() {}\n setup() {}\n }\n\n class CapitalVizabiService extends BaseService {\n setup(){\n this.Vizabi = this.config.Vizabi;\n }\n deconstruct() {\n delete this.Vizabi;\n }\n }\n\n const PROFILES = [\n {\n id: \"LARGE\",\n min_width: 900,\n min_height: 520\n },\n {\n id: \"MEDIUM\",\n min_width: 600,\n min_height: 400\n },\n {\n id: \"SMALL\",\n min_width: 1,\n min_height: 1\n }\n ];\n const CSS_PLACEHOLDER_CLASS = \"vzb-tool\";\n const CSS_CLASS_PREFIX = \"vzb-\";\n const CSS_LANDSCAPE_CLASS = \"vzb-landscape\";\n const CSS_PORTRAIT_CLASS = \"vzb-portrait\";\n const CSS_PROJECTOR_CLASS = \"vzb-presentation\";\n class _LayoutService extends BaseService {\n static DEFAULTS = {\n projector: false,\n placeholder: \"body\"\n }\n setup(){\n this.name = \"layout\";\n this.status = STATUS.INIT;\n this.width = 1;\n this.height = 1;\n this.size = this.getSize();\n this.profile = \"SMALL\";\n this.placeholder = this.config.placeholder || this.constructor.DEFAULTS.placeholder;\n this.hGrid = [];\n this.element = d3__namespace.select(this.placeholder)\n .classed(CSS_PLACEHOLDER_CLASS, true);\n this._resizeHandler();\n const resizeHandler = this._resizeHandler.bind(this);\n window.addEventListener(\"resize\", resizeHandler);\n this.removeListener = function() {\n window.removeEventListener(\"resize\", resizeHandler);\n };\n this.removeProjectorListener = mobx.autorun(() => {\n this.setProjector.bind(this)();\n }, {name: \"Layout.js: setProjector()\"});\n }\n deconstruct(){\n this.removeProjectorListener();\n this.removeListener();\n super.deconstruct();\n }\n get projector() {\n return this.config.projector || this.constructor.DEFAULTS.projector;\n }\n set projector(projector) {\n this.config.projector = projector;\n }\n getSize() {\n const { width, height } = this;\n return { width, height };\n }\n _resizeHandler(){\n mobx.action(\"Layout.js: _resizeHandler()\", ()=>{\n this.width = this.element.node().clientWidth;\n this.height = this.element.node().clientHeight;\n const profile = PROFILES.find(p => (this.width >= p.min_width && this.height >= p.min_height));\n if (!profile) {\n this.profile = \"SMALL\";\n this.status = STATUS.ERROR;\n console.warn(`\n Layout service: nothing should be rendered, because\n placeholder ${this.placeholder} has display:none or is too little: ${this.width} x ${this.height} px\n `);\n } else {\n this.element.classed(CSS_CLASS_PREFIX + this.profile.toLowerCase(), false);\n this.profile = profile.id;\n this.element.classed(CSS_CLASS_PREFIX + this.profile.toLowerCase(), true);\n this.element.classed(CSS_LANDSCAPE_CLASS, this.width > this.height);\n this.element.classed(CSS_PORTRAIT_CLASS, !(this.width > this.height));\n this.status = STATUS.READY;\n }\n this.size = this.getSize();\n })();\n }\n getProfileConstants(normalConstants = {}, forProjector = {}, positionInFacet){\n const result = this.projector\n ? deepExtend({}, normalConstants[this.profile] || {}, forProjector[this.profile] || {})\n : deepExtend({}, normalConstants[this.profile] || {});\n if(positionInFacet){\n if(!positionInFacet.row.first) result.margin.top = (result.margin.betweenRow * 0.5) || 2;\n if(!positionInFacet.row.last) result.margin.bottom = (result.margin.betweenRow * 0.5) || 2;\n if(!positionInFacet.column.first) result.margin.left = (result.margin.betweenColumn * 0.5) || 2;\n if(!positionInFacet.column.last) result.margin.right = (result.margin.betweenColumn * 0.5) || 2;\n }\n return result;\n }\n setProjector() {\n this.element.classed(CSS_PROJECTOR_CLASS, this.projector);\n this.size = this.getSize();\n }\n setHGrid(value) {\n mobx.action(() => {\n this.hGrid = value;\n })();\n }\n }\n const LayoutService = mobx.decorate(_LayoutService, {\n \"size\": mobx.observable.ref,\n \"hGrid\": mobx.observable,\n \"projector\": mobx.computed,\n \"width\": mobx.observable,\n \"height\": mobx.observable,\n \"profile\": mobx.observable,\n \"status\": mobx.observable\n });\n\n const FALLBACK_PATH = \"./assets/locale/\";\n const FALLBACK_ID = \"en\";\n const RTL_CSS_CLASS = \"vzb-rtl\";\n class _LocaleService extends BaseService {\n static DEFAULTS = {\n id: FALLBACK_ID,\n path: FALLBACK_PATH,\n placeholder: \"body\"\n }\n setup(){\n this.status = STATUS.INIT;\n this.path = this.config.path || this.constructor.DEFAULTS.path;\n this.placeholder = this.config.placeholder || this.constructor.DEFAULTS.placeholder;\n this.element = d3__namespace.select(this.placeholder);\n this.content = {};\n this.removeLoadFileAutorun = mobx.autorun(this._loadFile.bind(this), {name: \"Locale.js: _loadFile()\"});\n this.removeApplyRTL = mobx.autorun(this._applyRTL.bind(this), {name: \"Locale.js: _applyRTL()\"});\n }\n get id() {\n return this.config.id || this.constructor.DEFAULTS.id;\n }\n set id(id) {\n mobx.runInAction(() => {\n this.config.id = id;\n Vizabi.stores.dataSources.getAll().forEach(e => e.config.locale = id);\n });\n }\n deconstruct(){\n this.removeLoadFileAutorun();\n super.deconstruct();\n }\n _applyRTL() {\n if (this.status !== STATUS.READY) return;\n this.element.classed(RTL_CSS_CLASS, this.isRTL());\n }\n _loadFile(){\n this.status = STATUS.PENDING;\n const readers = [d3__namespace.json(this.path + this.id + \".json\")];\n if (this.id != FALLBACK_ID && !this.content[FALLBACK_ID]) {\n readers.push(d3__namespace.json(this.path + FALLBACK_ID + \".json\"));\n }\n Promise.all(readers)\n .then((content) => {\n this.content[this.id] = content[0];\n if (content[1]) this.content[FALLBACK_ID] = content[1];\n this._initFormatters();\n this.status = STATUS.READY;\n })\n .catch((error) => {\n this.state = STATUS.ERROR;\n throw error;\n });\n }\n _initFormatters(){\n this.numberF = function (x, options) {\n const SHARE = \"share\";\n const PERCENT = \"percent\";\n const NOSUFFIX = \"nosuffix\";\n const EPSILON = 0.00000000000001;\n if (options === SHARE) x *= 100;\n if (Math.abs(x) < EPSILON) return \"0\";\n const format = \"r\";\n const prec = 3;\n let suffix = \"\";\n if (options === NOSUFFIX) return d3__namespace.format(\".\" + prec + format)(x);\n switch (Math.floor(Math.log(Math.abs(x)) / Math.LN10 + EPSILON)) {\n case -13: x *= 1000000000000; suffix = \"p\"; break;\n case -10: x *= 1000000000; suffix = \"n\"; break;\n case -7: x *= 1000000; suffix = \"µ\"; break;\n case -6: x *= 1000000; suffix = \"µ\"; break;\n case -5: x *= 1000000; suffix = \"µ\"; break;\n case -4: break;\n case -3: break;\n case -2: break;\n case -1: break;\n case 0: break;\n case 1: break;\n case 2: break;\n case 3: break;\n case 4: x /= 1000; suffix = \"k\"; break;\n case 5: x /= 1000; suffix = \"k\"; break;\n case 6: x /= 1000000; suffix = \"M\"; break;\n case 7: x /= 1000000; suffix = \"M\"; break;\n case 8: x /= 1000000; suffix = \"M\"; break;\n case 9: x /= 1000000000; suffix = \"B\"; break;\n case 10: x /= 1000000000; suffix = \"B\"; break;\n case 11: x /= 1000000000; suffix = \"B\"; break;\n case 12: x /= 1000000000000; suffix = \"TR\"; break;\n case 13: x /= 1000000000000; suffix = \"TR\"; break;\n case 14: x /= 1000000000000; suffix = \"TR\"; break;\n default: return (d3__namespace.format(\".\" + prec + \"s\")(x)).replace(\"G\", \"B\");\n }\n let formatted = d3__namespace.format(\".\" + prec + format)(x);\n if (formatted.indexOf(\".\") > -1) formatted = formatted.replace(/0+$/, \"\").replace(/\\.$/, \"\");\n return (formatted + suffix + (options === PERCENT || options === SHARE ? \"%\" : \"\"));\n };\n this.longNumberF = d3__namespace.formatLocale({\n decimal: \".\",\n thousands: \" \",\n grouping: [3],\n }).format(',.2r');\n this.dateF = {\n year: d3__namespace.timeFormat(\"%Y\"),\n month: d3__namespace.timeFormat(\"%Y-%m\"),\n day: d3__namespace.timeFormat(\"%Y-%m-%d\"),\n week: d3__namespace.timeFormat(\"%Yw%V\"),\n quarter: d3__namespace.timeFormat(\"%Yq%q\")\n };\n this.stringF = function(string){\n let translated = this.content[this.id].dictionary? this.content[this.id].dictionary[string] : this.content[this.id][string];\n if (translated || translated === \"\") return translated;\n translated = this.content[FALLBACK_ID].dictionary? this.content[FALLBACK_ID].dictionary[string] : this.content[FALLBACK_ID][string];\n if (translated || translated === \"\") return translated;\n return string;\n };\n }\n getFormattedNumber(arg) {\n return this.numberF(arg);\n }\n getFormattedDate(arg, dateIntervalSize) {\n return this.dateF[dateIntervalSize](arg);\n }\n getUIstring(arg) {\n return this.stringF(arg);\n }\n auto(dateIntervalSize = \"year\"){\n return (function(arg){\n if (!arg && arg !== 0 && arg !== \"\") return arg;\n if (typeof arg === \"number\") return this.getFormattedNumber(arg);\n if (arg instanceof Date) return this.getFormattedDate(arg, dateIntervalSize);\n if (typeof arg === \"string\") return this.getUIstring(arg);\n }).bind(this);\n }\n isRTL(){\n return !!this.content[this.id].rtl;\n }\n }\n const LocaleService = mobx.decorate(_LocaleService, {\n \"id\": mobx.computed,\n \"status\": mobx.observable\n });\n\n function ui(defaults = {}, config = {}, baseConfig = {}) {\n const _ui = {};\n const defaultKeys = Object.getOwnPropertyNames(defaults);\n const configKeys = Object.getOwnPropertyNames(config);\n const baseConfigKeys = Object.getOwnPropertyNames(baseConfig);\n for (let key of new Set([...defaultKeys, ...configKeys, ...baseConfigKeys])) {\n if (typeof defaults[key] !== \"function\" && (isPlainObject(config[key]) || isPlainObject(baseConfig[key]) || isPlainObject(defaults[key]))) {\n if (!config[key]) mobx.extendObservable(config, {[key] : {}});\n _ui[key] = ui(defaults[key], config[key], baseConfig[key]);\n } else {\n const descriptor = {\n get() {\n return (typeof config[key] !== \"undefined\") ? config[key] :\n (typeof baseConfig[key] !== \"undefined\") ? baseConfig[key] :\n typeof defaults[key] === \"function\" ? deepClone(defaults[key]()) : defaults[key];\n },\n set(value) {\n if (typeof config[key] !== \"undefined\" && value == defaults[key]) {\n if (Object.getOwnPropertyDescriptor(config, key) && Object.getOwnPropertyDescriptor(config, key).configurable)\n delete config[key];\n } else {\n config[key] = value;\n }\n },\n enumerable: true,\n configurable: true\n };\n Object.defineProperty(_ui, key, descriptor);\n }\n }\n return mobx.observable(_ui);\n }\n\n class _BaseComponent {\n constructor({placeholder, model, services, subcomponents, template, id, parent, root, name, ui, default_ui = {}, state, options }){\n this.id = id || \"c0\";\n this.template = template || \"\";\n this.subcomponents = subcomponents || [];\n this.services = services || {};\n this.model = model;\n this.state = state || {};\n this.parent = parent || null;\n this.children = [];\n this.root = root || this;\n this.name = name || \"\";\n this.options = options || {};\n this.reactions = new Map();\n const scope = this.parent && this.parent.element ? this.parent.element : d3__namespace;\n this.element = scope.select(placeholder).html(this.template);\n if(!this.element.node()) console.warn(`\n Vizabi component ${this.constructor.name} id: ${this.id} name: ${this.name} \n can't find placeholder to render: \n ${placeholder} \n Please check that placeholder exists and is correctly specified in the component initialisation.\n `, this);\n this.DEFAULT_UI = deepExtend(default_ui, deepExtend(deepExtend({}, this.constructor.DEFAULT_UI), default_ui));\n this.ui = this.setupUI(this.DEFAULT_UI, ui);\n this.subcomponents.forEach( (comp, index) => {\n if(!comp.type) {\n console.error(`\n Was unable to find a subcomponent \"${comp.name}\"\n while building a component tree in parent \"${this.name}\".\n This can be due to a misconfiguration, error in parent \"subcomponents\" definitions\n or that subcomponent in question isn't registered or available to code. Hard to tell...\n `, comp);\n } else {\n const subcomponent = new comp.type({\n placeholder: comp.placeholder,\n model: comp.model || this.model,\n services: this.services,\n id: this.id + \"-\" + index,\n parent: this,\n root: this.root,\n ui: this.getUI(comp, ui),\n default_ui: comp.default_ui || this.getUI(comp, default_ui),\n state: comp.state,\n name: comp.name,\n template: comp.template,\n options: comp.options,\n });\n this.children.push(subcomponent);\n }\n });\n this.setup(this.options);\n this.addReaction(this.draw);\n this.addReaction(this.loading, true);\n this.addReaction(this.resize);\n }\n getUI(comp, ui) {\n const name = comp.name;\n if (name && !ui[name]) ui[name] = {};\n return name ? ui[name] : ui;\n }\n setupUI(defaults, ui$1, baseUI) {\n return ui(defaults, ui$1, baseUI);\n }\n addReaction(method, ignoreStatus){\n if(!method) return warn(\"Basecomponent: addReaction() method not found\", method);\n if(!this.reactions.has(method)){\n this.reactions.set(method,\n mobx.autorun(() => {\n if(ignoreStatus || this.status === STATUS.READY) method.bind(this)();\n }, {\n name: method.name,\n onError: (err) => {\n this.element.classed(\"vzb-loading-data\", false);\n this.error(err);\n }\n })\n );\n }\n }\n removeReaction(method){\n if(this.reactions.has(method)){\n this.reactions.get(method)();\n this.reactions.delete(method);\n }\n }\n removeAllReactions(){\n this.reactions.forEach((_disposer, method) => this.removeReaction(method));\n }\n findChild({name, id, type}){\n if (this.name === name || this.id === id || this.constructor.name === type) return this;\n return this.children.find(c => c.findChild({name, id, type}));\n }\n deconstruct(){\n if (this.children.length) {\n this.children.forEach(c => {\n c.deconstruct();\n c = void 0;\n });\n }\n this.removeAllReactions();\n if (this.root == this){\n Object.values(this.services).forEach(s => {\n s.deconstruct();\n s = void 0;\n });\n }\n }\n get status() {\n const dependencies = Object.values(this.services).map((m)=>m.status)\n .concat(this.children.map((m)=>m.status))\n .concat(this.model.state);\n if (dependencies.every(dep => dep === STATUS.READY || dep == undefined))\n return STATUS.READY;\n else if (dependencies.some(dep => dep === STATUS.ERROR))\n return STATUS.ERROR;\n else\n return STATUS.PENDING;\n }\n setup() {}\n draw() {}\n loading() {\n if (this.options.showLoading)\n this.element.classed(\"vzb-loading-data\", this.status == STATUS.PENDING);\n }\n error(err) {console.warn(err);}\n resize() {}\n }\n _BaseComponent.DEFAULT_UI = {};\n const BaseComponent = mobx.decorate(_BaseComponent, {\n \"status\": mobx.computed,\n \"state\": mobx.observable\n });\n\n /*!\n * VIZABI BUTTONLIST\n * Reusable buttonlist component\n */\n const class_active$2 = \"vzb-active\";\n const class_hidden = \"vzb-hidden\";\n const class_active_locked = \"vzb-active-locked\";\n const class_unavailable = \"vzb-unavailable\";\n class ButtonList extends BaseComponent {\n constructor(config) {\n super(config);\n }\n setup() {\n this._available_buttons = {\n \"find\": {\n title: \"buttons/find\",\n icon: \"search\",\n required: false\n },\n \"show\": {\n title: \"buttons/show\",\n icon: \"asterisk\",\n required: false\n },\n \"moreoptions\": {\n title: \"buttons/more_options\",\n icon: \"gear\",\n required: true\n },\n \"colors\": {\n title: \"buttons/colors\",\n icon: \"paintbrush\",\n required: false\n },\n \"mapcolors\": {\n title: \"buttons/mapcolors\",\n icon: \"paintbrush\",\n required: false\n },\n \"size\": {\n title: \"buttons/size\",\n icon: \"circle\",\n required: false\n },\n \"zoom\": {\n title: \"buttons/zoom\",\n icon: \"cursorPlus\",\n required: false\n },\n \"fullscreen\": {\n title: \"buttons/expand\",\n icon: \"expand\",\n func: this.toggleFullScreen.bind(this),\n required: true\n },\n \"trails\": {\n title: \"buttons/trails\",\n icon: \"trails\",\n func: this.toggleBubbleTrails.bind(this),\n required: false,\n statebind: \"MDL.trail.show\",\n statebindfunc: this.setBubbleTrails.bind(this)\n },\n \"forecast\": {\n title: \"buttons/forecast\",\n icon: \"forecast\",\n func: this.toggleTimeForecast.bind(this),\n required: false,\n statebind: \"MDL.frame.showForecast\",\n statebindfunc: this.setTimeForecast.bind(this)\n },\n \"lock\": {\n title: \"buttons/lock\",\n icon: \"lock\",\n func: this.toggleBubbleLock.bind(this),\n required: false,\n statebind: \"root.ui.chart.lockNonSelected\",\n statebindfunc: this.setBubbleLock.bind(this)\n },\n \"inpercent\": {\n title: \"buttons/inpercent\",\n icon: \"percent\",\n func: this.toggleInpercent.bind(this),\n required: false,\n statebind: \"root.ui.chart.inpercent\",\n statebindfunc: this.setInpercent.bind(this)\n },\n \"presentation\": {\n title: \"buttons/presentation\",\n icon: \"presentation\",\n func: this.togglePresentationMode.bind(this),\n required: false,\n statebind: \"root.ui.presentation\",\n statebindfunc: this.setPresentationMode.bind(this)\n },\n \"sidebarcollapse\": {\n title: \"buttons/sidebar_collapse\",\n icon: \"angleDoubleLeft\",\n func: this.toggleSidebarCollapse.bind(this),\n required: true,\n statebind: \"root.ui.sidebarCollapse\",\n statebindfunc: this.setSidebarCollapse.bind(this),\n ignoreSize: true\n },\n \"about\": {\n title: \"buttons/about\",\n icon: \"about\",\n required: false\n },\n \"repeat\": {\n title: \"buttons/repeat\",\n icon: \"repeat\",\n required: false\n },\n \"axes\": {\n title: \"buttons/axes\",\n icon: \"axes\",\n required: false\n },\n \"axesmc\": {\n title: \"buttons/axesmc\",\n icon: \"axes\",\n required: false\n },\n \"stack\": {\n title: \"buttons/stack\",\n icon: \"stack\",\n required: false\n },\n \"side\": {\n title: \"buttons/side\",\n icon: \"side\",\n required: false\n },\n \"_default\": {\n title: \"Button\",\n icon: \"asterisk\",\n required: false\n }\n };\n this._active_comp = false;\n this.validatePopupButtons(this.root.ui.buttons.buttons, this.root.ui.dialogs.dialogs);\n this.element.selectAll(\"div\").remove();\n this._prev_body_overflow = document.body.style.overflow;\n if(this.root.ui.buttons.buttons.includes(\"sidebarcollapse\")) this.setSidebarCollapse();\n }\n draw() {\n this.MDL = {\n frame: this.model.encoding.frame\n };\n this.localise = this.services.locale.auto();\n this._dialogs = this.root.findChild({type: \"Dialogs\"});\n if(!this._dialogs) console.warn(\"Buttonlist was unable to find a subcomponent of type 'Dialogs' in root component. Could be that index.js of a tool is lacking a configuration.\");\n const button_expand = (this.root.ui.dialogs.dialogs || {}).sidebar || [];\n const button_list = [].concat(this.root.ui.buttons.buttons);\n this._addButtons(button_list, button_expand);\n this.addReaction(this._localiseButtons);\n this.addReaction(this._toggleButtons);\n this.addReaction(this._bindButtonState);\n }\n _bindButtonState() {\n this.root.ui.buttons.buttons.forEach(buttonId => {\n const button = this._available_buttons[buttonId];\n if (button) {\n if (button.statebind) {\n this.addReaction(() => {\n button.statebindfunc(buttonId, getProp(this, button.statebind.split(\".\")));\n });\n } else {\n this.addReaction(() => {\n const dialog = this._dialogs.findChild({ name: buttonId});\n if (!dialog) return;\n const btn = this.element.selectAll(\".vzb-buttonlist-btn[data-btn='\" + buttonId + \"']\");\n btn.classed(class_active$2, dialog.getOpen());\n });\n }\n }\n });\n this.reactions.get(this._bindButtonState)();\n }\n proceedClick(id) {\n const _this = this;\n const btn_config = _this._available_buttons[id];\n if (btn_config && btn_config.func) {\n btn_config.func(id);\n } else {\n this._dialogs.toggleDialogOpen(id);\n }\n }\n validatePopupButtons(buttons, dialogs) {\n const _this = this;\n const popupDialogs = dialogs.popup;\n const popupButtons = buttons.filter(d => (_this._available_buttons[d] && !_this._available_buttons[d].func));\n for (let i = 0, j = popupButtons.length; i < j; i++) {\n if (popupDialogs.indexOf(popupButtons[i]) == -1) {\n return error('Buttonlist: bad buttons config: \"' + popupButtons[i] + '\" is missing in popups list');\n }\n }\n return false;\n }\n _showAllButtons() {\n const buttons = this.element.selectAll(\".vzb-buttonlist-btn\");\n buttons.each(function() {\n const button = d3__namespace.select(this);\n button.style(\"display\", \"\");\n });\n }\n _localiseButtons() {\n const _this = this;\n this.services.locale.id;\n this.element.selectAll(\"span[data-localise]\").each(function() {\n const view = d3__namespace.select(this);\n view.text(_this.localise(view.attr(\"data-localise\")));\n });\n }\n _toggleButtons() {\n this.services.layout.size;\n const _this = this;\n const root = this.root.element;\n const button_expand = (this.root.ui.dialogs.dialogs || {}).sidebar || [];\n _this._showAllButtons();\n const buttons = this.element.selectAll(\".vzb-buttonlist-btn\");\n const not_required = [];\n const required = [];\n let button_width = 80;\n let button_height = 80;\n let container_width = this.element.node().getBoundingClientRect().width;\n let container_height = this.element.node().getBoundingClientRect().height;\n let buttons_width = 0;\n let buttons_height = 0;\n buttons.filter(d => !d.ignoreSize).each(function(d) {\n const button_data = d;\n const button = d3__namespace.select(this);\n const expandable = button_expand.indexOf(button_data.id) !== -1;\n const button_margin = { top: parseInt(button.style(\"margin-top\")), right: parseInt(button.style(\"margin-right\")), left: parseInt(button.style(\"margin-left\")), bottom: parseInt(button.style(\"margin-bottom\")) };\n button_width = button.node().getBoundingClientRect().width + button_margin.right + button_margin.left;\n button_height = button.node().getBoundingClientRect().height + button_margin.top + button_margin.bottom;\n if (!button.classed(class_hidden)) {\n if (!expandable || _this.services.layout.profile !== \"LARGE\" || _this.ui.sidebarCollapse) {\n buttons_width += button_width;\n buttons_height += button_height;\n if (button_data.required) {\n required.push(button);\n } else {\n not_required.push(button);\n }\n } else {\n button.style(\"display\", \"none\");\n }\n }\n });\n const width_diff = buttons_width - container_width;\n const height_diff = buttons_height - container_height;\n let number_of_buttons = 1;\n if (root.classed(\"vzb-large\") && root.classed(\"vzb-dialog-expand-true\")\n || root.classed(\"vzb-small\") && root.classed(\"vzb-portrait\")) {\n if (width_diff > 0 && width_diff <= 10) {\n container_width += width_diff;\n }\n number_of_buttons = Math.floor(container_width / button_width) - required.length;\n if (number_of_buttons < 0) {\n number_of_buttons = 0;\n }\n } else {\n if (height_diff > 0 && height_diff <= 10) {\n container_height += height_diff;\n }\n number_of_buttons = Math.floor(container_height / button_height) - required.length;\n if (number_of_buttons < 0) {\n number_of_buttons = 0;\n }\n }\n not_required.reverse();\n const hiddenButtons = [];\n for (let i = 0, j = not_required.length - number_of_buttons; i < j; i++) {\n not_required[i].style(\"display\", \"none\");\n hiddenButtons.push(not_required[i].attr(\"data-btn\"));\n }\n this.element.dispatch(\"custom-togglebuttons\",\n { detail: { hiddenButtons } });\n }\n _addButtons(button_list, button_expand) {\n const _this = this;\n this._components_config = [];\n const details_btns = [];\n if (!button_list.length) return;\n for (let i = 0; i < button_list.length; i++) {\n const btn = button_list[i];\n const btn_config = this._available_buttons[btn];\n const d = (btn_config) ? btn : \"_default\";\n const details_btn = clone(this._available_buttons[d]);\n if (d == \"_default\") {\n details_btn.title = \"buttons/\" + btn;\n }\n details_btn.id = btn;\n details_btn.icon = iconset[\"ICON_\" + details_btn.icon.toUpperCase()];\n details_btns.push(details_btn);\n }\n this.element.selectAll(\"button\").data(details_btns)\n .enter().append(\"button\")\n .attr(\"class\", d => {\n let cls = \"vzb-buttonlist-btn\";\n if (button_expand.length > 0) {\n if (button_expand.indexOf(d.id) > -1) {\n cls += \" vzb-dialog-side-btn\";\n }\n }\n return cls;\n })\n .attr(\"data-btn\", d => d.id)\n .html(btn => `\n <span class='vzb-buttonlist-btn-icon fa'>${btn.icon}</span>\n <span class='vzb-buttonlist-btn-title'>\n <span data-localise='${btn.title}'></span>\n </span>\n `);\n const buttons = this.element.selectAll(\".vzb-buttonlist-btn\");\n buttons.on(\"click\", function(event) {\n event.preventDefault();\n event.stopPropagation();\n const id = d3__namespace.select(this).attr(\"data-btn\");\n _this.proceedClick(id);\n });\n }\n scrollToEnd() {\n let target = 0;\n const parent = this.root.element;\n if (parent.classed(\"vzb-portrait\") && parent.classed(\"vzb-small\")) {\n if (this.model.state.marker.select.length > 0) target = this.element.node().scrollWidth;\n this.element.node().scrollLeft = target;\n } else {\n if (this.model.state.marker.select.length > 0) target = this.element.node().scrollHeight;\n this.element.node().scrollTop = target;\n }\n }\n resize() {\n if (!this.element.selectAll) return warn(\"buttonlist resize() aborted because element is not yet defined\");\n if (this.services.layout.profile === \"SMALL\" && this.services.layout.projector) {\n this.togglePresentationMode();\n }\n }\n setButtonActive(id, boolActive) {\n const btn = this.element.selectAll(\".vzb-buttonlist-btn[data-btn='\" + id + \"']\");\n btn.classed(class_active$2, boolActive);\n }\n setButtonUnavailable(id, boolUnavailable) {\n const btn = this.element.selectAll(\".vzb-buttonlist-btn[data-btn='\" + id + \"']\");\n btn.classed(class_unavailable, boolUnavailable);\n }\n toggleSidebarCollapse() {\n this.ui.sidebarCollapse = !this.ui.sidebarCollapse;\n this.setSidebarCollapse();\n this.services.layout._resizeHandler();\n }\n setSidebarCollapse() {\n this.root.element.classed(\"vzb-dialog-expand-true\", !this.ui.sidebarCollapse);\n }\n toggleBubbleTrails() {\n if (this.model.encoding) {\n const trail = this.model.encoding.trail;\n trail.setShow(!trail.show);\n }\n this.setBubbleTrails();\n }\n setBubbleTrails() {\n if (!this.model.encoding) return;\n const trail = this.model.encoding.trail;\n if (!trail) return;\n const id = \"trails\";\n const btn = this.element.selectAll(\".vzb-buttonlist-btn[data-btn='\" + id + \"']\");\n if (!btn.node()) return warn(\"setBubbleTrails: no button '\" + id + \"' found in DOM. doing nothing\");\n btn.classed(class_active_locked, trail.show);\n const anySelected = this.model.encoding.selected.data.filter.any();\n btn.classed(class_hidden, !anySelected);\n }\n toggleTimeForecast() {\n this.root.ui.chart.showForecast = !this.root.ui.chart.showForecast;\n this.setTimeForecast();\n }\n setTimeForecast() {\n const showForecast = this.root.ui.chart.showForecast;\n if (!showForecast && showForecast !== false) return;\n const id = \"forecast\";\n const btn = this.element.selectAll(\".vzb-buttonlist-btn[data-btn='\" + id + \"']\");\n if (!btn.node()) return warn(\"setBubbleTrails: no button '\" + id + \"' found in DOM. doing nothing\");\n btn.classed(class_active_locked, showForecast);\n btn.classed(class_hidden, !this.root.ui.chart.endBeforeForecast);\n }\n toggleBubbleLock() {\n const active = (this.root.ui.chart || {}).lockActive;\n if (!this.model.encoding.selected.data.filter.any() && !active) return;\n let locked = this.root.ui.chart.lockNonSelected;\n const time = this.model.encoding.frame.value;\n locked = locked ? 0 : this.localise(time);\n this.root.ui.chart.lockNonSelected = locked;\n this.setBubbleLock();\n }\n setBubbleLock() {\n let locked = (this.root.ui.chart || {}).lockNonSelected;\n const active = (this.root.ui.chart || {}).lockActive;\n const unavailable = (this.root.ui.chart || {}).lockUnavailable || false;\n if (!locked && locked !== 0) return;\n if (locked !== 0 && this.model.encoding.selected.data.filter.any() && !active) {\n locked = this.root.ui.chart.lockNonSelected = 0;\n }\n const id = \"lock\";\n const btn = this.element.selectAll(\".vzb-buttonlist-btn[data-btn='\" + id + \"']\");\n if (!btn.node()) return warn(\"setBubbleLock: no button '\" + id + \"' found in DOM. doing nothing\");\n btn.classed(class_unavailable, unavailable);\n if (typeof active === \"undefined\") {\n btn.classed(class_hidden, !this.model.encoding.selected.data.filter.any());\n } else {\n btn.classed(class_hidden, !active);\n }\n btn.classed(class_active_locked, locked);\n btn.select(\".vzb-buttonlist-btn-icon\")\n .html(iconset[locked ? \"ICON_LOCK\" : \"ICON_UNLOCK\"]);\n btn.select(\".vzb-buttonlist-btn-title>span\").text(\n locked ? locked : this.localise(\"buttons/lock\")\n )\n .attr(\"data-vzb-translate\", locked ? null : \"buttons/lock\");\n }\n toggleInpercent() {\n this.root.ui.chart.inpercent = !this.root.ui.chart.inpercent;\n this.setInpercent();\n }\n setInpercent() {\n if (typeof ((this.root.ui.chart || {}).inpercent) === \"undefined\") return;\n const id = \"inpercent\";\n const btn = this.element.selectAll(\".vzb-buttonlist-btn[data-btn='\" + id + \"']\");\n btn.classed(class_active_locked, this.root.ui.chart.inpercent);\n }\n togglePresentationMode() {\n this.services.layout.projector = !this.services.layout.projector;\n this.setPresentationMode();\n }\n setPresentationMode() {\n const id = \"presentation\";\n const btn = this.element.selectAll(\".vzb-buttonlist-btn[data-btn='\" + id + \"']\");\n btn.classed(class_active_locked, this.services.layout.projector);\n }\n toggleFullScreen(id, emulateClick) {\n if (!window) return;\n let component = this;\n let pholder = component.root.element.node();\n const btn = this.element.selectAll(\".vzb-buttonlist-btn[data-btn='\" + id + \"']\");\n const fs = !this.ui.fullscreen;\n const body_overflow = (fs) ? \"hidden\" : this._prev_body_overflow;\n if (fs) {\n this.resizeInExitHandler = false;\n launchIntoFullscreen(pholder);\n subscribeFullscreenChangeEvent.call(this, this.toggleFullScreen.bind(this, id, true));\n } else {\n this.resizeInExitHandler = !emulateClick;\n exitFullscreen.call(this);\n }\n this.ui.fullscreen = fs;\n btn.classed(class_active_locked, fs);\n btn.select(\".vzb-buttonlist-btn-icon\").html(iconset[fs ? \"ICON_UNEXPAND\" : \"ICON_EXPAND\"]);\n btn.select(\".vzb-buttonlist-btn-title\").text(\n this.localise(\"buttons/\" + (fs ? \"unexpand\" : \"expand\"))\n )\n .attr(\"data-vzb-translate\", \"buttons/\" + (fs ? \"unexpand\" : \"expand\"));\n document.body.style.overflow = body_overflow;\n if (!this.resizeInExitHandler) this.services.layout._resizeHandler();\n }\n }\n ButtonList.DEFAULT_UI = {\n buttons: [\"fullscreen\"],\n sidebarCollapse: false\n };\n function isFullscreen() {\n if (!window) return false;\n if (window.document.webkitIsFullScreen !== undefined)\n return window.document.webkitIsFullScreen;\n if (window.document.mozFullScreen !== undefined)\n return window.document.mozFullScreen;\n if (window.document.msFullscreenElement !== undefined)\n return window.document.msFullscreenElement;\n return false;\n }\n function exitHandler(emulateClickFunc) {\n if (!isFullscreen()) {\n removeFullscreenChangeEvent.call(this);\n if (!this.resizeInExitHandler) {\n emulateClickFunc();\n } else {\n this.services.layout._resizeHandler();\n }\n }\n }\n function subscribeFullscreenChangeEvent(exitFunc) {\n if (!window) return;\n const doc = window.document;\n this.exitFullscreenHandler = exitHandler.bind(this, exitFunc);\n doc.addEventListener(\"webkitfullscreenchange\", this.exitFullscreenHandler, false);\n doc.addEventListener(\"mozfullscreenchange\", this.exitFullscreenHandler, false);\n doc.addEventListener(\"fullscreenchange\", this.exitFullscreenHandler, false);\n doc.addEventListener(\"MSFullscreenChange\", this.exitFullscreenHandler, false);\n }\n function removeFullscreenChangeEvent() {\n const doc = window.document;\n doc.removeEventListener(\"webkitfullscreenchange\", this.exitFullscreenHandler);\n doc.removeEventListener(\"mozfullscreenchange\", this.exitFullscreenHandler);\n doc.removeEventListener(\"fullscreenchange\", this.exitFullscreenHandler);\n doc.removeEventListener(\"MSFullscreenChange\", this.exitFullscreenHandler);\n }\n function launchIntoFullscreen(elem) {\n if (elem.requestFullscreen) {\n elem.requestFullscreen();\n } else if (elem.msRequestFullscreen) {\n elem.msRequestFullscreen();\n } else if (elem.mozRequestFullScreen) {\n elem.mozRequestFullScreen();\n } else if (elem.webkitRequestFullscreen && allowWebkitFullscreenAPI()) {\n elem.webkitRequestFullscreen();\n }\n }\n function exitFullscreen() {\n if (document.exitFullscreen && document.fullscreenElement) {\n document.exitFullscreen();\n } else if (document.msExitFullscreen) {\n document.msExitFullscreen();\n } else if (document.mozCancelFullScreen) {\n document.mozCancelFullScreen();\n } else if (document.webkitExitFullscreen && allowWebkitFullscreenAPI()) {\n document.webkitExitFullscreen();\n } else {\n removeFullscreenChangeEvent.call(this);\n this.resizeInExitHandler = false;\n }\n }\n function allowWebkitFullscreenAPI() {\n return !(navigator.vendor && navigator.vendor.indexOf(\"Apple\") > -1 &&\n navigator.userAgent && !navigator.userAgent.match(\"CriOS\"));\n }\n\n const CollectionMixin$2 = superClass => class extends superClass {\n static add(name, addedClass) {\n this._collection[name] = addedClass;\n }\n static get(name) { return CollectionMixin$2._collection[name];}\n };\n CollectionMixin$2._collection = {};\n class Button extends CollectionMixin$2(BaseComponent) {\n constructor (config) {\n super(config);\n const {title, icon, func, required, statebind, statebindfunc, ignoreSize} = config;\n this.title = title;\n this.icon = icon;\n this.func = func;\n this.required = required;\n this.statebind = statebind;\n this.statebindfunc = statebindfunc;\n this.ignoreSize = ignoreSize;\n }\n }\n Button.BaseClass = Button;\n\n const CIRCLE_RADIUS = 6;\n function updateRainbowLegend(isVisible) {\n const DOM = this.DOM;\n DOM.rainbowHolder.classed(\"vzb-hidden\", !isVisible);\n if (!isVisible) return;\n const localise = this.localise;\n const colorModel = this.MDL.color.scale;\n const gradientWidth = DOM.rainbow.node().getBoundingClientRect().width;\n const paletteKeys = colorModel.palette.paletteDomain.map(parseFloat);\n const paletteLabels = colorModel.palette.paletteLabels;\n const cScale = colorModel.d3Scale.copy();\n const marginLeft = parseInt(DOM.rainbow.style(\"left\"), 10) || 0;\n const marginRight = parseInt(DOM.rainbow.style(\"right\"), 10) || marginLeft;\n let domain, range, paletteMax;\n if (paletteLabels) {\n domain = paletteLabels.map(val => parseFloat(val));\n paletteMax = d3__namespace.max(domain);\n range = domain.map(val => val / paletteMax * gradientWidth);\n } else {\n domain = cScale.domain();\n paletteMax = d3__namespace.max(paletteKeys);\n range = paletteKeys.map(val => val / paletteMax * gradientWidth);\n }\n const labelsAxis = axisSmart$1(\"bottom\");\n const labelScale = cScale.copy()\n .interpolate(d3__namespace.interpolate)\n .range(range);\n const edgeDomain = d3__namespace.extent(domain);\n const domainScale = labelScale.copy()\n .domain(edgeDomain)\n .range(edgeDomain);\n const paletteScaleLinear = d3__namespace.scaleLinear()\n .domain(edgeDomain)\n .range([0, 100]);\n updateLabelScale();\n updateRainbowCanvas();\n updateSubtitle();\n if (DOM.rainbowLegend.style(\"display\") !== \"none\")\n updateColorStops();\n function updateLabelScale(){\n DOM.labelScaleSVG.style(\"width\", marginLeft + gradientWidth + marginRight + \"px\");\n DOM.labelScaleG.attr(\"transform\", \"translate(\" + marginLeft + \",2)\");\n labelsAxis\n .scale(labelScale)\n .tickSizeOuter(5)\n .tickPadding(8)\n .tickSizeMinor(3, -3)\n .labelerOptions({\n scaleType: colorModel.type,\n toolMargin: {\n right: marginRight,\n left: marginLeft\n },\n showOuter: false,\n formatter: localise,\n bump: marginLeft,\n cssFontSize: \"8px\",\n fitIntoScale: paletteLabels ? \"optimistic\" : null\n });\n DOM.labelScaleG.call(labelsAxis);\n }\n function updateRainbowCanvas(){\n DOM.rainbow\n .style(\"top\", 3 + CIRCLE_RADIUS + \"px\");\n DOM.rainbowCanvas\n .attr(\"width\", gradientWidth)\n .attr(\"height\", 1)\n .style(\"width\", gradientWidth + \"px\")\n .style(\"height\", \"100%\");\n const context = DOM.rainbowCanvas.node().getContext(\"2d\");\n const image = context.createImageData(gradientWidth, 1);\n for (let i = 0, j = -1, c; i < gradientWidth; ++i) {\n c = d3__namespace.rgb(cScale(labelScale.invert(i)));\n image.data[++j] = c.r;\n image.data[++j] = c.g;\n image.data[++j] = c.b;\n image.data[++j] = 255;\n }\n context.putImageData(image, 0, 0);\n }\n function updateSubtitle(){\n const conceptProps = colorModel.parent.data.conceptProps;\n const subtitle = getSubtitle(conceptProps.name, conceptProps.name_short);\n DOM.subtitleText\n .classed(\"vzb-hidden\", subtitle == \"\")\n .text(subtitle);\n DOM.subtitleReset\n .text(localise(\"buttons/reset\"))\n .classed(\"vzb-hidden\", !Object.keys(colorModel.palette.config.palette).length)\n .on(\"click\", () => {\n mobx.runInAction(()=>{\n Object.keys(colorModel.palette.config.palette)\n .forEach(d => colorModel.palette.removeColor(d));\n });\n });\n }\n function updateColorStops(){\n DOM.rainbowLegend\n .style(\"width\", gradientWidth + \"px\")\n .style(\"left\", (marginLeft - CIRCLE_RADIUS) + \"px\")\n .style(\"top\", \"3px\");\n DOM.labelScale.selectAll(\".vzb-axis-value text\")\n .attr(\"dy\", \"1.5em\");\n DOM.rainbowLegendEventArea\n .style(\"width\", gradientWidth + \"px\")\n .style(\"top\", 3 + CIRCLE_RADIUS + \"px\")\n .style(\"left\", CIRCLE_RADIUS + \"px\")\n .on(\"mousemove\", function(event) {\n highlightValue(labelScale.invert(d3__namespace.pointer(event)[0]));\n })\n .on(\"mouseleave\", () => highlightValue(\"none\"))\n .on(\"dblclick\", function(event) {\n let x = d3__namespace.pointer(event)[0];\n x = x <= (CIRCLE_RADIUS * 2) ? CIRCLE_RADIUS * 2 : x >= (gradientWidth - CIRCLE_RADIUS * 2) ? gradientWidth - CIRCLE_RADIUS * 2 : x;\n const newValue = labelScale.invert(x);\n const color = cScale(newValue);\n const paletteKey = getPaletteKey(newValue);\n colorModel.palette.setColor(color, paletteKey);\n });\n if (!d3__namespace.extent(domain).includes(0)) {\n DOM.labelScaleG.selectAll(\".tick text\")\n .filter(function() { return d3__namespace.select(this).text() === \"0\"; })\n .style(\"cursor\", \"pointer\")\n .on(\"dblclick\", () => {\n const color = cScale(0);\n const paletteKey = getPaletteKey(0);\n colorModel.palette.setColor(color, paletteKey);\n });\n }\n const value0 = d3__namespace.min(domain) < 0 && d3__namespace.max(domain) > 0 ? labelScale(0) : null;\n const colorStops = domain.map((val, i) => ({\n val,\n i,\n value0,\n isEdgePoint: i === 0 || i === domain.length - 1,\n color: cScale.range()[i],\n paletteKey: paletteKeys[i],\n xMin: i - 1 < 0 ? 1 : labelScale(domain[i - 1]) + CIRCLE_RADIUS * 2,\n xMax: i + 1 >= domain.length ? gradientWidth - 1 : labelScale(domain[i + 1]) - CIRCLE_RADIUS * 2\n }));\n let dblclick = false;\n let lastClickId;\n let rainbowLegendCircles = DOM.rainbowLegend.selectAll(\".vzb-cl-rainbow-legend-circle\")\n .data(colorStops, d => d.i);\n rainbowLegendCircles.exit().remove();\n rainbowLegendCircles = rainbowLegendCircles.enter().append(\"div\")\n .attr(\"class\", \"vzb-cl-rainbow-legend-circle\")\n .style(\"width\", 2 * CIRCLE_RADIUS + \"px\")\n .style(\"height\", 2 * CIRCLE_RADIUS + \"px\")\n .style(\"border\", \"1px solid #000\")\n .each(function(){\n d3__namespace.select(this).append(\"input\")\n .attr(\"type\", \"color\");\n })\n .merge(rainbowLegendCircles);\n rainbowLegendCircles\n .style(\"border-radius\", d => d.isEdgePoint ? null : (CIRCLE_RADIUS + \"px\"))\n .call(dragCircles())\n .on(\"mouseenter\", d => {\n highlightValue(d.val);\n })\n .on(\"mouseleave\", () => {\n highlightValue(\"none\");\n })\n .on(\"click\", function(){\n const input = d3__namespace.select(this).select(\"input\").node();\n lastClickId = setTimeout(() => {\n if (!dblclick){\n input.click();\n } else {\n clearTimeout(lastClickId);\n dblclick = false;\n }\n }, 500);\n })\n .on(\"dblclick\", function(event, d){\n dblclick = true;\n if (d.isEdgePoint) return;\n removeColor(d.paletteKey);\n })\n .each(function(d) {\n d3__namespace.select(this).select(\"input\").property(\"value\", d.color)\n .on(\"click\", (event)=>{event.stopPropagation();})\n .on(\"input\", function(){\n const value = d3__namespace.select(this).property(\"value\");\n setColor(value, d.paletteKey);\n });\n d3__namespace.select(this).style(\"left\", (d.x = labelScale(d.val)) + \"px\");\n });\n }\n function dragCircles() {\n return d3__namespace.drag()\n .on(\"start\", function start(event) {\n const circle = d3__namespace.select(this);\n let dragged = false;\n circle.classed(\"dragging\", true);\n event.on(\"drag\", drag).on(\"end\", end);\n function drag(event, d) {\n if (d.isEdgePoint) return;\n if (event.x < 0) return;\n if (event.x > gradientWidth) return;\n if (event.x < d.xMin || event.x > d.xMax) return;\n if (!dragged && event.dx !== 0) dragged = true;\n d.x = event.x;\n if (d.value0 !== null) {\n d.x = (d.x < d.value0 - 3 || d.x > d.value0 + 3) ? d.x : d.value0;\n }\n circle.style(\"left\", d.x + \"px\");\n if (dragged) {\n const newValue = labelScale.invert(d.x);\n const paletteKey = getPaletteKey(newValue);\n highlightValue(newValue);\n if(d.paletteKey !== paletteKey){\n replaceColor(d.color, d.paletteKey, paletteKey);\n d.val = newValue;\n d.paletteKey = paletteKey;\n }\n }\n }\n function end() {\n circle.classed(\"dragging\", false);\n }\n });\n }\n function getPaletteKey(value){\n return Math.round(+paletteScaleLinear(domainScale(value)));\n }\n function highlightValue(value){\n DOM.labelScaleG.call(labelsAxis.highlightValue(value));\n }\n function setColor(value, key){\n colorModel.palette.setColor(value, key);\n }\n function removeColor(key){\n if (colorModel.palette.defaultPalette[key])\n colorModel.palette.setColor(null, key);\n else\n colorModel.palette.removeColor(key);\n }\n function replaceColor(value, oldKey, newKey){\n mobx.runInAction(()=>{\n removeColor(oldKey);\n setColor(value, newKey);\n });\n }\n }\n\n class _AddGeo extends BaseComponent {\n constructor(config){\n config.template = `\n <div class=\"vzb-addgeo-background vzb-hidden\"></div>\n <div class=\"vzb-addgeo-button\"></div>\n <input class=\"vzb-addgeo-searchbox vzb-hidden\" type=\"search\" required=\"\" placeholder=\"Search...\">\n <ul class=\"vzb-addgeo-matches vzb-hidden\"></ul>\n </div>\n `;\n config.subcomponents = [];\n super(config);\n }\n setup(options) {\n const _this = this;\n this.DOM = {\n background: this.element.select(\".vzb-addgeo-background\"),\n button: this.element.select(\".vzb-addgeo-button\"),\n searchbox: this.element.select(\".vzb-addgeo-searchbox\"),\n matches: this.element.select(\".vzb-addgeo-matches\")\n };\n this.catalog = [];\n this.entitySetsColorScale = d3__namespace.scaleOrdinal(d3__namespace.schemePastel2);\n this.element.classed(\"vzb-hidden\", true);\n this.DOM.button.on(\"click\", () => {\n _this.DOM.searchbox.classed(\"vzb-hidden\", false).node().focus();\n _this.DOM.background.classed(\"vzb-hidden\", false);\n _this.root.children.forEach(c => {\n c.element.classed(\"vzb-blur\", c != _this);\n });\n });\n this.DOM.searchbox.on(\"keyup\", function(event){\n _this.search(this.value);\n if(event.key === \"Escape\") {\n _this.cancelSearch();\n }\n });\n this.DOM.background.on(\"click\", () => {\n this.cancelSearch();\n });\n this.PROFILE_CONSTANTS = options.PROFILE_CONSTANTS;\n this.PROFILE_CONSTANTS_FOR_PROJECTOR = options.PROFILE_CONSTANTS_FOR_PROJECTOR;\n this.xAlign = options.xAlign;\n this.yAlign = options.yAlign;\n }\n draw(){\n this.localise = this.services.locale.auto();\n this.addReaction(this.buildList);\n this.addReaction(this.updateSize);\n this.addReaction(this.redraw);\n }\n redraw(){\n this.element.classed(\"vzb-hidden\", this.activePreset.mode !== \"show\");\n this.DOM.button.text(this.localise(\"buttons/addgeo\"));\n this.DOM.searchbox.attr(\"placeholder\", this.localise(\"buttons/addgeo\"));\n }\n updateSize() {\n this.services.layout.size;\n this.profileConstants = this.services.layout.getProfileConstants(this.PROFILE_CONSTANTS, this.PROFILE_CONSTANTS_FOR_PROJECTOR);\n const {\n margin,\n dy,\n dx,\n } = this.profileConstants;\n this.element.style(\"top\", this.yAlign == \"top\" ? margin.top + (dy||0) + \"px\" : null);\n this.element.style(\"bottom\", this.yAlign == \"bottom\" ? margin.bottom + (dy||0) + \"px\" : null);\n this.element.style(\"left\", this.xAlign == \"left\" ? margin.left + (dx||0) + \"px\" : null);\n this.element.style(\"right\", this.xAlign == \"right\" ? margin.right + (dx||0) + \"px\" : null);\n }\n get activePreset(){\n const PRESETS = mobx.toJS(this.root.model.config.presets) || PRESETS_DEFAULT;\n PRESETS.flat().forEach(p => {\n p.score = computeObjectsSimilarityScore(p.config, mobx.toJS(this.model.config), \"is--\");\n });\n const topScore = d3__namespace.max(PRESETS.flat(), d => d.score);\n return PRESETS.flat().find(f => f.score === topScore);\n }\n buildList(){\n this.model.data.spaceCatalog.then(spaceCatalog => {\n for (const dim in spaceCatalog) {\n const filterSpec = this.model.encoding.show.data.filter.dimensions[dim];\n if (spaceCatalog[dim].entities) this.catalog = [...spaceCatalog[dim].entities.filter(filterSpec).values()];\n } });\n }\n cancelSearch(){\n this.DOM.searchbox.classed(\"vzb-hidden\", true);\n this.DOM.searchbox.node().value = \"\";\n this.DOM.matches.selectAll(\"li\").remove();\n this.DOM.matches.classed(\"vzb-hidden\", true);\n this.DOM.background.classed(\"vzb-hidden\", true);\n this.root.children.forEach(c => {\n c.element.classed(\"vzb-blur\", false);\n });\n }\n search(string){\n if(!string || string.length < 3) {\n this.DOM.matches.selectAll(\"li\").remove();\n this.DOM.matches.classed(\"vzb-hidden\", true);\n return;\n }\n const matches = this.catalog.filter(f => f.name.toLowerCase().trim().includes(string.toLowerCase().trim()) || f[Symbol.for(\"key\")].includes(string.toLowerCase().trim()))\n .map(d => {\n d.isness = Object.keys(d).filter(f => f.includes(\"is--\") && d[f]).map(m => {\n return {\n id: m,\n name: this.model.data.source.getConcept(m.replace(\"is--\",\"\"))?.name\n }\n });\n return d;\n })\n .sort((x, y) => d3__namespace.ascending(x.isness.map(k => k.id).join(), y.isness.map(k => k.id).join()));\n this.DOM.matches.classed(\"vzb-hidden\", !matches.length);\n this.DOM.matches.selectAll(\"li\").remove();\n this.DOM.matches.selectAll(\"li\")\n .data(matches)\n .enter().append(\"li\")\n .html((d) => {\n return d.name + d.isness.map(m => `<span class=\"vzb-dialog-isness\" style=\"background-color:${this.entitySetsColorScale(m.id)}\">${m.name}</span>`).join(\"\");\n })\n .on(\"click\", (event, d) => {\n this.model.data.filter.addToDimensionsFirstINstatement(d, this.activePreset.loosePath);\n this.cancelSearch();\n });\n }\n }\n const AddGeo = mobx.decorate(_AddGeo, {\n \"activePreset\": mobx.computed\n });\n\n class DataNotes extends BaseComponent {\n constructor(config) {\n super(config);\n }\n setup() {\n this.state = {\n };\n this.DOM = {\n };\n this.hidden = true;\n this.showNotes = false;\n this.pinned = false;\n this.left = 0;\n this.top = 0;\n this.encoding = null;\n this.element.classed(\"vzb-hidden\", this.hidden);\n this.element.append(\"div\")\n .html(ICON_CLOSE)\n .on(\"click\", (event) => {\n event.stopPropagation();\n this.close();\n })\n .select(\"svg\")\n .attr(\"width\", \"0px\")\n .attr(\"height\", \"0px\")\n .attr(\"class\", \"vzb-data-notes-close\")\n .classed(\"vzb-hidden\", true);\n this.element.append(\"div\")\n .attr(\"class\", \"vzb-data-notes-body vzb-dialog-scrollable\");\n this.element.append(\"div\")\n .attr(\"class\", \"vzb-data-notes-link\");\n }\n draw() {\n this.localise = this.services.locale.auto();\n this.addReaction(this.setValues);\n this.addReaction(this.resize);\n }\n resize(){\n this.services.layout.size;\n this.close();\n }\n setEncoding(enc) {\n this.encoding = enc;\n this.setValues();\n return this;\n }\n setValues() {\n if (!this.encoding) return;\n const { description, source_url, source } = this.encoding.data.conceptProps;\n this.element.select(\".vzb-data-notes-body\")\n .classed(\"vzb-hidden\", !description)\n .text(replaceNumberSpacesToNonBreak(description));\n const label = this.localise(\"hints/source\");\n this.element.select(\".vzb-data-notes-link\")\n .classed(\"vzb-hidden\", !source_url)\n .html(\"<span>\" + (source ? (label + \": \") : \"\")\n + '<a href=\"' + normaliseLink(source_url) + '\" target=\"_blank\">' + (source ? source : label)\n + \"</a></span>\");\n this.showNotes = source_url || description;\n }\n setPos(_left, _top, force) {\n this.left = _left;\n this.top = _top;\n if (this.pinned && !force) return this;\n const parentHeight = this.parent.element.node().offsetHeight;\n const width = this.element.node().offsetWidth;\n const height = this.element.node().offsetHeight;\n let leftMove;\n let topMove;\n let leftPos = this.left - width;\n let topPos = this.top;\n if (leftPos < 10) {\n leftPos = 10;\n leftMove = true;\n }\n if ((topPos + height + 10) > parentHeight) {\n topPos = parentHeight - height - 10;\n topMove = true;\n }\n if (leftMove && topMove) {\n topPos = this.top - height - 30;\n }\n this.element.style(\"top\", topPos + \"px\");\n this.element.style(\"left\", leftPos + \"px\");\n return this;\n }\n pin(arg) {\n if (this.hidden) return this;\n this.pinned = !this.pinned;\n if (arg != null) this.pinned = arg;\n this.element.select(\".vzb-data-notes-close\").classed(\"vzb-hidden\", !this.pinned);\n this.element.classed(\"vzb-data-notes-pinned\", this.pinned);\n this.element.select(\".vzb-data-notes-body\").node().scrollTop = 0;\n return this.showNotes ?\n this.setPos(this.left, this.top, true) :\n this.hide();\n }\n toggle(arg) {\n if (this.pinned) return this;\n if (arg == null) arg = !this.hidden;\n this.hidden = arg;\n this.element.classed(\"vzb-hidden\", this.hidden || !this.showNotes);\n return this;\n }\n show() {\n return this.toggle(false);\n }\n hide() {\n return this.toggle(true);\n }\n close() {\n if (!this.hidden) {\n this.pin(false).hide();\n }\n }\n }\n\n /*!\n * VIZABI BUBBLE SIZE slider\n * Reusable bubble size slider\n */\n const OPTIONS$6 = {\n EXTENT_MIN: 0,\n EXTENT_MAX: 1,\n BAR_WIDTH: 6,\n THUMB_HEIGHT: 20,\n THUMB_STROKE_WIDTH: 4,\n INTRO_DURATION: 250,\n ROUND_DIGITS: 2,\n value: \"extent\",\n setValueFunc: null,\n submodel: null,\n submodelFunc: null,\n PROFILE_CONSTANTS: {\n SMALL: {\n },\n MEDIUM: {\n },\n LARGE: {\n }\n },\n PROFILE_CONSTANTS_FOR_PROJECTOR: {\n SMALL: {\n },\n MEDIUM: {\n },\n LARGE: {\n }\n }\n };\n class BrushSlider extends BaseComponent {\n constructor (config) {\n config.template = `\n <div class=\"vzb-slider-holder\">\n <svg class=\"vzb-slider-svg\">\n <g class=\"vzb-slider-wrap\">\n <g class=\"vzb-slider\">\n </g>\n </g>\n </svg>\n </div> \n `;\n super(config);\n this._setModel = throttle(this._setModel, 50);\n }\n setup(_options) {\n this.type = this.type || \"brushslider\";\n this.DOM = {\n sliderSvg: this.element.select(\".vzb-slider-svg\"),\n sliderWrap: this.element.select(\".vzb-slider-wrap\"),\n slider: this.element.select(\".vzb-slider\")\n };\n this.DOM.slider.classed(\"vzb-slider-\" + this.constructor.name.toLowerCase(), true);\n const options = this.options = deepExtend(deepExtend({}, OPTIONS$6), _options || {});\n this.value = options.value;\n this.submodel = options.submodel;\n this.submodelFunc = options.submodelFunc;\n this.setValueFunc = options.setValueFunc;\n this.padding = this._getPadding();\n this.rescaler = d3__namespace.scaleLinear()\n .domain([options.EXTENT_MIN, options.EXTENT_MAX])\n .clamp(true);\n this.brushEventListeners = this._getBrushEventListeners();\n this.brush = d3__namespace.brushX()\n .handleSize(this._getHandleSize())\n .on(\"start\", this.brushEventListeners.start)\n .on(\"brush\", this.brushEventListeners.brush)\n .on(\"end\", this.brushEventListeners.end);\n this.DOM.sliderThumbs = this.DOM.slider.selectAll(\".handle\")\n .data([{ type: \"w\" }, { type: \"e\" }], d => d.type)\n .enter().append(\"svg\").attr(\"class\", d => \"handle handle--\" + d.type + \" \" + d.type)\n .classed(\"vzb-slider-thumb\", true);\n this._createThumbs(\n this.DOM.sliderThumbs.append(\"g\")\n .attr(\"class\", \"vzb-slider-thumb-badge\")\n );\n this.DOM.slider\n .call(this.brush);\n const barWidth = options.BAR_WIDTH;\n this.DOM.slider.selectAll(\".selection,.overlay\")\n .attr(\"height\", barWidth)\n .attr(\"rx\", barWidth * 0.25)\n .attr(\"ry\", barWidth * 0.25)\n .attr(\"transform\", \"translate(0,\" + (-barWidth * 0.5) + \")\");\n }\n get MDL() {\n return {\n model: this._getModel()\n };\n }\n draw() {\n this.localise = this.services.locale.auto();\n if(this.element.classed(\"vzb-hidden\")) return;\n if(this._updateLayoutProfile()) return;\n this.addReaction(this._updateSize);\n this.addReaction(this._updateView);\n }\n _updateLayoutProfile(){\n this.services.layout.size;\n this.profileConstants = this.services.layout.getProfileConstants(this.options.PROFILE_CONSTANTS, this.options.PROFILE_CONSTANTS_FOR_PROJECTOR);\n this.height = (this.element.node().clientHeight) || 0;\n this.width = (this.element.node().clientWidth) || 0;\n if (!this.height || !this.width) return warn(\"Slider _updateProfile() abort: container is too little or has display:none\");\n }\n _getPadding() {\n const halfThumbHeight = this.options.THUMB_HEIGHT * 0.5;\n return {\n top: this.options.BAR_WIDTH * 0.5,\n left: halfThumbHeight,\n right: halfThumbHeight,\n bottom: halfThumbHeight + this.options.THUMB_STROKE_WIDTH\n };\n }\n _getHandleSize() {\n return this.options.THUMB_HEIGHT + this.options.BAR_WIDTH * 2;\n }\n _getComponentWidth() {\n const width = this.element.node().offsetWidth - this.padding.left - this.padding.right;\n return width < 0 ? 0 : width;\n }\n _getComponentHeight() {\n return this.options.BAR_WIDTH;\n }\n _getBrushEventListeners() {\n const _this = this;\n return {\n start: (event) => {\n if (_this.nonBrushChange || !event.sourceEvent) return;\n this._savedSelection = event.selection;\n this._setFromExtent(false, false, false);\n },\n brush: (event) => {\n if (this.nonBrushChange || !event.sourceEvent) return;\n this._savedSelection = event.selection;\n this._setFromExtent(true, false, false);\n },\n end: (event) => {\n if (this.nonBrushChange || !event.sourceEvent) return;\n if (event.selection === null) {\n this.DOM.slider.call(this.brush.move, this._savedSelection);\n }\n this._setFromExtent(true, true);\n this._savedSelection = void 0;\n }\n };\n }\n _createThumbs(thumbsEl) {\n const barWidth = this.options.BAR_WIDTH;\n const halfThumbHeight = this.options.THUMB_HEIGHT * 0.5;\n thumbsEl.append(\"path\")\n .attr(\"d\", \"M\" + (halfThumbHeight + barWidth) + \" \" + (halfThumbHeight + barWidth * 1.5) + \"l\" + (-halfThumbHeight) + \" \" + (halfThumbHeight * 1.5) + \"h\" + (halfThumbHeight * 2) + \"Z\");\n }\n _updateThumbs() {\n }\n _updateSize() {\n this.services.layout.size;\n const svgWidth = this._getComponentWidth() + this.padding.left + this.padding.right;\n this.DOM.sliderSvg\n .attr(\"height\", this._getComponentHeight() + this.padding.top + this.padding.bottom)\n .attr(\"width\", svgWidth);\n this.DOM.sliderWrap\n .attr(\"transform\", this.isRTL ? \"translate(\" + (svgWidth - this.padding.right) + \",\" + this.padding.top + \") scale(-1,1)\" :\n \"translate(\" + this.padding.left + \",\" + this.padding.top + \")\");\n this._updateRescaler();\n }\n _updateRescaler() {\n const componentWidth = this._getComponentWidth();\n this.rescaler.range([0, componentWidth]);\n }\n _getModel() {\n if (this.submodelFunc) {\n return this.submodelFunc.call(this.model);\n } else if (this.submodel) {\n const model = getProp(this, this.submodel.split(\".\"));\n if (!model) console.error(`Slider inside ${this.parent.name || this.parent.constructor.name} was not able to access part of model ${this.submodel}`);\n return model;\n } else {\n return this.model;\n }\n }\n _updateView() {\n this.services.layout.size;\n const value = this.MDL.model[this.value];\n if (!value && value!==0 && value!==false)\n console.error(`Slider inside ${this.parent.name || this.parent.constructor.name} was unable to access value ${this.value} in its model`);\n this.DOM.slider.call(this.brush.extent([[0, 0], [this._getComponentWidth(), this._getComponentHeight()]]));\n const extent = this._valueToExtent(value) || [this.options.EXTENT_MIN, this.options.EXTENT_MAX];\n this._moveBrush(extent);\n this._updateThumbs(extent);\n }\n _moveBrush(s) {\n const _s = s.map(this.rescaler);\n this.nonBrushChange = true;\n this.DOM.slider.call(this.brush.move, [_s[0], _s[1]]);\n this.nonBrushChange = false;\n this._setFromExtent(false, false, false);\n }\n _valueToExtent(value) {\n return value;\n }\n _extentToValue(extent) {\n return extent;\n }\n _setFromExtent(setModel, force, persistent) {\n let s = d3__namespace.brushSelection(this.DOM.slider.node());\n if (!s) return;\n s = [this.rescaler.invert(s[0]), this.rescaler.invert(s[1])];\n this._updateThumbs(s);\n if (setModel) this._setModel(s, force, persistent);\n }\n _setModel(value) {\n const roundDigits = this.options.ROUND_DIGITS;\n value = [+value[0].toFixed(roundDigits), +value[1].toFixed(roundDigits)];\n if (this.setValueFunc) {\n this.MDL.model[this.setValueFunc](this._extentToValue(value));\n } else {\n this.MDL.model[this.value] = this._extentToValue(value);\n }\n }\n }\n const decorated$a = mobx.decorate(BrushSlider, {\n \"MDL\": mobx.computed\n });\n\n class DateTimeBackground extends BaseComponent {\n setup(conditions) {\n this.DOM = {\n svg: this.element.append(\"svg\"),\n };\n this.DOM.group = this.DOM.svg.append(\"g\");\n this.DOM.textEl = this.DOM.group.append(\"text\").style(\"font-size\", \"20px\");\n this.DOM.sampleTextEl = this.DOM.group.append(\"text\").style(\"font-size\", \"20px\").style(\"opacity\", 0);\n this.element.classed(\"vzb-datetime-background\", true);\n this.width = 0;\n this.height = 0;\n this.topOffset = 0;\n this.leftOffset = 0;\n this.bottomOffset = 0;\n this.rightOffset = 0;\n this.textWidth = 0;\n this.textHeight = 0;\n this.widthRatio = 0.9;\n this.heightRatio = 0.9;\n this.xAlign = \"center\";\n this.yAlign = \"center\";\n if (conditions) this.setConditions(conditions);\n }\n updateLayoutProfile(){\n this.services.layout.size;\n this.height = this.element.node().clientHeight || 0;\n this.width = this.element.node().clientWidth || 0;\n if (!this.height || !this.width) return warn(\"Chart _updateProfile() abort: container is too little or has display:none\");\n }\n setConditions(conditions) {\n if (!isNaN(parseFloat(conditions.rightOffset)) && isFinite(conditions.rightOffset))\n this.rightOffset = conditions.rightOffset;\n if (!isNaN(parseFloat(conditions.leftOffset)) && isFinite(conditions.leftOffset))\n this.leftOffset = conditions.leftOffset;\n if (!isNaN(parseFloat(conditions.topOffset)) && isFinite(conditions.topOffset))\n this.topOffset = conditions.topOffset;\n if (!isNaN(parseFloat(conditions.bottomOffset)) && isFinite(conditions.bottomOffset))\n this.bottomOffset = conditions.bottomOffset;\n if (conditions.xAlign)\n this.xAlign = conditions.xAlign;\n if (conditions.yAlign)\n this.yAlign = conditions.yAlign;\n if (!isNaN(parseFloat(conditions.widthRatio)) && conditions.widthRatio > 0 && conditions.widthRatio <= 1)\n this.widthRatio = conditions.widthRatio;\n if (!isNaN(parseFloat(conditions.heightRatio)) && conditions.heightRatio > 0 && conditions.heightRatio <= 1)\n this.heightRatio = conditions.heightRatio;\n return this;\n }\n get MDL() {\n return {\n frame: this.model.encoding.frame\n };\n }\n get duration(){\n if(!this.MDL.frame || !this.MDL.frame.playing) return 0;\n this.frameValue_1 = this.frameValue;\n this.frameValue = this.MDL.frame.value;\n return this.frameValue > this.frameValue_1 ? this.MDL.frame.speed : 0;\n }\n draw() {\n this.localise = this.services.locale.auto(this.MDL.frame.interval);\n if (this.updateLayoutProfile()) return;\n this.addReaction(this.updateText);\n this.addReaction(this.updateSize);\n }\n updateText() {\n this.setText(this.MDL.frame.value, this.duration);\n }\n updateSize() {\n this.services.layout.size;\n this._resizeText();\n }\n resizeText(width, height, topOffset, leftOffset) {\n this.width = parseInt(width, 10) || 0;\n this.height = parseInt(height, 10) || 0;\n if (topOffset) {\n this.topOffset = topOffset;\n }\n if (leftOffset) {\n this.leftOffset = leftOffset;\n }\n this._resizeText();\n }\n setText(text, delay = 0) {\n const {\n textEl,\n sampleTextEl\n } = this.DOM;\n text = this.localise(text);\n const callback = () => {\n sampleTextEl.text(text);\n this._resizeText();\n textEl.text(text);\n };\n const clear = () => {\n clearTimeout(this._text.timeout);\n delete this._text;\n };\n if (!delay) {\n if (this._text) {\n clear();\n }\n callback();\n } else {\n if (this._text) {\n this._text.callback();\n clear();\n }\n this._text = {\n callback,\n timeout: setTimeout(() => {\n callback();\n clear();\n }, delay)\n };\n }\n return this;\n }\n _resizeText() {\n const {\n textEl,\n sampleTextEl\n } = this.DOM;\n const bbox = sampleTextEl.node().getBBox();\n if (!bbox.width || !bbox.height || !this.width || !this.height) return this;\n const widthTransform = this.width * this.widthRatio / bbox.width;\n const heightTransform = this.height * this.heightRatio / bbox.height;\n this.scalar = Math.min(widthTransform, heightTransform);\n textEl.attr(\"transform\", \"scale(\" + this.scalar + \")\");\n this.textHeight = bbox.height * this.scalar;\n this.textWidth = bbox.width * this.scalar;\n switch (this.yAlign) {\n case \"bottom\": textEl.attr(\"dy\", \".325em\"); break;\n case \"center\": textEl.attr(\"dy\", \".325em\"); break;\n case \"top\": textEl.attr(\"dy\", \"0\"); break;\n }\n this.DOM.group.attr(\"transform\", \"translate(\" + this._getLeftOffset() + \",\" + this._getTopOffset() + \")\");\n return this;\n }\n _getLeftOffset() {\n switch (this.xAlign) {\n case \"right\":\n return this.width - this.textWidth / 2 - this.rightOffset;\n case \"left\":\n return this.textWidth / 2 + this.leftOffset;\n default :\n return this.width / 2;\n }\n }\n _getTopOffset() {\n switch (this.yAlign) {\n case \"top\":\n return this.textHeight / 2 + this.topOffset;\n case \"bottom\":\n return this.height - this.textHeight / 2 - this.bottomOffset;\n default :\n return this.height / 2;\n }\n }\n }\n const decorated$9 = mobx.decorate(DateTimeBackground, {\n \"MDL\": mobx.computed,\n \"duration\": mobx.computed\n });\n\n /*!\n * VIZABI DIALOG\n * Reusable Dialog component\n */\n const PROFILE_CONSTANTS$3 = {\n SMALL: {},\n MEDIUM: {},\n LARGE: {}\n };\n const PROFILE_CONSTANTS_FOR_PROJECTOR$3 = {\n SMALL: {},\n MEDIUM: {},\n LARGE: {}\n };\n const CollectionMixin$1 = superClass => class extends superClass {\n static add(name, addedClass) {\n CollectionMixin$1._collection[name] = addedClass;\n }\n static get(name) { return CollectionMixin$1._collection[name];}\n };\n CollectionMixin$1._collection = {};\n class Dialog extends CollectionMixin$1(BaseComponent) {\n constructor(config) {\n super(config);\n }\n setup() {\n this.DOM = {\n dialog: this.element.select(\".vzb-dialog-modal\"),\n title: this.element.select(\".vzb-dialog-modal>.vzb-dialog-title\"),\n buttons: d3__namespace.select(this.element.selectAll(\".vzb-dialog-modal>.vzb-dialog-buttons\").nodes().pop()),\n content: this.element.select(\".vzb-dialog-modal > .vzb-dialog-content\"),\n dragHandler: this.element.select(\"[data-click='dragDialog']\"),\n pinIcon: this.element.select(\"[data-click='pinDialog']\")\n };\n this.transitionEvents = [\"webkitTransitionEnd\", \"transitionend\", \"msTransitionEnd\", \"oTransitionEnd\"];\n this.state[\"opened\"] = false;\n const _this = this;\n this.DOM.dragHandler.html(ICON_DRAG);\n this.DOM.pinIcon.html(ICON_PIN);\n this.DOM.pinIcon.on(\"click\", () => {\n this.setPin(!this.getPin());\n });\n const dg = dialogDrag(this.element, this.root.element, 10);\n const dragBehavior = d3__namespace.drag()\n .on(\"start\", (event) => {\n const topPos = _this.element.node().offsetTop;\n _this.element.style(\"top\", topPos + \"px\");\n _this.element.style(\"bottom\", \"auto\");\n _this.element.dispatch(\"custom-dragstart\");\n dg.dragStart(event);\n })\n .on(\"drag\", (event) => {\n _this.element.dispatch(\"custom-drag\");\n dg.drag(event);\n })\n .on(\"end\", () => {\n _this.rightPos = _this.element.style(\"right\");\n _this.topPos = _this.element.style(\"top\");\n _this.element.dispatch(\"custom-dragend\");\n });\n this.DOM.dragHandler.call(dragBehavior);\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 };\n }\n draw() {\n this.localise = this.services.locale.auto();\n this._localiseDialogTexts();\n if (this._updateLayoutProfile()) return;\n this.addReaction(this._pinButtonUpdate);\n this.addReaction(this._updateSize);\n }\n resize() {\n }\n _localiseDialogTexts() {\n const _this = this;\n this.element.selectAll(\"span[data-localise]\").each(function() {\n const view = d3__namespace.select(this);\n view.text(_this.localise(view.attr(\"data-localise\")));\n });\n }\n _updateLayoutProfile(){\n this.services.layout.size;\n this.profileConstants = this.services.layout.getProfileConstants(PROFILE_CONSTANTS$3, PROFILE_CONSTANTS_FOR_PROJECTOR$3);\n this.height = this.element.node().clientHeight || 0;\n this.width = this.element.node().clientWidth || 0;\n if (!this.height || !this.width) return warn(\"Dialog _updateProfile() abort: container is too little or has display:none\");\n }\n _updateSize() {\n this.services.layout.size;\n if (this.element.classed(\"vzb-top-dialog\")) {\n this.element.classed(\"notransition\", true);\n const profile = this.services.layout.profile;\n if (profile !== \"SMALL\") {\n const chartWidth = this.root.element.node().offsetWidth || 0;\n const chartHeight = this.root.element.node().offsetHeight || 0;\n const dialogWidth = parseInt(this.element.style(\"width\"), 10) || 0;\n const dialogHeight = parseInt(this.element.style(\"height\"), 10) || 0;\n const dialogRight = parseInt(this.rightPos, 10);\n const dialogTop = parseInt(this.topPos, 10);\n const dialogRightMargin = parseInt(this.element.style(\"margin-right\"), 10) || 0;\n if (isNumber(dialogRight) && dialogRight > chartWidth - dialogWidth - dialogRightMargin) {\n if (this.rightPos) {\n this.rightPos = (chartWidth - dialogWidth - dialogRightMargin) + \"px\";\n if (this.isOpen) this.element.style(\"right\", this.rightPos);\n }\n }\n if (isNumber(dialogTop) && isNumber(dialogHeight) && dialogTop >= 0 && dialogTop > chartHeight - dialogHeight) {\n if (this.topPos) {\n this.topPos = ((chartHeight - dialogHeight) > 0 ? (chartHeight - dialogHeight) : 0) + \"px\";\n if (this.isOpen) this.element.style(\"top\", this.topPos);\n }\n }\n if (this.topPos && (profile === \"LARGE\" && this.root.element.classed(\"vzb-dialog-expand-true\"))) {\n this.element.style(\"bottom\", \"auto\");\n }\n if (this.root.element.classed(\"vzb-landscape\")) ;\n this.DOM.dialog.style(\"max-height\", \"\");\n } else {\n this.rightPos = \"\";\n this.topPos = \"\";\n this.element.attr(\"style\", \"\");\n }\n this.DOM.dragHandler.classed(\"vzb-hidden\", profile === \"SMALL\");\n this.DOM.pinIcon.classed(\"vzb-hidden\", profile === \"SMALL\");\n this._setMaxHeight();\n }\n }\n _setMaxHeight() {\n let totalHeight = this.root.element.node().offsetHeight;\n const profile = this.services.layout.profile;\n if (profile !== \"SMALL\") {\n if (!this.topPos && (profile === \"LARGE\" && this.root.element.classed(\"vzb-dialog-expand-true\"))) {\n const dialogBottom = parseInt(this.element.style(\"bottom\"), 10);\n totalHeight -= dialogBottom;\n } else {\n const topPos = this.topPos ? parseInt(this.topPos, 10) : this.element.node().offsetTop;\n totalHeight -= topPos;\n }\n } else {\n totalHeight = this.root.element.classed(\"vzb-portrait\") ? totalHeight - 50 : totalHeight - 10;\n }\n this.DOM.dialog.style(\"max-height\", totalHeight + \"px\");\n const contentHeight = totalHeight - this.DOM.title.node().offsetHeight - ((this.DOM.buttons.node() || {}).offsetHeight || 0);\n this.DOM.content.style(\"max-height\", contentHeight + \"px\");\n }\n beforeOpen() {\n const _this = this;\n this.transitionEvents.forEach(event => {\n _this.element.on(event, _this._transitionEnd.bind(_this, event));\n });\n this.element.classed(\"notransition\", true);\n this.element.style(\"top\", \"\");\n this.element.style(\"bottom\", \"\");\n if (this.topPos && this.services.layout.profile === \"LARGE\" && this.root.element.classed(\"vzb-dialog-expand-true\")) {\n const topPos = this.element.node().offsetTop;\n this.element.style(\"top\", topPos + \"px\");\n this.element.style(\"bottom\", \"auto\");\n } else if (this.services.layout.profile !== \"SMALL\") ;\n this.element.node().offsetTop;\n this.element.classed(\"notransition\", false);\n if (this.services.layout.profile === \"SMALL\") {\n this.element.style(\"top\", \"\");\n } else if (this.root.element.classed(\"vzb-landscape\")) ;\n }\n open() {\n this.isOpen = true;\n if (this.services.layout.profile !== \"SMALL\") {\n if (this.topPos) {\n this.element.style(\"top\", this.topPos);\n this.element.style(\"right\", this.rightPos);\n }\n }\n }\n beforeClose() {\n if (this.root.element.classed(\"vzb-portrait\") && this.services.layout.profile === \"SMALL\") {\n this.element.style(\"top\", \"auto\");\n }\n if (this.services.layout.profile === \"LARGE\" && this.root.element.classed(\"vzb-dialog-expand-true\")) {\n this.topPos0 = this.topPos ? (this.element.node().parentNode.offsetHeight - this.element.node().offsetHeight) + \"px\" : \"\";\n }\n this.element.classed(\"notransition\", false);\n this.element.node().offsetHeight;\n }\n close() {\n if (!(this.root.element.classed(\"vzb-portrait\") && this.services.layout.profile === \"SMALL\")) {\n this.element.style(\"top\", \"\");\n this.element.style(\"right\", \"\");\n }\n if (this.services.layout.profile === \"LARGE\" && this.root.element.classed(\"vzb-dialog-expand-true\")) {\n this.element.style(\"top\", this.topPos0);\n this.element.style(\"right\", \"\");\n }\n this.isOpen = false;\n }\n _transitionEnd() {\n const _this = this;\n this.transitionEvents.forEach(event => {\n _this.element.on(event, null);\n });\n if (this.isOpen) {\n this.element.classed(\"notransition\", true);\n }\n }\n setOpen(state) {\n this.ui.opened = state;\n }\n getOpen() {\n return this.ui.opened;\n }\n setPin(state) {\n this.ui.pinned = state;\n }\n getPin() {\n return this.ui.pinned;\n }\n _pinButtonUpdate() {\n this.element.classed(\"pinned\", this.getPin());\n }\n }\n Dialog.DEFAULT_UI = {\n opened: false,\n pinned: false\n };\n const decorated$8 = mobx.decorate(Dialog, {\n \"MDL\": mobx.computed\n });\n function dialogDrag(element, container, xOffset) {\n let posX, posY, divTop, divRight, marginRight, marginLeft, xOffsetRight, xOffsetLeft, eWi, eHe, cWi, cHe, diffX, diffY;\n return {\n move(x, y) {\n element.style(\"right\", x + \"px\");\n element.style(\"top\", y + \"px\");\n },\n dragStart(evt) {\n if (!isTouchDevice()) {\n posX = evt.sourceEvent.clientX;\n posY = evt.sourceEvent.clientY;\n } else {\n const touchCoord = d3__namespace.pointer(evt, container.node());\n posX = touchCoord[0][0];\n posY = touchCoord[0][1];\n }\n divTop = parseInt(element.style(\"top\")) || 0;\n divRight = parseInt(element.style(\"right\")) || 0;\n marginLeft = parseInt(element.style(\"margin-left\")) || 0;\n marginRight = parseInt(element.style(\"margin-right\")) || 0;\n xOffsetLeft = Math.min(xOffset, marginLeft);\n xOffsetRight = Math.min(xOffset, marginRight);\n eWi = (parseInt(element.style(\"width\"), 10) + marginLeft - xOffsetLeft) || 0;\n eHe = parseInt(element.style(\"height\"), 10) || 0;\n cWi = (container.node().offsetWidth - marginRight) || 0;\n cHe = container.node().offsetHeight || 0;\n diffX = posX + divRight;\n diffY = posY - divTop;\n },\n drag(evt) {\n if (!isTouchDevice()) {\n posX = evt.sourceEvent.clientX;\n posY = evt.sourceEvent.clientY;\n } else {\n const touchCoord = d3__namespace.pointer(evt, container.node());\n posX = touchCoord[0][0];\n posY = touchCoord[0][1];\n }\n let aX = -posX + diffX,\n aY = posY - diffY;\n if (aX < -xOffsetRight) aX = -xOffsetRight;\n if (aY < 0) aY = 0;\n if (aX + eWi > cWi) aX = cWi - eWi;\n if (aY + eHe > cHe) aY = cHe - eHe;\n this.move(aX, aY);\n }\n };\n }\n\n /*!\n * VIZABI DIALOGS\n * Reusable dialogs component\n */\n const class_active$1 = \"vzb-active\";\n class Dialogs extends BaseComponent {\n constructor(config) {\n const { sidebar = [], popup = []} = deepExtend(deepExtend({}, config.ui.dialogs), config.default_ui.dialogs);\n const subcomponents = [];\n const templateArray = [];\n const dialogList = unique([...sidebar, ...popup]);\n dialogList.forEach(dlg => {\n subcomponents.push({\n type: decorated$8.get(dlg),\n placeholder: '.vzb-dialogs-dialog[data-dlg=\"' + dlg + '\"]',\n model: config.model,\n name: dlg,\n });\n templateArray.push(\n `<div data-dlg=\"${dlg}\" class=\"vzb-top-dialog vzb-dialogs-dialog vzb-dialog-shadow\"></div>`\n );\n });\n config.subcomponents = subcomponents;\n config.template = templateArray.join(\"\\n\");\n super(config);\n }\n setup() {\n this.DOM = {\n };\n const _this = this;\n this._curr_dialog_index = 20;\n this.element.selectAll(\".vzb-top-dialog\").data(this.children.map(c => ({\n name: c.name\n })))\n .on(\"custom-dragstart\", function(event, d) {\n _this.bringForward(d.name);\n })\n .select(\".vzb-top-dialog>.vzb-dialog-modal>.vzb-dialog-buttons>[data-click='closeDialog']\")\n .on(\"click\", (event, d) => {\n this.toggleDialogOpen(d.name, false);\n });\n }\n resize() {\n const _this = this;\n const profile = this.services.layout.profile;\n this.children.forEach(childComp => {\n const dialogEl = childComp.element;\n let cls = dialogEl.attr(\"class\").replace(\" vzb-popup\", \"\").replace(\" vzb-sidebar\", \"\");\n if (profile === \"LARGE\" && _this.ui.dialogs.sidebar.indexOf(childComp.name) > -1) {\n cls += _this.root.ui.buttons.sidebarCollapse ? \" vzb-popup\" : \" vzb-sidebar\";\n if (!_this.root.ui.buttons.sidebarCollapse) dialogEl.style(\"z-index\", null);\n } else if (_this.ui.dialogs.popup.indexOf(childComp.name) > -1) {\n cls += \" vzb-popup\";\n }\n dialogEl.attr(\"class\", cls);\n });\n }\n toggleDialogOpen(name, forceState) {\n mobx.runInAction(() => {\n const dialog = this.findChild({ name });\n if (!dialog) return;\n const newState = forceState ? forceState : !dialog.getOpen();\n dialog.setOpen(newState);\n if(newState) {\n this.openDialog(name);\n } else {\n this.closeDialog(name);\n }\n });\n }\n openDialog(name) {\n const forceClose = this.services.layout.profile === \"SMALL\";\n this.closeAllDialogs(forceClose);\n const dialog = this.element.selectAll(\".vzb-popup.vzb-dialogs-dialog[data-dlg='\" + name + \"']\");\n this._active_comp = this.findChild({ name });\n this._active_comp.beforeOpen();\n dialog.classed(class_active$1, true);\n this.bringForward(name);\n this._active_comp.open();\n }\n closeDialog(name) {\n const dialog = this.element.selectAll(\".vzb-popup.vzb-dialogs-dialog[data-dlg='\" + name + \"']\");\n this._active_comp = this.findChild({ name });\n if (this._active_comp && !this._active_comp.isOpen) return;\n if (this._active_comp.getPin())\n this._active_comp.setPin(false);\n if (this._active_comp) {\n this._active_comp.beforeClose();\n }\n dialog.classed(class_active$1, false);\n if (this._active_comp) {\n this._active_comp.close();\n }\n this._active_comp = false;\n }\n closeAllDialogs(forceclose) {\n const _this = this;\n const dialogClass = forceclose ? \".vzb-popup.vzb-dialogs-dialog.vzb-active\" : \".vzb-popup.vzb-dialogs-dialog.vzb-active:not(.pinned)\";\n const all_dialogs = this.element.selectAll(dialogClass);\n all_dialogs.each(d => {\n _this.toggleDialogOpen(d.name);\n });\n }\n bringForward(name) {\n const dialog = this.element.select(\".vzb-popup.vzb-dialogs-dialog[data-dlg='\" + name + \"']\");\n dialog.style(\"z-index\", this._curr_dialog_index);\n this._curr_dialog_index += 10;\n }\n }\n\n let hidden$2 = true;\n const HIDE_WHEN_SMALLER_THAN = 100;\n class _DataWarning extends BaseComponent {\n constructor(config) {\n config.template = `\n <div class=\"vzb-data-warning-background\"></div>\n <div class=\"vzb-data-warning-box\">\n <div class=\"vzb-data-warning-link\"></div>\n <div class=\"vzb-data-warning-title\"></div>\n <div class=\"vzb-data-warning-body vzb-dialog-scrollable\"></div>\n </div>\n `;\n super(config);\n }\n setup() {\n this.DOM = {\n background: this.element.select(\".vzb-data-warning-background\"),\n container: this.element.select(\".vzb-data-warning-box\"),\n icon: this.element.select(\".vzb-data-warning-link\"),\n close: this.element.select(\".vzb-data-warning-close\"),\n title: this.element.select(\".vzb-data-warning-title\"),\n body: this.element.select(\".vzb-data-warning-body\"),\n button: this.root.element.select(this.options.button)\n };\n this.element.classed(\"vzb-hidden\", true);\n this.setupDialog();\n this.setupTiggerButton();\n this.setOptions();\n }\n setupDialog() {\n this.DOM.background\n .on(\"click\", () => {\n this.toggle(true);\n });\n this.DOM.container.append(\"div\")\n .html(ICON_CLOSE)\n .on(\"click\", () => {\n this.toggle();\n })\n .select(\"svg\")\n .attr(\"width\", \"0px\")\n .attr(\"height\", \"0px\")\n .attr(\"class\", \"vzb-data-warning-close\");\n this.DOM.icon.html(ICON_WARN)\n .append(\"div\");\n }\n setupTiggerButton() {\n if(!this.DOM.button.size()) return warn(\"quit setupTiggerButton of DataWarning because no button provided\");\n setIcon(this.DOM.button, ICON_WARN)\n .append(\"text\")\n .attr(\"text-anchor\", \"end\")\n .on(\"click\", () => {\n this.toggle();\n })\n .on(\"mouseover\", () => {\n this.updateButtonOpacity(1);\n })\n .on(\"mouseout\", () => {\n this.updateButtonOpacity();\n });\n }\n get MDL(){\n return {\n frame: this.model.encoding.frame,\n selected: this.model.encoding.selected\n };\n }\n draw() {\n this.localise = this.services.locale.auto();\n this.addReaction(this.updateUIstrings);\n this.addReaction(this.updateButtonOpacityScale);\n this.addReaction(this.updateButtonOpacity);\n this.addReaction(this.updateButtonPosition);\n }\n updateUIstrings(){\n if (this.DOM.button) this.DOM.button.select(\"text\")\n .text(this.localise(\"hints/dataWarning\"));\n this.DOM.icon.select(\"div\")\n .text(this.localise(\"hints/dataWarning\"));\n const title = this.localise(\"datawarning/title/\" + this.root.name);\n this.DOM.title.html(title)\n .classed(\"vzb-hidden\", !title || title == (\"datawarning/title/\" + this.root.name));\n this.DOM.body.html(this.localise(\"datawarning/body/\" + this.root.name));\n }\n toggle(arg) {\n if (arg == null) arg = !hidden$2;\n hidden$2 = arg;\n this.element.classed(\"vzb-hidden\", hidden$2);\n this.root.children.forEach(c => {\n c.element.classed(\"vzb-blur\", c != this && !hidden$2);\n });\n }\n updateButtonOpacityScale() {\n this.wScale = this.MDL.frame.scale.d3Scale.copy()\n .domain(this.ui.doubtDomain.map(m => this.MDL.frame.parseValue(\"\" + m)))\n .range(this.ui.doubtRange)\n .clamp(true);\n }\n updateButtonOpacity(opacity) {\n if(!this.DOM.button.size()) return warn(\"quit updateButtonOpacity of DataWarning because no button provided\");\n if (opacity == null) opacity = this.wScale(this.MDL.frame.value);\n if (this.MDL.selected.data.filter.any()) opacity = 1;\n this.DOM.button.style(\"opacity\", opacity);\n }\n updateButtonPosition() {\n if(!this.DOM.button.size()) return warn(\"quit updateButtonPosition of DataWarning because no button provided\");\n const {vertical, horizontal, width, height, wLimit} = this;\n const {top, bottom, left, right} = this;\n const dataWarningText = this.DOM.button.select(\"text\")\n .style(\"font-size\", null);\n let warnBB = dataWarningText.node().getBBox();\n const dataWarningWidth = warnBB.width + warnBB.height * 3;\n if (wLimit > 0 && dataWarningWidth > wLimit) {\n const font = parseInt(dataWarningText.style(\"font-size\")) * wLimit / dataWarningWidth;\n dataWarningText.style(\"font-size\", font + \"px\");\n }\n warnBB = dataWarningText.node().getBBox();\n this.DOM.button.select(\"svg\")\n .attr(\"width\", warnBB.height * 0.75)\n .attr(\"height\", warnBB.height * 0.75)\n .attr(\"x\", -warnBB.width - warnBB.height * 1.2)\n .attr(\"y\", -warnBB.height * 0.65);\n warnBB = this.DOM.button.node().getBBox();\n this.DOM.button\n .classed(\"vzb-hidden\", this.services.layout.projector || wLimit && wLimit < HIDE_WHEN_SMALLER_THAN)\n .attr(\"transform\", `translate(${\n horizontal == \"left\" ? (left + warnBB.width) : (width - right)\n }, ${\n vertical == \"top\" ? (top + warnBB.height) : (height - bottom)\n })`);\n }\n setOptions({\n width = 0,\n height = 0,\n vertical = \"top\",\n horizontal = \"right\",\n top = 0,\n bottom = 0,\n left = 0,\n right = 0,\n wLimit = null\n } = {}) {\n mobx.runInAction(() => {\n this.vertical = vertical;\n this.horizontal = horizontal;\n this.width = width;\n this.height = height;\n this.top = top;\n this.bottom = bottom;\n this.left = left;\n this.right = right;\n this.wLimit = wLimit || width;\n });\n }\n }\n _DataWarning.DEFAULT_UI = {\n doubtDomain: [],\n doubtRange: []\n };\n const DataWarning = mobx.decorate(_DataWarning, {\n \"MDL\": mobx.computed,\n \"vertical\": mobx.observable,\n \"horizontal\": mobx.observable,\n \"width\": mobx.observable,\n \"height\": mobx.observable,\n \"top\": mobx.observable,\n \"bottom\": mobx.observable,\n \"left\": mobx.observable,\n \"right\": mobx.observable,\n \"wLimit\": mobx.observable\n });\n\n function getFacetId(d) {\n return d;\n }\n function firstLastOrMiddle$1(index, total) {\n return { first: index === 0, last: index + 1 === total };\n }\n class _Facet extends BaseComponent {\n setup(options) {\n this.direction = this.options.direction || \"row\";\n super.setup(options);\n }\n get MDL() {\n return this.model;\n }\n loading() {\n }\n draw() {\n if (this.updateLayoutProfile()) return;\n this.addReaction(this.addRemoveSubcomponents);\n this.addReaction(this.updatePositionInRepeat);\n this.addReaction(this.updateSize);\n }\n updatePositionInRepeat() {\n this.children.forEach(child => child.state.positionInRepeat = this.state.positionInRepeat);\n }\n getDataForSubcomponent(id) {\n return [...this.data.get(id).values()];\n }\n sortFacets(map){\n return new Map([...map].sort((a, b) => {\n if (a[0].includes(\"is--\")) return -1;\n if (b[0].includes(\"is--\")) return 1;\n }));\n }\n get data() {\n const encoding = \"facet_\" + this.direction;\n return this.sortFacets(this.model.dataMap.groupByWithMultiGroupMembership(encoding));\n }\n howManyFacets() {\n return this.data.size;\n }\n isRowDirection() {\n return this.direction == \"row\";\n }\n get maxValues() {\n let result;\n mobx.runInAction(() => {\n result = [...this.data.keys()].map(k => [k, null]);\n });\n return mobx.observable.map(result);\n }\n getScaleDomainForSubcomponent(id) {\n if (id)\n return this.maxValues.get(id) || 0;\n else\n return d3__namespace.sum(this.maxValues.values());\n }\n updateLayoutProfile() {\n this.services.layout.size;\n this.profileConstants = this.services.layout.getProfileConstants(\n this.options.facetedComponent.PROFILE_CONSTANTS ,\n this.options.facetedComponent.PROFILE_CONSTANTS_FOR_PROJECTOR\n );\n this.height = this.element.node().clientHeight || 0;\n this.width = this.element.node().clientWidth || 0;\n if (!this.height || !this.width) return warn(\"Chart _updateProfile() abort: container is too little or has display:none\");\n }\n propagateInteractivity(callback){\n this.children.forEach(chart => callback(chart));\n }\n get largetstFacetId(){\n if(this.ui.inpercent){\n return [...this.maxValues.keys()].at(-1);\n } else {\n const largest = {k: null, v: 0};\n [...this.maxValues.entries()].forEach(([k,v]) => {if(v > largest.v) {largest.v = v; largest.k = k;}});\n return largest.k;\n }\n }\n updateSize() {\n this.services.layout.size;\n this.services.layout.projector;\n this.ui.inpercent;\n const isRowDirection = this.isRowDirection();\n const facetKeys = [...this.maxValues.keys()];\n const domainParts = [...this.maxValues.values()];\n const {\n margin,\n minHeight = 1,\n minWidth = 1\n } = this.profileConstants;\n const minPx = (isRowDirection ? minHeight : minWidth);\n const betweenPx = (isRowDirection ? margin.betweenRow : margin.betweenColumn) || 0;\n const totalPx = (isRowDirection ? (this.height - margin.top - margin.bottom) : (this.width - margin.left - margin.right)) - betweenPx * (facetKeys.length - 1);\n const getUpdateStr = () => JSON.stringify(facetKeys) + JSON.stringify(domainParts) + minPx + totalPx + this.ui.inpercent;\n if(getUpdateStr() === this.resizeUpdateString) return;\n this.resizeUpdateString = getUpdateStr();\n let rangeParts = domainParts.map(m => null);\n if (this.ui.inpercent){\n const domainPartsSum = d3__namespace.sum(domainParts);\n this.scaleRange = totalPx / domainParts.length < minPx ? minPx : totalPx / domainParts.length;\n rangeParts = domainParts.map(domain => Math.round(totalPx * domain / domainPartsSum));\n } else {\n let maxIter = 5;\n let unallocatedDomain, unallocatedRange, residual = totalPx, allChartsSmall = false;\n const proportion = i => unallocatedRange * domainParts[i] / unallocatedDomain;\n for(let iterate = 0; iterate < maxIter && residual > 1 && !allChartsSmall; iterate++){\n unallocatedRange = totalPx - d3__namespace.sum(rangeParts.filter(f => f == minPx));\n unallocatedDomain = d3__namespace.sum(domainParts.filter((f, i) => rangeParts[i] != minPx));\n rangeParts = rangeParts.map((r, i) => (r == minPx || proportion(i) < minPx) ? minPx : Math.floor(proportion(i)));\n allChartsSmall = rangeParts.every(e => e == minPx);\n residual = d3__namespace.sum(rangeParts) - totalPx;\n }\n const wastedHelperScale = d3__namespace.scaleLinear().domain([0, d3__namespace.max(domainParts)]).range([0, d3__namespace.max(rangeParts)]);\n const wastedRange = d3__namespace.sum(rangeParts.map((r, i) => r - wastedHelperScale(domainParts[i])));\n this.scaleRange = totalPx - wastedRange;\n }\n const last = this.howManyFacets() - 1;\n const first = 0;\n const dominantMargin = {\n first: isRowDirection ? margin.top : margin.left,\n last: isRowDirection ? margin.bottom : margin.right\n };\n const non_dominantMargin = {\n first: !isRowDirection ? margin.top : margin.left,\n last: !isRowDirection ? margin.bottom : margin.right\n };\n const templateString = {\n dominant: rangeParts\n .map((rangePart, i) => \"\"\n + `[start_${i}]`\n + (i == first ? ` ${dominantMargin.first}px ` : ` ${betweenPx * 0.5}px `)\n + ` ${rangePart || 1}px `\n + (i == last ? ` ${dominantMargin.last}px ` : ` ${betweenPx * 0.5}px `)\n + `[end_${i}]`\n )\n .join(\" 0px \"),\n non_dominant: \"\"\n + `[start_0]`\n + ` ${non_dominantMargin.first}px `\n + ` 1fr `\n + ` ${non_dominantMargin.last}px `\n + `[end_0]`\n };\n this.element\n .style(\"grid-template-columns\", templateString[isRowDirection ? \"non_dominant\" : \"dominant\"])\n .style(\"grid-template-rows\", templateString[isRowDirection ? \"dominant\" : \"non_dominant\"]);\n this.rangePartsHash = rangeParts.join(\",\");\n }\n addRemoveSubcomponents() {\n const { facetedComponentCssClass } = this.options;\n const facetKeys = [...this.data.keys()];\n if(JSON.stringify(facetKeys) === this.facetKeysString) return;\n this.facetKeysString = JSON.stringify(facetKeys);\n const isRowDirection = this.isRowDirection();\n mobx.runInAction(() => {\n let sections = this.element.selectAll(\".vzb-facet-inner\")\n .data(facetKeys, getFacetId);\n sections.exit()\n .each(d => this.removeSubcomponent(d))\n .remove();\n sections.enter().append(\"div\")\n .attr(\"class\", d => \"vzb-facet-inner\")\n .each(function (d) {\n d3__namespace.select(this).append(\"div\")\n .datum(null)\n .attr(\"class\", () => `${facetedComponentCssClass} vzb-${getFacetId(d)}`);\n })\n .each((d, i) => this.addSubcomponent(d, i))\n .merge(sections)\n .style(\"grid-row-start\", (d, i) => \"start_\" + (isRowDirection ? i : 0))\n .style(\"grid-row-end\", (d, i) => \"end_\" + (isRowDirection ? i : 0))\n .style(\"grid-column-start\", (d, i) => \"start_\" + (isRowDirection ? 0 : i))\n .style(\"grid-column-end\", (d, i) => \"end_\" + (isRowDirection ? 0 : i))\n .classed(\"vzb-facet-row-first\", d => this.getPosition(facetKeys.indexOf(d)).row.first)\n .classed(\"vzb-facet-row-last\", d => this.getPosition(facetKeys.indexOf(d)).row.last)\n .classed(\"vzb-facet-column-first\", d => this.getPosition(facetKeys.indexOf(d)).column.first)\n .classed(\"vzb-facet-column-last\", d => this.getPosition(facetKeys.indexOf(d)).column.last)\n .each((d, i) => {\n this.findChild({ name: getFacetId(d) }).state.positionInFacet = this.getPosition(facetKeys.indexOf(d));\n });\n this.services.layout._resizeHandler();\n });\n }\n getPosition(i) {\n const isRowDirection = this.isRowDirection();\n const ncolumns = isRowDirection ? 1 : [...this.data.keys()].length;\n const nrows = isRowDirection ? [...this.data.keys()].length : 1;\n const result = {\n row: firstLastOrMiddle$1(isRowDirection ? i : 0, nrows),\n column: firstLastOrMiddle$1(isRowDirection ? 0 : i, ncolumns)\n };\n result.row.start = (result.row.first ? 0 : (i + 1)) + 1;\n result.row.end = (result.row.last ? (nrows + 2) : (i + 2)) + 1;\n result.column.start = (result.column.first ? 0 : (i + 1)) + 1;\n result.column.end = (result.column.last ? (ncolumns + 2) : (i + 2)) + 1;\n return result;\n }\n addSubcomponent(d, index) {\n console.log(\"adding\", d);\n const { facetedComponent } = this.options;\n const name = getFacetId(d);\n const subcomponent = new facetedComponent({\n id: this.id + \"-\" + index,\n placeholder: \".vzb-\" + name,\n model: this.model,\n name,\n parent: this,\n root: this.root,\n state: {\n alias: this.state.alias,\n positionInRepeat: this.state.positionInRepeat\n },\n services: this.services,\n ui: this.ui,\n default_ui: this.DEFAULT_UI\n });\n this.children.push(subcomponent);\n }\n removeSubcomponent(d) {\n console.log(\"removing\", d);\n const subcomponent = this.findChild({ name: getFacetId(d) });\n if (subcomponent) {\n subcomponent.deconstruct();\n const index = this.children.indexOf(subcomponent);\n if (index >= 0) this.children.splice(index, 1);\n }\n }\n }\n _Facet.DEFAULT_UI = {\n };\n const Facet = mobx.decorate(_Facet, {\n \"MDL\": mobx.computed,\n \"data\": mobx.computed,\n \"scaleRange\": mobx.observable,\n \"maxValues\": mobx.computed,\n \"largetstFacetId\": mobx.computed,\n \"rangePartsHash\": mobx.observable\n });\n\n /*!\n * VIZABI BUBBLE COLOR LEGEND COMPONENT\n */\n function isTrailBubble(d){\n return !!d[Symbol.for(\"trailHeadKey\")];\n }\n class ColorLegend extends BaseComponent {\n constructor(config) {\n config.template = `\n <div class=\"vzb-cl-outer\">\n <div class=\"vzb-cl-holder\">\n <div class=\"vzb-cl-minimap\">\n <svg>\n <g></g>\n </svg>\n </div>\n\n <div class=\"vzb-cl-colorlist vzb-hidden\"></div>\n\n <div class=\"vzb-cl-rainbow-holder vzb-hidden\">\n <div class=\"vzb-cl-rainbow\">\n <canvas></canvas>\n </div>\n\n <div class=\"vzb-cl-rainbow-legend\">\n <div class=\"vzb-cl-rainbow-legend-eventarea\"></div>\n </div>\n\n <div class=\"vzb-cl-labelscale\">\n <svg>\n <g></g>\n </svg>\n </div>\n\n <div class=\"vzb-cl-subtitle\">\n <span class=\"vzb-cl-subtitle-text\"></span>\n <span class=\"vzb-cl-subtitle-reset\"></span>\n </div>\n </div>\n \n <span class=\"vzb-cl-more-hint vzb-hidden\">click for more options</span>\n\n <div class=\"vzb-cl-select-dialog vzb-hidden\">\n <div class=\"vzb-cl-select-dialog-title\"></div>\n <div class=\"vzb-cl-select-dialog-close\"></div>\n </div>\n </div>\n `;\n super(config);\n }\n setup(options) {\n this.DOM = {\n wrapper: this.element.select(\".vzb-cl-holder\"),\n };\n this.DOM.minimap = this.DOM.wrapper.select(\".vzb-cl-minimap\");\n this.DOM.minimapSVG = this.DOM.minimap.select(\"svg\");\n this.DOM.minimapG = this.DOM.minimapSVG.select(\"g\");\n this.DOM.listColors = this.DOM.wrapper.select(\".vzb-cl-colorlist\");\n this.DOM.rainbowHolder = this.DOM.wrapper.select(\".vzb-cl-rainbow-holder\");\n this.DOM.rainbow = this.DOM.rainbowHolder.select(\".vzb-cl-rainbow\");\n this.DOM.rainbowCanvas = this.DOM.rainbow.select(\"canvas\");\n this.DOM.rainbowLegend = this.DOM.rainbowHolder.select(\".vzb-cl-rainbow-legend\");\n this.DOM.rainbowLegendEventArea = this.DOM.rainbowLegend.select(\".vzb-cl-rainbow-legend-eventarea\");\n this.DOM.labelScale = this.DOM.rainbowHolder.select(\".vzb-cl-labelscale\");\n this.DOM.labelScaleSVG = this.DOM.labelScale.select(\"svg\");\n this.DOM.labelScaleG = this.DOM.labelScaleSVG.select(\"g\");\n this.DOM.subtitleDiv = this.DOM.rainbowHolder.select(\".vzb-cl-subtitle\");\n this.DOM.subtitleText = this.DOM.subtitleDiv.select(\".vzb-cl-subtitle-text\");\n this.DOM.subtitleReset = this.DOM.subtitleDiv.select(\".vzb-cl-subtitle-reset\");\n this.legendModelName = options.legendModelName;\n this.colorModelName = options.colorModelName;\n this._initSelectDialog();\n }\n get MDL() {\n return {\n color: this.model.encoding[this.colorModelName],\n selected: this.model.encoding.selected,\n highlighted: this.model.encoding.highlighted,\n superHighlighted: this.model.encoding.superhighlighted,\n legend: this.root.model.markers[this.legendModelName]\n };\n }\n draw() {\n this.localise = this.services.locale.auto();\n if (this._legendHasOwnModel() && !this._isLegendModelReady()) return;\n this.KEY = Symbol.for(\"key\");\n this.canShowMap = this.MDL.legend && this._canShowMap();\n this.which = this.MDL.color.data.constant || this.MDL.color.data.concept;\n this.addReaction(this._updateView);\n this.addReaction(this._translateSelectDialog);\n this.addReaction(this.closeSelectDialogOnConceptChange);\n }\n _legendHasOwnModel() {\n return this.MDL.legend\n && !this.MDL.color.data.isConstant\n && isEntityConcept(this.MDL.color.data.conceptProps);\n }\n _isLegendModelReady() {\n return this.MDL.legend.state == STATUS.READY;\n }\n _canShowMap() {\n if(!this._legendHasOwnModel()) return false;\n const dataArray = this.MDL.legend.dataArray;\n return dataArray.length > 0 && dataArray.every(d => d.map);\n }\n _updateView() {\n if (this._legendHasOwnModel() && !this._isLegendModelReady()) return;\n const individualColors = false;\n this._updateListLegend(this.MDL.color.scale.isDiscrete() && !this.canShowMap && !individualColors && !this.MDL.color.scale.isPattern);\n this._updateMinimapLegend(this.MDL.color.scale.isDiscrete() && this.canShowMap);\n updateRainbowLegend.bind(this)(!this.MDL.color.scale.isDiscrete());\n }\n _updateListLegend(isVisible) {\n this.DOM.listColors.classed(\"vzb-hidden\", !isVisible);\n if (!isVisible) return;\n const _this = this;\n const cScale = this.MDL.color.scale.d3Scale;\n let colorOptionsArray = [];\n if (this._legendHasOwnModel() && this._isLegendModelReady() && !this.MDL.color.data.isConstant) {\n colorOptionsArray = this.MDL.legend.dataArray;\n } else {\n colorOptionsArray = cScale.domain().map(value => {\n const result = {};\n result[this.which] = value;\n return result;\n });\n }\n let colorOptions = this.DOM.listColors.selectAll(\".vzb-cl-option\")\n .data(unique(colorOptionsArray, d => d[this.which]), d => d[this.which]);\n colorOptions.exit().remove();\n colorOptions = colorOptions.enter().append(\"div\").attr(\"class\", \"vzb-cl-option\")\n .each(function() {\n d3__namespace.select(this).append(\"div\").attr(\"class\", \"vzb-cl-color-sample\");\n d3__namespace.select(this).append(\"div\").attr(\"class\", \"vzb-cl-color-legend\");\n })\n .on(\"mouseover\", (event, d) => this._interact().mouseover(d))\n .on(\"mouseout\", () => this._interact().mouseout())\n .on(\"click\", (event, d) => {\n this._bindSelectDialogItems(d);\n this.DOM.selectDialog.classed(\"vzb-hidden\", false);\n })\n .merge(colorOptions);\n colorOptions.each(function(d) {\n d3__namespace.select(this).select(\".vzb-cl-color-sample\")\n .style(\"background-color\", cScale(d[_this.which]))\n .style(\"border\", \"1px solid \" + cScale(d[_this.which]));\n let label = d[\"name\"];\n if (!label && label !== 0) label = d[_this.which];\n if (_this.MDL.color.data.isConstant) label = _this.localise(\"indicator/_default/color\");\n d3__namespace.select(this).select(\".vzb-cl-color-legend\").text(label);\n });\n }\n _updateMinimapLegend(isVisible) {\n this.DOM.minimap.classed(\"vzb-hidden\", !isVisible);\n if (!isVisible) return;\n if (!this._isLegendModelReady()) return;\n const cScale = this.MDL.color.scale.d3Scale;\n const tempdivEl = this.DOM.minimap.append(\"div\").attr(\"class\", \"vzb-temp\");\n this.DOM.minimapSVG.attr(\"viewBox\", null);\n this.DOM.minimapSVG.selectAll(\"g\").remove();\n this.DOM.minimapG = this.DOM.minimapSVG.append(\"g\");\n this.DOM.minimapG.selectAll(\"path\")\n .data(this.MDL.legend.dataArray, d => d[this.KEY])\n .enter().append(\"path\")\n .on(\"mouseover\", (event, d) => this._interact().mouseover(d))\n .on(\"mouseout\", () => this._interact().mouseout())\n .on(\"click\", (event, d) => {\n this._bindSelectDialogItems(d);\n this.DOM.selectDialog.classed(\"vzb-hidden\", false);\n })\n .each(function(d) {\n let shapeString = d[\"map\"].trim();\n if (shapeString.slice(0, 4) == \"<svg\") {\n tempdivEl.html(shapeString);\n shapeString = tempdivEl.select(\"svg\").select(\"path\").attr(\"d\");\n }\n d3__namespace.select(this)\n .attr(\"d\", shapeString)\n .style(\"fill\", cScale(d[\"color\"]))\n .append(\"title\").text(d[\"name\"]);\n tempdivEl.html(\"\");\n });\n const gbbox = this.DOM.minimapG.node().getBBox();\n this.DOM.minimapSVG.attr(\"viewBox\", \"0 0 \" + gbbox.width * 1.05 + \" \" + gbbox.height * 1.05);\n tempdivEl.remove();\n }\n _interact() {\n const _this = this;\n return {\n mouseover(d) {\n _this.DOM.moreOptionsHint.classed(\"vzb-hidden\", false);\n if (!isEntityConcept(_this.MDL.color.data.conceptProps)) return;\n const concept = _this.MDL.color.data.concept;\n const colorMdlName = _this.MDL.color.name;\n const selectArray = _this.model.dataArray?.filter(f => f[colorMdlName] == d[concept]);\n if (!selectArray) return;\n _this.root.ui?.chart?.superhighlightOnMinimapHover && _this.MDL.superHighlighted ?\n _this.MDL.superHighlighted.data.filter.set(selectArray) :\n _this.MDL.highlighted.data.filter.set(selectArray);\n },\n mouseout() {\n _this.DOM.moreOptionsHint.classed(\"vzb-hidden\", true);\n if (!isEntityConcept(_this.MDL.color.data.conceptProps)) return;\n _this.root.ui?.chart?.superhighlightOnMinimapHover && _this.MDL.superHighlighted ?\n _this.MDL.superHighlighted.data.filter.clear() :\n _this.MDL.highlighted.data.filter.clear();\n },\n clickToShow(d) {\n if (!isEntityConcept(_this.MDL.color.data.conceptProps)) return;\n const filter = _this.model.data.filter;\n const colorSpace = _this.model.encoding.color.data.space;\n const concept = _this.MDL.color.data.concept;\n filter.config.dimensions[colorSpace][concept] = d[concept];\n },\n clickToSelect(d) {\n if (!isEntityConcept(_this.MDL.color.data.conceptProps)) return;\n const concept = _this.MDL.color.data.concept;\n const colorMdlName = _this.MDL.color.name;\n const selectedFilter = _this.MDL.selected.data.filter;\n const selectArray = _this.model.dataArray?.filter(f => !isTrailBubble(f) && f[colorMdlName] == d[concept]);\n if (!selectArray) return;\n if (selectArray.every(d => selectedFilter.has(d)))\n mobx.runInAction(() => selectedFilter.delete(selectArray));\n else\n mobx.runInAction(() => selectedFilter.set(selectArray));\n }\n };\n }\n _initSelectDialog() {\n this.DOM.moreOptionsHint = this.DOM.wrapper.select(\".vzb-cl-more-hint\");\n this.DOM.selectDialog = this.DOM.wrapper.select(\".vzb-cl-select-dialog\");\n this.DOM.selectDialogTitle = this.DOM.selectDialog.select(\".vzb-cl-select-dialog-title\");\n this.DOM.selectDialogClose = this.DOM.selectDialog.select(\".vzb-cl-select-dialog-close\");\n this.DOM.selectDialogClose\n .html(ICON_CLOSE)\n .on(\"click\", () => this._closeSelectDialog());\n this.DOM.selectAllButton = this.DOM.selectDialog.append(\"div\")\n .attr(\"class\", \"vzb-cl-select-dialog-item vzb-clickable\");\n this.DOM.removeElseButton = this.DOM.selectDialog.append(\"div\")\n .attr(\"class\", \"vzb-cl-select-dialog-item vzb-clickable\");\n this.DOM.editColorButton = this.DOM.selectDialog.append(\"div\")\n .attr(\"class\", \"vzb-cl-select-dialog-item vzb-cl-select-dialog-item-moreoptions\");\n this.DOM.editColorButton.append(\"label\")\n .attr(\"class\", \"vzb-clickable\")\n .attr(\"for\", \"vzb-cl-select-dialog-color-\" + this.id);\n this.DOM.editColorButton.append(\"input\")\n .attr(\"type\", \"color\")\n .attr(\"class\", \"vzb-invisible\")\n .attr(\"id\", \"vzb-cl-select-dialog-color-\" + this.id);\n this.DOM.editColorButton.append(\"span\")\n .attr(\"class\", \"vzb-clickable\");\n this.DOM.editColorButtonTooltip = this.DOM.editColorButton.append(\"div\")\n .attr(\"class\", \"vzb-cl-select-dialog-item-tooltip\");\n }\n _translateSelectDialog() {\n const t = this.localise;\n this.DOM.moreOptionsHint.text(t(\"hints/color/more\"));\n this.DOM.selectAllButton.text(\"✅ \" + t(\"dialogs/color/select-all\"));\n this.DOM.removeElseButton.text(\"🗑️ \" + t(\"dialogs/color/remove-else\"));\n this.DOM.editColorButton.select(\"label\").text(\"🎨 \" + t(\"dialogs/color/edit-color\"));\n this.DOM.editColorButton.select(\"span\").text(t(\"buttons/reset\"));\n this.DOM.editColorButtonTooltip.text(t(\"dialogs/color/edit-color-blocked-hint\"));\n }\n closeSelectDialogOnConceptChange(){\n this.MDL.color.data.concept;\n this._closeSelectDialog();\n }\n _closeSelectDialog() {\n this.DOM.selectDialog.classed(\"vzb-hidden\", true);\n }\n _bindSelectDialogItems(d) {\n const _this = this;\n this.DOM.selectDialogTitle.text(d.name);\n this.DOM.selectAllButton\n .classed(\"vzb-cl-select-dialog-item-disabled\", !isEntityConcept(this.MDL.color.data.conceptProps))\n .on(\"click\", () => {\n this._interact().clickToSelect(d);\n this._closeSelectDialog();\n });\n this.DOM.removeElseButton\n .classed(\"vzb-cl-select-dialog-item-disabled\", !isEntityConcept(this.MDL.color.data.conceptProps))\n .on(\"click\", () => {\n this._interact().clickToShow(d);\n this._closeSelectDialog();\n });\n const isColorSelectable = this.MDL.color.scale.palette.isUserSelectable;\n this.DOM.editColorButtonTooltip.classed(\"vzb-hidden\", isColorSelectable);\n this.DOM.editColorButton.select(\"span\").classed(\"vzb-hidden\", !isColorSelectable);\n this.DOM.editColorButton.classed(\"vzb-cl-select-dialog-item-disabled\", !isColorSelectable);\n if (isColorSelectable){\n const colorScaleModel = this.MDL.color.scale;\n const concept = this.MDL.color.data.concept;\n const target = this.MDL.color.data.isConstant ? \"_default\" : d[concept];\n const colorOld = colorScaleModel.palette.getColor(target);\n const colorDef = colorScaleModel.palette.getColor(target, colorScaleModel.palette.defaultPalette);\n this.DOM.editColorButton.select(\"input\")\n .property(\"value\", colorOld)\n .on(\"input\", function(){\n const value = d3__namespace.select(this).property(\"value\");\n colorScaleModel.palette.setColor(value, target);\n })\n .on(\"change\", function(){\n _this._closeSelectDialog();\n });\n this.DOM.editColorButton.select(\"span\")\n .classed(\"vzb-hidden\", colorOld == colorDef)\n .style(\"color\", colorDef)\n .on(\"click\", function(){\n colorScaleModel.palette.removeColor(target);\n _this._closeSelectDialog();\n });\n }\n }\n }\n const decorated$7 = mobx.decorate(ColorLegend, {\n \"MDL\": mobx.computed\n });\n\n /*!\n * VIZABI MIN MAX INPUT FIELDS\n */\n const DOMAIN = \"domain\";\n const ZOOMED = \"zoomed\";\n const MIN = 0;\n const MAX = 1;\n class MinMaxInputs extends BaseComponent {\n constructor(config) {\n config.template = `\n <div class=\"vzb-mmi-holder\">\n\n <span class=\"vzb-mmi-domainmin-label\"></span>\n <input type=\"text\" class=\"vzb-mmi-domainmin\" name=\"min\">\n <span class=\"vzb-mmi-domainmax-label\"></span>\n <input type=\"text\" class=\"vzb-mmi-domainmax\" name=\"max\">\n\n <br class=\"vzb-mmi-break\"/>\n\n <span class=\"vzb-mmi-zoomedmin-label\"></span>\n <input type=\"text\" class=\"vzb-mmi-zoomedmin\" name=\"min\">\n <span class=\"vzb-mmi-zoomedmax-label\"></span>\n <input type=\"text\" class=\"vzb-mmi-zoomedmax\" name=\"max\">\n\n </div>\n `;\n super(config);\n }\n setup() {\n this.DOM = {\n domain_labelMin: this.element.select(\".vzb-mmi-domainmin-label\"),\n domain_labelMax: this.element.select(\".vzb-mmi-domainmax-label\"),\n domain_fieldMin: this.element.select(\".vzb-mmi-domainmin\"),\n domain_fieldMax: this.element.select(\".vzb-mmi-domainmax\"),\n break: this.element.select(\".vzb-mmi-break\"),\n zoomed_labelMin: this.element.select(\".vzb-mmi-zoomedmin-label\"),\n zoomed_labelMax: this.element.select(\".vzb-mmi-zoomedmax-label\"),\n zoomed_fieldMin: this.element.select(\".vzb-mmi-zoomedmin\"),\n zoomed_fieldMax: this.element.select(\".vzb-mmi-zoomedmax\")\n };\n const _this = this;\n this.DOM.domain_fieldMin.on(\"change\", function() {\n _this._setModel(DOMAIN, MIN, this.value);\n });\n this.DOM.domain_fieldMax.on(\"change\", function() {\n _this._setModel(DOMAIN, MAX, this.value);\n });\n this.DOM.zoomed_fieldMin.on(\"change\", function() {\n _this._setModel(ZOOMED, MIN, this.value);\n });\n this.DOM.zoomed_fieldMax.on(\"change\", function() {\n _this._setModel(ZOOMED, MAX, this.value);\n });\n this.element.selectAll(\"input\")\n .on(\"keypress\", (event) => {\n if (event.which == 13) document.activeElement.blur();\n });\n }\n get MDL() {\n return {\n model: this._getModel()\n };\n }\n draw() {\n this.localise = this.services.locale.auto();\n const _this = this;\n this.formatter = function(n) {\n if (!n && n !== 0) return n;\n if (isDate(n)) return _this.localise(n);\n return d3__namespace.format(\".2r\")(n);\n };\n this.addReaction(this._updateView);\n }\n _updateView() {\n this.DOM.domain_labelMin.text(this.localise(\"hints/min\") + \":\");\n this.DOM.domain_labelMax.text(this.localise(\"hints/max\") + \":\");\n this.DOM.zoomed_labelMin.text(this.localise(\"hints/min\") + \":\");\n this.DOM.zoomed_labelMax.text(this.localise(\"hints/max\") + \":\");\n this.DOM.domain_labelMin.classed(\"vzb-hidden\", !this.ui.selectDomainMinMax);\n this.DOM.domain_labelMax.classed(\"vzb-hidden\", !this.ui.selectDomainMinMax);\n this.DOM.domain_fieldMin.classed(\"vzb-hidden\", !this.ui.selectDomainMinMax);\n this.DOM.domain_fieldMax.classed(\"vzb-hidden\", !this.ui.selectDomainMinMax);\n this.DOM.break.classed(\"vzb-hidden\", !(this.ui.selectDomainMinMax && this.ui.selectZoomedMinMax));\n this.DOM.zoomed_labelMin.classed(\"vzb-hidden\", !this.ui.selectZoomedMinMax);\n this.DOM.zoomed_labelMax.classed(\"vzb-hidden\", !this.ui.selectZoomedMinMax);\n this.DOM.zoomed_fieldMin.classed(\"vzb-hidden\", !this.ui.selectZoomedMinMax);\n this.DOM.zoomed_fieldMax.classed(\"vzb-hidden\", !this.ui.selectZoomedMinMax);\n const {\n domain,\n zoomed\n } = this.MDL.model;\n this.DOM.domain_fieldMin.property(\"value\", this.formatter(d3__namespace.min(domain)));\n this.DOM.domain_fieldMax.property(\"value\", this.formatter(d3__namespace.max(domain)));\n this.DOM.zoomed_fieldMin.property(\"value\", this.formatter(d3__namespace.min(zoomed)));\n this.DOM.zoomed_fieldMax.property(\"value\", this.formatter(d3__namespace.max(zoomed)));\n }\n _getModel() {\n if (this.state.submodel) {\n const submodel = this.state.submodel.split(\".\");\n if (submodel[0] === \"encoding\") {\n return getProp(this.model.encoding[submodel[1]], submodel.slice(2));\n }\n }\n if (!this.state.submodel && !this.state.submodelFunc) return this.model;\n return this.state.submodelFunc ? this.state.submodelFunc() : getProp(this, this.state.submodel.split(\".\"));\n }\n _setModel(what, index, value) {\n const newWhatArray = this.MDL.model[what].slice(0);\n const sanitizedValue = parseFloat(value.replace(\"−\", \"-\"));\n if(!sanitizedValue && sanitizedValue !== 0) return;\n newWhatArray[index] = sanitizedValue;\n this.MDL.model.config[what] = newWhatArray;\n }\n }\n MinMaxInputs.DEFAULT_UI = {\n selectDomainMinMax: false,\n selectZoomedMinMax: true\n };\n const decorated$6 = mobx.decorate(MinMaxInputs, {\n \"MDL\": mobx.computed\n });\n\n /*!\n * VIZABI INDICATOR PICKER\n * Reusable indicator picker component\n */\n class IndicatorPicker extends BaseComponent {\n constructor(config) {\n config.template = `\n <span class=\"vzb-ip-holder\">\n <span class=\"vzb-ip-select\"></span>\n <span class=\"vzb-ip-info\"></span>\n </span>\n `;\n super(config);\n }\n setup(options) {\n this.targetProp = options.targetProp;\n this.submodel = options.submodel;\n this.submodelFunc = options.submodelFunc;\n this.showHoverValues = options.showHoverValues || false;\n this.DOM = {\n select: this.element.select(\".vzb-ip-select\"),\n info: this.element.select(\".vzb-ip-info\")\n };\n this.DOM.select.on(\"click\", () => {\n const rect = this.DOM.select.node().getBoundingClientRect();\n const rootEl = this.root.element;\n const rootRect = rootEl.node().getBoundingClientRect();\n const treemenuComp = this.root.findChild({type: \"TreeMenu\"});\n const treemenuColWidth = treemenuComp.profileConstants.col_width;\n const treemenuWrapper = treemenuComp.element.select(\".vzb-treemenu-wrap\");\n const treemenuPaddLeft = parseInt(treemenuWrapper.style(\"padding-left\"), 10) || 0;\n const treemenuPaddRight = parseInt(treemenuWrapper.style(\"padding-right\"), 10) || 0;\n const topPos = rect.bottom - rootRect.top;\n const leftPos = rect.left - rootRect.left - (treemenuPaddLeft + treemenuPaddRight + treemenuColWidth - rect.width) * 0.5;\n if (this._isEncoding()) {\n treemenuComp\n .alignX(\"left\")\n .alignY(\"top\")\n .top(topPos)\n .left(leftPos)\n .encoding(this.targetProp)\n .toggle();\n }\n });\n }\n draw() {\n this.MDL = {\n model: this._getModel()\n };\n if (this.showHoverValues) {\n this.MDL.highlighted = this.model.encoding.highlighted;\n }\n this.localise = this.services.locale.auto();\n this.addReaction(this._updateView);\n }\n _getModel() {\n if (this.submodel === \"encoding\") {\n return this.model.encoding[this.targetProp];\n }\n if (!this.submodel && !this.submodelFunc) return this.model;\n return this.submodelFunc ? this.submodelFunc() : getProp(this, this.submodel.split(\".\"));\n }\n _updateView() {\n let selectText;\n if (this._isEncoding()) {\n if (this.MDL.model.data.isConstant) {\n const constant = this.MDL.model.data.constant;\n const scaleModelType = this.MDL.model.scale.config.modelType;\n selectText = this.localise(\"indicator/\" + constant + (scaleModelType ? \"/\" + scaleModelType : \"\"));\n } else if (this.showHoverValues && this.MDL.highlighted.data.filter.any() && !this.MDL.model.scale.isPattern) {\n const highlightedMarkers = this.MDL.highlighted.data.filter.markers;\n const [key, payload] = highlightedMarkers.entries().next().value;\n const hoverKey = (this.model.dataMap.getByStr(key) || (payload !== true && JSON.parse(payload)) || {})[this.targetProp];\n if ([\"entity_domain\", \"entity_set\"].includes(this.MDL.model.data.conceptProps.concept_type)){\n if (this.state.hoverKeyLabels && this.state.hoverKeyLabels[hoverKey] != null)\n selectText = this.state.hoverKeyLabels[hoverKey];\n else\n selectText = this.localise(hoverKey);\n } else {\n selectText = this.localise(hoverKey);\n }\n } else {\n selectText = getConceptShortName(this.MDL.model, this.localise);\n }\n }\n this.treemenu = this.root.findChild({type: \"TreeMenu\"});\n this.DOM.select\n .classed(\"vzb-disabled\", this.treemenu.state.ownReadiness !== STATUS.READY)\n .text(selectText);\n }\n _isEncoding() {\n return !!this.MDL.model.marker;\n }\n _setModel(value) {\n this.MDL.model[this.checkbox] = value;\n }\n }\n\n function firstLastOrMiddle(index, total){\n return {first: index === 0, last: index + 1 === total};\n }\n class _Repeater extends BaseComponent {\n get MDL(){\n return {\n repeat: this.model.encoding.repeat\n };\n }\n loading(){\n this.addReaction(this.addRemoveSubcomponents, true);\n }\n addRemoveSubcomponents(){\n const {repeatedComponentCssClass} = this.options;\n const {rowcolumn, ncolumns, nrows} = this.MDL.repeat;\n const repeat = this.MDL.repeat;\n this.element\n .style(\"grid-template-rows\", \"1fr \".repeat(nrows))\n .style(\"grid-template-columns\", \"1fr \".repeat(ncolumns));\n let sections = this.element.selectAll(\".vzb-repeat-inner\")\n .data(rowcolumn, d => repeat.getName(d));\n sections.exit()\n .each(d => this.removeSubcomponent(d))\n .remove();\n sections.enter().append(\"div\")\n .attr(\"class\", \"vzb-repeat-inner\")\n .each(function(d){\n d3__namespace.select(this).append(\"div\")\n .datum(null)\n .attr(\"class\", () => `${repeatedComponentCssClass} vzb-${repeat.getName(d)}`);\n })\n .each((d,i) => this.addSubcomponent(d,i))\n .merge(sections)\n .style(\"grid-row-start\", (_, i) => repeat.getRowIndex(i) + 1)\n .style(\"grid-column-start\", (_, i) => repeat.getColumnIndex(i) + 1)\n .each((d,i) => {\n this.findChild({name: repeat.getName(d)}).state.positionInRepeat = this.getPosition(i);\n });\n this.services.layout._resizeHandler();\n }\n getPosition(i){\n const repeat = this.MDL.repeat;\n const {ncolumns, nrows} = repeat;\n return {\n row: firstLastOrMiddle(repeat.getRowIndex(i), nrows),\n column: firstLastOrMiddle(repeat.getColumnIndex(i), ncolumns)\n }\n }\n addSubcomponent(d, index){\n const {repeatedComponent} = this.options;\n const name = this.MDL.repeat.getName(d);\n const subcomponent = new repeatedComponent({\n id: this.id + \"-\" + index,\n placeholder: \".vzb-\" + name,\n model: this.model,\n name,\n parent: this,\n root: this.root,\n state: {alias: d},\n services: this.services,\n options: this.options.repeatedComponentOptions,\n ui: this.ui,\n default_ui: this.DEFAULT_UI\n });\n this.children.push(subcomponent);\n }\n removeSubcomponent(d){\n const subcomponent = this.findChild({name: this.MDL.repeat.getName(d)});\n if(subcomponent) {\n subcomponent.deconstruct();\n }\n }\n }\n _Repeater.DEFAULT_UI = {\n };\n const Repeater = mobx.decorate(_Repeater, {\n \"MDL\": mobx.computed\n });\n\n function spacesAreEqual$2(a, b){\n return a.concat().sort().join() === b.concat().sort().join();\n }\n function getMatchingSpace(spaces, targetSpace){\n return spaces.find(s => spacesAreEqual$2(s, targetSpace));\n }\n function getSubspaces(spaces, targetSpace){\n return spaces.filter(s => s.every(dim => targetSpace.includes(dim)))\n .sort((a,b) => b.length - a.length);\n }\n function getSuperspaces(spaces, targetSpace){\n return spaces.filter(s => targetSpace.every(dim => s.includes(dim)))\n .sort((a,b) => a.length - b.length);\n }\n function getPartiallyOverlappingSpaces(spaces, targetSpace){\n return spaces.filter(s => targetSpace.some(dim => s.includes(dim)))\n .sort((a,b) => a.length - b.length);\n }\n function removeDulicates(array){\n const result = [];\n array.forEach(space => {\n if(!result.some(s => spacesAreEqual$2(s, space)))\n result.push(space);\n });\n return result;\n }\n let hidden$1 = true;\n class _SpaceConfig extends BaseComponent {\n constructor(config) {\n config.template = `\n <div class=\"vzb-spaceconfig-background\"></div>\n <div class=\"vzb-spaceconfig-box\">\n <div class=\"vzb-spaceconfig-title\"></div>\n <div class=\"vzb-spaceconfig-body vzb-dialog-scrollable\">\n <div class=\"vzb-spaceconfig-marker\">\n <label for=\"vzb-spaceconfig-select\"></label>\n <select id=\"vzb-spaceconfig-select\"></select>\n </div>\n <div class=\"vzb-spaceconfig-encodings\"></div>\n </div>\n <div class=\"vzb-spaceconfig-buttons\">\n <div class=\"vzb-spaceconfig-button-apply\"></div>\n <div class=\"vzb-spaceconfig-button-cancel\"></div>\n </div>\n </div>\n `;\n super(config);\n }\n setup() {\n this.DOM = {\n background: this.element.select(\".vzb-spaceconfig-background\"),\n container: this.element.select(\".vzb-spaceconfig-box\"),\n close: this.element.select(\".vzb-spaceconfig-close\"),\n title: this.element.select(\".vzb-spaceconfig-title\"),\n body: this.element.select(\".vzb-spaceconfig-body\"),\n marker: this.element.select(\".vzb-spaceconfig-marker\"),\n encodings: this.element.select(\".vzb-spaceconfig-encodings\"),\n buttoncancel: this.element.select(\".vzb-spaceconfig-button-cancel\"),\n buttonapply: this.element.select(\".vzb-spaceconfig-button-apply\"),\n button: d3__namespace.select(this.options.button)\n };\n this.element.classed(\"vzb-hidden\", true);\n this.setupDialog();\n this.setupTiggerButton();\n }\n setupDialog() {\n this.DOM.background\n .on(\"click\", () => {\n this.toggle(true);\n });\n this.DOM.container.append(\"div\")\n .html(ICON_CLOSE)\n .on(\"click\", () => {\n this.toggle();\n })\n .select(\"svg\")\n .attr(\"width\", \"0px\")\n .attr(\"height\", \"0px\")\n .attr(\"class\", \"vzb-spaceconfig-close\");\n }\n setupTiggerButton() {\n if(!this.DOM.button.size()) return warn(\"quit setupTiggerButton of SpaceConfig because no button provided\");\n setIcon(this.DOM.button, ICON_ELLIPSIS_V)\n .attr(\"title\", \"Configure marker space\")\n .on(\"click\", () => {\n this.toggle();\n });\n }\n get MDL(){\n return {\n frame: this.model.encoding.frame\n };\n }\n draw() {\n this.localise = this.services.locale.auto();\n this.addReaction(this.updateUIstrings);\n this.addReaction(this.drawContent);\n }\n drawContent(){\n if (this.element.classed(\"vzb-hidden\")) return;\n this.addReaction(this.updateMarker);\n this.addReaction(this.updateEncodigns);\n this.addReaction(this.updateApplyCancelButtons);\n }\n updateUIstrings(){\n this.DOM.title.html(this.localise(\"Space config\"));\n this.DOM.marker.select(\"label\").text(this.localise(\"Marker space\"));\n this.DOM.buttoncancel.text(\"Cancel\");\n this.DOM.buttonapply.text(\"Apply\");\n }\n toggle(arg) {\n if (arg == null) arg = !hidden$1;\n hidden$1 = arg;\n this.element.classed(\"vzb-hidden\", hidden$1);\n this.root.children.forEach(c => {\n c.element.classed(\"vzb-blur\", c != this && !hidden$1);\n });\n this.drawContent();\n }\n _getDataModels(dsConfig) {\n return Object.keys(dsConfig).map(dsName => this.services.Vizabi.Vizabi.stores.dataSources.get(dsName));\n }\n _getAvailability(){\n const items = [];\n this._getDataModels(this.root.model.config.dataSources).forEach(ds => {\n ds.availability.data.forEach(kv => {\n items.push({ key: kv.key, value: ds.getConcept(kv.value), source: ds });\n });\n });\n return items;\n }\n _getSpaceAvailability(){\n const items = [];\n this._getDataModels(this.root.model.config.dataSources).forEach(ds => {\n ds.availability.keyLookup.forEach(val => {\n items.push(val);\n });\n });\n return items;\n }\n _nestAvailabilityByConcepts(availability){\n return availability.reduce((map, kv) => {\n const key = kv.value;\n const space = kv.key;\n if (!map.has(key)) map.set(key, {source: kv.source, spaces: new Set()});\n map.get(key).spaces.add(space);\n return map;\n }, new Map());\n }\n _conceptsCompatibleWithMarkerSpace(availabilityMapByConcepts, markerSpace){\n const filteredValueLookup = new Map();\n const markerSpaceSet = new Set(markerSpace);\n const intersect = (a,b) => a.filter(e => b.has(e));\n for (const [concept, {source, spaces}] of availabilityMapByConcepts) {\n const filteredSpaces = [...spaces].filter(space => {\n const intersection = intersect(space, markerSpaceSet);\n return intersection.length == markerSpaceSet.size || intersection.length == space.length;\n });\n if (filteredSpaces.length) filteredValueLookup.set(concept, {source, spaces: filteredSpaces});\n }\n return filteredValueLookup;\n }\n _convertConceptMapToArray(conceptmap){\n return [...conceptmap].map(([concept, {source, spaces}]) => ({concept, source, spaces: [...spaces]}));\n }\n updateMarker(){\n const _this = this;\n const frameConcept = this.MDL.frame.data.concept;\n const spaceAvailability = removeDulicates(this._getSpaceAvailability().filter(f => f.includes(frameConcept)));\n const selector = this.DOM.marker.select(\"select\");\n const options = selector.selectAll(\"option\").data(spaceAvailability, d => d.sort().join());\n options.exit().remove();\n options.enter().append(\"option\")\n .text(d => d.join())\n .merge(options)\n .property(\"selected\", d => spacesAreEqual$2(d, this.model.data.space));\n selector\n .on(\"change\", function() {\n const space = d3__namespace.select(this.options[this.selectedIndex]).datum();\n _this.proposedSpace = space;\n _this.updateEncodigns();\n _this.updateApplyCancelButtons();\n });\n }\n getEncodings(){\n const encs = this.model.encoding;\n return Object.keys(encs).filter(enc => {\n if (!this.model.requiredEncodings || this.model.requiredEncodings.includes(enc)) return true;\n if (enc == \"color\") return true;\n if (enc == \"label\") return true;\n });\n }\n updateEncodigns(){\n const _this = this;\n const encs = this.model.encoding;\n const nest = this._nestAvailabilityByConcepts(this._getAvailability());\n this.concepts = this._convertConceptMapToArray(nest);\n console.log(this.concepts);\n this.encNewConfig = {};\n this.DOM.encodings\n .html(\"\")\n .selectAll(\"div\")\n .data(this.getEncodings(), d=>d)\n .enter().append(\"div\")\n .each(function(enc){\n const view = d3__namespace.select(this);\n const encoding = encs[enc];\n const status = _this.getSpaceCompatibilityStatus(encoding);\n const concept = _this.concepts.find(f => f.concept.concept == encoding.data.concept);\n const isSpaceSet = encoding.data.config.space;\n const newConfig = _this.encNewConfig[enc] = {};\n view.append(\"div\")\n .attr(\"class\", \"vzb-spaceconfig-enc-status\")\n .attr(\"title\", status.status)\n .text(_this.statusIcons(status));\n view.append(\"div\")\n .attr(\"class\", \"vzb-spaceconfig-enc-name\")\n .text(enc);\n if(status.status == \"constant\"){\n view.append(\"div\")\n .attr(\"class\", \"vzb-spaceconfig-enc-concept\")\n .text(\"constant: \" + encoding.data.constant);\n }else {\n view.append(\"div\")\n .attr(\"class\", \"vzb-spaceconfig-enc-concept\")\n .text(concept.concept.name);\n view.append(\"div\")\n .attr(\"for\", \"vzb-spaceconfig-enc-space-current\")\n .text(\"current space: \" + encoding.data.space.join() + (isSpaceSet? \" (set)\" : \" (inherited)\") );\n if(status.status == \"alreadyInSpace\" || status.status == \"entityPropertyDataConfig\") {\n view.append(\"div\")\n .attr(\"for\", \"vzb-spaceconfig-enc-space-new\")\n .text(\"new space: will reset to marker space if set\");\n if(isSpaceSet) newConfig[\"space\"] = null;\n if(encoding.data.config.filter) newConfig[\"filter\"] = {};\n }\n if(status.status == \"matchingSpaceAvailable\") {\n view.append(\"div\")\n .attr(\"for\", \"vzb-spaceconfig-enc-space-new\")\n .text(\"new space: \" + status.spaces[0].join() + (isSpaceSet? \" (set)\" : \" (inherited)\"));\n if(isSpaceSet) newConfig[\"space\"] = null;\n if(encoding.data.config.filter) newConfig[\"filter\"] = {};\n }\n if(status.status == \"subspaceAvailable\") {\n view.append(\"div\")\n .attr(\"for\", \"vzb-spaceconfig-enc-space-new\")\n .text(\"new space: \" + status.spaces[0].join() + \" (set)\");\n newConfig[\"space\"] = status.spaces[0];\n if(encoding.data.config.filter) newConfig[\"filter\"] = {};\n }\n if(status.status == \"superspaceAvailable\") {\n view.append(\"div\")\n .attr(\"for\", \"vzb-spaceconfig-enc-space-new\")\n .text(\"new space: \" + status.spaces[0].join() + \" (set)\");\n view.append(\"div\")\n .attr(\"for\", \"vzb-spaceconfig-enc-space-new\")\n .text(\"suggest constants for compliment dimensions!\");\n newConfig[\"space\"] = status.spaces[0];\n if(encoding.data.config.filter) newConfig[\"filter\"] = {};\n }\n if(status.status == \"patialOverlap\" || status.status == \"noOverlap\") {\n view.append(\"div\")\n .attr(\"for\", \"vzb-spaceconfig-enc-space-new\")\n .text(\"new space: not avaiable\");\n view.append(\"label\")\n .attr(\"for\", \"vzb-spaceconfig-enc-space-select\")\n .text(\"select concept:\");\n const filtervl = _this._conceptsCompatibleWithMarkerSpace(nest, _this.proposedSpace);\n const concepts = _this._convertConceptMapToArray(filtervl);\n const select = view.append(\"select\")\n .attr(\"class\", \"vzb-spaceconfig-enc-concept-new\")\n .attr(\"id\", \"vzb-spaceconfig-enc-space-select\")\n .on(\"change\", function(){\n newConfig[\"concept\"] = d3__namespace.select(this).property(\"value\");\n newConfig[\"space\"] = null;\n newConfig[\"filter\"] = {};\n })\n .selectAll(\"option\")\n .data(concepts)\n .enter().append(\"option\")\n .attr(\"value\", option => option.concept.concept)\n .text(option => option.concept.name);\n select.property(\"selectedIndex\", -1);\n }\n }\n });\n }\n statusIcons(compatibility){\n return {\n true: \"⚫\",\n constant: \"✳️\",\n alreadyInSpace: \"♻️\",\n entityPropertyDataConfig: \"🏷\",\n matchingSpaceAvailable: \"➡️\",\n subspaceAvailable: \"↘️\",\n superspaceAvailable: \"↗️\",\n patialOverlap: \"🚧\",\n noOverlap: \"🚧\",\n false: \"❌\"\n }[\"\"+compatibility.status];\n }\n getSpaceCompatibilityStatus(encoding){\n const spaces = this.concepts.find(f => f.concept.concept == encoding.data.concept)?.spaces;\n const proposedSpace = this.proposedSpace;\n if (!proposedSpace) return {status: true, spaces: []};\n if (encoding.data.isConstant) return {status: \"constant\"};\n if (encoding.data.config.modelType == \"entityPropertyDataConfig\")\n return {status: \"entityPropertyDataConfig\", spaces: [proposedSpace]};\n if (spacesAreEqual$2(encoding.data.space, proposedSpace))\n return {status: \"alreadyInSpace\", spaces: [proposedSpace]};\n if (getMatchingSpace(spaces, proposedSpace))\n return {status: \"matchingSpaceAvailable\", spaces: [proposedSpace]};\n const subspaces = getSubspaces(spaces, proposedSpace);\n if (subspaces.length > 0)\n return {status: \"subspaceAvailable\", spaces: subspaces};\n const superspaces = getSuperspaces(spaces, proposedSpace);\n if (superspaces.length > 0)\n return {status: \"superspaceAvailable\", spaces: superspaces};\n const partialOverlap = getPartiallyOverlappingSpaces(spaces, proposedSpace);\n if (partialOverlap.length > 0)\n return {status: \"patialOverlap\", spaces: []};\n if (partialOverlap.length == 0)\n return {status: \"noOverlap\", spaces: []};\n return {status: false, spaces: []};\n }\n updateApplyCancelButtons(){\n const hide = !this.proposedSpace || spacesAreEqual$2(this.proposedSpace, this.model.data.space);\n this.DOM.buttoncancel.classed(\"vzb-hidden\", hide)\n .on(\"click\", () => {this.cancelChanges();});\n this.DOM.buttonapply.classed(\"vzb-hidden\", hide)\n .on(\"click\", () => {this.applyChanges();});\n }\n cancelChanges(){\n this.proposedSpace = null;\n this.toggle();\n }\n applyChanges(){\n if (!this.proposedSpace) return;\n mobx.runInAction(()=>{\n this.model.config.data.space = this.proposedSpace;\n Object.keys(this.encNewConfig).forEach(enc => {\n const newConfig = this.encNewConfig[enc];\n if (newConfig.concept)\n this.model.encoding[enc].config.data.concept = newConfig.concept;\n if (newConfig.space)\n this.model.encoding[enc].config.data.space = newConfig.space;\n else if (newConfig.hasOwnProperty(\"space\"))\n delete this.model.encoding[enc].config.data.space;\n if (newConfig.filter)\n this.model.encoding[enc].config.data.filter = newConfig.filter;\n else if (newConfig.hasOwnProperty(\"filter\"))\n delete this.model.encoding[enc].config.data.filter;\n });\n });\n this.toggle();\n }\n }\n _SpaceConfig.DEFAULT_UI = {\n };\n const SpaceConfig = mobx.decorate(_SpaceConfig, {\n \"MDL\": mobx.computed\n });\n\n const HTML_ICON_PLAY =\n `<svg class=\"vzb-icon vzb-icon-play\" viewBox=\"3 3 42 42\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path xmlns=\"http://www.w3.org/2000/svg\" d=\"M24 4C12.95 4 4 12.95 4 24s8.95 20 20 20 20-8.95 20-20S35.05 4 24 4zm-4 29V15l12 9-12 9z\"/>\n </svg>`;\n const HTML_ICON_PAUSE =\n `<svg class=\"vzb-icon vzb-icon-pause\" viewBox=\"3 3 42 42\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path xmlns=\"http://www.w3.org/2000/svg\" d=\"M24 4C12.95 4 4 12.95 4 24s8.95 20 20 20 20-8.95 20-20S35.05 4 24 4zm-2 28h-4V16h4v16zm8 0h-4V16h4v16z\"/>\n </svg>`;\n const HTML_ICON_LOADING =\n `<div class='vzb-loader'></div>`;\n class PlayButton extends BaseComponent {\n constructor(config) {\n config.template =\n `<button class=\"vzb-ts-btn\">\n <div class='vzb-loader'></div>\n </button>`;\n super(config);\n }\n setup() {\n this.buttonEl = this.element.select(\".vzb-ts-btn\")\n .on(\"click\", () => {this.model.encoding.frame.togglePlaying();});\n }\n draw() {\n this.buttonEl.html(this.model.encoding.frame.playing ? HTML_ICON_PAUSE : HTML_ICON_PLAY);\n }\n loading() {\n this.buttonEl.html(HTML_ICON_LOADING);\n }\n }\n\n const PROFILE_CONSTANTS$2 = {\n SMALL: {\n margin: {\n top: 7,\n right: 25,\n bottom: 10,\n left: 60\n },\n radius: 8,\n label_spacing: 5\n },\n MEDIUM: {\n margin: {\n top: 0,\n right: 25,\n bottom: 10,\n left: 55\n },\n radius: 9,\n label_spacing: 5\n },\n LARGE: {\n margin: {\n top: -5,\n right: 25,\n bottom: 10,\n left: 80\n },\n radius: 11,\n label_spacing: 8\n }\n };\n const PROFILE_CONSTANTS_FOR_PROJECTOR$2 = {\n MEDIUM: {\n margin: {\n top: 9,\n right: 25,\n bottom: 10,\n left: 55\n }\n },\n LARGE: {\n margin: {\n top: -5,\n right: 25,\n bottom: 10,\n left: 80\n }\n }\n };\n const class_playing = \"vzb-playing\";\n const class_loading = \"vzb-ts-loading\";\n const class_hide_play = \"vzb-ts-hide-play-button\";\n const class_dragging = \"vzb-ts-dragging\";\n const class_axis_aligned = \"vzb-ts-axis-aligned\";\n const class_show_value = \"vzb-ts-show-value\";\n const class_show_value_when_drag_play = \"vzb-ts-show-value-when-drag-play\";\n class TimeSlider extends BaseComponent {\n constructor(config){\n config.subcomponents = [{\n type: PlayButton,\n placeholder: \".vzb-ts-btns\",\n }];\n config.template = `\n <div class=\"vzb-ts-slider\">\n <svg class=\"vzb-ts-slider-svg\">\n <g>\n <g class=\"vzb-ts-slider-axis\"></g>\n <g class=\"vzb-ts-slider-progress\"></g>\n <g class=\"vzb-ts-slider-select\"></g>\n <line class=\"vzb-ts-slider-forecastboundary\"></line>\n <circle class=\"vzb-ts-slider-handle\"></circle>\n <text class=\"vzb-ts-slider-value\"></text>\n <line class=\"vzb-ts-slider-slide\"></line>\n </g>\n </svg> \n </div>\n <div class=\"vzb-ts-btns\"></div>\n `;\n super(config);\n }\n setup() {\n this.DOM = {\n slider_outer: this.element.select(\".vzb-ts-slider-svg\"),\n axis: this.element.select(\".vzb-ts-slider-axis\"),\n select: this.element.select(\".vzb-ts-slider-select\"),\n progressBar: this.element.select(\".vzb-ts-slider-progress\"),\n slide: this.element.select(\".vzb-ts-slider-slide\"),\n forecastBoundary: this.element.select(\".vzb-ts-slider-forecastboundary\"),\n handle: this.element.select(\".vzb-ts-slider-handle\"),\n valueText: this.element.select(\".vzb-ts-slider-value\")\n };\n this.DOM.slider = this.DOM.slider_outer.select(\"g\");\n this.xAxis = axisSmart$1(\"bottom\");\n const { valueText, slider, slide, slider_outer } = this.DOM;\n valueText.classed(\"stroke\", true);\n if (!slider.style(\"paint-order\").length) {\n slider.insert(\"text\", \".vzb-ts-slider-value\")\n .attr(\"class\", \"vzb-ts-slider-value stroke\");\n valueText.classed(\"stroke\", false);\n }\n this.DOM.valueText = this.element.selectAll(\".vzb-ts-slider-value\")\n .attr(\"text-anchor\", \"middle\")\n .attr(\"dy\", \"-0.7em\");\n slide.call(d3__namespace.drag()\n .on(\"start drag\", event => this._brushed(event))\n .on(\"end\", event => this._brushedEnd(event))\n );\n slider_outer.on(\"mousewheel\", (event) => {\n if (this.ui.dragging) {\n event.stopPropagation();\n event.preventDefault();\n event.returnValue = false;\n return false;\n }\n });\n this.DOM.forecastBoundary.on(\"click\", () => {\n this.MDL.frame.setValueAndStop(this.root.ui.chart.endBeforeForecast);\n });\n }\n get MDL() {\n return {\n frame: this.model.encoding.frame\n };\n }\n draw() {\n this.localise = this.services.locale.auto(this.MDL.frame.interval);\n this.element.classed(class_loading, false);\n if (this._updateLayoutProfile()) return;\n this.addReaction(this._configEndBeforeForecast);\n this.addReaction(this._adjustFrameScaleDomainConfig);\n this.addReaction(this._updateSize);\n this.addReaction(this._redrawForecast);\n this.addReaction(this._optionClasses);\n this.addReaction(this._processForecast);\n this.addReaction(this._setHandle);\n }\n _updateLayoutProfile() {\n this.services.layout.size;\n this.profileConstants = this.services.layout.getProfileConstants(PROFILE_CONSTANTS$2, PROFILE_CONSTANTS_FOR_PROJECTOR$2);\n this.height = this.element.node().clientHeight || 0;\n this.width = this.element.node().clientWidth || 0;\n if (!this.height || !this.width) return warn(\"Timeslider _updateProfile() abort: container is too little or has display:none\");\n }\n get xScale() {\n return this.MDL.frame.scale.d3Scale;\n }\n _configEndBeforeForecast() {\n const frame = this.MDL.frame;\n const { offset, floor } = this.services.Vizabi.Vizabi.utils.interval(frame.interval);\n if (!this.root.ui.chart.endBeforeForecast) {\n const stepBack = floor(offset(new Date(), -1));\n this.root.ui.chart.endBeforeForecast = frame.formatValue(stepBack);\n }\n this.firstForecastFrame = offset(frame.parseValue(this.root.ui.chart.endBeforeForecast), +1);\n }\n _adjustFrameScaleDomainConfig() {\n const frame = this.MDL.frame;\n if (this.root.ui.chart.showForecast) {\n delete frame.scale.config.domain;\n } else {\n const lastNonForecast = frame.parseValue(this.root.ui.chart.endBeforeForecast);\n if (lastNonForecast && frame.data.domain[1] > lastNonForecast)\n frame.scale.config.domain = [ frame.data.domain[0], lastNonForecast ]\n .map(v => frame.formatValue(v));\n else\n delete frame.scale.config.domain;\n }\n }\n _processForecast() {\n const frame = this.MDL.frame;\n const lastNonForecast = frame.parseValue(this.root.ui.chart.endBeforeForecast);\n const forecastPauseSetting = this.root.ui.chart.pauseBeforeForecast;\n const equals = this.services.Vizabi.Vizabi.utils.equals;\n if (frame.playing\n && forecastPauseSetting\n && equals(frame.value, this.firstForecastFrame)\n && this.allowForecastPause\n ) {\n frame.setValueAndStop(lastNonForecast);\n }\n this.allowForecastPause = frame.playing && equals(frame.value, lastNonForecast);\n }\n _redrawForecast() {\n this.services.layout.size;\n const endBeforeForecast = this.MDL.frame.parseValue(this.root.ui.chart.endBeforeForecast);\n const forecastIsOn = this.root.ui.chart.showForecast && (this.MDL.frame.scale.domain[1] > endBeforeForecast);\n this.DOM.forecastBoundary\n .classed(\"vzb-hidden\", !forecastIsOn);\n if (forecastIsOn) {\n const radius = this.profileConstants.radius;\n this.DOM.forecastBoundary\n .attr(\"transform\", \"translate(0,\" + this.height / 2 + \")\")\n .attr(\"x1\", this.xScale(endBeforeForecast) - radius / 2)\n .attr(\"x2\", this.xScale(endBeforeForecast) + radius / 2)\n .attr(\"y1\", radius)\n .attr(\"y2\", radius);\n }\n }\n _updateSize() {\n this.services.layout.size;\n const {\n margin,\n radius,\n label_spacing\n } = this.profileConstants;\n const {\n slider,\n slide,\n axis,\n handle,\n select,\n progressBar\n } = this.DOM;\n const marginRight = this.services.layout.hGrid.length ?\n this.width - this.services.layout.hGrid[0]\n : margin.right;\n this.sliderWidth = this.width - margin.left - marginRight;\n this.sliderHeight = this.height - margin.bottom - margin.top;\n slider.attr(\"transform\", \"translate(\" + margin.left + \",\" + margin.top + \")\");\n this.MDL.frame.scale.config.range = [0, this.sliderWidth];\n slide\n .attr(\"transform\", \"translate(0,\" + this.sliderHeight / 2 + \")\")\n .attr(\"x1\", this.xScale.range()[0])\n .attr(\"x2\", this.xScale.range()[1])\n .style(\"stroke-width\", radius * 2 + \"px\");\n this.xAxis.scale(this.xScale)\n .tickSizeInner(0)\n .tickSizeOuter(0)\n .tickPadding(label_spacing)\n .tickSizeMinor(0, 0);\n axis.attr(\"transform\", \"translate(0,\" + this.sliderHeight / 2 + \")\")\n .call(this.xAxis);\n select.attr(\"transform\", \"translate(0,\" + this.sliderHeight / 2 + \")\");\n progressBar.attr(\"transform\", \"translate(0,\" + this.sliderHeight / 2 + \")\");\n handle.attr(\"transform\", \"translate(0,\" + this.sliderHeight / 2 + \")\")\n .attr(\"r\", radius);\n }\n _getValueWidth() {\n return this.valueText.node().getBoundingClientRect().width;\n }\n _brushed(event) {\n const { frame } = this.MDL;\n const { handle, valueText } = this.DOM;\n if (frame.playing) {\n frame.stopPlaying();\n }\n this.ui.dragging = true;\n this.element.classed(class_dragging, this.ui.dragging);\n let value;\n if (event.sourceEvent) {\n event.sourceEvent.preventDefault();\n let posX = event.x;\n const maxPosX = this.sliderWidth;\n const endBeforeForecast = frame.parseValue(this.root.ui.chart.endBeforeForecast);\n const forecastBoundaryIsOn = this.root.ui.chart.showForecast && (frame.data.domain.at(-1) > endBeforeForecast);\n const forecastBoundaryPos = this.xScale(endBeforeForecast);\n const snappyMargin = 0.5 * handle.attr(\"r\");\n if (posX > maxPosX) {\n posX = maxPosX;\n } else if (posX < 0) {\n posX = 0;\n } else if ((Math.abs(posX - forecastBoundaryPos) < snappyMargin) && event.sourceEvent.shiftKey && forecastBoundaryIsOn) {\n posX = forecastBoundaryPos;\n }\n value = this.xScale.invert(posX);\n handle.attr(\"cx\", posX);\n valueText.attr(\"transform\", \"translate(\" + posX + \",\" + (this.sliderHeight / 2) + \")\");\n valueText.text(this.localise(value));\n }\n if (value - this.MDL.frame.value !== 0) {\n this._setTime(value);\n }\n }\n _brushedEnd() {\n this.element.classed(class_dragging, this.ui.dragging);\n this.MDL.frame.snap();\n this.ui.dragging = false;\n }\n _setHandle() {\n this.services.layout.size;\n this.services.layout.hGrid;\n const { value, speed, playing } = this.MDL.frame;\n if (this.ui.dragging || this._isDomainNotVeryGood()) return;\n const { handle, valueText } = this.DOM;\n const newPos = this.xScale(value);\n const delayAnimations = speed;\n if (playing) {\n handle\n .transition()\n .duration(delayAnimations)\n .ease(d3__namespace.easeLinear)\n .attr(\"cx\", newPos);\n valueText\n .transition(\"text\")\n .delay(delayAnimations)\n .text(this.localise(value));\n valueText\n .transition()\n .duration(delayAnimations)\n .ease(d3__namespace.easeLinear)\n .attr(\"transform\", \"translate(\" + newPos + \",\" + (this.sliderHeight / 2) + \")\");\n } else {\n handle\n .interrupt()\n .attr(\"cx\", newPos);\n valueText\n .interrupt()\n .interrupt(\"text\")\n .transition(\"text\");\n valueText\n .attr(\"transform\", \"translate(\" + newPos + \",\" + (this.sliderHeight / 2) + \")\")\n .text(this.localise(value));\n }\n }\n _setTime(time) {\n const _this = this;\n const frameRate = 50;\n var now = new Date();\n if (this._updTime != null && now - this._updTime < frameRate) return;\n this._updTime = now;\n _this.MDL.frame.setValue(time);\n }\n _optionClasses() {\n const { frame } = this.MDL;\n const show_ticks = this.ui.show_ticks;\n const show_value = this.ui.show_value;\n const show_value_when_drag_play = this.ui.show_value_when_drag_play;\n const axis_aligned = this.ui.axis_aligned;\n const show_play = (this.ui.show_button) && (frame.playable);\n this.xAxis.labelerOptions({\n scaleType: \"time\",\n removeAllLabels: !show_ticks,\n limitMaxTickNumber: 3,\n showOuter: false,\n toolMargin: {\n left: 10,\n right: 10,\n top: 0,\n bottom: 30\n },\n fitIntoScale: \"optimistic\"\n });\n this.DOM.axis\n .call(this.xAxis);\n this.element.classed(\"vzb-ts-disabled\", this._isDomainNotVeryGood());\n this.element.classed(class_hide_play, !show_play);\n this.element.classed(class_playing, frame.playing);\n this.element.classed(class_show_value, show_value);\n this.element.classed(class_show_value_when_drag_play, show_value_when_drag_play);\n this.element.classed(class_axis_aligned, axis_aligned);\n }\n _isDomainNotVeryGood(){\n const domain = this.xScale.domain();\n if(!domain || domain.length !== 2) return true;\n if(domain[1] - domain[0] <= 0) return true;\n if(domain.some(s => s == null || isNaN(s))) return true;\n return false;\n }\n }\n TimeSlider.DEFAULT_UI = {\n show_ticks: false,\n show_value: false,\n show_value_when_drag_play: true,\n axis_aligned: false,\n show_button: true,\n dragging: false\n };\n const decorated$5 = mobx.decorate(TimeSlider, {\n \"xScale\": mobx.computed,\n \"MDL\": mobx.computed\n });\n\n const OPTIONS$5 = {\n checkbox: null,\n setCheckboxFunc: null,\n submodel: null,\n submodelFunc: null,\n prefix: \"\",\n };\n class SimpleCheckbox extends BaseComponent {\n constructor(config) {\n config.template = `\n <span class=\"vzb-sc-holder vzb-dialog-checkbox\"><input type=\"checkbox\"><label></label></span> \n `;\n super(config);\n }\n setup(_options) {\n this.DOM = {\n check: this.element.select(\"input\"),\n label: this.element.select(\"label\")\n };\n this.options = deepExtend(deepExtend({}, OPTIONS$5), _options || {});\n const _this = this;\n const id = \"-check-\" + this.id;\n this.DOM.label.attr(\"for\", id);\n this.DOM.check.attr(\"id\", id)\n .on(\"change\", function() {\n _this._setModel(d3__namespace.select(this).property(\"checked\"));\n });\n }\n draw() {\n this.MDL = {\n model: this._getModel()\n };\n this.localise = this.services.locale.auto();\n this.addReaction(this._updateView);\n }\n _getModel() {\n const {\n submodel,\n submodelFunc\n } = this.options;\n if (!submodel && !submodelFunc) return this.model;\n return submodelFunc ? submodelFunc() : getProp(this, submodel.split(\".\"));\n }\n _updateView() {\n const model = this.MDL.model;\n const {\n checkbox,\n prefix,\n labelText\n } = this.options;\n const modelExists = model && (model[checkbox] || model[checkbox] === false);\n this.DOM.label.classed(\"vzb-hidden\", !modelExists);\n if (modelExists) {\n this.DOM.label.html(this.localise(labelText ? labelText : (\"check/\" + (prefix ? prefix + \"/\" : \"\") + checkbox)));\n this.DOM.check.property(\"checked\", !!model[checkbox]);\n }\n }\n _setModel(value) {\n if (this.options.setCheckboxFunc) {\n this.options.setCheckboxFunc(value);\n } else {\n this.MDL.model[this.options.checkbox] = value;\n }\n }\n }\n\n const MENU_HORIZONTAL = 1;\n const MENU_VERTICAL = 2;\n const css = {\n wrapper: \"vzb-treemenu-wrap\",\n wrapper_outer: \"vzb-treemenu-wrap-outer\",\n background: \"vzb-treemenu-background\",\n close: \"vzb-treemenu-close\",\n search: \"vzb-treemenu-search\",\n list: \"vzb-treemenu-list\",\n list_outer: \"vzb-treemenu-list-outer\",\n list_item: \"vzb-treemenu-list-item\",\n list_item_leaf: \"vzb-treemenu-list-item-leaf\",\n leaf: \"vzb-treemenu-leaf\",\n leaf_content: \"vzb-treemenu-leaf-content\",\n leaf_content_item: \"vzb-treemenu-leaf-content-item\",\n leaf_content_item_title: \"vzb-treemenu-leaf-content-item-title\",\n leaf_content_item_datasources: \"vzb-treemenu-leaf-content-item-datasources\",\n leaf_content_item_space: \"vzb-treemenu-leaf-content-item-space\",\n leaf_content_item_descr: \"vzb-treemenu-leaf-content-item-descr\",\n leaf_content_item_helptranslate: \"vzb-treemenu-leaf-content-item-helptranslate\",\n hasChild: \"vzb-treemenu-list-item-children\",\n list_item_label: \"vzb-treemenu-list-item-label\",\n list_top_level: \"vzb-treemenu-list-top\",\n search_wrap: \"vzb-treemenu-search-wrap\",\n isSpecial: \"vzb-treemenu-list-item-special\",\n hidden: \"vzb-hidden\",\n title: \"vzb-treemenu-title\",\n scaletypes: \"vzb-treemenu-scaletypes\",\n scaletypesDisabled: \"vzb-treemenu-scaletypes-disabled\",\n scaletypesActive: \"vzb-treemenu-scaletypes-active\",\n alignYt: \"vzb-align-y-top\",\n alignYb: \"vzb-align-y-bottom\",\n alignXl: \"vzb-align-x-left\",\n alignXr: \"vzb-align-x-right\",\n alignXc: \"vzb-align-x-center\",\n menuHorizontal: \"vzb-treemenu-horizontal\",\n menuVertical: \"vzb-treemenu-vertical\",\n absPosVert: \"vzb-treemenu-abs-pos-vert\",\n absPosHoriz: \"vzb-treemenu-abs-pos-horiz\",\n menuOpenLeftSide: \"vzb-treemenu-open-left-side\",\n noTransition: \"notransition\"\n };\n const OPTIONS$4 = {\n MOUSE_LOCS: [],\n MOUSE_LOCS_TRACKED: 3,\n DELAY: 200,\n TOLERANCE: 150,\n LAST_DELAY_LOC: null,\n TIMEOUT: null,\n SEARCH_PROPERTY: \"id\",\n SUBMENUS: \"children\",\n SEARCH_MIN_STR: 1,\n RESIZE_TIMEOUT: null,\n MOBILE_BREAKPOINT: 400,\n CURRENT_PATH: [],\n MIN_COL_WIDTH: 60,\n MENU_DIRECTION: MENU_HORIZONTAL,\n MAX_MENU_WIDTH: 320,\n MENU_OPEN_LEFTSIDE: false\n };\n\n function spacesAreEqual$1(a, b){\n return a.concat().sort().join() === b.concat().sort().join();\n }\n class DeepLeaf{\n constructor(context, view){\n this.context = context;\n this.view = view;\n this.spaceChanged = false;\n this.encoding = this.context._targetModel;\n this.datum = view.datum();\n this.buildLeaf();\n }\n _getDatumForDS(){\n return this.datum.byDataSources.find(f => f.dataSource == this.encoding.data.source) || this.datum.byDataSources[0];\n }\n _isSelectedConcept() {\n return this.datum.id == this.encoding.data.concept;\n }\n buildLeaf() {\n this.view.selectAll(\"div\").remove();\n const leafContent = this.view\n .append(\"div\").attr(\"class\", `${css.leaf} ${css.leaf_content} vzb-dialog-scrollable`)\n .style(\"width\", this.width + \"px\");\n this.DOM = {\n title: leafContent.append(\"div\")\n .attr(\"class\", `${css.leaf_content_item} ${css.leaf_content_item_title}`),\n datasourceContainer: leafContent.append(\"div\")\n .attr(\"class\", `${css.leaf_content_item} ${css.leaf_content_item_datasources}`)\n .on(\"click\", event => event.stopPropagation()),\n spaceContainer: leafContent.append(\"div\")\n .classed(css.leaf_content_item + \" \" + css.leaf_content_item_space, true)\n .on(\"click\", event => event.stopPropagation()),\n descr: leafContent.append(\"div\")\n .attr(\"class\", `${css.leaf_content_item} ${css.leaf_content_item_descr}`),\n helptranslate: leafContent.append(\"div\")\n .attr(\"class\", `${css.leaf_content_item} ${css.leaf_content_item_helptranslate}`)\n };\n this.updateNameSection();\n this.updateDatasoutceSection();\n this.updateSpaceSection();\n this.updateDescrSection();\n }\n updateNameSection(datumForDS = this._getDatumForDS()){\n this.DOM.title.text(replaceNumberSpacesToNonBreak(datumForDS.name) || \"\");\n }\n updateDescrSection(datumForDS = this._getDatumForDS()){\n this.DOM.descr.text(replaceNumberSpacesToNonBreak(datumForDS.description || this.context.localise(\"hints/nodescr\")));\n this.DOM.helptranslate\n .classed(\"vzb-invisible\", !datumForDS.dataSource?.translateContributionLink)\n .html(`<a href=\"${datumForDS.dataSource?.translateContributionLink}\" target=\"_blank\">${this.context.localise(\"dialogs/helptranslate\")}</a>`);\n }\n updateDatasoutceSection(){\n const _this = this;\n if(this.datum.id == \"_default\") return;\n const getDSColorLight = (v) => this.context.dsColorScaleLight(v.dataSource.id);\n const getDSColorDark = (v) => this.context.dsColorScaleDark(v.dataSource.id);\n const paintBackground = (v) => (v.dataSource == this.encoding.data.source) && this._isSelectedConcept() && multipleDataSourcesAvailable;\n const multipleDataSourcesAvailable = () => this.datum.byDataSources > 1;\n if(this.context.ui.showDataSources){\n this.DOM.datasourceContainer.selectAll(\"span\")\n .data(this.datum.byDataSources, v => v)\n .enter().append(\"span\")\n .text(v => v.dataSource.id)\n .on(\"mouseenter\", function(event, v) {\n d3__namespace.select(this).style(\"background-color\", getDSColorLight(v));\n _this.updateNameSection(v);\n _this.updateDescrSection(v);\n })\n .on(\"mouseout\", function(event, v) {\n d3__namespace.select(this).style(\"background-color\", paintBackground(v) ? getDSColorLight(v) : null);\n _this.updateNameSection();\n _this.updateDescrSection();\n })\n .on(\"click\", function(event, v){\n if(_this.DOM.spaceContainer.select(\"select\").node()) _this.resetPickers();\n _this.setDatasource(v);\n });\n this.DOM.datasourceContainer.selectAll(\"span\")\n .style(\"pointer-events\", this._isSelectedConcept() ? null : \"none\")\n .style(\"border-color\", getDSColorDark)\n .style(\"background-color\", v => paintBackground(v) ? getDSColorLight(v) : null);\n }\n }\n updateSpaceSection(datumForDS = this._getDatumForDS()){\n const _this = this;\n if(this.datum.id == \"_default\") return;\n const currentSpace = this.encoding.data.space;\n const markerSpace = this.encoding.marker.data.space;\n const multipleSpacesAvailable = () => datumForDS.spaces.length > 1;\n const shorterThanMarkerSpace = () => datumForDS.spaces[0].length < markerSpace.length;\n if(this._isSelectedConcept() && (multipleSpacesAvailable() || !spacesAreEqual$1(datumForDS.spaces[0], markerSpace) && !shorterThanMarkerSpace())) {\n const spaceSelect = this.DOM.spaceContainer\n .append(\"select\")\n .attr(\"name\", \"vzb-select-treemenu-leaf-space\")\n .attr(\"id\", \"vzb-select-treemenu-leaf-space\")\n .on(\"change\", function(){\n _this.spaceChanged = true;\n _this.updateComplimentSetters();\n });\n spaceSelect\n .selectAll(\"option\")\n .data(datumForDS.spaces)\n .enter().append(\"option\")\n .attr(\"value\", option => option.join())\n .text(option => \"by \" + getSpaceName(this.encoding, option));\n spaceSelect\n .property(\"value\", currentSpace.join());\n this.DOM.spaceContainer.append(\"div\")\n .attr(\"class\",\"vzb-treemenu-leaf-space-compliment\");\n this.DOM.spaceContainer.append(\"div\")\n .attr(\"class\",\"vzb-hidden vzb-treemenu-leaf-space-reset\")\n .text(\"Reset\")\n .on(\"click\", () => {\n this.resetPickers();\n this.setModel();\n });\n this.DOM.spaceContainer.append(\"div\")\n .attr(\"class\",\"vzb-hidden vzb-treemenu-leaf-space-apply\")\n .text(\"Apply\")\n .on(\"click\", () => {\n this.setModel();\n });\n this.updateComplimentSetters();\n }\n }\n updateComplimentSetters() {\n const _this = this;\n const encoding = this.context._targetModel;\n const compliment = this.context.services.Vizabi.Vizabi.utils.relativeComplement(encoding.marker.data.space, this._getSelectedSpace());\n requestEntityNames(encoding.data.source, compliment).then(dims => {\n let dimSetters = this.DOM.spaceContainer.select(\"div.vzb-treemenu-leaf-space-compliment\")\n .selectAll(\"div.vzb-treemenu-leaf-space-compliment-setter\")\n .data(dims, d => d.dim);\n dimSetters.exit().remove();\n dimSetters = dimSetters\n .enter().append(\"div\")\n .attr(\"class\", \"vzb-treemenu-leaf-space-compliment-setter\")\n .each(function(d) {\n const view = d3__namespace.select(this);\n view\n .append(\"label\")\n .attr(\"for\", d.dim + \"_extraDim\")\n .text(getSpaceName(encoding, d.dim) + \":\");\n const select = view\n .append(\"select\")\n .attr(\"id\", d.dim + \"_extraDim\")\n .on(\"change\", () => {\n _this.spaceChanged = true;\n _this.updateResetApplyButtons();\n });\n select.selectAll(\"option\")\n .data(d.data.raw)\n .enter().append(\"option\")\n .attr(\"value\", option => option[d.dim])\n .text(option => option.name);\n select.property(\"selectedIndex\", -1);\n })\n .merge(dimSetters);\n dimSetters\n .each(function(d){\n const select = d3__namespace.select(this).select(\"select\");\n const value = encoding.data.filter?.dimensions[d.dim]?.[d.dim];\n if (value)\n select.property(\"value\", value);\n else\n select.property(\"selectedIndex\", -1);\n });\n this.updateResetApplyButtons();\n });\n }\n _getSelectedSpace() {\n const node = this.view.select(\"div.\" + css.leaf_content_item_space)\n .select(\"select\").node();\n return d3__namespace.select(node.options[node.selectedIndex]).datum();\n }\n _getSelectedFilter() {\n const filter = {};\n let invalidFilter = false;\n this.view.select(\"div.\" + css.leaf_content_item_space)\n .select(\"div.vzb-treemenu-leaf-space-compliment\")\n .selectAll(\"select\")\n .each(function(d){\n filter[d.dim] = {};\n filter[d.dim][d.dim] = this.value;\n if(this.selectedIndex == -1) invalidFilter = true;\n });\n return invalidFilter ? null : filter;\n }\n updateResetApplyButtons(datumForDS = this._getDatumForDS()) {\n const currentSpace = this.context.targetModel().data.space;\n const defaultSpace = this.context.getNearestSpaceToMarkerSpace(datumForDS.spaces);\n const selectedSpace = this._getSelectedSpace();\n const selectedFilter = this._getSelectedFilter();\n const spaceContainer = this.view.select(\"div.\" + css.leaf_content_item_space);\n spaceContainer.select(\".vzb-treemenu-leaf-space-reset\")\n .classed(\"vzb-hidden\", spacesAreEqual$1(currentSpace, defaultSpace));\n spaceContainer.select(\".vzb-treemenu-leaf-space-apply\")\n .classed(\"vzb-hidden\", !this.spaceChanged)\n .classed(\"vzb-disabled\", !selectedFilter && !spacesAreEqual$1(currentSpace, selectedSpace));\n }\n resetPickers(datumForDS = this._getDatumForDS()) {\n const defaultSpace = this.context.getNearestSpaceToMarkerSpace(datumForDS.spaces);\n this.view.select(\"div.\" + css.leaf_content_item_space)\n .select(\"select\")\n .property(\"value\", defaultSpace.join());\n this.updateComplimentSetters();\n }\n setDatasource(datumForDS = this._getDatumForDS()){\n const encoding = this.context._targetModel;\n mobx.runInAction(()=>{\n encoding.data.config.source = datumForDS.dataSource.id;\n });\n }\n setModel() {\n const encoding = this.context._targetModel;\n const selectedSpace = this._getSelectedSpace();\n const selectedFilter = this._getSelectedFilter() || {};\n mobx.runInAction(()=>{\n encoding.data.config.space = selectedSpace;\n encoding.data.filter.config.dimensions = selectedFilter;\n });\n }\n }\n\n class Menu {\n constructor(context, parent, menu, options) {\n const _this = this;\n this.context = context;\n this.parent = parent;\n this.OPTIONS = options;\n this.width = this.OPTIONS.MIN_COL_WIDTH;\n this.direction = this.OPTIONS.MENU_DIRECTION;\n this.OPTIONS.createSubmenu(menu, menu.datum(), parent === null);\n this.entity = parent === null ? menu.selectAll(\".\" + css.list_top_level) : menu.select(\".\" + css.list_outer);\n this._setDirectionClass();\n this.menuItems = [];\n let menuItemsHolder;\n if (this.entity.empty()) return this;\n this.entity.each(function() {\n menuItemsHolder = d3__namespace.selectAll(this.childNodes).filter(function() {\n return d3__namespace.select(this).classed(css.list);\n });\n });\n if (menuItemsHolder.empty()) menuItemsHolder = this.entity;\n this.entity.selectAll(\".\" + css.list_item)\n .filter(function() {\n return this.parentNode == menuItemsHolder.node();\n })\n .each(function() {\n _this.addSubmenu(d3__namespace.select(this));\n });\n if (!this.menuItems.length && this.isActive()) {\n this.deepleaf = new DeepLeaf(this.context, this.entity);\n }\n this.setWidth(this.OPTIONS.COL_WIDTH, false, true);\n return this;\n }\n setWidth(width, recursive, immediate) {\n if (this.width != width && this.entity.node()) {\n this.width = width;\n if ((this.entity.classed(css.list_top_level) || this.entity.classed(\"active\")) && this.direction == MENU_HORIZONTAL) {\n if (!immediate) {\n this.entity.transition()\n .delay(0)\n .duration(100)\n .style(\"width\", this.width + \"px\");\n } else {\n this.entity.style(\"width\", this.width + \"px\");\n }\n }\n if (this.entity.classed(css.list_top_level)) {\n this.entity.selectAll(\".\" + css.leaf).style(\"width\", this.width - 1 + \"px\");\n }\n if (recursive) {\n for (let i = 0; i < this.menuItems.length; i++) {\n this.menuItems[i].setWidth(this.width, recursive, immediate);\n }\n }\n return this;\n }\n }\n setDirection(direction, recursive) {\n this.direction = direction;\n this.entity\n .style(\"width\", \"\")\n .style(\"height\", \"\");\n if (recursive) {\n for (let i = 0; i < this.menuItems.length; i++) {\n this.menuItems[i].setDirection(this.direction, recursive);\n }\n }\n this._setDirectionClass();\n return this;\n }\n _setDirectionClass() {\n if (this.direction == MENU_HORIZONTAL) {\n this.entity.classed(css.menuVertical, false);\n this.entity.classed(css.menuHorizontal, true);\n } else {\n this.entity.classed(css.menuHorizontal, false);\n this.entity.classed(css.menuVertical, true);\n }\n }\n addSubmenu(item) {\n this.menuItems.push(new MenuItem(this.context, this, item, this.OPTIONS));\n }\n open() {\n const _this = this;\n if (!this.isActive()) {\n _this.parent.parentMenu.openSubmenuNow = true;\n this.closeNeighbors(() => {\n if (_this.direction == MENU_HORIZONTAL) {\n if (!this.menuItems.length) _this.deepleaf = new DeepLeaf(_this.context, this.entity);\n _this._openHorizontal();\n _this.calculateMissingWidth(0);\n } else {\n _this._openVertical();\n }\n });\n _this.parent.parentMenu.openSubmenuNow = false;\n }\n return this;\n }\n calculateMissingWidth(width, cb) {\n const _this = this;\n if (this.entity.classed(css.list_top_level)) {\n if (width > this.OPTIONS.MAX_MENU_WIDTH) {\n if (typeof cb === \"function\") cb(width - this.OPTIONS.MAX_MENU_WIDTH);\n }\n } else {\n this.parent.parentMenu.calculateMissingWidth(width + this.width, widthToReduce => {\n if (widthToReduce > 0) {\n _this.reduceWidth(widthToReduce, newWidth => {\n if (typeof cb === \"function\") cb(newWidth);\n });\n } else if (typeof cb === \"function\") cb(widthToReduce);\n });\n }\n }\n restoreWidth(width, isClosedElement, cb) {\n const _this = this;\n if (isClosedElement) {\n this.parent.parentMenu.restoreWidth(width, false, cb);\n } else if (width <= 0) {\n if (typeof cb === \"function\") cb();\n } else if (!this.entity.classed(css.list_top_level)) {\n const currentElementWidth = this.entity.node().offsetWidth;\n const newElementWidth = Math.min(width, _this.width);\n if (currentElementWidth < newElementWidth) {\n const duration = 250 * (currentElementWidth / newElementWidth);\n this.entity.transition()\n .delay(0)\n .duration(duration)\n .style(\"width\", newElementWidth + \"px\")\n .on(\"end\", () => {\n });\n _this.parent.parentMenu.restoreWidth(width - newElementWidth, false, cb);\n } else {\n this.parent.parentMenu.restoreWidth(width, false, cb);\n }\n } else {\n if (typeof cb === \"function\") cb();\n }\n }\n reduceWidth(width, cb) {\n const _this = this;\n const currWidth = this.entity.node().offsetWidth;\n if (currWidth <= this.OPTIONS.MIN_COL_WIDTH) {\n cb(width - _this.width + currWidth);\n } else {\n const newElementWidth = Math.max(this.OPTIONS.MIN_COL_WIDTH, _this.width - width);\n const duration = 250 / (_this.width / newElementWidth);\n this.entity.transition()\n .delay(0)\n .duration(duration)\n .style(\"width\", newElementWidth + \"px\")\n .on(\"end\", () => {\n cb(width - _this.width + newElementWidth);\n });\n }\n }\n _openHorizontal() {\n const _this = this;\n _this.entity.classed(\"active\", true)\n .transition()\n .delay(0)\n .duration(250)\n .style(\"width\", _this.width + \"px\")\n .on(\"end\", () => {\n _this.marqueeToggle(true);\n });\n }\n _openVertical() {\n const _this = this;\n _this.entity.style(\"height\", \"0px\");\n _this.entity.transition()\n .delay(0)\n .duration(250)\n .style(\"height\", (36 * _this.menuItems.length) + \"px\")\n .on(\"end\", () => {\n _this.entity.style(\"height\", \"auto\");\n _this.marqueeToggle(true);\n _this.scrollToFitView();\n });\n _this.entity.classed(\"active\", true);\n }\n closeAllChildren(cb) {\n let callbacks = 0;\n for (let i = 0; i < this.menuItems.length; i++) {\n if (this.menuItems[i].isActive()) {\n ++callbacks;\n this.menuItems[i].submenu.close(() => {\n if (--callbacks == 0) {\n if (typeof cb === \"function\") cb();\n }\n });\n }\n }\n if (callbacks == 0) {\n if (typeof cb === \"function\") cb();\n }\n }\n closeNeighbors(cb) {\n if (this.parent) {\n this.parent.closeNeighbors(cb);\n } else {\n cb();\n }\n }\n close(cb) {\n const _this = this;\n this.closeAllChildren(() => {\n if (_this.direction == MENU_HORIZONTAL) {\n _this.deepleaf = null;\n _this._closeHorizontal(cb);\n } else {\n _this._closeVertical(cb);\n }\n });\n }\n _closeHorizontal(cb) {\n const _this = this;\n const openSubmenuNow = _this.parent.parentMenu.openSubmenuNow;\n _this.entity.transition()\n .delay(0)\n .duration(20)\n .style(\"width\", 0 + \"px\")\n .on(\"end\", () => {\n _this.marqueeToggle(false);\n _this.entity.classed(\"active\", false);\n if (!openSubmenuNow) {\n _this.restoreWidth(_this.OPTIONS.MAX_MENU_WIDTH, true, () => {\n if (typeof cb === \"function\") cb();\n });\n } else {\n if (typeof cb === \"function\") cb();\n }\n });\n }\n _closeVertical(cb) {\n const _this = this;\n _this.entity\n .transition()\n .delay(0)\n .duration(100)\n .style(\"height\", 0 + \"px\")\n .on(\"end\", () => {\n _this.marqueeToggle(false);\n _this.entity.classed(\"active\", false);\n if (typeof cb === \"function\") cb();\n });\n }\n isActive() {\n return this.entity.classed(\"active\");\n }\n hasActiveParentNeighbour() {\n return this.menuItems\n .filter(item => item.isActive())\n .some(item => !!d3__namespace.select(item.entity).node().classed(css.hasChild));\n }\n marqueeToggle(toggle) {\n for (let i = 0; i < this.menuItems.length; i++) {\n this.menuItems[i].marqueeToggle(toggle);\n }\n }\n marqueeToggleAll(toggle) {\n for (let i = 0; i < this.menuItems.length; i++) {\n this.menuItems[i].marqueeToggleAll(toggle);\n }\n }\n findItemById(id) {\n for (let i = 0; i < this.menuItems.length; i++) {\n if (this.menuItems[i].entity.datum().id == id) {\n return this.menuItems[i];\n }\n if (this.menuItems[i].submenu) {\n const item = this.menuItems[i].submenu.findItemById(id);\n if (item) return item;\n }\n }\n return null;\n }\n getTopMenu() {\n return this.parent ?\n this.parent.parentMenu.getTopMenu() :\n this;\n }\n scrollToFitView() {\n const treeMenuNode = this.getTopMenu().entity.node().parentNode;\n const parentItemNode = this.entity.node().parentNode;\n const menuRect = treeMenuNode.getBoundingClientRect();\n const itemRect = parentItemNode.getBoundingClientRect();\n const viewportItemTop = itemRect.top - menuRect.top;\n if (viewportItemTop + itemRect.height > menuRect.height) {\n const newItemTop = (itemRect.height > menuRect.height) ?\n (menuRect.height - 10) : (itemRect.height + 10);\n const newScrollTop = treeMenuNode.scrollTop + newItemTop - menuRect.height + viewportItemTop;\n const scrollTopTween = function(scrollTop) {\n return function() {\n const i = d3__namespace.interpolateNumber(this.scrollTop, scrollTop);\n return function(t) {\n treeMenuNode.scrollTop = i(t);\n };\n };\n };\n d3__namespace.select(treeMenuNode).transition().duration(100)\n .tween(\"scrolltoptween\", scrollTopTween(newScrollTop));\n }\n }\n }\n class MenuItem {\n constructor(context, parent, item, options) {\n const _this = this;\n this.context = context;\n this.parentMenu = parent;\n this.entity = item;\n this.entity.select(\".\" + css.list_item_label).call(select => {\n if (isTouchDevice()) {\n select.onTap((event) => {\n event.stopPropagation();\n if (_this.parentMenu.direction == MENU_VERTICAL) {\n const view = _this.entity.select(\".\" + css.list_item_label);\n if (!view.attr(\"children\")) return;\n }\n if (!_this.submenu) {\n _this.submenu = new Menu(_this.context, _this, _this.entity, options);\n }\n _this.toggleSubmenu();\n });\n } else {\n select.on(\"mouseenter\", function() {\n if (_this.parentMenu.direction == MENU_HORIZONTAL && !d3__namespace.select(this).attr(\"children\")) {\n if (!_this.submenu) {\n _this.submenu = new Menu(_this.context, _this, _this.entity, options);\n }\n _this.openSubmenu();\n } else if (!_this.parentMenu.hasActiveParentNeighbour()) {\n _this.closeNeighbors();\n }\n _this.marqueeToggle(true);\n }).on(\"click.item\", function(event) {\n event.stopPropagation();\n if (!_this.submenu) {\n _this.submenu = new Menu(_this.context, _this, _this.entity, options);\n }\n if (_this.parentMenu.direction == MENU_HORIZONTAL) {\n _this.openSubmenu();\n } else {\n const view = d3__namespace.select(this);\n if (!view.attr(\"children\")) return;\n _this.toggleSubmenu();\n }\n });\n }\n if (options.selectedPath[0] === select.datum().id) {\n options.selectedPath.shift();\n _this.submenu = new Menu(_this.context, _this, _this.entity, options);\n }\n });\n return this;\n }\n setWidth(width, recursive, immediate) {\n if (this.submenu && recursive) {\n this.submenu.setWidth(width, recursive, immediate);\n }\n return this;\n }\n setDirection(direction, recursive) {\n if (this.submenu && recursive) {\n this.submenu.setDirection(direction, recursive);\n }\n return this;\n }\n toggleSubmenu() {\n if (this.submenu) {\n if (this.submenu.isActive()) {\n this.submenu.close();\n } else {\n this.submenu.open();\n }\n }\n }\n openSubmenu() {\n if (this.submenu) {\n this.submenu.open();\n } else {\n this.closeNeighbors();\n }\n }\n closeNeighbors(cb) {\n this.parentMenu.closeAllChildren(cb);\n }\n isActive() {\n return this.submenu && this.submenu.isActive();\n }\n marqueeToggleAll(toggle) {\n const labels = this.entity.selectAll(\".\" + css.list_item_label);\n labels.each(function() {\n const label = d3__namespace.select(this).select(\"span\");\n const parent = d3__namespace.select(this.parentNode);\n parent.classed(\"marquee\", false);\n label.style(\"width\", \"\");\n if (toggle) {\n if (label.node().scrollWidth > label.node().offsetWidth) {\n label.attr(\"data-content\", label.text());\n const space = 30;\n const offset = space + label.node().scrollWidth;\n label.style(\"width\", offset + \"px\");\n parent.classed(\"marquee\", true);\n }\n }\n });\n }\n marqueeToggle(toggle) {\n const label = this.entity.select(\".\" + css.list_item_label).select(\"span\");\n this.entity.classed(\"marquee\", false);\n label.style(\"width\", \"\");\n if (toggle) {\n if (label.node().scrollWidth > label.node().offsetWidth) {\n label.attr(\"data-content\", label.text());\n const space = 30;\n const offset = space + label.node().scrollWidth;\n label.style(\"width\", offset + \"px\");\n this.entity.classed(\"marquee\", true);\n }\n }\n }\n }\n\n let hidden = true;\n class _ErrorMessage extends BaseComponent {\n constructor(config) {\n config.template = `\n <div class=\"vzb-errormessage-background\"></div>\n <div class=\"vzb-errormessage-box\">\n <div class=\"vzb-errormessage-hero\">🙄</div>\n <div class=\"vzb-errormessage-title\"></div>\n <div class=\"vzb-errormessage-body vzb-dialog-scrollable\">\n <div class=\"vzb-errormessage-message\"></div>\n <div class=\"vzb-errormessage-expand\"></div>\n <pre class=\"vzb-errormessage-details vzb-hidden\"></pre>\n </div>\n </div>\n `;\n super(config);\n }\n setup() {\n this.DOM = {\n background: this.element.select(\".vzb-errormessage-background\"),\n container: this.element.select(\".vzb-errormessage-box\"),\n close: this.element.select(\".vzb-errormessage-close\"),\n hero: this.element.select(\".vzb-errormessage-hero\"),\n title: this.element.select(\".vzb-errormessage-title\"),\n message: this.element.select(\".vzb-errormessage-message\"),\n expand: this.element.select(\".vzb-errormessage-expand\"),\n details: this.element.select(\".vzb-errormessage-details\")\n };\n this.element.classed(\"vzb-hidden\", true);\n this.DOM.background.on(\"click\", () => {\n this.toggle(true);\n });\n this.DOM.expand.on(\"click\", () => {\n this.DOM.details.classed(\"vzb-hidden\", !this.DOM.details.classed(\"vzb-hidden\"));\n });\n }\n get MDL(){\n return {\n frame: this.model.encoding.frame\n };\n }\n rethrow(err){\n setTimeout(function(){\n throw(err);\n }, 1);\n setTimeout(function(){\n throw(\"ERROR REACHED USER\");\n }, 1);\n }\n toggle(arg) {\n if (arg == null) arg = !hidden;\n hidden = arg;\n this.element.classed(\"vzb-hidden\", hidden);\n this.root.children.forEach(c => {\n c.element.classed(\"vzb-blur\", c != this && !hidden);\n });\n }\n error(err){\n if(!hidden) return console.warn(\"errorMessage: skipping action because already in error\");\n const localise = this.services.locale.status == \"fulfilled\"?\n this.services.locale.auto()\n : nop => nop;\n this.DOM.title.text(localise(err.name));\n this.DOM.message.text(localise(err.message));\n this.DOM.expand\n .style(\"display\", err.details ? \"block\" : \"none\")\n .html(localise(\"crash/expand\"));\n this.DOM.details\n .style(\"display\", err.details ? \"block\" : \"none\")\n .text(JSON.stringify(err.details, null, 2));\n this.toggle(false);\n this.rethrow(err);\n }\n }\n _ErrorMessage.DEFAULT_UI = {\n };\n const ErrorMessage = mobx.decorate(_ErrorMessage, {\n \"MDL\": mobx.computed\n });\n\n const CONFIG = {\n triangleWidth: 10,\n triangleHeight: 10,\n height: 31,\n lineWidth: 10,\n domain: [1, 2, 3, 4, 5, 6],\n range: [1200, 900, 450, 200, 150, 100]\n };\n class SteppedSlider extends BaseComponent {\n constructor(config) {\n config.template = `\n <div class=\"vzb-stepped-slider\">\n <svg>\n <g class=\"vzb-stepped-slider-triangle\"></g>\n <g class=\"vzb-stepped-slider-axis\"></g>\n </svg>\n </div>`;\n super(config);\n }\n setup() {\n this.config = deepExtend(deepExtend({}, CONFIG), this.config);\n this.config.height -= this.config.triangleHeight / 2;\n const {\n domain,\n range,\n height\n } = this.config;\n this.DOM = {\n svg: this.element.select(\"svg\"),\n slide: this.element.select(\".vzb-stepped-slider-triangle\")\n };\n this.axisScale = d3__namespace.scaleLog()\n .domain(d3__namespace.extent(domain))\n .range([height, 0]);\n this.delayScale = d3__namespace.scaleLinear()\n .domain(domain)\n .range(range);\n this.initTriangle();\n this.initAxis();\n }\n draw() {\n this.addReaction(this.redraw);\n }\n get MDL() {\n return {\n frame: this.model.encoding.frame\n };\n }\n initAxis() {\n const {\n lineWidth,\n triangleWidth,\n triangleHeight,\n height\n } = this.config;\n const axis = d3__namespace.axisLeft()\n .scale(this.axisScale)\n .tickFormat(() => \"\")\n .tickSizeInner(lineWidth)\n .tickSizeOuter(0);\n const tx = triangleWidth + lineWidth / 2;\n const ty = triangleHeight / 2;\n this.DOM.svg\n .on(\"mousedown\", event => {\n const y = Math.max(0, Math.min(event.offsetY - ty, height));\n this.setDelay(Math.round(this.delayScale(this.axisScale.invert(y))), true, true);\n })\n .select(\".vzb-stepped-slider-axis\")\n .attr(\"transform\", `translate(${tx}, ${ty})`)\n .call(axis);\n this.drag = d3__namespace.drag()\n .on(\"drag\", event => {\n const { translateY } = transform(this.DOM.slide.node());\n const y = Math.max(0, Math.min(event.dy + translateY, height));\n this.setDelay(Math.round(this.delayScale(this.axisScale.invert(y))), true);\n })\n .on(\"end\", () => {\n this.setDelay(this.MDL.frame.speed);\n });\n this.DOM.svg.call(this.drag);\n }\n initTriangle() {\n this.DOM.slide\n .append(\"g\")\n .append(\"path\")\n .attr(\"d\", this.getTrianglePath());\n }\n getTrianglePath() {\n const {\n triangleHeight,\n triangleWidth\n } = this.config;\n return `M ${triangleWidth},${triangleHeight / 2} 0,${triangleHeight} 0,0 z`;\n }\n redraw() {\n const y = this.axisScale(this.delayScale.invert(this.MDL.frame.speed));\n this.DOM.slide.attr(\"transform\", `translate(0, ${y})`);\n }\n setDelay(value) {\n this.MDL.frame.setSpeed(value);\n }\n }\n const decorated$4 = mobx.decorate(SteppedSlider, {\n \"MDL\": mobx.computed\n });\n\n const PROFILE_CONSTANTS$1 = {\n SMALL: {\n col_width: 200\n },\n MEDIUM: {\n col_width: 200\n },\n LARGE: {\n col_width: 200\n }\n };\n const PROFILE_CONSTANTS_FOR_PROJECTOR$1 = {\n MEDIUM: {\n col_width: 200\n },\n LARGE: {\n col_width: 200\n }\n };\n function getTagNameForDs(ds){\n return \"dataset \" + ds.id;\n }\n function getItemName(item){\n if (item.type == \"indicator\"){\n return item.byDataSources.map(m => m.name_catalog)\n .concat(item.byDataSources.map(m => m.name))\n .concat(item.id)\n .filter(f => f)\n [0]\n } else {\n return item.name_catalog || item.name || item.id;\n }\n }\n function resolveDefaultScales(concept) {\n if (concept.scales) return JSON.parse(concept.scales);\n switch (concept.concept_type) {\n case \"measure\": return [\"linear\", \"log\"];\n case \"string\": return [\"ordinal\"];\n case \"entity_domain\": return [\"ordinal\"];\n case \"entity_set\": return [\"ordinal\"];\n case \"boolean\": return [\"ordinal\"];\n case \"time\": return [\"time\"];\n default: return [\"linear\", \"log\"];\n }\n }\n function spacesAreEqual(a, b){\n return a.concat().sort().join() === b.concat().sort().join();\n }\n /*!\n * VIZABI TREEMENU\n * Treemenu component\n */\n class TreeMenu extends BaseComponent {\n constructor(config) {\n super(config);\n }\n indicatorsTree(input) {\n if (!arguments.length) return this._indicatorsTree;\n this._indicatorsTree = input;\n return this;\n }\n callback(input) {\n if (!arguments.length) return this._callback;\n this._callback = input;\n return this;\n }\n encoding(input) {\n if (!arguments.length) return this._encoding;\n this._encoding = input;\n this.targetModel(this.model.encoding[this._encoding]);\n return this;\n }\n showWhenReady(input) {\n if (!arguments.length) return this._showWhenReady;\n this._showWhenReady = input;\n return this;\n }\n scaletypeSelectorDisabled(input) {\n if (!arguments.length) return this._scaletypeSelectorDisabled;\n this._scaletypeSelectorDisabled = input;\n return this;\n }\n title(input) {\n if (!arguments.length) return this._title;\n this._title = input;\n return this;\n }\n alignX(input) {\n if (!arguments.length) return this._alignX;\n this._alignX = input;\n return this;\n }\n alignY(input) {\n if (!arguments.length) return this._alignY;\n this._alignY = input;\n return this;\n }\n top(input) {\n if (!arguments.length) return this._top;\n this._top = input;\n return this;\n }\n left(input) {\n if (!arguments.length) return this._left;\n this._left = input;\n return this;\n }\n targetModel(input) {\n if (!arguments.length) return this._targetModel;\n this.removeReaction(this._targetModelReaction);\n this._targetModel = input;\n this._targetProp = null;\n this._targetProp = [\"data\", \"concept\"];\n this.addReaction(this._targetModelReaction);\n return this;\n }\n targetProp(input) {\n if (!arguments.length) return this._targetProp;\n this._targetProp = input;\n return this;\n }\n _targetModelReaction() {\n getProp(this._targetModel, [\"scale\", \"type\"]);\n getProp(this._targetModel, this._targetProp);\n this.updateView();\n }\n _buildTagFolderTree({ tagsArray, dataModels }) {\n if (tagsArray === true || !tagsArray) tagsArray = [];\n const ROOT = \"_root\";\n const ADVANCED = \"advanced\";\n const OTHER_DATASETS = \"other_datasets\";\n const FOLDER_STRATEGY_SPREAD = \"spread\";\n const FOLDER_STRATEGY_ROOT = \"root\";\n const FOLDER_STRATEGY_FOLDER = \"folder\";\n const FOLDER_STRATEGY_DEFAULT = dataModels.length == 1 ? FOLDER_STRATEGY_SPREAD : FOLDER_STRATEGY_ROOT;\n const tags = {};\n tags[ROOT] = { id: ROOT, children: [] };\n tags[ADVANCED] = { id: ADVANCED, name: this.localise(\"treemenu/advanced\"), type: \"folder\", children: [] };\n tags[ROOT].children.push(tags[ADVANCED]);\n tags[OTHER_DATASETS] = { id: OTHER_DATASETS, name: this.localise(\"treemenu/other_datasets\"), type: \"folder\", children: [] };\n tags[ROOT].children.push(tags[OTHER_DATASETS]);\n tagsArray.forEach(tag => { tags[tag.tag] = { id: tag.tag, name: tag.name, type: \"folder\", children: [] }; });\n const folderStrategies = {};\n dataModels.forEach((ds) => {\n const dsTag = getTagNameForDs(ds);\n let strategy = getProp(this.ui, [\"folderStrategyByDataset\", ds.id]);\n let folder = null;\n if (!strategy) strategy = FOLDER_STRATEGY_DEFAULT;\n if (strategy.includes(\":\")) {\n folder = strategy.split(\":\")[1];\n strategy = strategy.split(\":\")[0];\n }\n tags[dsTag] = { id: ds.id, name: this._getDatasetName(ds), type: \"dataset\", children: [] };\n if (strategy == FOLDER_STRATEGY_FOLDER && tags[folder]) {\n tags[folder].children.push(tags[dsTag]);\n } else if (strategy == FOLDER_STRATEGY_SPREAD) {\n tags[dsTag] = tags[ROOT];\n } else {\n tags[ROOT].children.push(tags[dsTag]);\n }\n folderStrategies[ds.id] = strategy;\n });\n tagsArray.forEach(tag => {\n if (tag.parent && tags[tag.parent]) {\n tags[tag.parent].children.push(tags[tag.tag]);\n } else {\n if (folderStrategies[tag.datasource.id] == FOLDER_STRATEGY_SPREAD) {\n tags[ROOT].children.push(tags[tag.tag]);\n } else {\n if (tags[getTagNameForDs(tag.datasource)])\n tags[getTagNameForDs(tag.datasource)].children.push(tags[tag.tag]);\n else\n warn(`Tags request to the datasource ${tag.datasource.id} probably didn't succeed`);\n }\n }\n });\n return {tags, tagsRoot: tags[ROOT]};\n }\n _addIndicatorToTheTree(id, item, folder) {\n const existing = folder.children.find(f => f.id == id);\n if (existing) {\n existing.byDataSources.push(item);\n } else {\n folder.children.push({ id: id, type: \"indicator\", byDataSources: [item] });\n }\n return folder;\n }\n _buildIndicatorsTree({ tagsArray, dataModels }) {\n let consoleGroupOpen = false;\n const {tags, tagsRoot} = this._buildTagFolderTree({ tagsArray, dataModels });\n this._addIndicatorToTheTree(\"_default\", { spaces: [[]] }, tagsRoot);\n const nest = this._nestAvailabilityByConcepts(this._getAvailability());\n const filtervl = this._conceptsCompatibleWithMarkerSpace(nest, this.model.data.space);\n const concepts = this._convertConceptMapToArray(filtervl);\n concepts\n .concat(this.model.data.space.map(d => {\n return {\n spaces: [[d]],\n source: this.model.data.source,\n concept: this.model.data.source.getConcept(d)\n };\n }))\n .filter(f => !f.concept.tags || f.concept.tags !== \"_none\")\n .forEach(({concept, spaces, source}) => {\n const id = concept.concept;\n const props = {\n dataSource: source,\n spaces,\n name: concept.name,\n name_catalog: concept.name_catalog,\n description: concept.description\n };\n if (concept.concept_type == \"time\" || concept.concept == \"_default\"){\n this._addIndicatorToTheTree(id, props, tagsRoot);\n } else if (concept.concept_type == \"entity_domain\" || concept.concept_type == \"entity_set\") {\n const keyConcept = source.getConcept(spaces[0][0]);\n const folderName = keyConcept.concept + \"_properties\";\n if (!tags[folderName]) {\n tags[folderName] = { id: folderName, name: keyConcept.name + \" properties\", type: \"folder\", children: [] };\n tagsRoot.children.push(tags[folderName]);\n }\n this._addIndicatorToTheTree(id, props, tags[folderName]);\n } else {\n const conceptTags = concept.tags || getTagNameForDs(source) || \"_root\";\n conceptTags.split(\",\").forEach(tag => {\n tag = tag.trim();\n if (tags[tag]) {\n this._addIndicatorToTheTree(id, props, tags[tag]);\n } else {\n if (!consoleGroupOpen) {\n console.groupCollapsed(\"Some tags were not found, so indicators went under menu root\");\n consoleGroupOpen = true;\n }\n warn(\"tag '\" + tag + \"' for indicator '\" + props.id + \"'\");\n this._addIndicatorToTheTree(id, props, tagsRoot);\n }\n });\n }\n });\n if (consoleGroupOpen) console.groupEnd();\n this._sortChildren(tagsRoot);\n this.indicatorsTree(tagsRoot);\n return Promise.resolve();\n }\n _sortChildren(tree, isSubfolder) {\n const _this = this;\n if (!tree.children) return;\n tree.children.sort(\n firstBy()((a, b) => { a = a.type === \"dataset\" ? 1 : 0; b = b.type === \"dataset\" ? 1 : 0; return b - a; })\n .thenBy((a, b) => { a = a.children ? 1 : 0; b = b.children ? 1 : 0; return a - b; })\n .thenBy((a, b) => {\n if (!isSubfolder) {\n if (a.id == \"time\") return -1;\n if (b.id == \"time\") return 1;\n if (a.id == \"other_datasets\") return 1;\n if (b.id == \"other_datasets\") return -1;\n if (a.id == \"advanced\") return 1;\n if (b.id == \"advanced\") return -1;\n if (a.id == \"_default\") return 1;\n if (b.id == \"_default\") return -1;\n }\n return getItemName(a) > getItemName(b) ? 1 : -1;\n })\n );\n tree.children.forEach(d => {\n _this._sortChildren(d, true);\n });\n }\n _resize() {\n this.services.layout.size;\n const _this = this;\n const { wrapper, wrapperOuter } = this.DOM;\n let top = this._top;\n let left = this._left;\n if (!wrapper) return warn(\"treemenu resize() abort because container is undefined\");\n wrapper.classed(css.noTransition, true);\n wrapper.node().scrollTop = 0;\n this.OPTIONS.IS_MOBILE = this.services.layout.profile === \"SMALL\";\n if (this.menuEntity) {\n this.menuEntity.setWidth(this.profileConstants.col_width, true, true);\n if (this.OPTIONS.IS_MOBILE) {\n if (this.menuEntity.direction != MENU_VERTICAL) {\n this.menuEntity.setDirection(MENU_VERTICAL, true);\n this.OPTIONS.MENU_DIRECTION = MENU_VERTICAL;\n }\n } else {\n if (this.menuEntity.direction != MENU_HORIZONTAL) {\n this.menuEntity.setDirection(MENU_HORIZONTAL, true);\n this.OPTIONS.MENU_DIRECTION = MENU_HORIZONTAL;\n }\n }\n }\n this.width = _this.element.node().offsetWidth;\n this.height = _this.element.node().offsetHeight;\n const rect = wrapperOuter.node().getBoundingClientRect();\n const containerWidth = rect.width;\n let containerHeight = rect.height;\n if (containerWidth) {\n if (this.OPTIONS.IS_MOBILE) {\n this.clearPos();\n } else {\n if (top || left) {\n if (wrapperOuter.node().offsetTop < 10) {\n wrapperOuter.style(\"top\", \"10px\");\n }\n if (this.height - wrapperOuter.node().offsetTop - containerHeight < 0) {\n if (containerHeight > this.height) {\n containerHeight = this.height - 20;\n }\n wrapperOuter.style(\"top\", (this.height - containerHeight - 10) + \"px\");\n wrapperOuter.style(\"bottom\", \"auto\");\n }\n if (top) top = wrapperOuter.node().offsetTop;\n }\n let maxHeight;\n if (wrapperOuter.classed(css.alignYb)) {\n maxHeight = wrapperOuter.node().offsetTop + wrapperOuter.node().offsetHeight;\n } else {\n maxHeight = this.height - wrapperOuter.node().offsetTop;\n }\n wrapper.style(\"max-height\", (maxHeight - 10) + \"px\");\n wrapperOuter.classed(css.alignXc, this._alignX === \"center\");\n wrapperOuter.style(\"margin-left\", this._alignX === \"center\" ? \"-\" + containerWidth / 2 + \"px\" : null);\n if (this._alignX === \"center\") {\n this.OPTIONS.MAX_MENU_WIDTH = this.width / 2 - containerWidth * 0.5 - 10;\n } else {\n this.OPTIONS.MAX_MENU_WIDTH = this.width - wrapperOuter.node().offsetLeft - containerWidth - 10;\n }\n const minMenuWidth = this.profileConstants.col_width + this.OPTIONS.MIN_COL_WIDTH * 2;\n let leftPos = wrapperOuter.node().offsetLeft;\n this.OPTIONS.MENU_OPEN_LEFTSIDE = this.OPTIONS.MAX_MENU_WIDTH < minMenuWidth && leftPos > (this.OPTIONS.MAX_MENU_WIDTH + 10);\n if (this.OPTIONS.MENU_OPEN_LEFTSIDE) {\n if (leftPos < (minMenuWidth + 10)) leftPos = (minMenuWidth + 10);\n this.OPTIONS.MAX_MENU_WIDTH = leftPos - 10;\n } else {\n if (this.OPTIONS.MAX_MENU_WIDTH < minMenuWidth) {\n leftPos -= (minMenuWidth - this.OPTIONS.MAX_MENU_WIDTH);\n this.OPTIONS.MAX_MENU_WIDTH = minMenuWidth;\n }\n }\n if (left) {\n left = leftPos;\n } else {\n if (leftPos != wrapperOuter.node().offsetLeft) {\n wrapperOuter.style(\"left\", \"auto\");\n wrapperOuter.style(\"right\", (this.width - leftPos - rect.width) + \"px\");\n }\n }\n this._top = top;\n this._left = left;\n if (left || top) this.setPos();\n wrapperOuter.classed(\"vzb-treemenu-open-left-side\", !this.OPTIONS.IS_MOBILE && this.OPTIONS.MENU_OPEN_LEFTSIDE);\n }\n }\n wrapper.node().offsetHeight;\n wrapper.classed(css.noTransition, false);\n this._setHorizontalMenuHeight();\n return this;\n }\n toggle() {\n this.setHiddenOrVisible(!this.element.classed(css.hidden));\n }\n setHiddenOrVisible(hidden) {\n const _this = this;\n this.element.classed(css.hidden, hidden);\n this.DOM.wrapper.classed(css.noTransition, hidden);\n if (hidden) {\n this.clearPos();\n this.menuEntity.marqueeToggle(false);\n } else {\n this.setPos();\n !isTouchDevice() && this._focusSearch();\n this._resize();\n this._scrollToSelected();\n }\n this.root.children.forEach(c => {\n if (c.name == \"gapminder-dialogs\") {\n d3__namespace.select(c.placeholder.parentNode).classed(\"vzb-blur\", !hidden);\n } else\n if (c.element.classed) {\n c.element.classed(\"vzb-blur\", c != _this && !hidden);\n } else {\n d3__namespace.select(c.element).classed(\"vzb-blur\", c != _this && !hidden);\n }\n });\n this.width = _this.element.node().offsetWidth;\n return this;\n }\n _scrollToSelected() {\n if (!this.selectedNode) return;\n const _this = this;\n if (this.menuEntity.direction == MENU_VERTICAL) {\n scrollToItem(this.DOM.wrapper.node(), this.selectedNode);\n _this.menuEntity.marqueeToggleAll(true);\n } else {\n const selectedItem = this.menuEntity.findItemById(d3__namespace.select(this.selectedNode).datum().id);\n selectedItem.submenu.calculateMissingWidth(0, () => {\n _this.menuEntity.marqueeToggleAll(true);\n });\n let parent = this.selectedNode;\n let listNode;\n while (!(hasClass(parent, css.list_top_level))) {\n if (parent.tagName == \"LI\") {\n listNode = hasClass(parent.parentNode, css.list_top_level) ? parent.parentNode.parentNode : parent.parentNode;\n scrollToItem(listNode, parent);\n }\n parent = parent.parentNode;\n }\n }\n function scrollToItem(listNode, itemNode){\n listNode.scrollTop = 0;\n const rect = listNode.getBoundingClientRect();\n const itemRect = itemNode.getBoundingClientRect();\n const scrollTop = itemRect.bottom - rect.top - listNode.offsetHeight + 10;\n listNode.scrollTop = scrollTop;\n }\n }\n setPos() {\n const { wrapperOuter } = this.DOM;\n const top = this._top;\n const left = this._left;\n const rect = wrapperOuter.node().getBoundingClientRect();\n if (top) {\n wrapperOuter.style(\"top\", top + \"px\");\n wrapperOuter.style(\"bottom\", \"auto\");\n wrapperOuter.classed(css.absPosVert, top);\n }\n if (left) {\n let right = this.element.node().offsetWidth - left - rect.width;\n right = right < 10 ? 10 : right;\n wrapperOuter.style(\"right\", right + \"px\");\n wrapperOuter.style(\"left\", \"auto\");\n wrapperOuter.classed(css.absPosHoriz, right);\n }\n }\n clearPos() {\n const { wrapper, wrapperOuter } = this.DOM;\n this._top = \"\";\n this._left = \"\";\n wrapperOuter.attr(\"style\", \"\");\n wrapperOuter.classed(css.absPosVert, \"\");\n wrapperOuter.classed(css.absPosHoriz, \"\");\n wrapperOuter.classed(css.menuOpenLeftSide, \"\");\n wrapper.style(\"max-height\", \"\");\n }\n _setHorizontalMenuHeight() {\n const { wrapper } = this.DOM;\n let wrapperHeight = null;\n if (this.menuEntity && this.OPTIONS.MENU_DIRECTION == MENU_HORIZONTAL && this.menuEntity.menuItems.length) {\n const oneItemHeight = parseInt(this.menuEntity.menuItems[0].entity.style(\"height\"), 10) || 0;\n const menuMaxHeight = oneItemHeight * this._maxChildCount;\n const rootMenuHeight = Math.max(this.menuEntity.menuItems.length, 3) * oneItemHeight + this.menuEntity.entity.node().offsetTop + parseInt(wrapper.style(\"padding-bottom\"), 10);\n wrapperHeight = \"\" + Math.max(menuMaxHeight, rootMenuHeight) + \"px\";\n }\n wrapper.classed(css.noTransition, true);\n wrapper.node().offsetHeight;\n wrapper.style(\"height\", wrapperHeight);\n wrapper.node().offsetHeight;\n wrapper.classed(css.noTransition, false);\n }\n _enableSearch() {\n const _this = this;\n const input = this.DOM.wrapper.select(\".\" + css.search);\n const getMatches = function(value) {\n const matches = {\n _id: \"root\",\n children: []\n };\n const translationMatch = function(value, data, i) {\n const item = data[i];\n let translate = item.type == \"folder\" && item.name || item.type == \"indicator\" && item.byDataSources.map(m => m.name).join();\n if (!translate && _this.localise) {\n const t1 = _this.localise(\"indicator\" + \"/\" + data[i][_this.OPTIONS.SEARCH_PROPERTY] + \"/\" + _this._targetModel._type);\n translate = t1 || _this.localise(\"indicator/\" + data[i][_this.OPTIONS.SEARCH_PROPERTY]);\n }\n return translate && translate.toLowerCase().indexOf(value.toLowerCase()) >= 0;\n };\n const matching = function(data) {\n const SUBMENUS = _this.OPTIONS.SUBMENUS;\n for (let i = 0; i < data.length; i++) {\n let match = false;\n match = translationMatch(value, data, i);\n if (match) {\n matches.children.push(data[i]);\n }\n if (!match && data[i][SUBMENUS]) {\n matching(data[i][SUBMENUS]);\n }\n }\n };\n matching(_this.dataFiltered.children);\n matches.children = unique(matches.children, child => child.id);\n return matches;\n };\n let searchValueNonEmpty = false;\n const searchIt = debounce(() => {\n const value = input.node().value;\n if (!searchValueNonEmpty && value == \"\") return;\n searchValueNonEmpty = value != \"\";\n if (value.length >= _this.OPTIONS.SEARCH_MIN_STR) {\n _this.redraw(getMatches(value), true);\n } else {\n _this.redraw();\n }\n }, 250);\n input.on(\"input\", searchIt);\n }\n _selectIndicator(concept) {\n if(concept.id == this._targetModel.data.concept) return;\n this._setModelWhich(concept);\n this.toggle();\n }\n redraw(data, useDataFiltered) {\n const _this = this;\n let dataFiltered, allowedIDs;\n const indicatorsDB = { _default:{} };\n forEach(this.services.Vizabi.Vizabi.stores.dataSources.getAll(), m => {\n m.concepts.forEach(c => {\n indicatorsDB[c.concept] = c;\n });\n });\n const targetModelName = _this._targetModel.name || _this._targetModel.config.type;\n if (useDataFiltered) {\n dataFiltered = data;\n } else {\n if (data == null) data = this._indicatorsTree;\n allowedIDs = keys(indicatorsDB).filter(f => {\n if (_this._targetModel.data.allow && _this._targetModel.data.allow.names) {\n if (_this._targetModel.data.allow.names.indexOf(\"!\" + f) != -1) return false;\n if (_this._targetModel.data.allow.names.indexOf(f) != -1) return true;\n if (_this._targetModel.data.allow.namesOnlyThese) return false;\n }\n const allowedTypes = _this._targetModel.scale.allowedTypes;\n const isEntity = indicatorsDB[f].concept_type == \"entity_domain\" || indicatorsDB[f].concept_type == \"entity_set\";\n const isString = indicatorsDB[f].concept_type == \"string\";\n const isMeasure = indicatorsDB[f].concept_type == \"measure\";\n const isTime = indicatorsDB[f].concept_type == \"time\";\n const isConstant = f === \"_default\";\n const indicatorScales = JSON.parse(indicatorsDB[f].scales || null);\n if (!allowedTypes || !allowedTypes.length || allowedTypes[0] == \"*\") return true;\n if(indicatorScales) {\n for (let i = indicatorScales.length - 1; i >= 0; i--) {\n if (allowedTypes.includes(indicatorScales[i])) return true;\n }\n }\n if (isEntity){\n if (allowedTypes.includes(\"ordinal\")) return true;\n } else if (isConstant) {\n if (allowedTypes.includes(\"ordinal\")) return true;\n } else if (isString) {\n if (allowedTypes.includes(\"ordinal\")) return true;\n } else if (isMeasure){\n if (allowedTypes.includes(\"linear\") || allowedTypes.includes(\"log\")\n || allowedTypes.includes(\"genericLog\") || allowedTypes.includes(\"pow\")) return true;\n } else if (isTime) {\n if (allowedTypes.includes(\"time\")) return true;\n }\n return false;\n });\n const satisfiesAllowedSpaces = (item) => {\n let spacesFromAllDS = [];\n item.byDataSources.forEach(item => spacesFromAllDS = spacesFromAllDS.concat(item.spaces));\n return spacesFromAllDS.some(space => this._targetModel.data.allow.space.filter(space));\n };\n dataFiltered = pruneTree(data, f => allowedIDs.includes(f.id) && f.type == \"indicator\" && satisfiesAllowedSpaces(f));\n this.dataFiltered = dataFiltered;\n }\n const { wrapper } = this.DOM;\n wrapper.classed(\"vzb-hidden\", !useDataFiltered).select(\"ul\").remove();\n let title = \"\";\n if (this._title || this._title === \"\") {\n title = this._title;\n } else {\n title = this.localise(\"buttons/\" + targetModelName);\n }\n this.element.select(\".\" + css.title).select(\"span\")\n .text(title);\n this.element.select(\".\" + css.search)\n .attr(\"placeholder\", this.localise(\"placeholder/search\") + \"...\");\n this._maxChildCount = 0;\n let selected = getProp(_this._targetModel, _this._targetProp);\n const selectedPath = [];\n eachTree(dataFiltered, (f, parent) => {\n if (f.children && f.children.length > _this._maxChildCount) _this._maxChildCount = f.children.length;\n if (f.id === selected && parent) {\n selectedPath.unshift(f.id);\n selected = parent.id;\n }\n });\n this.OPTIONS.selectedPath = selectedPath;\n if (this.OPTIONS.IS_MOBILE) {\n this.OPTIONS.MENU_DIRECTION = MENU_VERTICAL;\n } else {\n this.OPTIONS.MENU_DIRECTION = MENU_HORIZONTAL;\n }\n this.OPTIONS.createSubmenu = this._createSubmenu.bind(this);\n this.OPTIONS.COL_WIDTH = this.profileConstants.col_width;\n this.selectedNode = null;\n wrapper.datum(dataFiltered);\n this.menuEntity = new Menu(this, null, wrapper, this.OPTIONS);\n wrapper.classed(\"vzb-hidden\", false);\n this._setHorizontalMenuHeight();\n if (!useDataFiltered) {\n let pointer = \"_default\";\n if (allowedIDs.indexOf(getProp(this._targetModel, this._targetProp)) > -1) pointer = getProp(this._targetModel, this._targetProp);\n const concept = indicatorsDB[pointer];\n if (!concept) error(\"Concept properties of \" + pointer + \" are missing from the set, or the set is empty. Put a breakpoint here and check what you have in indicatorsDB\");\n const scaleTypesData = resolveDefaultScales(concept).filter(f => {\n if (!_this._targetModel.data.allow || !_this._targetModel.data.allow.scales) return true;\n if (_this._targetModel.data.allow.scales[0] == \"*\") return true;\n return _this._targetModel.data.allow.scales.indexOf(f) > -1;\n });\n if (scaleTypesData.length == 0) {\n this.element.select(\".\" + css.scaletypes).classed(css.hidden, true);\n } else {\n let scaleTypes = this.element.select(\".\" + css.scaletypes).classed(css.hidden, false).selectAll(\"span\")\n .data(scaleTypesData, d => d);\n scaleTypes.exit().remove();\n scaleTypes = scaleTypes.enter().append(\"span\")\n .on(\"click\", (event, d) => {\n event.stopPropagation();\n _this._setModelScaleType(d);\n })\n .merge(scaleTypes);\n const mdlScaleType = _this._targetModel.scale.type;\n scaleTypes\n .classed(css.scaletypesDisabled, scaleTypesData.length < 2 || _this._scaletypeSelectorDisabled)\n .classed(css.scaletypesActive, d => (d == mdlScaleType || d === \"log\" && mdlScaleType === \"genericLog\") && scaleTypesData.length > 1)\n .text(d => _this.localise(\"scaletype/\" + d));\n }\n }\n return this;\n }\n _createSubmenu(select, data, toplevel) {\n if (!data.children) return;\n const _this = this;\n const targetModelName = _this._targetModel.name || _this._targetModel.config.type;\n const _select = toplevel ? select : select.append(\"div\")\n .classed(css.list_outer, true);\n const li = _select.append(\"ul\")\n .classed(css.list, !toplevel)\n .classed(css.list_top_level, toplevel)\n .classed(\"vzb-dialog-scrollable\", true)\n .selectAll(\"li\")\n .data(data.children, d => d[\"id\"])\n .enter()\n .append(\"li\");\n li.append(\"span\")\n .classed(css.list_item_label, true)\n .attr(\"children\", d => d.children ? \"true\" : null)\n .attr(\"type\", d => d.type ? d.type : null)\n .style(\"color\", d => {\n if (this.ui.showDataSources && d.type == \"indicator\" && d.id !== \"_default\" && d.byDataSources.length == 1) {\n return this.dsColorScaleDark(d.byDataSources[0].dataSource.id);\n } else {\n return null;\n }\n })\n .on(\"click\", function(event, d) {\n const view = d3__namespace.select(this);\n if (view.attr(\"children\")) return;\n event.stopPropagation();\n _this._selectIndicator(d);\n })\n .append(\"span\")\n .text(d => {\n const translated = d.id === \"_default\" ? _this.localise(\"indicator/_default/\" + targetModelName) : getItemName(d);\n if (!translated && translated !== \"\") warn(\"translation missing: NAME of \" + d.id);\n return translated || \"\";\n });\n li.classed(css.list_item, true)\n .classed(css.hasChild, d => d[\"children\"])\n .classed(css.isSpecial, d => d[\"special\"])\n .each(function(d) {\n const view = d3__namespace.select(this);\n if (!d.children) {\n if (d.id === \"_default\") {\n d.byDataSources[0].name = _this.localise(\"indicator/_default/\" + targetModelName);\n d.byDataSources[0].description = _this.localise(\"description/_default/\" + targetModelName);\n }\n const deepLeaf = view.append(\"div\")\n .attr(\"class\", css.menuHorizontal + \" \" + css.list_outer + \" \" + css.list_item_leaf);\n deepLeaf.on(\"click\", (event, d) => {\n _this._selectIndicator(d);\n });\n }\n if (d.id == getProp(_this._targetModel, _this._targetProp)) {\n let parent;\n if (_this.selectedNode && toplevel) {\n parent = _this.selectedNode.parentNode;\n d3__namespace.select(_this.selectedNode)\n .select(\".\" + css.list_item_leaf).classed(\"active\", false);\n while (!(hasClass(parent, css.list_top_level))) {\n if (parent.tagName == \"UL\") {\n d3__namespace.select(parent.parentNode)\n .classed(\"active\", false);\n }\n parent = parent.parentNode;\n }\n }\n if (!_this.selectedNode || toplevel) {\n parent = this.parentNode;\n d3__namespace.select(this).classed(\"item-active\", true)\n .select(\".\" + css.list_item_leaf).classed(\"active\", true);\n while (!(hasClass(parent, css.list_top_level))) {\n if (parent.tagName == \"UL\") {\n d3__namespace.select(parent.parentNode)\n .classed(\"active\", true);\n }\n if (parent.tagName == \"LI\") {\n d3__namespace.select(parent).classed(\"item-active\", true);\n }\n parent = parent.parentNode;\n }\n _this.selectedNode = this;\n }\n }\n });\n }\n updateView() {\n if (!this._targetModel) return;\n if (!this._indicatorsTree) return console.error(\"Tree menu: indicator tree has not been constructed (yet?)\");\n const { wrapper, wrapperOuter } = this.DOM;\n wrapperOuter.classed(css.absPosVert, this._top);\n wrapperOuter.classed(css.alignYt, this._alignY === \"top\");\n wrapperOuter.classed(css.alignYb, this._alignY === \"bottom\");\n wrapperOuter.classed(css.absPosHoriz, this._left);\n wrapperOuter.classed(css.alignXl, this._alignX === \"left\");\n wrapperOuter.classed(css.alignXr, this._alignX === \"right\");\n this.redraw();\n if (this._showWhenReady) this.setHiddenOrVisible(false).showWhenReady(false);\n wrapper.select(\".\" + css.search).node().value = \"\";\n return this;\n }\n _focusSearch(focus = true) {\n const searchInput = this.DOM.wrapper.select(\".\" + css.search).node();\n if (focus) {\n searchInput.focus();\n } else {\n searchInput.blur();\n }\n }\n _setModelScaleType(type){\n this._targetModel.scale.config.type = type;\n }\n _setModelWhich(concept) {\n if(concept.id == \"_default\"){\n this._targetModel.setWhich({\n key: null,\n value: {concept: \"_default\", dataSource: null}\n });\n } else {\n const {space, dataSource} = this.getBestFittingDataSourceAndSpace(concept.byDataSources);\n this._targetModel.setWhich({\n key: space,\n value: {concept: concept.id, dataSource: dataSource.id}\n });\n }\n }\n getBestFittingDataSourceAndSpace(byDataSources) {\n const bestSpacePerDataSource = byDataSources.map(m => this.getNearestSpaceToMarkerSpace(m.spaces));\n const bestSpace = this.getNearestSpaceToMarkerSpace(bestSpacePerDataSource);\n const dsCandidates = byDataSources.filter(f => f.spaces.find(s => spacesAreEqual(s, bestSpace))).map(m => m.dataSource);\n if (dsCandidates.includes(this.model.data.source))\n return {space: bestSpace, dataSource: this.model.data.source};\n else if (dsCandidates.includes(this._targetModel.data.source))\n return {space: bestSpace, dataSource: this._targetModel.data.source};\n else\n return {space: bestSpace, dataSource: dsCandidates[0]};\n }\n getNearestSpaceToMarkerSpace(spaces){\n if (spaces.find(f => spacesAreEqual(f, this.model.data.space)))\n return this.model.data.space;\n const markerSpaceLen = this.model.data.space.length;\n const spacesPrio = spaces.concat()\n .sort((a, b) => Math.abs(a.length - markerSpaceLen) - Math.abs(b.length - markerSpaceLen));\n return spacesPrio[0];\n }\n setup() {\n this.state = {\n ownReadiness: STATUS.INIT\n };\n this.menuEntity = null;\n this._alignX = \"center\";\n this._alignY = \"center\";\n this.OPTIONS = deepClone(OPTIONS$4);\n this.DOM = {\n };\n this.element.classed(css.hidden, true)\n .append(\"div\")\n .attr(\"class\", css.background)\n .on(\"click\", (event) => {\n event.stopPropagation();\n this.toggle();\n });\n this.DOM.wrapperOuter = this.element\n .append(\"div\")\n .classed(css.wrapper_outer, true)\n .classed(css.noTransition, true);\n const wrapper = this.DOM.wrapper = this.DOM.wrapperOuter\n .append(\"div\")\n .classed(css.wrapper, true)\n .classed(css.noTransition, true)\n .classed(\"vzb-dialog-scrollable\", true);\n wrapper\n .on(\"click\", (event) => {\n event.stopPropagation();\n });\n wrapper.append(\"div\")\n .attr(\"class\", css.close)\n .html(ICON_CLOSE)\n .on(\"click\", (event) => {\n event.stopPropagation();\n this.toggle();\n })\n .select(\"svg\")\n .attr(\"width\", \"0px\")\n .attr(\"height\", \"0px\")\n .attr(\"class\", css.close + \"-icon\");\n wrapper.append(\"div\")\n .classed(css.scaletypes, true)\n .append(\"span\");\n wrapper.append(\"div\")\n .classed(css.title, true)\n .append(\"span\");\n wrapper.append(\"div\")\n .classed(css.search_wrap, true)\n .append(\"input\")\n .classed(css.search, true)\n .attr(\"type\", \"search\")\n .attr(\"id\", css.search);\n wrapper.on(\"mouseleave\", () => {\n });\n const datasources = this._getDataModels(this.root.model.config.dataSources);\n this.dsColorScaleLight = d3__namespace.scaleOrdinal().range(d3__namespace.schemePastel2).domain(datasources.map(m=>m.id));\n this.dsColorScaleDark = d3__namespace.scaleOrdinal().range(d3__namespace.schemeSet2).domain(datasources.map(m=>m.id));\n }\n draw() {\n this.localise = this.services.locale.auto();\n this.addReaction(this._prepareTags, true);\n this._updateLayoutProfile();\n this.addReaction(this._resize);\n }\n _prepareTags() {\n mobx.runInAction(() => {\n this.state.ownReadiness = STATUS.PENDING;\n });\n const datasources = this._getDataModels(this.root.model.config.dataSources);\n if (this.services.Vizabi.Vizabi.utils.combineStates(datasources.map(ds => ds.state)) == \"fulfilled\") {\n const localeId = this.services.locale.id;\n mobx.runInAction(() => {\n this.getTags(localeId)\n .then(tags => {\n return this._buildIndicatorsTree({\n tagsArray: tags,\n dataModels: this._getDataModels(this.root.model.config.dataSources)\n });})\n .then(this.updateView.bind(this))\n .then(() => {\n this._enableSearch();\n this.state.ownReadiness = STATUS.READY;\n });\n });\n }\n }\n _updateLayoutProfile(){\n this.services.layout.size;\n this.profileConstants = this.services.layout.getProfileConstants(PROFILE_CONSTANTS$1, PROFILE_CONSTANTS_FOR_PROJECTOR$1);\n this.height = this.element.node().clientHeight || 0;\n this.width = this.element.node().clientWidth || 0;\n if (!this.height || !this.width) return \"TreeMenu _updateProfile() abort: container is too little or has display:none\";\n }\n _getDatasetName(ds) {\n if (ds.reader.getDatasetInfo) {\n const meta = ds.reader.getDatasetInfo();\n return meta.name + (meta.version ? \" \" + meta.version : \"\");\n }\n return ds.id ?? \"Unnamed datasource\";\n }\n _getDataModels(dsConfig) {\n return Object.keys(dsConfig).map(dsName => this.services.Vizabi.Vizabi.stores.dataSources.get(dsName));\n }\n _nestAvailabilityByConcepts(availability){\n return availability.reduce((map, kv) => {\n const key = kv.value;\n const space = kv.key;\n if (!map.has(key)) map.set(key, {source: kv.source, spaces: new Set()});\n map.get(key).spaces.add(space);\n return map;\n }, new Map());\n }\n _conceptsCompatibleWithMarkerSpace(availabilityMapByConcepts, markerSpace){\n const filteredValueLookup = new Map();\n const markerSpaceSet = new Set(markerSpace);\n const intersect = (a,b) => a.filter(e => b.has(e));\n for (const [concept, {source, spaces}] of availabilityMapByConcepts) {\n const filteredSpaces = [...spaces].filter(space => {\n const intersection = intersect(space, markerSpaceSet);\n return intersection.length == markerSpaceSet.size || intersection.length == space.length;\n });\n if (filteredSpaces.length) filteredValueLookup.set(concept, {source, spaces: filteredSpaces});\n }\n return filteredValueLookup;\n }\n _convertConceptMapToArray(conceptmap){\n return [...conceptmap].map(([concept, {source, spaces}]) => ({concept, source, spaces: [...spaces]}));\n }\n __observeDataSources() {\n return this._getDataModels(this.root.model.config.dataSources).map(ds => [ds.state, ds.config]);\n }\n _getAvailability(){\n const items = [];\n this._getDataModels(this.root.model.config.dataSources).forEach(ds => {\n ds.availability.data.forEach(kv => {\n items.push({ key: kv.key, value: ds.getConcept(kv.value), source: ds });\n });\n });\n return items;\n }\n getTags(locale) {\n const TAG_KEY = \"tag\";\n const query = {\n select: {\n key: [TAG_KEY],\n value: []\n },\n language: locale,\n from: \"entities\"\n };\n const dataSources = this._getDataModels(this.root.model.config.dataSources).reduce((res, ds) => {\n res.set(ds, deepClone(query));\n return res;\n }, new Map());\n this._getAvailability()\n .filter(f => f.key.join() == TAG_KEY)\n .forEach(av => {\n dataSources.get(av.source).select.value.push(av.value.concept);\n });\n const dataSourcesWithTags = [...dataSources].filter(([ds, query]) => query.select.value.length);\n return dataSourcesWithTags.length ? Promise.all(dataSourcesWithTags\n .map(([ds, query]) => ds.query(query).then(result => {\n return [...result.forQueryKey().values()].map(r => {\n r.datasource = ds;\n return r;\n });\n })))\n .then(results => this.mergeResults(results, [\"tag\"]))\n : Promise.resolve([]);\n }\n mergeResults(results, key) {\n const keys = new Map();\n results.forEach(result => {\n result.forEach(row => {\n const keyString = this.createKeyString(key, row);\n if (!keys.has(keyString))\n keys.set(keyString, row);\n });\n });\n return Array.from(keys.values());\n }\n createKeyString(key, row) {\n return key.map(concept => row[concept]).join(\",\");\n }\n }\n\n /*!\n * VIZABI ZOOMBUTTONLIST\n * Reusable zoombuttonlist component\n */\n const class_active = \"vzb-active\";\n class ZoomButtonList extends BaseComponent {\n constructor(config) {\n super(config);\n }\n setup() {\n this._available_buttons = {\n \"arrow\": {\n title: \"buttons/cursorarrow\",\n icon: \"cursorArrow\",\n func: this.toggleCursorMode.bind(this),\n required: true,\n statebind: \"root.ui.chart.cursorMode\",\n statebindfunc: this.setCursorMode.bind(this)\n },\n \"plus\": {\n title: \"buttons/cursorplus\",\n icon: \"cursorPlus\",\n func: this.toggleCursorMode.bind(this),\n required: true,\n statebind: \"root.ui.chart.cursorMode\",\n statebindfunc: this.setCursorMode.bind(this)\n },\n \"minus\": {\n title: \"buttons/cursorminus\",\n icon: \"cursorMinus\",\n func: this.toggleCursorMode.bind(this),\n required: true,\n statebind: \"root.ui.chart.cursorMode\",\n statebindfunc: this.setCursorMode.bind(this)\n },\n \"hand\": {\n title: \"buttons/cursorhand\",\n icon: \"cursorHand\",\n func: this.toggleCursorMode.bind(this),\n required: true,\n statebind: \"root.ui.chart.cursorMode\",\n statebindfunc: this.setCursorMode.bind(this)\n },\n \"hundredpercent\": {\n title: \"buttons/hundredpercent\",\n icon: \"hundredPercent\",\n func: this.toggleHundredPercent.bind(this),\n required: true\n }\n };\n }\n draw() {\n this.localise = this.services.locale.auto();\n Object.keys(this._available_buttons).forEach(buttonId => {\n const button = this._available_buttons[buttonId];\n if (button && button.statebind) {\n this.addReaction(() => {\n button.statebindfunc(buttonId, getProp(this, button.statebind.split(\".\")));\n });\n }\n });\n this._addButtons(Object.keys(this._available_buttons), []);\n }\n _addButtons(button_list, button_expand) {\n const _this = this;\n this._components_config = [];\n const details_btns = [];\n if (!button_list.length) return;\n for (let i = 0; i < button_list.length; i++) {\n const btn = button_list[i];\n const btn_config = this._available_buttons[btn];\n const d = (btn_config) ? btn : \"_default\";\n const details_btn = clone(this._available_buttons[d]);\n if (d == \"_default\") {\n details_btn.title = \"buttons/\" + btn;\n }\n details_btn.id = btn;\n details_btn.icon = iconset[\"ICON_\" + details_btn.icon.toUpperCase()];\n details_btns.push(details_btn);\n }\n const t = this.localise;\n this.element.selectAll(\"button\").data(details_btns)\n .enter().append(\"button\")\n .attr(\"class\", d => {\n let cls = \"vzb-buttonlist-btn\";\n if (button_expand.length > 0) {\n if (button_expand.indexOf(d.id) > -1) {\n cls += \" vzb-dialog-side-btn\";\n }\n }\n return cls;\n })\n .attr(\"data-btn\", d => d.id)\n .html(btn => \"<span class='vzb-buttonlist-btn-icon fa'>\" +\n btn.icon + \"</span><span class='vzb-buttonlist-btn-title'>\" +\n t(btn.title) + \"</span>\");\n const buttons = this.element.selectAll(\".vzb-buttonlist-btn\");\n buttons.on(\"click\", function(event, d) {\n event.preventDefault();\n event.stopPropagation();\n _this.proceedClick(d.id);\n });\n }\n proceedClick(id) {\n const _this = this;\n const btn = _this.element.selectAll(\".vzb-buttonlist-btn[data-btn='\" + id + \"']\");\n const classes = btn.attr(\"class\");\n const btn_config = _this._available_buttons[id];\n if (btn_config && btn_config.func) {\n btn_config.func(id);\n } else {\n const btn_active = classes.indexOf(class_active) === -1;\n btn.classed(class_active, btn_active);\n const evt = {};\n evt[\"id\"] = id;\n evt[\"active\"] = btn_active;\n _this.trigger(\"click\", evt);\n }\n }\n setButtonActive(id, boolActive) {\n const btn = this.element.selectAll(\".vzb-buttonlist-btn[data-btn='\" + id + \"']\");\n btn.classed(class_active, boolActive);\n }\n toggleCursorMode(id) {\n const value = id;\n this.root.ui.chart.cursorMode = value;\n }\n setCursorMode(id, value) {\n this.element.selectAll(\".vzb-buttonlist-btn\")\n .classed(class_active, d => d.id == value);\n }\n toggleHundredPercent() {\n this.root.element.dispatch(\"custom-resetZoom\");\n }\n }\n\n const CollectionMixin = superClass => class extends superClass {\n static add(name, addedClass) {\n CollectionMixin._collection[name] = addedClass;\n }\n static get(name) { return CollectionMixin._collection[name];}\n };\n CollectionMixin._collection = {};\n class Chart extends CollectionMixin(BaseComponent) {}\n\n function key(d) {return d[Symbol.for(\"key\")];}\n const PROFILE_CONSTANTS = {\n SMALL: {\n minLabelTextSize: 7,\n maxLabelTextSize: 21,\n defaultLabelTextSize: 12,\n closeCrossSize: 16 * 1.2,\n labelLeashCoeff: 0.4\n },\n MEDIUM: {\n minLabelTextSize: 7,\n maxLabelTextSize: 30,\n defaultLabelTextSize: 15,\n closeCrossSize: 20 * 1.2,\n labelLeashCoeff: 0.3\n },\n LARGE: {\n minLabelTextSize: 6,\n maxLabelTextSize: 48,\n defaultLabelTextSize: 20,\n closeCrossSize: 22 * 1.2,\n labelLeashCoeff: 0.2\n }\n };\n const PROFILE_CONSTANTS_FOR_PROJECTOR = {\n MEDIUM: {\n minLabelTextSize: 15,\n maxLabelTextSize: 35,\n defaultLabelTextSize: 15,\n closeCrossSize: 26 * 1.2,\n labelLeashCoeff: 0.3\n },\n LARGE: {\n minLabelTextSize: 20,\n maxLabelTextSize: 55,\n defaultLabelTextSize: 20,\n closeCrossSize: 32 * 1.2,\n labelLeashCoeff: 0.2\n }\n };\n const OPTIONS$3 = {\n LABELS_CONTAINER_CLASS: \"\",\n LINES_CONTAINER_CLASS: \"\",\n LINES_CONTAINER_SELECTOR: \"\",\n CSS_PREFIX: \"\",\n SUPPRESS_HIGHLIGHT_DURING_PLAY: true\n };\n class Labels extends BaseComponent {\n setup(options){\n this.context = this.parent;\n this._xScale = null;\n this._yScale = null;\n this._closeCrossHeight = 0;\n this.labelSizeTextScale = null;\n this.cached = {};\n this.label = this.LABEL(this);\n this.options = extend({}, OPTIONS$3);\n if(options) this.setOptions(options);\n this.label.setCssPrefix(this.options.CSS_PREFIX);\n this.labelsContainer = this.context.element.select(\".\" + this.options.LABELS_CONTAINER_CLASS);\n this.linesContainer = this.context.element.select(\".\" + this.options.LINES_CONTAINER_CLASS);\n this.tooltipEl = this.labelsContainer\n .append(\"g\").attr(\"class\", this.options.CSS_PREFIX + \"-tooltip\");\n }\n setOptions(newOptions) {\n extend(this.options, newOptions);\n }\n get MDL() {\n return {\n frame: this.model.encoding.frame,\n selected: this.model.encoding.selected.data.filter,\n highlighted: this.model.encoding.highlighted.data.filter,\n size: this.model.encoding.size,\n size_label: this.model.encoding.size_label,\n color: this.model.encoding.color,\n label: this.model.encoding.label\n };\n }\n draw() {\n this.addReaction(this._updateLayoutProfile);\n this.addReaction(this.selectDataPoints);\n this.addReaction(this.updateSizeTextScale);\n this.addReaction(this.updateLabelSizeLimits);\n this.addReaction(this.updateLabelsOnlyTextSize);\n this.addReaction(this.updateCloseCrossHeight);\n this.addReaction(this.updateTooltipFontSize);\n }\n updateLabelSizeLimits() {\n if (!this.MDL.size_label) return;\n this.services.layout.size;\n const extent = this.MDL.size_label.scale.extent || [0, 1];\n const minLabelTextSize = this.profileConstants.minLabelTextSize;\n const maxLabelTextSize = this.profileConstants.maxLabelTextSize;\n const minMaxDelta = maxLabelTextSize - minLabelTextSize;\n this.minLabelTextSize = Math.max(minLabelTextSize + minMaxDelta * extent[0], minLabelTextSize);\n this.maxLabelTextSize = Math.max(minLabelTextSize + minMaxDelta * extent[1], minLabelTextSize);\n if (this.MDL.size_label.data.isConstant) {\n if (extent[1] === null) {\n this.minLabelTextSize = this.maxLabelTextSize = this.profileConstants.defaultLabelTextSize;\n } else {\n this.minLabelTextSize = this.maxLabelTextSize;\n }\n }\n this.labelSizeTextScale.range([this.minLabelTextSize, this.maxLabelTextSize]);\n }\n updateSizeTextScale() {\n if (this.MDL.size_label) {\n this.labelSizeTextScale = this.MDL.size_label.scale.d3Scale;\n }\n }\n setScales(xScale, yScale) {\n this._xScale = xScale;\n this._yScale = yScale;\n }\n updateCloseCrossHeight() {\n this.services.layout.size;\n const closeCrossHeight = this.profileConstants.closeCrossSize;\n if (this._closeCrossHeight != closeCrossHeight) {\n this._closeCrossHeight = closeCrossHeight;\n if (this.entityLabels)\n this.updateLabelCloseGroupSize(this.entityLabels.selectAll(\".\" + this.options.CSS_PREFIX + \"-label-x\"), this._closeCrossHeight);\n }\n }\n xScale(x) {\n return this._xScale ? this._xScale(x) : (x * this.context.width);\n }\n yScale(y) {\n return this._yScale ? this._yScale(y) : (y * this.context.height);\n }\n selectDataPoints() {\n const _this = this;\n const _cssPrefix = this.options.CSS_PREFIX;\n const select = [...this.MDL.selected.markers.keys()]\n .filter(key => _this.model.dataMap.hasByStr(key))\n .map(selectedKey => ({[Symbol.for(\"key\")]: selectedKey}));\n this.entityLabels = this.labelsContainer.selectAll(\".\" + _cssPrefix + \"-entity\")\n .data(select, key);\n this.entityLines = this.linesContainer.selectAll(\"g.entity-line.\" + _cssPrefix + \"-entity\")\n .data(select, key);\n this.entityLabels.exit()\n .each(d => {\n if (_this.cached[key(d)] != null) {\n _this.cached[key(d)] = void 0;\n }\n })\n .remove();\n this.entityLines.exit()\n .remove();\n this.entityLines = this.entityLines\n .enter().insert(\"g\", function(d) {\n return this.querySelector(\".\" + _this.options.LINES_CONTAINER_SELECTOR_PREFIX + CSS.escape(key(d)));\n })\n .attr(\"class\", (d) => _cssPrefix + \"-entity entity-line line-\" + key(d))\n .each(function() {\n _this.label.line(d3__namespace.select(this));\n })\n .merge(this.entityLines)\n .classed(\"vzb-hidden\", !this.ui.enabled);\n this.entityLabels = this.entityLabels\n .enter().append(\"g\")\n .attr(\"class\", (d) => _cssPrefix + \"-entity label-\" + key(d))\n .each(function(d) {\n _this.cached[key(d)] = { _new: true };\n _this.label(d3__namespace.select(this));\n })\n .merge(this.entityLabels)\n .classed(\"vzb-hidden\", !this.ui.enabled);\n Object.keys(this.ui.offset).forEach(key => {\n if (!this.MDL.selected.has(key)) {\n delete this.ui.offset[key];\n }\n });\n }\n showCloseCross(d, show) {\n this.entityLabels\n .filter(f => d ? key(f) == key(d) : true)\n .select(\".\" + this.options.CSS_PREFIX + \"-label-x\")\n .classed(\"vzb-transparent\", !show || isTouchDevice());\n }\n highlight(d, highlight) {\n let labels = this.entityLabels;\n if (!labels) return;\n if (d) {\n labels = labels.filter(f => d ? key(f) == key(d) : true);\n }\n labels.classed(\"vzb-highlighted\", highlight);\n }\n updateLabel(d, cache, valueX, valueY, valueS, valueC, valueL, valueLST, duration, showhide) {\n const _this = this;\n if (key(d) == this.dragging) return;\n const _cssPrefix = this.options.CSS_PREFIX;\n if (this.MDL.selected.has(d) && this.entityLabels != null) {\n if (this.cached[key(d)] == null) this.selectDataPoints();\n const cached = this.cached[key(d)];\n if (cache) extend(cached, cache);\n if (cached.scaledS0 == null || cached.labelX0 == null || cached.labelY0 == null) {\n this._initNewCache(cached, valueX, valueY, valueS, valueC, valueL, valueLST);\n }\n if (cached.labelX_ == null || cached.labelY_ == null) {\n const labelOffset = this.ui.offset[key(d)];\n cached.labelOffset = (labelOffset && labelOffset.slice(0)) || [0, 0];\n }\n const brokenInputs = !cached.labelX0 && cached.labelX0 !== 0 || !cached.labelY0 && cached.labelY0 !== 0 || !cached.scaledS0 && cached.scaledS0 !== 0;\n const lineGroup = this.entityLines.filter(f => key(f) == key(d));\n this.entityLabels.filter(f => key(f) == key(d))\n .each(function() {\n const labelGroup = d3__namespace.select(this);\n if (brokenInputs) {\n labelGroup.classed(\"vzb-invisible\", brokenInputs);\n lineGroup.classed(\"vzb-invisible\", brokenInputs);\n return;\n }\n const text = labelGroup.selectAll(\".\" + _cssPrefix + \"-label-content\")\n .text(valueL || cached.labelText);\n _this._updateLabelSize(d, null, labelGroup, valueLST, text);\n _this.positionLabel(d, null, this, duration, showhide, lineGroup);\n });\n }\n }\n _initNewCache(cached, valueX, valueY, valueS, valueC, valueL, valueLST) {\n if (valueS || valueS === 0) cached.scaledS0 = areaToRadius(this.context.sScale(valueS));\n cached.valueS0 = valueS;\n cached.labelX0 = valueX;\n cached.labelY0 = valueY;\n cached.labelText = valueL;\n cached.valueLST = valueLST;\n cached.scaledC0 = valueC != null ? this.context.cScale(valueC) : this.context.COLOR_WHITEISH;\n }\n setTooltip(d, tooltipText, tooltipCache, labelValues) {\n if (tooltipText) {\n let position = 0;\n const _cssPrefix = this.options.CSS_PREFIX;\n this.tooltipEl.raise().text(null);\n this.label(this.tooltipEl, true);\n if (d) {\n const cache = {};\n this._initNewCache(cache, labelValues.valueX, labelValues.valueY, labelValues.valueS, labelValues.valueC, \"\", labelValues.valueLST);\n this.tooltipEl\n .classed(this.options.CSS_PREFIX + \"-tooltip\", false)\n .classed(this.options.CSS_PREFIX + \"-entity\", true)\n .selectAll(\".\" + _cssPrefix + \"-label-content\")\n .text(labelValues.labelText);\n this._updateLabelSize(d, cache, this.tooltipEl, labelValues.valueLST);\n position = this.positionLabel(d, cache, this.tooltipEl.node(), 0, null, this.tooltipEl.select(\".lineemptygroup\"));\n }\n this.tooltipEl\n .classed(this.options.CSS_PREFIX + \"-entity\", false)\n .classed(this.options.CSS_PREFIX + \"-tooltip\", true)\n .selectAll(\".\" + _cssPrefix + \"-label-content\")\n .text(tooltipText);\n this._updateLabelSize(d, tooltipCache, this.tooltipEl, null);\n this.positionLabel(d, tooltipCache, this.tooltipEl.node(), 0, null, this.tooltipEl.select(\".lineemptygroup\"), position);\n } else {\n this.tooltipEl.text(null);\n }\n }\n updateTooltipFontSize() {\n this.services.layout.size;\n this.tooltipEl.style(\"font-size\", this.profileConstants.defaultLabelTextSize);\n }\n _updateLabelSize(d, cache, labelGroup, valueLST, text) {\n const _this = this;\n const cached = cache || _this.cached[key(d)];\n const _cssPrefix = this.options.CSS_PREFIX;\n const labels = this.root.ui.chart.labels;\n labelGroup.classed(\"vzb-label-boxremoved\", labels.removeLabelBox);\n const _text = text || labelGroup.selectAll(\".\" + _cssPrefix + \"-label-content\");\n if (_this.labelSizeTextScale) {\n if (valueLST != null) {\n const range = _this.labelSizeTextScale.range();\n const fontSize = range[0] + Math.sqrt((_this.labelSizeTextScale(valueLST) - range[0]) * (range[1] - range[0]));\n _text.attr(\"font-size\", fontSize + \"px\");\n cached.fontSize = fontSize;\n if (!cached.initFontSize) cached.initFontSize = fontSize;\n } else {\n _text.attr(\"font-size\", null);\n cached.fontSize = parseFloat(_text.style(\"font-size\"));\n if (!cached.initFontSize) cached.initFontSize = cached.fontSize;\n }\n } else {\n cached.fontSize = parseFloat(_text.style(\"font-size\"));\n if (!cached.initFontSize) cached.initFontSize = cached.fontSize;\n }\n let contentBBox;\n _text.style(\"stroke\", \"none\");\n cached.initTextBBox = _text.node().getBBox();\n _text.style(\"stroke\", null);\n contentBBox = cached.textBBox = {\n width: cached.initTextBBox.width,\n height: cached.initTextBBox.height\n };\n const scale = cached.fontSize / cached.initFontSize;\n cached.textBBox.width = cached.initTextBBox.width * scale;\n cached.textBBox.height = cached.initTextBBox.height * scale;\n contentBBox = cached.textBBox;\n const rect = labelGroup.selectAll(\"rect\");\n if (!cached.textWidth || cached.textWidth != contentBBox.width) {\n cached.textWidth = contentBBox.width;\n const labelCloseHeight = _this._closeCrossHeight || contentBBox.height;\n const isRTL = _this.services.locale.isRTL();\n const labelCloseGroup = labelGroup.select(\".\" + _cssPrefix + \"-label-x\")\n .attr(\"transform\", \"translate(\" + (isRTL ? -contentBBox.width - 4 : 4) + \",\" + (-contentBBox.height * 0.85) + \")\");\n this.updateLabelCloseGroupSize(labelCloseGroup, labelCloseHeight);\n const rectBBox = cached.rectBBox = {\n x: -contentBBox.width - 4,\n y: -contentBBox.height * 0.85,\n width: contentBBox.width + 8,\n height: contentBBox.height * 1.2\n };\n cached.rectOffsetX = rectBBox.width + rectBBox.x;\n cached.rectOffsetY = rectBBox.height + rectBBox.y;\n rect.attr(\"width\", rectBBox.width)\n .attr(\"height\", rectBBox.height)\n .attr(\"x\", rectBBox.x)\n .attr(\"y\", rectBBox.y)\n .attr(\"rx\", contentBBox.height * 0.2)\n .attr(\"ry\", contentBBox.height * 0.2);\n }\n const glowRect = labelGroup.select(\".vzb-label-glow\");\n if (glowRect.attr(\"stroke\") !== cached.scaledC0) {\n glowRect.attr(\"stroke\", cached.scaledC0);\n }\n }\n updateLabelCloseGroupSize(labelCloseGroup, labelCloseHeight) {\n labelCloseGroup.select(\"circle\")\n .attr(\"cx\", 0)\n .attr(\"cy\", 0)\n .attr(\"r\", labelCloseHeight * 0.5);\n labelCloseGroup.select(\"svg\")\n .attr(\"x\", -labelCloseHeight * 0.5)\n .attr(\"y\", labelCloseHeight * -0.5)\n .attr(\"width\", labelCloseHeight)\n .attr(\"height\", labelCloseHeight);\n }\n updateLabelsOnlyTextSize() {\n const _this = this;\n this.MDL.size_label.scale.extent;\n this.services.layout.size;\n mobx.runInAction(() => {\n this.entityLabels.each(function(d) {\n _this._updateLabelSize(d, null, d3__namespace.select(this), _this.model.dataMap.getByStr(d[Symbol.for(\"key\")]).size_label);\n if (_this.cached[key(d)]._new) return;\n const lineGroup = _this.entityLines.filter(f => key(f) == key(d));\n _this.positionLabel(d, null, this, 0, null, lineGroup);\n });\n });\n }\n updateLabelOnlyPosition(d, index, cache) {\n const _this = this;\n const cached = this.cached[key(d)];\n if (cache) extend(cached, cache);\n const lineGroup = _this.entityLines.filter(f => key(f) == key(d));\n this.entityLabels.filter(f => key(f) == key(d))\n .each(function() {\n _this.positionLabel(d, null, this, 0, null, lineGroup);\n });\n }\n updateLabelOnlyColor(d, index, cache) {\n const _this = this;\n const cached = this.cached[key(d)];\n if (cache) extend(cached, cache);\n const labelGroup = _this.entityLabels.filter(f => key(f) == key(d));\n _this._updateLabelSize(d, null, labelGroup, null);\n }\n positionLabel(d, cache, context, duration, showhide, lineGroup, position) {\n if (key(d) == this.dragging) return;\n const cached = cache || this.cached[key(d)];\n const lockPosition = (position || position === 0);\n const hPos = (position || 0) & 1;\n const vPos = ((position || 0) & 2) >> 1;\n let hPosNew = 0;\n let vPosNew = 0;\n const viewWidth = this.context.width;\n const viewHeight = this.context.height;\n const resolvedX0 = this.xScale(cached.labelX0);\n const resolvedY0 = this.yScale(cached.labelY0);\n const offsetX = cached.rectOffsetX;\n const offsetY = cached.rectOffsetY;\n if (!cached.labelOffset) cached.labelOffset = [0, 0];\n cached.labelX_ = cached.labelOffset[0] || (-cached.scaledS0 * 0.75 - offsetX) / viewWidth;\n cached.labelY_ = cached.labelOffset[1] || (-cached.scaledS0 * 0.75 - offsetY) / viewHeight;\n let resolvedX = resolvedX0 + cached.labelX_ * viewWidth;\n let resolvedY = resolvedY0 + cached.labelY_ * viewHeight;\n if (cached.labelOffset[0] + cached.labelOffset[1] == 0) {\n if ((!lockPosition && (resolvedY - cached.rectBBox.height + offsetY <= 0)) || vPos) {\n vPosNew = 1;\n cached.labelY_ = (cached.scaledS0 * 0.75 + cached.rectBBox.height - offsetY) / viewHeight;\n resolvedY = resolvedY0 + cached.labelY_ * viewHeight;\n }\n if ((!lockPosition && (resolvedX - cached.rectBBox.width + offsetX <= 0)) || hPos) {\n hPosNew = 1;\n cached.labelX_ = (cached.scaledS0 * 0.75 + cached.rectBBox.width - offsetX) / viewWidth;\n resolvedX = resolvedX0 + cached.labelX_ * viewWidth;\n if (resolvedX > viewWidth) {\n hPosNew = 0;\n vPosNew = (vPosNew == 0 && (resolvedY0 - offsetY * 0.5 - cached.scaledS0) < cached.rectBBox.height) ? 1 : vPosNew;\n cached.labelY_ = vPosNew ? -offsetY * 0.5 + cached.rectBBox.height + cached.scaledS0 : -offsetY * 1.5 - cached.scaledS0;\n cached.labelY_ /= viewHeight;\n resolvedY = resolvedY0 + cached.labelY_ * viewHeight;\n cached.labelX_ = (cached.rectBBox.width - offsetX - resolvedX0) / viewWidth;\n resolvedX = resolvedX0 + cached.labelX_ * viewWidth;\n }\n }\n }\n if (lockPosition) {\n let topCornerCase = false;\n if (resolvedX - cached.rectBBox.width + offsetX <= 0) {\n const deltaX = resolvedX0 - cached.rectBBox.width;\n const deltaY = deltaX > 0 ? cathetus(cached.scaledS0, deltaX) : cached.scaledS0;\n resolvedY = vPosNew ?\n resolvedY0 + cached.rectBBox.height - offsetY * 0.5 + deltaY\n :\n resolvedY0 - offsetY * 1.5 - deltaY;\n if (resolvedY - cached.rectBBox.height < 0) {\n topCornerCase = true;\n }\n }\n if (resolvedY - cached.rectBBox.height + offsetY <= 0) {\n const deltaY = resolvedY0 - cached.rectBBox.height;\n const deltaX = deltaY > 0 ? cathetus(cached.scaledS0, deltaY) : cached.scaledS0;\n resolvedX = hPosNew ?\n resolvedX0 + cached.rectBBox.width + deltaX\n :\n resolvedX0 - offsetX * 2 - deltaX;\n if (resolvedX - cached.rectBBox.width < 0 || resolvedX > viewWidth) {\n topCornerCase = true;\n }\n }\n if (topCornerCase) {\n vPosNew++;\n const deltaX = resolvedX0 - cached.rectBBox.width;\n resolvedY = resolvedY0 + cached.rectBBox.height - offsetY * 0.5 + (deltaX > 0 ? cathetus(cached.scaledS0, deltaX) : cached.scaledS0);\n }\n }\n this.label._repositionLabels(d, cache, context, resolvedX, resolvedY, resolvedX0, resolvedY0, duration, showhide, lineGroup);\n return vPosNew * 2 + hPosNew;\n }\n _updateLayoutProfile(){\n this.services.layout.size;\n this.profileConstants = this.services.layout.getProfileConstants(PROFILE_CONSTANTS, PROFILE_CONSTANTS_FOR_PROJECTOR);\n this.height = (this.element.node().clientHeight) || 0;\n this.width = (this.element.node().clientWidth) || 0;\n if (!this.height || !this.width) return warn(\"Chart _updateProfile() abort: container is too little or has display:none\");\n }\n LABEL(context) {\n return (function d3_label() {\n const _this = context;\n let _cssPrefix;\n label.setCssPrefix = function(cssPrefix) {\n _cssPrefix = cssPrefix;\n return label;\n };\n const labelDragger = d3__namespace.drag()\n .on(\"start\", event => {\n event.sourceEvent.stopPropagation();\n })\n .on(\"drag\", function(event, d) {\n if (!_this.ui.dragging) return;\n if (!_this.dragging) _this.dragging = key(d);\n const cache = _this.cached[key(d)];\n cache.labelFixed = true;\n const viewWidth = _this.context.width;\n const viewHeight = _this.context.height;\n cache.labelX_ += event.dx / viewWidth;\n cache.labelY_ += event.dy / viewHeight;\n const resolvedX = _this.xScale(cache.labelX0) + cache.labelX_ * viewWidth;\n const resolvedY = _this.yScale(cache.labelY0) + cache.labelY_ * viewHeight;\n const resolvedX0 = _this.xScale(cache.labelX0);\n const resolvedY0 = _this.yScale(cache.labelY0);\n const lineGroup = _this.entityLines.filter(f => key(f) == key(d));\n label._repositionLabels(d, null, this, resolvedX, resolvedY, resolvedX0, resolvedY0, 0, null, lineGroup);\n })\n .on(\"end\", (event, d) => {\n if (_this.dragging) {\n const cache = _this.cached[key(d)];\n _this.dragging = null;\n cache.labelOffset[0] = cache.labelX_;\n cache.labelOffset[1] = cache.labelY_;\n _this.ui.offset = Object.assign(_this.ui.offset, {[key(d)]: [cache.labelX_, cache.labelY_]});\n }\n });\n function label(container, isTooltip) {\n container\n .each(function(d) {\n const view = d3__namespace.select(this);\n view.append(\"rect\")\n .attr(\"class\", \"vzb-label-glow\")\n .attr(\"filter\", \"url(\" + location.pathname + \"#vzb-glow-filter)\");\n view.append(\"rect\")\n .attr(\"class\", \"vzb-label-fill vzb-tooltip-border\");\n const text = view.append(\"text\").attr(\"class\", _cssPrefix + \"-label-content stroke\");\n if (!view.style(\"paint-order\").length) {\n view.insert(\"text\", `.${_cssPrefix}-label-content`)\n .attr(\"class\", _cssPrefix + \"-label-content \" + _cssPrefix + \"-label-shadow vzb-noexport\");\n text.classed(\"stroke\", false);\n }\n if (!isTooltip) {\n const cross = view.append(\"g\").attr(\"class\", _cssPrefix + \"-label-x vzb-transparent\");\n setIcon(cross, ICON_CLOSE);\n cross.insert(\"circle\", \"svg\");\n cross.select(\"svg\")\n .attr(\"class\", _cssPrefix + \"-label-x-icon\")\n .attr(\"width\", \"0px\")\n .attr(\"height\", \"0px\");\n cross.on(\"click\", event => {\n if (event.defaultPrevented) return;\n event.stopPropagation();\n _this.MDL.highlighted.delete(d);\n _this.MDL.selected.delete(d);\n });\n }\n });\n if (!isTooltip) {\n container\n .call(labelDragger)\n .on(\"mouseenter\", function(event, d) {\n if (isTouchDevice() || _this.dragging) return;\n _this.MDL.highlighted.set(d);\n _this.entityLabels.sort((a) => key(a) != key(d) ? -1 : 1);\n d3__namespace.select(this).selectAll(\".\" + _cssPrefix + \"-label-x\")\n .classed(\"vzb-transparent\", false);\n })\n .on(\"mouseleave\", function(event, d) {\n if (isTouchDevice() || _this.dragging) return;\n _this.MDL.highlighted.delete(d);\n d3__namespace.select(this).selectAll(\".\" + _cssPrefix + \"-label-x\")\n .classed(\"vzb-transparent\", true);\n })\n .on(\"click\", function(event, d) {\n if (!isTouchDevice()) return;\n const cross = d3__namespace.select(this).selectAll(\".\" + _cssPrefix + \"-label-x\");\n const hidden = cross.classed(\"vzb-transparent\");\n if (hidden) {\n _this.entityLabels.sort((a) => key(a) != key(d) ? -1 : 1);\n _this.showCloseCross(null, false);\n }\n cross.classed(\"vzb-transparent\", !hidden);\n if (!_this.options.SUPPRESS_HIGHLIGHT_DURING_PLAY || !_this.MDL.frame.playing) {\n if (hidden) {\n _this.MDL.highlighted.set(d);\n } else {\n _this.MDL.highlighted.delete(d);\n }\n }\n });\n }\n return label;\n }\n label.line = function(container) {\n container.append(\"line\").attr(\"class\", _cssPrefix + \"-label-line\");\n };\n label._repositionLabels = _repositionLabels;\n function _repositionLabels(d, _cache, labelContext, _X, _Y, _X0, _Y0, duration, showhide, lineGroup) {\n const cache = _cache || _this.cached[key(d)];\n const labelGroup = d3__namespace.select(labelContext);\n const brokenInputs = !_X && _X !== 0 || !_Y && _Y !== 0 || !_X0 && _X0 !== 0 || !_Y0 && _Y0 !== 0;\n if (brokenInputs) {\n labelGroup.classed(\"vzb-invisible\", brokenInputs);\n lineGroup.classed(\"vzb-invisible\", brokenInputs);\n return;\n }\n const viewWidth = _this.context.width;\n const viewHeight = _this.context.height;\n const rectBBox = cache.rectBBox;\n const height = rectBBox.height;\n const offsetX = cache.rectOffsetX;\n const offsetY = cache.rectOffsetY;\n if (_X + rectBBox.x <= 0) {\n _X = -rectBBox.x;\n cache.labelX_ = (_X - _this.xScale(cache.labelX0)) / viewWidth;\n } else if (_X + offsetX > viewWidth) {\n _X = viewWidth - offsetX;\n cache.labelX_ = (_X - _this.xScale(cache.labelX0)) / viewWidth;\n }\n if (_Y + rectBBox.y <= 0) {\n _Y = -rectBBox.y;\n cache.labelY_ = (_Y - _this.yScale(cache.labelY0)) / viewHeight;\n } else if (_Y + offsetY > viewHeight) {\n _Y = viewHeight - offsetY;\n cache.labelY_ = (_Y - _this.yScale(cache.labelY0)) / viewHeight;\n }\n if (duration == null) duration = _this.context.duration;\n if (cache._new) {\n duration = 0;\n delete cache._new;\n }\n if (duration) {\n if (showhide && !d.hidden) {\n labelGroup.classed(\"vzb-invisible\", d.hidden);\n labelGroup\n .attr(\"transform\", \"translate(\" + _X + \",\" + _Y + \")\")\n .style(\"opacity\", 0)\n .transition().duration(duration).ease(d3__namespace.easeExp)\n .style(\"opacity\", 1)\n .on(\"interrupt\", () => {\n labelGroup\n .style(\"opacity\", 1);\n });\n lineGroup.classed(\"vzb-invisible\", d.hidden);\n lineGroup\n .attr(\"transform\", \"translate(\" + _X + \",\" + _Y + \")\")\n .style(\"opacity\", 0)\n .transition().duration(duration).ease(d3__namespace.easeExp)\n .style(\"opacity\", 1)\n .on(\"interrupt\", () => {\n lineGroup\n .style(\"opacity\", 1);\n });\n } else if (showhide && d.hidden) {\n labelGroup\n .style(\"opacity\", 1)\n .transition().duration(duration).ease(d3__namespace.easeExp)\n .style(\"opacity\", 0)\n .on(\"end\", () => {\n labelGroup\n .style(\"opacity\", 1)\n .classed(\"vzb-invisible\", d.hidden);\n });\n lineGroup\n .style(\"opacity\", 1)\n .transition().duration(duration).ease(d3__namespace.easeExp)\n .style(\"opacity\", 0)\n .on(\"end\", () => {\n lineGroup\n .style(\"opacity\", 1)\n .classed(\"vzb-invisible\", d.hidden);\n });\n } else {\n labelGroup\n .transition().duration(duration).ease(d3__namespace.easeLinear)\n .attr(\"transform\", \"translate(\" + _X + \",\" + _Y + \")\");\n lineGroup\n .transition().duration(duration).ease(d3__namespace.easeLinear)\n .attr(\"transform\", \"translate(\" + _X + \",\" + _Y + \")\");\n }\n } else {\n labelGroup\n .interrupt()\n .attr(\"transform\", \"translate(\" + _X + \",\" + _Y + \")\")\n .transition();\n lineGroup\n .interrupt()\n .attr(\"transform\", \"translate(\" + _X + \",\" + _Y + \")\")\n .transition();\n if (showhide) labelGroup.classed(\"vzb-invisible\", d.hidden);\n if (showhide) lineGroup.classed(\"vzb-invisible\", d.hidden);\n }\n const diffX1 = _X0 - _X;\n const diffY1 = _Y0 - _Y;\n const textBBox = cache.textBBox;\n let diffX2 = -textBBox.width * 0.5;\n let diffY2 = -height * 0.2;\n const labels = _this.root.ui.chart.labels;\n const bBox = labels.removeLabelBox ? textBBox : rectBBox;\n const FAR_COEFF = _this.profileConstants.labelLeashCoeff || 0;\n const lineHidden = circleRectIntersects({ x: diffX1, y: diffY1, r: cache.scaledS0 },\n { x: diffX2, y: diffY2, width: (bBox.height * 2 * FAR_COEFF + bBox.width), height: (bBox.height * (2 * FAR_COEFF + 1)) });\n lineGroup.select(\"line\").classed(\"vzb-invisible\", lineHidden);\n if (lineHidden) return;\n if (labels.removeLabelBox) {\n const angle = Math.atan2(diffX1 - diffX2, diffY1 - diffY2) * 180 / Math.PI;\n const deltaDiffX2 = (angle >= 0 && angle <= 180) ? (bBox.width * 0.5) : (-bBox.width * 0.5);\n const deltaDiffY2 = (Math.abs(angle) <= 90) ? (bBox.height * 0.55) : (-bBox.height * 0.45);\n diffX2 += Math.abs(diffX1 - diffX2) > textBBox.width * 0.5 ? deltaDiffX2 : 0;\n diffY2 += Math.abs(diffY1 - diffY2) > textBBox.height * 0.5 ? deltaDiffY2 : (textBBox.height * 0.05);\n }\n const longerSideCoeff = Math.abs(diffX1) > Math.abs(diffY1) ? Math.abs(diffX1) : Math.abs(diffY1);\n lineGroup.select(\"line\").style(\"stroke-dasharray\", \"0 \" + (cache.scaledS0) + \" \" + ~~(longerSideCoeff) * 2);\n if (duration) {\n lineGroup.selectAll(\"line\")\n .transition().duration(duration).ease(d3__namespace.easeLinear)\n .attr(\"x1\", diffX1)\n .attr(\"y1\", diffY1)\n .attr(\"x2\", diffX2)\n .attr(\"y2\", diffY2);\n } else {\n lineGroup.selectAll(\"line\")\n .interrupt()\n .attr(\"x1\", diffX1)\n .attr(\"y1\", diffY1)\n .attr(\"x2\", diffX2)\n .attr(\"y2\", diffY2)\n .transition();\n }\n }\n function circleRectIntersects(circle, rect) {\n const circleDistanceX = Math.abs(circle.x - rect.x);\n const circleDistanceY = Math.abs(circle.y - rect.y);\n const halfRectWidth = rect.width * 0.5;\n const halfRectHeight = rect.height * 0.5;\n if (circleDistanceX > (halfRectWidth + circle.r)) { return false; }\n if (circleDistanceY > (halfRectHeight + circle.r)) { return false; }\n if (circleDistanceX <= halfRectWidth) { return true; }\n if (circleDistanceY <= halfRectHeight) { return true; }\n const cornerDistance_sq = Math.pow(circleDistanceX - halfRectWidth, 2) +\n Math.pow(circleDistanceY - halfRectHeight, 2);\n return (cornerDistance_sq <= Math.pow(circle.r, 2));\n }\n return label;\n })();\n }\n }\n Labels.DEFAULT_UI = {\n offset: () => ({}),\n enabled: true,\n dragging: true,\n removeLabelBox: false\n };\n const decorated$3 = mobx.decorate(Labels, {\n \"MDL\": mobx.computed\n });\n\n /*!\n * VIZABI BUBBLE SIZE slider\n * Reusable bubble size slider\n */\n const OPTIONS$2 = {\n TEXT_PARAMS: { TOP: 11, LEFT: 10, MAX_WIDTH: 42, MAX_HEIGHT: 16 },\n THUMB_STROKE_WIDTH: 4,\n labelsValue: \"domain\",\n PROFILE_CONSTANTS: {\n SMALL: {\n },\n MEDIUM: {\n },\n LARGE: {\n }\n }\n };\n class BubbleSize extends decorated$a {\n setup(_options) {\n const options = deepExtend(deepExtend({}, OPTIONS$2), _options || {});\n super.setup(options);\n this.showArcs = this.options.showArcs;\n if (this.showArcs) {\n this.DOM.sliderArcs = this.DOM.slider.selectAll(\".vzb-bs-slider-thumb-arc\").data([0, 0]).enter()\n .append(\"path\")\n .attr(\"class\", \"vzb-bs-slider-thumb-arc\");\n }\n this.DOM.sliderLabelsWrapper = this.DOM.slider.append(\"g\");\n this.DOM.sliderLabels = this.DOM.sliderLabelsWrapper.selectAll(\"text\").data([0, 0]).enter()\n .append(\"text\")\n .attr(\"class\", \"vzb-bs-slider-thumb-label\")\n .attr(\"text-anchor\", (d, i) => i ? \"start\" : \"end\")\n .attr(\"dy\", (d, i) => i ? \"-0.7em\" : \"1.4em\");\n }\n draw() {\n super.draw();\n this.addReaction(this._setLabelsText);\n }\n _getPadding() {\n const padding = super._getPadding();\n padding.bottom = this.options.BAR_WIDTH + this.options.TEXT_PARAMS.MAX_HEIGHT;\n return padding;\n }\n _updateThumbs(extent) {\n this._updateArcs(extent);\n this._updateLabels(extent);\n }\n _updateArcs(s) {\n if (!this.showArcs) return;\n const _this = this;\n const valueArc = d3__namespace.arc()\n .outerRadius(d => _this.rescaler(d) * 0.5)\n .innerRadius(d => _this.rescaler(d) * 0.5)\n .startAngle(-Math.PI * 0.5)\n .endAngle(Math.PI * 0.5);\n this.DOM.sliderArcs.data(s)\n .attr(\"d\", valueArc)\n .attr(\"transform\", d => \"translate(\" + (_this.rescaler(d) * 0.5) + \",0)\");\n }\n _updateLabels(s) {\n if (s) { this.DOM.sliderLabels.data(s); }\n this.DOM.sliderLabels\n .attr(\"transform\", (d, i) => {\n const textMargin = { v: this.options.TEXT_PARAMS.TOP, h: this.options.TEXT_PARAMS.LEFT };\n const dX = textMargin.h * (i ? 0.5 : -1.0) + this.rescaler(d);\n const dY = 0;\n return \"translate(\" + ((this.services.locale.isRTL() ? -1 : 1) * dX) + \",\" + (dY) + \")\";\n });\n }\n _setLabelsText() {\n let texts = [];\n if (this.MDL.model.data.isConstant) {\n texts = [\"\", \"\"];\n } else {\n texts = this.MDL.model[this.options.labelsValue].map(this.localise);\n }\n this.DOM.sliderLabels.text((d, i) => texts[i]);\n }\n _getMinMaxBubbleRadius() {\n if(this.root.ui.minMaxRadius) return this.root.ui.minMaxRadius;\n const range = this.model.encoding.size.scale.range;\n const min = areaToRadius(d3__namespace.min(range));\n const max = areaToRadius(d3__namespace.max(range));\n return { min, max };\n }\n _updateSize() {\n const minMaxBubbleRadius = this._getMinMaxBubbleRadius();\n const padding = this.element.node().offsetWidth - minMaxBubbleRadius.max * 2;\n this.padding.top = minMaxBubbleRadius.max + this.options.BAR_WIDTH,\n this.padding.left = padding * 0.5;\n this.padding.right = padding * 0.5;\n super._updateSize();\n this.DOM.sliderLabelsWrapper\n .attr(\"transform\", this.isRTL ? \"scale(-1,1)\" : null);\n this.DOM.sliderLabels\n .attr(\"text-anchor\", (d, i) => (this.isRTL ? !i : i) ? \"start\" : \"end\");\n }\n _updateRescaler() {\n const minMaxBubbleRadius = this._getMinMaxBubbleRadius();\n this.rescaler.range([minMaxBubbleRadius.min * 2, minMaxBubbleRadius.max * 2]);\n }\n _getComponentWidth() {\n return this._getMinMaxBubbleRadius().max * 2;\n }\n }\n\n /*!\n * VIZABI BUBBLE SIZE slider\n * Reusable bubble size slider\n */\n const OPTIONS$1 = {\n THUMB_HEIGHT: 17,\n THUMB_STROKE_WIDTH: 3,\n domain: null,\n suppressInput: null,\n snapValue: null\n };\n class SingleHandleSlider extends decorated$a {\n setup(_options) {\n this.type = this.type || \"singlehandleslider\";\n const options = extend(extend({}, OPTIONS$1), _options || {});\n super.setup(options);\n if (this.options.domain) this._setDomain(this.options.domain);\n this.DOM.slider.selectAll(\".w\").classed(\"vzb-hidden\", true);\n this.DOM.slider.select(\".selection\").classed(\"vzb-hidden\", true);\n this.DOM.slider.select(\".overlay\")\n .lower()\n .style(\"stroke-opacity\", \"0\")\n .style(\"stroke-width\", (this.options.THUMB_HEIGHT * 0.5) + \"px\")\n .attr(\"rx\", this.options.BAR_WIDTH * 0.5)\n .attr(\"ry\", this.options.BAR_WIDTH * 0.5);\n this.DOM.slider.selectAll(\".vzb-slider-thumb-badge\")\n .style(\"stroke-width\", this.options.THUMB_STROKE_WIDTH + \"px\");\n }\n _setDomain(domain){\n this.options.EXTENT_MIN = this.options.domain[0];\n this.options.EXTENT_MAX = this.options.domain[this.options.domain.length - 1];\n this.rescaler.domain(domain);\n }\n _createThumbs(thumbsEl) {\n const halfThumbHeight = this.options.THUMB_HEIGHT * 0.5;\n const thumbArc = d3__namespace.arc()\n .outerRadius(halfThumbHeight)\n .startAngle(0)\n .endAngle(2 * Math.PI);\n thumbsEl\n .attr(\"transform\", \"translate(\" + (halfThumbHeight + this.options.THUMB_STROKE_WIDTH * 0.5) + \",\" + (halfThumbHeight + this.options.THUMB_STROKE_WIDTH * 0.5) + \")\")\n .append(\"path\")\n .attr(\"d\", thumbArc);\n }\n _getBrushEventListeners() {\n const _superListeners = super._getBrushEventListeners();\n return {\n start: _superListeners.start,\n brush: (event, d) => {\n if (this.nonBrushChange || !event.sourceEvent) return;\n if (!this.options.suppressInput) {\n _superListeners.brush.call(this, event, d);\n } else {\n this._savedSelection = event.selection;\n this._snap(event.selection);\n }\n },\n end:(event, d) => {\n if (this.nonBrushChange || !event.sourceEvent) return;\n if (this.options.snapValue) {\n this._snap(event.selection || this._savedSelection);\n } else {\n this.DOM.slider.call(this.brush.move, [this.rescaler.range()[0], this._savedSelection[1]]);\n }\n this._setFromExtent(true, true);\n this._savedSelection = void 0;\n }\n };\n }\n _snap(selection) {\n let value = this.rescaler.invert(this._extentToValue(selection));\n const domain = this.rescaler.domain();\n const ascendingDomain = domain[domain.length - 1] > domain[0];\n const next = d3__namespace.bisector(d3__namespace[ascendingDomain ? \"ascending\" : \"descending\"]).left(domain, value) || 1;\n value = (ascendingDomain ? 1 : -1) * ((value - domain[next - 1]) - (domain[next] - value)) > 0 ? domain[next] : domain[next - 1];\n this._moveBrush(this._valueToExtent(value));\n }\n _getHandleSize() {\n return this.options.THUMB_HEIGHT + this.options.THUMB_STROKE_WIDTH;\n }\n _getPadding() {\n const barWidth = this.options.BAR_WIDTH;\n const thumbHeight = this.options.THUMB_HEIGHT;\n const padding = super._getPadding();\n padding.top = (thumbHeight + this.options.THUMB_STROKE_WIDTH) * 0.5;\n padding.bottom = (thumbHeight + this.options.THUMB_STROKE_WIDTH) * 0.5 - barWidth;\n return padding;\n }\n _updateSize() {\n super._updateSize();\n const componentWidth = this._getComponentWidth();\n this.rescaler.range(d3__namespace.range(0, componentWidth || 1, (componentWidth / (this.rescaler.domain().length - 1)) || 1).concat([componentWidth]));\n }\n _valueToExtent(value) {\n return [this.rescaler.domain()[0], value];\n }\n _extentToValue(extent) {\n return extent[1];\n }\n _setModel(value, force, persistent) {\n if (this.options.suppressInput) {\n const _value = this._extentToValue(value).toFixed(this.options.ROUND_DIGITS);\n if (_value == this.MDL.model[this.value]) return;\n }\n super._setModel(value, force, persistent);\n }\n }\n\n function formatVersion(version){\n return version || \"N/A\";\n }\n function formatBuild(timestamp){\n if (!timestamp) return \"N/A\";\n return d3__namespace.utcFormat(\"%Y-%m-%d at %H:%M\")(new Date(parseInt(timestamp)));\n }\n function url(text = \"\", link = \"\"){\n if (!link) return text;\n return `<a class='vzb-underline' href='${link}' target='_blank'>⧉ ${text}</a>`;\n }\n class About extends decorated$8 {\n constructor(config) {\n config.template = `\n <div class='vzb-dialog-modal'>\n <div class=\"vzb-dialog-title\"> \n <span data-localise=\"buttons/about\"></span>\n </div>\n\n <div class=\"vzb-dialog-content\">\n <div class=\"vzb-about-header\"></div>\n <div class=\"vzb-about-body\"></div>\n <div class=\"vzb-about-footer\"></div>\n </div>\n \n <div class=\"vzb-dialog-buttons\">\n <div data-click=\"closeDialog\" class=\"vzb-dialog-button vzb-label-primary\">\n <span data-localise=\"buttons/ok\"></span>\n </div>\n </div>\n </div>\n `;\n super(config);\n }\n setup() {\n this.DOM = {\n header: this.element.select(\".vzb-about-header\"),\n body: this.element.select(\".vzb-about-body\"),\n footer: this.element.select(\".vzb-about-footer\")\n };\n }\n draw(){\n this.addReaction(this.drawHeader);\n this.addReaction(this.drawBody);\n this.addReaction(this.drawFooter);\n }\n drawHeader(){\n const author = this.root.constructor.versionInfo?.sharedComponents?.package?.author || {};\n this.DOM.header.html(\"\");\n this.DOM.header.append(\"p\").html(url(\"Report a problem\", \"https://github.com/Gapminder/tools-page/issues\"));\n this.DOM.header.append(\"p\").html(\"This chart is made with Vizabi, <br/> a project by \" + url(author.name, author.url));\n }\n drawBody(){\n const vizabiModulesData = [\n this.root.constructor.versionInfo || {},\n this.root.constructor.versionInfo?.sharedComponents || {},\n this.services.Vizabi.Vizabi.versionInfo || {}\n ];\n const readerData = this.services.Vizabi.Vizabi.stores.dataSources.getAll().map(dataSource => {\n return {\n name: dataSource.config.name,\n service: dataSource.config.service,\n type: dataSource.config.modelType\n };\n });\n this.DOM.body.html(\"\");\n this.DOM.body.append(\"div\").append(\"p\").append(\"h1\").html(\"Components:\");\n this.DOM.body.append(\"div\").selectAll(\"p\")\n .data(vizabiModulesData)\n .enter().append(\"p\")\n .html(d => url(d.package?.description || d.package?.name, d.package?.homepage) + `<br/> - Version: ${formatVersion(d.version)} <br/> - Build ${formatBuild(d.build)}`);\n this.DOM.body.append(\"div\").append(\"p\").append(\"h1\").html(\"Data sources:\");\n this.DOM.body.append(\"div\").selectAll(\"p\")\n .data(readerData)\n .enter().append(\"p\")\n .html(d => url(d.type + \" \" + d.name, d.service));\n }\n drawFooter(){\n const contributors = this.root.constructor.versionInfo?.sharedComponents?.package?.contributors || [];\n this.DOM.footer.html(\"\");\n this.DOM.footer.append(\"p\").append(\"h1\").html(`Contributors:`);\n this.DOM.footer.append(\"p\").selectAll(\"span\")\n .data(contributors)\n .enter().append(\"span\")\n .html(d => url(d.name, d.url));\n }\n }\n decorated$8.add(\"about\", About);\n\n /*!\n * VIZABI SHOW PANEL CONTROL\n * Reusable show panel dialog\n */\n class Show extends BaseComponent {\n constructor(config) {\n config.template = `\n <div class=\"vzb-show-list vzb-accordion\">\n <!-- list will be placed here -->\n </div>\n `;\n super(config);\n }\n setup() {\n this.DOM = {};\n this.DOM.list = this.element.select(\".vzb-show-list\");\n this.DOM.input_search = this.parent.element.select(\".vzb-find-search\");\n this.DOM.deselect_all = this.parent.element.select(\".vzb-show-deselect\");\n this.DOM.apply = this.parent.element.select(\".vzb-show-apply\");\n this.DOM.deselect_all.on(\"click\", () => {\n this._resetShow();\n });\n this.DOM.apply.on(\"click\", () => {\n this._applyShowChanges();\n });\n this.tabsConfig = this.ui.showTabs || {};\n }\n draw() {\n this.MDL = {\n selected: this.model.encoding.selected,\n frame: this.model.encoding.frame\n };\n this.localise = this.services.locale.auto();\n this.previewShow = {};\n const dimensionFilter = this.model.data.filter.dimensions;\n if (!this.resetFilter) this.resetFilter = deepClone(dimensionFilter);\n forEach(this.model.data.space, dim => {\n if (dimensionFilter[dim]) {\n this.previewShow[dim] = deepExtend({}, dimensionFilter[dim]);\n forEach(dimensionFilter[dim].$and || [dimensionFilter[dim]], filter$and => {\n forEach(filter$and, (filter, key) => {\n this.previewShow[dim][key] = (filter.$in || []).slice(0);\n });\n });\n }\n });\n this.checkedDifference = {};\n this.addReaction(this._updateView);\n }\n _updateView() {\n const _this = this;\n if (this.parent._getPanelMode() !== \"show\") return;\n function addCategory(catalog, dim) {\n if (catalog.entities) {\n const filterSpec = _this.model.encoding.show?.data.filter.dimensions[dim];\n categories.push({\n dim,\n key: catalog.concept.concept,\n entities: catalog.entities.filter(filterSpec),\n name: catalog.concept.name\n });\n }\n if (catalog.properties) {\n Object.keys(catalog.properties).forEach(property => {\n addCategory(catalog.properties[property], dim);\n });\n }\n }\n const categories = [];\n this.model.data.spaceCatalog.then(spaceCatalog => {\n Object.keys(spaceCatalog).forEach(dim => {\n addCategory(spaceCatalog[dim], dim);\n });\n this.buildList(categories);\n });\n }\n buildList(categories) {\n const _this = this;\n this.DOM.list.html(\"\");\n forEach(categories, ({ dim, key, name, entities }) => {\n const isSet = dim !== key;\n entities = [...entities.values()]\n .map(d => Object.assign(d, {\n isShown: this._isMarkerInDimFilter(d, dim, key)\n }))\n .sort((a, b) => (a.name < b.name) ? -1 : 1);\n const section = this.DOM.list.append(\"div\")\n .attr(\"class\", \"vzb-accordion-section\")\n .classed(\"vzb-accordion-active\", this.tabsConfig[key] === \"open\")\n .datum({ key, isSet });\n section.append(\"div\")\n .attr(\"class\", \"vzb-accordion-section-title\")\n .on(\"click\", function() {\n const parentEl = d3__namespace.select(this.parentNode);\n parentEl.classed(\"vzb-fullexpand\", false)\n .classed(\"vzb-accordion-active\", !parentEl.classed(\"vzb-accordion-active\"));\n })\n .call(elem => elem.append(\"span\")\n .attr(\"class\", \"vzb-show-category\")\n .classed(\"vzb-show-category-set\", d => d.isSet)\n .text(name)\n .attr(\"title\", function() {\n return this.offsetWidth < this.scrollWidth ? name : null;\n })\n )\n .call(elem => elem.append(\"span\")\n .attr(\"class\", \"vzb-show-clear-cross\")\n .text(\"✖\")\n .on(\"click\", (event) => {\n event.stopPropagation();\n section.selectAll(\".vzb-checked input\")\n .property(\"checked\", false)\n .dispatch(\"change\");\n })\n )\n .call(elem => elem.append(\"span\")\n .attr(\"class\", \"vzb-show-more vzb-dialog-button\")\n .text(_this.localise(\"buttons/moreellipsis\"))\n .on(\"click\", (event) => {\n event.stopPropagation();\n section.classed(\"vzb-fullexpand\", true);\n })\n );\n const list = section.append(\"div\")\n .attr(\"class\", \"vzb-show-category-list\");\n const items = list.selectAll(\".vzb-show-item\")\n .data(entities)\n .enter()\n .append(\"div\")\n .attr(\"class\", \"vzb-show-item vzb-dialog-checkbox\")\n .classed(\"vzb-checked\", d => d.isShown);\n items.append(\"input\")\n .attr(\"type\", \"checkbox\")\n .attr(\"class\", \"vzb-show-item\")\n .attr(\"id\", d => \"-show-\" + key + \"-\" + d[key] + \"-\" + _this.id)\n .property(\"checked\", d => d.isShown)\n .on(\"change\", (event, d) => {\n if (d.isShown !== event.currentTarget.checked) {\n this.checkedDifference[key + d[key]] = true;\n } else {\n delete this.checkedDifference[key + d[key]];\n }\n this.DOM.apply.classed(\"vzb-disabled\", !Object.keys(this.checkedDifference).length);\n if (!this.previewShow[dim]) {\n this.previewShow[dim] = {};\n }\n if (!this.previewShow[dim][key]) {\n this.previewShow[dim][key] = [];\n }\n const index = this.previewShow[dim][key].indexOf(d[key]);\n index === -1 ? this.previewShow[dim][key].push(d[key]) : this.previewShow[dim][key].splice(index, 1);\n });\n items.append(\"label\")\n .attr(\"for\", d => \"-show-\" + key + \"-\" + d[key] + \"-\" + _this.id)\n .text(d => d.name)\n .attr(\"title\", function(d) {\n return this.offsetWidth < this.scrollWidth ? d.name : null;\n });\n const lastCheckedNode = list.selectAll(\".vzb-checked\")\n .classed(\"vzb-separator\", false)\n .lower()\n .nodes()[0];\n if (lastCheckedNode && lastCheckedNode.nextSibling) {\n const offsetTop = lastCheckedNode.parentNode.offsetTop + lastCheckedNode.offsetTop;\n d3__namespace.select(lastCheckedNode.parentNode.parentNode).style(\"max-height\", (offsetTop + lastCheckedNode.offsetHeight + 25) + \"px\")\n .select(\".vzb-show-more\").style(\"transform\", `translate(0, ${offsetTop}px)`);\n } else {\n section.select(\".vzb-show-more\").classed(\"vzb-hidden\", true);\n }\n section.classed(\"vzb-filtered\", !!lastCheckedNode);\n section.classed(\"vzb-fullexpand\", !!lastCheckedNode && this.tabsConfig[key] === \"open fully\");\n });\n }\n _showHideSearch() {\n if (this.parent._getPanelMode() !== \"show\") return;\n let search = this.DOM.input_search.node().value || \"\";\n search = search.toLowerCase();\n this.DOM.list.selectAll(\".vzb-show-item\")\n .classed(\"vzb-hidden\", d => {\n const lower = (d.name || \"\").toString().toLowerCase();\n return (lower.indexOf(search) === -1);\n });\n if (search !== \"\") {\n this.DOM.list.selectAll(\".vzb-accordion-section\")\n .classed(\"vzb-accordion-active\", true);\n }\n }\n _showHideButtons() {\n if (this.parent._getPanelMode() !== \"show\") return;\n this.DOM.deselect_all.classed(\"vzb-hidden\", this._hideResetButton());\n this.DOM.apply.classed(\"vzb-hidden\", false)\n .classed(\"vzb-disabled\", true);\n }\n _hideResetButton() {\n let showEquals = true;\n const space = this.model.data.space;\n forEach(space, key => {\n showEquals = comparePlainObjects(this.resetFilter[key] || {}, this.model.data.filter.dimensions[key] || {});\n return showEquals;\n });\n return showEquals;\n }\n _applyShowChanges() {\n mobx.runInAction(() => {\n this.MDL.selected.data.filter.delete([...this.MDL.selected.data.filter.markers]);\n const setObj = {};\n forEach(this.previewShow, (showObj, entities) => {\n const $and = {};\n const $andKeys = [];\n forEach(showObj, (entitiesArray, category) => {\n $andKeys.push(category);\n if (entitiesArray.length) {\n $and[category] = { $in: entitiesArray.slice(0) };\n }\n });\n forEach(this.model.data.filter.dimensions[entities], (filter, key) => {\n if (!$andKeys.includes(key)) {\n $and[key] = deepClone(filter);\n }\n });\n setObj[entities] = $and;\n });\n this.model.data.filter.config.dimensions = setObj;\n });\n }\n _resetShow() {\n mobx.runInAction(() => {\n this.model.data.filter.config.dimensions = this.resetFilter;\n });\n }\n _closeClick() {\n this._applyShowChanges();\n }\n _isMarkerInDimFilter(d, dim, key) {\n const dimensionFilter = this.model.data.filter.dimensions[dim] || {};\n return getProp(dimensionFilter, [key, \"$in\"], []).includes(d[key]);\n }\n }\n\n /*!\n * VIZABI FIND CONTROL\n * Reusable find dialog\n */\n class Find extends decorated$8 {\n constructor(config) {\n config.template = `\n <div class='vzb-dialog-modal'>\n <span class=\"thumb-tack-class thumb-tack-class-ico-pin fa\" data-dialogtype=\"find\" data-click=\"pinDialog\"></span>\n <span class=\"thumb-tack-class thumb-tack-class-ico-drag fa\" data-dialogtype=\"find\" data-click=\"dragDialog\"></span>\n <div class=\"vzb-dialog-title\">\n <label class=\"vzb-dialog-title-switch\">\n <input type=\"checkbox\">\n <span class=\"vzb-switch-slider round\"></span>\n <span class=\"vzb-switch-off\">\n <span data-localise=\"dialogs/find\"></span>\n </span>\n <span class=\"vzb-switch-on\">\n <span data-localise=\"buttons/show\"></span>\n </span>\n </label>\n\n <span class=\"vzb-dialog-content vzb-find-filter\">\n <form novalidate>\n <input class=\"vzb-find-search\" type=\"search\" required/>\n <button class=\"vzb-cancel-button\" type=\"reset\"></button>\n </form>\n </span>\n\n <span class=\"vzb-spaceconfig-button\"></span>\n </div>\n\n <div class=\"vzb-dialog-content vzb-dialog-content-fixed vzb-dialog-scrollable\">\n <div class=\"vzb-dialog-content vzb-dialog-scrollable vzb-dialog-panel vzb-dialog-panel-find vzb-active\">\n <div class=\"vzb-find-list\">\n <!-- list will be placed here -->\n </div>\n </div>\n\n <div class=\"vzb-dialog-content vzb-dialog-scrollable vzb-dialog-panel vzb-dialog-panel-show\">\n </div>\n </div>\n\n <div class=\"vzb-dialog-buttons\">\n <div class=\"vzb-dialog-bubbleopacity vzb-dialog-control\" data-panel=\"find\"></div>\n <div class=\"vzb-dialog-button vzb-find-deselect\" data-panel=\"find\">\n <span data-localise=\"buttons/deselect\"></span>\n </div>\n <div class=\"vzb-dialog-button vzb-show-deselect\" data-panel=\"show\">\n <span data-localise=\"buttons/reset\"></span>\n </div>\n <div class=\"vzb-dialog-button vzb-show-apply\" data-panel=\"show\">\n <span data-localise=\"buttons/apply\"></span>\n </div>\n\n <div data-dialogtype=\"find\" data-click=\"closeDialog\" class=\"vzb-dialog-button vzb-label-primary\">\n <span data-localise=\"buttons/ok\"></span>\n </div>\n </div> \n\n </div> \n `;\n config.subcomponents = [{\n type: Show,\n placeholder: \".vzb-dialog-panel-show\"\n }, {\n type: SingleHandleSlider,\n placeholder: \".vzb-dialog-bubbleopacity\",\n options: {\n value: \"opacitySelectDim\",\n submodel: \"root.ui.chart\"\n }\n }];\n super(config);\n }\n setup(options) {\n super.setup(options);\n this.DOM.findList = this.element.select(\".vzb-find-list\");\n this.DOM.titleSwitch = this.element.select(\".vzb-dialog-title-switch\");\n this.DOM.titleSwitchSlider = this.DOM.titleSwitch.select(\".vzb-switch-slider\");\n this.DOM.titleSwitchInput = this.DOM.titleSwitch.select(\"input\");\n this.DOM.panels = this.DOM.content.selectAll(\".vzb-dialog-content\");\n this.DOM.panelFind = this.DOM.content.select(\".vzb-dialog-panel-find\");\n this.DOM.input_search = this.element.select(\".vzb-find-search\");\n this.DOM.deselect_all = this.element.select(\".vzb-find-deselect\");\n this.DOM.markerSpaceButton = this.element.select(\".vzb-spaceconfig-button\");\n this.DOM.opacity_nonselected = this.element.select(\".vzb-dialog-bubbleopacity\");\n this.DOM.titleSwitchInput.on(\"change\", () => {\n this.ui.panelMode = this.DOM.titleSwitchInput.property(\"checked\") ? \"show\" : \"find\";\n }).property(\"checked\", this._getPanelMode() !== \"find\");\n this.DOM.input_search.on(\"keyup\", event => {\n if (event.keyCode == 13 && this.DOM.input_search.node().value == \"select all\") {\n this.DOM.input_search.node().value = \"\";\n }\n });\n this.DOM.input_search.on(\"input\", () => {\n this.panelComps[this._getPanelMode()]._showHideSearch();\n });\n d3__namespace.select(this.DOM.input_search.node().parentNode)\n .on(\"reset\", () => {\n defer(() => this.panelComps[this._getPanelMode()]._showHideSearch());\n })\n .on(\"submit\", event => {\n event.preventDefault();\n return false;\n });\n this.DOM.deselect_all.on(\"click\", () => {\n this.MDL.selected.data.filter.clear();\n });\n const closeButton = this.DOM.buttons.select(\".vzb-dialog-button[data-click='closeDialog']\");\n closeButton.on(\"click.panel\", () => this.panelComps[this._getPanelMode()]._closeClick());\n this.panelComps = { find: this, show: this.findChild({ type: \"Show\" }) };\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 };\n }\n draw() {\n super.draw();\n this.TIMEDIM = this.MDL.frame.data.concept;\n this.KEY = Symbol.for(\"key\");\n this.KEYS = this.model.data.space.filter(dim => dim !== this.TIMEDIM);\n this.DOM.input_search.attr(\"placeholder\", this.localise(\"placeholder/search\") + \"...\");\n this.addReaction(this._enablePanelModeSwitch);\n this.addReaction(this._enableMarkerSpaceOptions);\n this.addReaction(this._changePanelMode);\n this.addReaction(this._createFindList);\n this.addReaction(this._updateBrokenData);\n this.addReaction(this._selectDataPoints);\n }\n _changePanelMode() {\n const panelMode = this._getPanelMode();\n this.DOM.panels.classed(\"vzb-active\", false);\n this.DOM.content.select(\".vzb-dialog-panel-\" + panelMode).classed(\"vzb-active\", true);\n this.panelComps[panelMode]._showHideSearch();\n this._buttonAdjust();\n this.panelComps[panelMode]._showHideButtons();\n }\n _getPanelMode() {\n return this.ui.panelMode;\n }\n _enablePanelModeSwitch() {\n this.DOM.titleSwitchSlider.classed(\"vzb-hidden\", !this.ui.enableSelectShowSwitch);\n this.DOM.titleSwitch.style(\"pointer-events\", this.ui.enableSelectShowSwitch ? \"auto\" : \"none\");\n }\n _enableMarkerSpaceOptions() {\n this.DOM.markerSpaceButton.classed(\"vzb-hidden\", !this.ui.enableMarkerSpaceOptions);\n }\n _buttonAdjust() {\n this.DOM.buttons.selectAll(\".vzb-dialog-buttons > :not([data-dialogtype])\").classed(\"vzb-hidden\", true);\n this.DOM.buttons.selectAll(`[data-panel=${this._getPanelMode()}]`).classed(\"vzb-hidden\", false);\n }\n _processFramesData() {\n const KEY = this.KEY;\n const data = new Map();\n this.model.getTransformedDataMap(\"filterRequired\").each(frame => frame.forEach((valuesObj, key) => {\n if (!data.has(key)) data.set(key, {\n [KEY]: key,\n name: this._getCompoundLabelText(valuesObj)\n });\n }));\n return data;\n }\n _createFindList() {\n const findList = this.DOM.findList;\n const KEY = this.KEY;\n const data = [...this._processFramesData().values()];\n data.sort((a, b) => (a.name < b.name) ? -1 : 1);\n this.DOM.findListItems = findList.text(\"\").selectAll(\"div\")\n .data(data, function(d) { return d[KEY]; })\n .join(\"div\")\n .attr(\"class\", \"vzb-find-item vzb-dialog-checkbox\")\n .call(this._createListItem.bind(this));\n }\n _createListItem(listItem) {\n listItem.append(\"input\")\n .attr(\"type\", \"checkbox\")\n .attr(\"class\", \"vzb-find-item\")\n .attr(\"id\", (d, i) => \"-find-\" + i + \"-\" + this.id)\n .on(\"change\", (event, d) => {\n if (!isTouchDevice()) this.MDL.highlighted.data.filter.delete(d);\n this.MDL.selected.data.filter.toggle(d);\n this.DOM.panelFind.node().scrollTop = 0;\n if (!isTouchDevice() && !d.brokenData) this.MDL.highlighted.data.filter.set(d);\n });\n listItem.append(\"label\")\n .attr(\"for\", (d, i) => \"-find-\" + i + \"-\" + this.id)\n .text(d => d.name)\n .on(\"mouseover\", (event, d) => {\n if (!isTouchDevice() && !d.brokenData) this.MDL.highlighted.data.filter.set(d);\n })\n .on(\"mouseout\", (event, d) => {\n if (!isTouchDevice()) this.MDL.highlighted.data.filter.delete(d);\n });\n }\n _getCompoundLabelText(d) {\n if (typeof d.label == \"object\") {\n return Object.entries(d.label)\n .filter(entry => entry[0] != this.MDL.frame.data.concept)\n .map(entry => isNumber(entry[1]) ? (entry[0] + \": \" + entry[1]) : entry[1])\n .join(\", \");\n }\n if (d.label != null) return \"\" + d.label;\n return d[Symbol.for(\"key\")];\n }\n _updateBrokenData() {\n const currentDataMap = this.model.dataMap;\n const findListItems = this.DOM.findListItems;\n const KEY = this.KEY;\n findListItems.data().forEach(d => {\n d.brokenData = !currentDataMap.hasByStr(d[KEY]);\n });\n this._updateLabelTitle();\n }\n _updateLabelTitle() {\n const noDataSubstr = this.localise(this.MDL.frame.value) + \": \" + this.localise(\"hints/nodata\");\n this.DOM.findListItems.select(\"label\")\n .classed(\"vzb-find-item-brokendata\", d => d.brokenData)\n .attr(\"title\", d => d.nameIfEllipsis + (d.brokenData ? (d.nameIfEllipsis ? \" | \" : \"\") + noDataSubstr : \"\"));\n }\n _updateView() {\n }\n _selectDataPoints() {\n const selected = this.MDL.selected.data.filter;\n this.DOM.findListItems.order().select(\"input\")\n .property(\"checked\", function(d) {\n const isSelected = selected.has(d);\n d3__namespace.select(this.parentNode).classed(\"vzb-checked\", isSelected);\n return isSelected;\n });\n const checkedItems = this.DOM.findList.selectAll(\".vzb-checked\");\n checkedItems\n .lower()\n .classed(\"vzb-separator\", (d, i) => !i);\n }\n _showHideSearch() {\n if (this._getPanelMode() !== \"find\") return;\n let search = this.DOM.input_search.node().value || \"\";\n search = search.toLowerCase();\n this.DOM.findList.selectAll(\".vzb-find-item\")\n .classed(\"vzb-hidden\", d => {\n const lower = (d.name || \"\").toString().toLowerCase();\n return (lower.indexOf(search) === -1);\n });\n }\n _showHideButtons() {\n if (this._getPanelMode() !== \"find\") return;\n const someSelected = this.MDL.selected.data.filter.any();\n this.DOM.deselect_all.classed(\"vzb-hidden\", !someSelected);\n this.DOM.opacity_nonselected.classed(\"vzb-hidden\", !someSelected);\n if (someSelected) {\n mobx.runInAction(() => {\n const opacityNonSelectedSlider = this.findChild({ type: \"SingleHandleSlider\" });\n opacityNonSelectedSlider._updateSize();\n opacityNonSelectedSlider._updateView();\n });\n }\n }\n _closeClick() {}\n }\n Find.DEFAULT_UI = {\n enableSelectShowSwitch: false,\n enableMarkerSpaceOptions: false,\n panelMode: \"find\",\n enablePicker: false\n };\n const decorated$2 = mobx.decorate(Find, {\n \"MDL\": mobx.computed\n });\n decorated$8.add(\"find\", decorated$2);\n\n class Axes extends decorated$8 {\n constructor(config) {\n config.template = `\n <div class='vzb-dialog-modal'>\n <span class=\"thumb-tack-class thumb-tack-class-ico-pin fa\" data-dialogtype=\"axes\" data-click=\"pinDialog\"></span>\n <span class=\"thumb-tack-class thumb-tack-class-ico-drag fa\" data-dialogtype=\"axes\" data-click=\"dragDialog\"></span>\n <div class=\"vzb-dialog-title\">\n <span data-localise=\"buttons/axes\"></span>\n </div>\n <div class=\"vzb-dialog-content\">\n <p class=\"vzb-dialog-sublabel\">\n <span data-localise=\"buttons/x\"></span>\n <span class=\"vzb-xaxis-selector\"></span>\n </p>\n <div class=\"vzb-xaxis-minmax vzb-dialog-paragraph\"></div>\n <p class=\"vzb-dialog-sublabel\">\n <span data-localise=\"buttons/y\"></span>\n <span class=\"vzb-yaxis-selector\"></span>\n </p>\n <div class=\"vzb-yaxis-minmax vzb-dialog-paragraph\"></div>\n </div>\n <div class=\"vzb-dialog-buttons\">\n <div data-click=\"closeDialog\" class=\"vzb-dialog-button vzb-label-primary\">\n <span data-localise=\"buttons/ok\"></span>\n </div>\n </div>\n </div> \n `;\n config.subcomponents = [{\n type: IndicatorPicker,\n placeholder: \".vzb-xaxis-selector\",\n options: {\n submodel: \"encoding\",\n targetProp: \"x\"\n }\n },{\n type: decorated$6,\n placeholder: \".vzb-xaxis-minmax\",\n state: {\n submodel: \"encoding.x.scale\"\n }\n },{\n type: IndicatorPicker,\n placeholder: \".vzb-yaxis-selector\",\n options: {\n submodel: \"encoding\",\n targetProp: \"y\"\n }\n },{\n type: decorated$6,\n placeholder: \".vzb-yaxis-minmax\",\n state: {\n submodel: \"encoding.y.scale\"\n }\n }];\n super(config);\n }\n }\n decorated$8.add(\"axes\", Axes);\n\n /*!\n * VIZABI BUBBLE SIZE slider\n * Reusable bubble size slider\n */\n const OPTIONS = {\n propertyName: \"LabelTextSize\",\n PROFILE_CONSTANTS: {\n SMALL: {\n minLabelTextSize: 7,\n maxLabelTextSize: 21,\n defaultLabelTextSize: 12\n },\n MEDIUM: {\n minLabelTextSize: 7,\n maxLabelTextSize: 30,\n defaultLabelTextSize: 15\n },\n LARGE: {\n minLabelTextSize: 6,\n maxLabelTextSize: 48,\n defaultLabelTextSize: 20\n }\n }\n };\n class SizeSlider extends decorated$a {\n setup(_options) {\n const options = deepExtend(deepExtend({}, OPTIONS), _options || {});\n super.setup(options);\n const barWidth = this.options.BAR_WIDTH;\n this.DOM.sliderLabelsWrapper = this.DOM.slider.append(\"g\");\n this.DOM.sliderLabelsWrapper.selectAll(\"text\").data([0, 0]).enter()\n .append(\"text\")\n .attr(\"class\", (d, i) => \"vzb-szs-slider-thumb-label \" + (i ? \"e\" : \"w\"))\n .attr(\"dy\", (-barWidth * 1.25) + \"px\");\n this.DOM.sliderLabels = this.DOM.slider.selectAll(\"text.vzb-szs-slider-thumb-label\");\n this.propertyScale = d3__namespace.scaleLinear()\n .domain([this.options.EXTENT_MIN, this.options.EXTENT_MAX])\n .clamp(true);\n }\n draw() {\n super.draw();\n if (this.MDL.model.data.isConstant) {\n this.DOM.slider.selectAll(\".w\").classed(\"vzb-hidden\", true);\n this.DOM.slider.select(\".selection\").classed(\"vzb-hidden\", true);\n this.DOM.slider.select(\".overlay\").classed(\"vzb-pointerevents-none\", true);\n } else {\n this.DOM.slider.selectAll(\".w\").classed(\"vzb-hidden\", false);\n this.DOM.slider.select(\".selection\").classed(\"vzb-hidden\", false);\n this.DOM.slider.select(\".overlay\").classed(\"vzb-pointerevents-none\", false);\n }\n this.addReaction(this._setLabelsText);\n }\n _updateThumbs(extent) {\n this._updateLabels(extent);\n }\n _updateLabels(s) {\n if (s) { this.DOM.sliderLabels.data(s); }\n this.DOM.sliderLabels\n .attr(\"transform\", (d, i) => {\n const dX = this.rescaler(i);\n const dY = 0;\n return \"translate(\" + ((this.services.locale.isRTL() ? -1 : 1) * dX) + \",\" + (dY) + \")\";\n })\n .attr(\"font-size\", (d) => this.propertyScale(d));\n if (this.MDL.model.data.isConstant)\n this.DOM.sliderLabels.text(d => ~~(this.propertyScale(d)) + (this.localise(this.options.constantUnit) || \"\"));\n }\n _setLabelsText() {\n const domain = this.MDL.model.domain;\n const texts = [domain[0], domain[domain.length - 1]].map(this.localise);\n if (this.MDL.model.data.isConstant) return;\n this.DOM.sliderLabels.text((d, i) => texts[i]);\n }\n _getMinMaxDefaultPropertyValues() {\n const propertyName = this.options.propertyName;\n return {\n min: this.profileConstants[\"min\" + propertyName],\n max: this.profileConstants[\"max\" + propertyName],\n default: this.profileConstants[\"default\" + propertyName],\n };\n }\n _updateSize() {\n const propertyValues = this._getMinMaxDefaultPropertyValues();\n this.padding.top = propertyValues.max + this.options.BAR_WIDTH * 1.25;\n this.propertyScale.range([propertyValues.min, propertyValues.max]);\n super._updateSize();\n const isRTL = this.services.locale.isRTL();\n this.DOM.sliderLabelsWrapper\n .attr(\"transform\", isRTL ? \"scale(-1,1)\" : null);\n this.DOM.sliderLabels\n .attr(\"text-anchor\", (d, i) => (isRTL ? i : !i) ? \"start\" : \"end\");\n }\n _valueToExtent(value) {\n if (this.MDL.model.data.isConstant && value[1] === null) {\n return super._valueToExtent([value[0], this.propertyScale.invert(this._getMinMaxDefaultPropertyValues().default)]);\n }\n return super._valueToExtent(value);\n }\n }\n\n class Speed extends decorated$8 {\n constructor(config) {\n config.template = `\n <div class='vzb-dialog-modal'>\n <div class=\"vzb-dialog-title\"> \n <span data-localise=\"buttons/time\"></span>\n </div>\n \n <div class=\"vzb-dialog-content\">\n <p class=\"vzb-dialog-sublabel\">\n <span data-localise=\"hints/speed\"></span>\n </p>\n \n <form class=\"vzb-dialog-paragraph\">\n <div class=\"vzb-speed-slider\"></div>\n </form>\n \n <p class=\"vzb-dialog-sublabel\">\n <span data-localise=\"hints/forecastoptions\"></span>\n </p>\n\n <form class=\"vzb-dialog-paragraph\">\n <div class=\"vzb-showforecast-switch\"></div>\n <div class=\"vzb-pausebeforeforecast-switch\"></div>\n <div class=\"vzb-showstripedpatternwhenforecast-switch\"></div>\n <div>\n <span data-localise=\"hints/endbeforeforecast\"></span>\n <input type=\"text\" class=\"vzb-endbeforeforecast-field\" name=\"endbeforeforecast\"/>\n </div>\n <div>\n <span class=\"vzb-timeformatexample-hint\" data-localise=\"hints/timeformatexample\"></span>\n <span class=\"vzb-timeformatexample-label\"></span>\n </div>\n </form>\n\n <p class=\"vzb-dialog-sublabel\">\n <span data-localise=\"hints/sparsedata\"></span>\n </p>\n\n <form class=\"vzb-dialog-paragraph\">\n <span class=\"vzb-extrapolate-hint\"></span>\n <div class=\"vzb-extrapolate-slider\"></div>\n </form>\n </div>\n </div> \n `;\n config.subcomponents = [{\n type: SingleHandleSlider,\n placeholder: \".vzb-speed-slider\",\n options: {\n value: \"speed\",\n setValueFunc: \"setSpeed\",\n domain: [1200, 900, 450, 200, 150, 100],\n ROUND_DIGITS: 0,\n submodel: \"model.encoding.frame\"\n }\n },{\n type: SimpleCheckbox,\n placeholder: \".vzb-showforecast-switch\",\n options: {\n checkbox: \"showForecast\",\n submodel: \"root.ui.chart\"\n }\n },{\n type: SimpleCheckbox,\n placeholder: \".vzb-pausebeforeforecast-switch\",\n options: {\n checkbox: \"pauseBeforeForecast\",\n submodel: \"root.ui.chart\",\n }\n },{\n type: SimpleCheckbox,\n placeholder: \".vzb-showstripedpatternwhenforecast-switch\",\n options: {\n checkbox: \"showForecastOverlay\",\n submodel: \"root.ui.chart\"\n }\n },{\n type: SingleHandleSlider,\n placeholder: \".vzb-extrapolate-slider\",\n name: \"extrapolate-slider\",\n options: {\n value: \"extrapolate\",\n setValueFunc: \"setExtrapolate\",\n domain: d3__namespace.range(100),\n ROUND_DIGITS: 0,\n submodel: \"model.encoding.frame\"\n }\n }];\n super(config);\n }\n setup() {\n this.DOM = {\n timeFormatExample: this.element.select(\".vzb-timeformatexample-label\"),\n forecastField: this.element.select(\".vzb-endbeforeforecast-field\"),\n extrapolateHint: this.element.select(\".vzb-extrapolate-hint\")\n };\n const _this = this;\n this.DOM.forecastField\n .on(\"keypress\", function(event) {\n if (event.charCode == 13 || event.keyCode == 13) {\n event.preventDefault();\n this.blur();\n }\n })\n .on(\"change\", function() {\n const frame = _this.MDL.frame;\n const parsed = frame.parseValue(this.value);\n if (isDate(parsed)) {\n _this.root.ui.chart.endBeforeForecast = this.value;\n }\n });\n }\n get MDL() {\n return {\n frame: this.model.encoding.frame\n };\n }\n draw() {\n this.localise = this.services.locale.auto();\n this.addReaction(this.updateForecastField);\n this.addReaction(this.updateExtrapolateSlider);\n }\n updateForecastField() {\n this.DOM.forecastField.property(\"value\",\n this.localise(this.root.ui.chart.endBeforeForecast)\n );\n this.DOM.timeFormatExample.text(this.localise(new Date()));\n }\n updateExtrapolateSlider(){\n const sliderSize = this.MDL.frame.stepCount <= 2 ? 2 : this.MDL.frame.stepCount;\n this.findChild({name: \"extrapolate-slider\"})\n ._setDomain(d3__namespace.range(sliderSize));\n const hintText = this.MDL.frame.extrapolate ?\n this.localise(\"hints/extendDataNSteps\").replace(\"{n}\", this.MDL.frame.extrapolate)\n : this.localise(\"hints/dontExtendData\");\n this.DOM.extrapolateHint\n .text(hintText)\n .attr(\"title\", this.localise(\"hints/extrapolation\"));\n }\n }\n const decorated$1 = mobx.decorate(Speed, {\n \"MDL\": mobx.computed\n });\n decorated$8.add(\"speed\", decorated$1);\n\n class Repeat extends decorated$8 {\n constructor(config) {\n config.template = `\n <div class='vzb-dialog-modal'>\n <span class=\"thumb-tack-class thumb-tack-class-ico-pin fa\" data-dialogtype=\"colors\" data-click=\"pinDialog\"></span>\n <span class=\"thumb-tack-class thumb-tack-class-ico-drag fa\" data-dialogtype=\"colors\" data-click=\"dragDialog\"></span>\n\n <div class=\"vzb-dialog-title\"> \n <span data-localise=\"buttons/repeat\"></span>\n </div>\n\n <div class=\"vzb-dialog-content\">\n <div class=\"vzb-repeat-header\">\n <div class=\"vzb-useConnectedRowsAndColumns-switch\"></div>\n </div>\n <div class=\"vzb-repeat-body\">\n <div class=\"vzb-repeat-grid\"></div>\n </div>\n </div>\n \n <div class=\"vzb-dialog-buttons\">\n <div data-click=\"closeDialog\" class=\"vzb-dialog-button vzb-label-primary\">\n <span data-localise=\"buttons/ok\"></span>\n </div>\n </div>\n </div>\n `;\n config.subcomponents = [{\n type: SimpleCheckbox,\n placeholder: \".vzb-useConnectedRowsAndColumns-switch\",\n options: {\n checkbox: \"useConnectedRowsAndColumns\",\n submodelFunc: () => this.MDL.repeat,\n setCheckboxFunc: (value) => this.MDL.repeat.config.useConnectedRowsAndColumns = value\n }\n }];\n super(config);\n }\n setup(options) {\n super.setup(options);\n this.DOM.header = this.element.select(\".vzb-repeat-header\");\n this.DOM.body = this.element.select(\".vzb-repeat-body\");\n this.DOM.grid = this.element.select(\".vzb-repeat-grid\");\n }\n get MDL(){\n return {\n repeat: this.model.encoding.repeat\n };\n }\n draw(){\n super.draw();\n this.addReaction(this.drawHeader);\n this.addReaction(this.drawBody);\n }\n drawHeader(){\n const header = this.DOM.header;\n const localise = this.services.locale.auto();\n const {allowEnc, row, column, useConnectedRowsAndColumns} = this.MDL.repeat;\n header.selectAll(\"p\").remove();\n header.insert(\"p\", \"div\")\n .attr(\"class\", \"vzb-dialog-sublabel\")\n .html(localise(\"hint/repeat/addremovecharts\"));\n header.select(\".vzb-useConnectedRowsAndColumns-switch\")\n .classed(\"vzb-hidden\", !(row && row.length && column && column.length && allowEnc.length === 2));\n if (useConnectedRowsAndColumns) {\n header.append(\"p\")\n .html(allowEnc[0] + \" \" + localise(\"hint/repeat/issharedacrossrows\"));\n header.append(\"p\")\n .html(allowEnc[1] + \" \" + localise(\"hint/repeat/issharedacroscolumns\"));\n }\n }\n drawBody(){\n const {rowcolumn, ncolumns, nrows} = this.MDL.repeat;\n const repeat = this.MDL.repeat;\n const localise = this.services.locale.auto();\n this.DOM.grid\n .style(\"grid-template-rows\", \"1fr \".repeat(nrows) + \"30px\")\n .style(\"grid-template-columns\", \"1fr \".repeat(ncolumns) + \"30px\");\n this.DOM.grid.selectAll(\"div\").remove();\n this.DOM.grid.selectAll(\"div\")\n .data(rowcolumn, d => repeat.getName(d))\n .enter().append(\"div\")\n .attr(\"class\", \"vzb-repeat-segment\")\n .attr(\"title\", d => JSON.stringify(d, null, 1))\n .style(\"grid-row-start\", (_, i) => repeat.getRowIndex(i) + 1)\n .style(\"grid-column-start\", (_, i) => repeat.getColumnIndex(i) + 1)\n .html(() => ncolumns == 1 && nrows == 1 ? localise(\"hint/repeat/pressplus\") : \"\")\n .on(\"mouseover\", (event, d) => {\n this.root.element.select(\".vzb-\" + repeat.getName(d))\n .classed(\"vzb-chart-highlight\", true);\n })\n .on(\"mouseout\", (event, d) => {\n this.root.element.select(\".vzb-\" + repeat.getName(d))\n .classed(\"vzb-chart-highlight\", false);\n });\n if (ncolumns > 1) {\n this.DOM.grid.selectAll(\"div.vzb-repeat-removecolumn\")\n .data(d3__namespace.range(ncolumns))\n .enter().append(\"div\")\n .attr(\"class\", \"vzb-repeat-removecolumn\")\n .html(\"✖︎\")\n .style(\"grid-column-start\", (_, i) => i + 1)\n .on(\"click\", (_, i) => {\n this._remove(\"column\", i);\n this._clearHoverClasses(rowcolumn);\n })\n .on(\"mouseover\", (_, i) => {\n rowcolumn.forEach((d, index) => {\n if (index % ncolumns == i)\n this.root.element.select(\".vzb-\" + repeat.getName(d))\n .classed(\"vzb-chart-removepreview\", true);\n });\n })\n .on(\"mouseout\", () => {\n this._clearHoverClasses(rowcolumn, \"vzb-chart-removepreview\");\n });\n }\n if (nrows > 1) {\n this.DOM.grid.selectAll(\"div.vzb-repeat-removerow\")\n .data(d3__namespace.range(nrows))\n .enter().append(\"div\")\n .attr(\"class\", \"vzb-repeat-removerow\")\n .html(\"✖︎\")\n .style(\"grid-row-start\", (_, i) => i + 1)\n .on(\"click\", (_, i) => {\n this._remove(\"row\", i);\n this._clearHoverClasses(rowcolumn);\n })\n .on(\"mouseover\", (_, i) => {\n rowcolumn.forEach((d, index) => {\n if (Math.floor(index / ncolumns) == i)\n this.root.element.select(\".vzb-\" + repeat.getName(d))\n .classed(\"vzb-chart-removepreview\", true);\n });\n })\n .on(\"mouseout\", () => {\n this._clearHoverClasses(rowcolumn, \"vzb-chart-removepreview\");\n });\n }\n this.DOM.grid.append(\"div\")\n .attr(\"class\", \"vzb-repeat-addcolumn\")\n .html(\"✚\")\n .style(\"grid-row-start\", 1)\n .style(\"grid-row-end\", nrows + 1)\n .style(\"grid-column-start\", ncolumns + 1)\n .on(\"click\", () => {\n this._createNew(\"column\");\n this._clearHoverClasses(rowcolumn);\n })\n .on(\"mouseover\", () => {\n rowcolumn.forEach((d, i) => {\n if ((i + 1) % ncolumns == 0)\n this.root.element.select(\".vzb-\" + repeat.getName(d))\n .classed(\"vzb-chart-addrightpreview\", true);\n });\n })\n .on(\"mouseout\", () => {\n this._clearHoverClasses(rowcolumn, \"vzb-chart-addrightpreview\");\n });\n this.DOM.grid.append(\"div\")\n .attr(\"class\", \"vzb-repeat-addrow\")\n .html(\"✚\")\n .style(\"grid-row-start\", nrows + 1)\n .style(\"grid-column-start\", 1)\n .style(\"grid-column-end\", ncolumns + 1)\n .on(\"click\", () => {\n this._createNew(\"row\");\n this._clearHoverClasses(rowcolumn);\n })\n .on(\"mouseover\", () => {\n rowcolumn.forEach((d, i) => {\n if (Math.floor(i / ncolumns) + 1 == nrows)\n this.root.element.select(\".vzb-\" + repeat.getName(d))\n .classed(\"vzb-chart-addbelowpreview\", true);\n });\n })\n .on(\"mouseout\", () => {\n this._clearHoverClasses(rowcolumn, \"vzb-chart-addbelowpreview\");\n });\n }\n _clearHoverClasses(array, cssclass){\n array.forEach(d => {\n const selection = this.root.element.select(\".vzb-\" + this.MDL.repeat.getName(d));\n if(!cssclass || cssclass == \"vzb-chart-highlight\")\n selection.classed(\"vzb-chart-highlight\", false);\n if(!cssclass || cssclass == \"vzb-chart-removepreview\")\n selection.classed(\"vzb-chart-removepreview\", false);\n if(!cssclass || cssclass == \"vzb-chart-addbelowpreview\")\n selection.classed(\"vzb-chart-addbelowpreview\", false);\n if(!cssclass || cssclass == \"vzb-chart-addrightpreview\")\n selection.classed(\"vzb-chart-addrightpreview\", false);\n });\n }\n _remove(direction, index){\n if(direction !== \"row\" && direction !== \"column\") return console.error(\"incorrect use of function _remove in repeat dialog\");\n const {ncolumns, nrows, useConnectedRowsAndColumns} = this.MDL.repeat;\n mobx.runInAction(() => {\n if(useConnectedRowsAndColumns) {\n this.MDL.repeat.config[direction].splice(index, 1);\n } else {\n if(direction == \"column\"){\n for (let i = 1; i <= nrows; i++) {\n this.MDL.repeat.config.rowcolumn.splice(i * index, 1);\n }\n this.MDL.repeat.config.ncolumns = ncolumns - 1;\n }\n if (direction == \"row\") {\n this.MDL.repeat.config.rowcolumn.splice(ncolumns * index, ncolumns);\n }\n }\n });\n }\n _createNew(direction){\n if(direction !== \"row\" && direction !== \"column\") return console.error(\"incorrect use of function _createNew in repeat dialog\");\n const {ncolumns, nrows, allowEnc, useConnectedRowsAndColumns} = this.MDL.repeat;\n mobx.runInAction(() => {\n if(useConnectedRowsAndColumns) {\n const newEncName = this._generateEncodingNames(direction);\n this.model.config.encoding[newEncName] = {data: this._getConceptAndSourceAndSpaceOfLast(direction)};\n this.MDL.repeat.config[direction].push(newEncName);\n } else {\n this.MDL.repeat.config.rowcolumn = this.MDL.repeat.rowcolumn;\n if(direction == \"column\"){\n for (let i = 1; i <= nrows; i++) {\n const newEncNames = this._generateEncodingNames();\n allowEnc.forEach(e => {\n this.model.config.encoding[newEncNames[e]] = {data: this._getConceptAndSourceAndSpaceOfLast(e)};\n });\n this.MDL.repeat.config.rowcolumn.splice(i * ncolumns, 0, newEncNames);\n }\n this.MDL.repeat.config.ncolumns = ncolumns + 1;\n }\n if (direction == \"row\") {\n for (let i = 1; i <= ncolumns; i++) {\n const newEncNames = this._generateEncodingNames();\n allowEnc.forEach(e => {\n this.model.config.encoding[newEncNames[e]] = {data: this._getConceptAndSourceAndSpaceOfLast(e)};\n });\n this.MDL.repeat.config.rowcolumn.push(newEncNames);\n }\n }\n }\n });\n }\n _getConceptAndSourceAndSpaceOfLast(arg){\n const {rowcolumn, allowEnc} = this.MDL.repeat;\n let alias = arg;\n if(arg == \"row\")\n alias = allowEnc[0];\n if(arg == \"column\")\n alias = allowEnc[1];\n return rowcolumn\n .map(d => this.model.encoding[d[alias]]?.data)\n .filter(f => f?.concept)\n .map(d => Object.assign({ concept: d.concept }, d.config.source ? { source: d.config.source } : {}, d.config.space ? { space: d.config.space.slice(0) } : {}))\n .at(-1) || { concept: \"population_total\" };\n }\n _generateEncodingNames(direction){\n const {allowEnc} = this.MDL.repeat;\n if(direction == \"row\")\n return this._generateEncodingName(allowEnc[0]);\n if(direction == \"column\")\n return this._generateEncodingName(allowEnc[1]);\n return allowEnc.reduce((obj, alias) => {\n obj[alias] = this._generateEncodingName(alias);\n return obj;\n }, {});\n }\n _generateEncodingName(alias){\n const {rowcolumn} = this.MDL.repeat;\n const prefix = alias;\n return prefix + (d3__namespace.max(rowcolumn.map(d => +d[alias].replace(prefix,\"\") || 0)) + 1);\n }\n }\n const decorated = mobx.decorate(Repeat, {\n \"MDL\": mobx.computed\n });\n decorated$8.add(\"repeat\", decorated);\n\n class OptionsButtonList extends ButtonList {\n setup() {\n super.setup();\n Object.keys(this._available_buttons).forEach(buttonId => {\n const button = this._available_buttons[buttonId];\n button.required = !button.required;\n });\n }\n draw() {\n super.draw();\n const buttonList = this.root.findChild({ name: \"buttons\" });\n buttonList.element.on(\"custom-togglebuttons\", (event) => {\n const { hiddenButtons } = event.detail;\n this.element.selectAll(\".vzb-buttonlist-btn\")\n .style(\"display\", d => hiddenButtons.indexOf(d.id) == -1 ? \"none\" : \"\");\n });\n }\n _toggleButtons() {\n }\n }\n\n class Presentation extends decorated$8 {\n constructor(config) {\n config.template = `\n <div class='vzb-dialog-modal'>\n <div class=\"vzb-dialog-title\"> \n <span data-localise=\"dialogs/presentation\"></span>\n </div>\n\n <div class=\"vzb-dialog-content\">\n <div class=\"vzb-presentationmode-switch\"></div>\n <div class=\"vzb-decorations-switch\"></div>\n <div class=\"vzb-time-background-switch\"></div>\n <div class=\"vzb-time-trails-switch\"></div>\n <div class=\"vzb-format-si-prefix-switch\"></div>\n </div>\n\n </div>\n `;\n config.subcomponents = [{\n type: SimpleCheckbox,\n placeholder: \".vzb-presentationmode-switch\",\n options: {\n checkbox: \"projector\",\n submodel: \"services.layout\"\n }\n }, {\n type: SimpleCheckbox,\n placeholder: \".vzb-decorations-switch\",\n options: {\n checkbox: \"enabled\",\n prefix: \"decorations\",\n submodel: \"root.ui.chart.decorations\"\n }\n }, {\n type: SimpleCheckbox,\n placeholder: \".vzb-time-background-switch\",\n options: {\n checkbox: \"timeInBackground\",\n submodel: \"root.ui.chart\"\n }\n }, {\n type: SimpleCheckbox,\n placeholder: \".vzb-time-trails-switch\",\n options: {\n checkbox: \"timeInTrails\",\n submodel: \"root.ui.chart\"\n }\n }, {\n type: SimpleCheckbox,\n placeholder: \".vzb-format-si-prefix-switch\",\n options: {\n checkbox: \"numberFormatSIPrefix\",\n submodel: \"root.ui.chart\"\n }\n }];\n super(config);\n }\n }\n decorated$8.add(\"presentation\", Presentation);\n\n class MoreOptions extends decorated$8 {\n constructor(config) {\n const { moreoptions = [], popup = []} = config.parent.ui.dialogs;\n const templateArray = [];\n const subcomponents = [{\n type: OptionsButtonList,\n placeholder: \".vzb-dialog-options-buttonlist\",\n }];\n const dialogList = moreoptions === true ? popup : moreoptions;\n dialogList.forEach(dlg => {\n subcomponents.push({\n type: decorated$8.get(dlg),\n placeholder: '.vzb-dialogs-dialog[data-dlg=\"' + dlg + '\"]',\n model: config.model,\n name: dlg,\n });\n templateArray.push(\n `<div data-dlg=\"${dlg}\" class=\"vzb-dialogs-dialog vzb-moreoptions vzb-accordion-section\"></div>`\n );\n });\n config.subcomponents = subcomponents;\n config.template = `\n <div class='vzb-dialog-modal'>\n <span class=\"thumb-tack-class thumb-tack-class-ico-pin fa\" data-dialogtype=\"moreoptions\" data-click=\"pinDialog\"></span>\n <span class=\"thumb-tack-class thumb-tack-class-ico-drag fa\" data-dialogtype=\"moreoptions\" data-click=\"dragDialog\"></span>\n\n <div class=\"vzb-dialog-title\">\n <span></span>\n </div>\n\n <div class=\"vzb-dialog-content vzb-dialog-scrollable\">\n <div class='vzb-dialog-options-buttonlist'>\n </div>\n <div class=\"vzb-accordion\">\n ${templateArray.join(\"\\n\")}\n </div>\n </div>\n\n <div class=\"vzb-dialog-buttons\">\n <div data-click=\"closeDialog\" class=\"vzb-dialog-button vzb-label-primary\">\n <span></span>\n </div>\n </div>\n\n </div>\n `;\n super(config);\n }\n setup(options) {\n super.setup(options);\n this.element.on(\"custom-dragend\", () => {\n this._setMaxHeight();\n });\n const _this = this;\n this.DOM.accordion = this.DOM.content.select(\".vzb-accordion\");\n if (this.DOM.accordion) {\n const sections = this.DOM.accordion.selectAll(\".vzb-accordion-section\");\n sections.data(this.children.slice(1).map(c => ({\n name: c.name\n })));\n const titleEl = sections\n .select(\".vzb-dialog-title>span:first-child\");\n titleEl.on(\"click\", (event, d) => {\n const sectionEl = _this.findChild({ name: d.name }).element;\n const activeEl = _this.DOM.accordion.select(\".vzb-accordion-active\");\n if (activeEl) {\n activeEl.classed(\"vzb-accordion-active\", false);\n }\n if (sectionEl.node() !== activeEl.node()) {\n sectionEl.classed(\"vzb-accordion-active\", true);\n _this.transitionEvents.forEach(event => {\n sectionEl.on(event, () => {\n _this.transitionEvents.forEach(event => {\n sectionEl.on(event, null);\n });\n });\n });\n }\n });\n }\n }\n draw() {\n super.draw();\n this.DOM.title.select(\"span\").text(this.localise(\"buttons/more_options\"));\n this.DOM.buttons.select(\"span\").text(this.localise(\"buttons/ok\"));\n }\n }\n decorated$8.add(\"moreoptions\", MoreOptions);\n\n class Technical extends decorated$8 {\n constructor(config) {\n config.template = `\n <div class='vzb-dialog-modal'>\n <div class=\"vzb-dialog-title\"> \n <span data-localise=\"dialogs/technical\"></span>\n </div>\n\n <div class=\"vzb-dialog-content\">\n <div class=\"vzb-advancedshowandselect-switch\"></div>\n <div class=\"vzb-advancedmarkerspace-switch\"></div>\n <div class=\"vzb-showdatasources-switch\"></div>\n </div>\n\n </div>\n `;\n config.subcomponents = [{\n type: SimpleCheckbox,\n placeholder: \".vzb-advancedshowandselect-switch\",\n options: {\n checkbox: \"enableSelectShowSwitch\",\n submodelFunc: () => this.root\n .findChild({name: \"dialogs\"})\n .findChild({name: \"find\"}).ui\n }\n },{\n type: SimpleCheckbox,\n placeholder: \".vzb-advancedmarkerspace-switch\",\n options: {\n checkbox: \"enableMarkerSpaceOptions\",\n submodelFunc: () => this.root\n .findChild({name: \"dialogs\"})\n .findChild({name: \"find\"}).ui\n }\n },{\n type: SimpleCheckbox,\n placeholder: \".vzb-showdatasources-switch\",\n options: {\n checkbox: \"showDataSources\",\n submodelFunc: () => this.root\n .findChild({name: \"tree-menu\"}).ui\n }\n }];\n super(config);\n }\n }\n decorated$8.add(\"technical\", Technical);\n\n class Zoom extends decorated$8 {\n constructor(config) {\n config.template = `\n <div class='vzb-dialog-modal'>\n <span class=\"thumb-tack-class thumb-tack-class-ico-pin fa\" data-dialogtype=\"label\" data-click=\"pinDialog\"></span>\n <span class=\"thumb-tack-class thumb-tack-class-ico-drag fa\" data-dialogtype=\"label\" data-click=\"dragDialog\"></span>\n <div class=\"vzb-dialog-title\"> \n <span></span>\n <div class=\"vzb-dialog-zoom-buttonlist\"></div>\n </div>\n \n \n <div class=\"vzb-dialog-content\">\n <div class=\"vzb-panwitharrow-switch\"></div>\n <div class=\"vzb-zoomonscrolling-switch\"></div>\n <div class=\"vzb-adaptminmaxzoom-switch\"></div>\n </div>\n \n <div class=\"vzb-dialog-buttons\">\n <div data-click=\"closeDialog\" class=\"vzb-dialog-button vzb-label-primary\">\n <span><span/>\n </div>\n </div>\n \n </div> \n `;\n config.subcomponents = [{\n type: ZoomButtonList,\n placeholder: \".vzb-dialog-zoom-buttonlist\"\n },{\n type: SimpleCheckbox,\n placeholder: \".vzb-panwitharrow-switch\",\n options: {\n checkbox: \"panWithArrow\",\n submodel: \"root.ui.chart\"\n }\n },{\n type: SimpleCheckbox,\n placeholder: \".vzb-zoomonscrolling-switch\",\n options: {\n checkbox: \"zoomOnScrolling\",\n submodel: \"root.ui.chart\"\n }\n },{\n type: SimpleCheckbox,\n placeholder: \".vzb-adaptminmaxzoom-switch\",\n options: {\n checkbox: \"adaptMinMaxZoom\",\n submodel: \"root.ui.chart\"\n }\n }];\n super(config);\n }\n draw() {\n super.draw();\n this.DOM.title.select(\"span\").text(this.localise(\"buttons/zoom\"));\n this.DOM.buttons.select(\"span\").text(this.localise(\"buttons/ok\"));\n }\n }\n decorated$8.add(\"zoom\", Zoom);\n\n class Size extends decorated$8 {\n constructor(config) {\n config.template = `\n <div class='vzb-dialog-modal'>\n <span class=\"thumb-tack-class thumb-tack-class-ico-pin fa\" data-dialogtype=\"size\" data-click=\"pinDialog\"></span>\n <span class=\"thumb-tack-class thumb-tack-class-ico-drag fa\" data-dialogtype=\"size\" data-click=\"dragDialog\"></span>\n <div class=\"vzb-dialog-title\"> \n <span data-localise=\"buttons/size\"></span>\n <span class=\"vzb-saxis-selector\"></span>\n </div>\n <div class=\"vzb-dialog-content\">\n <div class=\"vzb-dialog-bubblesize\"></div>\n <span class=\"vzb-dialog-subtitle\"></span>\n </div>\n <div class=\"vzb-dialog-buttons\">\n <div data-click=\"closeDialog\" class=\"vzb-dialog-button vzb-label-primary\">\n <span data-localise=\"buttons/ok\"></span>\n </div>\n </div>\n </div> \n `;\n config.subcomponents = [{\n type: IndicatorPicker,\n placeholder: \".vzb-saxis-selector\",\n options: {\n submodel: \"encoding\",\n targetProp: \"size\",\n showHoverValues: true\n }\n },{\n type: BubbleSize,\n placeholder: \".vzb-dialog-bubblesize\",\n options: {\n showArcs: true,\n submodelFunc: () => this.model.encoding.size.scale,\n }\n }];\n super(config);\n }\n draw() {\n super.draw();\n this.addReaction(this._updateSubtitle);\n }\n _updateSubtitle() {\n const conceptProps = this.model.encoding.size.data.conceptProps;\n const subtitle = getSubtitle(conceptProps.name, conceptProps.name_short);\n this.element.select(\".vzb-dialog-subtitle\").text(subtitle);\n }\n }\n decorated$8.add(\"size\", Size);\n\n /*!\n * VIZABI COLOR DIALOG\n */\n class Colors extends decorated$8 {\n constructor(config) {\n config.template = `\n <div class='vzb-dialog-modal'>\n <span class=\"thumb-tack-class thumb-tack-class-ico-pin fa\" data-dialogtype=\"colors\" data-click=\"pinDialog\"></span>\n <span class=\"thumb-tack-class thumb-tack-class-ico-drag fa\" data-dialogtype=\"colors\" data-click=\"dragDialog\"></span>\n \n <div class=\"vzb-dialog-title\">\n <span data-localise=\"buttons/colors\"></span>\n <span class=\"vzb-caxis-selector\"></span>\n </div>\n \n <div class=\"vzb-dialog-content vzb-dialog-scrollable\">\n <div class=\"vzb-clegend-container\">\n <svg>\n <g class=\"vzb-timedisplay\"></g>\n </svg>\n </div>\n </div>\n\n <div class=\"vzb-dialog-buttons\">\n <div data-click=\"closeDialog\" class=\"vzb-dialog-button vzb-label-primary\">\n <span data-localise=\"buttons/ok\"></span>\n </div>\n </div>\n\n </div>\n `;\n config.subcomponents = [{\n type: IndicatorPicker,\n placeholder: \".vzb-caxis-selector\",\n options: {\n submodel: \"encoding\",\n targetProp: \"color\",\n showHoverValues: true\n },\n state: {\n get hoverKeyLabels() {\n const legendMarker = config.root.model.markers?.[config.root.options?.markerNames?.legend || \"legend\"];\n if (!legendMarker) return null;\n if (legendMarker.state === STATUS.READY) {\n const labelKey = legendMarker.data.space[0];\n return legendMarker.dataArray.reduce((labels, data) => {\n labels[data[labelKey]] = data.name;\n return labels;\n }, {});\n }\n return null;\n }\n }\n }, {\n type: decorated$7,\n placeholder: \".vzb-clegend-container\",\n options: {\n colorModelName: \"color\",\n legendModelName: config.root.options?.markerNames?.legend || \"legend\"\n }\n }];\n super(config);\n }\n }\n decorated$8.add(\"colors\", Colors);\n\n class Opacity extends decorated$8 {\n constructor(config) {\n config.template = `\n <div class='vzb-dialog-modal'>\n <div class=\"vzb-dialog-title\"> \n <span data-localise=\"buttons/opacity\"></span>\n </div>\n \n <div class=\"vzb-dialog-content\">\n <p class=\"vzb-dialog-sublabel\">\n <span data-localise=\"buttons/opacityRegular\"></span>\n </p>\n <div class=\"vzb-dialog-bubbleopacity-regular\"></div>\n\n <p class=\"vzb-dialog-sublabel\">\n <span data-localise=\"buttons/opacityNonselect\"></span>\n </p>\n <div class=\"vzb-dialog-bubbleopacity-selectdim\"></div>\n </div>\n </div>\n\n </div>\n `;\n config.subcomponents = [{\n type: SingleHandleSlider,\n placeholder: \".vzb-dialog-bubbleopacity-regular\",\n options: {\n value: \"opacityRegular\",\n submodel: \"root.ui.chart\"\n }\n },{\n type: SingleHandleSlider,\n placeholder: \".vzb-dialog-bubbleopacity-selectdim\",\n options: {\n value: \"opacitySelectDim\",\n submodel: \"root.ui.chart\"\n }\n }];\n super(config);\n }\n }\n decorated$8.add(\"opacity\", Opacity);\n\n class Label extends decorated$8 {\n constructor(config) {\n config.template = `\n <div class='vzb-dialog-modal'>\n <span class=\"thumb-tack-class thumb-tack-class-ico-pin fa\" data-dialogtype=\"label\" data-click=\"pinDialog\"></span>\n <span class=\"thumb-tack-class thumb-tack-class-ico-drag fa\" data-dialogtype=\"label\" data-click=\"dragDialog\"></span>\n <div class=\"vzb-dialog-title\"> \n <span data-localise=\"buttons/label\"></span>\n </div>\n\n <div class=\"vzb-dialog-content\">\n <span class=\"vzb-saxis-selector\"></span>\n <div class=\"vzb-dialog-sizeslider\"></div>\n <div class=\"vzb-removelabelbox-switch\"></div>\n </div>\n\n <div class=\"vzb-dialog-buttons\">\n <div data-click=\"closeDialog\" class=\"vzb-dialog-button vzb-label-primary\">\n <span data-localise=\"buttons/ok\"></span>\n </div>\n </div>\n\n </div>\n `;\n config.subcomponents = [{\n type: SizeSlider,\n placeholder: \".vzb-dialog-sizeslider\",\n options: {\n constantUnit: \"unit/pixels\",\n submodelFunc: () => this.model.encoding.size_label.scale,\n }\n }, {\n type: IndicatorPicker,\n placeholder: \".vzb-saxis-selector\",\n options: {\n submodel: \"encoding\",\n targetProp: \"size_label\",\n }\n }, {\n type: SimpleCheckbox,\n placeholder: \".vzb-removelabelbox-switch\",\n options: {\n checkbox: \"removeLabelBox\",\n submodel: \"root.ui.chart.labels\"\n }\n }];\n super(config);\n }\n }\n decorated$8.add(\"label\", Label);\n\n class TimeDisplay extends decorated$8 {\n constructor(config) {\n config.template = `\n <div class=\"vzb-dialog-modal\">\n <div class=\"vzb-dialog-title\"></div>\n <div class=\"vzb-dialog-content vzb-dialog-content-fixed\"></div>\n <div class=\"vzb-dialog-buttons\"></div>\n </div>`;\n config.subcomponents = [{\n type: decorated$9,\n placeholder: \".vzb-dialog-content\"\n }];\n super(config);\n }\n }\n decorated$8.add(\"timedisplay\", TimeDisplay);\n\n exports.About = About;\n exports.AddGeo = AddGeo;\n exports.Axes = Axes;\n exports.BaseComponent = BaseComponent;\n exports.BaseService = BaseService;\n exports.BrushSlider = decorated$a;\n exports.BubbleSize = BubbleSize;\n exports.Button = Button;\n exports.ButtonList = ButtonList;\n exports.CapitalVizabiService = CapitalVizabiService;\n exports.Chart = Chart;\n exports.ColorLegend = decorated$7;\n exports.Colors = Colors;\n exports.DataNotes = DataNotes;\n exports.DataWarning = DataWarning;\n exports.DateTimeBackground = decorated$9;\n exports.DeepLeaf = DeepLeaf;\n exports.Dialog = decorated$8;\n exports.Dialogs = Dialogs;\n exports.ErrorMessage = ErrorMessage;\n exports.Facet = Facet;\n exports.Find = decorated$2;\n exports.Icons = Icons;\n exports.IndicatorPicker = IndicatorPicker;\n exports.Label = Label;\n exports.Labels = decorated$3;\n exports.LayoutService = LayoutService;\n exports.LegacyUtils = LegacyUtils;\n exports.LocaleService = LocaleService;\n exports.Menu = Menu;\n exports.MinMaxInputs = decorated$6;\n exports.MoreOptions = MoreOptions;\n exports.Opacity = Opacity;\n exports.OptionsButtonList = OptionsButtonList;\n exports.PlayButton = PlayButton;\n exports.Presentation = Presentation;\n exports.Repeat = decorated;\n exports.Repeater = Repeater;\n exports.Show = Show;\n exports.SimpleCheckbox = SimpleCheckbox;\n exports.SingleHandleSlider = SingleHandleSlider;\n exports.Size = Size;\n exports.SizeSlider = SizeSlider;\n exports.SpaceConfig = SpaceConfig;\n exports.Speed = decorated$1;\n exports.SteppedSlider = decorated$4;\n exports.Technical = Technical;\n exports.TextEllipsis = TextEllipsis;\n exports.TimeDisplay = TimeDisplay;\n exports.TimeSlider = decorated$5;\n exports.TreeMenu = TreeMenu;\n exports.Utils = Utils;\n exports.Zoom = Zoom;\n exports.ZoomButtonList = ZoomButtonList;\n exports._AddGeo = _AddGeo;\n exports.axisSmart = axisSmart;\n exports.collisionResolver = collisionResolver;\n exports.updateRainbowLegend = updateRainbowLegend;\n exports.versionInfo = versionInfo;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n}));\n//# sourceMappingURL=VizabiSharedComponents.js.map\n","import {\n LegacyUtils as utils,\n} from \"@vizabi/shared-components\";\nimport {\n select as d3_select,\n extent as d3_extent,\n drag as d3_drag,\n zoom as d3_zoom,\n pointer as d3_pointer,\n zoomIdentity as d3_zoomIdentity,\n zoomTransform as d3_zoomTransform\n} from \"d3\";\nexport default class PanZoom {\n\n constructor(context) {\n this.context = context;\n\n this.dragRectangle = d3_drag();\n this.zoomer = d3_zoom();\n\n // this.dragLock = false;\n\n this.dragRectangle\n .filter(event => !event.button)\n .subject(this.dragSubject())\n .on(\"start\", this.drag().start)\n .on(\"drag\", this.drag().go)\n .on(\"end\", this.drag().stop);\n\n this.zoomer\n .filter(this.zoomFilter())\n .scaleExtent([0.0625, +Infinity])\n .on(\"start\", this.zoom().start)\n .on(\"zoom\", this.zoom().go)\n .on(\"end\", this.zoom().stop);\n\n this.zoomer.ratioX = 1;\n this.zoomer.ratioY = 1;\n\n this.context._zoomedXYMinMax = {\n x: { zoomedMin: null, zoomedMax: null },\n y: { zoomedMin: null, zoomedMax: null }\n };\n }\n\n dragSubject() {\n const _this = this.context;\n\n return function(event) {\n /*\n * Do not drag if the Ctrl key, Meta key, or plus cursor mode is\n * not enabled. Also do not drag if zoom-pinching on touchmove\n * events.\n */\n if (!(event.sourceEvent.ctrlKey || event.sourceEvent.metaKey ||\n _this.ui.cursorMode === \"plus\") || (_this.ui.cursorMode === \"minus\") ||\n (event.sourceEvent.type === \"touchmove\" || event.sourceEvent.type === \"touchstart\") &&\n (event.sourceEvent.touches.length > 1 || event.sourceEvent.targetTouches.length > 1)) {\n return null;\n }\n\n return {\n x: d3_pointer(event, this)[0],\n y: d3_pointer(event, this)[1]\n };\n };\n }\n\n drag() {\n const _this = this.context;\n const self = this;\n\n return {\n start(event) {\n /*\n * Do not drag if the Ctrl key, Meta key, or plus cursor mode is\n * not enabled. Also do not drag if zoom-pinching on touchmove\n * events.\n */\n // if(!(event.sourceEvent.ctrlKey || event.sourceEvent.metaKey ||\n // _this.ui.cursorMode === \"plus\") ||\n // (event.sourceEvent.type === \"touchmove\" || event.sourceEvent.type === \"touchstart\") &&\n // (event.sourceEvent.touches.length > 1 || event.sourceEvent.targetTouches.length > 1)) {\n // return;\n // }\n\n // self.dragLock = true;\n this.origin = {\n x: d3_pointer(event, this)[0],\n y: d3_pointer(event, this)[1]\n };\n _this.DOM.zoomRect.classed(\"vzb-invisible\", false);\n },\n\n go(event) {\n const origin = this.origin;\n const mouse = {\n x: event.x,\n y: event.y\n };\n\n _this.DOM.zoomRect\n .attr(\"x\", Math.min(mouse.x, origin.x))\n .attr(\"y\", Math.min(mouse.y, origin.y))\n .attr(\"width\", Math.abs(mouse.x - origin.x))\n .attr(\"height\", Math.abs(mouse.y - origin.y));\n },\n\n stop(event) {\n // if (!self.dragLock) return;\n // self.dragLock = false;\n\n _this.DOM.zoomRect\n .attr(\"width\", 0)\n .attr(\"height\", 0)\n .classed(\"vzb-invisible\", true);\n\n this.target = {\n x: d3_pointer(event, this)[0],\n y: d3_pointer(event, this)[1]\n };\n if (Math.abs(this.origin.x - this.target.x) < 10 || Math.abs(this.origin.y - this.target.y) < 10) return;\n\n /*\n * Only compensate for dragging when the Ctrl key or Meta key\n * are pressed, or if the cursorMode is not in plus mode.\n */\n const compensateDragging = event.sourceEvent.ctrlKey ||\n event.sourceEvent.metaKey ||\n _this.ui.cursorMode === \"plus\";\n\n self._zoomOnRectangle(\n d3_select(this),\n this.origin.x,\n this.origin.y,\n this.target.x,\n this.target.y,\n compensateDragging, 500\n );\n }\n };\n }\n\n zoomFilter() {\n const _this = this.context;\n\n return function(event) {\n\n if (event.ctrlKey || event.metaKey) return false;\n\n // Cancel drag lock when zoom-pinching via touchmove events.\n if ((event.type === \"touchmove\" || event.type === \"touchstart\") &&\n (event.touches.length > 1 || event.targetTouches.length > 1)) return true;\n\n if ((event.type === \"wheel\" || event.type === \"mousewheel\") &&\n _this.ui.zoomOnScrolling) {\n // if (_this.scrollableAncestor) {\n // _this.scrollableAncestor.scrollTop -= (event.deltaY || -event.wheelDelta);\n // }\n // event.scale = null;\n //zoomer.scale(this.savedScale);\n return true;\n }\n\n if ((event.type === \"mousedown\" || event.type === \"touchstart\") &&\n (_this.ui.cursorMode !== \"plus\") && (_this.ui.cursorMode !== \"minus\") &&\n (_this.ui.panWithArrow || _this.ui.cursorMode === \"hand\")) return true;\n\n return false;\n };\n }\n\n zoom() {\n const _this = this.context;\n const zoomer = this.zoomer;\n const self = this;\n\n return {\n start() {\n //this.savedScale = zoomer.scale;\n if ((_this.ui.cursorMode !== \"plus\") && (_this.ui.cursorMode !== \"minus\")) {\n _this.DOM.chartSvg.classed(\"vzb-zooming\", true);\n }\n\n },\n go(event) {\n\n const sourceEvent = event.sourceEvent;\n\n let zoom = event.transform.k;\n\n let pan = [event.transform.x, event.transform.y];//event.translate;\n let ratioY = zoomer.ratioY;\n let ratioX = zoomer.ratioX;\n\n _this.draggingNow = true;\n\n //value protections and fallbacks\n if (isNaN(zoom) || zoom == null) zoom = zoomer.scale;\n if (isNaN(zoom) || zoom == null) zoom = 1;\n\n //TODO: this is a patch to fix #221. A proper code review of zoom and zoomOnRectangle logic is needed\n /*\n * Mouse wheel and touchmove events set the zoom value\n * independently of axis ratios. If the zoom event was triggered\n * by a mouse wheel event scrolling down or touchmove event with\n * more than 1 contact that sets zoom to 1, then set the axis\n * ratios to 1 as well, which will fully zoom out.\n */\n if (zoom === 1 && sourceEvent !== null &&\n ((sourceEvent.type === \"wheel\" || sourceEvent.type === \"mousewheel\") && (sourceEvent.deltaY || -sourceEvent.wheelDelta) > 0 ||\n sourceEvent.type === \"touchmove\" && sourceEvent.touches.length > 1)) {\n zoomer.ratioX = 1;\n ratioX = 1;\n zoomer.ratioY = 1;\n ratioY = 1;\n }\n\n if (isNaN(pan[0]) || isNaN(pan[1]) || pan[0] == null || pan[1] == null) pan = [0, 0];\n\n // limit the zooming, so that it never goes below min value of zoom for any of the axes\n const minZoomScale = zoomer.scaleExtent()[0];\n if (zoom * ratioY < minZoomScale) {\n ratioY = minZoomScale / zoom;\n zoomer.ratioY = ratioY;\n }\n if (zoom * ratioX < minZoomScale) {\n ratioX = minZoomScale / zoom;\n zoomer.ratioX = ratioX;\n }\n\n const zoomXOut = zoom * ratioX < 1;\n const zoomYOut = zoom * ratioY < 1;\n\n //limit the panning, so that we are never outside the possible range\n if (!zoomXOut) {\n if (pan[0] > 0) pan[0] = 0;\n if (pan[0] < (1 - zoom * ratioX) * _this.width) pan[0] = (1 - zoom * ratioX) * _this.width;\n } else {\n if (pan[0] < 0) pan[0] = 0;\n if (pan[0] > (1 - zoom * ratioX) * _this.width) pan[0] = (1 - zoom * ratioX) * _this.width;\n }\n\n if (!zoomYOut) {\n if (pan[1] > 0) pan[1] = 0;\n if (pan[1] < (1 - zoom * ratioY) * _this.height) pan[1] = (1 - zoom * ratioY) * _this.height;\n } else {\n if (pan[1] < 0) pan[1] = 0;\n if (pan[1] > (1 - zoom * ratioY) * _this.height) pan[1] = (1 - zoom * ratioY) * _this.height;\n }\n\n //limit zoom translate\n self.zoomSelection.property(\"__zoom\", d3_zoomIdentity.translate(pan[0], pan[1]).scale(zoom));\n\n const xPanOffset = _this.width * zoom * ratioX;\n const yPanOffset = _this.height * zoom * ratioY;\n\n const xRange = [0 * zoom * ratioX + pan[0], xPanOffset + pan[0]];\n const yRange = [yPanOffset + pan[1], 0 * zoom * ratioY + pan[1]];\n\n const xRangeBumped = _this._rangeBump(xRange);\n const yRangeBumped = _this._rangeBump(yRange);\n\n /*\n * Shift xRange and yRange by the difference between the bumped\n * ranges, which is scaled by the zoom factor. This accounts for\n * the range bump, which controls a gutter around the\n * bubblechart, while correctly zooming.\n */\n const xRangeMinOffset = (xRangeBumped[0] - xRange[0]) * zoom * ratioX;\n const xRangeMaxOffset = (xRangeBumped[1] - xRange[1]) * zoom * ratioX;\n\n const yRangeMinOffset = (yRangeBumped[0] - yRange[0]) * zoom * ratioY;\n const yRangeMaxOffset = (yRangeBumped[1] - yRange[1]) * zoom * ratioY;\n\n xRange[0] += xRangeMinOffset;\n xRange[1] += xRangeMaxOffset;\n\n yRange[0] += yRangeMinOffset;\n yRange[1] += yRangeMaxOffset;\n\n // Calculate the maximum xRange and yRange available.\n const xRangeBounds = [0, _this.width];\n const yRangeBounds = [_this.height, 0];\n\n const xRangeBoundsBumped = _this._rangeBump(xRangeBounds);\n const yRangeBoundsBumped = _this._rangeBump(yRangeBounds);\n\n /*\n * Set the pan to account for the range bump by subtracting\n * offsets and preventing panning past the range bump gutter.\n */\n if (!zoomXOut) {\n if (xRange[0] > xRangeBoundsBumped[0]) pan[0] = xRangeBoundsBumped[0] - xRangeMinOffset;\n if (xRange[1] < xRangeBoundsBumped[1]) pan[0] = xRangeBoundsBumped[1] - xRangeMaxOffset - xPanOffset;\n } else {\n if (xRange[0] < xRangeBoundsBumped[0]) pan[0] = xRangeBoundsBumped[0] - xRangeMinOffset;\n if (xRange[1] > xRangeBoundsBumped[1]) pan[0] = xRangeBoundsBumped[1] - xRangeMaxOffset - xPanOffset;\n }\n\n if (!zoomYOut) {\n if (yRange[0] < yRangeBoundsBumped[0]) pan[1] = yRangeBoundsBumped[0] - yRangeMinOffset - yPanOffset;\n if (yRange[1] > yRangeBoundsBumped[1]) pan[1] = yRangeBoundsBumped[1] - yRangeMaxOffset;\n } else {\n if (yRange[0] > yRangeBoundsBumped[0]) pan[1] = yRangeBoundsBumped[0] - yRangeMinOffset - yPanOffset;\n if (yRange[1] < yRangeBoundsBumped[1]) pan[1] = yRangeBoundsBumped[1] - yRangeMaxOffset;\n }\n\n //zoomer.translate = pan;\n //self.zoomSelection.property(\"__zoom\", d3_zoomIdentity.translate(pan[0], pan[1]).scale(zoom));\n\n /*\n * Clamp the xRange and yRange by the amount that the bounds\n * that are range bumped.\n *\n * Additionally, take the amount clamped on the end of the range\n * and either subtract or add it to the range's other end. This\n * prevents visible stretching of the range when only panning.\n */\n if (!zoomXOut) {\n if (xRange[0] > xRangeBoundsBumped[0]) {\n xRange[1] -= Math.abs(xRange[0] - xRangeBoundsBumped[0]);\n xRange[0] = xRangeBoundsBumped[0];\n }\n\n if (xRange[1] < xRangeBoundsBumped[1]) {\n xRange[0] += Math.abs(xRange[1] - xRangeBoundsBumped[1]);\n xRange[1] = xRangeBoundsBumped[1];\n }\n } else {\n if (xRange[0] < xRangeBoundsBumped[0]) {\n xRange[1] += Math.abs(xRange[0] - xRangeBoundsBumped[0]);\n xRange[0] = xRangeBoundsBumped[0];\n }\n\n if (xRange[1] > xRangeBoundsBumped[1]) {\n xRange[0] -= Math.abs(xRange[1] - xRangeBoundsBumped[1]);\n xRange[1] = xRangeBoundsBumped[1];\n }\n }\n\n if (!zoomYOut) {\n if (yRange[0] < yRangeBoundsBumped[0]) {\n yRange[1] += Math.abs(yRange[0] - yRangeBoundsBumped[0]);\n yRange[0] = yRangeBoundsBumped[0];\n }\n\n if (yRange[1] > yRangeBoundsBumped[1]) {\n yRange[0] -= Math.abs(yRange[1] - yRangeBoundsBumped[1]);\n yRange[1] = yRangeBoundsBumped[1];\n }\n } else {\n if (yRange[0] > yRangeBoundsBumped[0]) {\n yRange[1] -= Math.abs(yRange[0] - yRangeBoundsBumped[0]);\n yRange[0] = yRangeBoundsBumped[0];\n }\n\n if (yRange[1] < yRangeBoundsBumped[1]) {\n yRange[0] += Math.abs(yRange[1] - yRangeBoundsBumped[1]);\n yRange[1] = yRangeBoundsBumped[1];\n }\n }\n\n if (_this.MDL.x.scale.type === \"ordinal\") {\n _this.xScale.rangeBands(xRange);\n } else {\n _this.xScale.range(xRange);\n }\n\n if (_this.MDL.y.scale.type === \"ordinal\") {\n _this.yScale.rangeBands(yRange);\n } else {\n _this.yScale.range(yRange);\n }\n\n const formatter = function(n) {\n return utils.isDate(n) ? n : +n.toFixed(2);\n };\n\n const zoomedXRange = xRangeBoundsBumped;\n const zoomedYRange = yRangeBoundsBumped;\n\n /*\n * Set the zoomed min/max to the correct value depending on if the\n * min/max values lie within the range bound regions.\n */\n /*\n if(!zoomXOut) {\n zoomedXRange[0] = xRangeBounds[0] > xRange[0] ? xRangeBounds[0] : xRange[0];\n zoomedXRange[1] = xRangeBounds[1] < xRange[1] ? xRangeBounds[1] : xRange[1];\n }\n\n if(!zoomYOut) {\n zoomedYRange[0] = yRangeBounds[0] < yRange[0] ? yRangeBounds[0] : yRange[0];\n zoomedYRange[1] = yRangeBounds[1] > yRange[1] ? yRangeBounds[1] : yRange[1];\n }\n */\n\n _this._zoomedXYMinMax = {\n x: {\n zoomedMin: formatter(_this.xScale.invert(zoomedXRange[0])),\n zoomedMax: formatter(_this.xScale.invert(zoomedXRange[1]))\n },\n y: {\n zoomedMin: formatter(_this.yScale.invert(zoomedYRange[0])),\n zoomedMax: formatter(_this.yScale.invert(zoomedYRange[1]))\n }\n };\n\n //TODO/*avoid storing it in URL*/\n if (!zoomer.dontFeedToState) {\n // _this.ui.panzoom = {\n // x: Object.assign({}, _this._zoomedXYMinMax.x),\n // y: Object.assign({}, _this._zoomedXYMinMax.y), \n // }\n _this.MDL.x.scale.zoomed = [_this._zoomedXYMinMax.x.zoomedMin, _this._zoomedXYMinMax.x.zoomedMax];\n _this.MDL.y.scale.zoomed = [_this._zoomedXYMinMax.y.zoomedMin, _this._zoomedXYMinMax.y.zoomedMax];\n }\n\n const optionsY = _this.yAxis.labelerOptions();\n const optionsX = _this.xAxis.labelerOptions();\n optionsY.limitMaxTickNumber = zoom * ratioY < 1.5 ? 8 : zoom * ratioY * 8;\n optionsX.limitMaxTickNumber = zoom * ratioX < 1.5 ? 8 : zoom * ratioX * 8;\n optionsY.transitionDuration = zoomer.duration;\n optionsX.transitionDuration = zoomer.duration;\n\n _this.DOM.xAxisEl.call(_this.xAxis.labelerOptions(optionsX));\n _this.DOM.yAxisEl.call(_this.yAxis.labelerOptions(optionsY));\n _this.redrawData(zoomer.duration);\n //_this._trails.run(\"resize\", null, zoomer.duration);\n\n zoomer.duration = 0;\n },\n\n stop() {\n _this.DOM.chartSvg.classed(\"vzb-zooming\", false);\n // if (this.quitZoom) return;\n\n //Force the update of the URL and history, with the same values\n if (!zoomer.dontFeedToState) {\n // _this.ui.panzoom = {\n // x: Object.assign({}, _this._zoomedXYMinMax.x),\n // y: Object.assign({}, _this._zoomedXYMinMax.y), \n // }\n _this.MDL.x.scale.zoomed = [_this._zoomedXYMinMax.x.zoomedMin, _this._zoomedXYMinMax.x.zoomedMax];\n _this.MDL.y.scale.zoomed = [_this._zoomedXYMinMax.y.zoomedMin, _this._zoomedXYMinMax.y.zoomedMax];\n //_this.model.marker.set(_this._zoomedXYMinMax, true, true);\n }\n zoomer.dontFeedToState = null;\n\n _this.draggingNow = false;\n }\n };\n }\n\n expandCanvas(duration) {\n const _this = this.context;\n if (!duration) duration = _this.duration;\n\n //d3 extent returns min and max of the input array as [min, max]\n const mmX = d3_extent(utils.values(_this.frame.x));\n const mmY = d3_extent(utils.values(_this.frame.y));\n\n //protection agains unreasonable min-max results -- abort function\n if (!mmX[0] && mmX[0] !== 0 || !mmX[1] && mmX[1] !== 0 || !mmY[0] && mmY[0] !== 0 || !mmY[1] && mmY[1] !== 0) {\n return utils.warn(\"panZoom.expandCanvas: X or Y min/max are broken. Aborting with no action\");\n }\n /*\n * Use a range bumped scale to correctly accommodate the range bump\n * gutter.\n */\n const suggestedFrame = {\n x1: _this.xScale(mmX[0]),\n y1: _this.yScale(mmY[0]),\n x2: _this.xScale(mmX[1]),\n y2: _this.yScale(mmY[1])\n };\n const xBounds = [0, _this.width];\n const yBounds = [_this.height, 0];\n\n // Get the current zoom frame based on the current dimensions.\n const frame = {\n x1: xBounds[0],\n x2: xBounds[1],\n y1: yBounds[0],\n y2: yBounds[1]\n };\n\n const TOLERANCE = 0.0;\n\n /*\n * If there is no current zoom frame, or if any of the suggested frame\n * points extend outside of the current zoom frame, then expand the\n * canvas.\n */\n if (!_this.isCanvasPreviouslyExpanded ||\n suggestedFrame.x1 < frame.x1 * (1 - TOLERANCE) || suggestedFrame.x2 > frame.x2 * (1 + TOLERANCE) ||\n suggestedFrame.y2 < frame.y2 * (1 - TOLERANCE) || suggestedFrame.y1 > frame.y1 * (1 + TOLERANCE)) {\n /*\n * If there is already a zoom frame, then clamp the suggested frame\n * points to only zoom out and expand the canvas.\n *\n * If any of x1, x2, y1, or y2 is within the current frame\n * boundaries, then clamp them to the frame boundaries. If any of\n * the above values will translate into a data value that is outside\n * of the possible data range, then clamp them to the frame\n * coordinate that corresponds to the maximum data value that can\n * be displayed.\n */\n if (_this.isCanvasPreviouslyExpanded) {\n /*\n * Calculate bounds and bumped scale for calculating the data boundaries\n * to which the suggested frame points need to be clamped.\n */\n const xBoundsBumped = _this._rangeBump(xBounds);\n const yBoundsBumped = _this._rangeBump(yBounds);\n\n if (suggestedFrame.x1 > xBoundsBumped[0]) suggestedFrame.x1 = xBoundsBumped[0];\n if (suggestedFrame.x2 < xBoundsBumped[1]) suggestedFrame.x2 = xBoundsBumped[1];\n if (suggestedFrame.y1 < yBoundsBumped[0]) suggestedFrame.y1 = yBoundsBumped[0];\n if (suggestedFrame.y2 > yBoundsBumped[0]) suggestedFrame.y2 = yBoundsBumped[1];\n }\n\n _this.isCanvasPreviouslyExpanded = true;\n this._zoomOnRectangle(_this.element, suggestedFrame.x1, suggestedFrame.y1,\n suggestedFrame.x2, suggestedFrame.y2, false, duration);\n } else {\n _this.redrawDataPoints(duration);\n }\n }\n\n zoomToMaxMin(zoomedMinX, zoomedMaxX, zoomedMinY, zoomedMaxY, duration, dontFeedToState) {\n const _this = this.context;\n let minX = zoomedMinX;\n let maxX = zoomedMaxX;\n let minY = zoomedMinY;\n let maxY = zoomedMaxY;\n\n const xDomain = _this.xScale.domain();\n const yDomain = _this.yScale.domain();\n\n /*\n * Prevent zoomout if only one of zoom edges set outside domain\n */\n if (minX < xDomain[0] && maxX < xDomain[1]) minX = xDomain[0];\n if (minX > xDomain[0] && maxX > xDomain[1]) maxX = xDomain[1];\n if (minY < yDomain[0] && maxY < yDomain[1]) minY = yDomain[0];\n if (minY > yDomain[0] && maxY > yDomain[1]) maxY = yDomain[1];\n\n\n const xRange = [_this.xScale(minX), _this.xScale(maxX)];\n const yRange = [_this.yScale(minY), _this.yScale(maxY)];\n\n\n this._zoomOnRectangle(_this.element, xRange[0], yRange[0], xRange[1], yRange[1], false, duration, dontFeedToState);\n }\n\n _zoomOnRectangle(element, zoomedX1, zoomedY1, zoomedX2, zoomedY2, compensateDragging, duration, dontFeedToState) {\n const _this = this.context;\n const zoomer = this.zoomer;\n const transform = d3_zoomTransform(this.zoomSelection.node());\n\n const x1 = zoomedX1;\n const y1 = zoomedY1;\n const x2 = zoomedX2;\n const y2 = zoomedY2;\n\n /*\n * When dragging to draw a rectangle, the translate vector has (x2 - x1)\n * added to zoomer.translate()[0], and (y2 - 1) added to\n * zoomer.translate()[1].\n *\n * We need to compensate for this addition when\n * zooming with a rectangle, because zooming with a rectangle will\n * update the translate vector with new values based on the rectangle\n * dimensions.\n */\n if (compensateDragging) {\n transform.translate(\n x1 - x2,\n y1 - y2\n );\n }\n\n const xRangeBounds = [0, _this.width];\n const yRangeBounds = [_this.height, 0];\n\n const xRangeBoundsBumped = _this._rangeBump(xRangeBounds);\n const yRangeBoundsBumped = _this._rangeBump(yRangeBounds);\n\n const minZoom = zoomer.scaleExtent()[0];\n const maxZoom = zoomer.scaleExtent()[1];\n let zoom, ratioX, ratioY;\n\n if (x1 == x2 || y1 == y2 || xRangeBoundsBumped[0] == xRangeBoundsBumped[1] || yRangeBoundsBumped[0] == yRangeBoundsBumped[1]) {\n return utils.warn(\"_zoomOnRectangle(): can not proceed because this may result in infinity zooms\");\n }\n\n if (Math.abs(x1 - x2) > Math.abs(y1 - y2)) {\n zoom = Math.abs(yRangeBoundsBumped[0] - yRangeBoundsBumped[1]) / Math.abs(y1 - y2) * transform.k;\n\n /*\n * Clamp the zoom scalar to the maximum zoom allowed before\n * calculating the next ratioX and ratioY.\n */\n if (zoom < minZoom) {\n zoomer.ratioY *= zoom / transform.k;\n zoom = minZoom;\n }\n if (zoom > maxZoom) zoom = maxZoom;\n\n ratioX = Math.abs(xRangeBoundsBumped[0] - xRangeBoundsBumped[1]) / Math.abs(x1 - x2) * transform.k / zoom * zoomer.ratioX;\n ratioY = zoomer.ratioY;\n } else {\n zoom = Math.abs(xRangeBoundsBumped[0] - xRangeBoundsBumped[1]) / Math.abs(x1 - x2) * transform.k;\n\n /*\n * Clamp the zoom scalar to the maximum zoom allowed before\n * calculating the next ratioX and ratioY.\n */\n if (zoom < minZoom) {\n zoomer.ratioX *= zoom / transform.k;\n zoom = minZoom;\n }\n if (zoom > maxZoom) zoom = maxZoom;\n\n ratioY = Math.abs(yRangeBoundsBumped[0] - yRangeBoundsBumped[1]) / Math.abs(y1 - y2) * transform.k / zoom * zoomer.ratioY;\n ratioX = zoomer.ratioX;\n }\n\n const pan = [\n (transform.x - Math.min(x1, x2)) / transform.k / zoomer.ratioX * zoom * ratioX + (xRangeBoundsBumped[0] - xRangeBounds[0]),\n (transform.y - Math.min(y1, y2)) / transform.k / zoomer.ratioY * zoom * ratioY + (yRangeBoundsBumped[1] - yRangeBounds[1])\n ];\n\n zoomer.dontFeedToState = dontFeedToState;\n zoomer.ratioY = ratioY || 1; //NaN defaults to 1\n zoomer.ratioX = ratioX || 1; //NaN defaults to 1\n zoomer.duration = duration ? duration : 0;\n\n this.zoomSelection.call(zoomer.transform, d3_zoomIdentity.translate(pan[0], pan[1]).scale(zoom));\n }\n\n /*\n * Incrementally zoom in or out and pan the view so that it never looses the point where click happened\n * this function is a modified d3's own zoom behavior on double click\n * for the original code see https://github.com/mbostock/d3/blob/master/src/behavior/zoom.js\n * function dblclicked() and what it refers to\n */\n zoomByIncrement(event, direction, duration) {\n const transform = d3_zoomTransform(this.zoomSelection.node());\n\n let ratio = transform.k;\n const pan = [transform.x, transform.y];\n\n const mouse = d3_pointer(event, this.zoomSelection.node());\n let k = Math.log(ratio) / Math.LN2;\n\n //change factor direction based on the input. default is no direction supplied\n if (direction == \"plus\" || !direction) k = Math.floor(k) + 1;\n if (direction == \"minus\") k = Math.ceil(k) - 1;\n\n //decode panning\n let locus = [(mouse[0] - pan[0]) / ratio, (mouse[1] - pan[1]) / ratio];\n\n //recalculate zoom ratio\n const scaleExtent = this.zoomer.scaleExtent();\n if (ratio == scaleExtent[0]) {\n this.zoomer.ratioY = 1;\n this.zoomer.ratioX = 1;\n }\n ratio = Math.max(scaleExtent[0], Math.min(scaleExtent[1], Math.pow(2, k)));\n\n //recalculate panning\n locus = [locus[0] * ratio + pan[0], locus[1] * ratio + pan[1]];\n pan[0] += mouse[0] - locus[0];\n pan[1] += mouse[1] - locus[1];\n\n this.zoomer.duration = duration || 0;\n this.zoomSelection.call(this.zoomer.transform, d3_zoomIdentity.translate(pan[0], pan[1]).scale(ratio));\n\n }\n\n /*\n * Reset zoom values without triggering a zoom event.\n */\n resetZoomState(element) {\n this.zoomer.ratioY = 1;\n this.zoomer.ratioX = 1;\n (element || this.zoomSelection).property(\"__zoom\", d3_zoomIdentity);\n }\n\n reset(element, duration) {\n const _this = this.context;\n _this.isCanvasPreviouslyExpanded = false;\n\n this.zoomer.ratioY = 1;\n this.zoomer.ratioX = 1;\n this.zoomer.duration = duration || 0;\n (element || this.zoomSelection).call(this.zoomer.transform, d3_zoomIdentity);\n }\n\n rerun(element) {\n (element || this.zoomSelection).call(this.zoomer.scaleBy, 1);\n }\n\n zoomSelection(element) {\n this.zoomSelection = element;\n }\n\n}\n","import {\n Utils\n} from \"@vizabi/shared-components\";\nimport {\n select as d3_select,\n min as d3_min,\n max as d3_max\n} 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 if (showLineEqualXY) {\n const min = d3_min(this.yScale.domain().concat(this.xScale.domain()));\n const max = d3_max(this.yScale.domain().concat(this.xScale.domain()));\n\n this.DOM.lineEqualXY\n .transition()\n .duration(duration || 0)\n .attr(\"y1\", this.yScale(min) || 0)\n .attr(\"y2\", this.yScale(max) || 0)\n .attr(\"x1\", this.xScale(min) || 0)\n .attr(\"x2\", this.xScale(max) || 0);\n }\n }\n}","import {\n Chart,\n Icons,\n Utils,\n LegacyUtils as utils,\n axisSmart,\n Labels,\n DateTimeBackground\n} from \"@vizabi/shared-components\";\nimport PanZoom from \"./panzoom\";\nimport {\n select as d3_select, \n transition as d3_transition, \n easeLinear as d3_easeLinear, \n range as d3_range\n} from \"d3\";\n\nimport BCDecorations from \"./decorations.js\";\n\nimport {\n runInAction\n} from \"mobx\";\n\nimport {decorate, computed, observable, action} from \"mobx\";\n\nconst {ICON_QUESTION} = Icons;\nconst COLOR_WHITEISH = \"rgb(253, 253, 253)\";\n\nconst marginScaleH = (marginMin, ratio = 0) => height => marginMin + height * ratio;\nconst marginScaleW = (marginMin, ratio = 0) => width => marginMin + width * ratio;\n\nfunction isTrailBubble(d){\n return !!d[Symbol.for(\"trailHeadKey\")];\n}\n\nconst MAX_RADIUS_EM = 0.05;\n\nconst PROFILE_CONSTANTS = (width, height) => ({\n SMALL: {\n margin: { top: 30, bottom: 35, left: 30, right: 10},\n leftMarginRatio: 1,\n padding: 2,\n minRadiusPx: 0.5,\n maxRadiusPx: Math.max(0.5, MAX_RADIUS_EM * utils.hypotenuse(width, height)),\n infoElHeight: 16,\n yAxisTitleBottomMargin: 6,\n xAxisTitleBottomMargin: 4\n },\n MEDIUM: {\n margin: { top: 15, bottom: 40, left: 40, right: 15},\n leftMarginRatio: 1.6,\n padding: 2,\n minRadiusPx: 1,\n maxRadiusPx: Math.max(0.5, MAX_RADIUS_EM * utils.hypotenuse(width, height)),\n 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 infoElHeight: 22,\n yAxisTitleBottomMargin: 3,//marginScaleH(4, 0.01)(height),\n xAxisTitleBottomMargin: marginScaleH(0, 0.01)(height),\n hideSTitle: true\n }\n});\n\nconst PROFILE_CONSTANTS_FOR_PROJECTOR = (width, height) => ({\n MEDIUM: {\n margin: { top: 20, bottom: 55, left: 50, right: 20 },\n yAxisTitleBottomMargin: 3,\n xAxisTitleBottomMargin: 4,\n infoElHeight: 26,\n },\n LARGE: {\n margin: { top: 30, bottom: marginScaleH(45, 0.03)(height), left: marginScaleW(35, 0.025)(width), right: 30 },\n yAxisTitleBottomMargin: 3,//marginScaleH(4, 0.01)(height),\n xAxisTitleBottomMargin: marginScaleH(-5, 0.01)(height),\n infoElHeight: 32,\n hideSTitle: true\n }\n});\n\n// BUBBLE CHART COMPONENT\nclass _VizabiBubbleChart extends Chart {\n\n constructor(config) {\n config.subcomponents = [{\n type: Labels,\n placeholder: \".vzb-bc-labels\", \n options: {\n CSS_PREFIX: \"vzb-bc\",\n LABELS_CONTAINER_CLASS: \"vzb-bc-labels\",\n LINES_CONTAINER_CLASS: \"vzb-bc-lines\",\n SUPPRESS_HIGHLIGHT_DURING_PLAY: false\n },\n name: \"labels\"\n },{\n type: DateTimeBackground,\n placeholder: \".vzb-bc-date\"\n }];\n\n config.template = `\n <svg class=\"vzb-bubblechart-svg vzb-export\">\n <svg class=\"vzb-bubblechart-svg-back\">\n <g class=\"vzb-bc-graph\">\n <g class=\"vzb-bc-date\"></g>\n <svg class=\"vzb-bc-axis-x\"><g></g></svg>\n <svg class=\"vzb-bc-axis-y\"><g></g></svg>\n <line class=\"vzb-bc-projection-x\"></line>\n <line class=\"vzb-bc-projection-y\"></line>\n </g>\n </svg>\n <svg class=\"vzb-bubblechart-svg-main\">\n <g class=\"vzb-bc-graph\">\n <g class=\"vzb-bc-axis-x-title\"><text></text></g>\n <g class=\"vzb-bc-axis-x-info vzb-noexport\"></g>\n\n <g class=\"vzb-bc-axis-y-title\"><text></text></g>\n <g class=\"vzb-bc-axis-y-info vzb-noexport\"></g>\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 <g class=\"vzb-bc-axis-y-subtitle\"><text></text></g>\n <g class=\"vzb-bc-axis-x-subtitle\"><text></text></g>\n <g class=\"vzb-bc-axis-s-title\"><text></text></g>\n <g class=\"vzb-bc-axis-c-title\"><text></text></g>\n\n <rect class=\"vzb-bc-zoom-rect\"></rect>\n </g>\n <g class=\"vzb-datawarning-button vzb-noexport\"></g>\n </svg>\n <svg class=\"vzb-bubblechart-svg-front\">\n <g class=\"vzb-bc-graph\">\n <svg class=\"vzb-bc-bubbles-crop\">\n <g class=\"vzb-bc-decorations\">\n <line class=\"vzb-bc-line-equal-xy vzb-invisible\"></line>\n <g class=\"vzb-bc-x-axis-groups\"></g>\n </g> \n <g class=\"vzb-bc-lines\"></g>\n <g class=\"vzb-bc-bubble-crown vzb-hidden\">\n <circle class=\"vzb-crown-glow\"></circle>\n <circle class=\"vzb-crown\"></circle>\n </g> \n </svg>\n <svg class=\"vzb-bc-labels-crop\">\n <g class=\"vzb-bc-labels\"></g>\n </svg>\n </g>\n </svg>\n <svg width=\"0\" height=\"0\">\n <defs>\n <filter class=\"vzb-noexport\" id=\"vzb-glow-filter-${config.id}\" x=\"-50%\" y=\"-50%\" width=\"200%\" height=\"200%\">\n <feGaussianBlur in=\"SourceGraphic\" stdDeviation=\"2\"></feGaussianBlur>\n </filter>\n <pattern class=\"vzb-noexport\" id=\"vzb-bc-pattern-lines-${config.id}\" x=\"0\" y=\"0\" patternUnits=\"userSpaceOnUse\" width=\"50\" height=\"50\" viewBox=\"0 0 10 10\"> \n <path d='M-1,1 l2,-2M0,10 l10,-10M9,11 l2,-2' stroke='black' stroke-width='3' opacity='0.08'/>\n </pattern> \n </defs>\n </svg>\n </svg>\n <div class=\"vzb-tooltip vzb-hidden vzb-tooltip-mobile\"></div>\n `;\n\n super(config);\n }\n\n setup() {\n\n this.DOM = {\n element: this.element,\n chartSvg: this.element.select(\"svg.vzb-bubblechart-svg-main\"),\n chartSvgFront: this.element.select(\"svg.vzb-bubblechart-svg-front\"),\n chartSvgBack: this.element.select(\"svg.vzb-bubblechart-svg-back\"),\n chartSvgAll: this.element.selectAll(\"svg.vzb-bubblechart-svg\"),\n graphAll: this.element.selectAll(\".vzb-bc-graph\"),\n bubbleContainerCropAll: this.element.selectAll(\".vzb-bc-bubbles-crop\"),\n zoomRect: this.element.select(\".vzb-bc-zoom-rect\"),\n eventArea: this.element.select(\".vzb-bc-eventarea\"),\n forecastOverlay: this.element.select(\".vzb-bc-forecastoverlay\"),\n tooltipMobile: this.element.select(\".vzb-tooltip-mobile\"),\n defs: this.element.select(\"defs\")\n };\n this.DOM.chartSvg.select(\".vzb-bc-graph\").call(graph => \n Object.assign(this.DOM, {\n graph: graph,\n ySubTitleEl: graph.select(\".vzb-bc-axis-y-subtitle\"),\n xSubTitleEl: graph.select(\".vzb-bc-axis-x-subtitle\"),\n yTitleEl: graph.select(\".vzb-bc-axis-y-title\"),\n xTitleEl: graph.select(\".vzb-bc-axis-x-title\"),\n sTitleEl: graph.select(\".vzb-bc-axis-s-title\"),\n cTitleEl: graph.select(\".vzb-bc-axis-c-title\"),\n yInfoEl: graph.select(\".vzb-bc-axis-y-info\"),\n xInfoEl: graph.select(\".vzb-bc-axis-x-info\"),\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(${location.pathname}#vzb-glow-filter-${this.id})`);\n\n this._date = this.findChild({type: \"DateTimeBackground\"});\n this._labels = this.findChild({type: \"Labels\"});\n this._panZoom = new PanZoom(this); \n this.decorations = new BCDecorations(this);\n this._initInfoElements();\n \n this.scrollableAncestor = utils.findScrollableAncestor(this.element);\n\n this.xAxis = axisSmart(\"bottom\");\n this.yAxis = axisSmart(\"left\");\n\n this.axisTitleComplimentStrings = {Y: \"\", X: \"\", S: \"\", C: \"\"};\n\n this.isCanvasPreviouslyExpanded = false;\n this.draggingNow = null;\n\n this.hoverBubble = false;\n this.__lastStep = 0;\n\n const _this = this;\n //keyboard listeners\n d3_select(\"body\")\n .on(\"keydown\", (event) => {\n if (_this.ui.cursorMode !== \"arrow\" && _this.ui.cursorMode !== \"hand\") return;\n if (event.metaKey || event.ctrlKey) _this.DOM.chartSvgAll.classed(\"vzb-zoomin\", true);\n })\n .on(\"keyup\", (event) => {\n if (_this.ui.cursorMode !== \"arrow\" && _this.ui.cursorMode !== \"hand\") return;\n if (!event.metaKey && !event.ctrlKey) _this.DOM.chartSvgAll.classed(\"vzb-zoomin\", false);\n })\n //this is for the case when user would press ctrl and move away from the browser tab or window\n //keyup event would happen somewhere else and won't be captured, so zoomin class would get stuck\n .on(\"mouseenter\", (event) => {\n if (_this.ui.cursorMode !== \"arrow\" && _this.ui.cursorMode !== \"hand\") return;\n if (!event.metaKey && !event.ctrlKey) _this.DOM.chartSvgAll.classed(\"vzb-zoomin\", false);\n });\n \n this.root.element.on(\"custom-resetZoom\", () => {\n _this._panZoom.reset(null, 500);\n });\n\n this._panZoom.zoomSelection(this.DOM.bubbleContainerCrop);\n this.DOM.bubbleContainerCrop\n .call(this._panZoom.dragRectangle)\n .call(this._panZoom.zoomer)\n .on(\"dblclick.zoom\", null)\n .on(\"mouseup\", () => {\n _this.draggingNow = false;\n })\n .on(\"click\", (event) => {\n const cursor = _this.ui.cursorMode;\n if (!event.defaultPrevented && cursor !== \"arrow\" && cursor !== \"hand\") {\n _this._panZoom.zoomByIncrement(event, cursor, 500);\n }\n });\n\n }\n\n _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.yInfoEl, 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.xInfoEl, 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 get MDL(){\n return {\n frame: this.model.encoding.frame,\n selected: this.model.encoding.selected,\n highlighted: this.model.encoding.highlighted,\n superHighlighted: this.model.encoding.superhighlighted,\n y: this.model.encoding[this.state.alias?.y || \"y\"],\n x: this.model.encoding[this.state.alias?.x || \"x\"],\n size: this.model.encoding.size,\n color: this.model.encoding.color,\n label: this.model.encoding.label,\n trail: this.model.encoding.trail\n };\n }\n\n draw() {\n this.localise = this.services.locale.auto(this.MDL.frame.interval);\n\n //this.MDL.trail.config.show = false;\n //this.ui.cursorMode = \"plus\";\n this.sScale = this.MDL.size.scale.d3Scale;\n\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.updateUIStrings);\n this.addReaction(this.updateTreemenu);\n this.addReaction(this._updateSize);\n this.addReaction(this.updateInfoElements);\n // this.addReaction(this._resetZoomMinMaxXReaction, this._resetZoomMinMaxX);\n // this.addReaction(this._resetZoomMinMaxYReaction, this._resetZoomMinMaxY);\n this.addReaction(this._updateOpacity);\n this.addReaction(this.updateColorPatterns);\n this.addReaction(this._updateShowYear);\n this.addReaction(this._updateYear);\n this.addReaction(this.drawData);\n this.addReaction(this._zoomToMarkerMaxMin);\n this.addReaction(this.redrawData);\n\n this.addReaction(this._selectDataPoints);\n this.addReaction(this._highlightDataPoints);\n this.addReaction(this._blinkSuperHighlighted);\n this.addReaction(this._drawForecastOverlay);\n this.addReaction(this._setupCursorMode);\n this.addReaction(this.updateDecorations);\n }\n\n drawData() {\n this.processFrameData();\n this._updateMarkerSizeLimits();\n this._createAndDeleteBubbles();\n //this.redrawData();\n }\n\n updateColorPatterns() {\n if (this.MDL.color.scale.isPattern) {\n const colorConcept = this.MDL.color.data.concept;\n this.DOM.defs.selectAll(\".flag\")\n .data(this.MDL.color.data.domainData, d => d[0])\n .enter()\n .append(\"pattern\")\n .attr(\"id\", d => `flag-${d[0]}-${this.id}`)\n .attr(\"class\", \"flag\")\n .attr(\"width\", \"100%\")\n .attr(\"height\", \"100%\")\n .attr(\"patternContentUnits\", \"objectBoundingBox\")\n .html(d => d[1][colorConcept])\n .each(function() {\n const svg = d3_select(this).select(\"svg\");\n if (svg.empty()) return;\n \n if (!svg.attr(\"viewBox\"))\n svg.attr(\"viewBox\", `0 0 ${svg.attr(\"width\")} ${svg.attr(\"height\")}`);\n\n // xMidYMid: center the image in the circle\n // slice: scale the image to fill the circle\n if (!svg.attr(\"preserveAspectRatio\"))\n svg.attr(\"preserveAspectRatio\", \"xMidYMid slice\")\n\n svg.attr(\"width\", 1).attr(\"height\", 1);\n });\n // .attr(\"xlink:href\", function(d) {\n // return \"flags/\" + d.CountryCode + \".svg\";\n // });\n } else {\n this.DOM.defs.selectAll(\".flag\").remove();\n }\n }\n\n _updateShowYear() {\n this.DOM.date.classed(\"vzb-hidden\", !this.ui.timeInBackground);\n }\n\n _updateYear() {\n const duration = this._getDuration();\n this._date.setText(this.MDL.frame.value, duration); \n }\n\n __getColor(key, valueC) {\n return valueC != null ? (this.MDL.color.scale.isPattern ? `url(#flag-${key}-${this.id})` : this.cScale(valueC)) : COLOR_WHITEISH;\n }\n\n _createAndDeleteBubbles() {\n const _this = this;\n const duration = this._getDuration();\n const transition = this._getTransition(duration);\n const data = this.__dataProcessed;\n let trailRedrawDate;\n\n runInAction(()=>{\n trailRedrawDate = this.MDL.frame.stepScale.invert(Math.min(this.__lastStep, this.__lastStep = this.MDL.frame.step << 0) - 1);\n })\n\n this.bubbles = this.DOM.bubbleContainer.selectAll(\".vzb-bc-entity\")\n .data(this.__dataProcessed, d => d[Symbol.for(\"key\")])\n .join(\n enter => enter\n .append(d => {\n const g = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n const circle = document.createElementNS(\"http://www.w3.org/2000/svg\", \"circle\");\n const trailLine = document.createElementNS(\"http://www.w3.org/2000/svg\", \"line\");\n const diagonalLine = document.createElementNS(\"http://www.w3.org/2000/svg\", \"line\");\n trailLine.classList.add(\"vzb-trail-line\");\n diagonalLine.classList.add(\"vzb-diagonal-line\");\n g.appendChild(circle);\n g.appendChild(diagonalLine);\n if (isTrailBubble(d)) g.appendChild(trailLine);\n return g;\n })\n .attr(\"class\", \"vzb-bc-entity\")\n .attr(\"id\", d => `vzb-bc-bubble-${d[Symbol.for(\"key\")]}-${this.id}`)\n .style(\"opacity\", d => d[Symbol.for(\"opacity\")] = this._getBubbleOpacity(d))\n .call(selection => {\n if(!utils.isTouchDevice()){\n selection\n .on(\"mouseover\", (event, d) => {\n if (this.ui.cursorMode !== \"arrow\" && this.ui.cursorMode !== \"hand\") return;\n if (this._labels.dragging) return;\n this._bubblesInteract().mouseover(event, d);\n })\n .on(\"mouseout\", (event, d) => {\n if (this.ui.cursorMode !== \"arrow\" && this.ui.cursorMode !== \"hand\") return;\n if (this._labels.dragging) return;\n this._bubblesInteract().mouseout(event, d);\n })\n .on(\"click\", (event, d) => {\n if (this.ui.cursorMode !== \"arrow\" && this.ui.cursorMode !== \"hand\") return;\n this._bubblesInteract().click(event, d);\n });\n } else {\n selection\n .onTap((event, d) => {\n event.stopPropagation();\n this._bubblesInteract().click(event, d);\n })\n .onLongTap(() => {});\n }\n })\n .each(function(d, index) {\n const dataNext = data[index + 1] || {};\n const isTrail = isTrailBubble(d);\n const isExtrapolated = d[Symbol.for(\"extrapolated\")];\n const headTrail = isTrail && !dataNext[Symbol.for(\"trailHeadKey\")];\n const view = d3_select(this);\n const circle = view.select(\"circle\");\n const diagonalLine = view.select(\".vzb-diagonal-line\");\n \n const valueX = d[_this._alias(\"x\")];\n const valueY = d[_this._alias(\"y\")];\n const valueS = d.size;\n const valueC = d.color;\n \n //d.hidden = (!valueS && valueS !== 0) || valueX == null || valueY == null;\n \n //view.classed(\"vzb-hidden\", d.hidden);\n d.r = utils.areaToRadius(_this.sScale(valueS || 0));\n const scaledX = _this.xScale(valueX);\n const scaledY = _this.yScale(valueY);\n const scaledC = _this.__getColor(d[Symbol.for(isTrail ? \"trailHeadKey\" : \"key\")], valueC);\n \n if (!duration || !headTrail) {\n circle\n .attr(\"r\", d.r)\n .attr(\"fill\", scaledC)\n .attr(\"cy\", scaledY)\n .attr(\"cx\", scaledX);\n //.transition(transition)\n\n if(isExtrapolated)\n diagonalLine\n .attr(\"x1\", scaledX + d.r/Math.sqrt(2))\n .attr(\"y1\", scaledY + d.r/Math.sqrt(2))\n .attr(\"x2\", scaledX - d.r/Math.sqrt(2))\n .attr(\"y2\", scaledY - d.r/Math.sqrt(2));\n diagonalLine\n .classed(\"vzb-hidden\", !isExtrapolated);\n \n //trail line\n if (isTrail) {\n const trailLine = view.select(\".vzb-trail-line\");\n\n const scaledX0 = _this.xScale(dataNext[_this._alias(\"x\")]);\n const scaledY0 = _this.yScale(dataNext[_this._alias(\"y\")]);\n \n trailLine\n .attr(\"x1\", scaledX)\n .attr(\"y1\", scaledY)\n .attr(\"x2\", scaledX0)\n .attr(\"y2\", scaledY0) \n .attr(\"stroke-dasharray\", Math.abs(scaledX - scaledX0) + Math.abs(scaledY - scaledY0))\n .attr(\"stroke-dashoffset\", -d.r)\n .style(\"stroke\", _this.MDL.color.scale.isPattern ? null : scaledC);\n }\n }\n \n if (duration && !isTrail) {\n view\n .style(\"opacity\", 0)\n .transition().duration(duration*0.9)\n .style(\"opacity\", d[Symbol.for(\"opacity\")]);\n }\n \n if (!isTrail) {\n _this._updateLabel(d, valueX, valueY, duration, true, false);\n }\n }),\n\n update => update\n .each(function(d, index) {\n \n const isTrail = isTrailBubble(d);\n const isExtrapolated = d[Symbol.for(\"extrapolated\")];\n const dataNext = data[index + 1] || {};\n const headTrail = isTrail && !dataNext[Symbol.for(\"trailHeadKey\")];\n \n const valueS = d.size;\n d.r = utils.areaToRadius(_this.sScale(valueS || 0));\n if (isTrail && d[\"frame\"] < trailRedrawDate) return;\n \n const valueX = d[_this._alias(\"x\")];\n const valueY = d[_this._alias(\"y\")];\n const valueC = d.color;\n \n //d.hidden = (!valueS && valueS !== 0) || valueX == null || valueY == null;\n \n //view.classed(\"vzb-hidden\", d.hidden);\n const scaledX = _this.xScale(valueX);\n const scaledY = _this.yScale(valueY);\n const scaledC = _this.__getColor(d[Symbol.for(isTrail ? \"trailHeadKey\" : \"key\")], valueC);\n \n const group = d3_select(this);\n if (!duration || !headTrail) {\n const circle = group.select(\"circle\");\n if (duration && !isTrail) {\n circle.transition(transition)\n .attr(\"r\", d.r)\n .attr(\"fill\", scaledC)\n .attr(\"cy\", scaledY)\n .attr(\"cx\", scaledX);\n } else {\n circle.interrupt()\n .attr(\"r\", d.r)\n .attr(\"fill\", scaledC)\n .attr(\"cy\", scaledY)\n .attr(\"cx\", scaledX);\n }\n \n const diagonalLine = group.select(\".vzb-diagonal-line\");\n diagonalLine\n .classed(\"vzb-hidden\", !isExtrapolated);\n if(isExtrapolated){\n if (duration && !isTrail){\n diagonalLine.transition(transition)\n .attr(\"x1\", scaledX + d.r/Math.sqrt(2))\n .attr(\"y1\", scaledY + d.r/Math.sqrt(2))\n .attr(\"x2\", scaledX - d.r/Math.sqrt(2))\n .attr(\"y2\", scaledY - d.r/Math.sqrt(2));\n } else {\n diagonalLine.interrupt()\n .attr(\"x1\", scaledX + d.r/Math.sqrt(2))\n .attr(\"y1\", scaledY + d.r/Math.sqrt(2))\n .attr(\"x2\", scaledX - d.r/Math.sqrt(2))\n .attr(\"y2\", scaledY - d.r/Math.sqrt(2));\n }\n }\n \n //trail line\n if (isTrail) {\n const trailLine = group.select(\".vzb-trail-line\");\n const scaledX0 = _this.xScale(dataNext[_this._alias(\"x\")]);\n const scaledY0 = _this.yScale(dataNext[_this._alias(\"y\")]);\n \n trailLine\n .attr(\"x1\", scaledX)\n .attr(\"y1\", scaledY);\n if (duration && !data[index + 2][Symbol.for(\"trailHeadKey\")]) {\n trailLine\n .attr(\"x2\", scaledX)\n .attr(\"y2\", scaledY)\n .transition(transition)\n .attr(\"x2\", scaledX0)\n .attr(\"y2\", scaledY0);\n } else {\n trailLine.interrupt()\n .attr(\"x2\", scaledX0)\n .attr(\"y2\", scaledY0);\n }\n \n trailLine\n .style(\"stroke\", _this.MDL.color.scale.isPattern ? null : scaledC)\n .attr(\"stroke-dasharray\", Math.abs(scaledX - scaledX0) + Math.abs(scaledY - scaledY0))\n .attr(\"stroke-dashoffset\", -d.r);\n }\n }\n \n if (!isTrail)\n _this._updateLabel(d, valueX, valueY, duration, false, false); \n }), \n\n exit => exit\n .each(function(d) {\n const isTrail = isTrailBubble(d);\n \n const view = duration && !isTrail ?\n d3_select(this).transition(transition)\n .duration(duration*0.9)\n .style(\"opacity\", 0)\n :\n d3_select(this).interrupt();\n \n view\n .remove();\n \n if (!isTrail) \n _this._updateLabel(d, d[_this._alias(\"x\")], d[_this._alias(\"y\")], duration, true, true);\n })\n )\n .order();\n\n }\n\n\n redrawData(duration) {\n //this.services.layout.size;\n //this.MDL.x.scale.type;\n //this.MDL.y.scale.type;\n this.MDL.color.scale.type;\n this.MDL.size.scale.type;\n this.MDL.size.scale.extent;\n\n const _this = this;\n const data = this.__dataProcessed;\n const transition = this._getTransition(duration);\n\n if (this.bubbles) this.bubbles.each(function(d, index) {\n const isTrail = isTrailBubble(d);\n const dataNext = data[index + 1] || {};\n const headTrail = isTrail && !dataNext[Symbol.for(\"trailHeadKey\")];\n const isExtrapolated = d[Symbol.for(\"extrapolated\")];\n\n const valueX = d[_this._alias(\"x\")];\n const valueY = d[_this._alias(\"y\")];\n const valueS = d.size;\n const valueC = d.color;\n\n d.r = utils.areaToRadius(_this.sScale(valueS || 0));\n const scaledX = _this.xScale(valueX);\n const scaledY = _this.yScale(valueY);\n const scaledC = _this.__getColor(d[Symbol.for(isTrail ? \"trailHeadKey\" : \"key\")], valueC);\n\n const group = d3_select(this);\n\n if (duration && headTrail) {\n group.style(\"opacity\", 0)\n .transition().delay(duration).duration(0)\n .style(\"opacity\", d[Symbol.for(\"opacity\")]);\n }\n\n const circle = group.select(\"circle\"); \n if (duration && !headTrail) {\n circle.transition(transition)\n .attr(\"r\", d.r)\n .attr(\"fill\", scaledC)\n .attr(\"cy\", scaledY)\n .attr(\"cx\", scaledX);\n } else {\n circle.interrupt()\n .attr(\"r\", d.r)\n .attr(\"fill\", scaledC)\n .attr(\"cy\", scaledY)\n .attr(\"cx\", scaledX);\n }\n\n const diagonalLine = group.select(\".vzb-diagonal-line\");\n diagonalLine\n .classed(\"vzb-hidden\", !isExtrapolated);\n if(isExtrapolated){\n if (duration && !headTrail){\n diagonalLine.transition(transition)\n .attr(\"x1\", scaledX + d.r/Math.sqrt(2))\n .attr(\"y1\", scaledY + d.r/Math.sqrt(2))\n .attr(\"x2\", scaledX - d.r/Math.sqrt(2))\n .attr(\"y2\", scaledY - d.r/Math.sqrt(2));\n } else {\n diagonalLine.interrupt()\n .attr(\"x1\", scaledX + d.r/Math.sqrt(2))\n .attr(\"y1\", scaledY + d.r/Math.sqrt(2))\n .attr(\"x2\", scaledX - d.r/Math.sqrt(2))\n .attr(\"y2\", scaledY - d.r/Math.sqrt(2));\n }\n }\n \n\n if (isTrail) {\n const trailLine = (duration && !headTrail) ? \n group.select(\".vzb-trail-line\")\n .transition(transition)\n : group.select(\".vzb-trail-line\").interrupt();\n\n const dataNext = data[index + 1];\n const scaledX0 = _this.xScale(dataNext[_this._alias(\"x\")]);\n const scaledY0 = _this.yScale(dataNext[_this._alias(\"y\")]);\n\n trailLine\n .attr(\"x1\", scaledX)\n .attr(\"y1\", scaledY)\n .attr(\"x2\", scaledX0)\n .attr(\"y2\", scaledY0)\n .style(\"stroke\", _this.MDL.color.scale.isPattern ? null : scaledC)\n .attr(\"stroke-dasharray\", Math.abs(scaledX - scaledX0) + Math.abs(scaledY - scaledY0))\n .attr(\"stroke-dashoffset\", -d.r);\n }\n });\n\n runInAction(() => _this._updateLabels(duration));\n }\n\n __getZoomed(type, zoomed, domain) {\n //const zoomed = values[`zoomed${type}`];\n return d3[type.toLowerCase()](zoomed !== null ? zoomed : domain);\n }\n\n __getZoomedMin(values, domain) {\n return this.__getZoomed(\"Min\", values, domain);\n }\n\n __getZoomedMax(values, domain) {\n return this.__getZoomed(\"Max\", values, domain);\n }\n\n /*\n * Zoom to the min and max values given in the URL axes markers.\n */\n _zoomToMarkerMaxMin() {\n this.services.layout.size;\n this.MDL.x.scale.type;\n this.MDL.y.scale.type;\n\n const panzoom = //this.ui.panzoom;\n {\n x: this.MDL.x.scale.zoomed,\n y: this.MDL.y.scale.zoomed\n };\n \n const xDomain = this.MDL.x.data.domain;\n const yDomain = this.MDL.y.data.domain;\n\n if (this.draggingNow) return;\n\n /*\n * Reset just the zoom values without triggering a zoom event. This ensures\n * a clean zoom state for the subsequent zoom event.\n */\n this._panZoom.resetZoomState();\n\n this.yScale.range(this._rangeBump([this.height, 0]));\n this.xScale.range(this._rangeBump([0, this.width]));\n \n /*\n * The axes may return null when there is no value given for the zoomed\n * min and max values. In that case, fall back to the axes' domain values.\n */\n const zoomedMinX = this.__getZoomedMin(panzoom.x, xDomain);\n const zoomedMaxX = this.__getZoomedMax(panzoom.x, xDomain);\n const zoomedMinY = this.__getZoomedMin(panzoom.y, yDomain);\n const zoomedMaxY = this.__getZoomedMax(panzoom.y, yDomain);\n\n //by default this will apply no transition and feed values back to state\n runInAction(() => {\n this._panZoom.zoomToMaxMin(zoomedMinX, zoomedMaxX, zoomedMinY, zoomedMaxY, 0, \"don't feed these zoom values back to state\");\n });\n }\n\n _resetZoomMinMaxXReaction() {\n return { concept: this.MDL.x.data.concept };\n }\n\n _resetZoomMinMaxX() {\n this.ui.panzoom.x = {zoomedMin: null, zoomedMax: null};\n }\n\n _resetZoomMinMaxYReaction() {\n return { concept: this.MDL.y.data.concept };\n }\n\n _resetZoomMinMaxY() {\n this.ui.panzoom.y = {zoomedMin: null, zoomedMax: null};\n }\n\n _drawForecastOverlay() {\n this.DOM.forecastOverlay.classed(\"vzb-hidden\", \n !this.ui.showForecast || \n !this.ui.showForecastOverlay || \n !this.ui.endBeforeForecast || \n (this.MDL.frame.value <= this.MDL.frame.parseValue(this.ui.endBeforeForecast))\n );\n }\n\n _updateLayoutProfile(){\n this.services.layout.size;\n\n this.elementHeight = (this.element.node().clientHeight) || 0;\n this.elementWidth = (this.element.node().clientWidth) || 0;\n\n this.profileConstants = this.services.layout.getProfileConstants(\n PROFILE_CONSTANTS(this.elementWidth, this.elementHeight), \n PROFILE_CONSTANTS_FOR_PROJECTOR(this.elementWidth, this.elementHeight)\n );\n\n if (!this.elementHeight || !this.elementWidth) return utils.warn(\"Chart _updateProfile() abort: container is too little or has display:none\");\n }\n\n _getDuration() {\n return this.MDL.frame.playing ? this.MDL.frame.speed || 0 : 0;\n }\n\n _updateScales() {\n this.yScale = this.MDL.y.scale.d3Scale.copy();\n this.xScale = this.MDL.x.scale.d3Scale.copy();\n this._labels.setScales(this.xScale, this.yScale);\n }\n\n get cScale() {\n return this.MDL.color.scale.d3Scale;\n }\n \n updateUIStrings() {\n const {\n y, x, size, color\n } = this.MDL;\n\n this.strings = {\n title: {\n Y: Utils.getConceptName(y, this.localise),\n X: Utils.getConceptName(x, this.localise),\n S: Utils.getConceptName(size, this.localise),\n C: Utils.getConceptName(color, this.localise)\n },\n title_short: {\n Y: Utils.getConceptShortName(y, this.localise),\n X: Utils.getConceptShortName(x, this.localise),\n S: Utils.getConceptShortName(size, this.localise),\n C: Utils.getConceptShortName(color, this.localise)\n },\n subtitle: {\n Y: Utils.getConceptNameMinusShortName(y, this.localise),\n X: Utils.getConceptNameMinusShortName(x, this.localise)\n },\n unit: {\n Y: Utils.getConceptUnit(y),\n X: Utils.getConceptUnit(x),\n S: Utils.getConceptUnit(size),\n C: Utils.getConceptUnit(color)\n }\n };\n\n Promise.all([\n Utils.getConceptNameCompliment(y),\n Utils.getConceptNameCompliment(x),\n Utils.getConceptNameCompliment(size),\n Utils.getConceptNameCompliment(color)\n ]).then(action(response => { \n [ \n this.axisTitleComplimentStrings.Y,\n this.axisTitleComplimentStrings.X,\n this.axisTitleComplimentStrings.S,\n this.axisTitleComplimentStrings.C\n ] = response;\n }));\n }\n\n updateTreemenu(){\n const treemenu = this.root.findChild({type: \"TreeMenu\"});\n\n this.DOM.yTitleEl\n .classed(\"vzb-disabled\", treemenu.state.ownReadiness !== Utils.STATUS.READY)\n .on(\"click\", () => {\n treemenu\n .encoding(this._alias(\"y\"))\n .alignX(this.services.locale.isRTL() ? \"right\" : \"left\")\n .alignY(\"top\")\n .updateView()\n .toggle();\n });\n\n this.DOM.xTitleEl\n .classed(\"vzb-disabled\", treemenu.state.ownReadiness !== Utils.STATUS.READY)\n .on(\"click\", () => {\n treemenu\n .encoding(this._alias(\"x\"))\n .alignX(this.services.locale.isRTL() ? \"right\" : \"left\")\n .alignY(\"bottom\")\n .updateView()\n .toggle();\n }); \n }\n\n _updateSize() {\n this.services.layout.size;\n\n const {\n x,\n y\n } = this.MDL;\n \n const {\n graphAll,\n eventArea,\n bubbleContainerCropAll,\n labelsContainerCrop,\n xAxisElContainer,\n xAxisEl,\n yAxisElContainer,\n yAxisEl,\n projectionX,\n projectionY,\n sTitleEl,\n xTitleEl,\n yTitleEl,\n xSubTitleEl,\n ySubTitleEl,\n xAxisGroupsEl,\n } = this.DOM;\n\n const _this = this;\n\n const layoutProfile = this.services.layout.profile;\n\n const margin = this.profileConstants.margin;\n const infoElHeight = this.profileConstants.infoElHeight;\n const xAxisTitleBottomMargin = this.profileConstants.xAxisTitleBottomMargin;\n\n //stage\n const height = this.height = (this.elementHeight - margin.top - margin.bottom) || 0;\n const width = this.width = (this.elementWidth - margin.left * this.profileConstants.leftMarginRatio - margin.right) || 0;\n\n // if (height <= 0 || width <= 0) {\n // height = 0;\n // width = 0;\n // utils.warn(\"Bubble chart updateSize(): vizabi container is too little or has display:none\");\n // }\n\n //graph group is shifted according to margins (while svg element is at 100 by 100%)\n graphAll\n .attr(\"transform\", \"translate(\" + (margin.left * this.profileConstants.leftMarginRatio) + \",\" + margin.top + \")\");\n\n this._date.resizeText(width, height);\n \n eventArea\n .attr(\"width\", width)\n .attr(\"height\", Math.max(0, height));\n\n //update scales to the new range\n // // if (this.model.marker.y.scaleType !== \"ordinal\") {\n // // this.yScale.range(this._rangeBump([height, 0]));\n // // } else {\n // // this.yScale.rangePoints([height, 0], _this.profileConstants.padding).range();\n // // }\n // // if (this.model.marker.x.scaleType !== \"ordinal\") {\n // // this.xScale.range(this._rangeBump([0, width]));\n // // } else {\n // // this.xScale.rangePoints([0, width], _this.profileConstants.padding).range();\n // // }\n this.yScale.range(this._rangeBump([height, 0]));\n this.xScale.range(this._rangeBump([0, width]));\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({\n scaleType: y.scale.type,\n toolMargin: margin,\n limitMaxTickNumber: 6,\n bump: this.profileConstants.maxRadiusPx / 2,\n viewportLength: height,\n formatter: this.localise\n });\n\n this.xAxis.scale(this.xScale)\n .tickSizeInner(-height)\n .tickSizeOuter(0)\n .tickPadding(6)\n .tickSizeMinor(-height, 0)\n .labelerOptions({\n scaleType: x.scale.type,\n toolMargin: margin,\n bump: this.profileConstants.maxRadiusPx / 2,\n viewportLength: width,\n formatter: this.localise\n });\n\n\n bubbleContainerCropAll\n .attr(\"width\", width)\n .attr(\"height\", Math.max(0, height));\n\n labelsContainerCrop\n .attr(\"width\", width)\n .attr(\"height\", Math.max(0, height));\n\n xAxisElContainer\n .attr(\"width\", width + 1)\n .attr(\"height\", this.profileConstants.margin.bottom + height)\n .attr(\"y\", -1)\n .attr(\"x\", -1);\n xAxisEl\n .attr(\"transform\", \"translate(1,\" + (1 + height) + \")\");\n\n yAxisElContainer\n .attr(\"width\", this.profileConstants.margin.left + width)\n .attr(\"height\", Math.max(0, height))\n .attr(\"x\", -this.profileConstants.margin.left);\n yAxisEl\n .attr(\"transform\", \"translate(\" + (this.profileConstants.margin.left - 1) + \",\" + 0 + \")\");\n\n yAxisEl.call(this.yAxis);\n xAxisEl.call(this.xAxis);\n\n const rangeBump = this.profileConstants.maxRadiusPx;\n projectionX.attr(\"y1\", _this.yScale.range()[0] + rangeBump);\n projectionY.attr(\"x2\", _this.xScale.range()[0] - rangeBump);\n\n\n // reduce font size if the caption doesn't fit\n this._updateSTitle();\n sTitleEl\n .attr(\"text-anchor\", \"end\")\n .attr(\"transform\", \"translate(\" + width + \",\" + 20 + \") rotate(-90)\");\n\n const compl = this.axisTitleComplimentStrings;\n if (layoutProfile !== \"SMALL\") {\n ySubTitleEl.select(\"text\").attr(\"dy\", infoElHeight * 0.6).text(this.strings.subtitle.Y);\n xSubTitleEl.select(\"text\").attr(\"dy\", -infoElHeight * 0.3).text(this.strings.subtitle.X);\n \n yTitleEl.select(\"text\").text(this.strings.title_short.Y + (compl.Y ? \" · \" + compl.Y : \"\") + \" \")\n .append(\"tspan\")\n .classed(\"vzb-noexport\", true)\n .style(\"font-size\", (infoElHeight * 0.7) + \"px\")\n .text(\"▼\");\n xTitleEl.select(\"text\").text(this.strings.title_short.X + (compl.X ? \" · \" + compl.X : \"\") + \" \")\n .append(\"tspan\")\n .classed(\"vzb-noexport\", true)\n .style(\"font-size\", (infoElHeight * 0.7) + \"px\")\n .text(\"▼\");\n } else {\n ySubTitleEl.select(\"text\").text(\"\");\n xSubTitleEl.select(\"text\").text(\"\");\n\n const yTitleText = yTitleEl.select(\"text\").text(this.strings.title.Y + (compl.Y ? \" · \" + compl.Y : \"\"));\n if (yTitleText.node().getBBox().width > width) yTitleText.text(this.strings.title_short.Y + (compl.Y ? \" · \" + compl.Y : \"\"));\n \n const xTitleText = xTitleEl.select(\"text\").text(this.strings.title.X + (compl.X ? \" · \" + compl.X : \"\"));\n if (xTitleText.node().getBBox().width > width - 100) xTitleText.text(this.strings.title_short.X) + (compl.X ? \" · \" + compl.X : \"\"); \n }\n\n const isRTL = this.services.locale.isRTL();\n ySubTitleEl\n .style(\"font-size\", (infoElHeight * 0.8) + \"px\")\n .attr(\"transform\", \"translate(\" + 0 + \",\" + 0 + \") rotate(-90)\");\n xSubTitleEl\n .style(\"font-size\", (infoElHeight * 0.8) + \"px\")\n .attr(\"transform\", \"translate(\" + width + \",\" + height + \")\");\n \n yTitleEl\n .style(\"font-size\", infoElHeight + \"px\")\n .attr(\"transform\", layoutProfile !== \"SMALL\" ?\n \"translate(\" + (-margin.left - this.profileConstants.yAxisTitleBottomMargin) + \",\" + (height * 0.5) + \") rotate(-90)\"\n : \n \"translate(\" + (isRTL ? width : 10 - this.profileConstants.margin.left) + \", -\" + this.profileConstants.yAxisTitleBottomMargin + \")\");\n\n xTitleEl\n .style(\"font-size\", infoElHeight + \"px\")\n .attr(\"transform\", layoutProfile !== \"SMALL\" ?\n \"translate(\" + (width * 0.5) + \",\" + (height + margin.bottom - xAxisTitleBottomMargin) + \")\"\n :\n \"translate(\" + (isRTL ? width : 0) + \",\" + (height + margin.bottom - xAxisTitleBottomMargin) + \")\");\n \n xAxisGroupsEl\n .style(\"font-size\", infoElHeight * 0.8 + \"px\");\n\n this.root.findChild({type: \"_DataWarning\"}).setOptions({\n width: this.elementWidth,\n height: this.elementHeight,\n vertical: \"bottom\", \n horizontal: \"right\", \n right: margin.right,\n bottom: xAxisTitleBottomMargin,\n wLimit: (layoutProfile !== \"SMALL\" ? 0.5 : 1) *\n (this.elementWidth - xTitleEl.node().getBBox().width - infoElHeight * 3)\n });\n\n //this.services.layout.setHGrid([this.elementWidth - marginRightAdjusted]);\n //this.ui.margin.set(\"left\", margin.left * this.profileConstants.leftMarginRatio, false, false);\n\n // (function(xMin, xMax, yMin, yMax) {\n // if ((xMin && xMax && yMin && yMax) === null) return;\n // _this._panZoom.zoomer.dontFeedToState = true;\n // _this._panZoom.rerun(); // includes redraw data points and trail resize\n // _this._panZoom.zoomToMaxMin(xMin, xMax, yMin, yMax, 0, true);\n // })(_this._zoomedXYMinMax.x.zoomedMin,\n // _this._zoomedXYMinMax.x.zoomedMax,\n // _this._zoomedXYMinMax.y.zoomedMin,\n // _this._zoomedXYMinMax.y.zoomedMax);\n }\n\n updateInfoElements() {\n this.services.layout.size;\n this.axisTitleComplimentStrings.X;\n this.axisTitleComplimentStrings.Y;\n\n const {xInfoEl, yInfoEl, xTitleEl, yTitleEl} = this.DOM;\n const {x, y} = this.MDL;\n const isRTL = this.services.locale.isRTL();\n const infoElHeight = this.profileConstants.infoElHeight;\n const layoutProfile = this.services.layout.profile;\n\n if (yInfoEl.select(\"svg\").node()) {\n const titleBBox = yTitleEl.node().getBBox();\n const t = utils.transform(yTitleEl.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 yInfoEl\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 (xInfoEl.select(\"svg\").node()) {\n const titleBBox = xTitleEl.node().getBBox();\n const t = utils.transform(xTitleEl.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 xInfoEl\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 _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 _updateSTitle(titleS, titleC) {\n const { sTitleEl } = this.DOM;\n const {\n size,\n color\n } = this.MDL;\n const compl = this.axisTitleComplimentStrings;\n // vertical text about size and color\n if (this.profileConstants.hideSTitle\n && this.root.ui.dialogs.dialogs.sidebar.indexOf(\"colors\") > -1\n && this.root.ui.dialogs.dialogs.sidebar.indexOf(\"size\") > -1) {\n sTitleEl.classed(\"vzb-invisible\", true);\n return;\n }\n if (sTitleEl.classed(\"vzb-invisible\")) {\n sTitleEl.classed(\"vzb-invisible\", false);\n }\n const sTitleContentON = !size.data.constant;\n const cTitleContentON = !color.data.constant;\n const sTitleText = sTitleEl.select(\"text\")\n // reset font size to remove jumpy measurement\n .style(\"font-size\", null)\n .text(\n (sTitleContentON ? this.localise(\"buttons/size\") + \": \" + (titleS ? titleS : this.strings.title.S) : \"\") +\n (compl.S ? \" · \" + compl.S : \"\") +\n (sTitleContentON && cTitleContentON ? \", \" : \"\") +\n (cTitleContentON ? this.localise(\"buttons/colors\") + \": \" + (titleC ? titleC : this.strings.title.C) : \"\") +\n (compl.C ? \" · \" + compl.C : \"\")\n );\n const sTitleWidth = sTitleText.node().getBBox().width;\n const remainigHeight = this.height - 30;\n const font = parseInt(sTitleText.style(\"font-size\")) * remainigHeight / sTitleWidth;\n sTitleText.style(\"font-size\", sTitleWidth > remainigHeight ? font + \"px\" : null);\n }\n\n processFrameData() {\n return this.__dataProcessed = this.model.dataArray;\n }\n\n _getTransition(duration) {\n return duration ? d3_transition()\n .duration(duration)\n .ease(d3_easeLinear) : d3_transition();\n } \n\n _bubblesInteract() {\n const _this = this;\n\n return {\n mouseover(event, d) {\n _this.hoverBubble = true;\n _this.MDL.highlighted.data.filter.set(d);\n _this._labels.showCloseCross(d, true);\n },\n\n mouseout(event, d) {\n _this.hoverBubble = false;\n _this.MDL.highlighted.data.filter.delete(d);\n //_this._setTooltip();\n _this._labels.showCloseCross(d, false);\n },\n\n click(event, d) {\n if (_this.draggingNow) return;\n // // const isSelected = d.isSelected;\n if (!isTrailBubble(d)) _this.MDL.selected.data.filter.toggle(d);\n //_this.MDL.selected.data.filter.toggle(d);\n // // //return to highlighted state\n // // if (!utils.isTouchDevice()) {\n // // if (isSelected) _this.model.marker.highlightMarker(d);\n // // _this.highlightDataPoints();\n }\n };\n }\n \n\n _updateMarkerSizeLimits() {\n this.services.layout.size;\n this.MDL.size.scale.domain;\n\n const {\n minRadiusPx,\n maxRadiusPx\n } = this.profileConstants;\n\n //transfer min max radius to size dialog via root ui observable (probably a cleaner way is possible)\n this.root.ui.minMaxRadius = {min: minRadiusPx, max: maxRadiusPx};\n \n const extent = this.MDL.size.scale.extent || [0, 1];\n \n let minArea = utils.radiusToArea(Math.max(maxRadiusPx * extent[0], minRadiusPx));\n let maxArea = utils.radiusToArea(Math.max(maxRadiusPx * extent[1], minRadiusPx));\n\n let range = minArea === maxArea? [minArea, maxArea] :\n d3_range(minArea, maxArea, (maxArea - minArea)/(this.sScale.domain().length - 1)).concat(maxArea);\n\n this.sScale.range(range);\n }\n\n _setTooltip(tooltipText, x, y, s, c, d) {\n if (tooltipText) {\n const labelValues = {};\n if (d) {\n labelValues.valueY = d[this._alias(\"y\")];\n labelValues.valueX = d[this._alias(\"x\")];\n labelValues.valueS = d.size;\n labelValues.valueC = d.color;\n labelValues.valueLST = d.size_label || null;\n labelValues.labelText = this.__labelWithoutFrame(d, this.localise);\n }\n\n const tooltipCache = {};\n tooltipCache.labelX0 = this.xScale.invert(x);\n tooltipCache.labelY0 = this.yScale.invert(y);\n tooltipCache.scaledS0 = s;\n tooltipCache.scaledC0 = null;\n\n this._labels.setTooltip(d, tooltipText, tooltipCache, labelValues);\n } else {\n this._labels.setTooltip();\n }\n }\n\n _getLabelText(d) {\n return this.KEYS.map(key => d.label[key]).join(\",\");\n //// + (this.model.ui.chart.timeInTrails && time && (this.model.time.start - this.model.time.end !== 0) ? \" \" + time : \"\");\n }\n\n _updateOpacity(selection) {\n //this.MDL.frame.value; //listen\n\n const highlightedFilter = this.MDL.highlighted.data.filter;\n const selectedFilter = this.MDL.selected.data.filter;\n\n this.__highlightedMarkers = new Map(highlightedFilter.markers);\n this.__selectedMarkers = new Map(selectedFilter.markers);\n this.__someSelected = this.__selectedMarkers.size != 0;\n this.__someHighlighted = this.__highlightedMarkers.size != 0;\n\n const _selection = selection || this.bubbles;\n if (_selection) _selection.style(\"opacity\", d => this._getBubbleOpacity(d, this.ui));\n }\n\n _getBubbleOpacity(d) { \n const ui = this.ui;\n\n if (this.__highlightedMarkers.has(d[Symbol.for(\"key\")])) return ui.opacityHighlight;\n if (isTrailBubble(d)) return ui.opacityRegular;\n if (this.__selectedMarkers.has(d[Symbol.for(\"key\")])) return ui.opacitySelect;\n\n if (this.__someSelected) return ui.opacitySelectDim;\n if (this.__someHighlighted) return ui.opacityHighlightDim;\n\n return ui.opacityRegular;\n }\n\n _setBubbleCrown(x, y, r, glow, skipInnerFill) {\n const bubbleCrown = this.DOM.bubbleCrown;\n if (x != null) {\n bubbleCrown.classed(\"vzb-hidden\", false);\n bubbleCrown.select(\".vzb-crown\")\n .attr(\"cx\", x)\n .attr(\"cy\", y)\n .attr(\"r\", r)\n .attr(\"fill\", skipInnerFill ? \"none\" : glow);\n bubbleCrown.selectAll(\".vzb-crown-glow\")\n .attr(\"cx\", x)\n .attr(\"cy\", y)\n .attr(\"r\", r + 10)\n .attr(\"stroke\", glow);\n\n } else {\n bubbleCrown.classed(\"vzb-hidden\", true);\n }\n\n }\n\n /*\n * Shows and hides axis projections\n */\n _axisProjections(d) {\n const {\n projectionX,\n projectionY,\n xAxisEl,\n yAxisEl\n } = this.DOM;\n\n if (d != null) {\n\n const valueY = d[this._alias(\"y\")];\n const valueX = d[this._alias(\"x\")];\n const radius = d.r;\n\n //if (!valueY && valueY !== 0 || !valueX && valueX !== 0 || !valueS && valueS !== 0) return;\n\n if (this.ui.whenHovering.showProjectionLineX\n && this.xScale(valueX) > 0 && this.xScale(valueX) < this.width\n && (this.yScale(valueY) + radius) < this.height) {\n projectionX\n .style(\"opacity\", 1)\n .attr(\"y2\", this.yScale(valueY) + radius)\n .attr(\"x1\", this.xScale(valueX))\n .attr(\"x2\", this.xScale(valueX));\n }\n\n if (this.ui.whenHovering.showProjectionLineY\n && this.yScale(valueY) > 0 && this.yScale(valueY) < this.height\n && (this.xScale(valueX) - radius) > 0) {\n projectionY\n .style(\"opacity\", 1)\n .attr(\"y1\", this.yScale(valueY))\n .attr(\"y2\", this.yScale(valueY))\n .attr(\"x1\", this.xScale(valueX) - radius);\n }\n\n if (this.ui.whenHovering.higlightValueX) xAxisEl.call(\n this.xAxis.highlightValue(valueX)\n );\n\n if (this.ui.whenHovering.higlightValueY) yAxisEl.call(\n this.yAxis.highlightValue(valueY)\n );\n\n\n } else {\n\n projectionX.style(\"opacity\", 0);\n projectionY.style(\"opacity\", 0);\n xAxisEl.call(this.xAxis.highlightValue(\"none\"));\n yAxisEl.call(this.yAxis.highlightValue(\"none\"));\n\n }\n\n }\n\n /*\n * Highlights all hovered bubbles\n */\n _highlightDataPoints() {\n const _this = this;\n\n const highlightedFilter = this.MDL.highlighted.data.filter;\n const selectedFilter = this.MDL.selected.data.filter;\n this.someHighlighted = highlightedFilter.any();\n\n //this.updateBubbleOpacity();\n const trailShow = this.MDL.trail.show;\n const trailStarts = this.MDL.trail.starts;\n const trailGroupDim = this.MDL.trail.groupDim;\n\n if (highlightedFilter.markers.size === 1) {\n const highlightedKey = highlightedFilter.markers.keys().next().value;\n const d = Object.assign(this.model.dataMap.getByStr(highlightedKey));\n const selectedKey = d[Symbol.for(\"trailHeadKey\")] || d[Symbol.for(\"key\")];\n\n const x = _this.xScale(d[_this._alias(\"x\")]);\n const y = _this.yScale(d[_this._alias(\"y\")]);\n const s = d.r;\n const c = _this.__getColor(selectedKey, d.color);\n let entityOutOfView = false;\n\n ////const titles = _this._formatSTitleValues(values.size[utils.getKey(d, dataKeys.size)], values.color[utils.getKey(d, dataKeys.color)]);\n ////_this._updateSTitle(titles[0], titles[1]);\n if (x + s < 0 || x - s > this.width || y + s < 0 || y - s > this.height) {\n entityOutOfView = true;\n }\n\n //show tooltip\n // const trailShow = this.MDL.trail.show;\n // const trailStarts = this.MDL.trail.starts;\n // const trailGroupDim = this.MDL.trail.groupDim;\n const isSelected = selectedFilter.has(selectedKey);\n const isTailTrail = !(trailStarts[selectedKey] - d[trailGroupDim]);\n const isTrail = isTrailBubble(d);\n\n let text = \"\";\n \n text = isSelected ? \n !trailShow || isTailTrail || (!isTrail && !this.hoverBubble) ? \"\": this.localise(d[trailGroupDim])\n : \n this.__labelWithoutFrame(d);\n \n _this._labels.highlight(null, false);\n _this._labels.highlight({ [Symbol.for(\"key\")]: selectedKey }, true);\n if (isSelected) {\n const skipCrownInnerFill = !isTrail;\n //!d.trailStartTime || d.trailStartTime == _this.model.time.formatDate(_this.time);\n _this._setBubbleCrown(x, y, s, c, skipCrownInnerFill);\n }\n\n if (!entityOutOfView) {\n _this._axisProjections(d);\n }\n\n //set tooltip and show axis projections\n if (text && !entityOutOfView) {\n _this._setTooltip(text, x, y, s + 3, c, d);\n }\n\n // // const selectedData = utils.find(_this.model.marker.select, f => utils.getKey(f, KEYS) == d[KEY]);\n // // if (selectedData) {\n // // const clonedSelectedData = utils.clone(selectedData);\n // // //change opacity to OPACITY_HIGHLT = 1.0;\n // // clonedSelectedData.opacity = 1.0;\n // // _this._trails.run([\"opacityHandler\"], clonedSelectedData);\n // // }\n } else {\n this._axisProjections();\n ////this._trails.run([\"opacityHandler\"]);\n //hide tooltip\n //this._updateSTitle();\n this._setTooltip();\n this._setBubbleCrown();\n this._labels.highlight(null, false);\n }\n\n }\n\n _blinkSuperHighlighted() {\n if (!this.MDL.superHighlighted) return;\n\n const superHighlightFilter = this.MDL.superHighlighted.data.filter;\n\n this.bubbles\n .classed(\"vzb-super-highlighted\", d => superHighlightFilter.has(d));\n }\n\n _selectDataPoints() {\n const _this = this;\n const selectedFilter = this.MDL.selected.data.filter;\n \n if (utils.isTouchDevice()) {\n _this.MDL.highlighted.data.filter.clear();\n _this._labels.showCloseCross(null, false);\n } else {\n //hide tooltip\n _this._setTooltip();\n ////_this._setBubbleCrown();\n }\n\n // utils.forEach(_this.bubbles.data(), d => {\n // d.isSelected = _this.model.marker.isSelected(d);\n // });\n\n _this.someSelected = selectedFilter.any();\n _this.nonSelectedOpacityZero = false;\n\n }\n\n _setupCursorMode() {\n const svg = this.DOM.chartSvgAll;\n if (this.ui.cursorMode === \"plus\") {\n svg.classed(\"vzb-zoomin\", true);\n svg.classed(\"vzb-zoomout\", false);\n svg.classed(\"vzb-panhand\", false);\n } else if (this.ui.cursorMode === \"minus\") {\n svg.classed(\"vzb-zoomin\", false);\n svg.classed(\"vzb-zoomout\", true);\n svg.classed(\"vzb-panhand\", false);\n } else if (this.ui.cursorMode === \"hand\") {\n svg.classed(\"vzb-zoomin\", false);\n svg.classed(\"vzb-zoomout\", false);\n svg.classed(\"vzb-panhand\", true);\n } else {\n svg.classed(\"vzb-zoomin\", false);\n svg.classed(\"vzb-zoomout\", false);\n svg.classed(\"vzb-panhand\", false);\n }\n }\n\n updateDecorations(){\n this.services.layout.size;\n this.MDL.x.scale.zoomed;\n this.MDL.y.scale.zoomed;\n this.decorations.update.bind(this)(this._getDuration());\n }\n\n _updateLabel(d, x, y, duration, showhide, hidden) {\n const selectedMarkers = this.MDL.selected.data.filter.markers;\n const key = d[Symbol.for(\"key\")];\n // only for selected markers\n if (selectedMarkers.has(key)) {\n const trail = this.MDL.trail;\n \n const cache = {};\n\n let labelText = \"\";\n\n //if (showhide && hidden && trail.show && trailStartTime && (trailStartTime < _this.time)) showhide = false;\n if (hidden && !trail.show) showhide = true;\n\n if (trail.show && key in trail.starts) {\n const trailStart = trail.starts[key];\n //console.log(\"trailstart\", trailStart)\n // if this bubble is trail start bubble\n if (trailStart >= this.MDL.frame.value || showhide) {\n const trailData = this.model.getDataMapByFrameValue(trailStart).getByStr(key);\n \n cache.labelText = labelText = this.__labelWithFrame(trailData);\n cache.labelX0 = trailData[this._alias(\"x\")];\n cache.labelY0 = trailData[this._alias(\"y\")];\n cache.scaledC0 = trailData.color != null ? this.cScale(trailData.color) : COLOR_WHITEISH,\n cache.scaledS0 = (trailData.size || trailData.size === 0) ? utils.areaToRadius(this.sScale(trailData.size)) : null;\n cache.valueS0 = trailData.size;\n trailData.hidden = hidden;\n this._labels.updateLabel(trailData, cache, cache.labelX0, cache.labelY0, trailData.size, trailData.color, labelText, trailData.size_label, duration, showhide);\n }\n } else {\n cache.labelText = labelText = this.__labelWithoutFrame(d);\n cache.labelX0 = x;\n cache.labelY0 = y;\n cache.scaledC0 = d.color != null ? this.cScale(d.color) : COLOR_WHITEISH,\n cache.scaledS0 = (d.size || d.size === 0) ? utils.areaToRadius(this.sScale(d.size)) : null;\n cache.valueS0 = d.size;\n d.hidden = hidden;\n this._labels.updateLabel(d, cache, x, y, d.size, d.color, labelText, d.size_label, duration, showhide);\n }\n }\n }\n \n _updateLabels(duration) {\n //console.log(\"updateLabels\");\n\n const selectedFilter = this.MDL.selected.data.filter;\n const trail = this.MDL.trail;\n\n for (const key of selectedFilter.markers.keys()) {\n if (!(key in trail.starts))\n continue;\n\n if (!this._labels.cached[key]) this._labels.cached[key] = {};\n const cache = this._labels.cached[key];\n\n const datamap = (trail.show ? this.model.getDataMapByFrameValue(trail.starts[key]) : this.model.dataMap);\n if (!datamap.hasByStr(key))\n continue;\n\n const d = datamap.getByStr(key);\n \n cache.labelText = this[(trail.show && this.ui.timeInTrails ? \"__labelWithFrame\" : \"__labelWithoutFrame\")](d);\n cache.labelX0 = d[this._alias(\"x\")];\n cache.labelY0 = d[this._alias(\"y\")];\n cache.scaledC0 = d.color != null ? this.cScale(d.color) : COLOR_WHITEISH,\n cache.scaledS0 = (d.size || d.size === 0) ? utils.areaToRadius(this.sScale(d.size)) : null;\n cache.valueS0 = d.size;\n cache.initTextBBox = null;\n cache.initFontSize = null;\n this._labels.updateLabel({ [Symbol.for(\"key\")]: key }, null, null, null, null, null, null, d.size_label, duration);\n }\n }\n\n __labelWithoutFrame(d) {\n if (typeof d.label == \"object\") \n return Object.entries(d.label)\n .filter(entry => entry[0] != this.MDL.frame.data.concept)\n .map(entry => utils.isNumber(entry[1]) ? (entry[0] + \": \" + entry[1]) : entry[1])\n .join(\", \");\n if (d.label != null) return \"\" + d.label;\n return d[Symbol.for(\"key\")];\n }\n\n __labelWithFrame(d) {\n const frameConcept = this.MDL.frame.data.concept;\n return this.__labelWithoutFrame(d) + \" \" + this.localise(d && d.label && d.label[frameConcept] || d && d.frame || this.MDL.frame.value);\n }\n\n _alias(enc) {\n return this.state.alias?.[enc] || enc;\n }\n}\n\n_VizabiBubbleChart.DEFAULT_UI = {\n show_ticks: true,\n showForecast: false,\n showForecastOverlay: true,\n pauseBeforeForecast: true,\n opacityHighlight: 1.0,\n opacitySelect: 1.0,\n opacityHighlightDim: 0.1,\n opacitySelectDim: 0.3,\n opacityRegular: 0.5,\n timeInBackground: true,\n timeInTrails: true,\n lockNonSelected: 0,\n numberFormatSIPrefix: true,\n panWithArrow: false,\n adaptMinMaxZoom: false,\n cursorMode: \"arrow\",\n zoomOnScrolling: true,\n decorations: {\n enabled: true,\n xAxisGroups: null //left to be set by external page\n },\n superhighlightOnMinimapHover: true,\n whenHovering: {\n showProjectionLineX: true,\n showProjectionLineY: true,\n higlightValueX: true,\n higlightValueY: true\n },\n labels: {\n enabled: true,\n dragging: true,\n removeLabelBox: false\n },\n margin: {\n left: 0,\n top: 0\n }\n};\n\n//export default BubbleChart;\nexport const VizabiBubbleChart = decorate(_VizabiBubbleChart, {\n \"MDL\": computed,\n \"axisTitleComplimentStrings\": observable,\n \"cScale\": computed\n});\n\nChart.add(\"bubblechart\", VizabiBubbleChart);\n","import \"./styles.scss\";\nimport { \n BaseComponent,\n TimeSlider,\n DataNotes,\n DataWarning,\n ErrorMessage,\n SpaceConfig,\n LocaleService,\n LayoutService,\n CapitalVizabiService,\n TreeMenu,\n SteppedSlider,\n Dialogs,\n ButtonList,\n Repeater,\n versionInfo\n} from \"@vizabi/shared-components\";\nimport {VizabiBubbleChart} from \"./component.js\";\n\nexport default class BubbleChart extends BaseComponent {\n\n constructor(config){\n\n const markerName = config.options?.markerNames?.bubble || \"bubble\";\n const fullMarker = config.model.markers[markerName];\n config.Vizabi.utils.applyDefaults(fullMarker.config, BubbleChart.DEFAULT_CORE(markerName)); \n\n const frameType = config.Vizabi.stores.encodings.modelTypes.frame;\n const { marker, splashMarker } = frameType.splashMarker(fullMarker);\n \n config.model.markers[markerName] = marker;\n\n config.name = \"bubblechart\";\n\n config.subcomponents = [{\n type: Repeater,\n placeholder: \".vzb-repeater\",\n model: marker,\n options: {\n repeatedComponent: VizabiBubbleChart,\n repeatedComponentCssClass: \"vzb-bubblechart\"\n },\n name: \"chart\",\n },{\n type: TimeSlider,\n placeholder: \".vzb-timeslider\",\n model: marker,\n name: \"time-slider\"\n },{\n type: SteppedSlider,\n placeholder: \".vzb-speedslider\",\n model: marker,\n name: \"speed-slider\"\n },{\n type: TreeMenu,\n placeholder: \".vzb-treemenu\",\n model: marker,\n name: \"tree-menu\"\n },{\n type: DataWarning,\n placeholder: \".vzb-datawarning\",\n options: {button: \".vzb-datawarning-button\"},\n model: marker,\n name: \"data-warning\"\n },{\n type: DataNotes,\n placeholder: \".vzb-datanotes\",\n model: marker\n },{\n type: Dialogs,\n placeholder: \".vzb-dialogs\",\n model: marker,\n name: \"dialogs\"\n },{\n type: ButtonList,\n placeholder: \".vzb-buttonlist\",\n model: marker,\n name: \"buttons\"\n },{\n type: SpaceConfig,\n placeholder: \".vzb-spaceconfig\",\n options: {button: \".vzb-spaceconfig-button\"},\n model: marker,\n name: \"space-config\"\n },{\n type: ErrorMessage,\n placeholder: \".vzb-errormessage\",\n model: marker,\n name: \"error-message\"\n }];\n\n config.template = `\n <div class=\"vzb-repeater\"></div>\n <div class=\"vzb-animationcontrols\">\n <div class=\"vzb-timeslider\"></div>\n <div class=\"vzb-speedslider\"></div>\n </div>\n <div class=\"vzb-sidebar\">\n <div class=\"vzb-dialogs\"></div>\n <div class=\"vzb-buttonlist\"></div>\n </div>\n <div class=\"vzb-treemenu\"></div>\n <div class=\"vzb-datawarning\"></div>\n <div class=\"vzb-spaceconfig\"></div>\n <div class=\"vzb-datanotes\"></div>\n <div class=\"vzb-errormessage\"></div>\n `;\n\n config.services = {\n Vizabi: new CapitalVizabiService({Vizabi: config.Vizabi}),\n locale: new LocaleService(config.locale),\n layout: new LayoutService(config.layout)\n };\n\n super(config);\n\n this.splashMarker = splashMarker;\n }\n}\n\nBubbleChart.DEFAULT_UI = {\n chart: {\n }\n};\n\nBubbleChart.mainComponent = VizabiBubbleChart;\n\nBubbleChart.DEFAULT_CORE = (markerName) => ({\n requiredEncodings: [\"x\", \"y\", \"size\"],\n encoding: {\n \"selected\": {\n modelType: \"selection\",\n data: { \n filter: { \n ref: `markers.${markerName}.encoding.trail.data.filter`\n }\n }\n },\n \"highlighted\": { modelType: \"selection\" },\n \"superhighlighted\": { modelType: \"selection\" },\n \"x\": { },\n \"y\": { },\n \"order\": { modelType: \"order\",\n data: { \n ref: `markers.${markerName}.encoding.size.data.config`\n }\n },\n \"size\": {\n scale: {\n modelType: \"size\",\n range: [0, 50]\n }\n },\n \"color\": { scale: { modelType: \"color\" } },\n \"label\": { data: { modelType: \"entityPropertyDataConfig\" } },\n \"frame\": { modelType: \"frame\" },\n \"trail\": { modelType: \"trail\" }, \n \"size_label\": {\n data: {\n constant: \"_default\"\n },\n scale: {\n modelType: \"size\",\n allowedTypes: [\"linear\", \"log\", \"genericLog\", \"pow\", \"point\", \"ordinal\"]\n }\n },\n \"repeat\": {\n modelType: \"repeat\",\n allowEnc: [\"y\", \"x\"]\n }\n }\n});\n\nBubbleChart.versionInfo = { version: __VERSION, build: __BUILD, package: __PACKAGE_JSON_FIELDS, sharedComponents: versionInfo};\n"],"names":["require$$0","require$$1","this","d3_drag","d3_zoom","d3_pointer","d3_select","d3_zoomIdentity","utils","d3_extent","d3_zoomTransform","Utils","d3_min","d3_max","Icons","Chart","Labels","DateTimeBackground","axisSmart","runInAction","action","d3_transition","d3_easeLinear","d3_range","decorate","computed","observable","BaseComponent","Repeater","TimeSlider","SteppedSlider","TreeMenu","DataWarning","DataNotes","Dialogs","ButtonList","SpaceConfig","ErrorMessage","CapitalVizabiService","LocaleService","LayoutService","versionInfo"],"mappings":"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"}