diff --git a/README.md b/README.md index b711e4a..bcaed0f 100644 --- a/README.md +++ b/README.md @@ -68,21 +68,6 @@ npm install --save react-stockcharts [Ready to use Examples](https://github.com/rrag/react-stockcharts-examples2) -### Demo - -[Demo v1](http://rrag.github.io/stockcharts-demo/) (closed source) built with react-stockcharts - -[Demo v2](https://demo.reactstockcharts.org/) - Includes -- Serverside calculation of indicators -- Pan to load more -- option of websocket/xhr to download data -- Multiple chart types, including advanced types -- Drawing objects -- Indicators -- Compare with another - -I am exploring options to license this, contact me if you are interested - ### Contributing Refer to [CONTRIBUTING.md](./CONTRIBUTING.md) diff --git a/es/index.js b/es/index.js index e81d17a..ba99b5e 100644 --- a/es/index.js +++ b/es/index.js @@ -8,7 +8,7 @@ export { default as GenericComponent } from "./lib/GenericComponent"; export { default as BackgroundText } from "./lib/BackgroundText"; export { default as ZoomButtons } from "./lib/ZoomButtons"; -export var version = "0.7.6"; +export var version = "0.7.8"; /* // chart types & Series diff --git a/es/index.js.map b/es/index.js.map index 354c6c5..0dabd3e 100644 --- a/es/index.js.map +++ b/es/index.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../src/index.js"],"names":["default","ChartCanvas","Chart","GenericChartComponent","GenericComponent","BackgroundText","ZoomButtons","version"],"mappings":";;AAEA;AACA,SAASA,WAAWC,WAApB,QAAuC,mBAAvC;AACA,SAASD,WAAWE,KAApB,QAAiC,aAAjC;AACA,SAASF,WAAWG,qBAApB,QAAiD,6BAAjD;AACA,SAASH,WAAWI,gBAApB,QAA4C,wBAA5C;AACA,SAASJ,WAAWK,cAApB,QAA0C,sBAA1C;AACA,SAASL,WAAWM,WAApB,QAAuC,mBAAvC;;AAEA,OAAO,IAAMC,UAAU,OAAhB;;AAEP","file":"index.js","sourcesContent":["\n\n// common components\nexport { default as ChartCanvas } from \"./lib/ChartCanvas\";\nexport { default as Chart } from \"./lib/Chart\";\nexport { default as GenericChartComponent } from \"./lib/GenericChartComponent\";\nexport { default as GenericComponent } from \"./lib/GenericComponent\";\nexport { default as BackgroundText } from \"./lib/BackgroundText\";\nexport { default as ZoomButtons } from \"./lib/ZoomButtons\";\n\nexport const version = \"0.7.6\";\n\n/*\n// chart types & Series\nimport * as series from \"./lib/series\";\nimport * as scale from \"./lib/scale\";\n\nimport * as coordinates from \"./lib/coordinates\";\nimport * as indicator from \"./lib/indicator\";\nimport * as algorithm from \"./lib/algorithm\";\n\nimport * as annotation from \"./lib/annotation\";\n\nimport * as axes from \"./lib/axes\";\nimport * as tooltip from \"./lib/tooltip\";\nimport * as helper from \"./lib/helper\";\n\nimport * as interactive from \"./lib/interactive\";\nimport * as utils from \"./lib/utils\";\n\n*/\n"]} \ No newline at end of file +{"version":3,"sources":["../../src/index.js"],"names":["default","ChartCanvas","Chart","GenericChartComponent","GenericComponent","BackgroundText","ZoomButtons","version"],"mappings":";;AAEA;AACA,SAASA,WAAWC,WAApB,QAAuC,mBAAvC;AACA,SAASD,WAAWE,KAApB,QAAiC,aAAjC;AACA,SAASF,WAAWG,qBAApB,QAAiD,6BAAjD;AACA,SAASH,WAAWI,gBAApB,QAA4C,wBAA5C;AACA,SAASJ,WAAWK,cAApB,QAA0C,sBAA1C;AACA,SAASL,WAAWM,WAApB,QAAuC,mBAAvC;;AAEA,OAAO,IAAMC,UAAU,OAAhB;;AAEP","file":"index.js","sourcesContent":["\n\n// common components\nexport { default as ChartCanvas } from \"./lib/ChartCanvas\";\nexport { default as Chart } from \"./lib/Chart\";\nexport { default as GenericChartComponent } from \"./lib/GenericChartComponent\";\nexport { default as GenericComponent } from \"./lib/GenericComponent\";\nexport { default as BackgroundText } from \"./lib/BackgroundText\";\nexport { default as ZoomButtons } from \"./lib/ZoomButtons\";\n\nexport const version = \"0.7.8\";\n\n/*\n// chart types & Series\nimport * as series from \"./lib/series\";\nimport * as scale from \"./lib/scale\";\n\nimport * as coordinates from \"./lib/coordinates\";\nimport * as indicator from \"./lib/indicator\";\nimport * as algorithm from \"./lib/algorithm\";\n\nimport * as annotation from \"./lib/annotation\";\n\nimport * as axes from \"./lib/axes\";\nimport * as tooltip from \"./lib/tooltip\";\nimport * as helper from \"./lib/helper\";\n\nimport * as interactive from \"./lib/interactive\";\nimport * as utils from \"./lib/utils\";\n\n*/\n"]} \ No newline at end of file diff --git a/es/lib/ChartCanvas.js b/es/lib/ChartCanvas.js index f427f49..a0defc1 100644 --- a/es/lib/ChartCanvas.js +++ b/es/lib/ChartCanvas.js @@ -1074,6 +1074,7 @@ var ChartCanvas = function (_Component) { } // do reset newState = resetChart(nextProps); + this.mutableState = {}; } else { var _state$xScale$domain = this.state.xScale.domain(), _state$xScale$domain2 = _slicedToArray(_state$xScale$domain, 2), diff --git a/es/lib/ChartCanvas.js.map b/es/lib/ChartCanvas.js.map index c174ced..f35602d 100644 --- a/es/lib/ChartCanvas.js.map +++ b/es/lib/ChartCanvas.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../../src/lib/ChartCanvas.js"],"names":["React","Component","PropTypes","extent","d3Extent","min","max","head","last","isDefined","isNotDefined","clearCanvas","shallowEqual","identity","noop","functor","getLogger","mouseBasedZoomAnchor","lastVisibleItemBasedZoomAnchor","rightDomainBasedZoomAnchor","getNewChartConfig","getChartConfigWithUpdatedYScales","getCurrentCharts","getCurrentItem","EventCapture","CanvasContainer","evaluator","log","CANDIDATES_FOR_RESET","shouldResetChart","thisProps","nextProps","every","result","key","getCursorStyle","tooltipStyle","getDimensions","props","height","margin","top","bottom","width","left","right","getXScaleDirection","flipXScale","calculateFullData","fullData","data","plotFull","xScale","clamp","pointsPerPxThreshold","xAccessor","displayXAccessor","minPointsPerPxThreshold","useWholeData","filterData","copy","resetChart","firstCalculation","process","env","NODE_ENV","state","calculateState","initialPlotData","plotData","postCalculator","children","dimensions","chartConfig","domain","updateChart","newState","initialXScale","lastItemWasVisible","initialChartConfig","lastItem","start","end","padding","maintainPointsPerPixelOnResize","direction","updatedXScale","setXRange","range","rangeStart","rangeEnd","newRangeStart","newRangeEnd","newDomainExtent","newStart","lastItemX","response","fallbackStart","fallbackEnd","dx","map","x","invert","newEnd","inputXAccesor","xExtentsProp","xExtents","i","length","prev","curr","Error","d","each","rangeRoundPoints","isNaN","pinchCoordinates","pinch","touch1Pos","touch2Pos","topLeft","Math","bottomRight","ChartCanvas","getDataInfo","bind","getCanvasContexts","handleMouseMove","handleMouseEnter","handleMouseLeave","handleZoom","handlePinchZoom","handlePinchZoomEnd","handlePan","handlePanEnd","handleClick","handleMouseDown","handleDoubleClick","handleContextMenu","handleDragStart","handleDrag","handleDragEnd","panHelper","pinchZoomHelper","xAxisZoom","yAxisZoom","resetYDomain","calculateStateForDomain","generateSubscriptionId","draw","redraw","getAllPanConditions","subscriptions","subscribe","unsubscribe","amIOnTop","saveEventCaptureNode","saveCanvasContainerNode","setCursorClass","getMutableState","interactiveState","panInProgress","mutableState","lastSubscriptionId","node","eventCaptureNode","canvasContainerNode","canvases","axes","mouseCoord","ratio","bg","id","rest","getPanConditions","draggable","panEnabled","concat","filter","className","dragableComponents","mouseXY","e","currentCharts","currentItem","triggerEvent","newDomain","currentPlotData","currentDomain","beforePlotData","updatedScale","initialPinch","finalPinch","initialPinchXScale","iTL","iBR","fTL","fBR","xDash","round","yDash","y","cancelDrag","waitingForPinchZoomAnimationFrame","requestAnimationFrame","clearBothCanvas","trigger","clearThreeCanvas","firstItem","onLoadMore","setState","zoomDirection","zoomMultiplier","zoomAnchor","item","cx","c","show","chartId","yScale","yPanEnabled","type","forEach","listener","force","chartsToPan","dy","hackyWayToStopPanBeyondBounds__plotData","hackyWayToStopPanBeyondBounds__domain","mousePosition","panStartXScale","dxdy","waitingForPanAnimationFrame","inputType","waitingForMouseMoveAnimationFrame","prevMouseXY","clearMouseCanvas","startPos","chartCanvasType","reset","interaction","isInteractionEnabled","prevLastItem","calculatedState","changed","newChartConfig","realYDomain","zIndex","defaultFocus","mouseMoveEvent","panEvent","zoomEvent","useCrossHairStyleCursor","onSelect","cursorStyle","cursor","position","idx","disableInteraction","propTypes","number","isRequired","object","oneOf","array","func","oneOfType","string","seriesName","bool","shape","propName","console","warn","defaultProps","childContextTypes","arrayOf","origin","yExtents","yExtentsProvider","mouseCoordinates","at","format","ohlcv","date","open","high","low","close","volume"],"mappings":"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","file":"ChartCanvas.js","sourcesContent":["\n\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { extent as d3Extent, min, max } from \"d3-array\";\n\nimport {\n\thead,\n\tlast,\n\tisDefined,\n\tisNotDefined,\n\tclearCanvas,\n\tshallowEqual,\n\tidentity,\n\tnoop,\n\tfunctor,\n\tgetLogger,\n} from \"./utils\";\n\n/* eslint-disable no-unused-vars */\nimport {\n\tmouseBasedZoomAnchor,\n\tlastVisibleItemBasedZoomAnchor,\n\trightDomainBasedZoomAnchor,\n} from \"./utils/zoomBehavior\";\n/* eslint-enable no-unused-vars */\n\nimport { getNewChartConfig, getChartConfigWithUpdatedYScales, getCurrentCharts, getCurrentItem } from \"./utils/ChartDataUtil\";\n\nimport EventCapture from \"./EventCapture\";\n\nimport CanvasContainer from \"./CanvasContainer\";\nimport evaluator from \"./scale/evaluator\";\n\nconst log = getLogger(\"ChartCanvas\");\n\nconst CANDIDATES_FOR_RESET = [\n\t\"seriesName\",\n\t/* \"data\",*/\n\t/* \"xAccessor\",*/\n];\n\nfunction shouldResetChart(thisProps, nextProps) {\n\treturn !CANDIDATES_FOR_RESET.every(key => {\n\t\tconst result = shallowEqual(thisProps[key], nextProps[key]);\n\t\t// console.log(key, result);\n\t\treturn result;\n\t});\n}\n\nfunction getCursorStyle() {\n\tconst tooltipStyle = `\n\t.react-stockcharts-grabbing-cursor {\n\t\tpointer-events: all;\n\t\tcursor: -moz-grabbing;\n\t\tcursor: -webkit-grabbing;\n\t\tcursor: grabbing;\n\t}\n\t.react-stockcharts-crosshair-cursor {\n\t\tpointer-events: all;\n\t\tcursor: crosshair;\n\t}\n\t.react-stockcharts-tooltip-hover {\n\t\tpointer-events: all;\n\t\tcursor: pointer;\n\t}\n\t.react-stockcharts-avoid-interaction {\n\t\tpointer-events: none;\n\t}\n\t.react-stockcharts-enable-interaction {\n\t\tpointer-events: all;\n\t}\n\t.react-stockcharts-tooltip {\n\t\tpointer-events: all;\n\t\tcursor: pointer;\n\t}\n\t.react-stockcharts-default-cursor {\n\t\tcursor: default;\n\t}\n\t.react-stockcharts-move-cursor {\n\t\tcursor: move;\n\t}\n\t.react-stockcharts-pointer-cursor {\n\t\tcursor: pointer;\n\t}\n\t.react-stockcharts-ns-resize-cursor {\n\t\tcursor: ns-resize;\n\t}\n\t.react-stockcharts-ew-resize-cursor {\n\t\tcursor: ew-resize;\n\t}`;\n\treturn ();\n}\n\nfunction getDimensions(props) {\n\treturn {\n\t\theight: props.height - props.margin.top - props.margin.bottom,\n\t\twidth: props.width - props.margin.left - props.margin.right,\n\t};\n}\n\nfunction getXScaleDirection(flipXScale) {\n\treturn flipXScale ? -1 : 1;\n}\n\nfunction calculateFullData(props) {\n\tconst { data: fullData, plotFull, xScale, clamp, pointsPerPxThreshold, flipXScale } = props;\n\tconst { xAccessor, displayXAccessor, minPointsPerPxThreshold } = props;\n\n\tconst useWholeData = isDefined(plotFull)\n\t\t? plotFull\n\t\t: xAccessor === identity;\n\n\tconst { filterData } = evaluator({\n\t\txScale,\n\t\tuseWholeData,\n\t\tclamp,\n\t\tpointsPerPxThreshold,\n\t\tminPointsPerPxThreshold,\n\t\tflipXScale,\n\t});\n\n\treturn {\n\t\txAccessor,\n\t\tdisplayXAccessor: displayXAccessor || xAccessor,\n\t\txScale: xScale.copy(),\n\t\tfullData,\n\t\tfilterData\n\t};\n}\nfunction resetChart(props, firstCalculation = false) {\n\tif (process.env.NODE_ENV !== \"production\") {\n\t\tif (!firstCalculation) log(\"CHART RESET\");\n\t}\n\n\tconst state = calculateState(props);\n\tconst { xAccessor, displayXAccessor, fullData } = state;\n\tconst { plotData: initialPlotData, xScale } = state;\n\tconst { postCalculator, children } = props;\n\n\tconst plotData = postCalculator(initialPlotData);\n\n\tconst dimensions = getDimensions(props);\n\tconst chartConfig = getChartConfigWithUpdatedYScales(\n\t\tgetNewChartConfig(dimensions, children),\n\t\t{ plotData, xAccessor, displayXAccessor, fullData },\n\t\txScale.domain()\n\t);\n\n\treturn {\n\t\t...state,\n\t\txScale,\n\t\tplotData,\n\t\tchartConfig,\n\t};\n}\n\nfunction updateChart(\n\tnewState,\n\tinitialXScale,\n\tprops,\n\tlastItemWasVisible,\n\tinitialChartConfig,\n) {\n\n\tconst { fullData, xScale, xAccessor, displayXAccessor, filterData } = newState;\n\n\tconst lastItem = last(fullData);\n\tconst [start, end] = initialXScale.domain();\n\n\tif (process.env.NODE_ENV !== \"production\") {\n\t\tlog(\"TRIVIAL CHANGE\");\n\t}\n\n\tconst { postCalculator, children, padding, flipXScale } = props;\n\tconst { maintainPointsPerPixelOnResize } = props;\n\tconst direction = getXScaleDirection(flipXScale);\n\tconst dimensions = getDimensions(props);\n\n\tconst updatedXScale = setXRange(xScale, dimensions, padding, direction);\n\n\t// console.log(\"lastItemWasVisible =\", lastItemWasVisible, end, xAccessor(lastItem), end >= xAccessor(lastItem));\n\tlet initialPlotData;\n\tif (!lastItemWasVisible || end >= xAccessor(lastItem)) {\n\t\t// resize comes here...\n\t\t// get plotData between [start, end] and do not change the domain\n\t\tconst [rangeStart, rangeEnd] = initialXScale.range();\n\t\tconst [newRangeStart, newRangeEnd] = updatedXScale.range();\n\t\tconst newDomainExtent = ((newRangeEnd - newRangeStart) / (rangeEnd - rangeStart)) * (end - start);\n\t\tconst newStart = maintainPointsPerPixelOnResize\n\t\t\t? end - newDomainExtent\n\t\t\t: start;\n\n\t\tconst lastItemX = initialXScale(xAccessor(lastItem));\n\t\t// console.log(\"pointsPerPixel => \", newStart, start, end, updatedXScale(end));\n\t\tconst response = filterData(\n\t\t\tfullData, [newStart, end], xAccessor, updatedXScale,\n\t\t\t{ fallbackStart: start, fallbackEnd: { lastItem, lastItemX } }\n\t\t);\n\t\tinitialPlotData = response.plotData;\n\t\tupdatedXScale.domain(response.domain);\n\t\t// console.log(\"HERE!!!!!\", start, end);\n\t} else if (lastItemWasVisible\n\t\t\t&& end < xAccessor(lastItem)) {\n\t\t// this is when a new item is added and last item was visible\n\t\t// so slide over and show the new item also\n\n\t\t// get plotData between [xAccessor(l) - (end - start), xAccessor(l)] and DO change the domain\n\t\tconst dx = initialXScale(xAccessor(lastItem)) - initialXScale.range()[1];\n\t\tconst [newStart, newEnd] = initialXScale.range().map(x => x + dx).map(initialXScale.invert);\n\n\n\t\tconst response = filterData(fullData, [newStart, newEnd], xAccessor, updatedXScale);\n\t\tinitialPlotData = response.plotData;\n\t\tupdatedXScale.domain(response.domain);\t\t// if last item was visible, then shift\n\t}\n\t// plotData = getDataOfLength(fullData, showingInterval, plotData.length)\n\tconst plotData = postCalculator(initialPlotData);\n\tconst chartConfig = getChartConfigWithUpdatedYScales(\n\t\tgetNewChartConfig(dimensions, children, initialChartConfig),\n\t\t{ plotData, xAccessor, displayXAccessor, fullData },\n\t\tupdatedXScale.domain()\n\t);\n\n\treturn {\n\t\txScale: updatedXScale,\n\t\txAccessor,\n\t\tchartConfig,\n\t\tplotData,\n\t\tfullData,\n\t\tfilterData,\n\t};\n}\n\nfunction calculateState(props) {\n\n\tconst {\n\t\txAccessor: inputXAccesor, xExtents: xExtentsProp, data, padding, flipXScale\n\t} = props;\n\n\tif (process.env.NODE_ENV !== \"production\" && isDefined(props.xScale.invert)) {\n\t\tfor (let i = 1; i < data.length; i++) {\n\t\t\tconst prev = data[i - 1];\n\t\t\tconst curr = data[i];\n\t\t\tif (inputXAccesor(prev) > inputXAccesor(curr)) {\n\t\t\t\tthrow new Error(\"'data' is not sorted on 'xAccessor', send 'data' sorted in ascending order of 'xAccessor'\");\n\t\t\t}\n\t\t}\n\t}\n\n\tconst direction = getXScaleDirection(flipXScale);\n\tconst dimensions = getDimensions(props);\n\n\tconst extent = typeof xExtentsProp === \"function\"\n\t\t? xExtentsProp(data)\n\t\t: d3Extent(xExtentsProp.map(d => functor(d)).map(each => each(data, inputXAccesor)));\n\n\tconst { xAccessor, displayXAccessor, xScale, fullData, filterData } = calculateFullData(props);\n\tconst updatedXScale = setXRange(xScale, dimensions, padding, direction);\n\n\tconst { plotData, domain } = filterData(fullData, extent, inputXAccesor, updatedXScale);\n\n\treturn {\n\t\tplotData,\n\t\txScale: updatedXScale.domain(domain),\n\t\txAccessor,\n\t\tdisplayXAccessor,\n\t\tfullData,\n\t\tfilterData,\n\t};\n}\n\nfunction setXRange(xScale, dimensions, padding, direction = 1) {\n\tif (xScale.rangeRoundPoints) {\n\t\tif (isNaN(padding)) throw new Error(\"padding has to be a number for ordinal scale\");\n\t\txScale.rangeRoundPoints([0, dimensions.width], padding);\n\t} else if (xScale.padding) {\n\t\tif (isNaN(padding)) throw new Error(\"padding has to be a number for ordinal scale\");\n\t\txScale.range([0, dimensions.width]);\n\t\txScale.padding(padding / 2);\n\t} else {\n\t\tconst { left, right } = isNaN(padding)\n\t\t\t? padding\n\t\t\t: { left: padding, right: padding };\n\t\tif (direction > 0) {\n\t\t\txScale.range([left, dimensions.width - right]);\n\t\t} else {\n\t\t\txScale.range([dimensions.width - right, left]);\n\t\t}\n\t}\n\treturn xScale;\n}\n\nfunction pinchCoordinates(pinch) {\n\tconst { touch1Pos, touch2Pos } = pinch;\n\n\treturn {\n\t\ttopLeft: [Math.min(touch1Pos[0], touch2Pos[0]), Math.min(touch1Pos[1], touch2Pos[1])],\n\t\tbottomRight: [Math.max(touch1Pos[0], touch2Pos[0]), Math.max(touch1Pos[1], touch2Pos[1])]\n\t};\n}\n\n\nclass ChartCanvas extends Component {\n\tconstructor() {\n\t\tsuper();\n\t\tthis.getDataInfo = this.getDataInfo.bind(this);\n\t\tthis.getCanvasContexts = this.getCanvasContexts.bind(this);\n\n\t\tthis.handleMouseMove = this.handleMouseMove.bind(this);\n\t\tthis.handleMouseEnter = this.handleMouseEnter.bind(this);\n\t\tthis.handleMouseLeave = this.handleMouseLeave.bind(this);\n\t\tthis.handleZoom = this.handleZoom.bind(this);\n\t\tthis.handlePinchZoom = this.handlePinchZoom.bind(this);\n\t\tthis.handlePinchZoomEnd = this.handlePinchZoomEnd.bind(this);\n\t\tthis.handlePan = this.handlePan.bind(this);\n\t\tthis.handlePanEnd = this.handlePanEnd.bind(this);\n\t\tthis.handleClick = this.handleClick.bind(this);\n\t\tthis.handleMouseDown = this.handleMouseDown.bind(this);\n\t\tthis.handleDoubleClick = this.handleDoubleClick.bind(this);\n\t\tthis.handleContextMenu = this.handleContextMenu.bind(this);\n\t\tthis.handleDragStart = this.handleDragStart.bind(this);\n\t\tthis.handleDrag = this.handleDrag.bind(this);\n\t\tthis.handleDragEnd = this.handleDragEnd.bind(this);\n\n\t\tthis.panHelper = this.panHelper.bind(this);\n\t\tthis.pinchZoomHelper = this.pinchZoomHelper.bind(this);\n\t\tthis.xAxisZoom = this.xAxisZoom.bind(this);\n\t\tthis.yAxisZoom = this.yAxisZoom.bind(this);\n\t\tthis.resetYDomain = this.resetYDomain.bind(this);\n\t\tthis.calculateStateForDomain = this.calculateStateForDomain.bind(this);\n\t\tthis.generateSubscriptionId = this.generateSubscriptionId.bind(this);\n\t\tthis.draw = this.draw.bind(this);\n\t\tthis.redraw = this.redraw.bind(this);\n\t\tthis.getAllPanConditions = this.getAllPanConditions.bind(this);\n\n\t\tthis.subscriptions = [];\n\t\tthis.subscribe = this.subscribe.bind(this);\n\t\tthis.unsubscribe = this.unsubscribe.bind(this);\n\t\tthis.amIOnTop = this.amIOnTop.bind(this);\n\t\tthis.saveEventCaptureNode = this.saveEventCaptureNode.bind(this);\n\t\tthis.saveCanvasContainerNode = this.saveCanvasContainerNode.bind(this);\n\t\tthis.setCursorClass = this.setCursorClass.bind(this);\n\t\tthis.getMutableState = this.getMutableState.bind(this);\n\t\t// this.canvasDrawCallbackList = [];\n\t\tthis.interactiveState = [];\n\t\tthis.panInProgress = false;\n\n\t\tthis.state = {};\n\t\tthis.mutableState = {};\n\t\tthis.lastSubscriptionId = 0;\n\t}\n\tsaveEventCaptureNode(node) {\n\t\tthis.eventCaptureNode = node;\n\t}\n\tsaveCanvasContainerNode(node) {\n\t\tthis.canvasContainerNode = node;\n\t}\n\tgetMutableState() {\n\t\treturn this.mutableState;\n\t}\n\tgetDataInfo() {\n\t\treturn {\n\t\t\t...this.state,\n\t\t\tfullData: this.fullData,\n\t\t};\n\t}\n\tgetCanvasContexts() {\n\t\tif (this.canvasContainerNode) {\n\t\t\treturn this.canvasContainerNode.getCanvasContexts();\n\t\t}\n\t}\n\tgenerateSubscriptionId() {\n\t\tthis.lastSubscriptionId++;\n\t\treturn this.lastSubscriptionId;\n\t}\n\tclearBothCanvas() {\n\t\tconst canvases = this.getCanvasContexts();\n\t\tif (canvases && canvases.axes) {\n\t\t\tclearCanvas([\n\t\t\t\tcanvases.axes,\n\t\t\t\t// canvases.hover,\n\t\t\t\tcanvases.mouseCoord\n\t\t\t], this.props.ratio);\n\t\t}\n\t}\n\tclearMouseCanvas() {\n\t\tconst canvases = this.getCanvasContexts();\n\t\tif (canvases && canvases.mouseCoord) {\n\t\t\tclearCanvas([\n\t\t\t\tcanvases.mouseCoord,\n\t\t\t\t// canvases.hover,\n\t\t\t], this.props.ratio);\n\t\t}\n\t}\n\tclearThreeCanvas() {\n\t\tconst canvases = this.getCanvasContexts();\n\t\tif (canvases && canvases.axes) {\n\t\t\tclearCanvas([\n\t\t\t\tcanvases.axes,\n\t\t\t\t// canvases.hover,\n\t\t\t\tcanvases.mouseCoord,\n\t\t\t\tcanvases.bg\n\t\t\t], this.props.ratio);\n\t\t}\n\t}\n\tsubscribe(id, rest) {\n\t\tconst { getPanConditions = functor({\n\t\t\tdraggable: false,\n\t\t\tpanEnabled: true,\n\t\t}) } = rest;\n\t\tthis.subscriptions = this.subscriptions.concat({\n\t\t\tid,\n\t\t\t...rest,\n\t\t\tgetPanConditions,\n\t\t});\n\t}\n\tunsubscribe(id) {\n\t\tthis.subscriptions = this.subscriptions.filter(each => each.id !== id);\n\t}\n\tgetAllPanConditions() {\n\t\treturn this.subscriptions\n\t\t\t.map(each => each.getPanConditions());\n\t}\n\tsetCursorClass(className) {\n\t\tif (this.eventCaptureNode != null) {\n\t\t\tthis.eventCaptureNode.setCursorClass(className);\n\t\t}\n\t}\n\tamIOnTop(id) {\n\t\tconst dragableComponents = this.subscriptions\n\t\t\t.filter(each => each.getPanConditions().draggable);\n\n\t\treturn dragableComponents.length > 0\n\t\t\t&& last(dragableComponents).id === id;\n\t}\n\thandleContextMenu(mouseXY, e) {\n\t\tconst { xAccessor, chartConfig, plotData, xScale } = this.state;\n\n\t\tconst currentCharts = getCurrentCharts(chartConfig, mouseXY);\n\t\tconst currentItem = getCurrentItem(xScale, xAccessor, mouseXY, plotData);\n\n\t\tthis.triggerEvent(\"contextmenu\", {\n\t\t\tmouseXY,\n\t\t\tcurrentItem,\n\t\t\tcurrentCharts,\n\t\t}, e);\n\t}\n\tcalculateStateForDomain(newDomain) {\n\t\tconst {\n\t\t\txAccessor,\n\t\t\tdisplayXAccessor,\n\t\t\txScale: initialXScale,\n\t\t\tchartConfig: initialChartConfig,\n\t\t\tplotData: initialPlotData\n\t\t} = this.state;\n\t\tconst { filterData } = this.state;\n\t\tconst { fullData } = this;\n\t\tconst { postCalculator } = this.props;\n\n\t\tconst { plotData: beforePlotData, domain } = filterData(\n\t\t\tfullData,\n\t\t\tnewDomain,\n\t\t\txAccessor,\n\t\t\tinitialXScale,\n\t\t\t{\n\t\t\t\tcurrentPlotData: initialPlotData,\n\t\t\t\tcurrentDomain: initialXScale.domain()\n\t\t\t}\n\t\t);\n\n\t\tconst plotData = postCalculator(beforePlotData);\n\t\tconst updatedScale = initialXScale.copy().domain(domain);\n\t\tconst chartConfig = getChartConfigWithUpdatedYScales(\n\t\t\tinitialChartConfig,\n\t\t\t{ plotData, xAccessor, displayXAccessor, fullData },\n\t\t\tupdatedScale.domain()\n\t\t);\n\n\t\treturn {\n\t\t\txScale: updatedScale,\n\t\t\tplotData,\n\t\t\tchartConfig,\n\t\t};\n\t}\n\tpinchZoomHelper(initialPinch, finalPinch) {\n\t\tconst { xScale: initialPinchXScale } = initialPinch;\n\n\t\tconst {\n\t\t\txScale: initialXScale,\n\t\t\tchartConfig: initialChartConfig,\n\t\t\tplotData: initialPlotData,\n\t\t\txAccessor,\n\t\t\tdisplayXAccessor,\n\t\t} = this.state;\n\t\tconst { filterData } = this.state;\n\t\tconst { fullData } = this;\n\t\tconst { postCalculator } = this.props;\n\n\t\tconst { topLeft: iTL, bottomRight: iBR } = pinchCoordinates(initialPinch);\n\t\tconst { topLeft: fTL, bottomRight: fBR } = pinchCoordinates(finalPinch);\n\n\t\tconst e = initialPinchXScale.range()[1];\n\n\t\tconst xDash = Math.round(-(iBR[0] * fTL[0] - iTL[0] * fBR[0]) / (iTL[0] - iBR[0]));\n\t\tconst yDash = Math.round(e + ((e - iBR[0]) * (e - fTL[0]) - (e - iTL[0]) * (e - fBR[0])) / ((e - iTL[0]) - (e - iBR[0])));\n\n\t\tconst x = Math.round(-xDash * iTL[0] / (-xDash + fTL[0]));\n\t\tconst y = Math.round(e - (yDash - e) * (e - iTL[0]) / (yDash + (e - fTL[0])));\n\n\t\tconst newDomain = [x, y].map(initialPinchXScale.invert);\n\t\t// var domainR = initial.right + right;\n\n\t\tconst { plotData: beforePlotData, domain } = filterData(\n\t\t\tfullData,\n\t\t\tnewDomain,\n\t\t\txAccessor,\n\t\t\tinitialPinchXScale,\n\t\t\t{\n\t\t\t\tcurrentPlotData: initialPlotData,\n\t\t\t\tcurrentDomain: initialXScale.domain()\n\t\t\t}\n\t\t);\n\n\t\tconst plotData = postCalculator(beforePlotData);\n\t\tconst updatedScale = initialXScale.copy().domain(domain);\n\n\t\tconst mouseXY = finalPinch.touch1Pos;\n\t\tconst chartConfig = getChartConfigWithUpdatedYScales(\n\t\t\tinitialChartConfig,\n\t\t\t{ plotData, xAccessor, displayXAccessor, fullData },\n\t\t\tupdatedScale.domain()\n\t\t);\n\t\tconst currentItem = getCurrentItem(updatedScale, xAccessor, mouseXY, plotData);\n\n\t\treturn {\n\t\t\tchartConfig,\n\t\t\txScale: updatedScale,\n\t\t\tplotData,\n\t\t\tmouseXY,\n\t\t\tcurrentItem,\n\t\t};\n\t}\n\tcancelDrag() {\n\t\tthis.eventCaptureNode.cancelDrag();\n\t\tthis.triggerEvent(\"dragcancel\");\n\t}\n\thandlePinchZoom(initialPinch, finalPinch, e) {\n\t\tif (!this.waitingForPinchZoomAnimationFrame) {\n\t\t\tthis.waitingForPinchZoomAnimationFrame = true;\n\t\t\tconst state = this.pinchZoomHelper(initialPinch, finalPinch);\n\n\t\t\tthis.triggerEvent(\"pinchzoom\", state, e);\n\n\t\t\tthis.finalPinch = finalPinch;\n\n\t\t\trequestAnimationFrame(() => {\n\t\t\t\tthis.clearBothCanvas();\n\t\t\t\tthis.draw({ trigger: \"pinchzoom\" });\n\t\t\t\tthis.waitingForPinchZoomAnimationFrame = false;\n\t\t\t});\n\t\t}\n\t}\n\thandlePinchZoomEnd(initialPinch, e) {\n\t\tconst { xAccessor } = this.state;\n\n\t\tif (this.finalPinch) {\n\t\t\tconst state = this.pinchZoomHelper(initialPinch, this.finalPinch);\n\t\t\tconst { xScale } = state;\n\t\t\tthis.triggerEvent(\"pinchzoom\", state, e);\n\n\t\t\tthis.finalPinch = null;\n\n\t\t\tthis.clearThreeCanvas();\n\n\t\t\tconst { fullData } = this;\n\t\t\tconst firstItem = head(fullData);\n\n\t\t\tconst start = head(xScale.domain());\n\t\t\tconst end = xAccessor(firstItem);\n\t\t\tconst { onLoadMore } = this.props;\n\n\t\t\tthis.setState(state, () => {\n\t\t\t\tif (start < end) {\n\t\t\t\t\tonLoadMore(start, end);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\thandleZoom(zoomDirection, mouseXY, e) {\n\t\tif (this.panInProgress)\n\t\t\treturn;\n\t\t// console.log(\"zoomDirection \", zoomDirection, \" mouseXY \", mouseXY);\n\t\tconst { xAccessor, xScale: initialXScale, plotData: initialPlotData } = this.state;\n\t\tconst { zoomMultiplier, zoomAnchor } = this.props;\n\t\tconst { fullData } = this;\n\t\tconst item = zoomAnchor({\n\t\t\txScale: initialXScale,\n\t\t\txAccessor,\n\t\t\tmouseXY,\n\t\t\tplotData: initialPlotData,\n\t\t\tfullData,\n\t\t});\n\n\t\tconst cx = initialXScale(item);\n\t\tconst c = zoomDirection > 0 ? 1 * zoomMultiplier : 1 / zoomMultiplier;\n\t\tconst newDomain = initialXScale.range().map(x => cx + (x - cx) * c).map(initialXScale.invert);\n\n\t\tconst { xScale, plotData, chartConfig } = this.calculateStateForDomain(newDomain);\n\n\t\tconst currentItem = getCurrentItem(xScale, xAccessor, mouseXY, plotData);\n\t\tconst currentCharts = getCurrentCharts(chartConfig, mouseXY);\n\n\t\tthis.clearThreeCanvas();\n\n\t\tconst firstItem = head(fullData);\n\n\t\tconst start = head(xScale.domain());\n\t\tconst end = xAccessor(firstItem);\n\t\tconst { onLoadMore } = this.props;\n\n\t\tthis.mutableState = {\n\t\t\tmouseXY: mouseXY,\n\t\t\tcurrentItem: currentItem,\n\t\t\tcurrentCharts: currentCharts,\n\t\t};\n\n\t\tthis.triggerEvent(\"zoom\", {\n\t\t\txScale,\n\t\t\tplotData,\n\t\t\tchartConfig,\n\t\t\tmouseXY,\n\t\t\tcurrentCharts,\n\t\t\tcurrentItem,\n\t\t\tshow: true,\n\t\t}, e);\n\n\t\tthis.setState({\n\t\t\txScale,\n\t\t\tplotData,\n\t\t\tchartConfig,\n\t\t}, () => {\n\t\t\tif (start < end) {\n\t\t\t\tonLoadMore(start, end);\n\t\t\t}\n\t\t});\n\t}\n\txAxisZoom(newDomain) {\n\t\tconst { xScale, plotData, chartConfig } = this.calculateStateForDomain(newDomain);\n\t\tthis.clearThreeCanvas();\n\n\t\tconst { xAccessor } = this.state;\n\t\tconst { fullData } = this;\n\t\tconst firstItem = head(fullData);\n\t\tconst start = head(xScale.domain());\n\t\tconst end = xAccessor(firstItem);\n\t\tconst { onLoadMore } = this.props;\n\n\t\tthis.setState({\n\t\t\txScale,\n\t\t\tplotData,\n\t\t\tchartConfig,\n\t\t}, () => {\n\t\t\tif (start < end) onLoadMore(start, end);\n\t\t});\n\t}\n\tyAxisZoom(chartId, newDomain) {\n\t\tthis.clearThreeCanvas();\n\t\tconst { chartConfig: initialChartConfig } = this.state;\n\t\tconst chartConfig = initialChartConfig\n\t\t\t.map(each => {\n\t\t\t\tif (each.id === chartId) {\n\t\t\t\t\tconst { yScale } = each;\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...each,\n\t\t\t\t\t\tyScale: yScale.copy().domain(newDomain),\n\t\t\t\t\t\tyPanEnabled: true,\n\t\t\t\t\t};\n\t\t\t\t} else {\n\t\t\t\t\treturn each;\n\t\t\t\t}\n\t\t\t});\n\n\t\tthis.setState({\n\t\t\tchartConfig,\n\t\t});\n\t}\n\ttriggerEvent(type, props, e) {\n\t\t// console.log(\"triggering ->\", type);\n\n\t\tthis.subscriptions.forEach(each => {\n\t\t\tconst state = {\n\t\t\t\t...this.state,\n\t\t\t\tfullData: this.fullData,\n\t\t\t\tsubscriptions: this.subscriptions,\n\t\t\t};\n\t\t\teach.listener(type, props, state, e);\n\t\t});\n\t}\n\tdraw(props) {\n\t\tthis.subscriptions.forEach(each => {\n\t\t\tif (isDefined(each.draw))\n\t\t\t\teach.draw(props);\n\t\t});\n\t}\n\tredraw() {\n\t\tthis.clearThreeCanvas();\n\t\tthis.draw({ force: true });\n\t}\n\tpanHelper(mouseXY, initialXScale, { dx, dy }, chartsToPan) {\n\t\tconst { xAccessor, displayXAccessor, chartConfig: initialChartConfig } = this.state;\n\t\tconst { filterData } = this.state;\n\t\tconst { fullData } = this;\n\t\tconst { postCalculator } = this.props;\n\n\t\t// console.log(dx, dy);\n\t\tif (isNotDefined(initialXScale.invert))\n\t\t\tthrow new Error(\"xScale provided does not have an invert() method.\"\n\t\t\t\t+ \"You are likely using an ordinal scale. This scale does not support zoom, pan\");\n\n\t\tconst newDomain = initialXScale.range().map(x => x - dx).map(initialXScale.invert);\n\n\t\tconst { plotData: beforePlotData, domain } = filterData(\n\t\t\tfullData,\n\t\t\tnewDomain,\n\t\t\txAccessor,\n\t\t\tinitialXScale,\n\t\t\t{\n\t\t\t\tcurrentPlotData: this.hackyWayToStopPanBeyondBounds__plotData,\n\t\t\t\tcurrentDomain: this.hackyWayToStopPanBeyondBounds__domain\n\t\t\t}\n\t\t);\n\n\t\tconst updatedScale = initialXScale.copy().domain(domain);\n\t\tconst plotData = postCalculator(beforePlotData);\n\t\t// console.log(last(plotData));\n\n\t\tconst currentItem = getCurrentItem(updatedScale, xAccessor, mouseXY, plotData);\n\t\tconst chartConfig = getChartConfigWithUpdatedYScales(\n\t\t\tinitialChartConfig,\n\t\t\t{ plotData, xAccessor, displayXAccessor, fullData },\n\t\t\tupdatedScale.domain(),\n\t\t\tdy,\n\t\t\tchartsToPan\n\t\t);\n\t\tconst currentCharts = getCurrentCharts(chartConfig, mouseXY);\n\n\t\t// console.log(initialXScale.domain(), newDomain, updatedScale.domain());\n\t\treturn {\n\t\t\txScale: updatedScale,\n\t\t\tplotData,\n\t\t\tchartConfig,\n\t\t\tmouseXY,\n\t\t\tcurrentCharts,\n\t\t\tcurrentItem,\n\t\t};\n\t}\n\thandlePan(mousePosition, panStartXScale, dxdy, chartsToPan, e) {\n\t\tif (!this.waitingForPanAnimationFrame) {\n\t\t\tthis.waitingForPanAnimationFrame = true;\n\n\t\t\tthis.hackyWayToStopPanBeyondBounds__plotData = this.hackyWayToStopPanBeyondBounds__plotData || this.state.plotData;\n\t\t\tthis.hackyWayToStopPanBeyondBounds__domain = this.hackyWayToStopPanBeyondBounds__domain || this.state.xScale.domain();\n\n\t\t\tconst state = this.panHelper(mousePosition, panStartXScale, dxdy, chartsToPan);\n\n\t\t\tthis.hackyWayToStopPanBeyondBounds__plotData = state.plotData;\n\t\t\tthis.hackyWayToStopPanBeyondBounds__domain = state.xScale.domain();\n\n\t\t\tthis.panInProgress = true;\n\t\t\t// console.log(panStartXScale.domain(), state.xScale.domain());\n\n\t\t\tthis.triggerEvent(\"pan\", state, e);\n\n\t\t\tthis.mutableState = {\n\t\t\t\tmouseXY: state.mouseXY,\n\t\t\t\tcurrentItem: state.currentItem,\n\t\t\t\tcurrentCharts: state.currentCharts,\n\t\t\t};\n\t\t\trequestAnimationFrame(() => {\n\t\t\t\tthis.waitingForPanAnimationFrame = false;\n\t\t\t\tthis.clearBothCanvas();\n\t\t\t\tthis.draw({ trigger: \"pan\" });\n\t\t\t});\n\t\t}\n\t}\n\thandlePanEnd(mousePosition, panStartXScale, dxdy, chartsToPan, e) {\n\t\tconst state = this.panHelper(mousePosition, panStartXScale, dxdy, chartsToPan);\n\t\t// console.log(this.canvasDrawCallbackList.map(d => d.type));\n\t\tthis.hackyWayToStopPanBeyondBounds__plotData = null;\n\t\tthis.hackyWayToStopPanBeyondBounds__domain = null;\n\n\t\tthis.panInProgress = false;\n\n\t\t// console.log(\"PANEND\", panEnd++);\n\t\tconst {\n\t\t\txScale,\n\t\t\tplotData,\n\t\t\tchartConfig,\n\t\t} = state;\n\n\t\tthis.triggerEvent(\"panend\", state, e);\n\n\t\trequestAnimationFrame(() => {\n\t\t\tconst { xAccessor } = this.state;\n\t\t\tconst { fullData } = this;\n\n\t\t\tconst firstItem = head(fullData);\n\t\t\tconst start = head(xScale.domain());\n\t\t\tconst end = xAccessor(firstItem);\n\t\t\t// console.log(start, end, start < end ? \"Load more\" : \"I have it\");\n\n\t\t\tconst { onLoadMore } = this.props;\n\n\t\t\tthis.clearThreeCanvas();\n\n\t\t\tthis.setState({\n\t\t\t\txScale,\n\t\t\t\tplotData,\n\t\t\t\tchartConfig,\n\t\t\t}, () => {\n\t\t\t\tif (start < end) onLoadMore(start, end);\n\t\t\t});\n\t\t});\n\t}\n\thandleMouseDown(mousePosition, currentCharts, e) {\n\t\tthis.triggerEvent(\"mousedown\", this.mutableState, e);\n\t}\n\thandleMouseEnter(e) {\n\t\tthis.triggerEvent(\"mouseenter\", {\n\t\t\tshow: true,\n\t\t}, e);\n\t}\n\thandleMouseMove(mouseXY, inputType, e) {\n\t\tif (!this.waitingForMouseMoveAnimationFrame) {\n\t\t\tthis.waitingForMouseMoveAnimationFrame = true;\n\n\t\t\tconst { chartConfig, plotData, xScale, xAccessor } = this.state;\n\t\t\tconst currentCharts = getCurrentCharts(chartConfig, mouseXY);\n\t\t\tconst currentItem = getCurrentItem(xScale, xAccessor, mouseXY, plotData);\n\t\t\tthis.triggerEvent(\"mousemove\", {\n\t\t\t\tshow: true,\n\t\t\t\tmouseXY,\n\t\t\t\t// prevMouseXY is used in interactive components\n\t\t\t\tprevMouseXY: this.prevMouseXY,\n\t\t\t\tcurrentItem,\n\t\t\t\tcurrentCharts,\n\t\t\t}, e);\n\n\t\t\tthis.prevMouseXY = mouseXY;\n\t\t\tthis.mutableState = {\n\t\t\t\tmouseXY,\n\t\t\t\tcurrentItem,\n\t\t\t\tcurrentCharts,\n\t\t\t};\n\n\t\t\trequestAnimationFrame(() => {\n\t\t\t\tthis.clearMouseCanvas();\n\t\t\t\tthis.draw({ trigger: \"mousemove\" });\n\t\t\t\tthis.waitingForMouseMoveAnimationFrame = false;\n\t\t\t});\n\t\t}\n\t}\n\thandleMouseLeave(e) {\n\t\tthis.triggerEvent(\"mouseleave\", { show: false }, e);\n\t\tthis.clearMouseCanvas();\n\t\tthis.draw({ trigger: \"mouseleave\" });\n\t}\n\thandleDragStart({ startPos }, e) {\n\t\tthis.triggerEvent(\"dragstart\", { startPos }, e);\n\t}\n\thandleDrag({ startPos, mouseXY }, e) {\n\t\tconst { chartConfig, plotData, xScale, xAccessor } = this.state;\n\t\tconst currentCharts = getCurrentCharts(chartConfig, mouseXY);\n\t\tconst currentItem = getCurrentItem(xScale, xAccessor, mouseXY, plotData);\n\n\t\tthis.triggerEvent(\"drag\", {\n\t\t\tstartPos,\n\t\t\tmouseXY,\n\t\t\tcurrentItem,\n\t\t\tcurrentCharts,\n\t\t}, e);\n\n\t\tthis.mutableState = {\n\t\t\tmouseXY,\n\t\t\tcurrentItem,\n\t\t\tcurrentCharts,\n\t\t};\n\n\t\trequestAnimationFrame(() => {\n\t\t\tthis.clearMouseCanvas();\n\t\t\tthis.draw({ trigger: \"drag\" });\n\t\t});\n\t}\n\thandleDragEnd({ mouseXY }, e) {\n\t\tthis.triggerEvent(\"dragend\", { mouseXY }, e);\n\n\t\trequestAnimationFrame(() => {\n\t\t\tthis.clearMouseCanvas();\n\t\t\tthis.draw({ trigger: \"dragend\" });\n\t\t});\n\t}\n\thandleClick(mousePosition, e) {\n\t\tthis.triggerEvent(\"click\", this.mutableState, e);\n\n\t\trequestAnimationFrame(() => {\n\t\t\tthis.clearMouseCanvas();\n\t\t\tthis.draw({ trigger: \"click\" });\n\t\t});\n\t}\n\thandleDoubleClick(mousePosition, e) {\n\t\tthis.triggerEvent(\"dblclick\", {}, e);\n\t}\n\tgetChildContext() {\n\t\tconst dimensions = getDimensions(this.props);\n\t\treturn {\n\t\t\tfullData: this.fullData,\n\t\t\tplotData: this.state.plotData,\n\t\t\twidth: dimensions.width,\n\t\t\theight: dimensions.height,\n\t\t\tchartConfig: this.state.chartConfig,\n\t\t\txScale: this.state.xScale,\n\t\t\txAccessor: this.state.xAccessor,\n\t\t\tdisplayXAccessor: this.state.displayXAccessor,\n\t\t\tchartCanvasType: this.props.type,\n\t\t\tmargin: this.props.margin,\n\t\t\tratio: this.props.ratio,\n\t\t\txAxisZoom: this.xAxisZoom,\n\t\t\tyAxisZoom: this.yAxisZoom,\n\t\t\tgetCanvasContexts: this.getCanvasContexts,\n\t\t\tredraw: this.redraw,\n\t\t\tsubscribe: this.subscribe,\n\t\t\tunsubscribe: this.unsubscribe,\n\t\t\tgenerateSubscriptionId: this.generateSubscriptionId,\n\t\t\tgetMutableState: this.getMutableState,\n\t\t\tamIOnTop: this.amIOnTop,\n\t\t\tsetCursorClass: this.setCursorClass,\n\t\t};\n\t}\n\tcomponentWillMount() {\n\t\tconst { fullData, ...state } = resetChart(this.props, true);\n\t\tthis.setState(state);\n\t\tthis.fullData = fullData;\n\t}\n\tcomponentWillReceiveProps(nextProps) {\n\t\tconst reset = shouldResetChart(this.props, nextProps);\n\n\t\tconst interaction = isInteractionEnabled(this.state.xScale, this.state.xAccessor, this.state.plotData);\n\t\tconst { chartConfig: initialChartConfig } = this.state;\n\n\t\tlet newState;\n\t\tif (!interaction || reset || !shallowEqual(this.props.xExtents, nextProps.xExtents)) {\n\t\t\tif (process.env.NODE_ENV !== \"production\") {\n\t\t\t\tif (!interaction)\n\t\t\t\t\tlog(\"RESET CHART, changes to a non interactive chart\");\n\t\t\t\telse if (reset)\n\t\t\t\t\tlog(\"RESET CHART, one or more of these props changed\", CANDIDATES_FOR_RESET);\n\t\t\t\telse\n\t\t\t\t\tlog(\"xExtents changed\");\n\t\t\t}\n\t\t\t// do reset\n\t\t\tnewState = resetChart(nextProps);\n\t\t} else {\n\n\t\t\tconst [start, end] = this.state.xScale.domain();\n\t\t\tconst prevLastItem = last(this.fullData);\n\n\t\t\tconst calculatedState = calculateFullData(nextProps);\n\t\t\tconst { xAccessor } = calculatedState;\n\t\t\tconst lastItemWasVisible = xAccessor(prevLastItem) <= end && xAccessor(prevLastItem) >= start;\n\n\t\t\tif (process.env.NODE_ENV !== \"production\") {\n\t\t\t\tif (this.props.data !== nextProps.data)\n\t\t\t\t\tlog(\"data is changed but seriesName did not, change the seriesName if you wish to reset the chart and lastItemWasVisible = \", lastItemWasVisible);\n\t\t\t\telse\n\t\t\t\t\tlog(\"Trivial change, may be width/height or type changed, but that does not matter\");\n\t\t\t}\n\n\t\t\tnewState = updateChart(\n\t\t\t\tcalculatedState,\n\t\t\t\tthis.state.xScale,\n\t\t\t\tnextProps,\n\t\t\t\tlastItemWasVisible,\n\t\t\t\tinitialChartConfig,\n\t\t\t);\n\t\t}\n\n\t\tconst { fullData, ...state } = newState;\n\n\t\tif (this.panInProgress) {\n\t\t\tif (process.env.NODE_ENV !== \"production\") {\n\t\t\t\tlog(\"Pan is in progress\");\n\t\t\t}\n\t\t} else {\n\t\t\t/*\n\t\t\tif (!reset) {\n\t\t\t\tstate.chartConfig\n\t\t\t\t\t.forEach((each) => {\n\t\t\t\t\t\t// const sourceChartConfig = initialChartConfig.filter(d => d.id === each.id);\n\t\t\t\t\t\tconst prevChartConfig = find(initialChartConfig, d => d.id === each.id);\n\t\t\t\t\t\tif (isDefined(prevChartConfig) && prevChartConfig.yPanEnabled) {\n\t\t\t\t\t\t\teach.yScale.domain(prevChartConfig.yScale.domain());\n\t\t\t\t\t\t\teach.yPanEnabled = prevChartConfig.yPanEnabled;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t}\n\t\t\t*/\n\t\t\tthis.clearThreeCanvas();\n\n\t\t\tthis.setState(state);\n\t\t}\n\t\tthis.fullData = fullData;\n\t}\n\t/*\n\tcomponentDidUpdate(prevProps, prevState) {\n\t\tconsole.error(this.state.chartConfig, this.state.chartConfig.map(d => d.yScale.domain()));\n\t}\n\t*/\n\tresetYDomain(chartId) {\n\t\tconst { chartConfig } = this.state;\n\t\tlet changed = false;\n\t\tconst newChartConfig = chartConfig\n\t\t\t.map(each => {\n\t\t\t\tif ((isNotDefined(chartId) || each.id === chartId)\n\t\t\t\t\t\t&& !shallowEqual(each.yScale.domain(), each.realYDomain)) {\n\t\t\t\t\tchanged = true;\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...each,\n\t\t\t\t\t\tyScale: each.yScale.domain(each.realYDomain),\n\t\t\t\t\t\tyPanEnabled: false,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\treturn each;\n\t\t\t});\n\n\t\tif (changed) {\n\t\t\tthis.clearThreeCanvas();\n\t\t\tthis.setState({\n\t\t\t\tchartConfig: newChartConfig\n\t\t\t});\n\t\t}\n\t}\n\tshouldComponentUpdate() {\n\t\t// console.log(\"Happneing.....\", !this.panInProgress)\n\t\treturn !this.panInProgress;\n\t}\n\trender() {\n\n\t\tconst { type, height, width, margin, className, zIndex, defaultFocus, ratio, mouseMoveEvent, panEvent, zoomEvent } = this.props;\n\t\tconst { useCrossHairStyleCursor, onSelect } = this.props;\n\n\t\tconst { plotData, xScale, xAccessor, chartConfig } = this.state;\n\t\tconst dimensions = getDimensions(this.props);\n\n\t\tconst interaction = isInteractionEnabled(xScale, xAccessor, plotData);\n\n\t\tconst cursorStyle = useCrossHairStyleCursor && interaction;\n\t\tconst cursor = getCursorStyle();\n\t\treturn (\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t{cursor}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t{chartConfig\n\t\t\t\t\t\t\t.map((each, idx) => \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{this.props.children}\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t);\n\t}\n}\n\nfunction isInteractionEnabled(xScale, xAccessor, data) {\n\tconst interaction = !isNaN(xScale(xAccessor(head(data)))) && isDefined(xScale.invert);\n\treturn interaction;\n}\n\nChartCanvas.propTypes = {\n\twidth: PropTypes.number.isRequired,\n\theight: PropTypes.number.isRequired,\n\tmargin: PropTypes.object,\n\tratio: PropTypes.number.isRequired,\n\t// interval: PropTypes.oneOf([\"D\", \"W\", \"M\"]), // ,\"m1\", \"m5\", \"m15\", \"W\", \"M\"\n\ttype: PropTypes.oneOf([\"svg\", \"hybrid\"]),\n\tpointsPerPxThreshold: PropTypes.number,\n\tminPointsPerPxThreshold: PropTypes.number,\n\tdata: PropTypes.array.isRequired,\n\t// initialDisplay: PropTypes.number,\n\txAccessor: PropTypes.func,\n\txExtents: PropTypes.oneOfType([\n\t\tPropTypes.array,\n\t\tPropTypes.func\n\t]),\n\tzoomAnchor: PropTypes.func,\n\n\tclassName: PropTypes.string,\n\tseriesName: PropTypes.string.isRequired,\n\tzIndex: PropTypes.number,\n\tchildren: PropTypes.node.isRequired,\n\txScale: PropTypes.func.isRequired,\n\tpostCalculator: PropTypes.func,\n\tflipXScale: PropTypes.bool,\n\tuseCrossHairStyleCursor: PropTypes.bool,\n\tpadding: PropTypes.oneOfType([\n\t\tPropTypes.number,\n\t\tPropTypes.shape({\n\t\t\tleft: PropTypes.number,\n\t\t\tright: PropTypes.number,\n\t\t})\n\t]),\n\tdefaultFocus: PropTypes.bool,\n\tzoomMultiplier: PropTypes.number,\n\tonLoadMore: PropTypes.func,\n\tdisplayXAccessor: function(props, propName/* , componentName */) {\n\t\tif (isNotDefined(props[propName])) {\n\t\t\tconsole.warn(\"`displayXAccessor` is not defined,\"\n\t\t\t\t+ \" will use the value from `xAccessor` as `displayXAccessor`.\"\n\t\t\t\t+ \" This might be ok if you do not use a discontinuous scale\"\n\t\t\t\t+ \" but if you do, provide a `displayXAccessor` prop to `ChartCanvas`\");\n\t\t} else if (typeof props[propName] !== \"function\") {\n\t\t\treturn new Error(\"displayXAccessor has to be a function\");\n\t\t}\n\t},\n\tmouseMoveEvent: PropTypes.bool,\n\tpanEvent: PropTypes.bool,\n\tclamp: PropTypes.oneOfType([PropTypes.string, PropTypes.bool, PropTypes.func]),\n\tzoomEvent: PropTypes.bool,\n\tonSelect: PropTypes.func,\n\tmaintainPointsPerPixelOnResize: PropTypes.bool,\n\tdisableInteraction: PropTypes.bool,\n};\n\nChartCanvas.defaultProps = {\n\tmargin: { top: 20, right: 30, bottom: 30, left: 80 },\n\ttype: \"hybrid\",\n\tpointsPerPxThreshold: 2,\n\tminPointsPerPxThreshold: 1 / 100,\n\tclassName: \"react-stockchart\",\n\tzIndex: 1,\n\txExtents: [min, max],\n\tpostCalculator: identity,\n\tpadding: 0,\n\txAccessor: identity,\n\tflipXScale: false,\n\tuseCrossHairStyleCursor: true,\n\tdefaultFocus: true,\n\tonLoadMore: noop,\n\tonSelect: noop,\n\tmouseMoveEvent: true,\n\tpanEvent: true,\n\tzoomEvent: true,\n\tzoomMultiplier: 1.1,\n\tclamp: false,\n\tzoomAnchor: mouseBasedZoomAnchor,\n\tmaintainPointsPerPixelOnResize: true,\n\t// ratio: 2,\n\tdisableInteraction: false,\n};\n\nChartCanvas.childContextTypes = {\n\tplotData: PropTypes.array,\n\tfullData: PropTypes.array,\n\tchartConfig: PropTypes.arrayOf(\n\t\tPropTypes.shape({\n\t\t\tid: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,\n\t\t\torigin: PropTypes.arrayOf(PropTypes.number).isRequired,\n\t\t\tpadding: PropTypes.oneOfType([\n\t\t\t\tPropTypes.number,\n\t\t\t\tPropTypes.shape({\n\t\t\t\t\ttop: PropTypes.number,\n\t\t\t\t\tbottom: PropTypes.number,\n\t\t\t\t})\n\t\t\t]),\n\t\t\tyExtents: PropTypes.arrayOf(PropTypes.func),\n\t\t\tyExtentsProvider: PropTypes.func,\n\t\t\tyScale: PropTypes.func.isRequired,\n\t\t\tmouseCoordinates: PropTypes.shape({\n\t\t\t\tat: PropTypes.string,\n\t\t\t\tformat: PropTypes.func\n\t\t\t}),\n\t\t\twidth: PropTypes.number.isRequired,\n\t\t\theight: PropTypes.number.isRequired,\n\t\t})\n\t).isRequired,\n\txScale: PropTypes.func.isRequired,\n\txAccessor: PropTypes.func.isRequired,\n\tdisplayXAccessor: PropTypes.func.isRequired,\n\twidth: PropTypes.number.isRequired,\n\theight: PropTypes.number.isRequired,\n\tchartCanvasType: PropTypes.oneOf([\"svg\", \"hybrid\"]).isRequired,\n\tmargin: PropTypes.object.isRequired,\n\tratio: PropTypes.number.isRequired,\n\tgetCanvasContexts: PropTypes.func,\n\txAxisZoom: PropTypes.func,\n\tyAxisZoom: PropTypes.func,\n\tamIOnTop: PropTypes.func,\n\tredraw: PropTypes.func,\n\tsubscribe: PropTypes.func,\n\tunsubscribe: PropTypes.func,\n\tsetCursorClass: PropTypes.func,\n\tgenerateSubscriptionId: PropTypes.func,\n\tgetMutableState: PropTypes.func,\n};\n\nChartCanvas.ohlcv = d => ({ date: d.date, open: d.open, high: d.high, low: d.low, close: d.close, volume: d.volume });\n\nexport default ChartCanvas;\n"]} \ No newline at end of file +{"version":3,"sources":["../../../src/lib/ChartCanvas.js"],"names":["React","Component","PropTypes","extent","d3Extent","min","max","head","last","isDefined","isNotDefined","clearCanvas","shallowEqual","identity","noop","functor","getLogger","mouseBasedZoomAnchor","lastVisibleItemBasedZoomAnchor","rightDomainBasedZoomAnchor","getNewChartConfig","getChartConfigWithUpdatedYScales","getCurrentCharts","getCurrentItem","EventCapture","CanvasContainer","evaluator","log","CANDIDATES_FOR_RESET","shouldResetChart","thisProps","nextProps","every","result","key","getCursorStyle","tooltipStyle","getDimensions","props","height","margin","top","bottom","width","left","right","getXScaleDirection","flipXScale","calculateFullData","fullData","data","plotFull","xScale","clamp","pointsPerPxThreshold","xAccessor","displayXAccessor","minPointsPerPxThreshold","useWholeData","filterData","copy","resetChart","firstCalculation","process","env","NODE_ENV","state","calculateState","initialPlotData","plotData","postCalculator","children","dimensions","chartConfig","domain","updateChart","newState","initialXScale","lastItemWasVisible","initialChartConfig","lastItem","start","end","padding","maintainPointsPerPixelOnResize","direction","updatedXScale","setXRange","range","rangeStart","rangeEnd","newRangeStart","newRangeEnd","newDomainExtent","newStart","lastItemX","response","fallbackStart","fallbackEnd","dx","map","x","invert","newEnd","inputXAccesor","xExtentsProp","xExtents","i","length","prev","curr","Error","d","each","rangeRoundPoints","isNaN","pinchCoordinates","pinch","touch1Pos","touch2Pos","topLeft","Math","bottomRight","ChartCanvas","getDataInfo","bind","getCanvasContexts","handleMouseMove","handleMouseEnter","handleMouseLeave","handleZoom","handlePinchZoom","handlePinchZoomEnd","handlePan","handlePanEnd","handleClick","handleMouseDown","handleDoubleClick","handleContextMenu","handleDragStart","handleDrag","handleDragEnd","panHelper","pinchZoomHelper","xAxisZoom","yAxisZoom","resetYDomain","calculateStateForDomain","generateSubscriptionId","draw","redraw","getAllPanConditions","subscriptions","subscribe","unsubscribe","amIOnTop","saveEventCaptureNode","saveCanvasContainerNode","setCursorClass","getMutableState","interactiveState","panInProgress","mutableState","lastSubscriptionId","node","eventCaptureNode","canvasContainerNode","canvases","axes","mouseCoord","ratio","bg","id","rest","getPanConditions","draggable","panEnabled","concat","filter","className","dragableComponents","mouseXY","e","currentCharts","currentItem","triggerEvent","newDomain","currentPlotData","currentDomain","beforePlotData","updatedScale","initialPinch","finalPinch","initialPinchXScale","iTL","iBR","fTL","fBR","xDash","round","yDash","y","cancelDrag","waitingForPinchZoomAnimationFrame","requestAnimationFrame","clearBothCanvas","trigger","clearThreeCanvas","firstItem","onLoadMore","setState","zoomDirection","zoomMultiplier","zoomAnchor","item","cx","c","show","chartId","yScale","yPanEnabled","type","forEach","listener","force","chartsToPan","dy","hackyWayToStopPanBeyondBounds__plotData","hackyWayToStopPanBeyondBounds__domain","mousePosition","panStartXScale","dxdy","waitingForPanAnimationFrame","inputType","waitingForMouseMoveAnimationFrame","prevMouseXY","clearMouseCanvas","startPos","chartCanvasType","reset","interaction","isInteractionEnabled","prevLastItem","calculatedState","changed","newChartConfig","realYDomain","zIndex","defaultFocus","mouseMoveEvent","panEvent","zoomEvent","useCrossHairStyleCursor","onSelect","cursorStyle","cursor","position","idx","disableInteraction","propTypes","number","isRequired","object","oneOf","array","func","oneOfType","string","seriesName","bool","shape","propName","console","warn","defaultProps","childContextTypes","arrayOf","origin","yExtents","yExtentsProvider","mouseCoordinates","at","format","ohlcv","date","open","high","low","close","volume"],"mappings":"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","file":"ChartCanvas.js","sourcesContent":["\n\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { extent as d3Extent, min, max } from \"d3-array\";\n\nimport {\n\thead,\n\tlast,\n\tisDefined,\n\tisNotDefined,\n\tclearCanvas,\n\tshallowEqual,\n\tidentity,\n\tnoop,\n\tfunctor,\n\tgetLogger,\n} from \"./utils\";\n\n/* eslint-disable no-unused-vars */\nimport {\n\tmouseBasedZoomAnchor,\n\tlastVisibleItemBasedZoomAnchor,\n\trightDomainBasedZoomAnchor,\n} from \"./utils/zoomBehavior\";\n/* eslint-enable no-unused-vars */\n\nimport { getNewChartConfig, getChartConfigWithUpdatedYScales, getCurrentCharts, getCurrentItem } from \"./utils/ChartDataUtil\";\n\nimport EventCapture from \"./EventCapture\";\n\nimport CanvasContainer from \"./CanvasContainer\";\nimport evaluator from \"./scale/evaluator\";\n\nconst log = getLogger(\"ChartCanvas\");\n\nconst CANDIDATES_FOR_RESET = [\n\t\"seriesName\",\n\t/* \"data\",*/\n\t/* \"xAccessor\",*/\n];\n\nfunction shouldResetChart(thisProps, nextProps) {\n\treturn !CANDIDATES_FOR_RESET.every(key => {\n\t\tconst result = shallowEqual(thisProps[key], nextProps[key]);\n\t\t// console.log(key, result);\n\t\treturn result;\n\t});\n}\n\nfunction getCursorStyle() {\n\tconst tooltipStyle = `\n\t.react-stockcharts-grabbing-cursor {\n\t\tpointer-events: all;\n\t\tcursor: -moz-grabbing;\n\t\tcursor: -webkit-grabbing;\n\t\tcursor: grabbing;\n\t}\n\t.react-stockcharts-crosshair-cursor {\n\t\tpointer-events: all;\n\t\tcursor: crosshair;\n\t}\n\t.react-stockcharts-tooltip-hover {\n\t\tpointer-events: all;\n\t\tcursor: pointer;\n\t}\n\t.react-stockcharts-avoid-interaction {\n\t\tpointer-events: none;\n\t}\n\t.react-stockcharts-enable-interaction {\n\t\tpointer-events: all;\n\t}\n\t.react-stockcharts-tooltip {\n\t\tpointer-events: all;\n\t\tcursor: pointer;\n\t}\n\t.react-stockcharts-default-cursor {\n\t\tcursor: default;\n\t}\n\t.react-stockcharts-move-cursor {\n\t\tcursor: move;\n\t}\n\t.react-stockcharts-pointer-cursor {\n\t\tcursor: pointer;\n\t}\n\t.react-stockcharts-ns-resize-cursor {\n\t\tcursor: ns-resize;\n\t}\n\t.react-stockcharts-ew-resize-cursor {\n\t\tcursor: ew-resize;\n\t}`;\n\treturn ();\n}\n\nfunction getDimensions(props) {\n\treturn {\n\t\theight: props.height - props.margin.top - props.margin.bottom,\n\t\twidth: props.width - props.margin.left - props.margin.right,\n\t};\n}\n\nfunction getXScaleDirection(flipXScale) {\n\treturn flipXScale ? -1 : 1;\n}\n\nfunction calculateFullData(props) {\n\tconst { data: fullData, plotFull, xScale, clamp, pointsPerPxThreshold, flipXScale } = props;\n\tconst { xAccessor, displayXAccessor, minPointsPerPxThreshold } = props;\n\n\tconst useWholeData = isDefined(plotFull)\n\t\t? plotFull\n\t\t: xAccessor === identity;\n\n\tconst { filterData } = evaluator({\n\t\txScale,\n\t\tuseWholeData,\n\t\tclamp,\n\t\tpointsPerPxThreshold,\n\t\tminPointsPerPxThreshold,\n\t\tflipXScale,\n\t});\n\n\treturn {\n\t\txAccessor,\n\t\tdisplayXAccessor: displayXAccessor || xAccessor,\n\t\txScale: xScale.copy(),\n\t\tfullData,\n\t\tfilterData\n\t};\n}\nfunction resetChart(props, firstCalculation = false) {\n\tif (process.env.NODE_ENV !== \"production\") {\n\t\tif (!firstCalculation) log(\"CHART RESET\");\n\t}\n\n\tconst state = calculateState(props);\n\tconst { xAccessor, displayXAccessor, fullData } = state;\n\tconst { plotData: initialPlotData, xScale } = state;\n\tconst { postCalculator, children } = props;\n\n\tconst plotData = postCalculator(initialPlotData);\n\n\tconst dimensions = getDimensions(props);\n\tconst chartConfig = getChartConfigWithUpdatedYScales(\n\t\tgetNewChartConfig(dimensions, children),\n\t\t{ plotData, xAccessor, displayXAccessor, fullData },\n\t\txScale.domain()\n\t);\n\n\treturn {\n\t\t...state,\n\t\txScale,\n\t\tplotData,\n\t\tchartConfig,\n\t};\n}\n\nfunction updateChart(\n\tnewState,\n\tinitialXScale,\n\tprops,\n\tlastItemWasVisible,\n\tinitialChartConfig,\n) {\n\n\tconst { fullData, xScale, xAccessor, displayXAccessor, filterData } = newState;\n\n\tconst lastItem = last(fullData);\n\tconst [start, end] = initialXScale.domain();\n\n\tif (process.env.NODE_ENV !== \"production\") {\n\t\tlog(\"TRIVIAL CHANGE\");\n\t}\n\n\tconst { postCalculator, children, padding, flipXScale } = props;\n\tconst { maintainPointsPerPixelOnResize } = props;\n\tconst direction = getXScaleDirection(flipXScale);\n\tconst dimensions = getDimensions(props);\n\n\tconst updatedXScale = setXRange(xScale, dimensions, padding, direction);\n\n\t// console.log(\"lastItemWasVisible =\", lastItemWasVisible, end, xAccessor(lastItem), end >= xAccessor(lastItem));\n\tlet initialPlotData;\n\tif (!lastItemWasVisible || end >= xAccessor(lastItem)) {\n\t\t// resize comes here...\n\t\t// get plotData between [start, end] and do not change the domain\n\t\tconst [rangeStart, rangeEnd] = initialXScale.range();\n\t\tconst [newRangeStart, newRangeEnd] = updatedXScale.range();\n\t\tconst newDomainExtent = ((newRangeEnd - newRangeStart) / (rangeEnd - rangeStart)) * (end - start);\n\t\tconst newStart = maintainPointsPerPixelOnResize\n\t\t\t? end - newDomainExtent\n\t\t\t: start;\n\n\t\tconst lastItemX = initialXScale(xAccessor(lastItem));\n\t\t// console.log(\"pointsPerPixel => \", newStart, start, end, updatedXScale(end));\n\t\tconst response = filterData(\n\t\t\tfullData, [newStart, end], xAccessor, updatedXScale,\n\t\t\t{ fallbackStart: start, fallbackEnd: { lastItem, lastItemX } }\n\t\t);\n\t\tinitialPlotData = response.plotData;\n\t\tupdatedXScale.domain(response.domain);\n\t\t// console.log(\"HERE!!!!!\", start, end);\n\t} else if (lastItemWasVisible\n\t\t\t&& end < xAccessor(lastItem)) {\n\t\t// this is when a new item is added and last item was visible\n\t\t// so slide over and show the new item also\n\n\t\t// get plotData between [xAccessor(l) - (end - start), xAccessor(l)] and DO change the domain\n\t\tconst dx = initialXScale(xAccessor(lastItem)) - initialXScale.range()[1];\n\t\tconst [newStart, newEnd] = initialXScale.range().map(x => x + dx).map(initialXScale.invert);\n\n\n\t\tconst response = filterData(fullData, [newStart, newEnd], xAccessor, updatedXScale);\n\t\tinitialPlotData = response.plotData;\n\t\tupdatedXScale.domain(response.domain);\t\t// if last item was visible, then shift\n\t}\n\t// plotData = getDataOfLength(fullData, showingInterval, plotData.length)\n\tconst plotData = postCalculator(initialPlotData);\n\tconst chartConfig = getChartConfigWithUpdatedYScales(\n\t\tgetNewChartConfig(dimensions, children, initialChartConfig),\n\t\t{ plotData, xAccessor, displayXAccessor, fullData },\n\t\tupdatedXScale.domain()\n\t);\n\n\treturn {\n\t\txScale: updatedXScale,\n\t\txAccessor,\n\t\tchartConfig,\n\t\tplotData,\n\t\tfullData,\n\t\tfilterData,\n\t};\n}\n\nfunction calculateState(props) {\n\n\tconst {\n\t\txAccessor: inputXAccesor, xExtents: xExtentsProp, data, padding, flipXScale\n\t} = props;\n\n\tif (process.env.NODE_ENV !== \"production\" && isDefined(props.xScale.invert)) {\n\t\tfor (let i = 1; i < data.length; i++) {\n\t\t\tconst prev = data[i - 1];\n\t\t\tconst curr = data[i];\n\t\t\tif (inputXAccesor(prev) > inputXAccesor(curr)) {\n\t\t\t\tthrow new Error(\"'data' is not sorted on 'xAccessor', send 'data' sorted in ascending order of 'xAccessor'\");\n\t\t\t}\n\t\t}\n\t}\n\n\tconst direction = getXScaleDirection(flipXScale);\n\tconst dimensions = getDimensions(props);\n\n\tconst extent = typeof xExtentsProp === \"function\"\n\t\t? xExtentsProp(data)\n\t\t: d3Extent(xExtentsProp.map(d => functor(d)).map(each => each(data, inputXAccesor)));\n\n\tconst { xAccessor, displayXAccessor, xScale, fullData, filterData } = calculateFullData(props);\n\tconst updatedXScale = setXRange(xScale, dimensions, padding, direction);\n\n\tconst { plotData, domain } = filterData(fullData, extent, inputXAccesor, updatedXScale);\n\n\treturn {\n\t\tplotData,\n\t\txScale: updatedXScale.domain(domain),\n\t\txAccessor,\n\t\tdisplayXAccessor,\n\t\tfullData,\n\t\tfilterData,\n\t};\n}\n\nfunction setXRange(xScale, dimensions, padding, direction = 1) {\n\tif (xScale.rangeRoundPoints) {\n\t\tif (isNaN(padding)) throw new Error(\"padding has to be a number for ordinal scale\");\n\t\txScale.rangeRoundPoints([0, dimensions.width], padding);\n\t} else if (xScale.padding) {\n\t\tif (isNaN(padding)) throw new Error(\"padding has to be a number for ordinal scale\");\n\t\txScale.range([0, dimensions.width]);\n\t\txScale.padding(padding / 2);\n\t} else {\n\t\tconst { left, right } = isNaN(padding)\n\t\t\t? padding\n\t\t\t: { left: padding, right: padding };\n\t\tif (direction > 0) {\n\t\t\txScale.range([left, dimensions.width - right]);\n\t\t} else {\n\t\t\txScale.range([dimensions.width - right, left]);\n\t\t}\n\t}\n\treturn xScale;\n}\n\nfunction pinchCoordinates(pinch) {\n\tconst { touch1Pos, touch2Pos } = pinch;\n\n\treturn {\n\t\ttopLeft: [Math.min(touch1Pos[0], touch2Pos[0]), Math.min(touch1Pos[1], touch2Pos[1])],\n\t\tbottomRight: [Math.max(touch1Pos[0], touch2Pos[0]), Math.max(touch1Pos[1], touch2Pos[1])]\n\t};\n}\n\n\nclass ChartCanvas extends Component {\n\tconstructor() {\n\t\tsuper();\n\t\tthis.getDataInfo = this.getDataInfo.bind(this);\n\t\tthis.getCanvasContexts = this.getCanvasContexts.bind(this);\n\n\t\tthis.handleMouseMove = this.handleMouseMove.bind(this);\n\t\tthis.handleMouseEnter = this.handleMouseEnter.bind(this);\n\t\tthis.handleMouseLeave = this.handleMouseLeave.bind(this);\n\t\tthis.handleZoom = this.handleZoom.bind(this);\n\t\tthis.handlePinchZoom = this.handlePinchZoom.bind(this);\n\t\tthis.handlePinchZoomEnd = this.handlePinchZoomEnd.bind(this);\n\t\tthis.handlePan = this.handlePan.bind(this);\n\t\tthis.handlePanEnd = this.handlePanEnd.bind(this);\n\t\tthis.handleClick = this.handleClick.bind(this);\n\t\tthis.handleMouseDown = this.handleMouseDown.bind(this);\n\t\tthis.handleDoubleClick = this.handleDoubleClick.bind(this);\n\t\tthis.handleContextMenu = this.handleContextMenu.bind(this);\n\t\tthis.handleDragStart = this.handleDragStart.bind(this);\n\t\tthis.handleDrag = this.handleDrag.bind(this);\n\t\tthis.handleDragEnd = this.handleDragEnd.bind(this);\n\n\t\tthis.panHelper = this.panHelper.bind(this);\n\t\tthis.pinchZoomHelper = this.pinchZoomHelper.bind(this);\n\t\tthis.xAxisZoom = this.xAxisZoom.bind(this);\n\t\tthis.yAxisZoom = this.yAxisZoom.bind(this);\n\t\tthis.resetYDomain = this.resetYDomain.bind(this);\n\t\tthis.calculateStateForDomain = this.calculateStateForDomain.bind(this);\n\t\tthis.generateSubscriptionId = this.generateSubscriptionId.bind(this);\n\t\tthis.draw = this.draw.bind(this);\n\t\tthis.redraw = this.redraw.bind(this);\n\t\tthis.getAllPanConditions = this.getAllPanConditions.bind(this);\n\n\t\tthis.subscriptions = [];\n\t\tthis.subscribe = this.subscribe.bind(this);\n\t\tthis.unsubscribe = this.unsubscribe.bind(this);\n\t\tthis.amIOnTop = this.amIOnTop.bind(this);\n\t\tthis.saveEventCaptureNode = this.saveEventCaptureNode.bind(this);\n\t\tthis.saveCanvasContainerNode = this.saveCanvasContainerNode.bind(this);\n\t\tthis.setCursorClass = this.setCursorClass.bind(this);\n\t\tthis.getMutableState = this.getMutableState.bind(this);\n\t\t// this.canvasDrawCallbackList = [];\n\t\tthis.interactiveState = [];\n\t\tthis.panInProgress = false;\n\n\t\tthis.state = {};\n\t\tthis.mutableState = {};\n\t\tthis.lastSubscriptionId = 0;\n\t}\n\tsaveEventCaptureNode(node) {\n\t\tthis.eventCaptureNode = node;\n\t}\n\tsaveCanvasContainerNode(node) {\n\t\tthis.canvasContainerNode = node;\n\t}\n\tgetMutableState() {\n\t\treturn this.mutableState;\n\t}\n\tgetDataInfo() {\n\t\treturn {\n\t\t\t...this.state,\n\t\t\tfullData: this.fullData,\n\t\t};\n\t}\n\tgetCanvasContexts() {\n\t\tif (this.canvasContainerNode) {\n\t\t\treturn this.canvasContainerNode.getCanvasContexts();\n\t\t}\n\t}\n\tgenerateSubscriptionId() {\n\t\tthis.lastSubscriptionId++;\n\t\treturn this.lastSubscriptionId;\n\t}\n\tclearBothCanvas() {\n\t\tconst canvases = this.getCanvasContexts();\n\t\tif (canvases && canvases.axes) {\n\t\t\tclearCanvas([\n\t\t\t\tcanvases.axes,\n\t\t\t\t// canvases.hover,\n\t\t\t\tcanvases.mouseCoord\n\t\t\t], this.props.ratio);\n\t\t}\n\t}\n\tclearMouseCanvas() {\n\t\tconst canvases = this.getCanvasContexts();\n\t\tif (canvases && canvases.mouseCoord) {\n\t\t\tclearCanvas([\n\t\t\t\tcanvases.mouseCoord,\n\t\t\t\t// canvases.hover,\n\t\t\t], this.props.ratio);\n\t\t}\n\t}\n\tclearThreeCanvas() {\n\t\tconst canvases = this.getCanvasContexts();\n\t\tif (canvases && canvases.axes) {\n\t\t\tclearCanvas([\n\t\t\t\tcanvases.axes,\n\t\t\t\t// canvases.hover,\n\t\t\t\tcanvases.mouseCoord,\n\t\t\t\tcanvases.bg\n\t\t\t], this.props.ratio);\n\t\t}\n\t}\n\tsubscribe(id, rest) {\n\t\tconst { getPanConditions = functor({\n\t\t\tdraggable: false,\n\t\t\tpanEnabled: true,\n\t\t}) } = rest;\n\t\tthis.subscriptions = this.subscriptions.concat({\n\t\t\tid,\n\t\t\t...rest,\n\t\t\tgetPanConditions,\n\t\t});\n\t}\n\tunsubscribe(id) {\n\t\tthis.subscriptions = this.subscriptions.filter(each => each.id !== id);\n\t}\n\tgetAllPanConditions() {\n\t\treturn this.subscriptions\n\t\t\t.map(each => each.getPanConditions());\n\t}\n\tsetCursorClass(className) {\n\t\tif (this.eventCaptureNode != null) {\n\t\t\tthis.eventCaptureNode.setCursorClass(className);\n\t\t}\n\t}\n\tamIOnTop(id) {\n\t\tconst dragableComponents = this.subscriptions\n\t\t\t.filter(each => each.getPanConditions().draggable);\n\n\t\treturn dragableComponents.length > 0\n\t\t\t&& last(dragableComponents).id === id;\n\t}\n\thandleContextMenu(mouseXY, e) {\n\t\tconst { xAccessor, chartConfig, plotData, xScale } = this.state;\n\n\t\tconst currentCharts = getCurrentCharts(chartConfig, mouseXY);\n\t\tconst currentItem = getCurrentItem(xScale, xAccessor, mouseXY, plotData);\n\n\t\tthis.triggerEvent(\"contextmenu\", {\n\t\t\tmouseXY,\n\t\t\tcurrentItem,\n\t\t\tcurrentCharts,\n\t\t}, e);\n\t}\n\tcalculateStateForDomain(newDomain) {\n\t\tconst {\n\t\t\txAccessor,\n\t\t\tdisplayXAccessor,\n\t\t\txScale: initialXScale,\n\t\t\tchartConfig: initialChartConfig,\n\t\t\tplotData: initialPlotData\n\t\t} = this.state;\n\t\tconst { filterData } = this.state;\n\t\tconst { fullData } = this;\n\t\tconst { postCalculator } = this.props;\n\n\t\tconst { plotData: beforePlotData, domain } = filterData(\n\t\t\tfullData,\n\t\t\tnewDomain,\n\t\t\txAccessor,\n\t\t\tinitialXScale,\n\t\t\t{\n\t\t\t\tcurrentPlotData: initialPlotData,\n\t\t\t\tcurrentDomain: initialXScale.domain()\n\t\t\t}\n\t\t);\n\n\t\tconst plotData = postCalculator(beforePlotData);\n\t\tconst updatedScale = initialXScale.copy().domain(domain);\n\t\tconst chartConfig = getChartConfigWithUpdatedYScales(\n\t\t\tinitialChartConfig,\n\t\t\t{ plotData, xAccessor, displayXAccessor, fullData },\n\t\t\tupdatedScale.domain()\n\t\t);\n\n\t\treturn {\n\t\t\txScale: updatedScale,\n\t\t\tplotData,\n\t\t\tchartConfig,\n\t\t};\n\t}\n\tpinchZoomHelper(initialPinch, finalPinch) {\n\t\tconst { xScale: initialPinchXScale } = initialPinch;\n\n\t\tconst {\n\t\t\txScale: initialXScale,\n\t\t\tchartConfig: initialChartConfig,\n\t\t\tplotData: initialPlotData,\n\t\t\txAccessor,\n\t\t\tdisplayXAccessor,\n\t\t} = this.state;\n\t\tconst { filterData } = this.state;\n\t\tconst { fullData } = this;\n\t\tconst { postCalculator } = this.props;\n\n\t\tconst { topLeft: iTL, bottomRight: iBR } = pinchCoordinates(initialPinch);\n\t\tconst { topLeft: fTL, bottomRight: fBR } = pinchCoordinates(finalPinch);\n\n\t\tconst e = initialPinchXScale.range()[1];\n\n\t\tconst xDash = Math.round(-(iBR[0] * fTL[0] - iTL[0] * fBR[0]) / (iTL[0] - iBR[0]));\n\t\tconst yDash = Math.round(e + ((e - iBR[0]) * (e - fTL[0]) - (e - iTL[0]) * (e - fBR[0])) / ((e - iTL[0]) - (e - iBR[0])));\n\n\t\tconst x = Math.round(-xDash * iTL[0] / (-xDash + fTL[0]));\n\t\tconst y = Math.round(e - (yDash - e) * (e - iTL[0]) / (yDash + (e - fTL[0])));\n\n\t\tconst newDomain = [x, y].map(initialPinchXScale.invert);\n\t\t// var domainR = initial.right + right;\n\n\t\tconst { plotData: beforePlotData, domain } = filterData(\n\t\t\tfullData,\n\t\t\tnewDomain,\n\t\t\txAccessor,\n\t\t\tinitialPinchXScale,\n\t\t\t{\n\t\t\t\tcurrentPlotData: initialPlotData,\n\t\t\t\tcurrentDomain: initialXScale.domain()\n\t\t\t}\n\t\t);\n\n\t\tconst plotData = postCalculator(beforePlotData);\n\t\tconst updatedScale = initialXScale.copy().domain(domain);\n\n\t\tconst mouseXY = finalPinch.touch1Pos;\n\t\tconst chartConfig = getChartConfigWithUpdatedYScales(\n\t\t\tinitialChartConfig,\n\t\t\t{ plotData, xAccessor, displayXAccessor, fullData },\n\t\t\tupdatedScale.domain()\n\t\t);\n\t\tconst currentItem = getCurrentItem(updatedScale, xAccessor, mouseXY, plotData);\n\n\t\treturn {\n\t\t\tchartConfig,\n\t\t\txScale: updatedScale,\n\t\t\tplotData,\n\t\t\tmouseXY,\n\t\t\tcurrentItem,\n\t\t};\n\t}\n\tcancelDrag() {\n\t\tthis.eventCaptureNode.cancelDrag();\n\t\tthis.triggerEvent(\"dragcancel\");\n\t}\n\thandlePinchZoom(initialPinch, finalPinch, e) {\n\t\tif (!this.waitingForPinchZoomAnimationFrame) {\n\t\t\tthis.waitingForPinchZoomAnimationFrame = true;\n\t\t\tconst state = this.pinchZoomHelper(initialPinch, finalPinch);\n\n\t\t\tthis.triggerEvent(\"pinchzoom\", state, e);\n\n\t\t\tthis.finalPinch = finalPinch;\n\n\t\t\trequestAnimationFrame(() => {\n\t\t\t\tthis.clearBothCanvas();\n\t\t\t\tthis.draw({ trigger: \"pinchzoom\" });\n\t\t\t\tthis.waitingForPinchZoomAnimationFrame = false;\n\t\t\t});\n\t\t}\n\t}\n\thandlePinchZoomEnd(initialPinch, e) {\n\t\tconst { xAccessor } = this.state;\n\n\t\tif (this.finalPinch) {\n\t\t\tconst state = this.pinchZoomHelper(initialPinch, this.finalPinch);\n\t\t\tconst { xScale } = state;\n\t\t\tthis.triggerEvent(\"pinchzoom\", state, e);\n\n\t\t\tthis.finalPinch = null;\n\n\t\t\tthis.clearThreeCanvas();\n\n\t\t\tconst { fullData } = this;\n\t\t\tconst firstItem = head(fullData);\n\n\t\t\tconst start = head(xScale.domain());\n\t\t\tconst end = xAccessor(firstItem);\n\t\t\tconst { onLoadMore } = this.props;\n\n\t\t\tthis.setState(state, () => {\n\t\t\t\tif (start < end) {\n\t\t\t\t\tonLoadMore(start, end);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\thandleZoom(zoomDirection, mouseXY, e) {\n\t\tif (this.panInProgress)\n\t\t\treturn;\n\t\t// console.log(\"zoomDirection \", zoomDirection, \" mouseXY \", mouseXY);\n\t\tconst { xAccessor, xScale: initialXScale, plotData: initialPlotData } = this.state;\n\t\tconst { zoomMultiplier, zoomAnchor } = this.props;\n\t\tconst { fullData } = this;\n\t\tconst item = zoomAnchor({\n\t\t\txScale: initialXScale,\n\t\t\txAccessor,\n\t\t\tmouseXY,\n\t\t\tplotData: initialPlotData,\n\t\t\tfullData,\n\t\t});\n\n\t\tconst cx = initialXScale(item);\n\t\tconst c = zoomDirection > 0 ? 1 * zoomMultiplier : 1 / zoomMultiplier;\n\t\tconst newDomain = initialXScale.range().map(x => cx + (x - cx) * c).map(initialXScale.invert);\n\n\t\tconst { xScale, plotData, chartConfig } = this.calculateStateForDomain(newDomain);\n\n\t\tconst currentItem = getCurrentItem(xScale, xAccessor, mouseXY, plotData);\n\t\tconst currentCharts = getCurrentCharts(chartConfig, mouseXY);\n\n\t\tthis.clearThreeCanvas();\n\n\t\tconst firstItem = head(fullData);\n\n\t\tconst start = head(xScale.domain());\n\t\tconst end = xAccessor(firstItem);\n\t\tconst { onLoadMore } = this.props;\n\n\t\tthis.mutableState = {\n\t\t\tmouseXY: mouseXY,\n\t\t\tcurrentItem: currentItem,\n\t\t\tcurrentCharts: currentCharts,\n\t\t};\n\n\t\tthis.triggerEvent(\"zoom\", {\n\t\t\txScale,\n\t\t\tplotData,\n\t\t\tchartConfig,\n\t\t\tmouseXY,\n\t\t\tcurrentCharts,\n\t\t\tcurrentItem,\n\t\t\tshow: true,\n\t\t}, e);\n\n\t\tthis.setState({\n\t\t\txScale,\n\t\t\tplotData,\n\t\t\tchartConfig,\n\t\t}, () => {\n\t\t\tif (start < end) {\n\t\t\t\tonLoadMore(start, end);\n\t\t\t}\n\t\t});\n\t}\n\txAxisZoom(newDomain) {\n\t\tconst { xScale, plotData, chartConfig } = this.calculateStateForDomain(newDomain);\n\t\tthis.clearThreeCanvas();\n\n\t\tconst { xAccessor } = this.state;\n\t\tconst { fullData } = this;\n\t\tconst firstItem = head(fullData);\n\t\tconst start = head(xScale.domain());\n\t\tconst end = xAccessor(firstItem);\n\t\tconst { onLoadMore } = this.props;\n\n\t\tthis.setState({\n\t\t\txScale,\n\t\t\tplotData,\n\t\t\tchartConfig,\n\t\t}, () => {\n\t\t\tif (start < end) onLoadMore(start, end);\n\t\t});\n\t}\n\tyAxisZoom(chartId, newDomain) {\n\t\tthis.clearThreeCanvas();\n\t\tconst { chartConfig: initialChartConfig } = this.state;\n\t\tconst chartConfig = initialChartConfig\n\t\t\t.map(each => {\n\t\t\t\tif (each.id === chartId) {\n\t\t\t\t\tconst { yScale } = each;\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...each,\n\t\t\t\t\t\tyScale: yScale.copy().domain(newDomain),\n\t\t\t\t\t\tyPanEnabled: true,\n\t\t\t\t\t};\n\t\t\t\t} else {\n\t\t\t\t\treturn each;\n\t\t\t\t}\n\t\t\t});\n\n\t\tthis.setState({\n\t\t\tchartConfig,\n\t\t});\n\t}\n\ttriggerEvent(type, props, e) {\n\t\t// console.log(\"triggering ->\", type);\n\n\t\tthis.subscriptions.forEach(each => {\n\t\t\tconst state = {\n\t\t\t\t...this.state,\n\t\t\t\tfullData: this.fullData,\n\t\t\t\tsubscriptions: this.subscriptions,\n\t\t\t};\n\t\t\teach.listener(type, props, state, e);\n\t\t});\n\t}\n\tdraw(props) {\n\t\tthis.subscriptions.forEach(each => {\n\t\t\tif (isDefined(each.draw))\n\t\t\t\teach.draw(props);\n\t\t});\n\t}\n\tredraw() {\n\t\tthis.clearThreeCanvas();\n\t\tthis.draw({ force: true });\n\t}\n\tpanHelper(mouseXY, initialXScale, { dx, dy }, chartsToPan) {\n\t\tconst { xAccessor, displayXAccessor, chartConfig: initialChartConfig } = this.state;\n\t\tconst { filterData } = this.state;\n\t\tconst { fullData } = this;\n\t\tconst { postCalculator } = this.props;\n\n\t\t// console.log(dx, dy);\n\t\tif (isNotDefined(initialXScale.invert))\n\t\t\tthrow new Error(\"xScale provided does not have an invert() method.\"\n\t\t\t\t+ \"You are likely using an ordinal scale. This scale does not support zoom, pan\");\n\n\t\tconst newDomain = initialXScale.range().map(x => x - dx).map(initialXScale.invert);\n\n\t\tconst { plotData: beforePlotData, domain } = filterData(\n\t\t\tfullData,\n\t\t\tnewDomain,\n\t\t\txAccessor,\n\t\t\tinitialXScale,\n\t\t\t{\n\t\t\t\tcurrentPlotData: this.hackyWayToStopPanBeyondBounds__plotData,\n\t\t\t\tcurrentDomain: this.hackyWayToStopPanBeyondBounds__domain\n\t\t\t}\n\t\t);\n\n\t\tconst updatedScale = initialXScale.copy().domain(domain);\n\t\tconst plotData = postCalculator(beforePlotData);\n\t\t// console.log(last(plotData));\n\n\t\tconst currentItem = getCurrentItem(updatedScale, xAccessor, mouseXY, plotData);\n\t\tconst chartConfig = getChartConfigWithUpdatedYScales(\n\t\t\tinitialChartConfig,\n\t\t\t{ plotData, xAccessor, displayXAccessor, fullData },\n\t\t\tupdatedScale.domain(),\n\t\t\tdy,\n\t\t\tchartsToPan\n\t\t);\n\t\tconst currentCharts = getCurrentCharts(chartConfig, mouseXY);\n\n\t\t// console.log(initialXScale.domain(), newDomain, updatedScale.domain());\n\t\treturn {\n\t\t\txScale: updatedScale,\n\t\t\tplotData,\n\t\t\tchartConfig,\n\t\t\tmouseXY,\n\t\t\tcurrentCharts,\n\t\t\tcurrentItem,\n\t\t};\n\t}\n\thandlePan(mousePosition, panStartXScale, dxdy, chartsToPan, e) {\n\t\tif (!this.waitingForPanAnimationFrame) {\n\t\t\tthis.waitingForPanAnimationFrame = true;\n\n\t\t\tthis.hackyWayToStopPanBeyondBounds__plotData = this.hackyWayToStopPanBeyondBounds__plotData || this.state.plotData;\n\t\t\tthis.hackyWayToStopPanBeyondBounds__domain = this.hackyWayToStopPanBeyondBounds__domain || this.state.xScale.domain();\n\n\t\t\tconst state = this.panHelper(mousePosition, panStartXScale, dxdy, chartsToPan);\n\n\t\t\tthis.hackyWayToStopPanBeyondBounds__plotData = state.plotData;\n\t\t\tthis.hackyWayToStopPanBeyondBounds__domain = state.xScale.domain();\n\n\t\t\tthis.panInProgress = true;\n\t\t\t// console.log(panStartXScale.domain(), state.xScale.domain());\n\n\t\t\tthis.triggerEvent(\"pan\", state, e);\n\n\t\t\tthis.mutableState = {\n\t\t\t\tmouseXY: state.mouseXY,\n\t\t\t\tcurrentItem: state.currentItem,\n\t\t\t\tcurrentCharts: state.currentCharts,\n\t\t\t};\n\t\t\trequestAnimationFrame(() => {\n\t\t\t\tthis.waitingForPanAnimationFrame = false;\n\t\t\t\tthis.clearBothCanvas();\n\t\t\t\tthis.draw({ trigger: \"pan\" });\n\t\t\t});\n\t\t}\n\t}\n\thandlePanEnd(mousePosition, panStartXScale, dxdy, chartsToPan, e) {\n\t\tconst state = this.panHelper(mousePosition, panStartXScale, dxdy, chartsToPan);\n\t\t// console.log(this.canvasDrawCallbackList.map(d => d.type));\n\t\tthis.hackyWayToStopPanBeyondBounds__plotData = null;\n\t\tthis.hackyWayToStopPanBeyondBounds__domain = null;\n\n\t\tthis.panInProgress = false;\n\n\t\t// console.log(\"PANEND\", panEnd++);\n\t\tconst {\n\t\t\txScale,\n\t\t\tplotData,\n\t\t\tchartConfig,\n\t\t} = state;\n\n\t\tthis.triggerEvent(\"panend\", state, e);\n\n\t\trequestAnimationFrame(() => {\n\t\t\tconst { xAccessor } = this.state;\n\t\t\tconst { fullData } = this;\n\n\t\t\tconst firstItem = head(fullData);\n\t\t\tconst start = head(xScale.domain());\n\t\t\tconst end = xAccessor(firstItem);\n\t\t\t// console.log(start, end, start < end ? \"Load more\" : \"I have it\");\n\n\t\t\tconst { onLoadMore } = this.props;\n\n\t\t\tthis.clearThreeCanvas();\n\n\t\t\tthis.setState({\n\t\t\t\txScale,\n\t\t\t\tplotData,\n\t\t\t\tchartConfig,\n\t\t\t}, () => {\n\t\t\t\tif (start < end) onLoadMore(start, end);\n\t\t\t});\n\t\t});\n\t}\n\thandleMouseDown(mousePosition, currentCharts, e) {\n\t\tthis.triggerEvent(\"mousedown\", this.mutableState, e);\n\t}\n\thandleMouseEnter(e) {\n\t\tthis.triggerEvent(\"mouseenter\", {\n\t\t\tshow: true,\n\t\t}, e);\n\t}\n\thandleMouseMove(mouseXY, inputType, e) {\n\t\tif (!this.waitingForMouseMoveAnimationFrame) {\n\t\t\tthis.waitingForMouseMoveAnimationFrame = true;\n\n\t\t\tconst { chartConfig, plotData, xScale, xAccessor } = this.state;\n\t\t\tconst currentCharts = getCurrentCharts(chartConfig, mouseXY);\n\t\t\tconst currentItem = getCurrentItem(xScale, xAccessor, mouseXY, plotData);\n\t\t\tthis.triggerEvent(\"mousemove\", {\n\t\t\t\tshow: true,\n\t\t\t\tmouseXY,\n\t\t\t\t// prevMouseXY is used in interactive components\n\t\t\t\tprevMouseXY: this.prevMouseXY,\n\t\t\t\tcurrentItem,\n\t\t\t\tcurrentCharts,\n\t\t\t}, e);\n\n\t\t\tthis.prevMouseXY = mouseXY;\n\t\t\tthis.mutableState = {\n\t\t\t\tmouseXY,\n\t\t\t\tcurrentItem,\n\t\t\t\tcurrentCharts,\n\t\t\t};\n\n\t\t\trequestAnimationFrame(() => {\n\t\t\t\tthis.clearMouseCanvas();\n\t\t\t\tthis.draw({ trigger: \"mousemove\" });\n\t\t\t\tthis.waitingForMouseMoveAnimationFrame = false;\n\t\t\t});\n\t\t}\n\t}\n\thandleMouseLeave(e) {\n\t\tthis.triggerEvent(\"mouseleave\", { show: false }, e);\n\t\tthis.clearMouseCanvas();\n\t\tthis.draw({ trigger: \"mouseleave\" });\n\t}\n\thandleDragStart({ startPos }, e) {\n\t\tthis.triggerEvent(\"dragstart\", { startPos }, e);\n\t}\n\thandleDrag({ startPos, mouseXY }, e) {\n\t\tconst { chartConfig, plotData, xScale, xAccessor } = this.state;\n\t\tconst currentCharts = getCurrentCharts(chartConfig, mouseXY);\n\t\tconst currentItem = getCurrentItem(xScale, xAccessor, mouseXY, plotData);\n\n\t\tthis.triggerEvent(\"drag\", {\n\t\t\tstartPos,\n\t\t\tmouseXY,\n\t\t\tcurrentItem,\n\t\t\tcurrentCharts,\n\t\t}, e);\n\n\t\tthis.mutableState = {\n\t\t\tmouseXY,\n\t\t\tcurrentItem,\n\t\t\tcurrentCharts,\n\t\t};\n\n\t\trequestAnimationFrame(() => {\n\t\t\tthis.clearMouseCanvas();\n\t\t\tthis.draw({ trigger: \"drag\" });\n\t\t});\n\t}\n\thandleDragEnd({ mouseXY }, e) {\n\t\tthis.triggerEvent(\"dragend\", { mouseXY }, e);\n\n\t\trequestAnimationFrame(() => {\n\t\t\tthis.clearMouseCanvas();\n\t\t\tthis.draw({ trigger: \"dragend\" });\n\t\t});\n\t}\n\thandleClick(mousePosition, e) {\n\t\tthis.triggerEvent(\"click\", this.mutableState, e);\n\n\t\trequestAnimationFrame(() => {\n\t\t\tthis.clearMouseCanvas();\n\t\t\tthis.draw({ trigger: \"click\" });\n\t\t});\n\t}\n\thandleDoubleClick(mousePosition, e) {\n\t\tthis.triggerEvent(\"dblclick\", {}, e);\n\t}\n\tgetChildContext() {\n\t\tconst dimensions = getDimensions(this.props);\n\t\treturn {\n\t\t\tfullData: this.fullData,\n\t\t\tplotData: this.state.plotData,\n\t\t\twidth: dimensions.width,\n\t\t\theight: dimensions.height,\n\t\t\tchartConfig: this.state.chartConfig,\n\t\t\txScale: this.state.xScale,\n\t\t\txAccessor: this.state.xAccessor,\n\t\t\tdisplayXAccessor: this.state.displayXAccessor,\n\t\t\tchartCanvasType: this.props.type,\n\t\t\tmargin: this.props.margin,\n\t\t\tratio: this.props.ratio,\n\t\t\txAxisZoom: this.xAxisZoom,\n\t\t\tyAxisZoom: this.yAxisZoom,\n\t\t\tgetCanvasContexts: this.getCanvasContexts,\n\t\t\tredraw: this.redraw,\n\t\t\tsubscribe: this.subscribe,\n\t\t\tunsubscribe: this.unsubscribe,\n\t\t\tgenerateSubscriptionId: this.generateSubscriptionId,\n\t\t\tgetMutableState: this.getMutableState,\n\t\t\tamIOnTop: this.amIOnTop,\n\t\t\tsetCursorClass: this.setCursorClass,\n\t\t};\n\t}\n\tcomponentWillMount() {\n\t\tconst { fullData, ...state } = resetChart(this.props, true);\n\t\tthis.setState(state);\n\t\tthis.fullData = fullData;\n\t}\n\tcomponentWillReceiveProps(nextProps) {\n\t\tconst reset = shouldResetChart(this.props, nextProps);\n\n\t\tconst interaction = isInteractionEnabled(this.state.xScale, this.state.xAccessor, this.state.plotData);\n\t\tconst { chartConfig: initialChartConfig } = this.state;\n\n\t\tlet newState;\n\t\tif (!interaction || reset || !shallowEqual(this.props.xExtents, nextProps.xExtents)) {\n\t\t\tif (process.env.NODE_ENV !== \"production\") {\n\t\t\t\tif (!interaction)\n\t\t\t\t\tlog(\"RESET CHART, changes to a non interactive chart\");\n\t\t\t\telse if (reset)\n\t\t\t\t\tlog(\"RESET CHART, one or more of these props changed\", CANDIDATES_FOR_RESET);\n\t\t\t\telse\n\t\t\t\t\tlog(\"xExtents changed\");\n\t\t\t}\n\t\t\t// do reset\n\t\t\tnewState = resetChart(nextProps);\n\t\t\tthis.mutableState = {};\n\t\t} else {\n\n\t\t\tconst [start, end] = this.state.xScale.domain();\n\t\t\tconst prevLastItem = last(this.fullData);\n\n\t\t\tconst calculatedState = calculateFullData(nextProps);\n\t\t\tconst { xAccessor } = calculatedState;\n\t\t\tconst lastItemWasVisible = xAccessor(prevLastItem) <= end && xAccessor(prevLastItem) >= start;\n\n\t\t\tif (process.env.NODE_ENV !== \"production\") {\n\t\t\t\tif (this.props.data !== nextProps.data)\n\t\t\t\t\tlog(\"data is changed but seriesName did not, change the seriesName if you wish to reset the chart and lastItemWasVisible = \", lastItemWasVisible);\n\t\t\t\telse\n\t\t\t\t\tlog(\"Trivial change, may be width/height or type changed, but that does not matter\");\n\t\t\t}\n\n\t\t\tnewState = updateChart(\n\t\t\t\tcalculatedState,\n\t\t\t\tthis.state.xScale,\n\t\t\t\tnextProps,\n\t\t\t\tlastItemWasVisible,\n\t\t\t\tinitialChartConfig,\n\t\t\t);\n\t\t}\n\n\t\tconst { fullData, ...state } = newState;\n\n\t\tif (this.panInProgress) {\n\t\t\tif (process.env.NODE_ENV !== \"production\") {\n\t\t\t\tlog(\"Pan is in progress\");\n\t\t\t}\n\t\t} else {\n\t\t\t/*\n\t\t\tif (!reset) {\n\t\t\t\tstate.chartConfig\n\t\t\t\t\t.forEach((each) => {\n\t\t\t\t\t\t// const sourceChartConfig = initialChartConfig.filter(d => d.id === each.id);\n\t\t\t\t\t\tconst prevChartConfig = find(initialChartConfig, d => d.id === each.id);\n\t\t\t\t\t\tif (isDefined(prevChartConfig) && prevChartConfig.yPanEnabled) {\n\t\t\t\t\t\t\teach.yScale.domain(prevChartConfig.yScale.domain());\n\t\t\t\t\t\t\teach.yPanEnabled = prevChartConfig.yPanEnabled;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t}\n\t\t\t*/\n\t\t\tthis.clearThreeCanvas();\n\n\t\t\tthis.setState(state);\n\t\t}\n\t\tthis.fullData = fullData;\n\t}\n\t/*\n\tcomponentDidUpdate(prevProps, prevState) {\n\t\tconsole.error(this.state.chartConfig, this.state.chartConfig.map(d => d.yScale.domain()));\n\t}\n\t*/\n\tresetYDomain(chartId) {\n\t\tconst { chartConfig } = this.state;\n\t\tlet changed = false;\n\t\tconst newChartConfig = chartConfig\n\t\t\t.map(each => {\n\t\t\t\tif ((isNotDefined(chartId) || each.id === chartId)\n\t\t\t\t\t\t&& !shallowEqual(each.yScale.domain(), each.realYDomain)) {\n\t\t\t\t\tchanged = true;\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...each,\n\t\t\t\t\t\tyScale: each.yScale.domain(each.realYDomain),\n\t\t\t\t\t\tyPanEnabled: false,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\treturn each;\n\t\t\t});\n\n\t\tif (changed) {\n\t\t\tthis.clearThreeCanvas();\n\t\t\tthis.setState({\n\t\t\t\tchartConfig: newChartConfig\n\t\t\t});\n\t\t}\n\t}\n\tshouldComponentUpdate() {\n\t\t// console.log(\"Happneing.....\", !this.panInProgress)\n\t\treturn !this.panInProgress;\n\t}\n\trender() {\n\n\t\tconst { type, height, width, margin, className, zIndex, defaultFocus, ratio, mouseMoveEvent, panEvent, zoomEvent } = this.props;\n\t\tconst { useCrossHairStyleCursor, onSelect } = this.props;\n\n\t\tconst { plotData, xScale, xAccessor, chartConfig } = this.state;\n\t\tconst dimensions = getDimensions(this.props);\n\n\t\tconst interaction = isInteractionEnabled(xScale, xAccessor, plotData);\n\n\t\tconst cursorStyle = useCrossHairStyleCursor && interaction;\n\t\tconst cursor = getCursorStyle();\n\t\treturn (\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t{cursor}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t{chartConfig\n\t\t\t\t\t\t\t.map((each, idx) => \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{this.props.children}\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t);\n\t}\n}\n\nfunction isInteractionEnabled(xScale, xAccessor, data) {\n\tconst interaction = !isNaN(xScale(xAccessor(head(data)))) && isDefined(xScale.invert);\n\treturn interaction;\n}\n\nChartCanvas.propTypes = {\n\twidth: PropTypes.number.isRequired,\n\theight: PropTypes.number.isRequired,\n\tmargin: PropTypes.object,\n\tratio: PropTypes.number.isRequired,\n\t// interval: PropTypes.oneOf([\"D\", \"W\", \"M\"]), // ,\"m1\", \"m5\", \"m15\", \"W\", \"M\"\n\ttype: PropTypes.oneOf([\"svg\", \"hybrid\"]),\n\tpointsPerPxThreshold: PropTypes.number,\n\tminPointsPerPxThreshold: PropTypes.number,\n\tdata: PropTypes.array.isRequired,\n\t// initialDisplay: PropTypes.number,\n\txAccessor: PropTypes.func,\n\txExtents: PropTypes.oneOfType([\n\t\tPropTypes.array,\n\t\tPropTypes.func\n\t]),\n\tzoomAnchor: PropTypes.func,\n\n\tclassName: PropTypes.string,\n\tseriesName: PropTypes.string.isRequired,\n\tzIndex: PropTypes.number,\n\tchildren: PropTypes.node.isRequired,\n\txScale: PropTypes.func.isRequired,\n\tpostCalculator: PropTypes.func,\n\tflipXScale: PropTypes.bool,\n\tuseCrossHairStyleCursor: PropTypes.bool,\n\tpadding: PropTypes.oneOfType([\n\t\tPropTypes.number,\n\t\tPropTypes.shape({\n\t\t\tleft: PropTypes.number,\n\t\t\tright: PropTypes.number,\n\t\t})\n\t]),\n\tdefaultFocus: PropTypes.bool,\n\tzoomMultiplier: PropTypes.number,\n\tonLoadMore: PropTypes.func,\n\tdisplayXAccessor: function(props, propName/* , componentName */) {\n\t\tif (isNotDefined(props[propName])) {\n\t\t\tconsole.warn(\"`displayXAccessor` is not defined,\"\n\t\t\t\t+ \" will use the value from `xAccessor` as `displayXAccessor`.\"\n\t\t\t\t+ \" This might be ok if you do not use a discontinuous scale\"\n\t\t\t\t+ \" but if you do, provide a `displayXAccessor` prop to `ChartCanvas`\");\n\t\t} else if (typeof props[propName] !== \"function\") {\n\t\t\treturn new Error(\"displayXAccessor has to be a function\");\n\t\t}\n\t},\n\tmouseMoveEvent: PropTypes.bool,\n\tpanEvent: PropTypes.bool,\n\tclamp: PropTypes.oneOfType([PropTypes.string, PropTypes.bool, PropTypes.func]),\n\tzoomEvent: PropTypes.bool,\n\tonSelect: PropTypes.func,\n\tmaintainPointsPerPixelOnResize: PropTypes.bool,\n\tdisableInteraction: PropTypes.bool,\n};\n\nChartCanvas.defaultProps = {\n\tmargin: { top: 20, right: 30, bottom: 30, left: 80 },\n\ttype: \"hybrid\",\n\tpointsPerPxThreshold: 2,\n\tminPointsPerPxThreshold: 1 / 100,\n\tclassName: \"react-stockchart\",\n\tzIndex: 1,\n\txExtents: [min, max],\n\tpostCalculator: identity,\n\tpadding: 0,\n\txAccessor: identity,\n\tflipXScale: false,\n\tuseCrossHairStyleCursor: true,\n\tdefaultFocus: true,\n\tonLoadMore: noop,\n\tonSelect: noop,\n\tmouseMoveEvent: true,\n\tpanEvent: true,\n\tzoomEvent: true,\n\tzoomMultiplier: 1.1,\n\tclamp: false,\n\tzoomAnchor: mouseBasedZoomAnchor,\n\tmaintainPointsPerPixelOnResize: true,\n\t// ratio: 2,\n\tdisableInteraction: false,\n};\n\nChartCanvas.childContextTypes = {\n\tplotData: PropTypes.array,\n\tfullData: PropTypes.array,\n\tchartConfig: PropTypes.arrayOf(\n\t\tPropTypes.shape({\n\t\t\tid: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,\n\t\t\torigin: PropTypes.arrayOf(PropTypes.number).isRequired,\n\t\t\tpadding: PropTypes.oneOfType([\n\t\t\t\tPropTypes.number,\n\t\t\t\tPropTypes.shape({\n\t\t\t\t\ttop: PropTypes.number,\n\t\t\t\t\tbottom: PropTypes.number,\n\t\t\t\t})\n\t\t\t]),\n\t\t\tyExtents: PropTypes.arrayOf(PropTypes.func),\n\t\t\tyExtentsProvider: PropTypes.func,\n\t\t\tyScale: PropTypes.func.isRequired,\n\t\t\tmouseCoordinates: PropTypes.shape({\n\t\t\t\tat: PropTypes.string,\n\t\t\t\tformat: PropTypes.func\n\t\t\t}),\n\t\t\twidth: PropTypes.number.isRequired,\n\t\t\theight: PropTypes.number.isRequired,\n\t\t})\n\t).isRequired,\n\txScale: PropTypes.func.isRequired,\n\txAccessor: PropTypes.func.isRequired,\n\tdisplayXAccessor: PropTypes.func.isRequired,\n\twidth: PropTypes.number.isRequired,\n\theight: PropTypes.number.isRequired,\n\tchartCanvasType: PropTypes.oneOf([\"svg\", \"hybrid\"]).isRequired,\n\tmargin: PropTypes.object.isRequired,\n\tratio: PropTypes.number.isRequired,\n\tgetCanvasContexts: PropTypes.func,\n\txAxisZoom: PropTypes.func,\n\tyAxisZoom: PropTypes.func,\n\tamIOnTop: PropTypes.func,\n\tredraw: PropTypes.func,\n\tsubscribe: PropTypes.func,\n\tunsubscribe: PropTypes.func,\n\tsetCursorClass: PropTypes.func,\n\tgenerateSubscriptionId: PropTypes.func,\n\tgetMutableState: PropTypes.func,\n};\n\nChartCanvas.ohlcv = d => ({ date: d.date, open: d.open, high: d.high, low: d.low, close: d.close, volume: d.volume });\n\nexport default ChartCanvas;\n"]} \ No newline at end of file diff --git a/es/lib/annotation/LabelAnnotation.js b/es/lib/annotation/LabelAnnotation.js index 2338a4e..a059e44 100644 --- a/es/lib/annotation/LabelAnnotation.js +++ b/es/lib/annotation/LabelAnnotation.js @@ -116,7 +116,7 @@ export function helper(props, xAccessor, xScale, yScale) { LabelAnnotation.propTypes = { className: PropTypes.string, - text: PropTypes.string, + text: PropTypes.oneOfType([PropTypes.string, PropTypes.func]), textAnchor: PropTypes.string, fontFamily: PropTypes.string, fontSize: PropTypes.number, diff --git a/es/lib/annotation/LabelAnnotation.js.map b/es/lib/annotation/LabelAnnotation.js.map index 2fe59de..9b8eb4e 100644 --- a/es/lib/annotation/LabelAnnotation.js.map +++ b/es/lib/annotation/LabelAnnotation.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../../../src/lib/annotation/LabelAnnotation.js"],"names":["React","Component","PropTypes","functor","LabelAnnotation","props","handleClick","bind","e","onClick","xScale","yScale","datum","className","textAnchor","fontFamily","fontSize","opacity","rotate","xAccessor","helper","xPos","yPos","fill","text","tooltip","x","y","plotData","xFunc","yFunc","propTypes","string","number","func","object","oneOfType","defaultProps"],"mappings":"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","file":"LabelAnnotation.js","sourcesContent":["\n\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { functor } from \"../utils\";\n\nclass LabelAnnotation extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.handleClick = this.handleClick.bind(this);\n\t}\n\thandleClick(e) {\n\t\tconst { onClick } = this.props;\n\n\t\tif (onClick) {\n\t\t\tconst { xScale, yScale, datum } = this.props;\n\t\t\tonClick({ xScale, yScale, datum }, e);\n\t\t}\n\t}\n\trender() {\n\t\tconst { className, textAnchor, fontFamily, fontSize, opacity, rotate } = this.props;\n\t\tconst { xAccessor, xScale, yScale } = this.props;\n\n\t\tconst { xPos, yPos, fill, text, tooltip } = helper(this.props, xAccessor, xScale, yScale);\n\n\t\treturn (\n\t\t\t{tooltip}\n\t\t\t{text}\n\t\t);\n\t}\n}\n\nexport function helper(props, xAccessor, xScale, yScale) {\n\tconst { x, y, datum, fill, text, tooltip, plotData } = props;\n\n\tconst xFunc = functor(x);\n\tconst yFunc = functor(y);\n\n\tconst [xPos, yPos] = [xFunc({ xScale, xAccessor, datum, plotData }), yFunc({ yScale, datum, plotData })];\n\n\treturn {\n\t\txPos,\n\t\tyPos,\n\t\ttext: functor(text)(datum),\n\t\tfill: functor(fill)(datum),\n\t\ttooltip: functor(tooltip)(datum),\n\t};\n}\n\nLabelAnnotation.propTypes = {\n\tclassName: PropTypes.string,\n\ttext: PropTypes.string,\n\ttextAnchor: PropTypes.string,\n\tfontFamily: PropTypes.string,\n\tfontSize: PropTypes.number,\n\topacity: PropTypes.number,\n\trotate: PropTypes.number,\n\tonClick: PropTypes.func,\n\txAccessor: PropTypes.func,\n\txScale: PropTypes.func,\n\tyScale: PropTypes.func,\n\tdatum: PropTypes.object,\n\tx: PropTypes.oneOfType([\n\t\tPropTypes.number,\n\t\tPropTypes.func\n\t]),\n\ty: PropTypes.oneOfType([\n\t\tPropTypes.number,\n\t\tPropTypes.func\n\t])\n};\n\nexport const defaultProps = {\n\ttextAnchor: \"middle\",\n\tfontFamily: \"Helvetica Neue, Helvetica, Arial, sans-serif\",\n\tfontSize: 12,\n\tfill: \"#000000\",\n\topacity: 1,\n\trotate: 0,\n\tx: ({ xScale, xAccessor, datum }) => xScale(xAccessor(datum)),\n};\n\nLabelAnnotation.defaultProps = {\n\t...defaultProps,\n\tclassName: \"react-stockcharts-labelannotation\",\n};\n\nexport default LabelAnnotation;\n"]} \ No newline at end of file +{"version":3,"sources":["../../../../src/lib/annotation/LabelAnnotation.js"],"names":["React","Component","PropTypes","functor","LabelAnnotation","props","handleClick","bind","e","onClick","xScale","yScale","datum","className","textAnchor","fontFamily","fontSize","opacity","rotate","xAccessor","helper","xPos","yPos","fill","text","tooltip","x","y","plotData","xFunc","yFunc","propTypes","string","oneOfType","func","number","object","defaultProps"],"mappings":"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","file":"LabelAnnotation.js","sourcesContent":["\n\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { functor } from \"../utils\";\n\nclass LabelAnnotation extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.handleClick = this.handleClick.bind(this);\n\t}\n\thandleClick(e) {\n\t\tconst { onClick } = this.props;\n\n\t\tif (onClick) {\n\t\t\tconst { xScale, yScale, datum } = this.props;\n\t\t\tonClick({ xScale, yScale, datum }, e);\n\t\t}\n\t}\n\trender() {\n\t\tconst { className, textAnchor, fontFamily, fontSize, opacity, rotate } = this.props;\n\t\tconst { xAccessor, xScale, yScale } = this.props;\n\n\t\tconst { xPos, yPos, fill, text, tooltip } = helper(this.props, xAccessor, xScale, yScale);\n\n\t\treturn (\n\t\t\t{tooltip}\n\t\t\t{text}\n\t\t);\n\t}\n}\n\nexport function helper(props, xAccessor, xScale, yScale) {\n\tconst { x, y, datum, fill, text, tooltip, plotData } = props;\n\n\tconst xFunc = functor(x);\n\tconst yFunc = functor(y);\n\n\tconst [xPos, yPos] = [xFunc({ xScale, xAccessor, datum, plotData }), yFunc({ yScale, datum, plotData })];\n\n\treturn {\n\t\txPos,\n\t\tyPos,\n\t\ttext: functor(text)(datum),\n\t\tfill: functor(fill)(datum),\n\t\ttooltip: functor(tooltip)(datum),\n\t};\n}\n\nLabelAnnotation.propTypes = {\n\tclassName: PropTypes.string,\n\ttext: PropTypes.oneOfType([\n\t\tPropTypes.string,\n\t\tPropTypes.func\n\t]),\n\ttextAnchor: PropTypes.string,\n\tfontFamily: PropTypes.string,\n\tfontSize: PropTypes.number,\n\topacity: PropTypes.number,\n\trotate: PropTypes.number,\n\tonClick: PropTypes.func,\n\txAccessor: PropTypes.func,\n\txScale: PropTypes.func,\n\tyScale: PropTypes.func,\n\tdatum: PropTypes.object,\n\tx: PropTypes.oneOfType([\n\t\tPropTypes.number,\n\t\tPropTypes.func\n\t]),\n\ty: PropTypes.oneOfType([\n\t\tPropTypes.number,\n\t\tPropTypes.func\n\t])\n};\n\nexport const defaultProps = {\n\ttextAnchor: \"middle\",\n\tfontFamily: \"Helvetica Neue, Helvetica, Arial, sans-serif\",\n\tfontSize: 12,\n\tfill: \"#000000\",\n\topacity: 1,\n\trotate: 0,\n\tx: ({ xScale, xAccessor, datum }) => xScale(xAccessor(datum)),\n};\n\nLabelAnnotation.defaultProps = {\n\t...defaultProps,\n\tclassName: \"react-stockcharts-labelannotation\",\n};\n\nexport default LabelAnnotation;\n"]} \ No newline at end of file diff --git a/es/lib/axes/Axis.js b/es/lib/axes/Axis.js index 1b0247d..c63d8cc 100644 --- a/es/lib/axes/Axis.js +++ b/es/lib/axes/Axis.js @@ -95,6 +95,7 @@ var Axis = function (_Component) { var _props3 = this.props, bg = _props3.bg, axisZoomCallback = _props3.axisZoomCallback, + className = _props3.className, zoomCursorClassName = _props3.zoomCursorClassName, zoomEnabled = _props3.zoomEnabled, getScale = _props3.getScale, @@ -114,6 +115,7 @@ var Axis = function (_Component) { getMoreProps: this.getMoreProps, getMouseDelta: getMouseDelta, axisZoomCallback: axisZoomCallback, + className: className, zoomCursorClassName: zoomCursorClassName, inverted: inverted, onContextMenu: onContextMenu, diff --git a/es/lib/axes/Axis.js.map b/es/lib/axes/Axis.js.map index 9f9f65a..fdd6ff5 100644 --- a/es/lib/axes/Axis.js.map +++ b/es/lib/axes/Axis.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../../../src/lib/axes/Axis.js"],"names":["React","Component","PropTypes","forceSimulation","forceX","forceCollide","range","d3Range","GenericChartComponent","getAxisCanvas","AxisZoomCapture","first","last","hexToRGBA","isNotDefined","isDefined","identity","zipper","strokeDashTypes","getStrokeDasharray","Axis","props","renderSVG","bind","drawOnCanvas","saveNode","getMoreProps","node","ctx","moreProps","showDomain","showTicks","transform","getScale","save","translate","drawAxisLine","tickProps","tickHelper","drawTicks","restore","className","ticks","axisTicksSVG","domain","axisLineSVG","bg","axisZoomCallback","zoomCursorClassName","zoomEnabled","inverted","getMouseDelta","edgeClip","onContextMenu","onDoubleClick","zoomCapture","propTypes","innerTickSize","number","outerTickSize","tickFormat","func","tickPadding","tickSize","tickLabelFill","string","tickStroke","tickStrokeOpacity","tickStrokeWidth","tickStrokeDasharray","oneOf","tickValues","oneOfType","array","tickInterval","tickIntervalFunction","bool","arrayOf","isRequired","object","defaultProps","scale","orient","fontSize","fontFamily","fontWeight","flexTicks","showTickLabel","tickArguments","tickValuesProp","min","max","baseTickValues","baseFormat","format","d","sign","tickSpacing","Math","dy","canvas_dy","textAnchor","map","x","round","value","x1","y1","x2","y2","labelX","labelY","nodes","id","fy","origX","simulation","force","strength","stop","i","tick","zip","combine","a","b","abs","y","domainClassName","fill","stroke","strokeWidth","opacity","xAxis","lineWidth","strokeStyle","beginPath","moveTo","lineTo","Tick","children","result","idx","fillStyle","forEach","drawEachTick","font","textAlign","drawEachTickLabel","setLineDash","split","fillText"],"mappings":"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","file":"Axis.js","sourcesContent":["import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { forceSimulation, forceX, forceCollide } from \"d3-force\";\nimport { range as d3Range } from \"d3-array\";\n\nimport GenericChartComponent from \"../GenericChartComponent\";\nimport { getAxisCanvas } from \"../GenericComponent\";\nimport AxisZoomCapture from \"./AxisZoomCapture\";\n\nimport { first, last, hexToRGBA, isNotDefined, isDefined, identity, zipper, strokeDashTypes, getStrokeDasharray } from \"../utils\";\n\nclass Axis extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.renderSVG = this.renderSVG.bind(this);\n\t\tthis.drawOnCanvas = this.drawOnCanvas.bind(this);\n\t\tthis.saveNode = this.saveNode.bind(this);\n\t\tthis.getMoreProps = this.getMoreProps.bind(this);\n\t}\n\tsaveNode(node) {\n\t\tthis.node = node;\n\t}\n\tgetMoreProps() {\n\t\treturn this.node.getMoreProps();\n\t}\n\tdrawOnCanvas(ctx, moreProps) {\n\t\tconst { showDomain, showTicks, transform, range, getScale } = this.props;\n\n\t\tctx.save();\n\t\tctx.translate(transform[0], transform[1]);\n\n\t\tif (showDomain) drawAxisLine(ctx, this.props, range);\n\t\tif (showTicks) {\n\t\t\tconst tickProps = tickHelper(this.props, getScale(moreProps));\n\t\t\tdrawTicks(ctx, tickProps);\n\t\t}\n\n\t\tctx.restore();\n\t}\n\trenderSVG(moreProps) {\n\t\tconst { className } = this.props;\n\t\tconst { showDomain, showTicks, range, getScale } = this.props;\n\n\t\tconst ticks = showTicks ? axisTicksSVG(this.props, getScale(moreProps)) : null;\n\t\tconst domain = showDomain ? axisLineSVG(this.props, range) : null;\n\n\t\treturn \n\t\t\t{ticks}\n\t\t\t{domain}\n\t\t;\n\t}\n\trender() {\n\t\tconst { bg, axisZoomCallback, zoomCursorClassName, zoomEnabled, getScale, inverted } = this.props;\n\t\tconst { transform, getMouseDelta, edgeClip } = this.props;\n\t\tconst { onContextMenu, onDoubleClick } = this.props;\n\n\t\tconst zoomCapture = zoomEnabled\n\t\t\t? \n\t\t\t: null;\n\n\t\treturn \n\t\t\t{zoomCapture}\n\t\t\t\n\t\t;\n\t}\n}\n\nAxis.propTypes = {\n\tinnerTickSize: PropTypes.number,\n\touterTickSize: PropTypes.number,\n\ttickFormat: PropTypes.func,\n\ttickPadding: PropTypes.number,\n\ttickSize: PropTypes.number,\n\tticks: PropTypes.number,\n\ttickLabelFill: PropTypes.string,\n\ttickStroke: PropTypes.string,\n\ttickStrokeOpacity: PropTypes.number,\n\ttickStrokeWidth: PropTypes.number,\n\ttickStrokeDasharray: PropTypes.oneOf(strokeDashTypes),\n\ttickValues: PropTypes.oneOfType([PropTypes.array, PropTypes.func]),\n\ttickInterval: PropTypes.number,\n\ttickIntervalFunction: PropTypes.func,\n\tshowDomain: PropTypes.bool,\n\tshowTicks: PropTypes.bool,\n\tclassName: PropTypes.string,\n\taxisZoomCallback: PropTypes.func,\n\tzoomEnabled: PropTypes.bool,\n\tinverted: PropTypes.bool,\n\tzoomCursorClassName: PropTypes.string,\n\ttransform: PropTypes.arrayOf(PropTypes.number).isRequired,\n\trange: PropTypes.arrayOf(PropTypes.number).isRequired,\n\tgetMouseDelta: PropTypes.func.isRequired,\n\tgetScale: PropTypes.func.isRequired,\n\tbg: PropTypes.object.isRequired,\n\tedgeClip: PropTypes.bool.isRequired,\n\tonContextMenu: PropTypes.func,\n\tonDoubleClick: PropTypes.func,\n};\n\nAxis.defaultProps = {\n\tzoomEnabled: false,\n\tzoomCursorClassName: \"\",\n\tedgeClip: false,\n};\n\nfunction tickHelper(props, scale) {\n\tconst {\n\t\torient, innerTickSize, tickFormat, tickPadding,\n\t\ttickLabelFill, tickStrokeWidth, tickStrokeDasharray,\n\t\tfontSize, fontFamily, fontWeight, showTicks, flexTicks,\n\t\tshowTickLabel\n\t} = props;\n\tconst {\n\t\tticks: tickArguments, tickValues: tickValuesProp,\n\t\ttickStroke, tickStrokeOpacity, tickInterval, tickIntervalFunction\n\t} = props;\n\n\t// if (tickArguments) tickArguments = [tickArguments];\n\n\tlet tickValues;\n\tif (isDefined(tickValuesProp)) {\n\t\tif (typeof tickValuesProp === \"function\") {\n\t\t\ttickValues = tickValuesProp(scale.domain());\n\t\t} else {\n\t\t\ttickValues = tickValuesProp;\n\t\t}\n\t} else if (isDefined(tickInterval)) {\n\t\tconst [min, max] = scale.domain();\n\t\tconst baseTickValues = d3Range(min, max, (max - min) / tickInterval);\n\n\t\ttickValues = tickIntervalFunction\n\t\t\t? tickIntervalFunction(min, max, tickInterval)\n\t\t\t: baseTickValues;\n\t} else if (isDefined(scale.ticks)) {\n\t\ttickValues = scale.ticks(tickArguments, flexTicks);\n\t} else {\n\t\ttickValues = scale.domain();\n\t}\n\n\tconst baseFormat = scale.tickFormat\n\t\t? scale.tickFormat(tickArguments)\n\t\t: identity;\n\n\tconst format = isNotDefined(tickFormat)\n\t\t? baseFormat\n\t\t: d => tickFormat(d) || \"\";\n\n\tconst sign = orient === \"top\" || orient === \"left\" ? -1 : 1;\n\tconst tickSpacing = Math.max(innerTickSize, 0) + tickPadding;\n\n\tlet ticks, dy, canvas_dy, textAnchor;\n\n\tif (orient === \"bottom\" || orient === \"top\") {\n\t\tdy = sign < 0 ? \"0em\" : \".71em\";\n\t\tcanvas_dy = sign < 0 ? 0 : (fontSize * .71);\n\t\ttextAnchor = \"middle\";\n\n\t\tticks = tickValues.map(d => {\n\t\t\tconst x = Math.round(scale(d));\n\t\t\treturn {\n\t\t\t\tvalue: d,\n\t\t\t\tx1: x,\n\t\t\t\ty1: 0,\n\t\t\t\tx2: x,\n\t\t\t\ty2: sign * innerTickSize,\n\t\t\t\tlabelX: x,\n\t\t\t\tlabelY: sign * tickSpacing,\n\t\t\t};\n\t\t});\n\n\t\tif (showTicks && flexTicks) {\n\t\t\t// console.log(ticks, showTicks);\n\n\t\t\tconst nodes = ticks.map(d => ({ id: d.value, value: d.value, fy: d.y2, origX: d.x1 }));\n\n\t\t\tconst simulation = forceSimulation(nodes)\n\t\t\t\t.force(\"x\", forceX(d => d.origX).strength(1))\n\t\t\t\t.force(\"collide\", forceCollide(22))\n\t\t\t\t// .force(\"center\", forceCenter())\n\t\t\t\t.stop();\n\n\t\t\tfor (let i = 0; i < 100; ++i) simulation.tick();\n\t\t\t// console.log(nodes);\n\n\t\t\tconst zip = zipper()\n\t\t\t\t.combine((a, b) => {\n\t\t\t\t\tif (Math.abs(b.x - b.origX) > 0.01) {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t...a,\n\t\t\t\t\t\t\tx2: b.x,\n\t\t\t\t\t\t\tlabelX: b.x\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\treturn a;\n\t\t\t\t});\n\n\t\t\tticks = zip(ticks, nodes);\n\t\t}\n\n\n\t} else {\n\t\tticks = tickValues.map(d => {\n\t\t\tconst y = Math.round(scale(d));\n\t\t\treturn {\n\t\t\t\tvalue: d,\n\t\t\t\tx1: 0,\n\t\t\t\ty1: y,\n\t\t\t\tx2: sign * innerTickSize,\n\t\t\t\ty2: y,\n\t\t\t\tlabelX: sign * tickSpacing,\n\t\t\t\tlabelY: y,\n\t\t\t};\n\t\t});\n\n\t\tdy = \".32em\";\n\t\tcanvas_dy = (fontSize * .32);\n\t\ttextAnchor = sign < 0 ? \"end\" : \"start\";\n\t}\n\n\treturn {\n\t\tticks, scale, tickStroke,\n\t\ttickLabelFill: (tickLabelFill || tickStroke),\n\t\ttickStrokeOpacity,\n\t\ttickStrokeWidth,\n\t\ttickStrokeDasharray,\n\t\tdy,\n\t\tcanvas_dy,\n\t\ttextAnchor,\n\t\tfontSize,\n\t\tfontFamily,\n\t\tfontWeight,\n\t\tformat,\n\t\tshowTickLabel,\n\t};\n}\n\n/* eslint-disable react/prop-types */\nfunction axisLineSVG(props, range) {\n\tconst { orient, outerTickSize } = props;\n\tconst { domainClassName, fill, stroke, strokeWidth, opacity } = props;\n\n\tconst sign = orient === \"top\" || orient === \"left\" ? -1 : 1;\n\n\tlet d;\n\n\tif (orient === \"bottom\" || orient === \"top\") {\n\t\td = \"M\" + range[0] + \",\" + sign * outerTickSize + \"V0H\" + range[1] + \"V\" + sign * outerTickSize;\n\t} else {\n\t\td = \"M\" + sign * outerTickSize + \",\" + range[0] + \"H0V\" + range[1] + \"H\" + sign * outerTickSize;\n\t}\n\n\treturn (\n\t\t\n\t\t\n\t);\n}\n/* eslint-enable react/prop-types */\n\n\nfunction drawAxisLine(ctx, props, range) {\n\t// props = { ...AxisLine.defaultProps, ...props };\n\n\tconst { orient, outerTickSize, stroke, strokeWidth, opacity } = props;\n\n\tconst sign = orient === \"top\" || orient === \"left\" ? -1 : 1;\n\tconst xAxis = (orient === \"bottom\" || orient === \"top\");\n\n\t// var range = d3_scaleRange(xAxis ? xScale : yScale);\n\n\tctx.lineWidth = strokeWidth;\n\tctx.strokeStyle = hexToRGBA(stroke, opacity);\n\n\tctx.beginPath();\n\n\tif (xAxis) {\n\t\tctx.moveTo(first(range), sign * outerTickSize);\n\t\tctx.lineTo(first(range), 0);\n\t\tctx.lineTo(last(range), 0);\n\t\tctx.lineTo(last(range), sign * outerTickSize);\n\t} else {\n\t\tctx.moveTo(sign * outerTickSize, first(range));\n\t\tctx.lineTo(0, first(range));\n\t\tctx.lineTo(0, last(range));\n\t\tctx.lineTo(sign * outerTickSize, last(range));\n\t}\n\tctx.stroke();\n}\n\nfunction Tick(props) {\n\tconst { tickLabelFill, tickStroke, tickStrokeOpacity, tickStrokeDasharray, tickStrokeWidth, textAnchor, fontSize, fontFamily, fontWeight } = props;\n\tconst { x1, y1, x2, y2, labelX, labelY, dy } = props;\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t{props.children}\n\t\t\t\n\t\t\n\t);\n}\n\nTick.propTypes = {\n\tchildren: PropTypes.string.isRequired,\n\tx1: PropTypes.number.isRequired,\n\ty1: PropTypes.number.isRequired,\n\tx2: PropTypes.number.isRequired,\n\ty2: PropTypes.number.isRequired,\n\tlabelX: PropTypes.number.isRequired,\n\tlabelY: PropTypes.number.isRequired,\n\tdy: PropTypes.string.isRequired,\n\ttickStroke: PropTypes.string,\n\ttickLabelFill: PropTypes.string,\n\ttickStrokeWidth: PropTypes.number,\n\ttickStrokeOpacity: PropTypes.number,\n\ttickStrokeDasharray: PropTypes.oneOf(strokeDashTypes),\n\ttextAnchor: PropTypes.string,\n\tfontSize: PropTypes.number,\n\tfontFamily: PropTypes.string,\n\tfontWeight: PropTypes.oneOfType([\n\t PropTypes.string,\n\t PropTypes.number\n\t]),\n};\n\nfunction axisTicksSVG(props, scale) {\n\tconst result = tickHelper(props, scale);\n\n\tconst { tickLabelFill, tickStroke, tickStrokeOpacity, tickStrokeWidth, tickStrokeDasharray, textAnchor } = result;\n\tconst { fontSize, fontFamily, fontWeight, ticks, format } = result;\n\n\tconst { dy } = result;\n\n\treturn (\n\t\t\n\t\t\t{ticks.map((tick, idx) => {\n\t\t\t\treturn (\n\t\t\t\t\t{format(tick.value)}\n\t\t\t\t);\n\t\t\t})}\n\t\t\n\t);\n}\n\nfunction drawTicks(ctx, result) {\n\n\tconst { tickStroke, tickStrokeOpacity, tickLabelFill } = result;\n\tconst { textAnchor, fontSize, fontFamily, fontWeight, ticks, showTickLabel } = result;\n\n\tctx.strokeStyle = hexToRGBA(tickStroke, tickStrokeOpacity);\n\n\tctx.fillStyle = tickStroke;\n\t// ctx.textBaseline = 'middle';\n\n\tticks.forEach((tick) => {\n\t\tdrawEachTick(ctx, tick, result);\n\t});\n\n\tctx.font = `${fontWeight} ${fontSize}px ${fontFamily}`;\n\tctx.fillStyle = tickLabelFill;\n\tctx.textAlign = textAnchor === \"middle\" ? \"center\" : textAnchor;\n\n\tif (showTickLabel) {\n\t\tticks.forEach((tick) => {\n\t\t\tdrawEachTickLabel(ctx, tick, result);\n\t\t});\n\t}\n}\n\nfunction drawEachTick(ctx, tick, result) {\n\tconst { tickStrokeWidth, tickStrokeDasharray } = result;\n\n\tctx.beginPath();\n\n\tctx.moveTo(tick.x1, tick.y1);\n\tctx.lineTo(tick.x2, tick.y2);\n\tctx.lineWidth = tickStrokeWidth;\n\tctx.setLineDash(getStrokeDasharray(tickStrokeDasharray).split(\",\"));\n\tctx.stroke();\n}\n\nfunction drawEachTickLabel(ctx, tick, result) {\n\tconst { canvas_dy, format } = result;\n\n\tctx.beginPath();\n\tctx.fillText(format(tick.value), tick.labelX, tick.labelY + canvas_dy);\n}\n\nexport default Axis;\n"]} \ No newline at end of file +{"version":3,"sources":["../../../../src/lib/axes/Axis.js"],"names":["React","Component","PropTypes","forceSimulation","forceX","forceCollide","range","d3Range","GenericChartComponent","getAxisCanvas","AxisZoomCapture","first","last","hexToRGBA","isNotDefined","isDefined","identity","zipper","strokeDashTypes","getStrokeDasharray","Axis","props","renderSVG","bind","drawOnCanvas","saveNode","getMoreProps","node","ctx","moreProps","showDomain","showTicks","transform","getScale","save","translate","drawAxisLine","tickProps","tickHelper","drawTicks","restore","className","ticks","axisTicksSVG","domain","axisLineSVG","bg","axisZoomCallback","zoomCursorClassName","zoomEnabled","inverted","getMouseDelta","edgeClip","onContextMenu","onDoubleClick","zoomCapture","propTypes","innerTickSize","number","outerTickSize","tickFormat","func","tickPadding","tickSize","tickLabelFill","string","tickStroke","tickStrokeOpacity","tickStrokeWidth","tickStrokeDasharray","oneOf","tickValues","oneOfType","array","tickInterval","tickIntervalFunction","bool","arrayOf","isRequired","object","defaultProps","scale","orient","fontSize","fontFamily","fontWeight","flexTicks","showTickLabel","tickArguments","tickValuesProp","min","max","baseTickValues","baseFormat","format","d","sign","tickSpacing","Math","dy","canvas_dy","textAnchor","map","x","round","value","x1","y1","x2","y2","labelX","labelY","nodes","id","fy","origX","simulation","force","strength","stop","i","tick","zip","combine","a","b","abs","y","domainClassName","fill","stroke","strokeWidth","opacity","xAxis","lineWidth","strokeStyle","beginPath","moveTo","lineTo","Tick","children","result","idx","fillStyle","forEach","drawEachTick","font","textAlign","drawEachTickLabel","setLineDash","split","fillText"],"mappings":"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","file":"Axis.js","sourcesContent":["import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { forceSimulation, forceX, forceCollide } from \"d3-force\";\nimport { range as d3Range } from \"d3-array\";\n\nimport GenericChartComponent from \"../GenericChartComponent\";\nimport { getAxisCanvas } from \"../GenericComponent\";\nimport AxisZoomCapture from \"./AxisZoomCapture\";\n\nimport { first, last, hexToRGBA, isNotDefined, isDefined, identity, zipper, strokeDashTypes, getStrokeDasharray } from \"../utils\";\n\nclass Axis extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.renderSVG = this.renderSVG.bind(this);\n\t\tthis.drawOnCanvas = this.drawOnCanvas.bind(this);\n\t\tthis.saveNode = this.saveNode.bind(this);\n\t\tthis.getMoreProps = this.getMoreProps.bind(this);\n\t}\n\tsaveNode(node) {\n\t\tthis.node = node;\n\t}\n\tgetMoreProps() {\n\t\treturn this.node.getMoreProps();\n\t}\n\tdrawOnCanvas(ctx, moreProps) {\n\t\tconst { showDomain, showTicks, transform, range, getScale } = this.props;\n\n\t\tctx.save();\n\t\tctx.translate(transform[0], transform[1]);\n\n\t\tif (showDomain) drawAxisLine(ctx, this.props, range);\n\t\tif (showTicks) {\n\t\t\tconst tickProps = tickHelper(this.props, getScale(moreProps));\n\t\t\tdrawTicks(ctx, tickProps);\n\t\t}\n\n\t\tctx.restore();\n\t}\n\trenderSVG(moreProps) {\n\t\tconst { className } = this.props;\n\t\tconst { showDomain, showTicks, range, getScale } = this.props;\n\n\t\tconst ticks = showTicks ? axisTicksSVG(this.props, getScale(moreProps)) : null;\n\t\tconst domain = showDomain ? axisLineSVG(this.props, range) : null;\n\n\t\treturn \n\t\t\t{ticks}\n\t\t\t{domain}\n\t\t;\n\t}\n\trender() {\n\t\tconst { bg, axisZoomCallback, className, zoomCursorClassName, zoomEnabled, getScale, inverted } = this.props;\n\t\tconst { transform, getMouseDelta, edgeClip } = this.props;\n\t\tconst { onContextMenu, onDoubleClick } = this.props;\n\n\t\tconst zoomCapture = zoomEnabled\n\t\t\t? \n\t\t\t: null;\n\n\t\treturn \n\t\t\t{zoomCapture}\n\t\t\t\n\t\t;\n\t}\n}\n\nAxis.propTypes = {\n\tinnerTickSize: PropTypes.number,\n\touterTickSize: PropTypes.number,\n\ttickFormat: PropTypes.func,\n\ttickPadding: PropTypes.number,\n\ttickSize: PropTypes.number,\n\tticks: PropTypes.number,\n\ttickLabelFill: PropTypes.string,\n\ttickStroke: PropTypes.string,\n\ttickStrokeOpacity: PropTypes.number,\n\ttickStrokeWidth: PropTypes.number,\n\ttickStrokeDasharray: PropTypes.oneOf(strokeDashTypes),\n\ttickValues: PropTypes.oneOfType([PropTypes.array, PropTypes.func]),\n\ttickInterval: PropTypes.number,\n\ttickIntervalFunction: PropTypes.func,\n\tshowDomain: PropTypes.bool,\n\tshowTicks: PropTypes.bool,\n\tclassName: PropTypes.string,\n\taxisZoomCallback: PropTypes.func,\n\tzoomEnabled: PropTypes.bool,\n\tinverted: PropTypes.bool,\n\tzoomCursorClassName: PropTypes.string,\n\ttransform: PropTypes.arrayOf(PropTypes.number).isRequired,\n\trange: PropTypes.arrayOf(PropTypes.number).isRequired,\n\tgetMouseDelta: PropTypes.func.isRequired,\n\tgetScale: PropTypes.func.isRequired,\n\tbg: PropTypes.object.isRequired,\n\tedgeClip: PropTypes.bool.isRequired,\n\tonContextMenu: PropTypes.func,\n\tonDoubleClick: PropTypes.func,\n};\n\nAxis.defaultProps = {\n\tzoomEnabled: false,\n\tzoomCursorClassName: \"\",\n\tedgeClip: false,\n};\n\nfunction tickHelper(props, scale) {\n\tconst {\n\t\torient, innerTickSize, tickFormat, tickPadding,\n\t\ttickLabelFill, tickStrokeWidth, tickStrokeDasharray,\n\t\tfontSize, fontFamily, fontWeight, showTicks, flexTicks,\n\t\tshowTickLabel\n\t} = props;\n\tconst {\n\t\tticks: tickArguments, tickValues: tickValuesProp,\n\t\ttickStroke, tickStrokeOpacity, tickInterval, tickIntervalFunction\n\t} = props;\n\n\t// if (tickArguments) tickArguments = [tickArguments];\n\n\tlet tickValues;\n\tif (isDefined(tickValuesProp)) {\n\t\tif (typeof tickValuesProp === \"function\") {\n\t\t\ttickValues = tickValuesProp(scale.domain());\n\t\t} else {\n\t\t\ttickValues = tickValuesProp;\n\t\t}\n\t} else if (isDefined(tickInterval)) {\n\t\tconst [min, max] = scale.domain();\n\t\tconst baseTickValues = d3Range(min, max, (max - min) / tickInterval);\n\n\t\ttickValues = tickIntervalFunction\n\t\t\t? tickIntervalFunction(min, max, tickInterval)\n\t\t\t: baseTickValues;\n\t} else if (isDefined(scale.ticks)) {\n\t\ttickValues = scale.ticks(tickArguments, flexTicks);\n\t} else {\n\t\ttickValues = scale.domain();\n\t}\n\n\tconst baseFormat = scale.tickFormat\n\t\t? scale.tickFormat(tickArguments)\n\t\t: identity;\n\n\tconst format = isNotDefined(tickFormat)\n\t\t? baseFormat\n\t\t: d => tickFormat(d) || \"\";\n\n\tconst sign = orient === \"top\" || orient === \"left\" ? -1 : 1;\n\tconst tickSpacing = Math.max(innerTickSize, 0) + tickPadding;\n\n\tlet ticks, dy, canvas_dy, textAnchor;\n\n\tif (orient === \"bottom\" || orient === \"top\") {\n\t\tdy = sign < 0 ? \"0em\" : \".71em\";\n\t\tcanvas_dy = sign < 0 ? 0 : (fontSize * .71);\n\t\ttextAnchor = \"middle\";\n\n\t\tticks = tickValues.map(d => {\n\t\t\tconst x = Math.round(scale(d));\n\t\t\treturn {\n\t\t\t\tvalue: d,\n\t\t\t\tx1: x,\n\t\t\t\ty1: 0,\n\t\t\t\tx2: x,\n\t\t\t\ty2: sign * innerTickSize,\n\t\t\t\tlabelX: x,\n\t\t\t\tlabelY: sign * tickSpacing,\n\t\t\t};\n\t\t});\n\n\t\tif (showTicks && flexTicks) {\n\t\t\t// console.log(ticks, showTicks);\n\n\t\t\tconst nodes = ticks.map(d => ({ id: d.value, value: d.value, fy: d.y2, origX: d.x1 }));\n\n\t\t\tconst simulation = forceSimulation(nodes)\n\t\t\t\t.force(\"x\", forceX(d => d.origX).strength(1))\n\t\t\t\t.force(\"collide\", forceCollide(22))\n\t\t\t\t// .force(\"center\", forceCenter())\n\t\t\t\t.stop();\n\n\t\t\tfor (let i = 0; i < 100; ++i) simulation.tick();\n\t\t\t// console.log(nodes);\n\n\t\t\tconst zip = zipper()\n\t\t\t\t.combine((a, b) => {\n\t\t\t\t\tif (Math.abs(b.x - b.origX) > 0.01) {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t...a,\n\t\t\t\t\t\t\tx2: b.x,\n\t\t\t\t\t\t\tlabelX: b.x\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\treturn a;\n\t\t\t\t});\n\n\t\t\tticks = zip(ticks, nodes);\n\t\t}\n\n\n\t} else {\n\t\tticks = tickValues.map(d => {\n\t\t\tconst y = Math.round(scale(d));\n\t\t\treturn {\n\t\t\t\tvalue: d,\n\t\t\t\tx1: 0,\n\t\t\t\ty1: y,\n\t\t\t\tx2: sign * innerTickSize,\n\t\t\t\ty2: y,\n\t\t\t\tlabelX: sign * tickSpacing,\n\t\t\t\tlabelY: y,\n\t\t\t};\n\t\t});\n\n\t\tdy = \".32em\";\n\t\tcanvas_dy = (fontSize * .32);\n\t\ttextAnchor = sign < 0 ? \"end\" : \"start\";\n\t}\n\n\treturn {\n\t\tticks, scale, tickStroke,\n\t\ttickLabelFill: (tickLabelFill || tickStroke),\n\t\ttickStrokeOpacity,\n\t\ttickStrokeWidth,\n\t\ttickStrokeDasharray,\n\t\tdy,\n\t\tcanvas_dy,\n\t\ttextAnchor,\n\t\tfontSize,\n\t\tfontFamily,\n\t\tfontWeight,\n\t\tformat,\n\t\tshowTickLabel,\n\t};\n}\n\n/* eslint-disable react/prop-types */\nfunction axisLineSVG(props, range) {\n\tconst { orient, outerTickSize } = props;\n\tconst { domainClassName, fill, stroke, strokeWidth, opacity } = props;\n\n\tconst sign = orient === \"top\" || orient === \"left\" ? -1 : 1;\n\n\tlet d;\n\n\tif (orient === \"bottom\" || orient === \"top\") {\n\t\td = \"M\" + range[0] + \",\" + sign * outerTickSize + \"V0H\" + range[1] + \"V\" + sign * outerTickSize;\n\t} else {\n\t\td = \"M\" + sign * outerTickSize + \",\" + range[0] + \"H0V\" + range[1] + \"H\" + sign * outerTickSize;\n\t}\n\n\treturn (\n\t\t\n\t\t\n\t);\n}\n/* eslint-enable react/prop-types */\n\n\nfunction drawAxisLine(ctx, props, range) {\n\t// props = { ...AxisLine.defaultProps, ...props };\n\n\tconst { orient, outerTickSize, stroke, strokeWidth, opacity } = props;\n\n\tconst sign = orient === \"top\" || orient === \"left\" ? -1 : 1;\n\tconst xAxis = (orient === \"bottom\" || orient === \"top\");\n\n\t// var range = d3_scaleRange(xAxis ? xScale : yScale);\n\n\tctx.lineWidth = strokeWidth;\n\tctx.strokeStyle = hexToRGBA(stroke, opacity);\n\n\tctx.beginPath();\n\n\tif (xAxis) {\n\t\tctx.moveTo(first(range), sign * outerTickSize);\n\t\tctx.lineTo(first(range), 0);\n\t\tctx.lineTo(last(range), 0);\n\t\tctx.lineTo(last(range), sign * outerTickSize);\n\t} else {\n\t\tctx.moveTo(sign * outerTickSize, first(range));\n\t\tctx.lineTo(0, first(range));\n\t\tctx.lineTo(0, last(range));\n\t\tctx.lineTo(sign * outerTickSize, last(range));\n\t}\n\tctx.stroke();\n}\n\nfunction Tick(props) {\n\tconst { tickLabelFill, tickStroke, tickStrokeOpacity, tickStrokeDasharray, tickStrokeWidth, textAnchor, fontSize, fontFamily, fontWeight } = props;\n\tconst { x1, y1, x2, y2, labelX, labelY, dy } = props;\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t{props.children}\n\t\t\t\n\t\t\n\t);\n}\n\nTick.propTypes = {\n\tchildren: PropTypes.string.isRequired,\n\tx1: PropTypes.number.isRequired,\n\ty1: PropTypes.number.isRequired,\n\tx2: PropTypes.number.isRequired,\n\ty2: PropTypes.number.isRequired,\n\tlabelX: PropTypes.number.isRequired,\n\tlabelY: PropTypes.number.isRequired,\n\tdy: PropTypes.string.isRequired,\n\ttickStroke: PropTypes.string,\n\ttickLabelFill: PropTypes.string,\n\ttickStrokeWidth: PropTypes.number,\n\ttickStrokeOpacity: PropTypes.number,\n\ttickStrokeDasharray: PropTypes.oneOf(strokeDashTypes),\n\ttextAnchor: PropTypes.string,\n\tfontSize: PropTypes.number,\n\tfontFamily: PropTypes.string,\n\tfontWeight: PropTypes.oneOfType([\n\t PropTypes.string,\n\t PropTypes.number\n\t]),\n};\n\nfunction axisTicksSVG(props, scale) {\n\tconst result = tickHelper(props, scale);\n\n\tconst { tickLabelFill, tickStroke, tickStrokeOpacity, tickStrokeWidth, tickStrokeDasharray, textAnchor } = result;\n\tconst { fontSize, fontFamily, fontWeight, ticks, format } = result;\n\n\tconst { dy } = result;\n\n\treturn (\n\t\t\n\t\t\t{ticks.map((tick, idx) => {\n\t\t\t\treturn (\n\t\t\t\t\t{format(tick.value)}\n\t\t\t\t);\n\t\t\t})}\n\t\t\n\t);\n}\n\nfunction drawTicks(ctx, result) {\n\n\tconst { tickStroke, tickStrokeOpacity, tickLabelFill } = result;\n\tconst { textAnchor, fontSize, fontFamily, fontWeight, ticks, showTickLabel } = result;\n\n\tctx.strokeStyle = hexToRGBA(tickStroke, tickStrokeOpacity);\n\n\tctx.fillStyle = tickStroke;\n\t// ctx.textBaseline = 'middle';\n\n\tticks.forEach((tick) => {\n\t\tdrawEachTick(ctx, tick, result);\n\t});\n\n\tctx.font = `${fontWeight} ${fontSize}px ${fontFamily}`;\n\tctx.fillStyle = tickLabelFill;\n\tctx.textAlign = textAnchor === \"middle\" ? \"center\" : textAnchor;\n\n\tif (showTickLabel) {\n\t\tticks.forEach((tick) => {\n\t\t\tdrawEachTickLabel(ctx, tick, result);\n\t\t});\n\t}\n}\n\nfunction drawEachTick(ctx, tick, result) {\n\tconst { tickStrokeWidth, tickStrokeDasharray } = result;\n\n\tctx.beginPath();\n\n\tctx.moveTo(tick.x1, tick.y1);\n\tctx.lineTo(tick.x2, tick.y2);\n\tctx.lineWidth = tickStrokeWidth;\n\tctx.setLineDash(getStrokeDasharray(tickStrokeDasharray).split(\",\"));\n\tctx.stroke();\n}\n\nfunction drawEachTickLabel(ctx, tick, result) {\n\tconst { canvas_dy, format } = result;\n\n\tctx.beginPath();\n\tctx.fillText(format(tick.value), tick.labelX, tick.labelY + canvas_dy);\n}\n\nexport default Axis;\n"]} \ No newline at end of file diff --git a/es/lib/axes/AxisZoomCapture.js b/es/lib/axes/AxisZoomCapture.js index e946eae..2abb5fc 100644 --- a/es/lib/axes/AxisZoomCapture.js +++ b/es/lib/axes/AxisZoomCapture.js @@ -176,13 +176,14 @@ var AxisZoomCapture = function (_Component) { value: function render() { var _props4 = this.props, bg = _props4.bg, + className = _props4.className, zoomCursorClassName = _props4.zoomCursorClassName; var cursor = isDefined(this.state.startPosition) ? zoomCursorClassName : "react-stockcharts-default-cursor"; return React.createElement("rect", { - className: "react-stockcharts-enable-interaction " + cursor, + className: "react-stockcharts-enable-interaction " + cursor + " " + className, ref: this.saveNode, x: bg.x, y: bg.y, opacity: 0, height: bg.h, width: bg.w, onContextMenu: this.handleRightClick, diff --git a/es/lib/axes/AxisZoomCapture.js.map b/es/lib/axes/AxisZoomCapture.js.map index 74a6d0a..e4b6955 100644 --- a/es/lib/axes/AxisZoomCapture.js.map +++ b/es/lib/axes/AxisZoomCapture.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../../../src/lib/axes/AxisZoomCapture.js"],"names":["React","Component","PropTypes","select","event","d3Event","mouse","touches","mean","first","last","isDefined","noop","mousePosition","d3Window","MOUSEMOVE","MOUSEUP","TOUCHMOVE","TOUCHEND","touchPosition","getTouchProps","sign","AxisZoomCapture","props","handleDragStartMouse","bind","handleDragStartTouch","handleDrag","handleDragEnd","handleRightClick","saveNode","state","startPosition","node","e","stopPropagation","preventDefault","onContextMenu","mouseXY","getBoundingClientRect","on","setState","contextMenuClicked","mouseInteraction","getScale","getMoreProps","startScale","dragHappened","invert","startXY","length","getMouseDelta","inverted","diff","center","range","tempRange","map","d","newDomain","axisZoomCallback","clicked","onDoubleClick","setTimeout","bg","zoomCursorClassName","cursor","x","y","h","w","propTypes","innerTickSize","number","outerTickSize","tickFormat","func","tickPadding","tickSize","ticks","tickValues","array","showDomain","bool","showTicks","className","string","object","isRequired","defaultProps"],"mappings":"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","file":"AxisZoomCapture.js","sourcesContent":["\n\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { select, event as d3Event, mouse, touches } from \"d3-selection\";\nimport { mean } from \"d3-array\";\n\nimport {\n\tfirst,\n\tlast,\n\tisDefined,\n\tnoop,\n\tmousePosition,\n\td3Window,\n\tMOUSEMOVE,\n\tMOUSEUP,\n\tTOUCHMOVE,\n\tTOUCHEND,\n\ttouchPosition,\n\tgetTouchProps,\n\tsign,\n} from \"../utils\";\n\nclass AxisZoomCapture extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.handleDragStartMouse = this.handleDragStartMouse.bind(this);\n\t\tthis.handleDragStartTouch = this.handleDragStartTouch.bind(this);\n\t\tthis.handleDrag = this.handleDrag.bind(this);\n\t\tthis.handleDragEnd = this.handleDragEnd.bind(this);\n\t\tthis.handleRightClick = this.handleRightClick.bind(this);\n\t\tthis.saveNode = this.saveNode.bind(this);\n\t\tthis.state = {\n\t\t\tstartPosition: null\n\t\t};\n\t}\n\tsaveNode(node) {\n\t\tthis.node = node;\n\t}\n\thandleRightClick(e) {\n\t\te.stopPropagation();\n\t\te.preventDefault();\n\n\t\tconst { onContextMenu } = this.props;\n\n\t\tconst mouseXY = mousePosition(e, this.node.getBoundingClientRect());\n\n\t\tselect(d3Window(this.node))\n\t\t\t.on(MOUSEMOVE, null)\n\t\t\t.on(MOUSEUP, null);\n\t\tthis.setState({\n\t\t\tstartPosition: null,\n\t\t});\n\n\t\tonContextMenu(mouseXY, e);\n\n\t\tthis.contextMenuClicked = true;\n\t}\n\thandleDragStartMouse(e) {\n\t\tthis.mouseInteraction = true;\n\n\t\tconst { getScale, getMoreProps } = this.props;\n\t\tconst startScale = getScale(getMoreProps());\n\t\tthis.dragHappened = false;\n\n\t\tif (startScale.invert) {\n\t\t\tselect(d3Window(this.node))\n\t\t\t\t.on(MOUSEMOVE, this.handleDrag, false)\n\t\t\t\t.on(MOUSEUP, this.handleDragEnd, false);\n\n\t\t\tconst startXY = mousePosition(e);\n\n\t\t\tthis.setState({\n\t\t\t\tstartPosition: {\n\t\t\t\t\tstartXY,\n\t\t\t\t\tstartScale,\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\te.preventDefault();\n\t}\n\thandleDragStartTouch(e) {\n\t\tthis.mouseInteraction = false;\n\n\t\tconst { getScale, getMoreProps } = this.props;\n\t\tconst startScale = getScale(getMoreProps());\n\t\tthis.dragHappened = false;\n\n\t\tif (e.touches.length === 1 && startScale.invert) {\n\t\t\tselect(d3Window(this.node))\n\t\t\t\t.on(TOUCHMOVE, this.handleDrag)\n\t\t\t\t.on(TOUCHEND, this.handleDragEnd);\n\n\t\t\tconst startXY = touchPosition(getTouchProps(e.touches[0]), e);\n\n\t\t\tthis.setState({\n\t\t\t\tstartPosition: {\n\t\t\t\t\tstartXY,\n\t\t\t\t\tstartScale,\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\thandleDrag() {\n\t\tconst { startPosition } = this.state;\n\t\tconst { getMouseDelta, inverted } = this.props;\n\n\t\tthis.dragHappened = true;\n\t\tif (isDefined(startPosition)) {\n\t\t\tconst { startScale } = startPosition;\n\t\t\tconst { startXY } = startPosition;\n\n\t\t\tconst mouseXY = this.mouseInteraction\n\t\t\t\t? mouse(this.node)\n\t\t\t\t: touches(this.node)[0];\n\n\t\t\tconst diff = getMouseDelta(startXY, mouseXY);\n\n\t\t\tconst center = mean(startScale.range());\n\n\t\t\tconst tempRange = startScale.range()\n\t\t\t\t.map(d => inverted ? d - sign(d - center) * diff : d + sign(d - center) * diff);\n\n\t\t\tconst newDomain = tempRange.map(startScale.invert);\n\n\t\t\tif (sign(last(startScale.range()) - first(startScale.range())) === sign(last(tempRange) - first(tempRange))) {\n\n\t\t\t\tconst { axisZoomCallback } = this.props;\n\t\t\t\t// console.log(startXScale.domain(), newXDomain)\n\t\t\t\taxisZoomCallback(newDomain);\n\t\t\t}\n\t\t}\n\t}\n\thandleDragEnd() {\n\n\t\tif (!this.dragHappened) {\n\t\t\tif (this.clicked) {\n\t\t\t\tconst e = d3Event;\n\t\t\t\tconst mouseXY = this.mouseInteraction\n\t\t\t\t\t? mouse(this.node)\n\t\t\t\t\t: touches(this.node)[0];\n\t\t\t\tconst { onDoubleClick } = this.props;\n\n\t\t\t\tonDoubleClick(mouseXY, e);\n\t\t\t} else {\n\t\t\t\tthis.clicked = true;\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.clicked = false;\n\t\t\t\t}, 300);\n\t\t\t}\n\t\t}\n\n\t\tselect(d3Window(this.node))\n\t\t\t.on(MOUSEMOVE, null)\n\t\t\t.on(MOUSEUP, null)\n\t\t\t.on(TOUCHMOVE, null)\n\t\t\t.on(TOUCHEND, null);\n\n\t\tthis.setState({\n\t\t\tstartPosition: null,\n\t\t});\n\t}\n\trender() {\n\t\tconst { bg, zoomCursorClassName } = this.props;\n\n\t\tconst cursor = isDefined(this.state.startPosition)\n\t\t\t? zoomCursorClassName\n\t\t\t: \"react-stockcharts-default-cursor\";\n\n\t\treturn ;\n\t}\n}\n\nAxisZoomCapture.propTypes = {\n\tinnerTickSize: PropTypes.number,\n\touterTickSize: PropTypes.number,\n\ttickFormat: PropTypes.func,\n\ttickPadding: PropTypes.number,\n\ttickSize: PropTypes.number,\n\tticks: PropTypes.number,\n\ttickValues: PropTypes.array,\n\tshowDomain: PropTypes.bool,\n\tshowTicks: PropTypes.bool,\n\tclassName: PropTypes.string,\n\taxisZoomCallback: PropTypes.func,\n\tinverted: PropTypes.bool,\n\tbg: PropTypes.object.isRequired,\n\tzoomCursorClassName: PropTypes.string.isRequired,\n\tgetMoreProps: PropTypes.func.isRequired,\n\tgetScale: PropTypes.func.isRequired,\n\tgetMouseDelta: PropTypes.func.isRequired,\n\tonDoubleClick: PropTypes.func.isRequired,\n\tonContextMenu: PropTypes.func.isRequired,\n};\n\nAxisZoomCapture.defaultProps = {\n\tonDoubleClick: noop,\n\tonContextMenu: noop,\n\tinverted: true\n};\n\nexport default AxisZoomCapture;\n"]} \ No newline at end of file +{"version":3,"sources":["../../../../src/lib/axes/AxisZoomCapture.js"],"names":["React","Component","PropTypes","select","event","d3Event","mouse","touches","mean","first","last","isDefined","noop","mousePosition","d3Window","MOUSEMOVE","MOUSEUP","TOUCHMOVE","TOUCHEND","touchPosition","getTouchProps","sign","AxisZoomCapture","props","handleDragStartMouse","bind","handleDragStartTouch","handleDrag","handleDragEnd","handleRightClick","saveNode","state","startPosition","node","e","stopPropagation","preventDefault","onContextMenu","mouseXY","getBoundingClientRect","on","setState","contextMenuClicked","mouseInteraction","getScale","getMoreProps","startScale","dragHappened","invert","startXY","length","getMouseDelta","inverted","diff","center","range","tempRange","map","d","newDomain","axisZoomCallback","clicked","onDoubleClick","setTimeout","bg","className","zoomCursorClassName","cursor","x","y","h","w","propTypes","innerTickSize","number","outerTickSize","tickFormat","func","tickPadding","tickSize","ticks","tickValues","array","showDomain","bool","showTicks","string","object","isRequired","defaultProps"],"mappings":"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","file":"AxisZoomCapture.js","sourcesContent":["\n\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { select, event as d3Event, mouse, touches } from \"d3-selection\";\nimport { mean } from \"d3-array\";\n\nimport {\n\tfirst,\n\tlast,\n\tisDefined,\n\tnoop,\n\tmousePosition,\n\td3Window,\n\tMOUSEMOVE,\n\tMOUSEUP,\n\tTOUCHMOVE,\n\tTOUCHEND,\n\ttouchPosition,\n\tgetTouchProps,\n\tsign,\n} from \"../utils\";\n\nclass AxisZoomCapture extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.handleDragStartMouse = this.handleDragStartMouse.bind(this);\n\t\tthis.handleDragStartTouch = this.handleDragStartTouch.bind(this);\n\t\tthis.handleDrag = this.handleDrag.bind(this);\n\t\tthis.handleDragEnd = this.handleDragEnd.bind(this);\n\t\tthis.handleRightClick = this.handleRightClick.bind(this);\n\t\tthis.saveNode = this.saveNode.bind(this);\n\t\tthis.state = {\n\t\t\tstartPosition: null\n\t\t};\n\t}\n\tsaveNode(node) {\n\t\tthis.node = node;\n\t}\n\thandleRightClick(e) {\n\t\te.stopPropagation();\n\t\te.preventDefault();\n\n\t\tconst { onContextMenu } = this.props;\n\n\t\tconst mouseXY = mousePosition(e, this.node.getBoundingClientRect());\n\n\t\tselect(d3Window(this.node))\n\t\t\t.on(MOUSEMOVE, null)\n\t\t\t.on(MOUSEUP, null);\n\t\tthis.setState({\n\t\t\tstartPosition: null,\n\t\t});\n\n\t\tonContextMenu(mouseXY, e);\n\n\t\tthis.contextMenuClicked = true;\n\t}\n\thandleDragStartMouse(e) {\n\t\tthis.mouseInteraction = true;\n\n\t\tconst { getScale, getMoreProps } = this.props;\n\t\tconst startScale = getScale(getMoreProps());\n\t\tthis.dragHappened = false;\n\n\t\tif (startScale.invert) {\n\t\t\tselect(d3Window(this.node))\n\t\t\t\t.on(MOUSEMOVE, this.handleDrag, false)\n\t\t\t\t.on(MOUSEUP, this.handleDragEnd, false);\n\n\t\t\tconst startXY = mousePosition(e);\n\n\t\t\tthis.setState({\n\t\t\t\tstartPosition: {\n\t\t\t\t\tstartXY,\n\t\t\t\t\tstartScale,\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\te.preventDefault();\n\t}\n\thandleDragStartTouch(e) {\n\t\tthis.mouseInteraction = false;\n\n\t\tconst { getScale, getMoreProps } = this.props;\n\t\tconst startScale = getScale(getMoreProps());\n\t\tthis.dragHappened = false;\n\n\t\tif (e.touches.length === 1 && startScale.invert) {\n\t\t\tselect(d3Window(this.node))\n\t\t\t\t.on(TOUCHMOVE, this.handleDrag)\n\t\t\t\t.on(TOUCHEND, this.handleDragEnd);\n\n\t\t\tconst startXY = touchPosition(getTouchProps(e.touches[0]), e);\n\n\t\t\tthis.setState({\n\t\t\t\tstartPosition: {\n\t\t\t\t\tstartXY,\n\t\t\t\t\tstartScale,\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\thandleDrag() {\n\t\tconst { startPosition } = this.state;\n\t\tconst { getMouseDelta, inverted } = this.props;\n\n\t\tthis.dragHappened = true;\n\t\tif (isDefined(startPosition)) {\n\t\t\tconst { startScale } = startPosition;\n\t\t\tconst { startXY } = startPosition;\n\n\t\t\tconst mouseXY = this.mouseInteraction\n\t\t\t\t? mouse(this.node)\n\t\t\t\t: touches(this.node)[0];\n\n\t\t\tconst diff = getMouseDelta(startXY, mouseXY);\n\n\t\t\tconst center = mean(startScale.range());\n\n\t\t\tconst tempRange = startScale.range()\n\t\t\t\t.map(d => inverted ? d - sign(d - center) * diff : d + sign(d - center) * diff);\n\n\t\t\tconst newDomain = tempRange.map(startScale.invert);\n\n\t\t\tif (sign(last(startScale.range()) - first(startScale.range())) === sign(last(tempRange) - first(tempRange))) {\n\n\t\t\t\tconst { axisZoomCallback } = this.props;\n\t\t\t\t// console.log(startXScale.domain(), newXDomain)\n\t\t\t\taxisZoomCallback(newDomain);\n\t\t\t}\n\t\t}\n\t}\n\thandleDragEnd() {\n\n\t\tif (!this.dragHappened) {\n\t\t\tif (this.clicked) {\n\t\t\t\tconst e = d3Event;\n\t\t\t\tconst mouseXY = this.mouseInteraction\n\t\t\t\t\t? mouse(this.node)\n\t\t\t\t\t: touches(this.node)[0];\n\t\t\t\tconst { onDoubleClick } = this.props;\n\n\t\t\t\tonDoubleClick(mouseXY, e);\n\t\t\t} else {\n\t\t\t\tthis.clicked = true;\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.clicked = false;\n\t\t\t\t}, 300);\n\t\t\t}\n\t\t}\n\n\t\tselect(d3Window(this.node))\n\t\t\t.on(MOUSEMOVE, null)\n\t\t\t.on(MOUSEUP, null)\n\t\t\t.on(TOUCHMOVE, null)\n\t\t\t.on(TOUCHEND, null);\n\n\t\tthis.setState({\n\t\t\tstartPosition: null,\n\t\t});\n\t}\n\trender() {\n\t\tconst { bg, className, zoomCursorClassName } = this.props;\n\n\t\tconst cursor = isDefined(this.state.startPosition)\n\t\t\t? zoomCursorClassName\n\t\t\t: \"react-stockcharts-default-cursor\";\n\n\t\treturn ;\n\t}\n}\n\nAxisZoomCapture.propTypes = {\n\tinnerTickSize: PropTypes.number,\n\touterTickSize: PropTypes.number,\n\ttickFormat: PropTypes.func,\n\ttickPadding: PropTypes.number,\n\ttickSize: PropTypes.number,\n\tticks: PropTypes.number,\n\ttickValues: PropTypes.array,\n\tshowDomain: PropTypes.bool,\n\tshowTicks: PropTypes.bool,\n\tclassName: PropTypes.string,\n\taxisZoomCallback: PropTypes.func,\n\tinverted: PropTypes.bool,\n\tbg: PropTypes.object.isRequired,\n\tzoomCursorClassName: PropTypes.string.isRequired,\n\tgetMoreProps: PropTypes.func.isRequired,\n\tgetScale: PropTypes.func.isRequired,\n\tgetMouseDelta: PropTypes.func.isRequired,\n\tonDoubleClick: PropTypes.func.isRequired,\n\tonContextMenu: PropTypes.func.isRequired,\n};\n\nAxisZoomCapture.defaultProps = {\n\tonDoubleClick: noop,\n\tonContextMenu: noop,\n\tinverted: true\n};\n\nexport default AxisZoomCapture;\n"]} \ No newline at end of file diff --git a/es/lib/interactive/FibonacciRetracement.js b/es/lib/interactive/FibonacciRetracement.js index 8080f24..2f13953 100644 --- a/es/lib/interactive/FibonacciRetracement.js +++ b/es/lib/interactive/FibonacciRetracement.js @@ -202,12 +202,13 @@ var FibonacciRetracement = function (_Component) { hoverText = _props4.hoverText; var overrideIndex = isDefined(override) ? override.index : null; + var hoverTextWidthDefault = _extends({}, FibonacciRetracement.defaultProps.hoverText, hoverText); var currentRetracement = isDefined(current) && isDefined(current.x2) ? React.createElement(EachFibRetracement, _extends({ interactive: false, type: type, appearance: appearance, - hoverText: hoverText + hoverText: hoverTextWidthDefault }, current)) : null; return React.createElement( "g", @@ -215,14 +216,16 @@ var FibonacciRetracement = function (_Component) { retracements.map(function (each, idx) { var eachAppearance = isDefined(each.appearance) ? _extends({}, appearance, each.appearance) : appearance; + var eachHoverText = isDefined(each.hoverText) ? _extends({}, hoverTextWidthDefault, each.hoverText) : hoverTextWidthDefault; + return React.createElement(EachFibRetracement, _extends({ key: idx, ref: _this5.saveNodeType(idx), index: idx, type: each.type, - selected: each.selected, - hoverText: hoverText + selected: each.selected }, idx === overrideIndex ? override : each, { + hoverText: eachHoverText, appearance: eachAppearance, onDrag: _this5.handleDrag, onDragComplete: _this5.handleDragComplete @@ -296,9 +299,10 @@ FibonacciRetracement.defaultProps = { hoverText: _extends({}, HoverTextNearMouse.defaultProps, { enable: true, - bgHeight: 18, - bgWidth: 120, - text: "Click to select object" + bgHeight: "auto", + bgWidth: "auto", + text: "Click to select object", + selectedText: "" }), currentPositionStroke: "#000000", currentPositionOpacity: 1, diff --git a/es/lib/interactive/FibonacciRetracement.js.map b/es/lib/interactive/FibonacciRetracement.js.map index a556bcc..b742b9d 100644 --- a/es/lib/interactive/FibonacciRetracement.js.map +++ b/es/lib/interactive/FibonacciRetracement.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../../../src/lib/interactive/FibonacciRetracement.js"],"names":["React","Component","PropTypes","isDefined","isNotDefined","noop","terminate","saveNodeType","isHoverForInteractiveType","EachFibRetracement","MouseLocationIndicator","HoverTextNearMouse","FibonacciRetracement","props","handleStart","bind","handleEnd","handleDrawRetracement","handleEdge1Drag","handleEdge2Drag","handleDrag","handleDragComplete","getSelectionState","nodes","state","xyValue","current","x1","mouseMoved","setState","x2","y2","index","xy","override","echo","newXYValue","origXYValue","retracements","dx","x1Value","y1","x2Value","moreProps","rest","newRetracements","map","each","idx","selected","onComplete","onStart","e","appearance","type","concat","currentPositionStroke","currentPositionOpacity","currentPositionStrokeWidth","currentPositionRadius","enabled","hoverText","overrideIndex","currentRetracement","eachAppearance","propTypes","bool","isRequired","width","number","func","onSelect","oneOf","object","string","array","shape","stroke","strokeWidth","strokeOpacity","fontFamily","fontSize","fontFill","edgeStroke","edgeFill","nsEdgeFill","edgeStrokeWidth","r","defaultProps","enable","bgHeight","bgWidth","text"],"mappings":";;;;;;;;;;;;AAEA,OAAOA,KAAP,IAAgBC,SAAhB,QAAiC,OAAjC;AACA,OAAOC,SAAP,MAAsB,YAAtB;;AAEA,SAASC,SAAT,EAAoBC,YAApB,EAAkCC,IAAlC,QAA8C,UAA9C;AACA,SACCC,SADD,EAECC,YAFD,EAGCC,yBAHD,QAIO,SAJP;AAKA,OAAOC,kBAAP,MAA+B,8BAA/B;AACA,OAAOC,sBAAP,MAAmC,qCAAnC;AACA,OAAOC,kBAAP,MAA+B,iCAA/B;;IAEMC,oB;;;AACL,+BAAYC,KAAZ,EAAmB;AAAA;;AAAA,0IACZA,KADY;;AAGlB,QAAKC,WAAL,GAAmB,MAAKA,WAAL,CAAiBC,IAAjB,OAAnB;AACA,QAAKC,SAAL,GAAiB,MAAKA,SAAL,CAAeD,IAAf,OAAjB;AACA,QAAKE,qBAAL,GAA6B,MAAKA,qBAAL,CAA2BF,IAA3B,OAA7B;;AAEA,QAAKG,eAAL,GAAuB,MAAKA,eAAL,CAAqBH,IAArB,OAAvB;AACA,QAAKI,eAAL,GAAuB,MAAKA,eAAL,CAAqBJ,IAArB,OAAvB;;AAEA,QAAKK,UAAL,GAAkB,MAAKA,UAAL,CAAgBL,IAAhB,OAAlB;AACA,QAAKM,kBAAL,GAA0B,MAAKA,kBAAL,CAAwBN,IAAxB,OAA1B;;AAEA,QAAKT,SAAL,GAAiBA,UAAUS,IAAV,OAAjB;AACA,QAAKO,iBAAL,GAAyBd,0BAA0B,cAA1B,EACvBO,IADuB,OAAzB;;AAGA,QAAKR,YAAL,GAAoBA,aAAaQ,IAAb,OAApB;AACA,QAAKQ,KAAL,GAAa,EAAb;;AAEA,QAAKC,KAAL,GAAa,EAAb;AApBkB;AAsBlB;;;;wCACqBC,O,EAAS;AAAA,OACtBC,OADsB,GACV,KAAKF,KADK,CACtBE,OADsB;;AAE9B,OAAIvB,UAAUuB,OAAV,KAAsBvB,UAAUuB,QAAQC,EAAlB,CAA1B,EAAiD;AAChD,SAAKC,UAAL,GAAkB,IAAlB;AACA,SAAKC,QAAL,CAAc;AACbH,2BACIA,OADJ;AAECI,UAAIL,QAAQ,CAAR,CAFL;AAGCM,UAAIN,QAAQ,CAAR;AAHL;AADa,KAAd;AAOA;AACD;;;6BACUO,K,EAAOC,E,EAAI;AACrB,QAAKJ,QAAL,CAAc;AACbK;AACCF;AADD,OAEIC,EAFJ;AADa,IAAd;AAMA;;;kCACeE,I,EAAMC,U,EAAYC,W,EAAa;AAAA,OACtCC,YADsC,GACrB,KAAKzB,KADgB,CACtCyB,YADsC;AAAA,OAEtCN,KAFsC,GAE5BG,IAF4B,CAEtCH,KAFsC;;;AAI9C,OAAMO,KAAKF,YAAYG,OAAZ,GAAsBJ,WAAWI,OAA5C;;AAEA,QAAKX,QAAL,CAAc;AACbK,cAAU;AACTF,iBADS;AAETL,SAAIW,aAAaN,KAAb,EAAoBL,EAApB,GAAyBY,EAFpB;AAGTE,SAAIH,aAAaN,KAAb,EAAoBS,EAHf;AAITX,SAAIQ,aAAaN,KAAb,EAAoBF,EAJf;AAKTC,SAAIO,aAAaN,KAAb,EAAoBD;AALf;AADG,IAAd;AASA;;;kCACeI,I,EAAMC,U,EAAYC,W,EAAa;AAAA,OACtCC,YADsC,GACrB,KAAKzB,KADgB,CACtCyB,YADsC;AAAA,OAEtCN,KAFsC,GAE5BG,IAF4B,CAEtCH,KAFsC;;;AAI9C,OAAMO,KAAKF,YAAYK,OAAZ,GAAsBN,WAAWM,OAA5C;;AAEA,QAAKb,QAAL,CAAc;AACbK,cAAU;AACTF,iBADS;AAETL,SAAIW,aAAaN,KAAb,EAAoBL,EAFf;AAGTc,SAAIH,aAAaN,KAAb,EAAoBS,EAHf;AAITX,SAAIQ,aAAaN,KAAb,EAAoBF,EAApB,GAAyBS,EAJpB;AAKTR,SAAIO,aAAaN,KAAb,EAAoBD;AALf;AADG,IAAd;AASA;;;qCACkBY,S,EAAW;AAAA;;AAAA,OACrBL,YADqB,GACJ,KAAKzB,KADD,CACrByB,YADqB;AAAA,OAErBJ,QAFqB,GAER,KAAKV,KAFG,CAErBU,QAFqB;;AAG7B,OAAI/B,UAAU+B,QAAV,CAAJ,EAAyB;AAAA,QAChBF,KADgB,GACGE,QADH,CAChBF,KADgB;AAAA,QACNY,IADM,4BACGV,QADH;;AAGxB,QAAMW,kBAAkBP,aAAaQ,GAAb,CACvB,UAACC,IAAD,EAAOC,GAAP;AAAA,YACEA,QAAQhB,KAAR,gBACOe,IADP,EACgBH,IADhB,IACsBK,UAAU,IADhC,MAEEF,IAHJ;AAAA,KADuB,CAAxB;AAMA,SAAKlB,QAAL,CACC;AACCK,eAAU;AADX,KADD,EAIC,YAAM;AACL,YAAKrB,KAAL,CAAWqC,UAAX,CAAsBL,eAAtB,EAAuCF,SAAvC;AACA,KANF;AAQA;AACD;;;8BACWlB,O,EAASkB,S,EAAW;AAAA;;AAAA,OACvBjB,OADuB,GACX,KAAKF,KADM,CACvBE,OADuB;;AAE/B,OAAItB,aAAasB,OAAb,KAAyBtB,aAAasB,QAAQC,EAArB,CAA7B,EAAuD;AACtD,SAAKC,UAAL,GAAkB,KAAlB;AACA,SAAKC,QAAL,CACC;AACCH,cAAS;AACRC,UAAIF,QAAQ,CAAR,CADI;AAERgB,UAAIhB,QAAQ,CAAR,CAFI;AAGRK,UAAI,IAHI;AAIRC,UAAI;AAJI;AADV,KADD,EASC,YAAM;AACL,YAAKlB,KAAL,CAAWsC,OAAX,CAAmBR,SAAnB;AACA,KAXF;AAaA;AACD;;;4BACSlB,O,EAASkB,S,EAAWS,C,EAAG;AAAA;;AAAA,gBACW,KAAKvC,KADhB;AAAA,OACxByB,YADwB,UACxBA,YADwB;AAAA,OACVe,UADU,UACVA,UADU;AAAA,OACEC,IADF,UACEA,IADF;AAAA,OAExB5B,OAFwB,GAEZ,KAAKF,KAFO,CAExBE,OAFwB;;;AAIhC,OAAI,KAAKE,UAAL,IAAmBzB,UAAUuB,OAAV,CAAnB,IAAyCvB,UAAUuB,QAAQC,EAAlB,CAA7C,EAAoE;AACnE,QAAMkB,kBAAkBP,aAAaiB,MAAb,cACpB7B,OADoB;AAEvBI,SAAIL,QAAQ,CAAR,CAFmB;AAGvBM,SAAIN,QAAQ,CAAR,CAHmB;AAIvBwB,eAAU,IAJa;AAKvBI,2BALuB;AAMvBC;AANuB,OAAxB;;AASA,SAAKzB,QAAL,CACC;AACCH,cAAS;AADV,KADD,EAIC,YAAM;AACL,YAAKb,KAAL,CAAWqC,UAAX,CAAsBL,eAAtB,EAAuCF,SAAvC,EAAkDS,CAAlD;AACA,KANF;AAQA;AACD;;;2BACQ;AAAA;;AAAA,gBACsB,KAAK5B,KAD3B;AAAA,OACAE,OADA,UACAA,OADA;AAAA,OACSQ,QADT,UACSA,QADT;AAAA,OAEAI,YAFA,GAEiB,KAAKzB,KAFtB,CAEAyB,YAFA;AAAA,iBAOJ,KAAKzB,KAPD;AAAA,OAKPwC,UALO,WAKPA,UALO;AAAA,OAMPC,IANO,WAMPA,IANO;AAAA,iBAaJ,KAAKzC,KAbD;AAAA,OASP2C,qBATO,WASPA,qBATO;AAAA,OAUPC,sBAVO,WAUPA,sBAVO;AAAA,OAWPC,0BAXO,WAWPA,0BAXO;AAAA,OAYPC,qBAZO,WAYPA,qBAZO;AAAA,iBAeuB,KAAK9C,KAf5B;AAAA,OAeA+C,OAfA,WAeAA,OAfA;AAAA,OAeSC,SAfT,WAeSA,SAfT;;AAgBR,OAAMC,gBAAgB3D,UAAU+B,QAAV,IAAsBA,SAASF,KAA/B,GAAuC,IAA7D;;AAEA,OAAM+B,qBAAqB5D,UAAUuB,OAAV,KAAsBvB,UAAUuB,QAAQI,EAAlB,CAAtB,GACxB,oBAAC,kBAAD;AACD,iBAAa,KADZ;AAED,UAAMwB,IAFL;AAGD,gBAAYD,UAHX;AAID,eAAWQ;AAJV,MAKGnC,OALH,EADwB,GAQxB,IARH;AASA,UACC;AAAA;AAAA;AACEY,iBAAaQ,GAAb,CAAiB,UAACC,IAAD,EAAOC,GAAP,EAAe;AAChC,SAAMgB,iBAAiB7D,UAAU4C,KAAKM,UAAf,iBACfA,UADe,EACAN,KAAKM,UADL,IAEpBA,UAFH;;AAIA,YACC,oBAAC,kBAAD;AACC,WAAKL,GADN;AAEC,WAAK,OAAKzC,YAAL,CAAkByC,GAAlB,CAFN;AAGC,aAAOA,GAHR;AAIC,YAAMD,KAAKO,IAJZ;AAKC,gBAAUP,KAAKE,QALhB;AAMC,iBAAWY;AANZ,QAOMb,QAAQc,aAAR,GAAwB5B,QAAxB,GAAmCa,IAPzC;AAQC,kBAAYiB,cARb;AASC,cAAQ,OAAK5C,UATd;AAUC,sBAAgB,OAAKC;AAVtB,QADD;AAcA,KAnBA,CADF;AAqBE0C,sBArBF;AAsBC,wBAAC,sBAAD;AACC,cAASH,OADV;AAEC,WAAM,KAFP;AAGC,QAAGD,qBAHJ;AAIC,aAAQH,qBAJT;AAKC,cAASC,sBALV;AAMC,kBAAaC,0BANd;AAOC,kBAAa,KAAK5C,WAPnB;AAQC,cAAS,KAAKE,SARf;AASC,kBAAa,KAAKC;AATnB;AAtBD,IADD;AAoCA;;;;EA7MiChB,S;;AAgNnC;;AAEAW,qBAAqBqD,SAArB,GAAiC;AAChCL,UAAS1D,UAAUgE,IAAV,CAAeC,UADQ;AAEhCC,QAAOlE,UAAUmE,MAFe;;AAIhClB,UAASjD,UAAUoE,IAJa;AAKhCpB,aAAYhD,UAAUoE,IALU;AAMhCC,WAAUrE,UAAUoE,IANY;;AAQhChB,OAAMpD,UAAUsE,KAAV,CAAgB,CACrB,QADqB,EACX;AACV,MAFqB,EAEd;AACP,QAHqB,CAGb;AAHa,EAAhB,EAIHL,UAZ6B;AAahCN,YAAW3D,UAAUuE,MAAV,CAAiBN,UAbI;;AAehCX,wBAAuBtD,UAAUwE,MAfD;AAgBhChB,6BAA4BxD,UAAUmE,MAhBN;AAiBhCZ,yBAAwBvD,UAAUmE,MAjBF;AAkBhCV,wBAAuBzD,UAAUmE,MAlBD;;AAoBhC/B,eAAcpC,UAAUyE,KAAV,CAAgBR,UApBE;;AAsBhCd,aAAYnD,UAAU0E,KAAV,CAAgB;AAC3BC,UAAQ3E,UAAUwE,MAAV,CAAiBP,UADE;AAE3BW,eAAa5E,UAAUmE,MAAV,CAAiBF,UAFH;AAG3BY,iBAAe7E,UAAUmE,MAAV,CAAiBF,UAHL;AAI3Ba,cAAY9E,UAAUwE,MAAV,CAAiBP,UAJF;AAK3Bc,YAAU/E,UAAUmE,MAAV,CAAiBF,UALA;AAM3Be,YAAUhF,UAAUwE,MAAV,CAAiBP,UANA;AAO3BgB,cAAYjF,UAAUwE,MAAV,CAAiBP,UAPF;AAQ3BiB,YAAUlF,UAAUwE,MAAV,CAAiBP,UARA;AAS3BkB,cAAYnF,UAAUwE,MAAV,CAAiBP,UATF;AAU3BmB,mBAAiBpF,UAAUmE,MAAV,CAAiBF,UAVP;AAW3BoB,KAAGrF,UAAUmE,MAAV,CAAiBF;AAXO,EAAhB,EAYTA;AAlC6B,CAAjC;;AAqCAvD,qBAAqB4E,YAArB,GAAoC;AACnC5B,UAAS,IAD0B;AAEnCN,OAAM,KAF6B;AAGnChB,eAAc,EAHqB;;AAKnCa,UAAS9C,IAL0B;AAMnC6C,aAAY7C,IANuB;AAOnCkE,WAAUlE,IAPyB;;AASnCwD,yBACIlD,mBAAmB6E,YADvB;AAECC,UAAQ,IAFT;AAGCC,YAAU,EAHX;AAICC,WAAS,GAJV;AAKCC,QAAM;AALP,GATmC;AAgBnCpC,wBAAuB,SAhBY;AAiBnCC,yBAAwB,CAjBW;AAkBnCC,6BAA4B,CAlBO;AAmBnCC,wBAAuB,CAnBY;;AAqBnCN,aAAY;AACXwB,UAAQ,SADG;AAEXC,eAAa,CAFF;AAGXC,iBAAe,CAHJ;AAIXC,cAAY,8CAJD;AAKXC,YAAU,EALC;AAMXC,YAAU,SANC;AAOXC,cAAY,SAPD;AAQXC,YAAU,SARC;AASXC,cAAY,SATD;AAUXC,mBAAiB,CAVN;AAWXC,KAAG;AAXQ;AArBuB,CAApC;;AAoCA,eAAe3E,oBAAf","file":"FibonacciRetracement.js","sourcesContent":["\n\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport { isDefined, isNotDefined, noop } from \"../utils\";\nimport {\n\tterminate,\n\tsaveNodeType,\n\tisHoverForInteractiveType,\n} from \"./utils\";\nimport EachFibRetracement from \"./wrapper/EachFibRetracement\";\nimport MouseLocationIndicator from \"./components/MouseLocationIndicator\";\nimport HoverTextNearMouse from \"./components/HoverTextNearMouse\";\n\nclass FibonacciRetracement extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\n\t\tthis.handleStart = this.handleStart.bind(this);\n\t\tthis.handleEnd = this.handleEnd.bind(this);\n\t\tthis.handleDrawRetracement = this.handleDrawRetracement.bind(this);\n\n\t\tthis.handleEdge1Drag = this.handleEdge1Drag.bind(this);\n\t\tthis.handleEdge2Drag = this.handleEdge2Drag.bind(this);\n\n\t\tthis.handleDrag = this.handleDrag.bind(this);\n\t\tthis.handleDragComplete = this.handleDragComplete.bind(this);\n\n\t\tthis.terminate = terminate.bind(this);\n\t\tthis.getSelectionState = isHoverForInteractiveType(\"retracements\")\n\t\t\t.bind(this);\n\n\t\tthis.saveNodeType = saveNodeType.bind(this);\n\t\tthis.nodes = [];\n\n\t\tthis.state = {\n\t\t};\n\t}\n\thandleDrawRetracement(xyValue) {\n\t\tconst { current } = this.state;\n\t\tif (isDefined(current) && isDefined(current.x1)) {\n\t\t\tthis.mouseMoved = true;\n\t\t\tthis.setState({\n\t\t\t\tcurrent: {\n\t\t\t\t\t...current,\n\t\t\t\t\tx2: xyValue[0],\n\t\t\t\t\ty2: xyValue[1]\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\thandleDrag(index, xy) {\n\t\tthis.setState({\n\t\t\toverride: {\n\t\t\t\tindex,\n\t\t\t\t...xy\n\t\t\t}\n\t\t});\n\t}\n\thandleEdge1Drag(echo, newXYValue, origXYValue) {\n\t\tconst { retracements } = this.props;\n\t\tconst { index } = echo;\n\n\t\tconst dx = origXYValue.x1Value - newXYValue.x1Value;\n\n\t\tthis.setState({\n\t\t\toverride: {\n\t\t\t\tindex,\n\t\t\t\tx1: retracements[index].x1 - dx,\n\t\t\t\ty1: retracements[index].y1,\n\t\t\t\tx2: retracements[index].x2,\n\t\t\t\ty2: retracements[index].y2\n\t\t\t}\n\t\t});\n\t}\n\thandleEdge2Drag(echo, newXYValue, origXYValue) {\n\t\tconst { retracements } = this.props;\n\t\tconst { index } = echo;\n\n\t\tconst dx = origXYValue.x2Value - newXYValue.x2Value;\n\n\t\tthis.setState({\n\t\t\toverride: {\n\t\t\t\tindex,\n\t\t\t\tx1: retracements[index].x1,\n\t\t\t\ty1: retracements[index].y1,\n\t\t\t\tx2: retracements[index].x2 - dx,\n\t\t\t\ty2: retracements[index].y2\n\t\t\t}\n\t\t});\n\t}\n\thandleDragComplete(moreProps) {\n\t\tconst { retracements } = this.props;\n\t\tconst { override } = this.state;\n\t\tif (isDefined(override)) {\n\t\t\tconst { index, ...rest } = override;\n\n\t\t\tconst newRetracements = retracements.map(\n\t\t\t\t(each, idx) =>\n\t\t\t\t\t(idx === index\n\t\t\t\t\t\t? { ...each, ...rest, selected: true }\n\t\t\t\t\t\t: each)\n\t\t\t);\n\t\t\tthis.setState(\n\t\t\t\t{\n\t\t\t\t\toverride: null,\n\t\t\t\t},\n\t\t\t\t() => {\n\t\t\t\t\tthis.props.onComplete(newRetracements, moreProps);\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t}\n\thandleStart(xyValue, moreProps) {\n\t\tconst { current } = this.state;\n\t\tif (isNotDefined(current) || isNotDefined(current.x1)) {\n\t\t\tthis.mouseMoved = false;\n\t\t\tthis.setState(\n\t\t\t\t{\n\t\t\t\t\tcurrent: {\n\t\t\t\t\t\tx1: xyValue[0],\n\t\t\t\t\t\ty1: xyValue[1],\n\t\t\t\t\t\tx2: null,\n\t\t\t\t\t\ty2: null\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t() => {\n\t\t\t\t\tthis.props.onStart(moreProps);\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t}\n\thandleEnd(xyValue, moreProps, e) {\n\t\tconst { retracements, appearance, type } = this.props;\n\t\tconst { current } = this.state;\n\n\t\tif (this.mouseMoved && isDefined(current) && isDefined(current.x1)) {\n\t\t\tconst newRetracements = retracements.concat({\n\t\t\t\t...current,\n\t\t\t\tx2: xyValue[0],\n\t\t\t\ty2: xyValue[1],\n\t\t\t\tselected: true,\n\t\t\t\tappearance,\n\t\t\t\ttype,\n\t\t\t});\n\n\t\t\tthis.setState(\n\t\t\t\t{\n\t\t\t\t\tcurrent: null,\n\t\t\t\t},\n\t\t\t\t() => {\n\t\t\t\t\tthis.props.onComplete(newRetracements, moreProps, e);\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t}\n\trender() {\n\t\tconst { current, override } = this.state;\n\t\tconst { retracements } = this.props;\n\n\t\tconst {\n\t\t\tappearance,\n\t\t\ttype\n\t\t} = this.props;\n\t\tconst {\n\t\t\tcurrentPositionStroke,\n\t\t\tcurrentPositionOpacity,\n\t\t\tcurrentPositionStrokeWidth,\n\t\t\tcurrentPositionRadius\n\t\t} = this.props;\n\n\t\tconst { enabled, hoverText } = this.props;\n\t\tconst overrideIndex = isDefined(override) ? override.index : null;\n\n\t\tconst currentRetracement = isDefined(current) && isDefined(current.x2)\n\t\t\t? \n\t\t\t: null;\n\t\treturn (\n\t\t\t\n\t\t\t\t{retracements.map((each, idx) => {\n\t\t\t\t\tconst eachAppearance = isDefined(each.appearance)\n\t\t\t\t\t\t? { ...appearance, ...each.appearance }\n\t\t\t\t\t\t: appearance;\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t\t{currentRetracement}\n\t\t\t\t\n\t\t\t\n\t\t);\n\t}\n}\n\n// onClick={this.handleClick}\n\nFibonacciRetracement.propTypes = {\n\tenabled: PropTypes.bool.isRequired,\n\twidth: PropTypes.number,\n\n\tonStart: PropTypes.func,\n\tonComplete: PropTypes.func,\n\tonSelect: PropTypes.func,\n\n\ttype: PropTypes.oneOf([\n\t\t\"EXTEND\", // extends from -Infinity to +Infinity\n\t\t\"RAY\", // extends to +/-Infinity in one direction\n\t\t\"BOUND\" // extends between the set bounds\n\t]).isRequired,\n\thoverText: PropTypes.object.isRequired,\n\n\tcurrentPositionStroke: PropTypes.string,\n\tcurrentPositionStrokeWidth: PropTypes.number,\n\tcurrentPositionOpacity: PropTypes.number,\n\tcurrentPositionRadius: PropTypes.number,\n\n\tretracements: PropTypes.array.isRequired,\n\n\tappearance: PropTypes.shape({\n\t\tstroke: PropTypes.string.isRequired,\n\t\tstrokeWidth: PropTypes.number.isRequired,\n\t\tstrokeOpacity: PropTypes.number.isRequired,\n\t\tfontFamily: PropTypes.string.isRequired,\n\t\tfontSize: PropTypes.number.isRequired,\n\t\tfontFill: PropTypes.string.isRequired,\n\t\tedgeStroke: PropTypes.string.isRequired,\n\t\tedgeFill: PropTypes.string.isRequired,\n\t\tnsEdgeFill: PropTypes.string.isRequired,\n\t\tedgeStrokeWidth: PropTypes.number.isRequired,\n\t\tr: PropTypes.number.isRequired,\n\t}).isRequired\n};\n\nFibonacciRetracement.defaultProps = {\n\tenabled: true,\n\ttype: \"RAY\",\n\tretracements: [],\n\n\tonStart: noop,\n\tonComplete: noop,\n\tonSelect: noop,\n\n\thoverText: {\n\t\t...HoverTextNearMouse.defaultProps,\n\t\tenable: true,\n\t\tbgHeight: 18,\n\t\tbgWidth: 120,\n\t\ttext: \"Click to select object\"\n\t},\n\tcurrentPositionStroke: \"#000000\",\n\tcurrentPositionOpacity: 1,\n\tcurrentPositionStrokeWidth: 3,\n\tcurrentPositionRadius: 4,\n\n\tappearance: {\n\t\tstroke: \"#000000\",\n\t\tstrokeWidth: 1,\n\t\tstrokeOpacity: 1,\n\t\tfontFamily: \"Helvetica Neue, Helvetica, Arial, sans-serif\",\n\t\tfontSize: 11,\n\t\tfontFill: \"#000000\",\n\t\tedgeStroke: \"#000000\",\n\t\tedgeFill: \"#FFFFFF\",\n\t\tnsEdgeFill: \"#000000\",\n\t\tedgeStrokeWidth: 1,\n\t\tr: 5,\n\t}\n};\n\nexport default FibonacciRetracement;\n"]} \ No newline at end of file +{"version":3,"sources":["../../../../src/lib/interactive/FibonacciRetracement.js"],"names":["React","Component","PropTypes","isDefined","isNotDefined","noop","terminate","saveNodeType","isHoverForInteractiveType","EachFibRetracement","MouseLocationIndicator","HoverTextNearMouse","FibonacciRetracement","props","handleStart","bind","handleEnd","handleDrawRetracement","handleEdge1Drag","handleEdge2Drag","handleDrag","handleDragComplete","getSelectionState","nodes","state","xyValue","current","x1","mouseMoved","setState","x2","y2","index","xy","override","echo","newXYValue","origXYValue","retracements","dx","x1Value","y1","x2Value","moreProps","rest","newRetracements","map","each","idx","selected","onComplete","onStart","e","appearance","type","concat","currentPositionStroke","currentPositionOpacity","currentPositionStrokeWidth","currentPositionRadius","enabled","hoverText","overrideIndex","hoverTextWidthDefault","defaultProps","currentRetracement","eachAppearance","eachHoverText","propTypes","bool","isRequired","width","number","func","onSelect","oneOf","object","string","array","shape","stroke","strokeWidth","strokeOpacity","fontFamily","fontSize","fontFill","edgeStroke","edgeFill","nsEdgeFill","edgeStrokeWidth","r","enable","bgHeight","bgWidth","text","selectedText"],"mappings":"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","file":"FibonacciRetracement.js","sourcesContent":["\n\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport { isDefined, isNotDefined, noop } from \"../utils\";\nimport {\n\tterminate,\n\tsaveNodeType,\n\tisHoverForInteractiveType,\n} from \"./utils\";\nimport EachFibRetracement from \"./wrapper/EachFibRetracement\";\nimport MouseLocationIndicator from \"./components/MouseLocationIndicator\";\nimport HoverTextNearMouse from \"./components/HoverTextNearMouse\";\n\nclass FibonacciRetracement extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\n\t\tthis.handleStart = this.handleStart.bind(this);\n\t\tthis.handleEnd = this.handleEnd.bind(this);\n\t\tthis.handleDrawRetracement = this.handleDrawRetracement.bind(this);\n\n\t\tthis.handleEdge1Drag = this.handleEdge1Drag.bind(this);\n\t\tthis.handleEdge2Drag = this.handleEdge2Drag.bind(this);\n\n\t\tthis.handleDrag = this.handleDrag.bind(this);\n\t\tthis.handleDragComplete = this.handleDragComplete.bind(this);\n\n\t\tthis.terminate = terminate.bind(this);\n\t\tthis.getSelectionState = isHoverForInteractiveType(\"retracements\")\n\t\t\t.bind(this);\n\n\t\tthis.saveNodeType = saveNodeType.bind(this);\n\t\tthis.nodes = [];\n\n\t\tthis.state = {\n\t\t};\n\t}\n\thandleDrawRetracement(xyValue) {\n\t\tconst { current } = this.state;\n\t\tif (isDefined(current) && isDefined(current.x1)) {\n\t\t\tthis.mouseMoved = true;\n\t\t\tthis.setState({\n\t\t\t\tcurrent: {\n\t\t\t\t\t...current,\n\t\t\t\t\tx2: xyValue[0],\n\t\t\t\t\ty2: xyValue[1]\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\thandleDrag(index, xy) {\n\t\tthis.setState({\n\t\t\toverride: {\n\t\t\t\tindex,\n\t\t\t\t...xy\n\t\t\t}\n\t\t});\n\t}\n\thandleEdge1Drag(echo, newXYValue, origXYValue) {\n\t\tconst { retracements } = this.props;\n\t\tconst { index } = echo;\n\n\t\tconst dx = origXYValue.x1Value - newXYValue.x1Value;\n\n\t\tthis.setState({\n\t\t\toverride: {\n\t\t\t\tindex,\n\t\t\t\tx1: retracements[index].x1 - dx,\n\t\t\t\ty1: retracements[index].y1,\n\t\t\t\tx2: retracements[index].x2,\n\t\t\t\ty2: retracements[index].y2\n\t\t\t}\n\t\t});\n\t}\n\thandleEdge2Drag(echo, newXYValue, origXYValue) {\n\t\tconst { retracements } = this.props;\n\t\tconst { index } = echo;\n\n\t\tconst dx = origXYValue.x2Value - newXYValue.x2Value;\n\n\t\tthis.setState({\n\t\t\toverride: {\n\t\t\t\tindex,\n\t\t\t\tx1: retracements[index].x1,\n\t\t\t\ty1: retracements[index].y1,\n\t\t\t\tx2: retracements[index].x2 - dx,\n\t\t\t\ty2: retracements[index].y2\n\t\t\t}\n\t\t});\n\t}\n\thandleDragComplete(moreProps) {\n\t\tconst { retracements } = this.props;\n\t\tconst { override } = this.state;\n\t\tif (isDefined(override)) {\n\t\t\tconst { index, ...rest } = override;\n\n\t\t\tconst newRetracements = retracements.map(\n\t\t\t\t(each, idx) =>\n\t\t\t\t\t(idx === index\n\t\t\t\t\t\t? { ...each, ...rest, selected: true }\n\t\t\t\t\t\t: each)\n\t\t\t);\n\t\t\tthis.setState(\n\t\t\t\t{\n\t\t\t\t\toverride: null,\n\t\t\t\t},\n\t\t\t\t() => {\n\t\t\t\t\tthis.props.onComplete(newRetracements, moreProps);\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t}\n\thandleStart(xyValue, moreProps) {\n\t\tconst { current } = this.state;\n\t\tif (isNotDefined(current) || isNotDefined(current.x1)) {\n\t\t\tthis.mouseMoved = false;\n\t\t\tthis.setState(\n\t\t\t\t{\n\t\t\t\t\tcurrent: {\n\t\t\t\t\t\tx1: xyValue[0],\n\t\t\t\t\t\ty1: xyValue[1],\n\t\t\t\t\t\tx2: null,\n\t\t\t\t\t\ty2: null\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t() => {\n\t\t\t\t\tthis.props.onStart(moreProps);\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t}\n\thandleEnd(xyValue, moreProps, e) {\n\t\tconst { retracements, appearance, type } = this.props;\n\t\tconst { current } = this.state;\n\n\t\tif (this.mouseMoved && isDefined(current) && isDefined(current.x1)) {\n\t\t\tconst newRetracements = retracements.concat({\n\t\t\t\t...current,\n\t\t\t\tx2: xyValue[0],\n\t\t\t\ty2: xyValue[1],\n\t\t\t\tselected: true,\n\t\t\t\tappearance,\n\t\t\t\ttype,\n\t\t\t});\n\n\t\t\tthis.setState(\n\t\t\t\t{\n\t\t\t\t\tcurrent: null,\n\t\t\t\t},\n\t\t\t\t() => {\n\t\t\t\t\tthis.props.onComplete(newRetracements, moreProps, e);\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t}\n\trender() {\n\t\tconst { current, override } = this.state;\n\t\tconst { retracements } = this.props;\n\n\t\tconst {\n\t\t\tappearance,\n\t\t\ttype\n\t\t} = this.props;\n\t\tconst {\n\t\t\tcurrentPositionStroke,\n\t\t\tcurrentPositionOpacity,\n\t\t\tcurrentPositionStrokeWidth,\n\t\t\tcurrentPositionRadius\n\t\t} = this.props;\n\n\t\tconst { enabled, hoverText } = this.props;\n\t\tconst overrideIndex = isDefined(override) ? override.index : null;\n\t\tconst hoverTextWidthDefault = {\n\t\t\t...FibonacciRetracement.defaultProps.hoverText,\n\t\t\t...hoverText\n\t\t};\n\n\t\tconst currentRetracement = isDefined(current) && isDefined(current.x2)\n\t\t\t? \n\t\t\t: null;\n\t\treturn (\n\t\t\t\n\t\t\t\t{retracements.map((each, idx) => {\n\t\t\t\t\tconst eachAppearance = isDefined(each.appearance)\n\t\t\t\t\t\t? { ...appearance, ...each.appearance }\n\t\t\t\t\t\t: appearance;\n\n\t\t\t\t\tconst eachHoverText = isDefined(each.hoverText)\n\t\t\t\t\t\t? { ...hoverTextWidthDefault, ...each.hoverText }\n\t\t\t\t\t\t: hoverTextWidthDefault;\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t\t{currentRetracement}\n\t\t\t\t\n\t\t\t\n\t\t);\n\t}\n}\n\n// onClick={this.handleClick}\n\nFibonacciRetracement.propTypes = {\n\tenabled: PropTypes.bool.isRequired,\n\twidth: PropTypes.number,\n\n\tonStart: PropTypes.func,\n\tonComplete: PropTypes.func,\n\tonSelect: PropTypes.func,\n\n\ttype: PropTypes.oneOf([\n\t\t\"EXTEND\", // extends from -Infinity to +Infinity\n\t\t\"RAY\", // extends to +/-Infinity in one direction\n\t\t\"BOUND\" // extends between the set bounds\n\t]).isRequired,\n\thoverText: PropTypes.object.isRequired,\n\n\tcurrentPositionStroke: PropTypes.string,\n\tcurrentPositionStrokeWidth: PropTypes.number,\n\tcurrentPositionOpacity: PropTypes.number,\n\tcurrentPositionRadius: PropTypes.number,\n\n\tretracements: PropTypes.array.isRequired,\n\n\tappearance: PropTypes.shape({\n\t\tstroke: PropTypes.string.isRequired,\n\t\tstrokeWidth: PropTypes.number.isRequired,\n\t\tstrokeOpacity: PropTypes.number.isRequired,\n\t\tfontFamily: PropTypes.string.isRequired,\n\t\tfontSize: PropTypes.number.isRequired,\n\t\tfontFill: PropTypes.string.isRequired,\n\t\tedgeStroke: PropTypes.string.isRequired,\n\t\tedgeFill: PropTypes.string.isRequired,\n\t\tnsEdgeFill: PropTypes.string.isRequired,\n\t\tedgeStrokeWidth: PropTypes.number.isRequired,\n\t\tr: PropTypes.number.isRequired,\n\t}).isRequired\n};\n\nFibonacciRetracement.defaultProps = {\n\tenabled: true,\n\ttype: \"RAY\",\n\tretracements: [],\n\n\tonStart: noop,\n\tonComplete: noop,\n\tonSelect: noop,\n\n\thoverText: {\n\t\t...HoverTextNearMouse.defaultProps,\n\t\tenable: true,\n\t\tbgHeight: \"auto\",\n\t\tbgWidth: \"auto\",\n\t\ttext: \"Click to select object\",\n\t\tselectedText: \"\",\n\t},\n\tcurrentPositionStroke: \"#000000\",\n\tcurrentPositionOpacity: 1,\n\tcurrentPositionStrokeWidth: 3,\n\tcurrentPositionRadius: 4,\n\n\tappearance: {\n\t\tstroke: \"#000000\",\n\t\tstrokeWidth: 1,\n\t\tstrokeOpacity: 1,\n\t\tfontFamily: \"Helvetica Neue, Helvetica, Arial, sans-serif\",\n\t\tfontSize: 11,\n\t\tfontFill: \"#000000\",\n\t\tedgeStroke: \"#000000\",\n\t\tedgeFill: \"#FFFFFF\",\n\t\tnsEdgeFill: \"#000000\",\n\t\tedgeStrokeWidth: 1,\n\t\tr: 5,\n\t}\n};\n\nexport default FibonacciRetracement;\n"]} \ No newline at end of file diff --git a/es/lib/interactive/InteractiveText.js b/es/lib/interactive/InteractiveText.js index 5aaf64d..0fadc61 100644 --- a/es/lib/interactive/InteractiveText.js +++ b/es/lib/interactive/InteractiveText.js @@ -127,14 +127,18 @@ var InteractiveText = function (_Component) { var _props2 = this.props, textList = _props2.textList, - defaultText = _props2.defaultText; + defaultText = _props2.defaultText, + hoverText = _props2.hoverText; var override = this.state.override; return React.createElement( "g", null, textList.map(function (each, idx) { - var props = _extends({}, defaultText, each); + var defaultHoverText = InteractiveText.defaultProps.hoverText; + var props = _extends({}, defaultText, each, { + hoverText: _extends({}, defaultHoverText, hoverText, each.hoverText || {}) + }); return React.createElement(EachText, _extends({ key: idx, ref: _this3.saveNodeType(idx), index: idx @@ -173,6 +177,8 @@ InteractiveText.propTypes = { defaultText: PropTypes.shape({ bgFill: PropTypes.string.isRequired, bgOpacity: PropTypes.number.isRequired, + bgStrokeWidth: PropTypes.number, + bgStroke: PropTypes.string, textFill: PropTypes.string.isRequired, fontFamily: PropTypes.string.isRequired, fontWeight: PropTypes.string.isRequired, @@ -194,6 +200,7 @@ InteractiveText.defaultProps = { defaultText: { bgFill: "#D3D3D3", bgOpacity: 1, + bgStrokeWidth: 1, textFill: "#F10040", fontFamily: "Helvetica Neue, Helvetica, Arial, sans-serif", fontSize: 12, @@ -203,9 +210,10 @@ InteractiveText.defaultProps = { }, hoverText: _extends({}, HoverTextNearMouse.defaultProps, { enable: true, - bgHeight: 18, - bgWidth: 175, - text: "Click and drag the edge circles" + bgHeight: "auto", + bgWidth: "auto", + text: "Click to select object", + selectedText: "" }), textList: [] }; diff --git a/es/lib/interactive/InteractiveText.js.map b/es/lib/interactive/InteractiveText.js.map index 78e9686..e87c0af 100644 --- a/es/lib/interactive/InteractiveText.js.map +++ b/es/lib/interactive/InteractiveText.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../../../src/lib/interactive/InteractiveText.js"],"names":["React","Component","PropTypes","isDefined","noop","getValueFromOverride","terminate","saveNodeType","isHoverForInteractiveType","EachText","HoverTextNearMouse","GenericChartComponent","getMouseCanvas","InteractiveText","props","handleDraw","bind","handleDrag","handleDragComplete","getSelectionState","nodes","state","index","position","setState","override","moreProps","textList","newTextList","map","each","idx","selected","onDragComplete","xyValue","current","start","end","e","enabled","mouseXY","mouseY","yScale","chartConfig","xAccessor","currentItem","invert","defaultText","onChoosePosition","newText","propTypes","func","isRequired","onSelect","shape","bgFill","string","bgOpacity","number","textFill","fontFamily","fontWeight","fontStyle","fontSize","text","hoverText","object","array","bool","defaultProps","enable","bgHeight","bgWidth","contextTypes","subscribe","unsubscribe","generateSubscriptionId","chartId","oneOfType"],"mappings":"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","file":"InteractiveText.js","sourcesContent":["\n\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport { isDefined, noop } from \"../utils\";\n\nimport {\n\tgetValueFromOverride,\n\tterminate,\n\tsaveNodeType,\n\tisHoverForInteractiveType,\n} from \"./utils\";\nimport EachText from \"./wrapper/EachText\";\nimport HoverTextNearMouse from \"./components/HoverTextNearMouse\";\nimport GenericChartComponent from \"../GenericChartComponent\";\nimport { getMouseCanvas } from \"../GenericComponent\";\n\nclass InteractiveText extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\n\t\tthis.handleDraw = this.handleDraw.bind(this);\n\t\tthis.handleDrag = this.handleDrag.bind(this);\n\t\tthis.handleDragComplete = this.handleDragComplete.bind(this);\n\t\tthis.terminate = terminate.bind(this);\n\n\t\tthis.saveNodeType = saveNodeType.bind(this);\n\t\tthis.getSelectionState = isHoverForInteractiveType(\"textList\")\n\t\t\t.bind(this);\n\n\t\tthis.nodes = [];\n\t\tthis.state = {};\n\t}\n\thandleDrag(index, position) {\n\t\tthis.setState({\n\t\t\toverride: {\n\t\t\t\tindex,\n\t\t\t\tposition,\n\t\t\t}\n\t\t});\n\t}\n\thandleDragComplete(moreProps) {\n\t\tconst { override } = this.state;\n\t\tif (isDefined(override)) {\n\t\t\tconst { textList } = this.props;\n\t\t\tconst newTextList = textList\n\t\t\t\t.map((each, idx) => {\n\t\t\t\t\tconst selected = (idx === override.index);\n\t\t\t\t\treturn selected\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t...each,\n\t\t\t\t\t\t\tposition: override.position,\n\t\t\t\t\t\t\tselected,\n\t\t\t\t\t\t}\n\t\t\t\t\t\t: {\n\t\t\t\t\t\t\t...each,\n\t\t\t\t\t\t\tselected\n\t\t\t\t\t\t};\n\t\t\t\t});\n\t\t\tthis.setState({\n\t\t\t\toverride: null,\n\t\t\t}, () => {\n\t\t\t\tthis.props.onDragComplete(newTextList, moreProps);\n\t\t\t});\n\t\t}\n\t}\n\thandleDrawLine(xyValue) {\n\t\tconst { current } = this.state;\n\n\t\tif (isDefined(current) && isDefined(current.start)) {\n\t\t\tthis.setState({\n\t\t\t\tcurrent: {\n\t\t\t\t\tstart: current.start,\n\t\t\t\t\tend: xyValue,\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\thandleDraw(moreProps, e) {\n\t\tconst { enabled } = this.props;\n\t\tif (enabled) {\n\t\t\tconst {\n\t\t\t\tmouseXY: [, mouseY],\n\t\t\t\tchartConfig: { yScale },\n\t\t\t\txAccessor,\n\t\t\t\tcurrentItem,\n\t\t\t} = moreProps;\n\n\t\t\tconst xyValue = [xAccessor(currentItem), yScale.invert(mouseY)];\n\n\t\t\tconst { defaultText, onChoosePosition } = this.props;\n\n\t\t\tconst newText = {\n\t\t\t\t...defaultText,\n\t\t\t\tposition: xyValue,\n\t\t\t};\n\t\t\tonChoosePosition(newText, moreProps, e);\n\t\t}/* else {\n\t\t\tthis.handleClick(moreProps, e);\n\t\t} */\n\t}\n\trender() {\n\t\tconst { textList, defaultText } = this.props;\n\t\tconst { override } = this.state;\n\t\treturn \n\t\t\t{textList.map((each, idx) => {\n\t\t\t\tconst props = {\n\t\t\t\t\t...defaultText,\n\t\t\t\t\t...each,\n\t\t\t\t};\n\t\t\t\treturn ;\n\t\t\t})}\n\t\t\t;\n\t\t;\n\t}\n}\n\nInteractiveText.propTypes = {\n\tonChoosePosition: PropTypes.func.isRequired,\n\tonDragComplete: PropTypes.func.isRequired,\n\tonSelect: PropTypes.func,\n\n\tdefaultText: PropTypes.shape({\n\t\tbgFill: PropTypes.string.isRequired,\n\t\tbgOpacity: PropTypes.number.isRequired,\n\t\ttextFill: PropTypes.string.isRequired,\n\t\tfontFamily: PropTypes.string.isRequired,\n\t\tfontWeight: PropTypes.string.isRequired,\n\t\tfontStyle: PropTypes.string.isRequired,\n\t\tfontSize: PropTypes.number.isRequired,\n\t\ttext: PropTypes.string.isRequired,\n\t}).isRequired,\n\n\thoverText: PropTypes.object.isRequired,\n\ttextList: PropTypes.array.isRequired,\n\tenabled: PropTypes.bool.isRequired,\n};\n\nInteractiveText.defaultProps = {\n\tonChoosePosition: noop,\n\tonDragComplete: noop,\n\tonSelect: noop,\n\n\tdefaultText: {\n\t\tbgFill: \"#D3D3D3\",\n\t\tbgOpacity: 1,\n\t\ttextFill: \"#F10040\",\n\t\tfontFamily: \"Helvetica Neue, Helvetica, Arial, sans-serif\",\n\t\tfontSize: 12,\n\t\tfontStyle: \"normal\",\n\t\tfontWeight: \"normal\",\n\t\ttext: \"Lorem ipsum...\"\n\t},\n\thoverText: {\n\t\t...HoverTextNearMouse.defaultProps,\n\t\tenable: true,\n\t\tbgHeight: 18,\n\t\tbgWidth: 175,\n\t\ttext: \"Click and drag the edge circles\",\n\t},\n\ttextList: [],\n};\n\nInteractiveText.contextTypes = {\n\tsubscribe: PropTypes.func.isRequired,\n\tunsubscribe: PropTypes.func.isRequired,\n\tgenerateSubscriptionId: PropTypes.func.isRequired,\n\tchartId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,\n};\n\nexport default InteractiveText;\n"]} \ No newline at end of file +{"version":3,"sources":["../../../../src/lib/interactive/InteractiveText.js"],"names":["React","Component","PropTypes","isDefined","noop","getValueFromOverride","terminate","saveNodeType","isHoverForInteractiveType","EachText","HoverTextNearMouse","GenericChartComponent","getMouseCanvas","InteractiveText","props","handleDraw","bind","handleDrag","handleDragComplete","getSelectionState","nodes","state","index","position","setState","override","moreProps","textList","newTextList","map","each","idx","selected","onDragComplete","xyValue","current","start","end","e","enabled","mouseXY","mouseY","yScale","chartConfig","xAccessor","currentItem","invert","defaultText","onChoosePosition","newText","hoverText","defaultHoverText","defaultProps","propTypes","func","isRequired","onSelect","shape","bgFill","string","bgOpacity","number","bgStrokeWidth","bgStroke","textFill","fontFamily","fontWeight","fontStyle","fontSize","text","object","array","bool","enable","bgHeight","bgWidth","selectedText","contextTypes","subscribe","unsubscribe","generateSubscriptionId","chartId","oneOfType"],"mappings":";;;;;;;;;;;;AAEA,OAAOA,KAAP,IAAgBC,SAAhB,QAAiC,OAAjC;AACA,OAAOC,SAAP,MAAsB,YAAtB;;AAEA,SAASC,SAAT,EAAoBC,IAApB,QAAgC,UAAhC;;AAEA,SACCC,oBADD,EAECC,SAFD,EAGCC,YAHD,EAICC,yBAJD,QAKO,SALP;AAMA,OAAOC,QAAP,MAAqB,oBAArB;AACA,OAAOC,kBAAP,MAA+B,iCAA/B;AACA,OAAOC,qBAAP,MAAkC,0BAAlC;AACA,SAASC,cAAT,QAA+B,qBAA/B;;IAEMC,e;;;AACL,0BAAYC,KAAZ,EAAmB;AAAA;;AAAA,gIACZA,KADY;;AAGlB,QAAKC,UAAL,GAAkB,MAAKA,UAAL,CAAgBC,IAAhB,OAAlB;AACA,QAAKC,UAAL,GAAkB,MAAKA,UAAL,CAAgBD,IAAhB,OAAlB;AACA,QAAKE,kBAAL,GAA0B,MAAKA,kBAAL,CAAwBF,IAAxB,OAA1B;AACA,QAAKV,SAAL,GAAiBA,UAAUU,IAAV,OAAjB;;AAEA,QAAKT,YAAL,GAAoBA,aAAaS,IAAb,OAApB;AACA,QAAKG,iBAAL,GAAyBX,0BAA0B,UAA1B,EACvBQ,IADuB,OAAzB;;AAGA,QAAKI,KAAL,GAAa,EAAb;AACA,QAAKC,KAAL,GAAa,EAAb;AAbkB;AAclB;;;;6BACUC,K,EAAOC,Q,EAAU;AAC3B,QAAKC,QAAL,CAAc;AACbC,cAAU;AACTH,iBADS;AAETC;AAFS;AADG,IAAd;AAMA;;;qCACkBG,S,EAAW;AAAA;;AAAA,OACrBD,QADqB,GACR,KAAKJ,KADG,CACrBI,QADqB;;AAE7B,OAAItB,UAAUsB,QAAV,CAAJ,EAAyB;AAAA,QAChBE,QADgB,GACH,KAAKb,KADF,CAChBa,QADgB;;AAExB,QAAMC,cAAcD,SAClBE,GADkB,CACd,UAACC,IAAD,EAAOC,GAAP,EAAe;AACnB,SAAMC,WAAYD,QAAQN,SAASH,KAAnC;AACA,YAAOU,wBAEFF,IAFE;AAGLP,gBAAUE,SAASF,QAHd;AAILS;AAJK,uBAOFF,IAPE;AAQLE;AARK,OAAP;AAUA,KAbkB,CAApB;AAcA,SAAKR,QAAL,CAAc;AACbC,eAAU;AADG,KAAd,EAEG,YAAM;AACR,YAAKX,KAAL,CAAWmB,cAAX,CAA0BL,WAA1B,EAAuCF,SAAvC;AACA,KAJD;AAKA;AACD;;;iCACcQ,O,EAAS;AAAA,OACfC,OADe,GACH,KAAKd,KADF,CACfc,OADe;;;AAGvB,OAAIhC,UAAUgC,OAAV,KAAsBhC,UAAUgC,QAAQC,KAAlB,CAA1B,EAAoD;AACnD,SAAKZ,QAAL,CAAc;AACbW,cAAS;AACRC,aAAOD,QAAQC,KADP;AAERC,WAAKH;AAFG;AADI,KAAd;AAMA;AACD;;;6BACUR,S,EAAWY,C,EAAG;AAAA,OAChBC,OADgB,GACJ,KAAKzB,KADD,CAChByB,OADgB;;AAExB,OAAIA,OAAJ,EAAa;AAAA,4CAMRb,SANQ,CAEXc,OAFW;AAAA,QAECC,MAFD;AAAA,QAGIC,MAHJ,GAMRhB,SANQ,CAGXiB,WAHW,CAGID,MAHJ;AAAA,QAIXE,SAJW,GAMRlB,SANQ,CAIXkB,SAJW;AAAA,QAKXC,WALW,GAMRnB,SANQ,CAKXmB,WALW;;AAQZ,QAAMX,UAAU,CAACU,UAAUC,WAAV,CAAD,EAAyBH,OAAOI,MAAP,CAAcL,MAAd,CAAzB,CAAhB;;AARY,iBAU8B,KAAK3B,KAVnC;AAAA,QAUJiC,WAVI,UAUJA,WAVI;AAAA,QAUSC,gBAVT,UAUSA,gBAVT;;;AAYZ,QAAMC,uBACFF,WADE;AAELxB,eAAUW;AAFL,MAAN;AAIAc,qBAAiBC,OAAjB,EAA0BvB,SAA1B,EAAqCY,CAArC;AACA,IAnBuB,CAmBvB;;;AAGD;;;2BACQ;AAAA;;AAAA,iBACqC,KAAKxB,KAD1C;AAAA,OACAa,QADA,WACAA,QADA;AAAA,OACUoB,WADV,WACUA,WADV;AAAA,OACuBG,SADvB,WACuBA,SADvB;AAAA,OAEAzB,QAFA,GAEa,KAAKJ,KAFlB,CAEAI,QAFA;;AAGR,UAAO;AAAA;AAAA;AACLE,aAASE,GAAT,CAAa,UAACC,IAAD,EAAOC,GAAP,EAAe;AAC5B,SAAMoB,mBAAmBtC,gBAAgBuC,YAAhB,CAA6BF,SAAtD;AACA,SAAMpC,qBACFiC,WADE,EAEFjB,IAFE;AAGLoB,8BACIC,gBADJ,EAEID,SAFJ,EAGKpB,KAAKoB,SAAL,IAAkB,EAHvB;AAHK,OAAN;AASA,YAAO,oBAAC,QAAD,aAAU,KAAKnB,GAAf;AACN,WAAK,OAAKxB,YAAL,CAAkBwB,GAAlB,CADC;AAEN,aAAOA;AAFD,QAGFjB,KAHE;AAIN,gBAAUgB,KAAKE,QAJT;AAKN,gBAAU3B,qBAAqBoB,QAArB,EAA+BM,GAA/B,EAAoC,UAApC,EAAgDD,KAAKP,QAArD,CALJ;;AAON,cAAQ,OAAKN,UAPP;AAQN,sBAAgB,OAAKC,kBARf;AASN,6BAAsB;AAThB,QAAP;AAWA,KAtBA,CADK;AAwBN,wBAAC,qBAAD;;AAEC,cAAS,KAAKH,UAFf;;AAIC,cAASX,IAJV;AAKC,iBAAYA,IALb;AAMC,mBAAcQ,cANf;;AAQC,aAAQ,CAAC,WAAD,EAAc,KAAd;AART,MAxBM;AAAA;AAAA,IAAP;AAmCA;;;;EA1H4BX,S;;AA6H9BY,gBAAgBwC,SAAhB,GAA4B;AAC3BL,mBAAkB9C,UAAUoD,IAAV,CAAeC,UADN;AAE3BtB,iBAAgB/B,UAAUoD,IAAV,CAAeC,UAFJ;AAG3BC,WAAUtD,UAAUoD,IAHO;;AAK3BP,cAAa7C,UAAUuD,KAAV,CAAgB;AAC5BC,UAAQxD,UAAUyD,MAAV,CAAiBJ,UADG;AAE5BK,aAAW1D,UAAU2D,MAAV,CAAiBN,UAFA;AAG5BO,iBAAe5D,UAAU2D,MAHG;AAI5BE,YAAU7D,UAAUyD,MAJQ;AAK5BK,YAAU9D,UAAUyD,MAAV,CAAiBJ,UALC;AAM5BU,cAAY/D,UAAUyD,MAAV,CAAiBJ,UAND;AAO5BW,cAAYhE,UAAUyD,MAAV,CAAiBJ,UAPD;AAQ5BY,aAAWjE,UAAUyD,MAAV,CAAiBJ,UARA;AAS5Ba,YAAUlE,UAAU2D,MAAV,CAAiBN,UATC;AAU5Bc,QAAMnE,UAAUyD,MAAV,CAAiBJ;AAVK,EAAhB,EAWVA,UAhBwB;;AAkB3BL,YAAWhD,UAAUoE,MAAV,CAAiBf,UAlBD;AAmB3B5B,WAAUzB,UAAUqE,KAAV,CAAgBhB,UAnBC;AAoB3BhB,UAASrC,UAAUsE,IAAV,CAAejB;AApBG,CAA5B;;AAuBA1C,gBAAgBuC,YAAhB,GAA+B;AAC9BJ,mBAAkB5C,IADY;AAE9B6B,iBAAgB7B,IAFc;AAG9BoD,WAAUpD,IAHoB;;AAK9B2C,cAAa;AACZW,UAAQ,SADI;AAEZE,aAAW,CAFC;AAGZE,iBAAe,CAHH;AAIZE,YAAU,SAJE;AAKZC,cAAY,8CALA;AAMZG,YAAU,EANE;AAOZD,aAAW,QAPC;AAQZD,cAAY,QARA;AASZG,QAAM;AATM,EALiB;AAgB9BnB,yBACIxC,mBAAmB0C,YADvB;AAECqB,UAAQ,IAFT;AAGCC,YAAU,MAHX;AAICC,WAAS,MAJV;AAKCN,QAAM,wBALP;AAMCO,gBAAc;AANf,GAhB8B;AAwB9BjD,WAAU;AAxBoB,CAA/B;;AA2BAd,gBAAgBgE,YAAhB,GAA+B;AAC9BC,YAAW5E,UAAUoD,IAAV,CAAeC,UADI;AAE9BwB,cAAa7E,UAAUoD,IAAV,CAAeC,UAFE;AAG9ByB,yBAAwB9E,UAAUoD,IAAV,CAAeC,UAHT;AAI9B0B,UAAS/E,UAAUgF,SAAV,CAAoB,CAAChF,UAAU2D,MAAX,EAAmB3D,UAAUyD,MAA7B,CAApB,EAA0DJ;AAJrC,CAA/B;;AAOA,eAAe1C,eAAf","file":"InteractiveText.js","sourcesContent":["\n\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport { isDefined, noop } from \"../utils\";\n\nimport {\n\tgetValueFromOverride,\n\tterminate,\n\tsaveNodeType,\n\tisHoverForInteractiveType,\n} from \"./utils\";\nimport EachText from \"./wrapper/EachText\";\nimport HoverTextNearMouse from \"./components/HoverTextNearMouse\";\nimport GenericChartComponent from \"../GenericChartComponent\";\nimport { getMouseCanvas } from \"../GenericComponent\";\n\nclass InteractiveText extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\n\t\tthis.handleDraw = this.handleDraw.bind(this);\n\t\tthis.handleDrag = this.handleDrag.bind(this);\n\t\tthis.handleDragComplete = this.handleDragComplete.bind(this);\n\t\tthis.terminate = terminate.bind(this);\n\n\t\tthis.saveNodeType = saveNodeType.bind(this);\n\t\tthis.getSelectionState = isHoverForInteractiveType(\"textList\")\n\t\t\t.bind(this);\n\n\t\tthis.nodes = [];\n\t\tthis.state = {};\n\t}\n\thandleDrag(index, position) {\n\t\tthis.setState({\n\t\t\toverride: {\n\t\t\t\tindex,\n\t\t\t\tposition,\n\t\t\t}\n\t\t});\n\t}\n\thandleDragComplete(moreProps) {\n\t\tconst { override } = this.state;\n\t\tif (isDefined(override)) {\n\t\t\tconst { textList } = this.props;\n\t\t\tconst newTextList = textList\n\t\t\t\t.map((each, idx) => {\n\t\t\t\t\tconst selected = (idx === override.index);\n\t\t\t\t\treturn selected\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t...each,\n\t\t\t\t\t\t\tposition: override.position,\n\t\t\t\t\t\t\tselected,\n\t\t\t\t\t\t}\n\t\t\t\t\t\t: {\n\t\t\t\t\t\t\t...each,\n\t\t\t\t\t\t\tselected\n\t\t\t\t\t\t};\n\t\t\t\t});\n\t\t\tthis.setState({\n\t\t\t\toverride: null,\n\t\t\t}, () => {\n\t\t\t\tthis.props.onDragComplete(newTextList, moreProps);\n\t\t\t});\n\t\t}\n\t}\n\thandleDrawLine(xyValue) {\n\t\tconst { current } = this.state;\n\n\t\tif (isDefined(current) && isDefined(current.start)) {\n\t\t\tthis.setState({\n\t\t\t\tcurrent: {\n\t\t\t\t\tstart: current.start,\n\t\t\t\t\tend: xyValue,\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\thandleDraw(moreProps, e) {\n\t\tconst { enabled } = this.props;\n\t\tif (enabled) {\n\t\t\tconst {\n\t\t\t\tmouseXY: [, mouseY],\n\t\t\t\tchartConfig: { yScale },\n\t\t\t\txAccessor,\n\t\t\t\tcurrentItem,\n\t\t\t} = moreProps;\n\n\t\t\tconst xyValue = [xAccessor(currentItem), yScale.invert(mouseY)];\n\n\t\t\tconst { defaultText, onChoosePosition } = this.props;\n\n\t\t\tconst newText = {\n\t\t\t\t...defaultText,\n\t\t\t\tposition: xyValue,\n\t\t\t};\n\t\t\tonChoosePosition(newText, moreProps, e);\n\t\t}/* else {\n\t\t\tthis.handleClick(moreProps, e);\n\t\t} */\n\t}\n\trender() {\n\t\tconst { textList, defaultText, hoverText } = this.props;\n\t\tconst { override } = this.state;\n\t\treturn \n\t\t\t{textList.map((each, idx) => {\n\t\t\t\tconst defaultHoverText = InteractiveText.defaultProps.hoverText;\n\t\t\t\tconst props = {\n\t\t\t\t\t...defaultText,\n\t\t\t\t\t...each,\n\t\t\t\t\thoverText: {\n\t\t\t\t\t\t...defaultHoverText,\n\t\t\t\t\t\t...hoverText,\n\t\t\t\t\t\t...(each.hoverText || {})\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t\treturn ;\n\t\t\t})}\n\t\t\t;\n\t\t;\n\t}\n}\n\nInteractiveText.propTypes = {\n\tonChoosePosition: PropTypes.func.isRequired,\n\tonDragComplete: PropTypes.func.isRequired,\n\tonSelect: PropTypes.func,\n\n\tdefaultText: PropTypes.shape({\n\t\tbgFill: PropTypes.string.isRequired,\n\t\tbgOpacity: PropTypes.number.isRequired,\n\t\tbgStrokeWidth: PropTypes.number,\n\t\tbgStroke: PropTypes.string,\n\t\ttextFill: PropTypes.string.isRequired,\n\t\tfontFamily: PropTypes.string.isRequired,\n\t\tfontWeight: PropTypes.string.isRequired,\n\t\tfontStyle: PropTypes.string.isRequired,\n\t\tfontSize: PropTypes.number.isRequired,\n\t\ttext: PropTypes.string.isRequired,\n\t}).isRequired,\n\n\thoverText: PropTypes.object.isRequired,\n\ttextList: PropTypes.array.isRequired,\n\tenabled: PropTypes.bool.isRequired,\n};\n\nInteractiveText.defaultProps = {\n\tonChoosePosition: noop,\n\tonDragComplete: noop,\n\tonSelect: noop,\n\n\tdefaultText: {\n\t\tbgFill: \"#D3D3D3\",\n\t\tbgOpacity: 1,\n\t\tbgStrokeWidth: 1,\n\t\ttextFill: \"#F10040\",\n\t\tfontFamily: \"Helvetica Neue, Helvetica, Arial, sans-serif\",\n\t\tfontSize: 12,\n\t\tfontStyle: \"normal\",\n\t\tfontWeight: \"normal\",\n\t\ttext: \"Lorem ipsum...\"\n\t},\n\thoverText: {\n\t\t...HoverTextNearMouse.defaultProps,\n\t\tenable: true,\n\t\tbgHeight: \"auto\",\n\t\tbgWidth: \"auto\",\n\t\ttext: \"Click to select object\",\n\t\tselectedText: \"\",\n\t},\n\ttextList: [],\n};\n\nInteractiveText.contextTypes = {\n\tsubscribe: PropTypes.func.isRequired,\n\tunsubscribe: PropTypes.func.isRequired,\n\tgenerateSubscriptionId: PropTypes.func.isRequired,\n\tchartId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,\n};\n\nexport default InteractiveText;\n"]} \ No newline at end of file diff --git a/es/lib/interactive/StandardDeviationChannel.js b/es/lib/interactive/StandardDeviationChannel.js index ca7f79a..db12fd7 100644 --- a/es/lib/interactive/StandardDeviationChannel.js +++ b/es/lib/interactive/StandardDeviationChannel.js @@ -86,7 +86,6 @@ var StandardDeviationChannel = function (_Component) { if (isDefined(current) && isDefined(current.start)) { this.mouseMoved = true; - console.log(xyValue); this.setState({ current: { start: current.start, @@ -167,19 +166,25 @@ var StandardDeviationChannel = function (_Component) { override = _state.override; + var eachDefaultAppearance = _extends({}, StandardDeviationChannel.defaultProps.appearance, appearance); + + var hoverTextDefault = _extends({}, StandardDeviationChannel.defaultProps.hoverText, hoverText); + var tempLine = isDefined(current) && isDefined(current.end) ? React.createElement(EachLinearRegressionChannel, { interactive: false, x1Value: current.start[0], x2Value: current.end[0], - appearance: appearance, - hoverText: hoverText + appearance: eachDefaultAppearance, + hoverText: hoverTextDefault }) : null; return React.createElement( "g", null, channels.map(function (each, idx) { - var eachAppearance = isDefined(each.appearance) ? _extends({}, appearance, each.appearance) : appearance; + var eachAppearance = isDefined(each.appearance) ? _extends({}, eachDefaultAppearance, each.appearance) : eachDefaultAppearance; + + var eachHoverText = isDefined(each.hoverText) ? _extends({}, hoverTextDefault, each.hoverText) : hoverTextDefault; return React.createElement(EachLinearRegressionChannel, { key: idx, ref: _this5.saveNodeType(idx), @@ -191,7 +196,7 @@ var StandardDeviationChannel = function (_Component) { appearance: eachAppearance, snapTo: snapTo, - hoverText: hoverText, + hoverText: eachHoverText, onDrag: _this5.handleDragLine, onDragComplete: _this5.handleDragLineComplete, @@ -220,9 +225,9 @@ var StandardDeviationChannel = function (_Component) { StandardDeviationChannel.propTypes = { enabled: PropTypes.bool.isRequired, - snapTo: PropTypes.func.isRequired, + snapTo: PropTypes.func, - onStart: PropTypes.func.isRequired, + onStart: PropTypes.func, onComplete: PropTypes.func.isRequired, onSelect: PropTypes.func, @@ -232,18 +237,18 @@ StandardDeviationChannel.propTypes = { currentPositionRadius: PropTypes.number, appearance: PropTypes.shape({ - stroke: PropTypes.string.isRequired, - strokeOpacity: PropTypes.number.isRequired, - strokeWidth: PropTypes.number.isRequired, - fill: PropTypes.string.isRequired, - fillOpacity: PropTypes.number.isRequired, - edgeStrokeWidth: PropTypes.number.isRequired, - edgeStroke: PropTypes.string.isRequired, - edgeFill: PropTypes.string.isRequired, - r: PropTypes.number.isRequired + stroke: PropTypes.string, + strokeOpacity: PropTypes.number, + strokeWidth: PropTypes.number, + fill: PropTypes.string, + fillOpacity: PropTypes.number, + edgeStrokeWidth: PropTypes.number, + edgeStroke: PropTypes.string, + edgeFill: PropTypes.string, + r: PropTypes.number }).isRequired, - hoverText: PropTypes.object.isRequired, + hoverText: PropTypes.object, channels: PropTypes.array.isRequired }; @@ -274,9 +279,10 @@ StandardDeviationChannel.defaultProps = { hoverText: _extends({}, HoverTextNearMouse.defaultProps, { enable: true, - bgHeight: 18, - bgWidth: 175, - text: "Click and drag the edge circles" + bgHeight: "auto", + bgWidth: "auto", + text: "Click and drag the edge circles", + selectedText: "" }), channels: [] }; diff --git a/es/lib/interactive/StandardDeviationChannel.js.map b/es/lib/interactive/StandardDeviationChannel.js.map index e60b0ac..bb6216f 100644 --- a/es/lib/interactive/StandardDeviationChannel.js.map +++ b/es/lib/interactive/StandardDeviationChannel.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../../../src/lib/interactive/StandardDeviationChannel.js"],"names":["React","Component","PropTypes","isDefined","isNotDefined","noop","getValueFromOverride","terminate","saveNodeType","isHoverForInteractiveType","EachLinearRegressionChannel","MouseLocationIndicator","HoverTextNearMouse","StandardDeviationChannel","props","handleStart","bind","handleEnd","handleDrawLine","handleDragLine","handleDragLineComplete","getSelectionState","nodes","state","index","newXYValue","setState","override","moreProps","channels","newChannels","map","each","idx","start","x1Value","y1Value","end","x2Value","y2Value","selected","onComplete","xyValue","current","mouseMoved","console","log","onStart","e","appearance","d","enabled","snapTo","currentPositionRadius","currentPositionStroke","currentPositionOpacity","currentPositionStrokeWidth","hoverText","tempLine","eachAppearance","propTypes","bool","isRequired","func","onSelect","string","number","shape","stroke","strokeOpacity","strokeWidth","fill","fillOpacity","edgeStrokeWidth","edgeStroke","edgeFill","r","object","array","defaultProps","close","enable","bgHeight","bgWidth","text"],"mappings":"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","file":"StandardDeviationChannel.js","sourcesContent":["\n\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport { isDefined, isNotDefined, noop } from \"../utils\";\n\nimport {\n\tgetValueFromOverride,\n\tterminate,\n\tsaveNodeType,\n\tisHoverForInteractiveType,\n} from \"./utils\";\n\nimport EachLinearRegressionChannel from \"./wrapper/EachLinearRegressionChannel\";\nimport MouseLocationIndicator from \"./components/MouseLocationIndicator\";\nimport HoverTextNearMouse from \"./components/HoverTextNearMouse\";\n\nclass StandardDeviationChannel extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\n\t\tthis.handleStart = this.handleStart.bind(this);\n\t\tthis.handleEnd = this.handleEnd.bind(this);\n\t\tthis.handleDrawLine = this.handleDrawLine.bind(this);\n\t\tthis.handleDragLine = this.handleDragLine.bind(this);\n\t\tthis.handleDragLineComplete = this.handleDragLineComplete.bind(this);\n\n\t\tthis.terminate = terminate.bind(this);\n\t\tthis.saveNodeType = saveNodeType.bind(this);\n\n\t\tthis.getSelectionState = isHoverForInteractiveType(\"channels\")\n\t\t\t.bind(this);\n\n\t\tthis.nodes = [];\n\t\tthis.state = {};\n\t}\n\thandleDragLine(index, newXYValue) {\n\t\tthis.setState({\n\t\t\toverride: {\n\t\t\t\tindex,\n\t\t\t\t...newXYValue\n\t\t\t}\n\t\t});\n\t}\n\thandleDragLineComplete(moreProps) {\n\t\tconst { override } = this.state;\n\t\tconst { channels } = this.props;\n\t\tif (isDefined(override)) {\n\n\t\t\tconst newChannels = channels\n\t\t\t\t.map((each, idx) => idx === override.index\n\t\t\t\t\t? {\n\t\t\t\t\t\t...each,\n\t\t\t\t\t\tstart: [override.x1Value, override.y1Value],\n\t\t\t\t\t\tend: [override.x2Value, override.y2Value],\n\t\t\t\t\t\tselected: true,\n\t\t\t\t\t}\n\t\t\t\t\t: each);\n\t\t\tthis.setState({\n\t\t\t\toverride: null,\n\t\t\t}, () => {\n\t\t\t\tthis.props.onComplete(newChannels, moreProps);\n\t\t\t});\n\t\t}\n\t}\n\thandleDrawLine(xyValue) {\n\t\tconst { current } = this.state;\n\n\t\tif (isDefined(current) && isDefined(current.start)) {\n\t\t\tthis.mouseMoved = true;\n\t\t\tconsole.log(xyValue);\n\t\t\tthis.setState({\n\t\t\t\tcurrent: {\n\t\t\t\t\tstart: current.start,\n\t\t\t\t\tend: xyValue,\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\thandleStart(xyValue) {\n\t\tconst { current } = this.state;\n\n\t\tif (isNotDefined(current) || isNotDefined(current.start)) {\n\t\t\tthis.mouseMoved = false;\n\n\t\t\tthis.setState({\n\t\t\t\tcurrent: {\n\t\t\t\t\tstart: xyValue,\n\t\t\t\t\tend: null,\n\t\t\t\t}\n\t\t\t}, () => {\n\t\t\t\tthis.props.onStart();\n\t\t\t});\n\t\t}\n\t}\n\thandleEnd(xyValue, moreProps, e) {\n\t\tconst { current } = this.state;\n\t\tconst { appearance, channels } = this.props;\n\n\t\tif (this.mouseMoved\n\t\t\t&& isDefined(current)\n\t\t\t&& isDefined(current.start)\n\t\t) {\n\t\t\tconst newChannels = [\n\t\t\t\t...channels.map(d => ({ ...d, selected: false })),\n\t\t\t\t{\n\t\t\t\t\tstart: current.start,\n\t\t\t\t\tend: xyValue,\n\t\t\t\t\tselected: true,\n\t\t\t\t\tappearance,\n\t\t\t\t}\n\t\t\t];\n\n\t\t\tthis.setState({\n\t\t\t\tcurrent: null,\n\t\t\t}, () => {\n\t\t\t\tthis.props.onComplete(newChannels, moreProps, e);\n\t\t\t});\n\t\t}\n\t}\n\trender() {\n\t\tconst { appearance } = this.props;\n\t\tconst { enabled, snapTo } = this.props;\n\t\tconst { currentPositionRadius, currentPositionStroke } = this.props;\n\t\tconst { currentPositionOpacity, currentPositionStrokeWidth } = this.props;\n\t\tconst { hoverText, channels } = this.props;\n\t\tconst { current, override } = this.state;\n\n\t\tconst tempLine = isDefined(current) && isDefined(current.end)\n\t\t\t? \n\t\t\t: null;\n\n\t\treturn \n\t\t\t{channels.map((each, idx) => {\n\t\t\t\tconst eachAppearance = isDefined(each.appearance)\n\t\t\t\t\t? { ...appearance, ...each.appearance }\n\t\t\t\t\t: appearance;\n\n\t\t\t\treturn ;\n\t\t\t})}\n\t\t\t{tempLine}\n\t\t\t\n\t\t;\n\t}\n}\n\nStandardDeviationChannel.propTypes = {\n\tenabled: PropTypes.bool.isRequired,\n\tsnapTo: PropTypes.func.isRequired,\n\n\tonStart: PropTypes.func.isRequired,\n\tonComplete: PropTypes.func.isRequired,\n\tonSelect: PropTypes.func,\n\n\tcurrentPositionStroke: PropTypes.string,\n\tcurrentPositionStrokeWidth: PropTypes.number,\n\tcurrentPositionOpacity: PropTypes.number,\n\tcurrentPositionRadius: PropTypes.number,\n\n\tappearance: PropTypes.shape({\n\t\tstroke: PropTypes.string.isRequired,\n\t\tstrokeOpacity: PropTypes.number.isRequired,\n\t\tstrokeWidth: PropTypes.number.isRequired,\n\t\tfill: PropTypes.string.isRequired,\n\t\tfillOpacity: PropTypes.number.isRequired,\n\t\tedgeStrokeWidth: PropTypes.number.isRequired,\n\t\tedgeStroke: PropTypes.string.isRequired,\n\t\tedgeFill: PropTypes.string.isRequired,\n\t\tr: PropTypes.number.isRequired,\n\t}).isRequired,\n\n\thoverText: PropTypes.object.isRequired,\n\tchannels: PropTypes.array.isRequired,\n};\n\nStandardDeviationChannel.defaultProps = {\n\tsnapTo: d => d.close,\n\tappearance: {\n\t\tstroke: \"#000000\",\n\t\tfillOpacity: 0.2,\n\t\tstrokeOpacity: 1,\n\t\tstrokeWidth: 1,\n\t\tfill: \"#8AAFE2\",\n\t\tedgeStrokeWidth: 2,\n\t\tedgeStroke: \"#000000\",\n\t\tedgeFill: \"#FFFFFF\",\n\t\tr: 5,\n\t},\n\n\tonStart: noop,\n\tonComplete: noop,\n\tonSelect: noop,\n\n\tcurrentPositionStroke: \"#000000\",\n\tcurrentPositionOpacity: 1,\n\tcurrentPositionStrokeWidth: 3,\n\tcurrentPositionRadius: 4,\n\n\thoverText: {\n\t\t...HoverTextNearMouse.defaultProps,\n\t\tenable: true,\n\t\tbgHeight: 18,\n\t\tbgWidth: 175,\n\t\ttext: \"Click and drag the edge circles\",\n\t},\n\tchannels: [],\n};\n\nexport default StandardDeviationChannel;\n"]} \ No newline at end of file +{"version":3,"sources":["../../../../src/lib/interactive/StandardDeviationChannel.js"],"names":["React","Component","PropTypes","isDefined","isNotDefined","noop","getValueFromOverride","terminate","saveNodeType","isHoverForInteractiveType","EachLinearRegressionChannel","MouseLocationIndicator","HoverTextNearMouse","StandardDeviationChannel","props","handleStart","bind","handleEnd","handleDrawLine","handleDragLine","handleDragLineComplete","getSelectionState","nodes","state","index","newXYValue","setState","override","moreProps","channels","newChannels","map","each","idx","start","x1Value","y1Value","end","x2Value","y2Value","selected","onComplete","xyValue","current","mouseMoved","onStart","e","appearance","d","enabled","snapTo","currentPositionRadius","currentPositionStroke","currentPositionOpacity","currentPositionStrokeWidth","hoverText","eachDefaultAppearance","defaultProps","hoverTextDefault","tempLine","eachAppearance","eachHoverText","propTypes","bool","isRequired","func","onSelect","string","number","shape","stroke","strokeOpacity","strokeWidth","fill","fillOpacity","edgeStrokeWidth","edgeStroke","edgeFill","r","object","array","close","enable","bgHeight","bgWidth","text","selectedText"],"mappings":"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","file":"StandardDeviationChannel.js","sourcesContent":["\n\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport { isDefined, isNotDefined, noop } from \"../utils\";\n\nimport {\n\tgetValueFromOverride,\n\tterminate,\n\tsaveNodeType,\n\tisHoverForInteractiveType,\n} from \"./utils\";\n\nimport EachLinearRegressionChannel from \"./wrapper/EachLinearRegressionChannel\";\nimport MouseLocationIndicator from \"./components/MouseLocationIndicator\";\nimport HoverTextNearMouse from \"./components/HoverTextNearMouse\";\n\nclass StandardDeviationChannel extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\n\t\tthis.handleStart = this.handleStart.bind(this);\n\t\tthis.handleEnd = this.handleEnd.bind(this);\n\t\tthis.handleDrawLine = this.handleDrawLine.bind(this);\n\t\tthis.handleDragLine = this.handleDragLine.bind(this);\n\t\tthis.handleDragLineComplete = this.handleDragLineComplete.bind(this);\n\n\t\tthis.terminate = terminate.bind(this);\n\t\tthis.saveNodeType = saveNodeType.bind(this);\n\n\t\tthis.getSelectionState = isHoverForInteractiveType(\"channels\")\n\t\t\t.bind(this);\n\n\t\tthis.nodes = [];\n\t\tthis.state = {};\n\t}\n\thandleDragLine(index, newXYValue) {\n\t\tthis.setState({\n\t\t\toverride: {\n\t\t\t\tindex,\n\t\t\t\t...newXYValue\n\t\t\t}\n\t\t});\n\t}\n\thandleDragLineComplete(moreProps) {\n\t\tconst { override } = this.state;\n\t\tconst { channels } = this.props;\n\t\tif (isDefined(override)) {\n\n\t\t\tconst newChannels = channels\n\t\t\t\t.map((each, idx) => idx === override.index\n\t\t\t\t\t? {\n\t\t\t\t\t\t...each,\n\t\t\t\t\t\tstart: [override.x1Value, override.y1Value],\n\t\t\t\t\t\tend: [override.x2Value, override.y2Value],\n\t\t\t\t\t\tselected: true,\n\t\t\t\t\t}\n\t\t\t\t\t: each);\n\t\t\tthis.setState({\n\t\t\t\toverride: null,\n\t\t\t}, () => {\n\t\t\t\tthis.props.onComplete(newChannels, moreProps);\n\t\t\t});\n\t\t}\n\t}\n\thandleDrawLine(xyValue) {\n\t\tconst { current } = this.state;\n\n\t\tif (isDefined(current) && isDefined(current.start)) {\n\t\t\tthis.mouseMoved = true;\n\t\t\tthis.setState({\n\t\t\t\tcurrent: {\n\t\t\t\t\tstart: current.start,\n\t\t\t\t\tend: xyValue,\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\thandleStart(xyValue) {\n\t\tconst { current } = this.state;\n\n\t\tif (isNotDefined(current) || isNotDefined(current.start)) {\n\t\t\tthis.mouseMoved = false;\n\n\t\t\tthis.setState({\n\t\t\t\tcurrent: {\n\t\t\t\t\tstart: xyValue,\n\t\t\t\t\tend: null,\n\t\t\t\t}\n\t\t\t}, () => {\n\t\t\t\tthis.props.onStart();\n\t\t\t});\n\t\t}\n\t}\n\thandleEnd(xyValue, moreProps, e) {\n\t\tconst { current } = this.state;\n\t\tconst { appearance, channels } = this.props;\n\n\t\tif (this.mouseMoved\n\t\t\t&& isDefined(current)\n\t\t\t&& isDefined(current.start)\n\t\t) {\n\t\t\tconst newChannels = [\n\t\t\t\t...channels.map(d => ({ ...d, selected: false })),\n\t\t\t\t{\n\t\t\t\t\tstart: current.start,\n\t\t\t\t\tend: xyValue,\n\t\t\t\t\tselected: true,\n\t\t\t\t\tappearance,\n\t\t\t\t}\n\t\t\t];\n\n\t\t\tthis.setState({\n\t\t\t\tcurrent: null,\n\t\t\t}, () => {\n\t\t\t\tthis.props.onComplete(newChannels, moreProps, e);\n\t\t\t});\n\t\t}\n\t}\n\trender() {\n\t\tconst { appearance } = this.props;\n\t\tconst { enabled, snapTo } = this.props;\n\t\tconst { currentPositionRadius, currentPositionStroke } = this.props;\n\t\tconst { currentPositionOpacity, currentPositionStrokeWidth } = this.props;\n\t\tconst { hoverText, channels } = this.props;\n\t\tconst { current, override } = this.state;\n\n\t\tconst eachDefaultAppearance = {\n\t\t\t...StandardDeviationChannel.defaultProps.appearance,\n\t\t\t...appearance\n\t\t};\n\n\t\tconst hoverTextDefault = {\n\t\t\t...StandardDeviationChannel.defaultProps.hoverText,\n\t\t\t...hoverText\n\t\t};\n\n\t\tconst tempLine = isDefined(current) && isDefined(current.end)\n\t\t\t? \n\t\t\t: null;\n\n\t\treturn \n\t\t\t{channels.map((each, idx) => {\n\t\t\t\tconst eachAppearance = isDefined(each.appearance)\n\t\t\t\t\t? { ...eachDefaultAppearance, ...each.appearance }\n\t\t\t\t\t: eachDefaultAppearance;\n\n\t\t\t\tconst eachHoverText = isDefined(each.hoverText)\n\t\t\t\t\t? { ...hoverTextDefault, ...each.hoverText }\n\t\t\t\t\t: hoverTextDefault;\n\n\t\t\t\treturn ;\n\t\t\t})}\n\t\t\t{tempLine}\n\t\t\t\n\t\t;\n\t}\n}\n\nStandardDeviationChannel.propTypes = {\n\tenabled: PropTypes.bool.isRequired,\n\tsnapTo: PropTypes.func,\n\n\tonStart: PropTypes.func,\n\tonComplete: PropTypes.func.isRequired,\n\tonSelect: PropTypes.func,\n\n\tcurrentPositionStroke: PropTypes.string,\n\tcurrentPositionStrokeWidth: PropTypes.number,\n\tcurrentPositionOpacity: PropTypes.number,\n\tcurrentPositionRadius: PropTypes.number,\n\n\tappearance: PropTypes.shape({\n\t\tstroke: PropTypes.string,\n\t\tstrokeOpacity: PropTypes.number,\n\t\tstrokeWidth: PropTypes.number,\n\t\tfill: PropTypes.string,\n\t\tfillOpacity: PropTypes.number,\n\t\tedgeStrokeWidth: PropTypes.number,\n\t\tedgeStroke: PropTypes.string,\n\t\tedgeFill: PropTypes.string,\n\t\tr: PropTypes.number,\n\t}).isRequired,\n\n\thoverText: PropTypes.object,\n\tchannels: PropTypes.array.isRequired,\n};\n\nStandardDeviationChannel.defaultProps = {\n\tsnapTo: d => d.close,\n\tappearance: {\n\t\tstroke: \"#000000\",\n\t\tfillOpacity: 0.2,\n\t\tstrokeOpacity: 1,\n\t\tstrokeWidth: 1,\n\t\tfill: \"#8AAFE2\",\n\t\tedgeStrokeWidth: 2,\n\t\tedgeStroke: \"#000000\",\n\t\tedgeFill: \"#FFFFFF\",\n\t\tr: 5,\n\t},\n\n\tonStart: noop,\n\tonComplete: noop,\n\tonSelect: noop,\n\n\tcurrentPositionStroke: \"#000000\",\n\tcurrentPositionOpacity: 1,\n\tcurrentPositionStrokeWidth: 3,\n\tcurrentPositionRadius: 4,\n\n\thoverText: {\n\t\t...HoverTextNearMouse.defaultProps,\n\t\tenable: true,\n\t\tbgHeight: \"auto\",\n\t\tbgWidth: \"auto\",\n\t\ttext: \"Click and drag the edge circles\",\n\t\tselectedText: \"\"\n\t},\n\tchannels: [],\n};\n\nexport default StandardDeviationChannel;\n"]} \ No newline at end of file diff --git a/es/lib/interactive/TrendLine.js b/es/lib/interactive/TrendLine.js index 35b389b..80535e6 100644 --- a/es/lib/interactive/TrendLine.js +++ b/es/lib/interactive/TrendLine.js @@ -190,6 +190,8 @@ var TrendLine = function (_Component) { trends.map(function (each, idx) { var eachAppearance = isDefined(each.appearance) ? _extends({}, appearance, each.appearance) : appearance; + var hoverTextWithDefault = _extends({}, TrendLine.defaultProps.hoverText, hoverText); + return React.createElement(EachTrendLine, { key: idx, ref: _this5.saveNodeType(idx), index: idx, @@ -207,7 +209,7 @@ var TrendLine = function (_Component) { edgeFill: eachAppearance.edgeFill, edgeStrokeWidth: eachAppearance.edgeStrokeWidth, r: eachAppearance.r, - hoverText: hoverText, + hoverText: hoverTextWithDefault, onDrag: _this5.handleDragLine, onDragComplete: _this5.handleDragLineComplete, edgeInteractiveCursor: "react-stockcharts-move-cursor", @@ -285,9 +287,10 @@ TrendLine.defaultProps = { }, hoverText: _extends({}, HoverTextNearMouse.defaultProps, { enable: true, - bgHeight: 18, - bgWidth: 120, - text: "Click to select object" + bgHeight: "auto", + bgWidth: "auto", + text: "Click to select object", + selectedText: "" }), trends: [], diff --git a/es/lib/interactive/TrendLine.js.map b/es/lib/interactive/TrendLine.js.map index 42986dd..dcbbf66 100644 --- a/es/lib/interactive/TrendLine.js.map +++ b/es/lib/interactive/TrendLine.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../../../src/lib/interactive/TrendLine.js"],"names":["React","Component","PropTypes","isDefined","isNotDefined","noop","strokeDashTypes","getValueFromOverride","terminate","saveNodeType","isHoverForInteractiveType","EachTrendLine","StraightLine","MouseLocationIndicator","HoverTextNearMouse","TrendLine","props","handleStart","bind","handleEnd","handleDrawLine","handleDragLine","handleDragLineComplete","getSelectionState","state","nodes","index","newXYValue","setState","override","moreProps","trends","newTrends","map","each","idx","start","x1Value","y1Value","end","x2Value","y2Value","selected","onComplete","xyValue","current","mouseMoved","e","onStart","appearance","type","d","enabled","snap","shouldDisableSnap","snapTo","currentPositionRadius","currentPositionStroke","currentPositionstrokeOpacity","currentPositionStrokeWidth","hoverText","tempLine","stroke","strokeWidth","strokeOpacity","eachAppearance","strokeDasharray","edgeStroke","edgeFill","edgeStrokeWidth","r","propTypes","bool","isRequired","func","onSelect","string","number","oneOf","object","array","shape","defaultProps","button","shiftKey","enable","bgHeight","bgWidth","text"],"mappings":"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","file":"TrendLine.js","sourcesContent":["\n\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport { isDefined, isNotDefined, noop, strokeDashTypes } from \"../utils\";\n\nimport {\n\tgetValueFromOverride,\n\tterminate,\n\tsaveNodeType,\n\tisHoverForInteractiveType,\n} from \"./utils\";\n\nimport EachTrendLine from \"./wrapper/EachTrendLine\";\nimport StraightLine from \"./components/StraightLine\";\nimport MouseLocationIndicator from \"./components/MouseLocationIndicator\";\nimport HoverTextNearMouse from \"./components/HoverTextNearMouse\";\n\nclass TrendLine extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\n\t\tthis.handleStart = this.handleStart.bind(this);\n\t\tthis.handleEnd = this.handleEnd.bind(this);\n\t\tthis.handleDrawLine = this.handleDrawLine.bind(this);\n\t\tthis.handleDragLine = this.handleDragLine.bind(this);\n\t\tthis.handleDragLineComplete = this.handleDragLineComplete.bind(this);\n\n\t\tthis.terminate = terminate.bind(this);\n\t\tthis.saveNodeType = saveNodeType.bind(this);\n\n\t\tthis.getSelectionState = isHoverForInteractiveType(\"trends\")\n\t\t\t.bind(this);\n\n\t\tthis.state = {\n\t\t};\n\t\tthis.nodes = [];\n\t}\n\thandleDragLine(index, newXYValue) {\n\t\tthis.setState({\n\t\t\toverride: {\n\t\t\t\tindex,\n\t\t\t\t...newXYValue\n\t\t\t}\n\t\t});\n\t}\n\thandleDragLineComplete(moreProps) {\n\t\tconst { override } = this.state;\n\t\tif (isDefined(override)) {\n\t\t\tconst { trends } = this.props;\n\t\t\tconst newTrends = trends\n\t\t\t\t.map((each, idx) => idx === override.index\n\t\t\t\t\t? {\n\t\t\t\t\t\t...each,\n\t\t\t\t\t\tstart: [override.x1Value, override.y1Value],\n\t\t\t\t\t\tend: [override.x2Value, override.y2Value],\n\t\t\t\t\t\tselected: true,\n\t\t\t\t\t}\n\t\t\t\t\t: {\n\t\t\t\t\t\t...each,\n\t\t\t\t\t\tselected: false,\n\t\t\t\t\t});\n\n\t\t\tthis.setState({\n\t\t\t\toverride: null,\n\t\t\t}, () => {\n\t\t\t\tthis.props.onComplete(newTrends, moreProps);\n\t\t\t});\n\t\t}\n\t}\n\thandleDrawLine(xyValue) {\n\t\tconst { current } = this.state;\n\t\tif (isDefined(current) && isDefined(current.start)) {\n\t\t\tthis.mouseMoved = true;\n\t\t\tthis.setState({\n\t\t\t\tcurrent: {\n\t\t\t\t\tstart: current.start,\n\t\t\t\t\tend: xyValue,\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\thandleStart(xyValue, moreProps, e) {\n\t\tconst { current } = this.state;\n\n\t\tif (isNotDefined(current) || isNotDefined(current.start)) {\n\t\t\tthis.mouseMoved = false;\n\n\t\t\tthis.setState({\n\t\t\t\tcurrent: {\n\t\t\t\t\tstart: xyValue,\n\t\t\t\t\tend: null,\n\t\t\t\t},\n\t\t\t}, () => {\n\t\t\t\tthis.props.onStart(moreProps, e);\n\t\t\t});\n\t\t}\n\t}\n\thandleEnd(xyValue, moreProps, e) {\n\t\tconst { current } = this.state;\n\t\tconst { trends, appearance, type } = this.props;\n\n\t\tif (this.mouseMoved\n\t\t\t&& isDefined(current)\n\t\t\t&& isDefined(current.start)\n\t\t) {\n\t\t\tconst newTrends = [\n\t\t\t\t...trends.map(d => ({ ...d, selected: false })),\n\t\t\t\t{\n\t\t\t\t\tstart: current.start,\n\t\t\t\t\tend: xyValue,\n\t\t\t\t\tselected: true,\n\t\t\t\t\tappearance,\n\t\t\t\t\ttype,\n\t\t\t\t}\n\t\t\t];\n\t\t\tthis.setState({\n\t\t\t\tcurrent: null,\n\t\t\t\ttrends: newTrends\n\t\t\t}, () => {\n\t\t\t\tthis.props.onComplete(newTrends, moreProps, e);\n\t\t\t});\n\t\t}\n\t}\n\trender() {\n\t\tconst { appearance } = this.props;\n\t\tconst { enabled, snap, shouldDisableSnap, snapTo, type } = this.props;\n\t\tconst { currentPositionRadius, currentPositionStroke } = this.props;\n\t\tconst { currentPositionstrokeOpacity, currentPositionStrokeWidth } = this.props;\n\t\tconst { hoverText, trends } = this.props;\n\t\tconst { current, override } = this.state;\n\n\t\tconst tempLine = isDefined(current) && isDefined(current.end)\n\t\t\t? \n\t\t\t: null;\n\n\t\treturn \n\t\t\t{trends.map((each, idx) => {\n\t\t\t\tconst eachAppearance = isDefined(each.appearance)\n\t\t\t\t\t? { ...appearance, ...each.appearance }\n\t\t\t\t\t: appearance;\n\n\t\t\t\treturn ;\n\t\t\t})}\n\t\t\t{tempLine}\n\t\t\t\n\t\t;\n\t}\n}\n\n\nTrendLine.propTypes = {\n\tsnap: PropTypes.bool.isRequired,\n\tenabled: PropTypes.bool.isRequired,\n\tsnapTo: PropTypes.func,\n\tshouldDisableSnap: PropTypes.func.isRequired,\n\n\tonStart: PropTypes.func.isRequired,\n\tonComplete: PropTypes.func.isRequired,\n\tonSelect: PropTypes.func,\n\n\tcurrentPositionStroke: PropTypes.string,\n\tcurrentPositionStrokeWidth: PropTypes.number,\n\tcurrentPositionstrokeOpacity: PropTypes.number,\n\tcurrentPositionRadius: PropTypes.number,\n\ttype: PropTypes.oneOf([\n\t\t\"XLINE\", // extends from -Infinity to +Infinity\n\t\t\"RAY\", // extends to +/-Infinity in one direction\n\t\t\"LINE\", // extends between the set bounds\n\t]),\n\thoverText: PropTypes.object.isRequired,\n\n\ttrends: PropTypes.array.isRequired,\n\n\tappearance: PropTypes.shape({\n\t\tstroke: PropTypes.string.isRequired,\n\t\tstrokeOpacity: PropTypes.number.isRequired,\n\t\tstrokeWidth: PropTypes.number.isRequired,\n\t\tstrokeDasharray: PropTypes.oneOf(strokeDashTypes),\n\t\tedgeStrokeWidth: PropTypes.number.isRequired,\n\t\tedgeFill: PropTypes.string.isRequired,\n\t\tedgeStroke: PropTypes.string.isRequired,\n\t}).isRequired\n};\n\nTrendLine.defaultProps = {\n\ttype: \"XLINE\",\n\n\tonStart: noop,\n\tonComplete: noop,\n\tonSelect: noop,\n\n\tcurrentPositionStroke: \"#000000\",\n\tcurrentPositionstrokeOpacity: 1,\n\tcurrentPositionStrokeWidth: 3,\n\tcurrentPositionRadius: 0,\n\n\tshouldDisableSnap: e => (e.button === 2 || e.shiftKey),\n\thoverText: {\n\t\t...HoverTextNearMouse.defaultProps,\n\t\tenable: true,\n\t\tbgHeight: 18,\n\t\tbgWidth: 120,\n\t\ttext: \"Click to select object\",\n\t},\n\ttrends: [],\n\n\tappearance: {\n\t\tstroke: \"#000000\",\n\t\tstrokeOpacity: 1,\n\t\tstrokeWidth: 1,\n\t\tstrokeDasharray: \"Solid\",\n\t\tedgeStrokeWidth: 1,\n\t\tedgeFill: \"#FFFFFF\",\n\t\tedgeStroke: \"#000000\",\n\t\tr: 6,\n\t}\n};\n\nexport default TrendLine;\n"]} \ No newline at end of file +{"version":3,"sources":["../../../../src/lib/interactive/TrendLine.js"],"names":["React","Component","PropTypes","isDefined","isNotDefined","noop","strokeDashTypes","getValueFromOverride","terminate","saveNodeType","isHoverForInteractiveType","EachTrendLine","StraightLine","MouseLocationIndicator","HoverTextNearMouse","TrendLine","props","handleStart","bind","handleEnd","handleDrawLine","handleDragLine","handleDragLineComplete","getSelectionState","state","nodes","index","newXYValue","setState","override","moreProps","trends","newTrends","map","each","idx","start","x1Value","y1Value","end","x2Value","y2Value","selected","onComplete","xyValue","current","mouseMoved","e","onStart","appearance","type","d","enabled","snap","shouldDisableSnap","snapTo","currentPositionRadius","currentPositionStroke","currentPositionstrokeOpacity","currentPositionStrokeWidth","hoverText","tempLine","stroke","strokeWidth","strokeOpacity","eachAppearance","hoverTextWithDefault","defaultProps","strokeDasharray","edgeStroke","edgeFill","edgeStrokeWidth","r","propTypes","bool","isRequired","func","onSelect","string","number","oneOf","object","array","shape","button","shiftKey","enable","bgHeight","bgWidth","text","selectedText"],"mappings":"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","file":"TrendLine.js","sourcesContent":["\n\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport { isDefined, isNotDefined, noop, strokeDashTypes } from \"../utils\";\n\nimport {\n\tgetValueFromOverride,\n\tterminate,\n\tsaveNodeType,\n\tisHoverForInteractiveType,\n} from \"./utils\";\n\nimport EachTrendLine from \"./wrapper/EachTrendLine\";\nimport StraightLine from \"./components/StraightLine\";\nimport MouseLocationIndicator from \"./components/MouseLocationIndicator\";\nimport HoverTextNearMouse from \"./components/HoverTextNearMouse\";\n\nclass TrendLine extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\n\t\tthis.handleStart = this.handleStart.bind(this);\n\t\tthis.handleEnd = this.handleEnd.bind(this);\n\t\tthis.handleDrawLine = this.handleDrawLine.bind(this);\n\t\tthis.handleDragLine = this.handleDragLine.bind(this);\n\t\tthis.handleDragLineComplete = this.handleDragLineComplete.bind(this);\n\n\t\tthis.terminate = terminate.bind(this);\n\t\tthis.saveNodeType = saveNodeType.bind(this);\n\n\t\tthis.getSelectionState = isHoverForInteractiveType(\"trends\")\n\t\t\t.bind(this);\n\n\t\tthis.state = {\n\t\t};\n\t\tthis.nodes = [];\n\t}\n\thandleDragLine(index, newXYValue) {\n\t\tthis.setState({\n\t\t\toverride: {\n\t\t\t\tindex,\n\t\t\t\t...newXYValue\n\t\t\t}\n\t\t});\n\t}\n\thandleDragLineComplete(moreProps) {\n\t\tconst { override } = this.state;\n\t\tif (isDefined(override)) {\n\t\t\tconst { trends } = this.props;\n\t\t\tconst newTrends = trends\n\t\t\t\t.map((each, idx) => idx === override.index\n\t\t\t\t\t? {\n\t\t\t\t\t\t...each,\n\t\t\t\t\t\tstart: [override.x1Value, override.y1Value],\n\t\t\t\t\t\tend: [override.x2Value, override.y2Value],\n\t\t\t\t\t\tselected: true,\n\t\t\t\t\t}\n\t\t\t\t\t: {\n\t\t\t\t\t\t...each,\n\t\t\t\t\t\tselected: false,\n\t\t\t\t\t});\n\n\t\t\tthis.setState({\n\t\t\t\toverride: null,\n\t\t\t}, () => {\n\t\t\t\tthis.props.onComplete(newTrends, moreProps);\n\t\t\t});\n\t\t}\n\t}\n\thandleDrawLine(xyValue) {\n\t\tconst { current } = this.state;\n\t\tif (isDefined(current) && isDefined(current.start)) {\n\t\t\tthis.mouseMoved = true;\n\t\t\tthis.setState({\n\t\t\t\tcurrent: {\n\t\t\t\t\tstart: current.start,\n\t\t\t\t\tend: xyValue,\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\thandleStart(xyValue, moreProps, e) {\n\t\tconst { current } = this.state;\n\n\t\tif (isNotDefined(current) || isNotDefined(current.start)) {\n\t\t\tthis.mouseMoved = false;\n\n\t\t\tthis.setState({\n\t\t\t\tcurrent: {\n\t\t\t\t\tstart: xyValue,\n\t\t\t\t\tend: null,\n\t\t\t\t},\n\t\t\t}, () => {\n\t\t\t\tthis.props.onStart(moreProps, e);\n\t\t\t});\n\t\t}\n\t}\n\thandleEnd(xyValue, moreProps, e) {\n\t\tconst { current } = this.state;\n\t\tconst { trends, appearance, type } = this.props;\n\n\t\tif (this.mouseMoved\n\t\t\t&& isDefined(current)\n\t\t\t&& isDefined(current.start)\n\t\t) {\n\t\t\tconst newTrends = [\n\t\t\t\t...trends.map(d => ({ ...d, selected: false })),\n\t\t\t\t{\n\t\t\t\t\tstart: current.start,\n\t\t\t\t\tend: xyValue,\n\t\t\t\t\tselected: true,\n\t\t\t\t\tappearance,\n\t\t\t\t\ttype,\n\t\t\t\t}\n\t\t\t];\n\t\t\tthis.setState({\n\t\t\t\tcurrent: null,\n\t\t\t\ttrends: newTrends\n\t\t\t}, () => {\n\t\t\t\tthis.props.onComplete(newTrends, moreProps, e);\n\t\t\t});\n\t\t}\n\t}\n\trender() {\n\t\tconst { appearance } = this.props;\n\t\tconst { enabled, snap, shouldDisableSnap, snapTo, type } = this.props;\n\t\tconst { currentPositionRadius, currentPositionStroke } = this.props;\n\t\tconst { currentPositionstrokeOpacity, currentPositionStrokeWidth } = this.props;\n\t\tconst { hoverText, trends } = this.props;\n\t\tconst { current, override } = this.state;\n\n\t\tconst tempLine = isDefined(current) && isDefined(current.end)\n\t\t\t? \n\t\t\t: null;\n\n\t\treturn \n\t\t\t{trends.map((each, idx) => {\n\t\t\t\tconst eachAppearance = isDefined(each.appearance)\n\t\t\t\t\t? { ...appearance, ...each.appearance }\n\t\t\t\t\t: appearance;\n\n\t\t\t\tconst hoverTextWithDefault = {\n\t\t\t\t\t...TrendLine.defaultProps.hoverText,\n\t\t\t\t\t...hoverText\n\t\t\t\t};\n\n\t\t\t\treturn ;\n\t\t\t})}\n\t\t\t{tempLine}\n\t\t\t\n\t\t;\n\t}\n}\n\n\nTrendLine.propTypes = {\n\tsnap: PropTypes.bool.isRequired,\n\tenabled: PropTypes.bool.isRequired,\n\tsnapTo: PropTypes.func,\n\tshouldDisableSnap: PropTypes.func.isRequired,\n\n\tonStart: PropTypes.func.isRequired,\n\tonComplete: PropTypes.func.isRequired,\n\tonSelect: PropTypes.func,\n\n\tcurrentPositionStroke: PropTypes.string,\n\tcurrentPositionStrokeWidth: PropTypes.number,\n\tcurrentPositionstrokeOpacity: PropTypes.number,\n\tcurrentPositionRadius: PropTypes.number,\n\ttype: PropTypes.oneOf([\n\t\t\"XLINE\", // extends from -Infinity to +Infinity\n\t\t\"RAY\", // extends to +/-Infinity in one direction\n\t\t\"LINE\", // extends between the set bounds\n\t]),\n\thoverText: PropTypes.object.isRequired,\n\n\ttrends: PropTypes.array.isRequired,\n\n\tappearance: PropTypes.shape({\n\t\tstroke: PropTypes.string.isRequired,\n\t\tstrokeOpacity: PropTypes.number.isRequired,\n\t\tstrokeWidth: PropTypes.number.isRequired,\n\t\tstrokeDasharray: PropTypes.oneOf(strokeDashTypes),\n\t\tedgeStrokeWidth: PropTypes.number.isRequired,\n\t\tedgeFill: PropTypes.string.isRequired,\n\t\tedgeStroke: PropTypes.string.isRequired,\n\t}).isRequired\n};\n\nTrendLine.defaultProps = {\n\ttype: \"XLINE\",\n\n\tonStart: noop,\n\tonComplete: noop,\n\tonSelect: noop,\n\n\tcurrentPositionStroke: \"#000000\",\n\tcurrentPositionstrokeOpacity: 1,\n\tcurrentPositionStrokeWidth: 3,\n\tcurrentPositionRadius: 0,\n\n\tshouldDisableSnap: e => (e.button === 2 || e.shiftKey),\n\thoverText: {\n\t\t...HoverTextNearMouse.defaultProps,\n\t\tenable: true,\n\t\tbgHeight: \"auto\",\n\t\tbgWidth: \"auto\",\n\t\ttext: \"Click to select object\",\n\t\tselectedText: \"\",\n\t},\n\ttrends: [],\n\n\tappearance: {\n\t\tstroke: \"#000000\",\n\t\tstrokeOpacity: 1,\n\t\tstrokeWidth: 1,\n\t\tstrokeDasharray: \"Solid\",\n\t\tedgeStrokeWidth: 1,\n\t\tedgeFill: \"#FFFFFF\",\n\t\tedgeStroke: \"#000000\",\n\t\tr: 6,\n\t}\n};\n\nexport default TrendLine;\n"]} \ No newline at end of file diff --git a/es/lib/interactive/components/HoverTextNearMouse.js b/es/lib/interactive/components/HoverTextNearMouse.js index ba1a3e2..e36d0be 100644 --- a/es/lib/interactive/components/HoverTextNearMouse.js +++ b/es/lib/interactive/components/HoverTextNearMouse.js @@ -14,10 +14,10 @@ import React, { Component } from "react"; import PropTypes from "prop-types"; import GenericChartComponent from "../../GenericChartComponent"; -import { getMouseCanvas } from "../../GenericComponent"; -import { isDefined, hexToRGBA } from "../../utils"; +import { isDefined } from "../../utils"; var PADDING = 10; +var MIN_WIDTH = PADDING; var HoverTextNearMouse = function (_Component) { _inherits(HoverTextNearMouse, _Component); @@ -27,42 +27,83 @@ var HoverTextNearMouse = function (_Component) { var _this = _possibleConstructorReturn(this, (HoverTextNearMouse.__proto__ || Object.getPrototypeOf(HoverTextNearMouse)).call(this, props)); + _this.state = { + textWidth: undefined, + textHeight: undefined + }; + + _this.saveNode = _this.saveNode.bind(_this); + _this.updateTextSize = _this.updateTextSize.bind(_this); _this.renderSVG = _this.renderSVG.bind(_this); - _this.drawOnCanvas = _this.drawOnCanvas.bind(_this); return _this; } _createClass(HoverTextNearMouse, [{ - key: "drawOnCanvas", - value: function drawOnCanvas(ctx, moreProps) { + key: "saveNode", + value: function saveNode(node) { + this.textNode = node; + } + }, { + key: "updateTextSize", + value: function updateTextSize() { var _props = this.props, - fontFamily = _props.fontFamily, - fontSize = _props.fontSize, - fill = _props.fill, - bgFill = _props.bgFill, - bgOpacity = _props.bgOpacity; - - // console.log(moreProps) - - var textMetaData = helper(this.props, moreProps); - - if (isDefined(textMetaData)) { - var rect = textMetaData.rect, - text = textMetaData.text; - - - ctx.strokeStyle = bgFill; - ctx.fillStyle = hexToRGBA(bgFill, bgOpacity); - ctx.beginPath(); - ctx.rect(rect.x, rect.y, rect.width, rect.height); - ctx.fill(); - ctx.stroke(); - - ctx.font = fontSize + "px " + fontFamily; - ctx.fillStyle = fill; - ctx.beginPath(); - - ctx.fillText(text.text, text.x, text.y); + bgWidth = _props.bgWidth, + bgHeight = _props.bgHeight; + + if (bgWidth === "auto" || bgHeight === "auto") { + var textNode = this.textNode; + if (textNode) { + var _textNode$getBBox = textNode.getBBox(), + width = _textNode$getBBox.width, + height = _textNode$getBBox.height; + + if (this.state.textWidth !== width || this.state.textHeight !== height) { + this.setState({ + textWidth: width, + textHeight: height + }); + } + } + } + } + }, { + key: "componentDidMount", + value: function componentDidMount() { + this.updateTextSize(); + } + }, { + key: "componentDidUpdate", + value: function componentDidUpdate() { + this.updateTextSize(); + } + }, { + key: "getBgWidth", + value: function getBgWidth() { + var bgWidth = this.props.bgWidth; + var textWidth = this.state.textWidth; + + + if (bgWidth !== "auto") { + return bgWidth; + } else if (textWidth !== undefined) { + return textWidth + PADDING; + } else { + return MIN_WIDTH; + } + } + }, { + key: "getBgHeight", + value: function getBgHeight() { + var bgHeight = this.props.bgHeight; + var textHeight = this.state.textHeight; + + + if (bgHeight !== "auto") { + return bgHeight; + } else if (textHeight !== undefined) { + return textHeight + PADDING; + } else { + return MIN_WIDTH; } } }, { @@ -77,13 +118,15 @@ var HoverTextNearMouse = function (_Component) { // console.log(moreProps) - var textMetaData = helper(this.props, moreProps); + var textMetaData = helper(_extends({}, this.props, { + bgWidth: this.getBgWidth(), + bgHeight: this.getBgHeight() + }), moreProps); if (isDefined(textMetaData)) { var rect = textMetaData.rect, text = textMetaData.text; - return React.createElement( "g", null, @@ -95,9 +138,11 @@ var HoverTextNearMouse = function (_Component) { React.createElement( "text", { + ref: this.saveNode, fontSize: fontSize, fontFamily: fontFamily, textAnchor: "start", + alignmentBaseline: "central", fill: fill, x: text.x, y: text.y }, @@ -109,22 +154,24 @@ var HoverTextNearMouse = function (_Component) { }, { key: "render", value: function render() { - - return React.createElement(GenericChartComponent, { foo: true, - - svgDraw: this.renderSVG, - - canvasToDraw: getMouseCanvas, - canvasDraw: this.drawOnCanvas, - - drawOn: ["mousemove"] - }); + var text = this.props.text; + + if (text) { + return React.createElement(GenericChartComponent, { + svgDraw: this.renderSVG, + drawOn: ["mousemove"] + }); + } else { + return null; + } } }]); return HoverTextNearMouse; }(Component); +var numberOrString = PropTypes.oneOfType([PropTypes.number, PropTypes.oneOf(["auto"])]); + HoverTextNearMouse.propTypes = { fontFamily: PropTypes.string.isRequired, fontSize: PropTypes.number.isRequired, @@ -132,8 +179,8 @@ HoverTextNearMouse.propTypes = { text: PropTypes.string.isRequired, bgFill: PropTypes.string.isRequired, bgOpacity: PropTypes.number.isRequired, - bgWidth: PropTypes.number.isRequired, - bgHeight: PropTypes.number.isRequired, + bgWidth: numberOrString.isRequired, + bgHeight: numberOrString.isRequired, show: PropTypes.bool.isRequired }; @@ -147,7 +194,6 @@ HoverTextNearMouse.defaultProps = { function helper(props, moreProps) { var show = props.show, - fontSize = props.fontSize, bgWidth = props.bgWidth, bgHeight = props.bgHeight; var mouseXY = moreProps.mouseXY, @@ -163,6 +209,7 @@ function helper(props, moreProps) { y = _mouseXY[1]; var cx = x < width / 2 ? x + PADDING : x - bgWidth - PADDING; + var cy = y < height / 2 ? y + PADDING : y - bgHeight - PADDING; var rect = { @@ -171,10 +218,11 @@ function helper(props, moreProps) { width: bgWidth, height: bgHeight }; + var text = { text: props.text, x: cx + PADDING / 2, - y: cy + fontSize + y: cy + bgHeight / 2 }; return { diff --git a/es/lib/interactive/components/HoverTextNearMouse.js.map b/es/lib/interactive/components/HoverTextNearMouse.js.map index 0fb1312..143c84f 100644 --- a/es/lib/interactive/components/HoverTextNearMouse.js.map +++ b/es/lib/interactive/components/HoverTextNearMouse.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../../../../src/lib/interactive/components/HoverTextNearMouse.js"],"names":["React","Component","PropTypes","GenericChartComponent","getMouseCanvas","isDefined","hexToRGBA","PADDING","HoverTextNearMouse","props","renderSVG","bind","drawOnCanvas","ctx","moreProps","fontFamily","fontSize","fill","bgFill","bgOpacity","textMetaData","helper","rect","text","strokeStyle","fillStyle","beginPath","x","y","width","height","stroke","font","fillText","propTypes","string","isRequired","number","bgWidth","bgHeight","show","bool","defaultProps","mouseXY","chartConfig","mouseInsideCanvas","cx","cy"],"mappings":"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","file":"HoverTextNearMouse.js","sourcesContent":["import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport GenericChartComponent from \"../../GenericChartComponent\";\nimport { getMouseCanvas } from \"../../GenericComponent\";\nimport { isDefined, hexToRGBA } from \"../../utils\";\n\nconst PADDING = 10;\n\nclass HoverTextNearMouse extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.renderSVG = this.renderSVG.bind(this);\n\t\tthis.drawOnCanvas = this.drawOnCanvas.bind(this);\n\t}\n\tdrawOnCanvas(ctx, moreProps) {\n\t\tconst {\n\t\t\tfontFamily,\n\t\t\tfontSize,\n\t\t\tfill,\n\t\t\tbgFill,\n\t\t\tbgOpacity,\n\t\t} = this.props;\n\n\t\t// console.log(moreProps)\n\t\tconst textMetaData = helper(this.props, moreProps);\n\n\t\tif (isDefined(textMetaData)) {\n\t\t\tconst { rect, text } = textMetaData;\n\n\t\t\tctx.strokeStyle = bgFill;\n\t\t\tctx.fillStyle = hexToRGBA(bgFill, bgOpacity);\n\t\t\tctx.beginPath();\n\t\t\tctx.rect(rect.x, rect.y, rect.width, rect.height);\n\t\t\tctx.fill();\n\t\t\tctx.stroke();\n\n\t\t\tctx.font = `${ fontSize }px ${fontFamily}`;\n\t\t\tctx.fillStyle = fill;\n\t\t\tctx.beginPath();\n\n\t\t\tctx.fillText(text.text, text.x, text.y);\n\t\t}\n\t}\n\trenderSVG(moreProps) {\n\t\tconst {\n\t\t\tfontFamily,\n\t\t\tfontSize,\n\t\t\tfill,\n\t\t\tbgFill,\n\t\t\tbgOpacity,\n\t\t} = this.props;\n\n\t\t// console.log(moreProps)\n\t\tconst textMetaData = helper(this.props, moreProps);\n\n\t\tif (isDefined(textMetaData)) {\n\t\t\tconst { rect, text } = textMetaData;\n\n\t\t\treturn (\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{text.text}\n\t\t\t\t\n\t\t\t);\n\t\t}\n\t}\n\trender() {\n\n\t\treturn ;\n\t}\n}\n\nHoverTextNearMouse.propTypes = {\n\tfontFamily: PropTypes.string.isRequired,\n\tfontSize: PropTypes.number.isRequired,\n\tfill: PropTypes.string.isRequired,\n\ttext: PropTypes.string.isRequired,\n\tbgFill: PropTypes.string.isRequired,\n\tbgOpacity: PropTypes.number.isRequired,\n\tbgWidth: PropTypes.number.isRequired,\n\tbgHeight: PropTypes.number.isRequired,\n\tshow: PropTypes.bool.isRequired,\n};\n\nHoverTextNearMouse.defaultProps = {\n\tfontFamily: \"Helvetica Neue, Helvetica, Arial, sans-serif\",\n\tfontSize: 12,\n\tfill: \"#000000\",\n\tbgFill: \"#FA9325\",\n\tbgOpacity: 0.5,\n};\n\nfunction helper(props, moreProps) {\n\tconst {\n\t\tshow,\n\t\tfontSize,\n\t\tbgWidth,\n\t\tbgHeight,\n\t} = props;\n\n\tconst {\n\t\tmouseXY,\n\t\tchartConfig: { height, width },\n\t\tshow: mouseInsideCanvas\n\t} = moreProps;\n\n\tif (show && mouseInsideCanvas) {\n\t\tconst [x, y] = mouseXY;\n\n\t\tconst cx = x < width / 2\n\t\t\t? x + PADDING\n\t\t\t: x - bgWidth - PADDING;\n\t\tconst cy = y < height / 2\n\t\t\t? y + PADDING\n\t\t\t: y - bgHeight - PADDING;\n\n\t\tconst rect = {\n\t\t\tx: cx,\n\t\t\ty: cy,\n\t\t\twidth: bgWidth,\n\t\t\theight: bgHeight,\n\t\t};\n\t\tconst text = {\n\t\t\ttext: props.text,\n\t\t\tx: cx + PADDING / 2,\n\t\t\ty: cy + fontSize\n\t\t};\n\n\t\treturn {\n\t\t\trect,\n\t\t\ttext\n\t\t};\n\t}\n}\n\nexport default HoverTextNearMouse;\n"]} \ No newline at end of file +{"version":3,"sources":["../../../../../src/lib/interactive/components/HoverTextNearMouse.js"],"names":["React","Component","PropTypes","GenericChartComponent","isDefined","PADDING","MIN_WIDTH","HoverTextNearMouse","props","state","textWidth","undefined","textHeight","saveNode","bind","updateTextSize","renderSVG","node","textNode","bgWidth","bgHeight","getBBox","width","height","setState","moreProps","fontFamily","fontSize","fill","bgFill","bgOpacity","textMetaData","helper","getBgWidth","getBgHeight","rect","text","x","y","numberOrString","oneOfType","number","oneOf","propTypes","string","isRequired","show","bool","defaultProps","mouseXY","chartConfig","mouseInsideCanvas","cx","cy"],"mappings":"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","file":"HoverTextNearMouse.js","sourcesContent":["import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport GenericChartComponent from \"../../GenericChartComponent\";\nimport { isDefined } from \"../../utils\";\n\nconst PADDING = 10;\nconst MIN_WIDTH = PADDING;\n\nclass HoverTextNearMouse extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\n\t\tthis.state = {\n\t\t\ttextWidth: undefined,\n\t\t\ttextHeight: undefined,\n\t\t};\n\n\t\tthis.saveNode = this.saveNode.bind(this);\n\t\tthis.updateTextSize = this.updateTextSize.bind(this);\n\t\tthis.renderSVG = this.renderSVG.bind(this);\n\t}\n\tsaveNode(node) {\n\t\tthis.textNode = node;\n\t}\n\n\tupdateTextSize() {\n\t\tconst { bgWidth, bgHeight } = this.props;\n\t\tif (bgWidth === \"auto\" || bgHeight === \"auto\") {\n\t\t\tconst textNode = this.textNode;\n\t\t\tif (textNode) {\n\t\t\t\tconst { width, height } = textNode.getBBox();\n\t\t\t\tif (this.state.textWidth !== width || this.state.textHeight !== height) {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\ttextWidth: width,\n\t\t\t\t\t\ttextHeight: height\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tcomponentDidMount() {\n\t\tthis.updateTextSize();\n\t}\n\n\tcomponentDidUpdate() {\n\t\tthis.updateTextSize();\n\t}\n\n\tgetBgWidth() {\n\t\tconst { bgWidth } = this.props;\n\t\tconst { textWidth } = this.state;\n\n\t\tif (bgWidth !== \"auto\") {\n\t\t\treturn bgWidth;\n\t\t} else if (textWidth !== undefined) {\n\t\t\treturn textWidth + PADDING;\n\t\t} else {\n\t\t\treturn MIN_WIDTH;\n\t\t}\n\t}\n\n\tgetBgHeight() {\n\t\tconst { bgHeight } = this.props;\n\t\tconst { textHeight } = this.state;\n\n\t\tif (bgHeight !== \"auto\") {\n\t\t\treturn bgHeight;\n\t\t} else if (textHeight !== undefined) {\n\t\t\treturn textHeight + PADDING;\n\t\t} else {\n\t\t\treturn MIN_WIDTH;\n\t\t}\n\t}\n\n\trenderSVG(moreProps) {\n\t\tconst {\n\t\t\tfontFamily,\n\t\t\tfontSize,\n\t\t\tfill,\n\t\t\tbgFill,\n\t\t\tbgOpacity,\n\t\t} = this.props;\n\n\t\t// console.log(moreProps)\n\t\tconst textMetaData = helper({\n\t\t\t...this.props,\n\t\t\tbgWidth: this.getBgWidth(),\n\t\t\tbgHeight: this.getBgHeight()\n\t\t}, moreProps);\n\n\t\tif (isDefined(textMetaData)) {\n\t\t\tconst { rect, text } = textMetaData;\n\t\t\treturn (\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{text.text}\n\t\t\t\t\n\t\t\t);\n\t\t}\n\t}\n\trender() {\n\t\tconst { text } = this.props;\n\t\tif (text) {\n\t\t\treturn ;\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t}\n}\n\nconst numberOrString = PropTypes.oneOfType([\n\tPropTypes.number,\n\tPropTypes.oneOf([\"auto\"]),\n]);\n\nHoverTextNearMouse.propTypes = {\n\tfontFamily: PropTypes.string.isRequired,\n\tfontSize: PropTypes.number.isRequired,\n\tfill: PropTypes.string.isRequired,\n\ttext: PropTypes.string.isRequired,\n\tbgFill: PropTypes.string.isRequired,\n\tbgOpacity: PropTypes.number.isRequired,\n\tbgWidth: numberOrString.isRequired,\n\tbgHeight: numberOrString.isRequired,\n\tshow: PropTypes.bool.isRequired,\n};\n\nHoverTextNearMouse.defaultProps = {\n\tfontFamily: \"Helvetica Neue, Helvetica, Arial, sans-serif\",\n\tfontSize: 12,\n\tfill: \"#000000\",\n\tbgFill: \"#FA9325\",\n\tbgOpacity: 0.5,\n};\n\nfunction helper(props, moreProps) {\n\tconst {\n\t\tshow,\n\t\tbgWidth,\n\t\tbgHeight,\n\t} = props;\n\n\tconst {\n\t\tmouseXY,\n\t\tchartConfig: { height, width },\n\t\tshow: mouseInsideCanvas\n\t} = moreProps;\n\n\tif (show && mouseInsideCanvas) {\n\t\tconst [x, y] = mouseXY;\n\n\t\tconst cx = x < width / 2\n\t\t\t? x + PADDING\n\t\t\t: x - bgWidth - PADDING;\n\n\t\tconst cy = y < height / 2\n\t\t\t? y + PADDING\n\t\t\t: y - bgHeight - PADDING;\n\n\t\tconst rect = {\n\t\t\tx: cx,\n\t\t\ty: cy,\n\t\t\twidth: bgWidth,\n\t\t\theight: bgHeight,\n\t\t};\n\n\t\tconst text = {\n\t\t\ttext: props.text,\n\t\t\tx: cx + PADDING / 2,\n\t\t\ty: cy + bgHeight / 2,\n\t\t};\n\n\t\treturn {\n\t\t\trect,\n\t\t\ttext\n\t\t};\n\t}\n}\n\nexport default HoverTextNearMouse;\n"]} \ No newline at end of file diff --git a/es/lib/interactive/components/InteractiveText.js b/es/lib/interactive/components/InteractiveText.js index 5b030ab..da92d4a 100644 --- a/es/lib/interactive/components/InteractiveText.js +++ b/es/lib/interactive/components/InteractiveText.js @@ -63,6 +63,8 @@ var InteractiveText = function (_Component) { var _props = this.props, bgFill = _props.bgFill, bgOpacity = _props.bgOpacity, + bgStrokeWidth = _props.bgStrokeWidth, + bgStroke = _props.bgStroke, textFill = _props.textFill, fontFamily = _props.fontFamily, fontSize = _props.fontSize, @@ -94,7 +96,8 @@ var InteractiveText = function (_Component) { ctx.fillRect(rect.x, rect.y, rect.width, rect.height); if (selected) { - ctx.strokeStyle = textFill; + ctx.strokeStyle = bgStroke; + ctx.lineWidth = bgStrokeWidth; ctx.strokeRect(rect.x, rect.y, rect.width, rect.height); } @@ -178,6 +181,8 @@ function helper(props, moreProps, textWidth) { InteractiveText.propTypes = { bgFill: PropTypes.string.isRequired, bgOpacity: PropTypes.number.isRequired, + bgStrokeWidth: PropTypes.number.isRequired, + bgStroke: PropTypes.string.isRequired, textFill: PropTypes.string.isRequired, fontFamily: PropTypes.string.isRequired, @@ -208,7 +213,6 @@ InteractiveText.defaultProps = { type: "SD", // standard dev fontWeight: "normal", // standard dev - strokeWidth: 1, tolerance: 4, selected: false }; diff --git a/es/lib/interactive/components/InteractiveText.js.map b/es/lib/interactive/components/InteractiveText.js.map index 5750db3..2967476 100644 --- a/es/lib/interactive/components/InteractiveText.js.map +++ b/es/lib/interactive/components/InteractiveText.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../../../../src/lib/interactive/components/InteractiveText.js"],"names":["React","Component","PropTypes","GenericChartComponent","getMouseCanvas","isDefined","noop","hexToRGBA","InteractiveText","props","calculateTextWidth","renderSVG","bind","drawOnCanvas","isHover","moreProps","onHover","textWidth","helper","rect","mouseXY","x","y","width","height","nextProps","text","fontStyle","fontWeight","fontSize","fontFamily","ctx","bgFill","bgOpacity","textFill","font","measureText","selected","fillStyle","beginPath","fillRect","strokeStyle","strokeRect","textBaseline","textAlign","fillText","Error","interactiveCursorClass","onUnHover","onDragStart","onDrag","onDragComplete","position","xScale","yScale","chartConfig","xValue","yValue","propTypes","string","isRequired","number","oneOfType","func","defaultClassName","tolerance","bool","defaultProps","type","strokeWidth"],"mappings":"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","file":"InteractiveText.js","sourcesContent":["import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport GenericChartComponent from \"../../GenericChartComponent\";\nimport { getMouseCanvas } from \"../../GenericComponent\";\n\nimport { isDefined, noop, hexToRGBA } from \"../../utils\";\n\nclass InteractiveText extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\n\t\tthis.calculateTextWidth = true;\n\n\t\tthis.renderSVG = this.renderSVG.bind(this);\n\t\tthis.drawOnCanvas = this.drawOnCanvas.bind(this);\n\t\tthis.isHover = this.isHover.bind(this);\n\t}\n\tisHover(moreProps) {\n\t\tconst { onHover } = this.props;\n\n\t\tif (\n\t\t\tisDefined(onHover)\n\t\t\t&& isDefined(this.textWidth)\n\t\t\t&& !this.calculateTextWidth\n\t\t) {\n\t\t\tconst { rect } = helper(this.props, moreProps, this.textWidth);\n\t\t\tconst { mouseXY: [x, y] } = moreProps;\n\n\t\t\tif (\n\t\t\t\tx >= rect.x\n\t\t\t\t&& y >= rect.y\n\t\t\t\t&& x <= rect.x + rect.width\n\t\t\t\t&& y <= rect.y + rect.height\n\t\t\t) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\tcomponentWillReceiveProps(nextProps) {\n\t\tthis.calculateTextWidth = (\n\t\t\tnextProps.text !== this.props.text\n\t\t\t|| nextProps.fontStyle !== this.props.fontStyle\n\t\t\t|| nextProps.fontWeight !== this.props.fontWeight\n\t\t\t|| nextProps.fontSize !== this.props.fontSize\n\t\t\t|| nextProps.fontFamily !== this.props.fontFamily\n\t\t);\n\t}\n\tdrawOnCanvas(ctx, moreProps) {\n\t\tconst {\n\t\t\tbgFill,\n\t\t\tbgOpacity,\n\t\t\ttextFill,\n\t\t\tfontFamily,\n\t\t\tfontSize,\n\t\t\tfontStyle,\n\t\t\tfontWeight,\n\t\t\ttext,\n\t\t} = this.props;\n\n\t\tif (this.calculateTextWidth) {\n\t\t\tctx.font = `${fontStyle} ${fontWeight} ${fontSize}px ${fontFamily}`;\n\t\t\tconst { width } = ctx.measureText(text);\n\t\t\tthis.textWidth = width;\n\t\t\tthis.calculateTextWidth = false;\n\t\t}\n\n\t\tconst { selected } = this.props;\n\n\t\tconst { x, y, rect } = helper(this.props, moreProps, this.textWidth);\n\n\t\tctx.fillStyle = hexToRGBA(bgFill, bgOpacity);\n\n\t\tctx.beginPath();\n\t\tctx.fillRect(rect.x, rect.y, rect.width, rect.height);\n\n\t\tif (selected) {\n\t\t\tctx.strokeStyle = textFill;\n\t\t\tctx.strokeRect(rect.x, rect.y, rect.width, rect.height);\n\t\t}\n\n\t\tctx.fillStyle = textFill;\n\t\tctx.textBaseline = \"middle\";\n\t\tctx.textAlign = \"center\";\n\t\tctx.font = `${fontStyle} ${fontWeight} ${fontSize}px ${fontFamily}`;\n\n\t\tctx.beginPath();\n\t\tctx.fillText(text, x, y);\n\t}\n\trenderSVG() {\n\t\tthrow new Error(\"svg not implemented\");\n\t}\n\trender() {\n\t\tconst { selected, interactiveCursorClass } = this.props;\n\t\tconst { onHover, onUnHover } = this.props;\n\t\tconst { onDragStart, onDrag, onDragComplete } = this.props;\n\n\t\treturn ;\n\t}\n}\n\nfunction helper(props, moreProps, textWidth) {\n\tconst { position, fontSize } = props;\n\n\tconst { xScale, chartConfig: { yScale } } = moreProps;\n\n\tconst [xValue, yValue] = position;\n\tconst x = xScale(xValue);\n\tconst y = yScale(yValue);\n\n\tconst rect = {\n\t\tx: x - textWidth / 2 - fontSize,\n\t\ty: y - fontSize,\n\t\twidth: textWidth + fontSize * 2,\n\t\theight: fontSize * 2,\n\t};\n\n\treturn {\n\t\tx, y, rect\n\t};\n}\n\nInteractiveText.propTypes = {\n\tbgFill: PropTypes.string.isRequired,\n\tbgOpacity: PropTypes.number.isRequired,\n\n\ttextFill: PropTypes.string.isRequired,\n\tfontFamily: PropTypes.string.isRequired,\n\tfontSize: PropTypes.number.isRequired,\n\tfontWeight: PropTypes.oneOfType([\n\t\tPropTypes.number,\n\t\tPropTypes.string,\n\t]).isRequired,\n\tfontStyle: PropTypes.string.isRequired,\n\n\ttext: PropTypes.string.isRequired,\n\n\tonDragStart: PropTypes.func.isRequired,\n\tonDrag: PropTypes.func.isRequired,\n\tonDragComplete: PropTypes.func.isRequired,\n\tonHover: PropTypes.func,\n\tonUnHover: PropTypes.func,\n\n\tdefaultClassName: PropTypes.string,\n\tinteractiveCursorClass: PropTypes.string,\n\n\ttolerance: PropTypes.number.isRequired,\n\tselected: PropTypes.bool.isRequired,\n};\n\nInteractiveText.defaultProps = {\n\tonDragStart: noop,\n\tonDrag: noop,\n\tonDragComplete: noop,\n\n\ttype: \"SD\", // standard dev\n\tfontWeight: \"normal\", // standard dev\n\n\tstrokeWidth: 1,\n\ttolerance: 4,\n\tselected: false,\n};\n\nexport default InteractiveText;"]} \ No newline at end of file +{"version":3,"sources":["../../../../../src/lib/interactive/components/InteractiveText.js"],"names":["React","Component","PropTypes","GenericChartComponent","getMouseCanvas","isDefined","noop","hexToRGBA","InteractiveText","props","calculateTextWidth","renderSVG","bind","drawOnCanvas","isHover","moreProps","onHover","textWidth","helper","rect","mouseXY","x","y","width","height","nextProps","text","fontStyle","fontWeight","fontSize","fontFamily","ctx","bgFill","bgOpacity","bgStrokeWidth","bgStroke","textFill","font","measureText","selected","fillStyle","beginPath","fillRect","strokeStyle","lineWidth","strokeRect","textBaseline","textAlign","fillText","Error","interactiveCursorClass","onUnHover","onDragStart","onDrag","onDragComplete","position","xScale","yScale","chartConfig","xValue","yValue","propTypes","string","isRequired","number","oneOfType","func","defaultClassName","tolerance","bool","defaultProps","type"],"mappings":"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","file":"InteractiveText.js","sourcesContent":["import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport GenericChartComponent from \"../../GenericChartComponent\";\nimport { getMouseCanvas } from \"../../GenericComponent\";\n\nimport { isDefined, noop, hexToRGBA } from \"../../utils\";\n\nclass InteractiveText extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\n\t\tthis.calculateTextWidth = true;\n\n\t\tthis.renderSVG = this.renderSVG.bind(this);\n\t\tthis.drawOnCanvas = this.drawOnCanvas.bind(this);\n\t\tthis.isHover = this.isHover.bind(this);\n\t}\n\tisHover(moreProps) {\n\t\tconst { onHover } = this.props;\n\n\t\tif (\n\t\t\tisDefined(onHover)\n\t\t\t&& isDefined(this.textWidth)\n\t\t\t&& !this.calculateTextWidth\n\t\t) {\n\t\t\tconst { rect } = helper(this.props, moreProps, this.textWidth);\n\t\t\tconst { mouseXY: [x, y] } = moreProps;\n\n\t\t\tif (\n\t\t\t\tx >= rect.x\n\t\t\t\t&& y >= rect.y\n\t\t\t\t&& x <= rect.x + rect.width\n\t\t\t\t&& y <= rect.y + rect.height\n\t\t\t) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\tcomponentWillReceiveProps(nextProps) {\n\t\tthis.calculateTextWidth = (\n\t\t\tnextProps.text !== this.props.text\n\t\t\t|| nextProps.fontStyle !== this.props.fontStyle\n\t\t\t|| nextProps.fontWeight !== this.props.fontWeight\n\t\t\t|| nextProps.fontSize !== this.props.fontSize\n\t\t\t|| nextProps.fontFamily !== this.props.fontFamily\n\t\t);\n\t}\n\tdrawOnCanvas(ctx, moreProps) {\n\t\tconst {\n\t\t\tbgFill,\n\t\t\tbgOpacity,\n\t\t\tbgStrokeWidth,\n\t\t\tbgStroke,\n\t\t\ttextFill,\n\t\t\tfontFamily,\n\t\t\tfontSize,\n\t\t\tfontStyle,\n\t\t\tfontWeight,\n\t\t\ttext,\n\t\t} = this.props;\n\n\t\tif (this.calculateTextWidth) {\n\t\t\tctx.font = `${fontStyle} ${fontWeight} ${fontSize}px ${fontFamily}`;\n\t\t\tconst { width } = ctx.measureText(text);\n\t\t\tthis.textWidth = width;\n\t\t\tthis.calculateTextWidth = false;\n\t\t}\n\n\t\tconst { selected } = this.props;\n\n\t\tconst { x, y, rect } = helper(this.props, moreProps, this.textWidth);\n\n\t\tctx.fillStyle = hexToRGBA(bgFill, bgOpacity);\n\n\t\tctx.beginPath();\n\t\tctx.fillRect(rect.x, rect.y, rect.width, rect.height);\n\n\t\tif (selected) {\n\t\t\tctx.strokeStyle = bgStroke;\n\t\t\tctx.lineWidth = bgStrokeWidth;\n\t\t\tctx.strokeRect(rect.x, rect.y, rect.width, rect.height);\n\t\t}\n\n\t\tctx.fillStyle = textFill;\n\t\tctx.textBaseline = \"middle\";\n\t\tctx.textAlign = \"center\";\n\t\tctx.font = `${fontStyle} ${fontWeight} ${fontSize}px ${fontFamily}`;\n\n\t\tctx.beginPath();\n\t\tctx.fillText(text, x, y);\n\t}\n\trenderSVG() {\n\t\tthrow new Error(\"svg not implemented\");\n\t}\n\trender() {\n\t\tconst { selected, interactiveCursorClass } = this.props;\n\t\tconst { onHover, onUnHover } = this.props;\n\t\tconst { onDragStart, onDrag, onDragComplete } = this.props;\n\n\t\treturn ;\n\t}\n}\n\nfunction helper(props, moreProps, textWidth) {\n\tconst { position, fontSize } = props;\n\n\tconst { xScale, chartConfig: { yScale } } = moreProps;\n\n\tconst [xValue, yValue] = position;\n\tconst x = xScale(xValue);\n\tconst y = yScale(yValue);\n\n\tconst rect = {\n\t\tx: x - textWidth / 2 - fontSize,\n\t\ty: y - fontSize,\n\t\twidth: textWidth + fontSize * 2,\n\t\theight: fontSize * 2,\n\t};\n\n\treturn {\n\t\tx, y, rect\n\t};\n}\n\nInteractiveText.propTypes = {\n\tbgFill: PropTypes.string.isRequired,\n\tbgOpacity: PropTypes.number.isRequired,\n\tbgStrokeWidth: PropTypes.number.isRequired,\n\tbgStroke: PropTypes.string.isRequired,\n\n\ttextFill: PropTypes.string.isRequired,\n\tfontFamily: PropTypes.string.isRequired,\n\tfontSize: PropTypes.number.isRequired,\n\tfontWeight: PropTypes.oneOfType([\n\t\tPropTypes.number,\n\t\tPropTypes.string,\n\t]).isRequired,\n\tfontStyle: PropTypes.string.isRequired,\n\n\ttext: PropTypes.string.isRequired,\n\n\tonDragStart: PropTypes.func.isRequired,\n\tonDrag: PropTypes.func.isRequired,\n\tonDragComplete: PropTypes.func.isRequired,\n\tonHover: PropTypes.func,\n\tonUnHover: PropTypes.func,\n\n\tdefaultClassName: PropTypes.string,\n\tinteractiveCursorClass: PropTypes.string,\n\n\ttolerance: PropTypes.number.isRequired,\n\tselected: PropTypes.bool.isRequired,\n};\n\nInteractiveText.defaultProps = {\n\tonDragStart: noop,\n\tonDrag: noop,\n\tonDragComplete: noop,\n\n\ttype: \"SD\", // standard dev\n\tfontWeight: \"normal\", // standard dev\n\n\ttolerance: 4,\n\tselected: false,\n};\n\nexport default InteractiveText;"]} \ No newline at end of file diff --git a/es/lib/interactive/components/LinearRegressionChannelWithArea.js b/es/lib/interactive/components/LinearRegressionChannelWithArea.js index 26837af..c8cfea9 100644 --- a/es/lib/interactive/components/LinearRegressionChannelWithArea.js +++ b/es/lib/interactive/components/LinearRegressionChannelWithArea.js @@ -48,9 +48,14 @@ var LinearRegressionChannelWithArea = function (_Component) { x1 = _helper.x1, y1 = _helper.y1, x2 = _helper.x2, - y2 = _helper.y2; + y2 = _helper.y2, + dy = _helper.dy; - var hovering = isHovering2([x1, y1], [x2, y2], mouseXY, tolerance); + var yDiffs = [-dy, 0, dy]; + + var hovering = yDiffs.reduce(function (result, diff) { + return result || isHovering2([x1, y1 + diff], [x2, y2 + diff], mouseXY, tolerance); + }, false); return hovering; } return false; diff --git a/es/lib/interactive/components/LinearRegressionChannelWithArea.js.map b/es/lib/interactive/components/LinearRegressionChannelWithArea.js.map index 5ecde72..f55ade3 100644 --- a/es/lib/interactive/components/LinearRegressionChannelWithArea.js.map +++ b/es/lib/interactive/components/LinearRegressionChannelWithArea.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../../../../src/lib/interactive/components/LinearRegressionChannelWithArea.js"],"names":["React","Component","PropTypes","sum","deviation","path","d3Path","GenericChartComponent","getMouseCanvas","isHovering2","isDefined","getClosestItemIndexes","noop","zipper","hexToRGBA","LinearRegressionChannelWithArea","props","renderSVG","bind","drawOnCanvas","isHover","moreProps","tolerance","onHover","mouseXY","helper","x1","y1","x2","y2","hovering","ctx","stroke","strokeWidth","fillOpacity","strokeOpacity","fill","dy","lineWidth","strokeStyle","fillStyle","beginPath","moveTo","lineTo","closePath","line","toString","selected","interactiveCursorClass","onUnHover","edge1Provider","edge2Provider","x1Value","x2Value","type","xScale","yScale","chartConfig","fullData","xAccessor","left","right","startIndex","Math","min","endIndex","max","array","slice","xs","map","d","valueOf","ys","close","n","length","combine","x","y","xys","xSquareds","pow","b","a","newy1","newy2","stdDev","propTypes","any","isRequired","oneOf","string","number","onDragStart","func","onDrag","onDragComplete","defaultClassName","bool","defaultProps"],"mappings":"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","file":"LinearRegressionChannelWithArea.js","sourcesContent":["import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { sum, deviation } from \"d3-array\";\nimport { path as d3Path } from \"d3-path\";\n\nimport GenericChartComponent from \"../../GenericChartComponent\";\nimport { getMouseCanvas } from \"../../GenericComponent\";\nimport { isHovering2 } from \"./StraightLine\";\n\nimport { isDefined, getClosestItemIndexes, noop, zipper, hexToRGBA } from \"../../utils\";\n\nclass LinearRegressionChannelWithArea extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\n\t\tthis.renderSVG = this.renderSVG.bind(this);\n\t\tthis.drawOnCanvas = this.drawOnCanvas.bind(this);\n\t\tthis.isHover = this.isHover.bind(this);\n\t}\n\tisHover(moreProps) {\n\t\tconst { tolerance, onHover } = this.props;\n\n\t\tif (isDefined(onHover)) {\n\t\t\tconst { mouseXY } = moreProps;\n\n\t\t\tconst { x1, y1, x2, y2 } = helper(this.props, moreProps);\n\n\t\t\tconst hovering = isHovering2(\n\t\t\t\t[x1, y1], [x2, y2], mouseXY, tolerance\n\t\t\t);\n\t\t\treturn hovering;\n\t\t}\n\t\treturn false;\n\t}\n\tdrawOnCanvas(ctx, moreProps) {\n\t\tconst { stroke, strokeWidth, fillOpacity, strokeOpacity, fill } = this.props;\n\t\tconst { x1, y1, x2, y2, dy } = helper(this.props, moreProps);\n\n\t\tctx.lineWidth = strokeWidth;\n\t\tctx.strokeStyle = hexToRGBA(stroke, strokeOpacity);\n\t\tctx.fillStyle = hexToRGBA(fill, fillOpacity);\n\n\t\tctx.beginPath();\n\t\tctx.moveTo(x1, y1 - dy);\n\t\tctx.lineTo(x2, y2 - dy);\n\t\tctx.stroke();\n\n\t\tctx.beginPath();\n\t\tctx.moveTo(x2, y2 + dy);\n\t\tctx.lineTo(x1, y1 + dy);\n\t\tctx.stroke();\n\n\t\tctx.beginPath();\n\t\tctx.moveTo(x1, y1 - dy);\n\t\tctx.lineTo(x2, y2 - dy);\n\t\tctx.lineTo(x2, y2 + dy);\n\t\tctx.lineTo(x1, y1 + dy);\n\t\tctx.closePath();\n\t\tctx.fill();\n\n\t\tctx.beginPath();\n\t\tctx.moveTo(x2, y2);\n\t\tctx.lineTo(x1, y1);\n\t\tctx.stroke();\n\t}\n\trenderSVG(moreProps) {\n\t\tconst { stroke, strokeWidth, fillOpacity, strokeOpacity, fill } = this.props;\n\t\tconst { x1, y1, x2, y2, dy } = helper(this.props, moreProps);\n\t\tconst line = {\n\t\t\tstrokeWidth,\n\t\t\tstroke,\n\t\t\tstrokeOpacity,\n\t\t};\n\t\tconst ctx = d3Path();\n\t\tctx.moveTo(x1, y1 - dy);\n\t\tctx.lineTo(x2, y2 - dy);\n\t\tctx.lineTo(x2, y2 + dy);\n\t\tctx.lineTo(x1, y1 + dy);\n\t\tctx.closePath();\n\t\treturn (\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t);\n\t}\n\trender() {\n\t\tconst { selected, interactiveCursorClass } = this.props;\n\t\tconst { onHover, onUnHover } = this.props;\n\n\t\treturn ;\n\t}\n}\n\nexport function edge1Provider(props) {\n\treturn function(moreProps) {\n\t\tconst { x1, y1 } = helper(props, moreProps);\n\t\treturn [x1, y1];\n\t};\n}\n\nexport function edge2Provider(props) {\n\treturn function(moreProps) {\n\t\tconst { x2, y2 } = helper(props, moreProps);\n\t\treturn [x2, y2];\n\t};\n}\n\n\nfunction helper(props, moreProps) {\n\tconst { x1Value, x2Value, type } = props;\n\n\tconst { xScale, chartConfig: { yScale }, fullData } = moreProps;\n\tconst { xAccessor } = moreProps;\n\n\t/*\n\thttp://www.metastock.com/Customer/Resources/TAAZ/?p=65\n\ty = a + bx\n\tn = length of array\n\tb = (n * sum(x*y) - sum(xs) * sum(ys)) / (n * sum(xSquareds) - (sum(xs) ^ 2))\n\ta = (sum of closes)\n\t*/\n\n\tconst { left } = getClosestItemIndexes(fullData, x1Value, xAccessor);\n\tconst { right } = getClosestItemIndexes(fullData, x2Value, xAccessor);\n\n\tconst startIndex = Math.min(left, right);\n\tconst endIndex = Math.max(left, right) + 1;\n\n\tconst array = fullData.slice(startIndex, endIndex);\n\n\tconst xs = array.map(d => xAccessor(d).valueOf());\n\tconst ys = array.map(d => d.close);\n\tconst n = array.length;\n\n\tconst combine = zipper()\n\t\t.combine((x, y) => x * y);\n\n\tconst xys = combine(xs, ys);\n\tconst xSquareds = xs.map(x => Math.pow(x, 2));\n\n\tconst b = (n * sum(xys) - sum(xs) * sum(ys)) / (n * sum(xSquareds) - Math.pow(sum(xs), 2));\n\tconst a = (sum(ys) - b * sum(xs)) / n;\n\n\tconst newy1 = a + b * x1Value;\n\tconst newy2 = a + b * x2Value;\n\n\tconst x1 = xScale(x1Value);\n\tconst y1 = yScale(newy1);\n\tconst x2 = xScale(x2Value);\n\tconst y2 = yScale(newy2);\n\n\tconst stdDev = type === \"SD\"\n\t\t? deviation(array, d => d.close)\n\t\t: 0;\n\n\tconst dy = yScale(newy1 - stdDev) - y1;\n\n\treturn {\n\t\tx1, y1, x2, y2, dy\n\t};\n}\n\nLinearRegressionChannelWithArea.propTypes = {\n\tx1Value: PropTypes.any.isRequired,\n\tx2Value: PropTypes.any.isRequired,\n\n\ttype: PropTypes.oneOf([\n\t\t\"SD\", // standard deviation channel\n\t\t\"Raff\", // Raff Regression Channel\n\t]).isRequired,\n\n\tinteractiveCursorClass: PropTypes.string,\n\tstroke: PropTypes.string.isRequired,\n\tstrokeWidth: PropTypes.number.isRequired,\n\tfill: PropTypes.string.isRequired,\n\tfillOpacity: PropTypes.number.isRequired,\n\tstrokeOpacity: PropTypes.number.isRequired,\n\n\tonDragStart: PropTypes.func.isRequired,\n\tonDrag: PropTypes.func.isRequired,\n\tonDragComplete: PropTypes.func.isRequired,\n\n\tonHover: PropTypes.func,\n\tonUnHover: PropTypes.func,\n\n\tdefaultClassName: PropTypes.string,\n\n\ttolerance: PropTypes.number.isRequired,\n\tselected: PropTypes.bool.isRequired,\n};\n\nLinearRegressionChannelWithArea.defaultProps = {\n\tonDragStart: noop,\n\tonDrag: noop,\n\tonDragComplete: noop,\n\n\ttype: \"SD\", // standard dev\n\n\tstrokeWidth: 1,\n\ttolerance: 4,\n\tselected: false,\n};\n\nexport default LinearRegressionChannelWithArea;"]} \ No newline at end of file +{"version":3,"sources":["../../../../../src/lib/interactive/components/LinearRegressionChannelWithArea.js"],"names":["React","Component","PropTypes","sum","deviation","path","d3Path","GenericChartComponent","getMouseCanvas","isHovering2","isDefined","getClosestItemIndexes","noop","zipper","hexToRGBA","LinearRegressionChannelWithArea","props","renderSVG","bind","drawOnCanvas","isHover","moreProps","tolerance","onHover","mouseXY","helper","x1","y1","x2","y2","dy","yDiffs","hovering","reduce","result","diff","ctx","stroke","strokeWidth","fillOpacity","strokeOpacity","fill","lineWidth","strokeStyle","fillStyle","beginPath","moveTo","lineTo","closePath","line","toString","selected","interactiveCursorClass","onUnHover","edge1Provider","edge2Provider","x1Value","x2Value","type","xScale","yScale","chartConfig","fullData","xAccessor","left","right","startIndex","Math","min","endIndex","max","array","slice","xs","map","d","valueOf","ys","close","n","length","combine","x","y","xys","xSquareds","pow","b","a","newy1","newy2","stdDev","propTypes","any","isRequired","oneOf","string","number","onDragStart","func","onDrag","onDragComplete","defaultClassName","bool","defaultProps"],"mappings":"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","file":"LinearRegressionChannelWithArea.js","sourcesContent":["import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { sum, deviation } from \"d3-array\";\nimport { path as d3Path } from \"d3-path\";\n\nimport GenericChartComponent from \"../../GenericChartComponent\";\nimport { getMouseCanvas } from \"../../GenericComponent\";\nimport { isHovering2 } from \"./StraightLine\";\n\nimport { isDefined, getClosestItemIndexes, noop, zipper, hexToRGBA } from \"../../utils\";\n\nclass LinearRegressionChannelWithArea extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\n\t\tthis.renderSVG = this.renderSVG.bind(this);\n\t\tthis.drawOnCanvas = this.drawOnCanvas.bind(this);\n\t\tthis.isHover = this.isHover.bind(this);\n\t}\n\tisHover(moreProps) {\n\t\tconst { tolerance, onHover } = this.props;\n\n\t\tif (isDefined(onHover)) {\n\t\t\tconst { mouseXY } = moreProps;\n\n\t\t\tconst { x1, y1, x2, y2, dy } = helper(this.props, moreProps);\n\t\t\tconst yDiffs = [-dy, 0, dy];\n\n\t\t\tconst hovering = yDiffs.reduce((result, diff) => result || isHovering2(\n\t\t\t\t[x1, y1 + diff], [x2, y2 + diff], mouseXY, tolerance\n\t\t\t), false);\n\t\t\treturn hovering;\n\t\t}\n\t\treturn false;\n\t}\n\tdrawOnCanvas(ctx, moreProps) {\n\t\tconst { stroke, strokeWidth, fillOpacity, strokeOpacity, fill } = this.props;\n\t\tconst { x1, y1, x2, y2, dy } = helper(this.props, moreProps);\n\n\t\tctx.lineWidth = strokeWidth;\n\t\tctx.strokeStyle = hexToRGBA(stroke, strokeOpacity);\n\t\tctx.fillStyle = hexToRGBA(fill, fillOpacity);\n\n\t\tctx.beginPath();\n\t\tctx.moveTo(x1, y1 - dy);\n\t\tctx.lineTo(x2, y2 - dy);\n\t\tctx.stroke();\n\n\t\tctx.beginPath();\n\t\tctx.moveTo(x2, y2 + dy);\n\t\tctx.lineTo(x1, y1 + dy);\n\t\tctx.stroke();\n\n\t\tctx.beginPath();\n\t\tctx.moveTo(x1, y1 - dy);\n\t\tctx.lineTo(x2, y2 - dy);\n\t\tctx.lineTo(x2, y2 + dy);\n\t\tctx.lineTo(x1, y1 + dy);\n\t\tctx.closePath();\n\t\tctx.fill();\n\n\t\tctx.beginPath();\n\t\tctx.moveTo(x2, y2);\n\t\tctx.lineTo(x1, y1);\n\t\tctx.stroke();\n\t}\n\trenderSVG(moreProps) {\n\t\tconst { stroke, strokeWidth, fillOpacity, strokeOpacity, fill } = this.props;\n\t\tconst { x1, y1, x2, y2, dy } = helper(this.props, moreProps);\n\t\tconst line = {\n\t\t\tstrokeWidth,\n\t\t\tstroke,\n\t\t\tstrokeOpacity,\n\t\t};\n\t\tconst ctx = d3Path();\n\t\tctx.moveTo(x1, y1 - dy);\n\t\tctx.lineTo(x2, y2 - dy);\n\t\tctx.lineTo(x2, y2 + dy);\n\t\tctx.lineTo(x1, y1 + dy);\n\t\tctx.closePath();\n\t\treturn (\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t);\n\t}\n\trender() {\n\t\tconst { selected, interactiveCursorClass } = this.props;\n\t\tconst { onHover, onUnHover } = this.props;\n\n\t\treturn ;\n\t}\n}\n\nexport function edge1Provider(props) {\n\treturn function(moreProps) {\n\t\tconst { x1, y1 } = helper(props, moreProps);\n\t\treturn [x1, y1];\n\t};\n}\n\nexport function edge2Provider(props) {\n\treturn function(moreProps) {\n\t\tconst { x2, y2 } = helper(props, moreProps);\n\t\treturn [x2, y2];\n\t};\n}\n\n\nfunction helper(props, moreProps) {\n\tconst { x1Value, x2Value, type } = props;\n\n\tconst { xScale, chartConfig: { yScale }, fullData } = moreProps;\n\tconst { xAccessor } = moreProps;\n\n\t/*\n\thttp://www.metastock.com/Customer/Resources/TAAZ/?p=65\n\ty = a + bx\n\tn = length of array\n\tb = (n * sum(x*y) - sum(xs) * sum(ys)) / (n * sum(xSquareds) - (sum(xs) ^ 2))\n\ta = (sum of closes)\n\t*/\n\n\tconst { left } = getClosestItemIndexes(fullData, x1Value, xAccessor);\n\tconst { right } = getClosestItemIndexes(fullData, x2Value, xAccessor);\n\n\tconst startIndex = Math.min(left, right);\n\tconst endIndex = Math.max(left, right) + 1;\n\n\tconst array = fullData.slice(startIndex, endIndex);\n\n\tconst xs = array.map(d => xAccessor(d).valueOf());\n\tconst ys = array.map(d => d.close);\n\tconst n = array.length;\n\n\tconst combine = zipper()\n\t\t.combine((x, y) => x * y);\n\n\tconst xys = combine(xs, ys);\n\tconst xSquareds = xs.map(x => Math.pow(x, 2));\n\n\tconst b = (n * sum(xys) - sum(xs) * sum(ys)) / (n * sum(xSquareds) - Math.pow(sum(xs), 2));\n\tconst a = (sum(ys) - b * sum(xs)) / n;\n\n\tconst newy1 = a + b * x1Value;\n\tconst newy2 = a + b * x2Value;\n\n\tconst x1 = xScale(x1Value);\n\tconst y1 = yScale(newy1);\n\tconst x2 = xScale(x2Value);\n\tconst y2 = yScale(newy2);\n\n\tconst stdDev = type === \"SD\"\n\t\t? deviation(array, d => d.close)\n\t\t: 0;\n\n\tconst dy = yScale(newy1 - stdDev) - y1;\n\n\treturn {\n\t\tx1, y1, x2, y2, dy\n\t};\n}\n\nLinearRegressionChannelWithArea.propTypes = {\n\tx1Value: PropTypes.any.isRequired,\n\tx2Value: PropTypes.any.isRequired,\n\n\ttype: PropTypes.oneOf([\n\t\t\"SD\", // standard deviation channel\n\t\t\"Raff\", // Raff Regression Channel\n\t]).isRequired,\n\n\tinteractiveCursorClass: PropTypes.string,\n\tstroke: PropTypes.string.isRequired,\n\tstrokeWidth: PropTypes.number.isRequired,\n\tfill: PropTypes.string.isRequired,\n\tfillOpacity: PropTypes.number.isRequired,\n\tstrokeOpacity: PropTypes.number.isRequired,\n\n\tonDragStart: PropTypes.func.isRequired,\n\tonDrag: PropTypes.func.isRequired,\n\tonDragComplete: PropTypes.func.isRequired,\n\n\tonHover: PropTypes.func,\n\tonUnHover: PropTypes.func,\n\n\tdefaultClassName: PropTypes.string,\n\n\ttolerance: PropTypes.number.isRequired,\n\tselected: PropTypes.bool.isRequired,\n};\n\nLinearRegressionChannelWithArea.defaultProps = {\n\tonDragStart: noop,\n\tonDrag: noop,\n\tonDragComplete: noop,\n\n\ttype: \"SD\", // standard dev\n\n\tstrokeWidth: 1,\n\ttolerance: 4,\n\tselected: false,\n};\n\nexport default LinearRegressionChannelWithArea;"]} \ No newline at end of file diff --git a/es/lib/interactive/wrapper/EachFibRetracement.js b/es/lib/interactive/wrapper/EachFibRetracement.js index 8afff1b..0003a56 100644 --- a/es/lib/interactive/wrapper/EachFibRetracement.js +++ b/es/lib/interactive/wrapper/EachFibRetracement.js @@ -239,7 +239,9 @@ var EachFibRetracement = function (_Component) { var lines = helper({ x1: x1, x2: x2, y1: y1, y2: y2 }); var hoverTextEnabled = hoverText.enable, - restHoverTextProps = _objectWithoutProperties(hoverText, ["enable"]); + hoverTextSelected = hoverText.selectedText, + hoverTextUnselected = hoverText.text, + restHoverTextProps = _objectWithoutProperties(hoverText, ["enable", "selectedText", "text"]); var lineType = type === "EXTEND" ? "XLINE" : type === "BOUND" ? "LINE" : type; var dir = head(lines).y1 > last(lines).y1 ? 3 : -1.3; @@ -341,12 +343,14 @@ var EachFibRetracement = function (_Component) { strokeWidth: edgeStrokeWidth, interactiveCursorClass: interactiveEdgeCursorClass, onDrag: edge2DragHandler, - onDragComplete: onDragComplete }), - React.createElement(HoverTextNearMouse, _extends({ - show: hoverTextEnabled && hover && !selected - }, restHoverTextProps)) + onDragComplete: onDragComplete }) ); - }) + }), + React.createElement(HoverTextNearMouse, _extends({ + show: hoverTextEnabled && hover + }, restHoverTextProps, { + text: selected ? hoverTextSelected : hoverTextUnselected + })) ); } }]); diff --git a/es/lib/interactive/wrapper/EachFibRetracement.js.map b/es/lib/interactive/wrapper/EachFibRetracement.js.map index 4283bd4..2abfb0c 100644 --- a/es/lib/interactive/wrapper/EachFibRetracement.js.map +++ b/es/lib/interactive/wrapper/EachFibRetracement.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../../../../src/lib/interactive/wrapper/EachFibRetracement.js"],"names":["React","Component","PropTypes","head","last","noop","getXValue","saveNodeType","isHover","getNewXY","StraightLine","generateLine","ClickableCircle","HoverTextNearMouse","Text","EachFibRetracement","props","handleEdge1Drag","bind","handleEdge2Drag","handleLineNSResizeTop","handleLineNSResizeBottom","handleLineMove","handleLineDragStart","handleHover","nodes","state","hover","moreProps","hovering","setState","x1","y1","x2","y2","dragStart","index","onDrag","x1Value","y1Value","x2Value","y2Value","xScale","yScale","chartConfig","xAccessor","fullData","startPos","mouseXY","dx","dy","newX1Value","newY1Value","invert","newX2Value","newY2Value","interactive","yDisplayFormat","type","appearance","stroke","strokeWidth","strokeOpacity","fontFamily","fontSize","fontFill","edgeStroke","edgeFill","nsEdgeFill","edgeStrokeWidth","r","hoverText","selected","onDragComplete","lines","helper","hoverTextEnabled","enable","restHoverTextProps","lineType","dir","map","line","j","text","y","percent","toFixed","xyProvider","start","end","x","Math","min","firstOrLast","length","interactiveCursorClass","interactiveEdgeCursorClass","dragHandler","edge1DragHandler","edge2DragHandler","hoverHandler","onHover","onUnHover","retracements","each","propTypes","any","isRequired","number","func","string","bool","shape","object","defaultProps","d"],"mappings":"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","file":"EachFibRetracement.js","sourcesContent":["import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport { head, last, noop } from \"../../utils\";\nimport { getXValue } from \"../../utils/ChartDataUtil\";\nimport { saveNodeType, isHover } from \"../utils\";\n\nimport { getNewXY } from \"./EachTrendLine\";\nimport StraightLine, { generateLine } from \"../components/StraightLine\";\nimport ClickableCircle from \"../components/ClickableCircle\";\nimport HoverTextNearMouse from \"../components/HoverTextNearMouse\";\nimport Text from \"../components/Text\";\n\nclass EachFibRetracement extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\n\t\tthis.handleEdge1Drag = this.handleEdge1Drag.bind(this);\n\t\tthis.handleEdge2Drag = this.handleEdge2Drag.bind(this);\n\n\t\tthis.handleLineNSResizeTop = this.handleLineNSResizeTop.bind(this);\n\t\tthis.handleLineNSResizeBottom = this.handleLineNSResizeBottom.bind(this);\n\t\tthis.handleLineMove = this.handleLineMove.bind(this);\n\n\t\tthis.handleLineDragStart = this.handleLineDragStart.bind(this);\n\n\t\tthis.handleHover = this.handleHover.bind(this);\n\n\t\tthis.isHover = isHover.bind(this);\n\t\tthis.saveNodeType = saveNodeType.bind(this);\n\t\tthis.nodes = {};\n\n\t\tthis.state = {\n\t\t\thover: false,\n\t\t};\n\t}\n\thandleHover(moreProps) {\n\t\tif (this.state.hover !== moreProps.hovering) {\n\t\t\tthis.setState({\n\t\t\t\thover: moreProps.hovering\n\t\t\t});\n\t\t}\n\t}\n\thandleLineDragStart() {\n\t\tconst {\n\t\t\tx1, y1, x2, y2,\n\t\t} = this.props;\n\n\t\tthis.dragStart = {\n\t\t\tx1, y1, x2, y2,\n\t\t};\n\t}\n\thandleLineMove(moreProps) {\n\t\tconst { index, onDrag } = this.props;\n\n\t\tconst {\n\t\t\tx1: x1Value, y1: y1Value, x2: x2Value, y2: y2Value,\n\t\t} = this.dragStart;\n\n\t\tconst { xScale, chartConfig: { yScale }, xAccessor, fullData } = moreProps;\n\t\tconst { startPos, mouseXY } = moreProps;\n\n\t\tconst x1 = xScale(x1Value);\n\t\tconst y1 = yScale(y1Value);\n\t\tconst x2 = xScale(x2Value);\n\t\tconst y2 = yScale(y2Value);\n\n\t\tconst dx = startPos[0] - mouseXY[0];\n\t\tconst dy = startPos[1] - mouseXY[1];\n\n\t\tconst newX1Value = getXValue(xScale, xAccessor, [x1 - dx, y1 - dy], fullData);\n\t\tconst newY1Value = yScale.invert(y1 - dy);\n\t\tconst newX2Value = getXValue(xScale, xAccessor, [x2 - dx, y2 - dy], fullData);\n\t\tconst newY2Value = yScale.invert(y2 - dy);\n\n\t\tonDrag(index, {\n\t\t\tx1: newX1Value,\n\t\t\ty1: newY1Value,\n\t\t\tx2: newX2Value,\n\t\t\ty2: newY2Value,\n\t\t});\n\t}\n\thandleLineNSResizeTop(moreProps) {\n\t\tconst { index, onDrag } = this.props;\n\t\tconst {\n\t\t\tx1, x2, y2,\n\t\t} = this.props;\n\n\t\tconst [, y1] = getNewXY(moreProps);\n\n\t\tonDrag(index, {\n\t\t\tx1,\n\t\t\ty1,\n\t\t\tx2,\n\t\t\ty2,\n\t\t});\n\t}\n\thandleLineNSResizeBottom(moreProps) {\n\t\tconst { index, onDrag } = this.props;\n\t\tconst {\n\t\t\tx1, y1, x2,\n\t\t} = this.props;\n\n\t\tconst [, y2] = getNewXY(moreProps);\n\n\t\tonDrag(index, {\n\t\t\tx1,\n\t\t\ty1,\n\t\t\tx2,\n\t\t\ty2,\n\t\t});\n\t}\n\thandleEdge1Drag(moreProps) {\n\t\tconst { index, onDrag } = this.props;\n\t\tconst {\n\t\t\ty1, x2, y2,\n\t\t} = this.props;\n\n\t\tconst [x1] = getNewXY(moreProps);\n\n\t\tonDrag(index, {\n\t\t\tx1,\n\t\t\ty1,\n\t\t\tx2,\n\t\t\ty2,\n\t\t});\n\t}\n\thandleEdge2Drag(moreProps) {\n\t\tconst { index, onDrag } = this.props;\n\t\tconst {\n\t\t\tx1, y1, y2,\n\t\t} = this.props;\n\n\t\tconst [x2] = getNewXY(moreProps);\n\n\t\tonDrag(index, {\n\t\t\tx1,\n\t\t\ty1,\n\t\t\tx2,\n\t\t\ty2,\n\t\t});\n\t}\n\trender() {\n\t\tconst { x1, x2, y1, y2 } = this.props;\n\t\tconst { interactive, yDisplayFormat, type, appearance } = this.props;\n\t\tconst { stroke, strokeWidth, strokeOpacity } = appearance;\n\t\tconst { fontFamily, fontSize, fontFill } = appearance;\n\t\tconst { edgeStroke, edgeFill, nsEdgeFill, edgeStrokeWidth, r } = appearance;\n\t\tconst { hoverText, selected } = this.props;\n\t\tconst { hover } = this.state;\n\t\tconst { onDragComplete } = this.props;\n\t\tconst lines = helper({ x1, x2, y1, y2 });\n\t\tconst { enable: hoverTextEnabled, ...restHoverTextProps } = hoverText;\n\n\t\tconst lineType = type === \"EXTEND\" ? \"XLINE\" : type === \"BOUND\" ? \"LINE\" : type;\n\t\tconst dir = head(lines).y1 > last(lines).y1 ? 3 : -1.3;\n\n\t\treturn \n\t\t\t{lines.map((line, j) => {\n\t\t\t\tconst text = `${yDisplayFormat(line.y)} (${line.percent.toFixed(2)}%)`;\n\n\t\t\t\tconst xyProvider = ({ xScale, chartConfig }) => {\n\t\t\t\t\tconst { yScale } = chartConfig;\n\t\t\t\t\tconst { x1, y1, x2 } = generateLine({\n\t\t\t\t\t\ttype: lineType,\n\t\t\t\t\t\tstart: [line.x1, line.y],\n\t\t\t\t\t\tend: [line.x2, line.y],\n\t\t\t\t\t\txScale,\n\t\t\t\t\t\tyScale,\n\t\t\t\t\t});\n\n\t\t\t\t\tconst x = xScale(Math.min(x1, x2)) + 10;\n\t\t\t\t\tconst y = yScale(y1) + dir * 4;\n\t\t\t\t\treturn [x, y];\n\t\t\t\t};\n\n\t\t\t\tconst firstOrLast = (j === 0) || (j === lines.length - 1);\n\n\t\t\t\tconst interactiveCursorClass = firstOrLast\n\t\t\t\t\t? \"react-stockcharts-ns-resize-cursor\"\n\t\t\t\t\t: \"react-stockcharts-move-cursor\";\n\n\t\t\t\tconst interactiveEdgeCursorClass = firstOrLast\n\t\t\t\t\t? \"react-stockcharts-ns-resize-cursor\"\n\t\t\t\t\t: \"react-stockcharts-ew-resize-cursor\";\n\n\t\t\t\tconst dragHandler = j === 0\n\t\t\t\t\t? this.handleLineNSResizeTop\n\t\t\t\t\t: j === lines.length - 1\n\t\t\t\t\t\t? this.handleLineNSResizeBottom\n\t\t\t\t\t\t: this.handleLineMove;\n\n\t\t\t\tconst edge1DragHandler = j === 0\n\t\t\t\t\t? this.handleLineNSResizeTop\n\t\t\t\t\t: j === lines.length - 1\n\t\t\t\t\t\t? this.handleLineNSResizeBottom\n\t\t\t\t\t\t: this.handleEdge1Drag;\n\t\t\t\tconst edge2DragHandler = j === 0\n\t\t\t\t\t? this.handleLineNSResizeTop\n\t\t\t\t\t: j === lines.length - 1\n\t\t\t\t\t\t? this.handleLineNSResizeBottom\n\t\t\t\t\t\t: this.handleEdge2Drag;\n\n\t\t\t\tconst hoverHandler = interactive\n\t\t\t\t\t? { onHover: this.handleHover, onUnHover: this.handleHover }\n\t\t\t\t\t: {};\n\t\t\t\treturn \n\t\t\t\t\t\n\t\t\t\t\t{text}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t;\n\t\t\t})}\n\t\t;\n\t}\n}\n\n\nfunction helper({ x1, y1, x2, y2 }) {\n\tconst dy = y2 - y1;\n\tconst retracements = [100, 61.8, 50, 38.2, 23.6, 0]\n\t\t.map(each => ({\n\t\t\tpercent: each,\n\t\t\tx1,\n\t\t\tx2,\n\t\t\ty: (y2 - (each / 100) * dy),\n\t\t}));\n\n\treturn retracements;\n}\n\nEachFibRetracement.propTypes = {\n\tx1: PropTypes.any.isRequired,\n\tx2: PropTypes.any.isRequired,\n\ty1: PropTypes.number.isRequired,\n\ty2: PropTypes.number.isRequired,\n\n\tyDisplayFormat: PropTypes.func.isRequired,\n\ttype: PropTypes.string.isRequired,\n\tselected: PropTypes.bool.isRequired,\n\n\tappearance: PropTypes.shape({\n\t\tstroke: PropTypes.string.isRequired,\n\t\tstrokeWidth: PropTypes.number.isRequired,\n\t\tstrokeOpacity: PropTypes.number.isRequired,\n\t\tfontFamily: PropTypes.string.isRequired,\n\t\tfontSize: PropTypes.number.isRequired,\n\t\tfontFill: PropTypes.string.isRequired,\n\t\tedgeStroke: PropTypes.string.isRequired,\n\t\tedgeFill: PropTypes.string.isRequired,\n\t\tnsEdgeFill: PropTypes.string.isRequired,\n\t\tedgeStrokeWidth: PropTypes.number.isRequired,\n\t\tr: PropTypes.number.isRequired,\n\t}).isRequired,\n\n\tinteractive: PropTypes.bool.isRequired,\n\thoverText: PropTypes.object.isRequired,\n\n\tindex: PropTypes.number,\n\tonDrag: PropTypes.func.isRequired,\n\tonDragComplete: PropTypes.func.isRequired,\n};\n\nEachFibRetracement.defaultProps = {\n\tyDisplayFormat: d => d.toFixed(2),\n\tinteractive: true,\n\n\tappearance: {\n\t\tstroke: \"#000000\",\n\t\tstrokeWidth: 1,\n\t\tstrokeOpacity: 1,\n\t\tfontFamily: \"Helvetica Neue, Helvetica, Arial, sans-serif\",\n\t\tfontSize: 10,\n\t\tfontFill: \"#000000\",\n\t\tedgeStroke: \"#000000\",\n\t\tedgeFill: \"#FFFFFF\",\n\t\tnsEdgeFill: \"#000000\",\n\t\tedgeStrokeWidth: 1,\n\t\tr: 5,\n\t},\n\tselected: false,\n\n\tonDrag: noop,\n\tonDragComplete: noop,\n\n\thoverText: {\n\t\tenable: false,\n\t}\n};\n\nexport default EachFibRetracement;\n"]} \ No newline at end of file +{"version":3,"sources":["../../../../../src/lib/interactive/wrapper/EachFibRetracement.js"],"names":["React","Component","PropTypes","head","last","noop","getXValue","saveNodeType","isHover","getNewXY","StraightLine","generateLine","ClickableCircle","HoverTextNearMouse","Text","EachFibRetracement","props","handleEdge1Drag","bind","handleEdge2Drag","handleLineNSResizeTop","handleLineNSResizeBottom","handleLineMove","handleLineDragStart","handleHover","nodes","state","hover","moreProps","hovering","setState","x1","y1","x2","y2","dragStart","index","onDrag","x1Value","y1Value","x2Value","y2Value","xScale","yScale","chartConfig","xAccessor","fullData","startPos","mouseXY","dx","dy","newX1Value","newY1Value","invert","newX2Value","newY2Value","interactive","yDisplayFormat","type","appearance","stroke","strokeWidth","strokeOpacity","fontFamily","fontSize","fontFill","edgeStroke","edgeFill","nsEdgeFill","edgeStrokeWidth","r","hoverText","selected","onDragComplete","lines","helper","hoverTextEnabled","enable","hoverTextSelected","selectedText","hoverTextUnselected","text","restHoverTextProps","lineType","dir","map","line","j","y","percent","toFixed","xyProvider","start","end","x","Math","min","firstOrLast","length","interactiveCursorClass","interactiveEdgeCursorClass","dragHandler","edge1DragHandler","edge2DragHandler","hoverHandler","onHover","onUnHover","retracements","each","propTypes","any","isRequired","number","func","string","bool","shape","object","defaultProps","d"],"mappings":"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","file":"EachFibRetracement.js","sourcesContent":["import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport { head, last, noop } from \"../../utils\";\nimport { getXValue } from \"../../utils/ChartDataUtil\";\nimport { saveNodeType, isHover } from \"../utils\";\n\nimport { getNewXY } from \"./EachTrendLine\";\nimport StraightLine, { generateLine } from \"../components/StraightLine\";\nimport ClickableCircle from \"../components/ClickableCircle\";\nimport HoverTextNearMouse from \"../components/HoverTextNearMouse\";\nimport Text from \"../components/Text\";\n\nclass EachFibRetracement extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\n\t\tthis.handleEdge1Drag = this.handleEdge1Drag.bind(this);\n\t\tthis.handleEdge2Drag = this.handleEdge2Drag.bind(this);\n\n\t\tthis.handleLineNSResizeTop = this.handleLineNSResizeTop.bind(this);\n\t\tthis.handleLineNSResizeBottom = this.handleLineNSResizeBottom.bind(this);\n\t\tthis.handleLineMove = this.handleLineMove.bind(this);\n\n\t\tthis.handleLineDragStart = this.handleLineDragStart.bind(this);\n\n\t\tthis.handleHover = this.handleHover.bind(this);\n\n\t\tthis.isHover = isHover.bind(this);\n\t\tthis.saveNodeType = saveNodeType.bind(this);\n\t\tthis.nodes = {};\n\n\t\tthis.state = {\n\t\t\thover: false,\n\t\t};\n\t}\n\thandleHover(moreProps) {\n\t\tif (this.state.hover !== moreProps.hovering) {\n\t\t\tthis.setState({\n\t\t\t\thover: moreProps.hovering\n\t\t\t});\n\t\t}\n\t}\n\thandleLineDragStart() {\n\t\tconst {\n\t\t\tx1, y1, x2, y2,\n\t\t} = this.props;\n\n\t\tthis.dragStart = {\n\t\t\tx1, y1, x2, y2,\n\t\t};\n\t}\n\thandleLineMove(moreProps) {\n\t\tconst { index, onDrag } = this.props;\n\n\t\tconst {\n\t\t\tx1: x1Value, y1: y1Value, x2: x2Value, y2: y2Value,\n\t\t} = this.dragStart;\n\n\t\tconst { xScale, chartConfig: { yScale }, xAccessor, fullData } = moreProps;\n\t\tconst { startPos, mouseXY } = moreProps;\n\n\t\tconst x1 = xScale(x1Value);\n\t\tconst y1 = yScale(y1Value);\n\t\tconst x2 = xScale(x2Value);\n\t\tconst y2 = yScale(y2Value);\n\n\t\tconst dx = startPos[0] - mouseXY[0];\n\t\tconst dy = startPos[1] - mouseXY[1];\n\n\t\tconst newX1Value = getXValue(xScale, xAccessor, [x1 - dx, y1 - dy], fullData);\n\t\tconst newY1Value = yScale.invert(y1 - dy);\n\t\tconst newX2Value = getXValue(xScale, xAccessor, [x2 - dx, y2 - dy], fullData);\n\t\tconst newY2Value = yScale.invert(y2 - dy);\n\n\t\tonDrag(index, {\n\t\t\tx1: newX1Value,\n\t\t\ty1: newY1Value,\n\t\t\tx2: newX2Value,\n\t\t\ty2: newY2Value,\n\t\t});\n\t}\n\thandleLineNSResizeTop(moreProps) {\n\t\tconst { index, onDrag } = this.props;\n\t\tconst {\n\t\t\tx1, x2, y2,\n\t\t} = this.props;\n\n\t\tconst [, y1] = getNewXY(moreProps);\n\n\t\tonDrag(index, {\n\t\t\tx1,\n\t\t\ty1,\n\t\t\tx2,\n\t\t\ty2,\n\t\t});\n\t}\n\thandleLineNSResizeBottom(moreProps) {\n\t\tconst { index, onDrag } = this.props;\n\t\tconst {\n\t\t\tx1, y1, x2,\n\t\t} = this.props;\n\n\t\tconst [, y2] = getNewXY(moreProps);\n\n\t\tonDrag(index, {\n\t\t\tx1,\n\t\t\ty1,\n\t\t\tx2,\n\t\t\ty2,\n\t\t});\n\t}\n\thandleEdge1Drag(moreProps) {\n\t\tconst { index, onDrag } = this.props;\n\t\tconst {\n\t\t\ty1, x2, y2,\n\t\t} = this.props;\n\n\t\tconst [x1] = getNewXY(moreProps);\n\n\t\tonDrag(index, {\n\t\t\tx1,\n\t\t\ty1,\n\t\t\tx2,\n\t\t\ty2,\n\t\t});\n\t}\n\thandleEdge2Drag(moreProps) {\n\t\tconst { index, onDrag } = this.props;\n\t\tconst {\n\t\t\tx1, y1, y2,\n\t\t} = this.props;\n\n\t\tconst [x2] = getNewXY(moreProps);\n\n\t\tonDrag(index, {\n\t\t\tx1,\n\t\t\ty1,\n\t\t\tx2,\n\t\t\ty2,\n\t\t});\n\t}\n\trender() {\n\t\tconst { x1, x2, y1, y2 } = this.props;\n\t\tconst { interactive, yDisplayFormat, type, appearance } = this.props;\n\t\tconst { stroke, strokeWidth, strokeOpacity } = appearance;\n\t\tconst { fontFamily, fontSize, fontFill } = appearance;\n\t\tconst { edgeStroke, edgeFill, nsEdgeFill, edgeStrokeWidth, r } = appearance;\n\t\tconst { hoverText, selected } = this.props;\n\t\tconst { hover } = this.state;\n\t\tconst { onDragComplete } = this.props;\n\t\tconst lines = helper({ x1, x2, y1, y2 });\n\n\t\tconst {\n\t\t\tenable: hoverTextEnabled,\n\t\t\tselectedText: hoverTextSelected,\n\t\t\ttext: hoverTextUnselected,\n\t\t\t...restHoverTextProps\n\t\t} = hoverText;\n\n\t\tconst lineType = type === \"EXTEND\" ? \"XLINE\" : type === \"BOUND\" ? \"LINE\" : type;\n\t\tconst dir = head(lines).y1 > last(lines).y1 ? 3 : -1.3;\n\n\t\treturn (\n\t\t\t\n\t\t\t\t{lines.map((line, j) => {\n\t\t\t\t\tconst text = `${yDisplayFormat(line.y)} (${line.percent.toFixed(2)}%)`;\n\n\t\t\t\t\tconst xyProvider = ({ xScale, chartConfig }) => {\n\t\t\t\t\t\tconst { yScale } = chartConfig;\n\t\t\t\t\t\tconst { x1, y1, x2 } = generateLine({\n\t\t\t\t\t\t\ttype: lineType,\n\t\t\t\t\t\t\tstart: [line.x1, line.y],\n\t\t\t\t\t\t\tend: [line.x2, line.y],\n\t\t\t\t\t\t\txScale,\n\t\t\t\t\t\t\tyScale,\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tconst x = xScale(Math.min(x1, x2)) + 10;\n\t\t\t\t\t\tconst y = yScale(y1) + dir * 4;\n\t\t\t\t\t\treturn [x, y];\n\t\t\t\t\t};\n\n\t\t\t\t\tconst firstOrLast = (j === 0) || (j === lines.length - 1);\n\n\t\t\t\t\tconst interactiveCursorClass = firstOrLast\n\t\t\t\t\t\t? \"react-stockcharts-ns-resize-cursor\"\n\t\t\t\t\t\t: \"react-stockcharts-move-cursor\";\n\n\t\t\t\t\tconst interactiveEdgeCursorClass = firstOrLast\n\t\t\t\t\t\t? \"react-stockcharts-ns-resize-cursor\"\n\t\t\t\t\t\t: \"react-stockcharts-ew-resize-cursor\";\n\n\t\t\t\t\tconst dragHandler = j === 0\n\t\t\t\t\t\t? this.handleLineNSResizeTop\n\t\t\t\t\t\t: j === lines.length - 1\n\t\t\t\t\t\t\t? this.handleLineNSResizeBottom\n\t\t\t\t\t\t\t: this.handleLineMove;\n\n\t\t\t\t\tconst edge1DragHandler = j === 0\n\t\t\t\t\t\t? this.handleLineNSResizeTop\n\t\t\t\t\t\t: j === lines.length - 1\n\t\t\t\t\t\t\t? this.handleLineNSResizeBottom\n\t\t\t\t\t\t\t: this.handleEdge1Drag;\n\t\t\t\t\tconst edge2DragHandler = j === 0\n\t\t\t\t\t\t? this.handleLineNSResizeTop\n\t\t\t\t\t\t: j === lines.length - 1\n\t\t\t\t\t\t\t? this.handleLineNSResizeBottom\n\t\t\t\t\t\t\t: this.handleEdge2Drag;\n\n\t\t\t\t\tconst hoverHandler = interactive\n\t\t\t\t\t\t? { onHover: this.handleHover, onUnHover: this.handleHover }\n\t\t\t\t\t\t: {};\n\t\t\t\t\treturn \n\t\t\t\t\t\t\n\t\t\t\t\t\t{text}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t;\n\t\t\t\t})}\n\t\t\t\t\n\t\t\t\n\t\t);\n\t}\n}\n\n\nfunction helper({ x1, y1, x2, y2 }) {\n\tconst dy = y2 - y1;\n\tconst retracements = [100, 61.8, 50, 38.2, 23.6, 0]\n\t\t.map(each => ({\n\t\t\tpercent: each,\n\t\t\tx1,\n\t\t\tx2,\n\t\t\ty: (y2 - (each / 100) * dy),\n\t\t}));\n\n\treturn retracements;\n}\n\nEachFibRetracement.propTypes = {\n\tx1: PropTypes.any.isRequired,\n\tx2: PropTypes.any.isRequired,\n\ty1: PropTypes.number.isRequired,\n\ty2: PropTypes.number.isRequired,\n\n\tyDisplayFormat: PropTypes.func.isRequired,\n\ttype: PropTypes.string.isRequired,\n\tselected: PropTypes.bool.isRequired,\n\n\tappearance: PropTypes.shape({\n\t\tstroke: PropTypes.string.isRequired,\n\t\tstrokeWidth: PropTypes.number.isRequired,\n\t\tstrokeOpacity: PropTypes.number.isRequired,\n\t\tfontFamily: PropTypes.string.isRequired,\n\t\tfontSize: PropTypes.number.isRequired,\n\t\tfontFill: PropTypes.string.isRequired,\n\t\tedgeStroke: PropTypes.string.isRequired,\n\t\tedgeFill: PropTypes.string.isRequired,\n\t\tnsEdgeFill: PropTypes.string.isRequired,\n\t\tedgeStrokeWidth: PropTypes.number.isRequired,\n\t\tr: PropTypes.number.isRequired,\n\t}).isRequired,\n\n\tinteractive: PropTypes.bool.isRequired,\n\thoverText: PropTypes.object.isRequired,\n\n\tindex: PropTypes.number,\n\tonDrag: PropTypes.func.isRequired,\n\tonDragComplete: PropTypes.func.isRequired,\n};\n\nEachFibRetracement.defaultProps = {\n\tyDisplayFormat: d => d.toFixed(2),\n\tinteractive: true,\n\n\tappearance: {\n\t\tstroke: \"#000000\",\n\t\tstrokeWidth: 1,\n\t\tstrokeOpacity: 1,\n\t\tfontFamily: \"Helvetica Neue, Helvetica, Arial, sans-serif\",\n\t\tfontSize: 10,\n\t\tfontFill: \"#000000\",\n\t\tedgeStroke: \"#000000\",\n\t\tedgeFill: \"#FFFFFF\",\n\t\tnsEdgeFill: \"#000000\",\n\t\tedgeStrokeWidth: 1,\n\t\tr: 5,\n\t},\n\tselected: false,\n\n\tonDrag: noop,\n\tonDragComplete: noop,\n\n\thoverText: {\n\t\tenable: false,\n\t}\n};\n\nexport default EachFibRetracement;\n"]} \ No newline at end of file diff --git a/es/lib/interactive/wrapper/EachLinearRegressionChannel.js b/es/lib/interactive/wrapper/EachLinearRegressionChannel.js index b136f6f..2fc8fff 100644 --- a/es/lib/interactive/wrapper/EachLinearRegressionChannel.js +++ b/es/lib/interactive/wrapper/EachLinearRegressionChannel.js @@ -119,10 +119,9 @@ var EachLinearRegressionChannel = function (_Component) { var hoverHandler = interactive ? { onHover: this.handleHover, onUnHover: this.handleHover } : {}; var hoverTextEnabled = hoverText.enable, - restHoverTextProps = _objectWithoutProperties(hoverText, ["enable"]); - - // console.log("SELECTED ->", selected); - + hoverTextSelected = hoverText.selectedText, + hoverTextUnselected = hoverText.text, + restHoverTextProps = _objectWithoutProperties(hoverText, ["enable", "selectedText", "text"]); return React.createElement( "g", @@ -162,8 +161,10 @@ var EachLinearRegressionChannel = function (_Component) { onDrag: this.handleEdge2Drag, onDragComplete: onDragComplete }), React.createElement(HoverTextNearMouse, _extends({ - show: hoverTextEnabled && hover && !selected - }, restHoverTextProps)) + show: hoverTextEnabled && hover + }, restHoverTextProps, { + text: selected ? hoverTextSelected : hoverTextUnselected + })) ); } }]); diff --git a/es/lib/interactive/wrapper/EachLinearRegressionChannel.js.map b/es/lib/interactive/wrapper/EachLinearRegressionChannel.js.map index 03e1d3f..fbddd6d 100644 --- a/es/lib/interactive/wrapper/EachLinearRegressionChannel.js.map +++ b/es/lib/interactive/wrapper/EachLinearRegressionChannel.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../../../../src/lib/interactive/wrapper/EachLinearRegressionChannel.js"],"names":["React","Component","PropTypes","noop","getCurrentItem","saveNodeType","isHover","HoverTextNearMouse","default","LinearRegressionChannelWithArea","edge1Provider","edge2Provider","ClickableCircle","EachLinearRegressionChannel","props","handleEdge1Drag","bind","handleEdge2Drag","handleHover","nodes","state","hover","moreProps","index","onDrag","snapTo","x2Value","getNewXY","x1Value","hovering","setState","appearance","edgeInteractiveCursor","hoverText","interactive","selected","onDragComplete","stroke","strokeWidth","strokeOpacity","fill","fillOpacity","r","edgeStrokeWidth","edgeFill","edgeStroke","hoverHandler","onHover","onUnHover","hoverTextEnabled","enable","restHoverTextProps","xScale","xAccessor","plotData","mouseXY","currentItem","x","y","propTypes","defaultClassName","string","any","isRequired","number","shape","func","bool","object","defaultProps","bgHeight","bgWidth","text"],"mappings":"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","file":"EachLinearRegressionChannel.js","sourcesContent":["import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport { noop } from \"../../utils\";\nimport { getCurrentItem } from \"../../utils/ChartDataUtil\";\nimport { saveNodeType, isHover } from \"../utils\";\n\nimport HoverTextNearMouse from \"../components/HoverTextNearMouse\";\nimport {\n\tdefault as LinearRegressionChannelWithArea,\n\tedge1Provider,\n\tedge2Provider\n} from \"../components/LinearRegressionChannelWithArea\";\n\nimport ClickableCircle from \"../components/ClickableCircle\";\n\nclass EachLinearRegressionChannel extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\n\t\tthis.handleEdge1Drag = this.handleEdge1Drag.bind(this);\n\t\tthis.handleEdge2Drag = this.handleEdge2Drag.bind(this);\n\n\t\tthis.handleHover = this.handleHover.bind(this);\n\n\t\tthis.isHover = isHover.bind(this);\n\t\tthis.saveNodeType = saveNodeType.bind(this);\n\t\tthis.nodes = {};\n\n\t\tthis.state = {\n\t\t\thover: false,\n\t\t};\n\t}\n\thandleEdge1Drag(moreProps) {\n\t\tconst { index, onDrag, snapTo } = this.props;\n\t\tconst {\n\t\t\tx2Value,\n\t\t} = this.props;\n\n\t\tconst [x1Value] = getNewXY(moreProps, snapTo);\n\n\t\tonDrag(index, {\n\t\t\tx1Value,\n\t\t\tx2Value,\n\t\t});\n\t}\n\thandleEdge2Drag(moreProps) {\n\t\tconst { index, onDrag, snapTo } = this.props;\n\t\tconst {\n\t\t\tx1Value,\n\t\t} = this.props;\n\n\t\tconst [x2Value] = getNewXY(moreProps, snapTo);\n\n\t\tonDrag(index, {\n\t\t\tx1Value,\n\t\t\tx2Value,\n\t\t});\n\t}\n\thandleHover(moreProps) {\n\t\tif (this.state.hover !== moreProps.hovering) {\n\t\t\tthis.setState({\n\t\t\t\thover: moreProps.hovering\n\t\t\t});\n\t\t}\n\t}\n\trender() {\n\t\tconst {\n\t\t\tx1Value,\n\t\t\tx2Value,\n\t\t\tappearance,\n\t\t\tedgeInteractiveCursor,\n\t\t\thoverText,\n\t\t\tinteractive,\n\t\t\tselected,\n\t\t\tonDragComplete,\n\t\t} = this.props;\n\t\tconst {\n\t\t\tstroke,\n\t\t\tstrokeWidth,\n\t\t\tstrokeOpacity,\n\t\t\tfill,\n\t\t\tfillOpacity,\n\t\t\tr,\n\t\t\tedgeStrokeWidth,\n\t\t\tedgeFill,\n\t\t\tedgeStroke,\n\t\t} = appearance;\n\t\tconst { hover } = this.state;\n\n\t\tconst hoverHandler = interactive\n\t\t\t? { onHover: this.handleHover, onUnHover: this.handleHover }\n\t\t\t: {};\n\t\tconst { enable: hoverTextEnabled, ...restHoverTextProps } = hoverText;\n\n\t\t// console.log(\"SELECTED ->\", selected);\n\t\treturn \n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t;\n\t}\n}\n\nexport function getNewXY(moreProps, snapTo) {\n\tconst { xScale, xAccessor, plotData, mouseXY } = moreProps;\n\n\tconst currentItem = getCurrentItem(xScale, xAccessor, mouseXY, plotData);\n\tconst x = xAccessor(currentItem);\n\tconst y = snapTo(currentItem);\n\n\treturn [x, y];\n}\n\nEachLinearRegressionChannel.propTypes = {\n\tdefaultClassName: PropTypes.string,\n\n\tx1Value: PropTypes.any.isRequired,\n\tx2Value: PropTypes.any.isRequired,\n\n\tindex: PropTypes.number,\n\n\tappearance: PropTypes.shape({\n\t\tstroke: PropTypes.string.isRequired,\n\t\tfillOpacity: PropTypes.number.isRequired,\n\t\tstrokeOpacity: PropTypes.number.isRequired,\n\t\tstrokeWidth: PropTypes.number.isRequired,\n\t\tfill: PropTypes.string.isRequired,\n\t\tedgeStrokeWidth: PropTypes.number.isRequired,\n\t\tedgeStroke: PropTypes.string.isRequired,\n\t\tedgeFill: PropTypes.string.isRequired,\n\t\tr: PropTypes.number.isRequired,\n\t}).isRequired,\n\n\tedgeInteractiveCursor: PropTypes.string,\n\tonDrag: PropTypes.func.isRequired,\n\tonDragComplete: PropTypes.func.isRequired,\n\tsnapTo: PropTypes.func,\n\tinteractive: PropTypes.bool.isRequired,\n\tselected: PropTypes.bool.isRequired,\n\n\thoverText: PropTypes.object.isRequired,\n};\n\nEachLinearRegressionChannel.defaultProps = {\n\tonDrag: noop,\n\tonDragComplete: noop,\n\n\tappearance: {\n\t\tstroke: \"#000000\",\n\t\tfillOpacity: 0.7,\n\t\tstrokeOpacity: 1,\n\t\tstrokeWidth: 1,\n\t\tfill: \"#8AAFE2\",\n\t\tedgeStrokeWidth: 2,\n\t\tedgeStroke: \"#000000\",\n\t\tedgeFill: \"#FFFFFF\",\n\t\tr: 5,\n\t},\n\tinteractive: true,\n\tselected: false,\n\thoverText: {\n\t\t...HoverTextNearMouse.defaultProps,\n\t\tenable: true,\n\t\tbgHeight: 18,\n\t\tbgWidth: 175,\n\t\ttext: \"Click and drag the edge circles\",\n\t}\n};\n\nexport default EachLinearRegressionChannel;"]} \ No newline at end of file +{"version":3,"sources":["../../../../../src/lib/interactive/wrapper/EachLinearRegressionChannel.js"],"names":["React","Component","PropTypes","noop","getCurrentItem","saveNodeType","isHover","HoverTextNearMouse","default","LinearRegressionChannelWithArea","edge1Provider","edge2Provider","ClickableCircle","EachLinearRegressionChannel","props","handleEdge1Drag","bind","handleEdge2Drag","handleHover","nodes","state","hover","moreProps","index","onDrag","snapTo","x2Value","getNewXY","x1Value","hovering","setState","appearance","edgeInteractiveCursor","hoverText","interactive","selected","onDragComplete","stroke","strokeWidth","strokeOpacity","fill","fillOpacity","r","edgeStrokeWidth","edgeFill","edgeStroke","hoverHandler","onHover","onUnHover","hoverTextEnabled","enable","hoverTextSelected","selectedText","hoverTextUnselected","text","restHoverTextProps","xScale","xAccessor","plotData","mouseXY","currentItem","x","y","propTypes","defaultClassName","string","any","isRequired","number","shape","func","bool","object","defaultProps","bgHeight","bgWidth"],"mappings":"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","file":"EachLinearRegressionChannel.js","sourcesContent":["import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport { noop } from \"../../utils\";\nimport { getCurrentItem } from \"../../utils/ChartDataUtil\";\nimport { saveNodeType, isHover } from \"../utils\";\n\nimport HoverTextNearMouse from \"../components/HoverTextNearMouse\";\nimport {\n\tdefault as LinearRegressionChannelWithArea,\n\tedge1Provider,\n\tedge2Provider\n} from \"../components/LinearRegressionChannelWithArea\";\n\nimport ClickableCircle from \"../components/ClickableCircle\";\n\nclass EachLinearRegressionChannel extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\n\t\tthis.handleEdge1Drag = this.handleEdge1Drag.bind(this);\n\t\tthis.handleEdge2Drag = this.handleEdge2Drag.bind(this);\n\n\t\tthis.handleHover = this.handleHover.bind(this);\n\n\t\tthis.isHover = isHover.bind(this);\n\t\tthis.saveNodeType = saveNodeType.bind(this);\n\t\tthis.nodes = {};\n\n\t\tthis.state = {\n\t\t\thover: false,\n\t\t};\n\t}\n\thandleEdge1Drag(moreProps) {\n\t\tconst { index, onDrag, snapTo } = this.props;\n\t\tconst {\n\t\t\tx2Value,\n\t\t} = this.props;\n\n\t\tconst [x1Value] = getNewXY(moreProps, snapTo);\n\n\t\tonDrag(index, {\n\t\t\tx1Value,\n\t\t\tx2Value,\n\t\t});\n\t}\n\thandleEdge2Drag(moreProps) {\n\t\tconst { index, onDrag, snapTo } = this.props;\n\t\tconst {\n\t\t\tx1Value,\n\t\t} = this.props;\n\n\t\tconst [x2Value] = getNewXY(moreProps, snapTo);\n\n\t\tonDrag(index, {\n\t\t\tx1Value,\n\t\t\tx2Value,\n\t\t});\n\t}\n\thandleHover(moreProps) {\n\t\tif (this.state.hover !== moreProps.hovering) {\n\t\t\tthis.setState({\n\t\t\t\thover: moreProps.hovering\n\t\t\t});\n\t\t}\n\t}\n\trender() {\n\t\tconst {\n\t\t\tx1Value,\n\t\t\tx2Value,\n\t\t\tappearance,\n\t\t\tedgeInteractiveCursor,\n\t\t\thoverText,\n\t\t\tinteractive,\n\t\t\tselected,\n\t\t\tonDragComplete,\n\t\t} = this.props;\n\t\tconst {\n\t\t\tstroke,\n\t\t\tstrokeWidth,\n\t\t\tstrokeOpacity,\n\t\t\tfill,\n\t\t\tfillOpacity,\n\t\t\tr,\n\t\t\tedgeStrokeWidth,\n\t\t\tedgeFill,\n\t\t\tedgeStroke,\n\t\t} = appearance;\n\t\tconst { hover } = this.state;\n\n\t\tconst hoverHandler = interactive\n\t\t\t? { onHover: this.handleHover, onUnHover: this.handleHover }\n\t\t\t: {};\n\n\t\tconst {\n\t\t\tenable: hoverTextEnabled,\n\t\t\tselectedText: hoverTextSelected,\n\t\t\ttext: hoverTextUnselected,\n\t\t\t...restHoverTextProps\n\t\t} = hoverText;\n\n\t\treturn \n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t;\n\t}\n}\n\nexport function getNewXY(moreProps, snapTo) {\n\tconst { xScale, xAccessor, plotData, mouseXY } = moreProps;\n\n\tconst currentItem = getCurrentItem(xScale, xAccessor, mouseXY, plotData);\n\tconst x = xAccessor(currentItem);\n\tconst y = snapTo(currentItem);\n\n\treturn [x, y];\n}\n\nEachLinearRegressionChannel.propTypes = {\n\tdefaultClassName: PropTypes.string,\n\n\tx1Value: PropTypes.any.isRequired,\n\tx2Value: PropTypes.any.isRequired,\n\n\tindex: PropTypes.number,\n\n\tappearance: PropTypes.shape({\n\t\tstroke: PropTypes.string.isRequired,\n\t\tfillOpacity: PropTypes.number.isRequired,\n\t\tstrokeOpacity: PropTypes.number.isRequired,\n\t\tstrokeWidth: PropTypes.number.isRequired,\n\t\tfill: PropTypes.string.isRequired,\n\t\tedgeStrokeWidth: PropTypes.number.isRequired,\n\t\tedgeStroke: PropTypes.string.isRequired,\n\t\tedgeFill: PropTypes.string.isRequired,\n\t\tr: PropTypes.number.isRequired,\n\t}).isRequired,\n\n\tedgeInteractiveCursor: PropTypes.string,\n\tonDrag: PropTypes.func.isRequired,\n\tonDragComplete: PropTypes.func.isRequired,\n\tsnapTo: PropTypes.func,\n\tinteractive: PropTypes.bool.isRequired,\n\tselected: PropTypes.bool.isRequired,\n\n\thoverText: PropTypes.object.isRequired,\n};\n\nEachLinearRegressionChannel.defaultProps = {\n\tonDrag: noop,\n\tonDragComplete: noop,\n\n\tappearance: {\n\t\tstroke: \"#000000\",\n\t\tfillOpacity: 0.7,\n\t\tstrokeOpacity: 1,\n\t\tstrokeWidth: 1,\n\t\tfill: \"#8AAFE2\",\n\t\tedgeStrokeWidth: 2,\n\t\tedgeStroke: \"#000000\",\n\t\tedgeFill: \"#FFFFFF\",\n\t\tr: 5,\n\t},\n\tinteractive: true,\n\tselected: false,\n\thoverText: {\n\t\t...HoverTextNearMouse.defaultProps,\n\t\tenable: true,\n\t\tbgHeight: 18,\n\t\tbgWidth: 175,\n\t\ttext: \"Click and drag the edge circles\",\n\t}\n};\n\nexport default EachLinearRegressionChannel;"]} \ No newline at end of file diff --git a/es/lib/interactive/wrapper/EachText.js b/es/lib/interactive/wrapper/EachText.js index 7310e11..b9f3a99 100644 --- a/es/lib/interactive/wrapper/EachText.js +++ b/es/lib/interactive/wrapper/EachText.js @@ -109,6 +109,8 @@ var EachText = function (_Component) { position = _props2.position, bgFill = _props2.bgFill, bgOpacity = _props2.bgOpacity, + bgStroke = _props2.bgStroke, + bgStrokeWidth = _props2.bgStrokeWidth, textFill = _props2.textFill, fontFamily = _props2.fontFamily, fontSize = _props2.fontSize, @@ -127,7 +129,9 @@ var EachText = function (_Component) { }; var hoverTextEnabled = hoverText.enable, - restHoverTextProps = _objectWithoutProperties(hoverText, ["enable"]); + hoverTextSelected = hoverText.selectedText, + hoverTextUnselected = hoverText.text, + restHoverTextProps = _objectWithoutProperties(hoverText, ["enable", "selectedText", "text"]); return React.createElement( "g", @@ -141,10 +145,11 @@ var EachText = function (_Component) { onDragStart: this.handleDragStart, onDrag: this.handleDrag, onDragComplete: onDragComplete, - position: position, bgFill: bgFill, bgOpacity: bgOpacity, + bgStroke: bgStroke || textFill, + bgStrokeWidth: bgStrokeWidth, textFill: textFill, fontFamily: fontFamily, fontStyle: fontStyle, @@ -153,8 +158,10 @@ var EachText = function (_Component) { text: text })), React.createElement(HoverTextNearMouse, _extends({ - show: hoverTextEnabled && hover && !selected - }, restHoverTextProps)) + show: hoverTextEnabled && hover + }, restHoverTextProps, { + text: selected ? hoverTextSelected : hoverTextUnselected + })) ); } }]); @@ -180,6 +187,8 @@ EachText.propTypes = { position: PropTypes.array.isRequired, bgFill: PropTypes.string.isRequired, bgOpacity: PropTypes.number.isRequired, + bgStrokeWidth: PropTypes.number.isRequired, + bgStroke: PropTypes.string, textFill: PropTypes.string.isRequired, fontWeight: PropTypes.string.isRequired, @@ -199,18 +208,14 @@ EachText.propTypes = { EachText.defaultProps = { onDrag: noop, onDragComplete: noop, - edgeStroke: "#000000", - edgeFill: "#FFFFFF", - edgeStrokeWidth: 2, - r: 5, - strokeWidth: 1, - opacity: 1, + bgOpacity: 1, + bgStrokeWidth: 1, selected: false, fill: "#8AAFE2", hoverText: _extends({}, HoverTextNearMouse.defaultProps, { enable: true, - bgHeight: 18, - bgWidth: 120, + bgHeight: "auto", + bgWidth: "auto", text: "Click to select object" }) }; diff --git a/es/lib/interactive/wrapper/EachText.js.map b/es/lib/interactive/wrapper/EachText.js.map index 980fcc5..9ea260a 100644 --- a/es/lib/interactive/wrapper/EachText.js.map +++ b/es/lib/interactive/wrapper/EachText.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../../../../src/lib/interactive/wrapper/EachText.js"],"names":["React","Component","PropTypes","noop","saveNodeType","isHover","getXValue","HoverTextNearMouse","InteractiveText","EachText","props","handleHover","bind","handleDragStart","handleDrag","nodes","state","hover","moreProps","position","mouseXY","yScale","chartConfig","xScale","mouseX","mouseY","textCX","textCY","dx","dy","dragStartPosition","index","onDrag","xAccessor","plotData","xValue","invert","xyValue","hovering","setState","bgFill","bgOpacity","textFill","fontFamily","fontSize","fontWeight","fontStyle","text","hoverText","selected","onDragComplete","hoverHandler","onHover","onUnHover","hoverTextEnabled","enable","restHoverTextProps","propTypes","number","array","isRequired","string","bool","func","object","defaultProps","edgeStroke","edgeFill","edgeStrokeWidth","r","strokeWidth","opacity","fill","bgHeight","bgWidth"],"mappings":"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","file":"EachText.js","sourcesContent":["import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport { noop } from \"../../utils\";\nimport { saveNodeType, isHover } from \"../utils\";\nimport { getXValue } from \"../../utils/ChartDataUtil\";\n\nimport HoverTextNearMouse from \"../components/HoverTextNearMouse\";\nimport InteractiveText from \"../components/InteractiveText\";\n\nclass EachText extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\n\t\tthis.handleHover = this.handleHover.bind(this);\n\n\t\tthis.handleDragStart = this.handleDragStart.bind(this);\n\t\tthis.handleDrag = this.handleDrag.bind(this);\n\n\t\tthis.isHover = isHover.bind(this);\n\t\tthis.saveNodeType = saveNodeType.bind(this);\n\t\tthis.nodes = {};\n\n\t\tthis.state = {\n\t\t\thover: false,\n\t\t};\n\t}\n\thandleDragStart(moreProps) {\n\t\tconst {\n\t\t\tposition,\n\t\t} = this.props;\n\t\tconst { mouseXY } = moreProps;\n\t\tconst { chartConfig: { yScale }, xScale } = moreProps;\n\t\tconst [mouseX, mouseY] = mouseXY;\n\n\t\tconst [textCX, textCY] = position;\n\t\tconst dx = mouseX - xScale(textCX);\n\t\tconst dy = mouseY - yScale(textCY);\n\n\t\tthis.dragStartPosition = {\n\t\t\tposition, dx, dy\n\t\t};\n\t}\n\thandleDrag(moreProps) {\n\t\tconst { index, onDrag } = this.props;\n\t\tconst {\n\t\t\tmouseXY: [, mouseY],\n\t\t\tchartConfig: { yScale },\n\t\t\txAccessor,\n\t\t\tmouseXY,\n\t\t\tplotData,\n\t\t\txScale,\n\t\t} = moreProps;\n\n\t\tconst { dx, dy } = this.dragStartPosition;\n\t\tconst xValue = xScale.invert(\n\t\t\txScale(getXValue(xScale, xAccessor, mouseXY, plotData)) - dx\n\t\t);\n\t\t// xScale.invert(xScale(xAccessor(currentItem)) - dx);\n\t\tconst xyValue = [\n\t\t\txValue,\n\t\t\tyScale.invert(mouseY - dy)\n\t\t];\n\n\t\tonDrag(index, xyValue);\n\t}\n\thandleHover(moreProps) {\n\t\tif (this.state.hover !== moreProps.hovering) {\n\t\t\tthis.setState({\n\t\t\t\thover: moreProps.hovering\n\t\t\t});\n\t\t}\n\t}\n\trender() {\n\t\tconst {\n\t\t\tposition,\n\t\t\tbgFill,\n\t\t\tbgOpacity,\n\t\t\ttextFill,\n\t\t\tfontFamily,\n\t\t\tfontSize,\n\t\t\tfontWeight,\n\t\t\tfontStyle,\n\t\t\ttext,\n\t\t\thoverText,\n\t\t\tselected,\n\t\t\tonDragComplete,\n\t\t} = this.props;\n\t\tconst { hover } = this.state;\n\n\t\tconst hoverHandler = {\n\t\t\tonHover: this.handleHover,\n\t\t\tonUnHover: this.handleHover\n\t\t};\n\n\t\tconst { enable: hoverTextEnabled, ...restHoverTextProps } = hoverText;\n\n\t\treturn \n\t\t\t\n\t\t\t\n\t\t;\n\t}\n}\n/*\nexport function getNewXY(moreProps, snapTo) {\n\tconst { xScale, xAccessor, plotData, mouseXY } = moreProps;\n\n\tconst currentItem = getCurrentItem(xScale, xAccessor, mouseXY, plotData);\n\tconst x = xAccessor(currentItem);\n\tconst y = snapTo(currentItem);\n\n\treturn [x, y];\n}\n */\nEachText.propTypes = {\n\tindex: PropTypes.number,\n\n\tposition: PropTypes.array.isRequired,\n\tbgFill: PropTypes.string.isRequired,\n\tbgOpacity: PropTypes.number.isRequired,\n\ttextFill: PropTypes.string.isRequired,\n\n\tfontWeight: PropTypes.string.isRequired,\n\tfontFamily: PropTypes.string.isRequired,\n\tfontStyle: PropTypes.string.isRequired,\n\tfontSize: PropTypes.number.isRequired,\n\n\ttext: PropTypes.string.isRequired,\n\tselected: PropTypes.bool.isRequired,\n\n\tonDrag: PropTypes.func.isRequired,\n\tonDragComplete: PropTypes.func.isRequired,\n\n\thoverText: PropTypes.object.isRequired,\n};\n\nEachText.defaultProps = {\n\tonDrag: noop,\n\tonDragComplete: noop,\n\tedgeStroke: \"#000000\",\n\tedgeFill: \"#FFFFFF\",\n\tedgeStrokeWidth: 2,\n\tr: 5,\n\tstrokeWidth: 1,\n\topacity: 1,\n\tselected: false,\n\tfill: \"#8AAFE2\",\n\thoverText: {\n\t\t...HoverTextNearMouse.defaultProps,\n\t\tenable: true,\n\t\tbgHeight: 18,\n\t\tbgWidth: 120,\n\t\ttext: \"Click to select object\",\n\t}\n};\n\nexport default EachText;"]} \ No newline at end of file +{"version":3,"sources":["../../../../../src/lib/interactive/wrapper/EachText.js"],"names":["React","Component","PropTypes","noop","saveNodeType","isHover","getXValue","HoverTextNearMouse","InteractiveText","EachText","props","handleHover","bind","handleDragStart","handleDrag","nodes","state","hover","moreProps","position","mouseXY","yScale","chartConfig","xScale","mouseX","mouseY","textCX","textCY","dx","dy","dragStartPosition","index","onDrag","xAccessor","plotData","xValue","invert","xyValue","hovering","setState","bgFill","bgOpacity","bgStroke","bgStrokeWidth","textFill","fontFamily","fontSize","fontWeight","fontStyle","text","hoverText","selected","onDragComplete","hoverHandler","onHover","onUnHover","hoverTextEnabled","enable","hoverTextSelected","selectedText","hoverTextUnselected","restHoverTextProps","propTypes","number","array","isRequired","string","bool","func","object","defaultProps","fill","bgHeight","bgWidth"],"mappings":"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","file":"EachText.js","sourcesContent":["import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport { noop } from \"../../utils\";\nimport { saveNodeType, isHover } from \"../utils\";\nimport { getXValue } from \"../../utils/ChartDataUtil\";\n\nimport HoverTextNearMouse from \"../components/HoverTextNearMouse\";\nimport InteractiveText from \"../components/InteractiveText\";\n\nclass EachText extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\n\t\tthis.handleHover = this.handleHover.bind(this);\n\n\t\tthis.handleDragStart = this.handleDragStart.bind(this);\n\t\tthis.handleDrag = this.handleDrag.bind(this);\n\n\t\tthis.isHover = isHover.bind(this);\n\t\tthis.saveNodeType = saveNodeType.bind(this);\n\t\tthis.nodes = {};\n\n\t\tthis.state = {\n\t\t\thover: false,\n\t\t};\n\t}\n\thandleDragStart(moreProps) {\n\t\tconst {\n\t\t\tposition,\n\t\t} = this.props;\n\t\tconst { mouseXY } = moreProps;\n\t\tconst { chartConfig: { yScale }, xScale } = moreProps;\n\t\tconst [mouseX, mouseY] = mouseXY;\n\n\t\tconst [textCX, textCY] = position;\n\t\tconst dx = mouseX - xScale(textCX);\n\t\tconst dy = mouseY - yScale(textCY);\n\n\t\tthis.dragStartPosition = {\n\t\t\tposition, dx, dy\n\t\t};\n\t}\n\thandleDrag(moreProps) {\n\t\tconst { index, onDrag } = this.props;\n\t\tconst {\n\t\t\tmouseXY: [, mouseY],\n\t\t\tchartConfig: { yScale },\n\t\t\txAccessor,\n\t\t\tmouseXY,\n\t\t\tplotData,\n\t\t\txScale,\n\t\t} = moreProps;\n\n\t\tconst { dx, dy } = this.dragStartPosition;\n\t\tconst xValue = xScale.invert(\n\t\t\txScale(getXValue(xScale, xAccessor, mouseXY, plotData)) - dx\n\t\t);\n\t\t// xScale.invert(xScale(xAccessor(currentItem)) - dx);\n\t\tconst xyValue = [\n\t\t\txValue,\n\t\t\tyScale.invert(mouseY - dy)\n\t\t];\n\n\t\tonDrag(index, xyValue);\n\t}\n\thandleHover(moreProps) {\n\t\tif (this.state.hover !== moreProps.hovering) {\n\t\t\tthis.setState({\n\t\t\t\thover: moreProps.hovering\n\t\t\t});\n\t\t}\n\t}\n\trender() {\n\t\tconst {\n\t\t\tposition,\n\t\t\tbgFill,\n\t\t\tbgOpacity,\n\t\t\tbgStroke,\n\t\t\tbgStrokeWidth,\n\t\t\ttextFill,\n\t\t\tfontFamily,\n\t\t\tfontSize,\n\t\t\tfontWeight,\n\t\t\tfontStyle,\n\t\t\ttext,\n\t\t\thoverText,\n\t\t\tselected,\n\t\t\tonDragComplete,\n\t\t} = this.props;\n\t\tconst { hover } = this.state;\n\n\t\tconst hoverHandler = {\n\t\t\tonHover: this.handleHover,\n\t\t\tonUnHover: this.handleHover\n\t\t};\n\n\t\tconst {\n\t\t\tenable: hoverTextEnabled,\n\t\t\tselectedText: hoverTextSelected,\n\t\t\ttext: hoverTextUnselected,\n\t\t\t...restHoverTextProps\n\t\t} = hoverText;\n\n\t\treturn \n\t\t\t\n\t\t\t\n\t\t;\n\t}\n}\n/*\nexport function getNewXY(moreProps, snapTo) {\n\tconst { xScale, xAccessor, plotData, mouseXY } = moreProps;\n\n\tconst currentItem = getCurrentItem(xScale, xAccessor, mouseXY, plotData);\n\tconst x = xAccessor(currentItem);\n\tconst y = snapTo(currentItem);\n\n\treturn [x, y];\n}\n */\nEachText.propTypes = {\n\tindex: PropTypes.number,\n\n\tposition: PropTypes.array.isRequired,\n\tbgFill: PropTypes.string.isRequired,\n\tbgOpacity: PropTypes.number.isRequired,\n\tbgStrokeWidth: PropTypes.number.isRequired,\n\tbgStroke: PropTypes.string,\n\ttextFill: PropTypes.string.isRequired,\n\n\tfontWeight: PropTypes.string.isRequired,\n\tfontFamily: PropTypes.string.isRequired,\n\tfontStyle: PropTypes.string.isRequired,\n\tfontSize: PropTypes.number.isRequired,\n\n\ttext: PropTypes.string.isRequired,\n\tselected: PropTypes.bool.isRequired,\n\n\tonDrag: PropTypes.func.isRequired,\n\tonDragComplete: PropTypes.func.isRequired,\n\n\thoverText: PropTypes.object.isRequired,\n};\n\nEachText.defaultProps = {\n\tonDrag: noop,\n\tonDragComplete: noop,\n\tbgOpacity: 1,\n\tbgStrokeWidth: 1,\n\tselected: false,\n\tfill: \"#8AAFE2\",\n\thoverText: {\n\t\t...HoverTextNearMouse.defaultProps,\n\t\tenable: true,\n\t\tbgHeight: \"auto\",\n\t\tbgWidth: \"auto\",\n\t\ttext: \"Click to select object\",\n\t}\n};\n\nexport default EachText;"]} \ No newline at end of file diff --git a/es/lib/interactive/wrapper/EachTrendLine.js b/es/lib/interactive/wrapper/EachTrendLine.js index 5f915df..703c741 100644 --- a/es/lib/interactive/wrapper/EachTrendLine.js +++ b/es/lib/interactive/wrapper/EachTrendLine.js @@ -207,14 +207,16 @@ var EachTrendLine = function (_Component) { hoverText = _props8.hoverText, selected = _props8.selected, onDragComplete = _props8.onDragComplete; + + var hoverTextEnabled = hoverText.enable, + hoverTextSelected = hoverText.selectedText, + hoverTextUnselected = hoverText.text, + restHoverTextProps = _objectWithoutProperties(hoverText, ["enable", "selectedText", "text"]); + var _state = this.state, hover = _state.hover, anchor = _state.anchor; - // console.log("SELECTED ->", selected); - - var hoverTextEnabled = hoverText.enable, - restHoverTextProps = _objectWithoutProperties(hoverText, ["enable"]); return React.createElement( "g", @@ -266,8 +268,10 @@ var EachTrendLine = function (_Component) { onDrag: this.handleEdge2Drag, onDragComplete: this.handleDragComplete }), React.createElement(HoverTextNearMouse, _extends({ - show: hoverTextEnabled && hover && !selected - }, restHoverTextProps)) + show: hoverTextEnabled && hover + }, restHoverTextProps, { + text: selected ? hoverTextSelected : hoverTextUnselected + })) ); } }]); diff --git a/es/lib/interactive/wrapper/EachTrendLine.js.map b/es/lib/interactive/wrapper/EachTrendLine.js.map index 2c79a98..9a4128d 100644 --- a/es/lib/interactive/wrapper/EachTrendLine.js.map +++ b/es/lib/interactive/wrapper/EachTrendLine.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../../../../src/lib/interactive/wrapper/EachTrendLine.js"],"names":["React","Component","PropTypes","ascending","d3Ascending","noop","strokeDashTypes","saveNodeType","isHover","getXValue","StraightLine","ClickableCircle","HoverTextNearMouse","EachTrendLine","props","handleEdge1Drag","bind","handleEdge2Drag","handleLineDragStart","handleLineDrag","handleEdge1DragStart","handleEdge2DragStart","handleDragComplete","handleHover","nodes","state","hover","x1Value","y1Value","x2Value","y2Value","dragStart","moreProps","index","onDrag","xScale","yScale","chartConfig","xAccessor","fullData","startPos","mouseXY","x1","y1","x2","y2","dx","dy","newX1Value","newY1Value","invert","newX2Value","newY2Value","setState","anchor","undefined","onDragComplete","getNewXY","hovering","type","stroke","strokeWidth","strokeOpacity","strokeDasharray","r","edgeStrokeWidth","edgeFill","edgeStroke","edgeInteractiveCursor","lineInteractiveCursor","hoverText","selected","hoverTextEnabled","enable","restHoverTextProps","plotData","mouseY","x","domain","slice","sort","small","big","y","newY","Math","min","max","propTypes","any","isRequired","number","oneOf","func","onEdge1Drag","onEdge2Drag","onSelect","onUnSelect","defaultClassName","string","bool","object","defaultProps"],"mappings":"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","file":"EachTrendLine.js","sourcesContent":["import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport { ascending as d3Ascending } from \"d3-array\";\nimport { noop, strokeDashTypes } from \"../../utils\";\nimport { saveNodeType, isHover } from \"../utils\";\nimport { getXValue } from \"../../utils/ChartDataUtil\";\n\nimport StraightLine from \"../components/StraightLine\";\nimport ClickableCircle from \"../components/ClickableCircle\";\nimport HoverTextNearMouse from \"../components/HoverTextNearMouse\";\n\nclass EachTrendLine extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\n\t\tthis.handleEdge1Drag = this.handleEdge1Drag.bind(this);\n\t\tthis.handleEdge2Drag = this.handleEdge2Drag.bind(this);\n\t\tthis.handleLineDragStart = this.handleLineDragStart.bind(this);\n\t\tthis.handleLineDrag = this.handleLineDrag.bind(this);\n\n\t\tthis.handleEdge1DragStart = this.handleEdge1DragStart.bind(this);\n\t\tthis.handleEdge2DragStart = this.handleEdge2DragStart.bind(this);\n\n\t\tthis.handleDragComplete = this.handleDragComplete.bind(this);\n\n\t\tthis.handleHover = this.handleHover.bind(this);\n\n\t\tthis.isHover = isHover.bind(this);\n\t\tthis.saveNodeType = saveNodeType.bind(this);\n\t\tthis.nodes = {};\n\n\t\tthis.state = {\n\t\t\thover: false,\n\t\t};\n\t}\n\thandleLineDragStart() {\n\t\tconst {\n\t\t\tx1Value, y1Value,\n\t\t\tx2Value, y2Value,\n\t\t} = this.props;\n\n\t\tthis.dragStart = {\n\t\t\tx1Value, y1Value,\n\t\t\tx2Value, y2Value,\n\t\t};\n\t}\n\thandleLineDrag(moreProps) {\n\t\tconst { index, onDrag } = this.props;\n\n\t\tconst {\n\t\t\tx1Value, y1Value,\n\t\t\tx2Value, y2Value,\n\t\t} = this.dragStart;\n\n\t\tconst { xScale, chartConfig: { yScale }, xAccessor, fullData } = moreProps;\n\t\tconst { startPos, mouseXY } = moreProps;\n\n\t\tconst x1 = xScale(x1Value);\n\t\tconst y1 = yScale(y1Value);\n\t\tconst x2 = xScale(x2Value);\n\t\tconst y2 = yScale(y2Value);\n\n\t\tconst dx = startPos[0] - mouseXY[0];\n\t\tconst dy = startPos[1] - mouseXY[1];\n\n\t\tconst newX1Value = getXValue(xScale, xAccessor, [x1 - dx, y1 - dy], fullData);\n\t\tconst newY1Value = yScale.invert(y1 - dy);\n\t\tconst newX2Value = getXValue(xScale, xAccessor, [x2 - dx, y2 - dy], fullData);\n\t\tconst newY2Value = yScale.invert(y2 - dy);\n\n\t\tonDrag(index, {\n\t\t\tx1Value: newX1Value,\n\t\t\ty1Value: newY1Value,\n\t\t\tx2Value: newX2Value,\n\t\t\ty2Value: newY2Value,\n\t\t});\n\t}\n\thandleEdge1DragStart() {\n\t\tthis.setState({\n\t\t\tanchor: \"edge2\"\n\t\t});\n\t}\n\thandleEdge2DragStart() {\n\t\tthis.setState({\n\t\t\tanchor: \"edge1\"\n\t\t});\n\t}\n\thandleDragComplete(...rest) {\n\t\tthis.setState({\n\t\t\tanchor: undefined\n\t\t});\n\t\tthis.props.onDragComplete(...rest);\n\t}\n\thandleEdge1Drag(moreProps) {\n\t\tconst { index, onDrag } = this.props;\n\t\tconst {\n\t\t\tx2Value, y2Value,\n\t\t} = this.props;\n\n\t\tconst [x1Value, y1Value] = getNewXY(moreProps);\n\n\t\tonDrag(index, {\n\t\t\tx1Value,\n\t\t\ty1Value,\n\t\t\tx2Value,\n\t\t\ty2Value,\n\t\t});\n\t}\n\thandleEdge2Drag(moreProps) {\n\t\tconst { index, onDrag } = this.props;\n\t\tconst {\n\t\t\tx1Value, y1Value,\n\t\t} = this.props;\n\n\t\tconst [x2Value, y2Value] = getNewXY(moreProps);\n\n\t\tonDrag(index, {\n\t\t\tx1Value,\n\t\t\ty1Value,\n\t\t\tx2Value,\n\t\t\ty2Value,\n\t\t});\n\t}\n\thandleHover(moreProps) {\n\t\tif (this.state.hover !== moreProps.hovering) {\n\t\t\tthis.setState({\n\t\t\t\thover: moreProps.hovering\n\t\t\t});\n\t\t}\n\t}\n\trender() {\n\t\tconst {\n\t\t\tx1Value,\n\t\t\ty1Value,\n\t\t\tx2Value,\n\t\t\ty2Value,\n\t\t\ttype,\n\t\t\tstroke,\n\t\t\tstrokeWidth,\n\t\t\tstrokeOpacity,\n\t\t\tstrokeDasharray,\n\t\t\tr,\n\t\t\tedgeStrokeWidth,\n\t\t\tedgeFill,\n\t\t\tedgeStroke,\n\t\t\tedgeInteractiveCursor,\n\t\t\tlineInteractiveCursor,\n\t\t\thoverText,\n\t\t\tselected,\n\n\t\t\tonDragComplete,\n\t\t} = this.props;\n\t\tconst { hover, anchor } = this.state;\n\n\t\t// console.log(\"SELECTED ->\", selected);\n\t\tconst { enable: hoverTextEnabled, ...restHoverTextProps } = hoverText;\n\n\t\treturn \n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t;\n\t}\n}\n\nexport function getNewXY(moreProps) {\n\tconst { xScale, chartConfig: { yScale }, xAccessor, plotData, mouseXY } = moreProps;\n\tconst mouseY = mouseXY[1];\n\n\tconst x = getXValue(xScale, xAccessor, mouseXY, plotData);\n\n\tconst [small, big] = yScale.domain().slice().sort(d3Ascending);\n\tconst y = yScale.invert(mouseY);\n\tconst newY = Math.min(Math.max(y, small), big);\n\n\treturn [x, newY];\n}\n\nEachTrendLine.propTypes = {\n\tx1Value: PropTypes.any.isRequired,\n\tx2Value: PropTypes.any.isRequired,\n\ty1Value: PropTypes.any.isRequired,\n\ty2Value: PropTypes.any.isRequired,\n\n\tindex: PropTypes.number,\n\n\ttype: PropTypes.oneOf([\n\t\t\"XLINE\", // extends from -Infinity to +Infinity\n\t\t\"RAY\", // extends to +/-Infinity in one direction\n\t\t\"LINE\", // extends between the set bounds\n\t]).isRequired,\n\n\tonDrag: PropTypes.func.isRequired,\n\tonEdge1Drag: PropTypes.func.isRequired,\n\tonEdge2Drag: PropTypes.func.isRequired,\n\tonDragComplete: PropTypes.func.isRequired,\n\tonSelect: PropTypes.func.isRequired,\n\tonUnSelect: PropTypes.func.isRequired,\n\n\tr: PropTypes.number.isRequired,\n\tstrokeOpacity: PropTypes.number.isRequired,\n\tdefaultClassName: PropTypes.string,\n\n\tselected: PropTypes.bool,\n\n\tstroke: PropTypes.string.isRequired,\n\tstrokeWidth: PropTypes.number.isRequired,\n\tstrokeDasharray: PropTypes.oneOf(strokeDashTypes),\n\n\tedgeStrokeWidth: PropTypes.number.isRequired,\n\tedgeStroke: PropTypes.string.isRequired,\n\tedgeInteractiveCursor: PropTypes.string.isRequired,\n\tlineInteractiveCursor: PropTypes.string.isRequired,\n\tedgeFill: PropTypes.string.isRequired,\n\thoverText: PropTypes.object.isRequired,\n};\n\nEachTrendLine.defaultProps = {\n\tonDrag: noop,\n\tonEdge1Drag: noop,\n\tonEdge2Drag: noop,\n\tonDragComplete: noop,\n\tonSelect: noop,\n\tonUnSelect: noop,\n\n\tselected: false,\n\n\tedgeStroke: \"#000000\",\n\tedgeFill: \"#FFFFFF\",\n\tedgeStrokeWidth: 2,\n\tr: 5,\n\tstrokeWidth: 1,\n\tstrokeOpacity: 1,\n\tstrokeDasharray: \"Solid\",\n\thoverText: {\n\t\tenable: false,\n\t}\n};\n\nexport default EachTrendLine;"]} \ No newline at end of file +{"version":3,"sources":["../../../../../src/lib/interactive/wrapper/EachTrendLine.js"],"names":["React","Component","PropTypes","ascending","d3Ascending","noop","strokeDashTypes","saveNodeType","isHover","getXValue","StraightLine","ClickableCircle","HoverTextNearMouse","EachTrendLine","props","handleEdge1Drag","bind","handleEdge2Drag","handleLineDragStart","handleLineDrag","handleEdge1DragStart","handleEdge2DragStart","handleDragComplete","handleHover","nodes","state","hover","x1Value","y1Value","x2Value","y2Value","dragStart","moreProps","index","onDrag","xScale","yScale","chartConfig","xAccessor","fullData","startPos","mouseXY","x1","y1","x2","y2","dx","dy","newX1Value","newY1Value","invert","newX2Value","newY2Value","setState","anchor","undefined","onDragComplete","getNewXY","hovering","type","stroke","strokeWidth","strokeOpacity","strokeDasharray","r","edgeStrokeWidth","edgeFill","edgeStroke","edgeInteractiveCursor","lineInteractiveCursor","hoverText","selected","hoverTextEnabled","enable","hoverTextSelected","selectedText","hoverTextUnselected","text","restHoverTextProps","plotData","mouseY","x","domain","slice","sort","small","big","y","newY","Math","min","max","propTypes","any","isRequired","number","oneOf","func","onEdge1Drag","onEdge2Drag","onSelect","onUnSelect","defaultClassName","string","bool","object","defaultProps"],"mappings":"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","file":"EachTrendLine.js","sourcesContent":["import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport { ascending as d3Ascending } from \"d3-array\";\nimport { noop, strokeDashTypes } from \"../../utils\";\nimport { saveNodeType, isHover } from \"../utils\";\nimport { getXValue } from \"../../utils/ChartDataUtil\";\n\nimport StraightLine from \"../components/StraightLine\";\nimport ClickableCircle from \"../components/ClickableCircle\";\nimport HoverTextNearMouse from \"../components/HoverTextNearMouse\";\n\nclass EachTrendLine extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\n\t\tthis.handleEdge1Drag = this.handleEdge1Drag.bind(this);\n\t\tthis.handleEdge2Drag = this.handleEdge2Drag.bind(this);\n\t\tthis.handleLineDragStart = this.handleLineDragStart.bind(this);\n\t\tthis.handleLineDrag = this.handleLineDrag.bind(this);\n\n\t\tthis.handleEdge1DragStart = this.handleEdge1DragStart.bind(this);\n\t\tthis.handleEdge2DragStart = this.handleEdge2DragStart.bind(this);\n\n\t\tthis.handleDragComplete = this.handleDragComplete.bind(this);\n\n\t\tthis.handleHover = this.handleHover.bind(this);\n\n\t\tthis.isHover = isHover.bind(this);\n\t\tthis.saveNodeType = saveNodeType.bind(this);\n\t\tthis.nodes = {};\n\n\t\tthis.state = {\n\t\t\thover: false,\n\t\t};\n\t}\n\thandleLineDragStart() {\n\t\tconst {\n\t\t\tx1Value, y1Value,\n\t\t\tx2Value, y2Value,\n\t\t} = this.props;\n\n\t\tthis.dragStart = {\n\t\t\tx1Value, y1Value,\n\t\t\tx2Value, y2Value,\n\t\t};\n\t}\n\thandleLineDrag(moreProps) {\n\t\tconst { index, onDrag } = this.props;\n\n\t\tconst {\n\t\t\tx1Value, y1Value,\n\t\t\tx2Value, y2Value,\n\t\t} = this.dragStart;\n\n\t\tconst { xScale, chartConfig: { yScale }, xAccessor, fullData } = moreProps;\n\t\tconst { startPos, mouseXY } = moreProps;\n\n\t\tconst x1 = xScale(x1Value);\n\t\tconst y1 = yScale(y1Value);\n\t\tconst x2 = xScale(x2Value);\n\t\tconst y2 = yScale(y2Value);\n\n\t\tconst dx = startPos[0] - mouseXY[0];\n\t\tconst dy = startPos[1] - mouseXY[1];\n\n\t\tconst newX1Value = getXValue(xScale, xAccessor, [x1 - dx, y1 - dy], fullData);\n\t\tconst newY1Value = yScale.invert(y1 - dy);\n\t\tconst newX2Value = getXValue(xScale, xAccessor, [x2 - dx, y2 - dy], fullData);\n\t\tconst newY2Value = yScale.invert(y2 - dy);\n\n\t\tonDrag(index, {\n\t\t\tx1Value: newX1Value,\n\t\t\ty1Value: newY1Value,\n\t\t\tx2Value: newX2Value,\n\t\t\ty2Value: newY2Value,\n\t\t});\n\t}\n\thandleEdge1DragStart() {\n\t\tthis.setState({\n\t\t\tanchor: \"edge2\"\n\t\t});\n\t}\n\thandleEdge2DragStart() {\n\t\tthis.setState({\n\t\t\tanchor: \"edge1\"\n\t\t});\n\t}\n\thandleDragComplete(...rest) {\n\t\tthis.setState({\n\t\t\tanchor: undefined\n\t\t});\n\t\tthis.props.onDragComplete(...rest);\n\t}\n\thandleEdge1Drag(moreProps) {\n\t\tconst { index, onDrag } = this.props;\n\t\tconst {\n\t\t\tx2Value, y2Value,\n\t\t} = this.props;\n\n\t\tconst [x1Value, y1Value] = getNewXY(moreProps);\n\n\t\tonDrag(index, {\n\t\t\tx1Value,\n\t\t\ty1Value,\n\t\t\tx2Value,\n\t\t\ty2Value,\n\t\t});\n\t}\n\thandleEdge2Drag(moreProps) {\n\t\tconst { index, onDrag } = this.props;\n\t\tconst {\n\t\t\tx1Value, y1Value,\n\t\t} = this.props;\n\n\t\tconst [x2Value, y2Value] = getNewXY(moreProps);\n\n\t\tonDrag(index, {\n\t\t\tx1Value,\n\t\t\ty1Value,\n\t\t\tx2Value,\n\t\t\ty2Value,\n\t\t});\n\t}\n\thandleHover(moreProps) {\n\t\tif (this.state.hover !== moreProps.hovering) {\n\t\t\tthis.setState({\n\t\t\t\thover: moreProps.hovering\n\t\t\t});\n\t\t}\n\t}\n\trender() {\n\t\tconst {\n\t\t\tx1Value,\n\t\t\ty1Value,\n\t\t\tx2Value,\n\t\t\ty2Value,\n\t\t\ttype,\n\t\t\tstroke,\n\t\t\tstrokeWidth,\n\t\t\tstrokeOpacity,\n\t\t\tstrokeDasharray,\n\t\t\tr,\n\t\t\tedgeStrokeWidth,\n\t\t\tedgeFill,\n\t\t\tedgeStroke,\n\t\t\tedgeInteractiveCursor,\n\t\t\tlineInteractiveCursor,\n\t\t\thoverText,\n\t\t\tselected,\n\n\t\t\tonDragComplete,\n\t\t} = this.props;\n\n\t\tconst {\n\t\t\tenable: hoverTextEnabled,\n\t\t\tselectedText: hoverTextSelected,\n\t\t\ttext: hoverTextUnselected,\n\t\t\t...restHoverTextProps\n\t\t} = hoverText;\n\n\t\tconst { hover, anchor } = this.state;\n\n\t\treturn \n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t;\n\t}\n}\n\nexport function getNewXY(moreProps) {\n\tconst { xScale, chartConfig: { yScale }, xAccessor, plotData, mouseXY } = moreProps;\n\tconst mouseY = mouseXY[1];\n\n\tconst x = getXValue(xScale, xAccessor, mouseXY, plotData);\n\n\tconst [small, big] = yScale.domain().slice().sort(d3Ascending);\n\tconst y = yScale.invert(mouseY);\n\tconst newY = Math.min(Math.max(y, small), big);\n\n\treturn [x, newY];\n}\n\nEachTrendLine.propTypes = {\n\tx1Value: PropTypes.any.isRequired,\n\tx2Value: PropTypes.any.isRequired,\n\ty1Value: PropTypes.any.isRequired,\n\ty2Value: PropTypes.any.isRequired,\n\n\tindex: PropTypes.number,\n\n\ttype: PropTypes.oneOf([\n\t\t\"XLINE\", // extends from -Infinity to +Infinity\n\t\t\"RAY\", // extends to +/-Infinity in one direction\n\t\t\"LINE\", // extends between the set bounds\n\t]).isRequired,\n\n\tonDrag: PropTypes.func.isRequired,\n\tonEdge1Drag: PropTypes.func.isRequired,\n\tonEdge2Drag: PropTypes.func.isRequired,\n\tonDragComplete: PropTypes.func.isRequired,\n\tonSelect: PropTypes.func.isRequired,\n\tonUnSelect: PropTypes.func.isRequired,\n\n\tr: PropTypes.number.isRequired,\n\tstrokeOpacity: PropTypes.number.isRequired,\n\tdefaultClassName: PropTypes.string,\n\n\tselected: PropTypes.bool,\n\n\tstroke: PropTypes.string.isRequired,\n\tstrokeWidth: PropTypes.number.isRequired,\n\tstrokeDasharray: PropTypes.oneOf(strokeDashTypes),\n\n\tedgeStrokeWidth: PropTypes.number.isRequired,\n\tedgeStroke: PropTypes.string.isRequired,\n\tedgeInteractiveCursor: PropTypes.string.isRequired,\n\tlineInteractiveCursor: PropTypes.string.isRequired,\n\tedgeFill: PropTypes.string.isRequired,\n\thoverText: PropTypes.object.isRequired,\n};\n\nEachTrendLine.defaultProps = {\n\tonDrag: noop,\n\tonEdge1Drag: noop,\n\tonEdge2Drag: noop,\n\tonDragComplete: noop,\n\tonSelect: noop,\n\tonUnSelect: noop,\n\n\tselected: false,\n\n\tedgeStroke: \"#000000\",\n\tedgeFill: \"#FFFFFF\",\n\tedgeStrokeWidth: 2,\n\tr: 5,\n\tstrokeWidth: 1,\n\tstrokeOpacity: 1,\n\tstrokeDasharray: \"Solid\",\n\thoverText: {\n\t\tenable: false,\n\t}\n};\n\nexport default EachTrendLine;"]} \ No newline at end of file diff --git a/es/lib/series/LineSeries.js b/es/lib/series/LineSeries.js index a5800c9..881d6d9 100644 --- a/es/lib/series/LineSeries.js +++ b/es/lib/series/LineSeries.js @@ -208,9 +208,12 @@ var LineSeries = function (_Component) { }, { key: "render", value: function render() { - var highlightOnHover = this.props.highlightOnHover; + var _props6 = this.props, + highlightOnHover = _props6.highlightOnHover, + onHover = _props6.onHover, + onUnHover = _props6.onUnHover; - var hoverProps = highlightOnHover ? { + var hoverProps = highlightOnHover || onHover || onUnHover ? { isHover: this.isHover, drawOn: ["mousemove", "pan"], canvasToDraw: getMouseCanvas @@ -226,7 +229,9 @@ var LineSeries = function (_Component) { onClickWhenHover: this.props.onClick, onDoubleClickWhenHover: this.props.onDoubleClick, - onContextMenuWhenHover: this.props.onContextMenu + onContextMenuWhenHover: this.props.onContextMenu, + onHover: this.props.onHover, + onUnHover: this.props.onUnHover }, hoverProps)); } }]); @@ -264,6 +269,8 @@ LineSeries.propTypes = { highlightOnHover: PropTypes.bool, onClick: PropTypes.func, onDoubleClick: PropTypes.func, + onHover: PropTypes.func, + onUnHover: PropTypes.func, onContextMenu: PropTypes.func, yAccessor: PropTypes.func, connectNulls: PropTypes.bool, diff --git a/es/lib/series/LineSeries.js.map b/es/lib/series/LineSeries.js.map index 5652605..96c6cf7 100644 --- a/es/lib/series/LineSeries.js.map +++ b/es/lib/series/LineSeries.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../../../src/lib/series/LineSeries.js"],"names":["React","Component","PropTypes","line","d3Line","GenericChartComponent","getAxisCanvas","getMouseCanvas","isDefined","getClosestItemIndexes","strokeDashTypes","getStrokeDasharray","hexToRGBA","LineSeries","props","renderSVG","bind","drawOnCanvas","isHover","moreProps","highlightOnHover","yAccessor","hoverTolerance","mouseXY","currentItem","xScale","plotData","chartConfig","yScale","origin","xAccessor","x","y","radius","invert","left","right","cy","cx","hovering1","Math","pow","l","r","x1","y1","x2","y2","m","b","desiredY","round","hovering2","ctx","stroke","strokeOpacity","strokeWidth","hoverStrokeWidth","lineCap","lineJoin","defined","strokeDasharray","interpolation","canvasClip","connectNulls","hovering","save","lineWidth","strokeStyle","setLineDash","split","dataSeries","d","curve","beginPath","context","restore","style","fill","className","hoverProps","drawOn","canvasToDraw","onClick","onDoubleClick","onContextMenu","propTypes","string","number","func","oneOf","bool","object","defaultProps","isNaN","e","console","log"],"mappings":"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","file":"LineSeries.js","sourcesContent":["\n\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { line as d3Line } from \"d3-shape\";\n\nimport GenericChartComponent from \"../GenericChartComponent\";\nimport { getAxisCanvas, getMouseCanvas } from \"../GenericComponent\";\n\nimport {\n\tisDefined,\n\tgetClosestItemIndexes,\n\tstrokeDashTypes,\n\tgetStrokeDasharray,\n\thexToRGBA,\n} from \"../utils\";\n\nclass LineSeries extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.renderSVG = this.renderSVG.bind(this);\n\t\tthis.drawOnCanvas = this.drawOnCanvas.bind(this);\n\t\tthis.isHover = this.isHover.bind(this);\n\t}\n\tisHover(moreProps) {\n\t\t// console.log(\"HERE\")\n\t\tconst { highlightOnHover, yAccessor, hoverTolerance } = this.props;\n\n\t\tif (!highlightOnHover) return false;\n\n\t\tconst { mouseXY, currentItem, xScale, plotData } = moreProps;\n\t\tconst { chartConfig: { yScale, origin } } = moreProps;\n\n\t\tconst { xAccessor } = moreProps;\n\n\t\tconst [x, y] = mouseXY;\n\t\tconst radius = hoverTolerance;\n\n\t\tconst { left, right } = getClosestItemIndexes(plotData, xScale.invert(x), xAccessor);\n\t\tif (left === right) {\n\t\t\tconst cy = yScale(yAccessor(currentItem)) + origin[1];\n\t\t\tconst cx = xScale(xAccessor(currentItem)) + origin[0];\n\n\t\t\tconst hovering1 = Math.pow(x - cx, 2) + Math.pow(y - cy, 2) < Math.pow(radius, 2);\n\n\t\t\treturn hovering1;\n\t\t} else {\n\t\t\tconst l = plotData[left];\n\t\t\tconst r = plotData[right];\n\t\t\tconst x1 = xScale(xAccessor(l)) + origin[0];\n\t\t\tconst y1 = yScale(yAccessor(l)) + origin[1];\n\t\t\tconst x2 = xScale(xAccessor(r)) + origin[0];\n\t\t\tconst y2 = yScale(yAccessor(r)) + origin[1];\n\n\t\t\t// y = m * x + b\n\t\t\tconst m /* slope */ = (y2 - y1) / (x2 - x1);\n\t\t\tconst b /* y intercept */ = -1 * m * x1 + y1;\n\n\t\t\tconst desiredY = Math.round(m * x + b);\n\n\t\t\tconst hovering2 = y >= desiredY - radius && y <= desiredY + radius;\n\n\t\t\treturn hovering2;\n\t\t}\n\t}\n\tdrawOnCanvas(ctx, moreProps) {\n\t\tconst {\n\t\t\tyAccessor,\n\t\t\tstroke,\n\t\t\tstrokeOpacity,\n\t\t\tstrokeWidth,\n\t\t\thoverStrokeWidth,\n\t\t\tlineCap,\n\t\t\tlineJoin,\n\t\t\tdefined,\n\t\t\tstrokeDasharray,\n\t\t\tinterpolation,\n\t\t\tcanvasClip\n\t\t} = this.props;\n\n\t\tconst { connectNulls } = this.props;\n\n\t\tconst { xAccessor } = moreProps;\n\t\tconst { xScale, chartConfig: { yScale }, plotData, hovering } = moreProps;\n\n\t\tif (canvasClip) {\n\t\t\tctx.save();\n\t\t\tcanvasClip(ctx, moreProps);\n\t\t}\n\n\t\tctx.lineWidth = hovering ? hoverStrokeWidth : strokeWidth;\n ctx.lineCap = lineCap;\n ctx.lineJoin = lineJoin;\n\t\tctx.strokeStyle = hexToRGBA(stroke, strokeOpacity);\n\t\tctx.setLineDash(getStrokeDasharray(strokeDasharray).split(\",\"));\n\n\t\tconst dataSeries = d3Line()\n\t\t\t.x(d => Math.round(xScale(xAccessor(d))))\n\t\t\t.y(d => Math.round(yScale(yAccessor(d))));\n\n\t\tif (isDefined(interpolation)) {\n\t\t\tdataSeries.curve(interpolation);\n\t\t}\n\t\tif (!connectNulls) {\n\t\t\tdataSeries.defined(d => defined(yAccessor(d)));\n\t\t}\n\n\t\tctx.beginPath();\n\t\tdataSeries.context(ctx)(plotData);\n\t\tctx.stroke();\n\n\t\tif (canvasClip) {\n\t\t\tctx.restore();\n\t\t}\n\t}\n\trenderSVG(moreProps) {\n\t\tconst { yAccessor, stroke, strokeOpacity, strokeWidth, hoverStrokeWidth,\n lineCap, lineJoin, defined, strokeDasharray } = this.props;\n\t\tconst { connectNulls } = this.props;\n\t\tconst { interpolation, style } = this.props;\n\t\tconst { xAccessor, chartConfig } = moreProps;\n\n\t\tconst { xScale, plotData, hovering } = moreProps;\n\n\t\tconst { yScale } = chartConfig;\n\t\tconst dataSeries = d3Line()\n\t\t\t.x(d => Math.round(xScale(xAccessor(d))))\n\t\t\t.y(d => Math.round(yScale(yAccessor(d))));\n\n\t\tif (isDefined(interpolation)) {\n\t\t\tdataSeries.curve(interpolation);\n\t\t}\n\t\tif (!connectNulls) {\n\t\t\tdataSeries.defined(d => defined(yAccessor(d)));\n\t\t}\n\t\tconst d = dataSeries(plotData);\n\n\t\tconst { fill, className } = this.props;\n\n\t\treturn (\n\t\t\t\n\t\t);\n\t}\n\trender() {\n\t\tconst { highlightOnHover } = this.props;\n\t\tconst hoverProps = highlightOnHover\n\t\t\t? {\n\t\t\t\tisHover: this.isHover,\n\t\t\t\tdrawOn: [\"mousemove\", \"pan\"],\n\t\t\t\tcanvasToDraw: getMouseCanvas\n\t\t\t}\n\t\t\t: {\n\t\t\t\tdrawOn: [\"pan\"],\n\t\t\t\tcanvasToDraw: getAxisCanvas\n\t\t\t};\n\n\t\treturn ;\n\t}\n}\n\n/*\nfunction segment(points, ctx) {\n\tctx.beginPath();\n\n\tconst [x, y] = first(points);\n\tctx.moveTo(x, y);\n\tfor (let i = 1; i < points.length; i++) {\n\t\tconst [x1, y1] = points[i];\n\t\tctx.lineTo(x1, y1);\n\t}\n\n\tctx.stroke();\n}\n*/\n\nLineSeries.propTypes = {\n\tclassName: PropTypes.string,\n\tstrokeWidth: PropTypes.number,\n\tstrokeOpacity: PropTypes.number,\n\tstroke: PropTypes.string,\n\thoverStrokeWidth: PropTypes.number,\n\tlineCap: PropTypes.string,\n\tlineJoin: PropTypes.string,\n\tfill: PropTypes.string,\n\tdefined: PropTypes.func,\n\thoverTolerance: PropTypes.number,\n\tstrokeDasharray: PropTypes.oneOf(strokeDashTypes),\n\thighlightOnHover: PropTypes.bool,\n\tonClick: PropTypes.func,\n\tonDoubleClick: PropTypes.func,\n\tonContextMenu: PropTypes.func,\n\tyAccessor: PropTypes.func,\n\tconnectNulls: PropTypes.bool,\n\tinterpolation: PropTypes.func,\n\tcanvasClip: PropTypes.func,\n\tstyle: PropTypes.object,\n};\n\nLineSeries.defaultProps = {\n\tclassName: \"line \",\n\tstrokeWidth: 1,\n\tstrokeOpacity: 1,\n\thoverStrokeWidth: 4,\n\tlineCap: \"round\",\n\tlineJoin: \"round\",\n\tfill: \"none\",\n\tstroke: \"#4682B4\",\n\tstrokeDasharray: \"Solid\",\n\tdefined: d => !isNaN(d),\n\thoverTolerance: 6,\n\thighlightOnHover: false,\n\tconnectNulls: false,\n\tonClick: function(e) { console.log(\"Click\", e); },\n\tonDoubleClick: function(e) { console.log(\"Double Click\", e); },\n\tonContextMenu: function(e) { console.log(\"Right Click\", e); },\n};\n\nexport default LineSeries;\n"]} \ No newline at end of file +{"version":3,"sources":["../../../../src/lib/series/LineSeries.js"],"names":["React","Component","PropTypes","line","d3Line","GenericChartComponent","getAxisCanvas","getMouseCanvas","isDefined","getClosestItemIndexes","strokeDashTypes","getStrokeDasharray","hexToRGBA","LineSeries","props","renderSVG","bind","drawOnCanvas","isHover","moreProps","highlightOnHover","yAccessor","hoverTolerance","mouseXY","currentItem","xScale","plotData","chartConfig","yScale","origin","xAccessor","x","y","radius","invert","left","right","cy","cx","hovering1","Math","pow","l","r","x1","y1","x2","y2","m","b","desiredY","round","hovering2","ctx","stroke","strokeOpacity","strokeWidth","hoverStrokeWidth","lineCap","lineJoin","defined","strokeDasharray","interpolation","canvasClip","connectNulls","hovering","save","lineWidth","strokeStyle","setLineDash","split","dataSeries","d","curve","beginPath","context","restore","style","fill","className","onHover","onUnHover","hoverProps","drawOn","canvasToDraw","onClick","onDoubleClick","onContextMenu","propTypes","string","number","func","oneOf","bool","object","defaultProps","isNaN","e","console","log"],"mappings":"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","file":"LineSeries.js","sourcesContent":["\n\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { line as d3Line } from \"d3-shape\";\n\nimport GenericChartComponent from \"../GenericChartComponent\";\nimport { getAxisCanvas, getMouseCanvas } from \"../GenericComponent\";\n\nimport {\n\tisDefined,\n\tgetClosestItemIndexes,\n\tstrokeDashTypes,\n\tgetStrokeDasharray,\n\thexToRGBA,\n} from \"../utils\";\n\nclass LineSeries extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.renderSVG = this.renderSVG.bind(this);\n\t\tthis.drawOnCanvas = this.drawOnCanvas.bind(this);\n\t\tthis.isHover = this.isHover.bind(this);\n\t}\n\tisHover(moreProps) {\n\t\t// console.log(\"HERE\")\n\t\tconst { highlightOnHover, yAccessor, hoverTolerance } = this.props;\n\n\t\tif (!highlightOnHover) return false;\n\n\t\tconst { mouseXY, currentItem, xScale, plotData } = moreProps;\n\t\tconst { chartConfig: { yScale, origin } } = moreProps;\n\n\t\tconst { xAccessor } = moreProps;\n\n\t\tconst [x, y] = mouseXY;\n\t\tconst radius = hoverTolerance;\n\n\t\tconst { left, right } = getClosestItemIndexes(plotData, xScale.invert(x), xAccessor);\n\t\tif (left === right) {\n\t\t\tconst cy = yScale(yAccessor(currentItem)) + origin[1];\n\t\t\tconst cx = xScale(xAccessor(currentItem)) + origin[0];\n\n\t\t\tconst hovering1 = Math.pow(x - cx, 2) + Math.pow(y - cy, 2) < Math.pow(radius, 2);\n\n\t\t\treturn hovering1;\n\t\t} else {\n\t\t\tconst l = plotData[left];\n\t\t\tconst r = plotData[right];\n\t\t\tconst x1 = xScale(xAccessor(l)) + origin[0];\n\t\t\tconst y1 = yScale(yAccessor(l)) + origin[1];\n\t\t\tconst x2 = xScale(xAccessor(r)) + origin[0];\n\t\t\tconst y2 = yScale(yAccessor(r)) + origin[1];\n\n\t\t\t// y = m * x + b\n\t\t\tconst m /* slope */ = (y2 - y1) / (x2 - x1);\n\t\t\tconst b /* y intercept */ = -1 * m * x1 + y1;\n\n\t\t\tconst desiredY = Math.round(m * x + b);\n\n\t\t\tconst hovering2 = y >= desiredY - radius && y <= desiredY + radius;\n\n\t\t\treturn hovering2;\n\t\t}\n\t}\n\tdrawOnCanvas(ctx, moreProps) {\n\t\tconst {\n\t\t\tyAccessor,\n\t\t\tstroke,\n\t\t\tstrokeOpacity,\n\t\t\tstrokeWidth,\n\t\t\thoverStrokeWidth,\n\t\t\tlineCap,\n\t\t\tlineJoin,\n\t\t\tdefined,\n\t\t\tstrokeDasharray,\n\t\t\tinterpolation,\n\t\t\tcanvasClip\n\t\t} = this.props;\n\n\t\tconst { connectNulls } = this.props;\n\n\t\tconst { xAccessor } = moreProps;\n\t\tconst { xScale, chartConfig: { yScale }, plotData, hovering } = moreProps;\n\n\t\tif (canvasClip) {\n\t\t\tctx.save();\n\t\t\tcanvasClip(ctx, moreProps);\n\t\t}\n\n\t\tctx.lineWidth = hovering ? hoverStrokeWidth : strokeWidth;\n ctx.lineCap = lineCap;\n ctx.lineJoin = lineJoin;\n\t\tctx.strokeStyle = hexToRGBA(stroke, strokeOpacity);\n\t\tctx.setLineDash(getStrokeDasharray(strokeDasharray).split(\",\"));\n\n\t\tconst dataSeries = d3Line()\n\t\t\t.x(d => Math.round(xScale(xAccessor(d))))\n\t\t\t.y(d => Math.round(yScale(yAccessor(d))));\n\n\t\tif (isDefined(interpolation)) {\n\t\t\tdataSeries.curve(interpolation);\n\t\t}\n\t\tif (!connectNulls) {\n\t\t\tdataSeries.defined(d => defined(yAccessor(d)));\n\t\t}\n\n\t\tctx.beginPath();\n\t\tdataSeries.context(ctx)(plotData);\n\t\tctx.stroke();\n\n\t\tif (canvasClip) {\n\t\t\tctx.restore();\n\t\t}\n\t}\n\trenderSVG(moreProps) {\n\t\tconst { yAccessor, stroke, strokeOpacity, strokeWidth, hoverStrokeWidth,\n lineCap, lineJoin, defined, strokeDasharray } = this.props;\n\t\tconst { connectNulls } = this.props;\n\t\tconst { interpolation, style } = this.props;\n\t\tconst { xAccessor, chartConfig } = moreProps;\n\n\t\tconst { xScale, plotData, hovering } = moreProps;\n\n\t\tconst { yScale } = chartConfig;\n\t\tconst dataSeries = d3Line()\n\t\t\t.x(d => Math.round(xScale(xAccessor(d))))\n\t\t\t.y(d => Math.round(yScale(yAccessor(d))));\n\n\t\tif (isDefined(interpolation)) {\n\t\t\tdataSeries.curve(interpolation);\n\t\t}\n\t\tif (!connectNulls) {\n\t\t\tdataSeries.defined(d => defined(yAccessor(d)));\n\t\t}\n\t\tconst d = dataSeries(plotData);\n\n\t\tconst { fill, className } = this.props;\n\n\t\treturn (\n\t\t\t\n\t\t);\n\t}\n\trender() {\n\t\tconst { highlightOnHover, onHover, onUnHover } = this.props;\n\t\tconst hoverProps = (highlightOnHover || onHover || onUnHover)\n\t\t\t? {\n\t\t\t\tisHover: this.isHover,\n\t\t\t\tdrawOn: [\"mousemove\", \"pan\"],\n\t\t\t\tcanvasToDraw: getMouseCanvas\n\t\t\t}\n\t\t\t: {\n\t\t\t\tdrawOn: [\"pan\"],\n\t\t\t\tcanvasToDraw: getAxisCanvas\n\t\t\t};\n\n\t\treturn ;\n\t}\n}\n\n/*\nfunction segment(points, ctx) {\n\tctx.beginPath();\n\n\tconst [x, y] = first(points);\n\tctx.moveTo(x, y);\n\tfor (let i = 1; i < points.length; i++) {\n\t\tconst [x1, y1] = points[i];\n\t\tctx.lineTo(x1, y1);\n\t}\n\n\tctx.stroke();\n}\n*/\n\nLineSeries.propTypes = {\n\tclassName: PropTypes.string,\n\tstrokeWidth: PropTypes.number,\n\tstrokeOpacity: PropTypes.number,\n\tstroke: PropTypes.string,\n\thoverStrokeWidth: PropTypes.number,\n\tlineCap: PropTypes.string,\n\tlineJoin: PropTypes.string,\n\tfill: PropTypes.string,\n\tdefined: PropTypes.func,\n\thoverTolerance: PropTypes.number,\n\tstrokeDasharray: PropTypes.oneOf(strokeDashTypes),\n\thighlightOnHover: PropTypes.bool,\n\tonClick: PropTypes.func,\n\tonDoubleClick: PropTypes.func,\n\tonHover: PropTypes.func,\n\tonUnHover: PropTypes.func,\n\tonContextMenu: PropTypes.func,\n\tyAccessor: PropTypes.func,\n\tconnectNulls: PropTypes.bool,\n\tinterpolation: PropTypes.func,\n\tcanvasClip: PropTypes.func,\n\tstyle: PropTypes.object,\n};\n\nLineSeries.defaultProps = {\n\tclassName: \"line \",\n\tstrokeWidth: 1,\n\tstrokeOpacity: 1,\n\thoverStrokeWidth: 4,\n\tlineCap: \"round\",\n\tlineJoin: \"round\",\n\tfill: \"none\",\n\tstroke: \"#4682B4\",\n\tstrokeDasharray: \"Solid\",\n\tdefined: d => !isNaN(d),\n\thoverTolerance: 6,\n\thighlightOnHover: false,\n\tconnectNulls: false,\n\tonClick: function(e) { console.log(\"Click\", e); },\n\tonDoubleClick: function(e) { console.log(\"Double Click\", e); },\n\tonContextMenu: function(e) { console.log(\"Right Click\", e); },\n};\n\nexport default LineSeries;\n"]} \ No newline at end of file diff --git a/es/lib/series/SARSeries.js b/es/lib/series/SARSeries.js index bbe2dce..6d57c31 100644 --- a/es/lib/series/SARSeries.js +++ b/es/lib/series/SARSeries.js @@ -59,8 +59,7 @@ var SARSeries = function (_Component) { var width = xScale(xAccessor(last(plotData))) - xScale(xAccessor(first(plotData))); var d = width / plotData.length * 0.5 / 2; - var rx = Math.max(0.5, d / 2) + (hovering ? 2 : 0); - var ry = Math.min(2, Math.max(0.5, d)) + (hovering ? 0 : 0); + var radius = Math.min(2, Math.max(0.5, d)) + (hovering ? 2 : 0); plotData.forEach(function (each) { var centerX = xScale(xAccessor(each)); @@ -71,7 +70,7 @@ var SARSeries = function (_Component) { ctx.strokeStyle = color; ctx.beginPath(); - ctx.ellipse(centerX, centerY, rx, ry, 0, 0, 2 * Math.PI); + ctx.ellipse(centerX, centerY, radius, radius, 0, 0, 2 * Math.PI); ctx.closePath(); ctx.fill(); ctx.stroke(); diff --git a/es/lib/series/SARSeries.js.map b/es/lib/series/SARSeries.js.map index bfe733d..019be33 100644 --- a/es/lib/series/SARSeries.js.map +++ b/es/lib/series/SARSeries.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../../../src/lib/series/SARSeries.js"],"names":["React","Component","PropTypes","GenericChartComponent","getAxisCanvas","getMouseCanvas","isDefined","first","last","hexToRGBA","SARSeries","props","renderSVG","bind","drawOnCanvas","isHover","moreProps","mouseXY","currentItem","yScale","chartConfig","yAccessor","y","currentY","ctx","fill","opacity","xAccessor","plotData","xScale","hovering","width","d","length","rx","Math","max","ry","min","forEach","centerX","each","centerY","color","close","falling","rising","fillStyle","strokeStyle","beginPath","ellipse","PI","closePath","stroke","className","filter","map","idx","highlightOnHover","hoverProps","drawOn","canvasToDraw","onClick","onDoubleClick","onContextMenu","propTypes","string","object","isRequired","func","number","bool","defaultProps","e","console","log"],"mappings":"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","file":"SARSeries.js","sourcesContent":["\n\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport GenericChartComponent from \"../GenericChartComponent\";\nimport { getAxisCanvas, getMouseCanvas } from \"../GenericComponent\";\n\nimport { isDefined, first, last, hexToRGBA } from \"../utils\";\n\nclass SARSeries extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.renderSVG = this.renderSVG.bind(this);\n\t\tthis.drawOnCanvas = this.drawOnCanvas.bind(this);\n\t\tthis.isHover = this.isHover.bind(this);\n\t}\n\tisHover(moreProps) {\n\t\tconst { mouseXY, currentItem, chartConfig: { yScale } } = moreProps;\n\t\tconst { yAccessor } = this.props;\n\t\tconst y = mouseXY[1];\n\t\tconst currentY = yScale(yAccessor(currentItem));\n\t\treturn y < currentY + 5 && y > currentY - 5;\n\t}\n\tdrawOnCanvas(ctx, moreProps) {\n\t\tconst { yAccessor, fill, opacity } = this.props;\n\t\tconst { xAccessor, plotData, xScale, chartConfig: { yScale }, hovering } = moreProps;\n\n\t\tconst width = xScale(xAccessor(last(plotData))) - xScale(xAccessor(first(plotData)));\n\n\t\tconst d = (width / plotData.length) * 0.5 / 2;\n\t\tconst rx = Math.max(0.5, d / 2) + (hovering ? 2 : 0);\n\t\tconst ry = Math.min(2, Math.max(0.5, d)) + (hovering ? 0 : 0);\n\n\t\tplotData.forEach(each => {\n\t\t\tconst centerX = xScale(xAccessor(each));\n\t\t\tconst centerY = yScale(yAccessor(each));\n\t\t\tconst color = yAccessor(each) > each.close\n\t\t\t\t? fill.falling\n\t\t\t\t: fill.rising;\n\n\t\t\tctx.fillStyle = hexToRGBA(color, opacity);\n\t\t\tctx.strokeStyle = color;\n\n\t\t\tctx.beginPath();\n\t\t\tctx.ellipse(centerX, centerY, rx, ry, 0, 0, 2 * Math.PI);\n\t\t\tctx.closePath();\n\t\t\tctx.fill();\n\t\t\tctx.stroke();\n\t\t});\n\t}\n\trenderSVG(moreProps) {\n\t\tconst { className, yAccessor } = this.props;\n\t\tconst { xAccessor, plotData, xScale, chartConfig: { yScale } } = moreProps;\n\t\t// console.log(moreProps);\n\n\t\treturn \n\t\t\t{plotData\n\t\t\t\t.filter(each => isDefined(yAccessor(each)))\n\t\t\t\t.map((each, idx) => {\n\t\t\t\t\treturn ;\n\t\t\t\t})}\n\t\t;\n\t}\n\n\trender() {\n\t\tconst { highlightOnHover } = this.props;\n\t\tconst hoverProps = highlightOnHover\n\t\t\t? {\n\t\t\t\tisHover: this.isHover,\n\t\t\t\tdrawOn: [\"mousemove\", \"pan\"],\n\t\t\t\tcanvasToDraw: getMouseCanvas\n\t\t\t}\n\t\t\t: {\n\t\t\t\tdrawOn: [\"pan\"],\n\t\t\t\tcanvasToDraw: getAxisCanvas\n\t\t\t};\n\n\t\treturn ;\n\t}\n}\n\nSARSeries.propTypes = {\n\tclassName: PropTypes.string,\n\tfill: PropTypes.object.isRequired,\n\tyAccessor: PropTypes.func.isRequired,\n\topacity: PropTypes.number.isRequired,\n\tonClick: PropTypes.func,\n\tonDoubleClick: PropTypes.func,\n\tonContextMenu: PropTypes.func,\n\thighlightOnHover: PropTypes.bool,\n};\n\nSARSeries.defaultProps = {\n\tclassName: \"react-stockcharts-sar\",\n\tfill: {\n\t\tfalling: \"#4682B4\",\n\t\trising: \"#15EC2E\",\n\t},\n\thighlightOnHover: true,\n\topacity: 0.2,\n\tonClick: function(e) { console.log(\"Click\", e); },\n\tonDoubleClick: function(e) { console.log(\"Double Click\", e); },\n\tonContextMenu: function(e) { console.log(\"Right Click\", e); },\n};\n\nexport default SARSeries;\n"]} \ No newline at end of file +{"version":3,"sources":["../../../../src/lib/series/SARSeries.js"],"names":["React","Component","PropTypes","GenericChartComponent","getAxisCanvas","getMouseCanvas","isDefined","first","last","hexToRGBA","SARSeries","props","renderSVG","bind","drawOnCanvas","isHover","moreProps","mouseXY","currentItem","yScale","chartConfig","yAccessor","y","currentY","ctx","fill","opacity","xAccessor","plotData","xScale","hovering","width","d","length","radius","Math","min","max","forEach","centerX","each","centerY","color","close","falling","rising","fillStyle","strokeStyle","beginPath","ellipse","PI","closePath","stroke","className","filter","map","idx","highlightOnHover","hoverProps","drawOn","canvasToDraw","onClick","onDoubleClick","onContextMenu","propTypes","string","object","isRequired","func","number","bool","defaultProps","e","console","log"],"mappings":"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","file":"SARSeries.js","sourcesContent":["\n\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport GenericChartComponent from \"../GenericChartComponent\";\nimport { getAxisCanvas, getMouseCanvas } from \"../GenericComponent\";\n\nimport { isDefined, first, last, hexToRGBA } from \"../utils\";\n\nclass SARSeries extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.renderSVG = this.renderSVG.bind(this);\n\t\tthis.drawOnCanvas = this.drawOnCanvas.bind(this);\n\t\tthis.isHover = this.isHover.bind(this);\n\t}\n\tisHover(moreProps) {\n\t\tconst { mouseXY, currentItem, chartConfig: { yScale } } = moreProps;\n\t\tconst { yAccessor } = this.props;\n\t\tconst y = mouseXY[1];\n\t\tconst currentY = yScale(yAccessor(currentItem));\n\t\treturn y < currentY + 5 && y > currentY - 5;\n\t}\n\tdrawOnCanvas(ctx, moreProps) {\n\t\tconst { yAccessor, fill, opacity } = this.props;\n\t\tconst { xAccessor, plotData, xScale, chartConfig: { yScale }, hovering } = moreProps;\n\n\t\tconst width = xScale(xAccessor(last(plotData))) - xScale(xAccessor(first(plotData)));\n\n\t\tconst d = (width / plotData.length) * 0.5 / 2;\n\t\tconst radius = Math.min(2, Math.max(0.5, d)) + (hovering ? 2 : 0);\n\n\t\tplotData.forEach(each => {\n\t\t\tconst centerX = xScale(xAccessor(each));\n\t\t\tconst centerY = yScale(yAccessor(each));\n\t\t\tconst color = yAccessor(each) > each.close\n\t\t\t\t? fill.falling\n\t\t\t\t: fill.rising;\n\n\t\t\tctx.fillStyle = hexToRGBA(color, opacity);\n\t\t\tctx.strokeStyle = color;\n\n\t\t\tctx.beginPath();\n\t\t\tctx.ellipse(centerX, centerY, radius, radius, 0, 0, 2 * Math.PI);\n\t\t\tctx.closePath();\n\t\t\tctx.fill();\n\t\t\tctx.stroke();\n\t\t});\n\t}\n\trenderSVG(moreProps) {\n\t\tconst { className, yAccessor } = this.props;\n\t\tconst { xAccessor, plotData, xScale, chartConfig: { yScale } } = moreProps;\n\t\t// console.log(moreProps);\n\n\t\treturn \n\t\t\t{plotData\n\t\t\t\t.filter(each => isDefined(yAccessor(each)))\n\t\t\t\t.map((each, idx) => {\n\t\t\t\t\treturn ;\n\t\t\t\t})}\n\t\t;\n\t}\n\n\trender() {\n\t\tconst { highlightOnHover } = this.props;\n\t\tconst hoverProps = highlightOnHover\n\t\t\t? {\n\t\t\t\tisHover: this.isHover,\n\t\t\t\tdrawOn: [\"mousemove\", \"pan\"],\n\t\t\t\tcanvasToDraw: getMouseCanvas\n\t\t\t}\n\t\t\t: {\n\t\t\t\tdrawOn: [\"pan\"],\n\t\t\t\tcanvasToDraw: getAxisCanvas\n\t\t\t};\n\n\t\treturn ;\n\t}\n}\n\nSARSeries.propTypes = {\n\tclassName: PropTypes.string,\n\tfill: PropTypes.object.isRequired,\n\tyAccessor: PropTypes.func.isRequired,\n\topacity: PropTypes.number.isRequired,\n\tonClick: PropTypes.func,\n\tonDoubleClick: PropTypes.func,\n\tonContextMenu: PropTypes.func,\n\thighlightOnHover: PropTypes.bool,\n};\n\nSARSeries.defaultProps = {\n\tclassName: \"react-stockcharts-sar\",\n\tfill: {\n\t\tfalling: \"#4682B4\",\n\t\trising: \"#15EC2E\",\n\t},\n\thighlightOnHover: true,\n\topacity: 0.2,\n\tonClick: function(e) { console.log(\"Click\", e); },\n\tonDoubleClick: function(e) { console.log(\"Double Click\", e); },\n\tonContextMenu: function(e) { console.log(\"Right Click\", e); },\n};\n\nexport default SARSeries;\n"]} \ No newline at end of file diff --git a/es/lib/series/StackedBarSeries.js b/es/lib/series/StackedBarSeries.js index fd6c21f..b66ea59 100644 --- a/es/lib/series/StackedBarSeries.js +++ b/es/lib/series/StackedBarSeries.js @@ -27,6 +27,13 @@ function roundRect(ctx, x, y, width, height, radius, fill, stroke) { if (typeof radius === 'undefined') { radius = 5; } + if (width / 2 < radius) { + radius = width / 2; + } + if (height / 2 < radius) { + radius = height / 2; + } + if (typeof radius === 'number') { radius = { tl: radius, tr: radius, br: radius, bl: radius }; } else { diff --git a/es/lib/series/StackedBarSeries.js.map b/es/lib/series/StackedBarSeries.js.map index df44e34..8775449 100644 --- a/es/lib/series/StackedBarSeries.js.map +++ b/es/lib/series/StackedBarSeries.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../../../src/lib/series/StackedBarSeries.js"],"names":["React","Component","PropTypes","nest","d3Nest","merge","stack","d3Stack","GenericChartComponent","getAxisCanvas","identity","hexToRGBA","head","functor","plotDataLengthBarWidth","roundRect","ctx","x","y","width","height","radius","fill","stroke","tl","tr","br","bl","defaultRadius","side","beginPath","moveTo","lineTo","quadraticCurveTo","closePath","StackedBarSeries","props","renderSVG","bind","drawOnCanvas","moreProps","xAccessor","drawOnCanvasHelper","svgHelper","clip","propTypes","baseAt","oneOfType","number","func","isRequired","direction","oneOf","bool","opacity","string","className","defaultProps","xScale","yScale","range","widthRatio","swapScales","identityStack","keys","data","response","map","key","i","arrays","array","d","index","arguments","length","stackFn","defaultPostAction","postRotateAction","rotateXY","chartConfig","plotData","bars","doStuff","drawOnCanvas2","convertToArray","item","Array","isArray","getBarsSVG2","yAccessor","modifiedYAccessor","modifiedXAccessor","modifiedXScale","modifiedYScale","postProcessor","getBars","each","idx","entries","forEach","outer","values","strokeStyle","fillStyle","fillRect","after","spaceBetweenBar","getClassName","getFill","getBase","widthFunctor","barWidth","Math","round","eachBarWidth","offset","ds","appearance","eachYAccessor","_","newData","h","groupOffset","groupWidth","filter","isNaN","bar"],"mappings":"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","file":"StackedBarSeries.js","sourcesContent":["\n\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport { nest as d3Nest } from \"d3-collection\";\nimport { merge } from \"d3-array\";\nimport { stack as d3Stack } from \"d3-shape\";\n\nimport GenericChartComponent from \"../GenericChartComponent\";\nimport { getAxisCanvas } from \"../GenericComponent\";\n\nimport { identity, hexToRGBA, head, functor, plotDataLengthBarWidth } from \"../utils\";\n\nfunction roundRect(ctx, x, y, width, height, radius, fill, stroke) {\n if (typeof stroke == 'undefined') {\n stroke = true;\n }\n if (typeof radius === 'undefined') {\n radius = 5;\n }\n if (typeof radius === 'number') {\n radius = {tl: radius, tr: radius, br: radius, bl: radius};\n } else {\n var defaultRadius = {tl: 0, tr: 0, br: 0, bl: 0};\n for (var side in defaultRadius) {\n radius[side] = radius[side] || defaultRadius[side];\n }\n }\n ctx.beginPath();\n ctx.moveTo(x + radius.tl, y);\n ctx.lineTo(x + width - radius.tr, y);\n ctx.quadraticCurveTo(x + width, y, x + width, y + radius.tr);\n ctx.lineTo(x + width, y + height - radius.br);\n ctx.quadraticCurveTo(x + width, y + height, x + width - radius.br, y + height);\n ctx.lineTo(x + radius.bl, y + height);\n ctx.quadraticCurveTo(x, y + height, x, y + height - radius.bl);\n ctx.lineTo(x, y + radius.tl);\n ctx.quadraticCurveTo(x, y, x + radius.tl, y);\n ctx.closePath();\n\n if (fill) {\n ctx.fill();\n }\n if (stroke) {\n ctx.stroke();\n }\n}\n\nclass StackedBarSeries extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.renderSVG = this.renderSVG.bind(this);\n\t\tthis.drawOnCanvas = this.drawOnCanvas.bind(this);\n\t}\n\tdrawOnCanvas(ctx, moreProps) {\n\t\tconst { xAccessor } = moreProps;\n\t\t// var { xScale, chartConfig: { yScale }, plotData } = moreProps;\n\n\t\tdrawOnCanvasHelper(ctx, this.props, moreProps, xAccessor, d3Stack);\n\t}\n\trenderSVG(moreProps) {\n\t\tconst { xAccessor } = moreProps;\n\n\t\treturn {svgHelper(this.props, moreProps, xAccessor, d3Stack)};\n\t}\n\trender() {\n\t\tconst { clip } = this.props;\n\n\t\treturn ;\n\t}\n}\n\nStackedBarSeries.propTypes = {\n\tbaseAt: PropTypes.oneOfType([\n\t\tPropTypes.number,\n\t\tPropTypes.func,\n\t]).isRequired,\n\tdirection: PropTypes.oneOf([\"up\", \"down\"]).isRequired,\n\tstroke: PropTypes.bool.isRequired,\n\twidth: PropTypes.oneOfType([\n\t\tPropTypes.number,\n\t\tPropTypes.func\n\t]).isRequired,\n\topacity: PropTypes.number.isRequired,\n\tfill: PropTypes.oneOfType([\n\t\tPropTypes.func, PropTypes.string\n\t]).isRequired,\n\tclassName: PropTypes.oneOfType([\n\t\tPropTypes.func, PropTypes.string\n\t]).isRequired,\n\tclip: PropTypes.bool.isRequired,\n radius: PropTypes.number\n};\n\nStackedBarSeries.defaultProps = {\n\tbaseAt: (xScale, yScale/* , d*/) => head(yScale.range()),\n\tdirection: \"up\",\n\tclassName: \"bar\",\n\tstroke: true,\n\tfill: \"#4682B4\",\n radius: 0,\n\topacity: 0.5,\n\twidth: plotDataLengthBarWidth,\n\twidthRatio: 0.8,\n\tclip: true,\n\tswapScales: false,\n};\n\nexport function identityStack() {\n\tlet keys = [];\n\tfunction stack(data) {\n\t\tconst response = keys.map((key, i) => {\n\t\t\t// eslint-disable-next-line prefer-const\n\t\t\tlet arrays = data.map(d => {\n\t\t\t\t// eslint-disable-next-line prefer-const\n\t\t\t\tlet array = [0, d[key]];\n\t\t\t\tarray.data = d;\n\t\t\t\treturn array;\n\t\t\t});\n\t\t\tarrays.key = key;\n\t\t\tarrays.index = i;\n\t\t\treturn arrays;\n\t\t});\n\t\treturn response;\n\t}\n\tstack.keys = function(x) {\n\t\tif (!arguments.length) {\n\t\t\treturn keys;\n\t\t}\n\t\tkeys = x;\n\t\treturn stack;\n\t};\n\treturn stack;\n}\n\n\nexport function drawOnCanvasHelper(ctx, props, moreProps, xAccessor, stackFn, defaultPostAction = identity, postRotateAction = rotateXY) {\n\tconst { xScale, chartConfig: { yScale }, plotData } = moreProps;\n\n\tconst bars = doStuff(props, xAccessor, plotData, xScale, yScale, stackFn, postRotateAction, defaultPostAction);\n\n\tdrawOnCanvas2(props, ctx, bars);\n}\n\nfunction convertToArray(item) {\n\treturn Array.isArray(item) ? item : [item];\n}\n\nexport function svgHelper(props, moreProps, xAccessor, stackFn, defaultPostAction = identity, postRotateAction = rotateXY) {\n\tconst { xScale, chartConfig: { yScale }, plotData } = moreProps;\n\tconst bars = doStuff(props, xAccessor, plotData, xScale, yScale, stackFn, postRotateAction, defaultPostAction);\n\treturn getBarsSVG2(props, bars);\n}\n\nfunction doStuff(props, xAccessor, plotData, xScale, yScale, stackFn, postRotateAction, defaultPostAction) {\n\tconst { yAccessor, swapScales } = props;\n\n\tconst modifiedYAccessor = swapScales ? convertToArray(props.xAccessor) : convertToArray(yAccessor);\n\tconst modifiedXAccessor = swapScales ? yAccessor : xAccessor;\n\n\tconst modifiedXScale = swapScales ? yScale : xScale;\n\tconst modifiedYScale = swapScales ? xScale : yScale;\n\n\tconst postProcessor = swapScales ? postRotateAction : defaultPostAction;\n\n\tconst bars = getBars(props, modifiedXAccessor, modifiedYAccessor, modifiedXScale, modifiedYScale, plotData, stackFn, postProcessor);\n\n\treturn bars;\n}\n\nexport const rotateXY = (array) => array.map(each => {\n\treturn {\n\t\t...each,\n\t\tx: each.y,\n\t\ty: each.x,\n\t\theight: each.width,\n\t\twidth: each.height\n\t};\n});\n\nexport function getBarsSVG2(props, bars) {\n\t/* eslint-disable react/prop-types */\n\tconst { opacity } = props;\n\t/* eslint-enable react/prop-types */\n\n\treturn bars.map((d, idx) => {\n\t\tif (d.width <= 1) {\n\t\t\treturn ;\n\t\t}\n\t\treturn ;\n\t});\n}\n\nexport function drawOnCanvas2(props, ctx, bars) {\n\tconst { stroke } = props;\n\n\tconst nest = d3Nest()\n\t\t.key(d => d.fill)\n\t\t.entries(bars);\n\n\tnest.forEach(outer => {\n\t\tconst { key, values } = outer;\n\t\tif (head(values).width > 1) {\n\t\t\tctx.strokeStyle = key;\n\t\t}\n\t\tconst fillStyle = head(values).width <= 1\n\t\t\t? key\n\t\t\t: hexToRGBA(key, props.opacity);\n\t\tctx.fillStyle = fillStyle;\n\n\t\tvalues.forEach(d => {\n\t\t\tif (d.width <= 1) {\n\t\t\t\t/* */\n\t\t\t\t/*\n\t\t\t\tctx.beginPath();\n\t\t\t\tctx.moveTo(d.x, d.y);\n\t\t\t\tctx.lineTo(d.x, d.y + d.height);\n\t\t\t\tctx.stroke();\n\t\t\t\t*/\n\t\t\t\tctx.fillRect(d.x - 0.5, d.y, 1, d.height);\n\t\t\t} else {\n\t\t\t\t/* */\n\t\t\t\t/*\n\t\t\t\tctx.beginPath();\n\t\t\t\tctx.rect(d.x, d.y, d.width, d.height);\n\t\t\t\tctx.fill();\n\t\t\t\t*/\n\n roundRect(ctx, d.x, d.y, d.width, d.height, props.radius, true, stroke);\n\t\t //ctx.fillRect(d.x, d.y, d.width, d.height);\n\t\t\t\t//if (stroke) ctx.strokeRect(d.x, d.y, d.width, d.height);\n\t\t\t}\n\n\t\t});\n\t});\n}\n\nexport function getBars(props, xAccessor, yAccessor, xScale, yScale, plotData, stack = identityStack, after = identity) {\n\tconst { baseAt, className, fill, stroke, spaceBetweenBar = 0 } = props;\n\n\tconst getClassName = functor(className);\n\tconst getFill = functor(fill);\n\tconst getBase = functor(baseAt);\n\n\tconst widthFunctor = functor(props.width);\n\tconst width = widthFunctor(props, {\n\t\txScale,\n\t\txAccessor,\n\t\tplotData\n\t});\n\n\tconst barWidth = Math.round(width);\n\n\tconst eachBarWidth = (barWidth - spaceBetweenBar * (yAccessor.length - 1)) / yAccessor.length;\n\n\tconst offset = (barWidth === 1 ? 0 : 0.5 * width);\n\n\tconst ds = plotData\n\t\t.map(each => {\n\t\t\t// eslint-disable-next-line prefer-const\n\t\t\tlet d = {\n\t\t\t\tappearance: {\n\t\t\t\t},\n\t\t\t\tx: xAccessor(each),\n\t\t\t};\n\t\t\tyAccessor.forEach((eachYAccessor, i) => {\n\t\t\t\tconst key = `y${i}`;\n\t\t\t\td[key] = eachYAccessor(each);\n\t\t\t\tconst appearance = {\n\t\t\t\t\tclassName: getClassName(each, i),\n\t\t\t\t\tstroke: stroke ? getFill(each, i) : \"none\",\n\t\t\t\t\tfill: getFill(each, i),\n\t\t\t\t};\n\t\t\t\td.appearance[key] = appearance;\n\t\t\t});\n\t\t\treturn d;\n\t\t});\n\n\tconst keys = yAccessor.map((_, i) => `y${i}`);\n\n\t// console.log(ds);\n\n\tconst data = stack().keys(keys)(ds);\n\n\t// console.log(data);\n\n\tconst newData = data.map((each, i) => {\n\t\tconst key = each.key;\n\t\treturn each.map((d) => {\n\t\t\t// eslint-disable-next-line prefer-const\n\t\t\tlet array = [d[0], d[1]];\n\t\t\tarray.data = {\n\t\t\t\tx: d.data.x,\n\t\t\t\ti,\n\t\t\t\tappearance: d.data.appearance[key]\n\t\t\t};\n\t\t\treturn array;\n\t\t});\n\t});\n\t// console.log(newData);\n\t// console.log(merge(newData));\n\n\tconst bars = merge(newData)\n\t\t// .filter(d => isDefined(d.y))\n\t\t.map(d => {\n\t\t\t// let baseValue = yScale.invert(getBase(xScale, yScale, d.datum));\n\t\t\tlet y = yScale(d[1]);\n\t\t\t/* let h = isDefined(d.y0) && d.y0 !== 0 && !isNaN(d.y0)\n\t\t\t\t\t? yScale(d.y0) - y\n\t\t\t\t\t: getBase(xScale, yScale, d.datum) - yScale(d.y)*/\n\t\t\tlet h = getBase(xScale, yScale, d.data) - yScale(d[1] - d[0]);\n\t\t\t// console.log(d.y, yScale.domain(), yScale.range())\n\t\t\t// let h = ;\n\t\t\t// if (d.y < 0) h = -h;\n\t\t\t// console.log(d, y, h)\n\t\t\tif (h < 0) {\n\t\t\t\ty = y + h;\n\t\t\t\th = -h;\n\t\t\t}\n\t\t\t// console.log(d.data.i, Math.round(offset - (d.data.i > 0 ? (eachBarWidth + spaceBetweenBar) * d.data.i : 0)))\n\t\t\t/* console.log(d.series, d.datum.date, d.x,\n\t\t\t\t\tgetBase(xScale, yScale, d.datum), `d.y=${d.y}, d.y0=${d.y0}, y=${y}, h=${h}`)*/\n\t\t\treturn {\n\t\t\t\t...d.data.appearance,\n\t\t\t\t// series: d.series,\n\t\t\t\t// i: d.x,\n\t\t\t\tx: Math.round(xScale(d.data.x) - width / 2),\n\t\t\t\ty: y,\n\t\t\t\tgroupOffset: Math.round(offset - (d.data.i > 0 ? (eachBarWidth + spaceBetweenBar) * d.data.i : 0)),\n\t\t\t\tgroupWidth: Math.round(eachBarWidth),\n\t\t\t\toffset: Math.round(offset),\n\t\t\t\theight: h,\n\t\t\t\twidth: barWidth,\n\t\t\t};\n\t\t})\n\t\t.filter(bar => !isNaN(bar.y));\n\n\treturn after(bars);\n}\n\nexport default StackedBarSeries;\n"]} \ No newline at end of file +{"version":3,"sources":["../../../../src/lib/series/StackedBarSeries.js"],"names":["React","Component","PropTypes","nest","d3Nest","merge","stack","d3Stack","GenericChartComponent","getAxisCanvas","identity","hexToRGBA","head","functor","plotDataLengthBarWidth","roundRect","ctx","x","y","width","height","radius","fill","stroke","tl","tr","br","bl","defaultRadius","side","beginPath","moveTo","lineTo","quadraticCurveTo","closePath","StackedBarSeries","props","renderSVG","bind","drawOnCanvas","moreProps","xAccessor","drawOnCanvasHelper","svgHelper","clip","propTypes","baseAt","oneOfType","number","func","isRequired","direction","oneOf","bool","opacity","string","className","defaultProps","xScale","yScale","range","widthRatio","swapScales","identityStack","keys","data","response","map","key","i","arrays","array","d","index","arguments","length","stackFn","defaultPostAction","postRotateAction","rotateXY","chartConfig","plotData","bars","doStuff","drawOnCanvas2","convertToArray","item","Array","isArray","getBarsSVG2","yAccessor","modifiedYAccessor","modifiedXAccessor","modifiedXScale","modifiedYScale","postProcessor","getBars","each","idx","entries","forEach","outer","values","strokeStyle","fillStyle","fillRect","after","spaceBetweenBar","getClassName","getFill","getBase","widthFunctor","barWidth","Math","round","eachBarWidth","offset","ds","appearance","eachYAccessor","_","newData","h","groupOffset","groupWidth","filter","isNaN","bar"],"mappings":"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","file":"StackedBarSeries.js","sourcesContent":["\n\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport { nest as d3Nest } from \"d3-collection\";\nimport { merge } from \"d3-array\";\nimport { stack as d3Stack } from \"d3-shape\";\n\nimport GenericChartComponent from \"../GenericChartComponent\";\nimport { getAxisCanvas } from \"../GenericComponent\";\n\nimport { identity, hexToRGBA, head, functor, plotDataLengthBarWidth } from \"../utils\";\n\nfunction roundRect(ctx, x, y, width, height, radius, fill, stroke) {\n if (typeof stroke == 'undefined') {\n stroke = true;\n }\n if (typeof radius === 'undefined') {\n radius = 5;\n }\n if (width / 2 < radius) {\n radius = width / 2;\n }\n if (height / 2 < radius) {\n radius = height / 2;\n }\n\n if (typeof radius === 'number') {\n radius = {tl: radius, tr: radius, br: radius, bl: radius};\n } else {\n var defaultRadius = {tl: 0, tr: 0, br: 0, bl: 0};\n for (var side in defaultRadius) {\n radius[side] = radius[side] || defaultRadius[side];\n }\n }\n ctx.beginPath();\n ctx.moveTo(x + radius.tl, y);\n ctx.lineTo(x + width - radius.tr, y);\n ctx.quadraticCurveTo(x + width, y, x + width, y + radius.tr);\n ctx.lineTo(x + width, y + height - radius.br);\n ctx.quadraticCurveTo(x + width, y + height, x + width - radius.br, y + height);\n ctx.lineTo(x + radius.bl, y + height);\n ctx.quadraticCurveTo(x, y + height, x, y + height - radius.bl);\n ctx.lineTo(x, y + radius.tl);\n ctx.quadraticCurveTo(x, y, x + radius.tl, y);\n ctx.closePath();\n\n if (fill) {\n ctx.fill();\n }\n if (stroke) {\n ctx.stroke();\n }\n}\n\nclass StackedBarSeries extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.renderSVG = this.renderSVG.bind(this);\n\t\tthis.drawOnCanvas = this.drawOnCanvas.bind(this);\n\t}\n\tdrawOnCanvas(ctx, moreProps) {\n\t\tconst { xAccessor } = moreProps;\n\t\t// var { xScale, chartConfig: { yScale }, plotData } = moreProps;\n\n\t\tdrawOnCanvasHelper(ctx, this.props, moreProps, xAccessor, d3Stack);\n\t}\n\trenderSVG(moreProps) {\n\t\tconst { xAccessor } = moreProps;\n\n\t\treturn {svgHelper(this.props, moreProps, xAccessor, d3Stack)};\n\t}\n\trender() {\n\t\tconst { clip } = this.props;\n\n\t\treturn ;\n\t}\n}\n\nStackedBarSeries.propTypes = {\n\tbaseAt: PropTypes.oneOfType([\n\t\tPropTypes.number,\n\t\tPropTypes.func,\n\t]).isRequired,\n\tdirection: PropTypes.oneOf([\"up\", \"down\"]).isRequired,\n\tstroke: PropTypes.bool.isRequired,\n\twidth: PropTypes.oneOfType([\n\t\tPropTypes.number,\n\t\tPropTypes.func\n\t]).isRequired,\n\topacity: PropTypes.number.isRequired,\n\tfill: PropTypes.oneOfType([\n\t\tPropTypes.func, PropTypes.string\n\t]).isRequired,\n\tclassName: PropTypes.oneOfType([\n\t\tPropTypes.func, PropTypes.string\n\t]).isRequired,\n\tclip: PropTypes.bool.isRequired,\n radius: PropTypes.number\n};\n\nStackedBarSeries.defaultProps = {\n\tbaseAt: (xScale, yScale/* , d*/) => head(yScale.range()),\n\tdirection: \"up\",\n\tclassName: \"bar\",\n\tstroke: true,\n\tfill: \"#4682B4\",\n radius: 0,\n\topacity: 0.5,\n\twidth: plotDataLengthBarWidth,\n\twidthRatio: 0.8,\n\tclip: true,\n\tswapScales: false,\n};\n\nexport function identityStack() {\n\tlet keys = [];\n\tfunction stack(data) {\n\t\tconst response = keys.map((key, i) => {\n\t\t\t// eslint-disable-next-line prefer-const\n\t\t\tlet arrays = data.map(d => {\n\t\t\t\t// eslint-disable-next-line prefer-const\n\t\t\t\tlet array = [0, d[key]];\n\t\t\t\tarray.data = d;\n\t\t\t\treturn array;\n\t\t\t});\n\t\t\tarrays.key = key;\n\t\t\tarrays.index = i;\n\t\t\treturn arrays;\n\t\t});\n\t\treturn response;\n\t}\n\tstack.keys = function(x) {\n\t\tif (!arguments.length) {\n\t\t\treturn keys;\n\t\t}\n\t\tkeys = x;\n\t\treturn stack;\n\t};\n\treturn stack;\n}\n\n\nexport function drawOnCanvasHelper(ctx, props, moreProps, xAccessor, stackFn, defaultPostAction = identity, postRotateAction = rotateXY) {\n\tconst { xScale, chartConfig: { yScale }, plotData } = moreProps;\n\n\tconst bars = doStuff(props, xAccessor, plotData, xScale, yScale, stackFn, postRotateAction, defaultPostAction);\n\n\tdrawOnCanvas2(props, ctx, bars);\n}\n\nfunction convertToArray(item) {\n\treturn Array.isArray(item) ? item : [item];\n}\n\nexport function svgHelper(props, moreProps, xAccessor, stackFn, defaultPostAction = identity, postRotateAction = rotateXY) {\n\tconst { xScale, chartConfig: { yScale }, plotData } = moreProps;\n\tconst bars = doStuff(props, xAccessor, plotData, xScale, yScale, stackFn, postRotateAction, defaultPostAction);\n\treturn getBarsSVG2(props, bars);\n}\n\nfunction doStuff(props, xAccessor, plotData, xScale, yScale, stackFn, postRotateAction, defaultPostAction) {\n\tconst { yAccessor, swapScales } = props;\n\n\tconst modifiedYAccessor = swapScales ? convertToArray(props.xAccessor) : convertToArray(yAccessor);\n\tconst modifiedXAccessor = swapScales ? yAccessor : xAccessor;\n\n\tconst modifiedXScale = swapScales ? yScale : xScale;\n\tconst modifiedYScale = swapScales ? xScale : yScale;\n\n\tconst postProcessor = swapScales ? postRotateAction : defaultPostAction;\n\n\tconst bars = getBars(props, modifiedXAccessor, modifiedYAccessor, modifiedXScale, modifiedYScale, plotData, stackFn, postProcessor);\n\n\treturn bars;\n}\n\nexport const rotateXY = (array) => array.map(each => {\n\treturn {\n\t\t...each,\n\t\tx: each.y,\n\t\ty: each.x,\n\t\theight: each.width,\n\t\twidth: each.height\n\t};\n});\n\nexport function getBarsSVG2(props, bars) {\n\t/* eslint-disable react/prop-types */\n\tconst { opacity } = props;\n\t/* eslint-enable react/prop-types */\n\n\treturn bars.map((d, idx) => {\n\t\tif (d.width <= 1) {\n\t\t\treturn ;\n\t\t}\n\t\treturn ;\n\t});\n}\n\nexport function drawOnCanvas2(props, ctx, bars) {\n\tconst { stroke } = props;\n\n\tconst nest = d3Nest()\n\t\t.key(d => d.fill)\n\t\t.entries(bars);\n\n\tnest.forEach(outer => {\n\t\tconst { key, values } = outer;\n\t\tif (head(values).width > 1) {\n\t\t\tctx.strokeStyle = key;\n\t\t}\n\t\tconst fillStyle = head(values).width <= 1\n\t\t\t? key\n\t\t\t: hexToRGBA(key, props.opacity);\n\t\tctx.fillStyle = fillStyle;\n\n\t\tvalues.forEach(d => {\n\t\t\tif (d.width <= 1) {\n\t\t\t\t/* */\n\t\t\t\t/*\n\t\t\t\tctx.beginPath();\n\t\t\t\tctx.moveTo(d.x, d.y);\n\t\t\t\tctx.lineTo(d.x, d.y + d.height);\n\t\t\t\tctx.stroke();\n\t\t\t\t*/\n\t\t\t\tctx.fillRect(d.x - 0.5, d.y, 1, d.height);\n\t\t\t} else {\n\t\t\t\t/* */\n\t\t\t\t/*\n\t\t\t\tctx.beginPath();\n\t\t\t\tctx.rect(d.x, d.y, d.width, d.height);\n\t\t\t\tctx.fill();\n\t\t\t\t*/\n\n roundRect(ctx, d.x, d.y, d.width, d.height, props.radius, true, stroke);\n\t\t //ctx.fillRect(d.x, d.y, d.width, d.height);\n\t\t\t\t//if (stroke) ctx.strokeRect(d.x, d.y, d.width, d.height);\n\t\t\t}\n\n\t\t});\n\t});\n}\n\nexport function getBars(props, xAccessor, yAccessor, xScale, yScale, plotData, stack = identityStack, after = identity) {\n\tconst { baseAt, className, fill, stroke, spaceBetweenBar = 0 } = props;\n\n\tconst getClassName = functor(className);\n\tconst getFill = functor(fill);\n\tconst getBase = functor(baseAt);\n\n\tconst widthFunctor = functor(props.width);\n\tconst width = widthFunctor(props, {\n\t\txScale,\n\t\txAccessor,\n\t\tplotData\n\t});\n\n\tconst barWidth = Math.round(width);\n\n\tconst eachBarWidth = (barWidth - spaceBetweenBar * (yAccessor.length - 1)) / yAccessor.length;\n\n\tconst offset = (barWidth === 1 ? 0 : 0.5 * width);\n\n\tconst ds = plotData\n\t\t.map(each => {\n\t\t\t// eslint-disable-next-line prefer-const\n\t\t\tlet d = {\n\t\t\t\tappearance: {\n\t\t\t\t},\n\t\t\t\tx: xAccessor(each),\n\t\t\t};\n\t\t\tyAccessor.forEach((eachYAccessor, i) => {\n\t\t\t\tconst key = `y${i}`;\n\t\t\t\td[key] = eachYAccessor(each);\n\t\t\t\tconst appearance = {\n\t\t\t\t\tclassName: getClassName(each, i),\n\t\t\t\t\tstroke: stroke ? getFill(each, i) : \"none\",\n\t\t\t\t\tfill: getFill(each, i),\n\t\t\t\t};\n\t\t\t\td.appearance[key] = appearance;\n\t\t\t});\n\t\t\treturn d;\n\t\t});\n\n\tconst keys = yAccessor.map((_, i) => `y${i}`);\n\n\t// console.log(ds);\n\n\tconst data = stack().keys(keys)(ds);\n\n\t// console.log(data);\n\n\tconst newData = data.map((each, i) => {\n\t\tconst key = each.key;\n\t\treturn each.map((d) => {\n\t\t\t// eslint-disable-next-line prefer-const\n\t\t\tlet array = [d[0], d[1]];\n\t\t\tarray.data = {\n\t\t\t\tx: d.data.x,\n\t\t\t\ti,\n\t\t\t\tappearance: d.data.appearance[key]\n\t\t\t};\n\t\t\treturn array;\n\t\t});\n\t});\n\t// console.log(newData);\n\t// console.log(merge(newData));\n\n\tconst bars = merge(newData)\n\t\t// .filter(d => isDefined(d.y))\n\t\t.map(d => {\n\t\t\t// let baseValue = yScale.invert(getBase(xScale, yScale, d.datum));\n\t\t\tlet y = yScale(d[1]);\n\t\t\t/* let h = isDefined(d.y0) && d.y0 !== 0 && !isNaN(d.y0)\n\t\t\t\t\t? yScale(d.y0) - y\n\t\t\t\t\t: getBase(xScale, yScale, d.datum) - yScale(d.y)*/\n\t\t\tlet h = getBase(xScale, yScale, d.data) - yScale(d[1] - d[0]);\n\t\t\t// console.log(d.y, yScale.domain(), yScale.range())\n\t\t\t// let h = ;\n\t\t\t// if (d.y < 0) h = -h;\n\t\t\t// console.log(d, y, h)\n\t\t\tif (h < 0) {\n\t\t\t\ty = y + h;\n\t\t\t\th = -h;\n\t\t\t}\n\t\t\t// console.log(d.data.i, Math.round(offset - (d.data.i > 0 ? (eachBarWidth + spaceBetweenBar) * d.data.i : 0)))\n\t\t\t/* console.log(d.series, d.datum.date, d.x,\n\t\t\t\t\tgetBase(xScale, yScale, d.datum), `d.y=${d.y}, d.y0=${d.y0}, y=${y}, h=${h}`)*/\n\t\t\treturn {\n\t\t\t\t...d.data.appearance,\n\t\t\t\t// series: d.series,\n\t\t\t\t// i: d.x,\n\t\t\t\tx: Math.round(xScale(d.data.x) - width / 2),\n\t\t\t\ty: y,\n\t\t\t\tgroupOffset: Math.round(offset - (d.data.i > 0 ? (eachBarWidth + spaceBetweenBar) * d.data.i : 0)),\n\t\t\t\tgroupWidth: Math.round(eachBarWidth),\n\t\t\t\toffset: Math.round(offset),\n\t\t\t\theight: h,\n\t\t\t\twidth: barWidth,\n\t\t\t};\n\t\t})\n\t\t.filter(bar => !isNaN(bar.y));\n\n\treturn after(bars);\n}\n\nexport default StackedBarSeries;\n"]} \ No newline at end of file diff --git a/index.js b/index.js index 5505f0b..a1ff4da 100644 --- a/index.js +++ b/index.js @@ -60,7 +60,7 @@ Object.defineProperty(exports, "ZoomButtons", { function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -var version = exports.version = "0.7.6"; +var version = exports.version = "0.7.8"; /* // chart types & Series diff --git a/index.js.map b/index.js.map index be30218..c7d9b15 100644 --- a/index.js.map +++ b/index.js.map @@ -1 +1 @@ -{"version":3,"sources":["../src/index.js"],"names":["default","version"],"mappings":";;;;;;;;;;;gDAGSA,O;;;;;;;;;0CACAA,O;;;;;;;;;0DACAA,O;;;;;;;;;qDACAA,O;;;;;;;;;mDACAA,O;;;;;;;;;gDACAA,O;;;;;;AAEF,IAAMC,4BAAU,OAAhB;;AAEP","file":"index.js","sourcesContent":["\n\n// common components\nexport { default as ChartCanvas } from \"./lib/ChartCanvas\";\nexport { default as Chart } from \"./lib/Chart\";\nexport { default as GenericChartComponent } from \"./lib/GenericChartComponent\";\nexport { default as GenericComponent } from \"./lib/GenericComponent\";\nexport { default as BackgroundText } from \"./lib/BackgroundText\";\nexport { default as ZoomButtons } from \"./lib/ZoomButtons\";\n\nexport const version = \"0.7.6\";\n\n/*\n// chart types & Series\nimport * as series from \"./lib/series\";\nimport * as scale from \"./lib/scale\";\n\nimport * as coordinates from \"./lib/coordinates\";\nimport * as indicator from \"./lib/indicator\";\nimport * as algorithm from \"./lib/algorithm\";\n\nimport * as annotation from \"./lib/annotation\";\n\nimport * as axes from \"./lib/axes\";\nimport * as tooltip from \"./lib/tooltip\";\nimport * as helper from \"./lib/helper\";\n\nimport * as interactive from \"./lib/interactive\";\nimport * as utils from \"./lib/utils\";\n\n*/\n"]} \ No newline at end of file +{"version":3,"sources":["../src/index.js"],"names":["default","version"],"mappings":";;;;;;;;;;;gDAGSA,O;;;;;;;;;0CACAA,O;;;;;;;;;0DACAA,O;;;;;;;;;qDACAA,O;;;;;;;;;mDACAA,O;;;;;;;;;gDACAA,O;;;;;;AAEF,IAAMC,4BAAU,OAAhB;;AAEP","file":"index.js","sourcesContent":["\n\n// common components\nexport { default as ChartCanvas } from \"./lib/ChartCanvas\";\nexport { default as Chart } from \"./lib/Chart\";\nexport { default as GenericChartComponent } from \"./lib/GenericChartComponent\";\nexport { default as GenericComponent } from \"./lib/GenericComponent\";\nexport { default as BackgroundText } from \"./lib/BackgroundText\";\nexport { default as ZoomButtons } from \"./lib/ZoomButtons\";\n\nexport const version = \"0.7.8\";\n\n/*\n// chart types & Series\nimport * as series from \"./lib/series\";\nimport * as scale from \"./lib/scale\";\n\nimport * as coordinates from \"./lib/coordinates\";\nimport * as indicator from \"./lib/indicator\";\nimport * as algorithm from \"./lib/algorithm\";\n\nimport * as annotation from \"./lib/annotation\";\n\nimport * as axes from \"./lib/axes\";\nimport * as tooltip from \"./lib/tooltip\";\nimport * as helper from \"./lib/helper\";\n\nimport * as interactive from \"./lib/interactive\";\nimport * as utils from \"./lib/utils\";\n\n*/\n"]} \ No newline at end of file diff --git a/lib/ChartCanvas.js b/lib/ChartCanvas.js index 8e9f287..16136af 100644 --- a/lib/ChartCanvas.js +++ b/lib/ChartCanvas.js @@ -1097,6 +1097,7 @@ var ChartCanvas = function (_Component) { } // do reset newState = resetChart(nextProps); + this.mutableState = {}; } else { var _state$xScale$domain = this.state.xScale.domain(), _state$xScale$domain2 = _slicedToArray(_state$xScale$domain, 2), diff --git a/lib/ChartCanvas.js.map b/lib/ChartCanvas.js.map index e7df981..3918384 100644 --- a/lib/ChartCanvas.js.map +++ b/lib/ChartCanvas.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../src/lib/ChartCanvas.js"],"names":["log","CANDIDATES_FOR_RESET","shouldResetChart","thisProps","nextProps","every","result","key","getCursorStyle","tooltipStyle","getDimensions","props","height","margin","top","bottom","width","left","right","getXScaleDirection","flipXScale","calculateFullData","fullData","data","plotFull","xScale","clamp","pointsPerPxThreshold","xAccessor","displayXAccessor","minPointsPerPxThreshold","useWholeData","filterData","copy","resetChart","firstCalculation","process","env","NODE_ENV","state","calculateState","initialPlotData","plotData","postCalculator","children","dimensions","chartConfig","domain","updateChart","newState","initialXScale","lastItemWasVisible","initialChartConfig","lastItem","start","end","padding","maintainPointsPerPixelOnResize","direction","updatedXScale","setXRange","range","rangeStart","rangeEnd","newRangeStart","newRangeEnd","newDomainExtent","newStart","lastItemX","response","fallbackStart","fallbackEnd","dx","map","x","invert","newEnd","inputXAccesor","xExtentsProp","xExtents","i","length","prev","curr","Error","extent","d","each","rangeRoundPoints","isNaN","pinchCoordinates","pinch","touch1Pos","touch2Pos","topLeft","Math","min","bottomRight","max","ChartCanvas","getDataInfo","bind","getCanvasContexts","handleMouseMove","handleMouseEnter","handleMouseLeave","handleZoom","handlePinchZoom","handlePinchZoomEnd","handlePan","handlePanEnd","handleClick","handleMouseDown","handleDoubleClick","handleContextMenu","handleDragStart","handleDrag","handleDragEnd","panHelper","pinchZoomHelper","xAxisZoom","yAxisZoom","resetYDomain","calculateStateForDomain","generateSubscriptionId","draw","redraw","getAllPanConditions","subscriptions","subscribe","unsubscribe","amIOnTop","saveEventCaptureNode","saveCanvasContainerNode","setCursorClass","getMutableState","interactiveState","panInProgress","mutableState","lastSubscriptionId","node","eventCaptureNode","canvasContainerNode","canvases","axes","mouseCoord","ratio","bg","id","rest","getPanConditions","draggable","panEnabled","concat","filter","className","dragableComponents","mouseXY","e","currentCharts","currentItem","triggerEvent","newDomain","currentPlotData","currentDomain","beforePlotData","updatedScale","initialPinch","finalPinch","initialPinchXScale","iTL","iBR","fTL","fBR","xDash","round","yDash","y","cancelDrag","waitingForPinchZoomAnimationFrame","requestAnimationFrame","clearBothCanvas","trigger","clearThreeCanvas","firstItem","onLoadMore","setState","zoomDirection","zoomMultiplier","zoomAnchor","item","cx","c","show","chartId","yScale","yPanEnabled","type","forEach","listener","force","chartsToPan","dy","hackyWayToStopPanBeyondBounds__plotData","hackyWayToStopPanBeyondBounds__domain","mousePosition","panStartXScale","dxdy","waitingForPanAnimationFrame","inputType","waitingForMouseMoveAnimationFrame","prevMouseXY","clearMouseCanvas","startPos","chartCanvasType","reset","interaction","isInteractionEnabled","prevLastItem","calculatedState","changed","newChartConfig","realYDomain","zIndex","defaultFocus","mouseMoveEvent","panEvent","zoomEvent","useCrossHairStyleCursor","onSelect","cursorStyle","cursor","position","idx","disableInteraction","propTypes","number","isRequired","object","oneOf","array","func","oneOfType","string","seriesName","bool","shape","propName","console","warn","defaultProps","childContextTypes","arrayOf","origin","yExtents","yExtentsProvider","mouseCoordinates","at","format","ohlcv","date","open","high","low","close","volume"],"mappings":"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","file":"ChartCanvas.js","sourcesContent":["\n\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { extent as d3Extent, min, max } from \"d3-array\";\n\nimport {\n\thead,\n\tlast,\n\tisDefined,\n\tisNotDefined,\n\tclearCanvas,\n\tshallowEqual,\n\tidentity,\n\tnoop,\n\tfunctor,\n\tgetLogger,\n} from \"./utils\";\n\n/* eslint-disable no-unused-vars */\nimport {\n\tmouseBasedZoomAnchor,\n\tlastVisibleItemBasedZoomAnchor,\n\trightDomainBasedZoomAnchor,\n} from \"./utils/zoomBehavior\";\n/* eslint-enable no-unused-vars */\n\nimport { getNewChartConfig, getChartConfigWithUpdatedYScales, getCurrentCharts, getCurrentItem } from \"./utils/ChartDataUtil\";\n\nimport EventCapture from \"./EventCapture\";\n\nimport CanvasContainer from \"./CanvasContainer\";\nimport evaluator from \"./scale/evaluator\";\n\nconst log = getLogger(\"ChartCanvas\");\n\nconst CANDIDATES_FOR_RESET = [\n\t\"seriesName\",\n\t/* \"data\",*/\n\t/* \"xAccessor\",*/\n];\n\nfunction shouldResetChart(thisProps, nextProps) {\n\treturn !CANDIDATES_FOR_RESET.every(key => {\n\t\tconst result = shallowEqual(thisProps[key], nextProps[key]);\n\t\t// console.log(key, result);\n\t\treturn result;\n\t});\n}\n\nfunction getCursorStyle() {\n\tconst tooltipStyle = `\n\t.react-stockcharts-grabbing-cursor {\n\t\tpointer-events: all;\n\t\tcursor: -moz-grabbing;\n\t\tcursor: -webkit-grabbing;\n\t\tcursor: grabbing;\n\t}\n\t.react-stockcharts-crosshair-cursor {\n\t\tpointer-events: all;\n\t\tcursor: crosshair;\n\t}\n\t.react-stockcharts-tooltip-hover {\n\t\tpointer-events: all;\n\t\tcursor: pointer;\n\t}\n\t.react-stockcharts-avoid-interaction {\n\t\tpointer-events: none;\n\t}\n\t.react-stockcharts-enable-interaction {\n\t\tpointer-events: all;\n\t}\n\t.react-stockcharts-tooltip {\n\t\tpointer-events: all;\n\t\tcursor: pointer;\n\t}\n\t.react-stockcharts-default-cursor {\n\t\tcursor: default;\n\t}\n\t.react-stockcharts-move-cursor {\n\t\tcursor: move;\n\t}\n\t.react-stockcharts-pointer-cursor {\n\t\tcursor: pointer;\n\t}\n\t.react-stockcharts-ns-resize-cursor {\n\t\tcursor: ns-resize;\n\t}\n\t.react-stockcharts-ew-resize-cursor {\n\t\tcursor: ew-resize;\n\t}`;\n\treturn ();\n}\n\nfunction getDimensions(props) {\n\treturn {\n\t\theight: props.height - props.margin.top - props.margin.bottom,\n\t\twidth: props.width - props.margin.left - props.margin.right,\n\t};\n}\n\nfunction getXScaleDirection(flipXScale) {\n\treturn flipXScale ? -1 : 1;\n}\n\nfunction calculateFullData(props) {\n\tconst { data: fullData, plotFull, xScale, clamp, pointsPerPxThreshold, flipXScale } = props;\n\tconst { xAccessor, displayXAccessor, minPointsPerPxThreshold } = props;\n\n\tconst useWholeData = isDefined(plotFull)\n\t\t? plotFull\n\t\t: xAccessor === identity;\n\n\tconst { filterData } = evaluator({\n\t\txScale,\n\t\tuseWholeData,\n\t\tclamp,\n\t\tpointsPerPxThreshold,\n\t\tminPointsPerPxThreshold,\n\t\tflipXScale,\n\t});\n\n\treturn {\n\t\txAccessor,\n\t\tdisplayXAccessor: displayXAccessor || xAccessor,\n\t\txScale: xScale.copy(),\n\t\tfullData,\n\t\tfilterData\n\t};\n}\nfunction resetChart(props, firstCalculation = false) {\n\tif (process.env.NODE_ENV !== \"production\") {\n\t\tif (!firstCalculation) log(\"CHART RESET\");\n\t}\n\n\tconst state = calculateState(props);\n\tconst { xAccessor, displayXAccessor, fullData } = state;\n\tconst { plotData: initialPlotData, xScale } = state;\n\tconst { postCalculator, children } = props;\n\n\tconst plotData = postCalculator(initialPlotData);\n\n\tconst dimensions = getDimensions(props);\n\tconst chartConfig = getChartConfigWithUpdatedYScales(\n\t\tgetNewChartConfig(dimensions, children),\n\t\t{ plotData, xAccessor, displayXAccessor, fullData },\n\t\txScale.domain()\n\t);\n\n\treturn {\n\t\t...state,\n\t\txScale,\n\t\tplotData,\n\t\tchartConfig,\n\t};\n}\n\nfunction updateChart(\n\tnewState,\n\tinitialXScale,\n\tprops,\n\tlastItemWasVisible,\n\tinitialChartConfig,\n) {\n\n\tconst { fullData, xScale, xAccessor, displayXAccessor, filterData } = newState;\n\n\tconst lastItem = last(fullData);\n\tconst [start, end] = initialXScale.domain();\n\n\tif (process.env.NODE_ENV !== \"production\") {\n\t\tlog(\"TRIVIAL CHANGE\");\n\t}\n\n\tconst { postCalculator, children, padding, flipXScale } = props;\n\tconst { maintainPointsPerPixelOnResize } = props;\n\tconst direction = getXScaleDirection(flipXScale);\n\tconst dimensions = getDimensions(props);\n\n\tconst updatedXScale = setXRange(xScale, dimensions, padding, direction);\n\n\t// console.log(\"lastItemWasVisible =\", lastItemWasVisible, end, xAccessor(lastItem), end >= xAccessor(lastItem));\n\tlet initialPlotData;\n\tif (!lastItemWasVisible || end >= xAccessor(lastItem)) {\n\t\t// resize comes here...\n\t\t// get plotData between [start, end] and do not change the domain\n\t\tconst [rangeStart, rangeEnd] = initialXScale.range();\n\t\tconst [newRangeStart, newRangeEnd] = updatedXScale.range();\n\t\tconst newDomainExtent = ((newRangeEnd - newRangeStart) / (rangeEnd - rangeStart)) * (end - start);\n\t\tconst newStart = maintainPointsPerPixelOnResize\n\t\t\t? end - newDomainExtent\n\t\t\t: start;\n\n\t\tconst lastItemX = initialXScale(xAccessor(lastItem));\n\t\t// console.log(\"pointsPerPixel => \", newStart, start, end, updatedXScale(end));\n\t\tconst response = filterData(\n\t\t\tfullData, [newStart, end], xAccessor, updatedXScale,\n\t\t\t{ fallbackStart: start, fallbackEnd: { lastItem, lastItemX } }\n\t\t);\n\t\tinitialPlotData = response.plotData;\n\t\tupdatedXScale.domain(response.domain);\n\t\t// console.log(\"HERE!!!!!\", start, end);\n\t} else if (lastItemWasVisible\n\t\t\t&& end < xAccessor(lastItem)) {\n\t\t// this is when a new item is added and last item was visible\n\t\t// so slide over and show the new item also\n\n\t\t// get plotData between [xAccessor(l) - (end - start), xAccessor(l)] and DO change the domain\n\t\tconst dx = initialXScale(xAccessor(lastItem)) - initialXScale.range()[1];\n\t\tconst [newStart, newEnd] = initialXScale.range().map(x => x + dx).map(initialXScale.invert);\n\n\n\t\tconst response = filterData(fullData, [newStart, newEnd], xAccessor, updatedXScale);\n\t\tinitialPlotData = response.plotData;\n\t\tupdatedXScale.domain(response.domain);\t\t// if last item was visible, then shift\n\t}\n\t// plotData = getDataOfLength(fullData, showingInterval, plotData.length)\n\tconst plotData = postCalculator(initialPlotData);\n\tconst chartConfig = getChartConfigWithUpdatedYScales(\n\t\tgetNewChartConfig(dimensions, children, initialChartConfig),\n\t\t{ plotData, xAccessor, displayXAccessor, fullData },\n\t\tupdatedXScale.domain()\n\t);\n\n\treturn {\n\t\txScale: updatedXScale,\n\t\txAccessor,\n\t\tchartConfig,\n\t\tplotData,\n\t\tfullData,\n\t\tfilterData,\n\t};\n}\n\nfunction calculateState(props) {\n\n\tconst {\n\t\txAccessor: inputXAccesor, xExtents: xExtentsProp, data, padding, flipXScale\n\t} = props;\n\n\tif (process.env.NODE_ENV !== \"production\" && isDefined(props.xScale.invert)) {\n\t\tfor (let i = 1; i < data.length; i++) {\n\t\t\tconst prev = data[i - 1];\n\t\t\tconst curr = data[i];\n\t\t\tif (inputXAccesor(prev) > inputXAccesor(curr)) {\n\t\t\t\tthrow new Error(\"'data' is not sorted on 'xAccessor', send 'data' sorted in ascending order of 'xAccessor'\");\n\t\t\t}\n\t\t}\n\t}\n\n\tconst direction = getXScaleDirection(flipXScale);\n\tconst dimensions = getDimensions(props);\n\n\tconst extent = typeof xExtentsProp === \"function\"\n\t\t? xExtentsProp(data)\n\t\t: d3Extent(xExtentsProp.map(d => functor(d)).map(each => each(data, inputXAccesor)));\n\n\tconst { xAccessor, displayXAccessor, xScale, fullData, filterData } = calculateFullData(props);\n\tconst updatedXScale = setXRange(xScale, dimensions, padding, direction);\n\n\tconst { plotData, domain } = filterData(fullData, extent, inputXAccesor, updatedXScale);\n\n\treturn {\n\t\tplotData,\n\t\txScale: updatedXScale.domain(domain),\n\t\txAccessor,\n\t\tdisplayXAccessor,\n\t\tfullData,\n\t\tfilterData,\n\t};\n}\n\nfunction setXRange(xScale, dimensions, padding, direction = 1) {\n\tif (xScale.rangeRoundPoints) {\n\t\tif (isNaN(padding)) throw new Error(\"padding has to be a number for ordinal scale\");\n\t\txScale.rangeRoundPoints([0, dimensions.width], padding);\n\t} else if (xScale.padding) {\n\t\tif (isNaN(padding)) throw new Error(\"padding has to be a number for ordinal scale\");\n\t\txScale.range([0, dimensions.width]);\n\t\txScale.padding(padding / 2);\n\t} else {\n\t\tconst { left, right } = isNaN(padding)\n\t\t\t? padding\n\t\t\t: { left: padding, right: padding };\n\t\tif (direction > 0) {\n\t\t\txScale.range([left, dimensions.width - right]);\n\t\t} else {\n\t\t\txScale.range([dimensions.width - right, left]);\n\t\t}\n\t}\n\treturn xScale;\n}\n\nfunction pinchCoordinates(pinch) {\n\tconst { touch1Pos, touch2Pos } = pinch;\n\n\treturn {\n\t\ttopLeft: [Math.min(touch1Pos[0], touch2Pos[0]), Math.min(touch1Pos[1], touch2Pos[1])],\n\t\tbottomRight: [Math.max(touch1Pos[0], touch2Pos[0]), Math.max(touch1Pos[1], touch2Pos[1])]\n\t};\n}\n\n\nclass ChartCanvas extends Component {\n\tconstructor() {\n\t\tsuper();\n\t\tthis.getDataInfo = this.getDataInfo.bind(this);\n\t\tthis.getCanvasContexts = this.getCanvasContexts.bind(this);\n\n\t\tthis.handleMouseMove = this.handleMouseMove.bind(this);\n\t\tthis.handleMouseEnter = this.handleMouseEnter.bind(this);\n\t\tthis.handleMouseLeave = this.handleMouseLeave.bind(this);\n\t\tthis.handleZoom = this.handleZoom.bind(this);\n\t\tthis.handlePinchZoom = this.handlePinchZoom.bind(this);\n\t\tthis.handlePinchZoomEnd = this.handlePinchZoomEnd.bind(this);\n\t\tthis.handlePan = this.handlePan.bind(this);\n\t\tthis.handlePanEnd = this.handlePanEnd.bind(this);\n\t\tthis.handleClick = this.handleClick.bind(this);\n\t\tthis.handleMouseDown = this.handleMouseDown.bind(this);\n\t\tthis.handleDoubleClick = this.handleDoubleClick.bind(this);\n\t\tthis.handleContextMenu = this.handleContextMenu.bind(this);\n\t\tthis.handleDragStart = this.handleDragStart.bind(this);\n\t\tthis.handleDrag = this.handleDrag.bind(this);\n\t\tthis.handleDragEnd = this.handleDragEnd.bind(this);\n\n\t\tthis.panHelper = this.panHelper.bind(this);\n\t\tthis.pinchZoomHelper = this.pinchZoomHelper.bind(this);\n\t\tthis.xAxisZoom = this.xAxisZoom.bind(this);\n\t\tthis.yAxisZoom = this.yAxisZoom.bind(this);\n\t\tthis.resetYDomain = this.resetYDomain.bind(this);\n\t\tthis.calculateStateForDomain = this.calculateStateForDomain.bind(this);\n\t\tthis.generateSubscriptionId = this.generateSubscriptionId.bind(this);\n\t\tthis.draw = this.draw.bind(this);\n\t\tthis.redraw = this.redraw.bind(this);\n\t\tthis.getAllPanConditions = this.getAllPanConditions.bind(this);\n\n\t\tthis.subscriptions = [];\n\t\tthis.subscribe = this.subscribe.bind(this);\n\t\tthis.unsubscribe = this.unsubscribe.bind(this);\n\t\tthis.amIOnTop = this.amIOnTop.bind(this);\n\t\tthis.saveEventCaptureNode = this.saveEventCaptureNode.bind(this);\n\t\tthis.saveCanvasContainerNode = this.saveCanvasContainerNode.bind(this);\n\t\tthis.setCursorClass = this.setCursorClass.bind(this);\n\t\tthis.getMutableState = this.getMutableState.bind(this);\n\t\t// this.canvasDrawCallbackList = [];\n\t\tthis.interactiveState = [];\n\t\tthis.panInProgress = false;\n\n\t\tthis.state = {};\n\t\tthis.mutableState = {};\n\t\tthis.lastSubscriptionId = 0;\n\t}\n\tsaveEventCaptureNode(node) {\n\t\tthis.eventCaptureNode = node;\n\t}\n\tsaveCanvasContainerNode(node) {\n\t\tthis.canvasContainerNode = node;\n\t}\n\tgetMutableState() {\n\t\treturn this.mutableState;\n\t}\n\tgetDataInfo() {\n\t\treturn {\n\t\t\t...this.state,\n\t\t\tfullData: this.fullData,\n\t\t};\n\t}\n\tgetCanvasContexts() {\n\t\tif (this.canvasContainerNode) {\n\t\t\treturn this.canvasContainerNode.getCanvasContexts();\n\t\t}\n\t}\n\tgenerateSubscriptionId() {\n\t\tthis.lastSubscriptionId++;\n\t\treturn this.lastSubscriptionId;\n\t}\n\tclearBothCanvas() {\n\t\tconst canvases = this.getCanvasContexts();\n\t\tif (canvases && canvases.axes) {\n\t\t\tclearCanvas([\n\t\t\t\tcanvases.axes,\n\t\t\t\t// canvases.hover,\n\t\t\t\tcanvases.mouseCoord\n\t\t\t], this.props.ratio);\n\t\t}\n\t}\n\tclearMouseCanvas() {\n\t\tconst canvases = this.getCanvasContexts();\n\t\tif (canvases && canvases.mouseCoord) {\n\t\t\tclearCanvas([\n\t\t\t\tcanvases.mouseCoord,\n\t\t\t\t// canvases.hover,\n\t\t\t], this.props.ratio);\n\t\t}\n\t}\n\tclearThreeCanvas() {\n\t\tconst canvases = this.getCanvasContexts();\n\t\tif (canvases && canvases.axes) {\n\t\t\tclearCanvas([\n\t\t\t\tcanvases.axes,\n\t\t\t\t// canvases.hover,\n\t\t\t\tcanvases.mouseCoord,\n\t\t\t\tcanvases.bg\n\t\t\t], this.props.ratio);\n\t\t}\n\t}\n\tsubscribe(id, rest) {\n\t\tconst { getPanConditions = functor({\n\t\t\tdraggable: false,\n\t\t\tpanEnabled: true,\n\t\t}) } = rest;\n\t\tthis.subscriptions = this.subscriptions.concat({\n\t\t\tid,\n\t\t\t...rest,\n\t\t\tgetPanConditions,\n\t\t});\n\t}\n\tunsubscribe(id) {\n\t\tthis.subscriptions = this.subscriptions.filter(each => each.id !== id);\n\t}\n\tgetAllPanConditions() {\n\t\treturn this.subscriptions\n\t\t\t.map(each => each.getPanConditions());\n\t}\n\tsetCursorClass(className) {\n\t\tif (this.eventCaptureNode != null) {\n\t\t\tthis.eventCaptureNode.setCursorClass(className);\n\t\t}\n\t}\n\tamIOnTop(id) {\n\t\tconst dragableComponents = this.subscriptions\n\t\t\t.filter(each => each.getPanConditions().draggable);\n\n\t\treturn dragableComponents.length > 0\n\t\t\t&& last(dragableComponents).id === id;\n\t}\n\thandleContextMenu(mouseXY, e) {\n\t\tconst { xAccessor, chartConfig, plotData, xScale } = this.state;\n\n\t\tconst currentCharts = getCurrentCharts(chartConfig, mouseXY);\n\t\tconst currentItem = getCurrentItem(xScale, xAccessor, mouseXY, plotData);\n\n\t\tthis.triggerEvent(\"contextmenu\", {\n\t\t\tmouseXY,\n\t\t\tcurrentItem,\n\t\t\tcurrentCharts,\n\t\t}, e);\n\t}\n\tcalculateStateForDomain(newDomain) {\n\t\tconst {\n\t\t\txAccessor,\n\t\t\tdisplayXAccessor,\n\t\t\txScale: initialXScale,\n\t\t\tchartConfig: initialChartConfig,\n\t\t\tplotData: initialPlotData\n\t\t} = this.state;\n\t\tconst { filterData } = this.state;\n\t\tconst { fullData } = this;\n\t\tconst { postCalculator } = this.props;\n\n\t\tconst { plotData: beforePlotData, domain } = filterData(\n\t\t\tfullData,\n\t\t\tnewDomain,\n\t\t\txAccessor,\n\t\t\tinitialXScale,\n\t\t\t{\n\t\t\t\tcurrentPlotData: initialPlotData,\n\t\t\t\tcurrentDomain: initialXScale.domain()\n\t\t\t}\n\t\t);\n\n\t\tconst plotData = postCalculator(beforePlotData);\n\t\tconst updatedScale = initialXScale.copy().domain(domain);\n\t\tconst chartConfig = getChartConfigWithUpdatedYScales(\n\t\t\tinitialChartConfig,\n\t\t\t{ plotData, xAccessor, displayXAccessor, fullData },\n\t\t\tupdatedScale.domain()\n\t\t);\n\n\t\treturn {\n\t\t\txScale: updatedScale,\n\t\t\tplotData,\n\t\t\tchartConfig,\n\t\t};\n\t}\n\tpinchZoomHelper(initialPinch, finalPinch) {\n\t\tconst { xScale: initialPinchXScale } = initialPinch;\n\n\t\tconst {\n\t\t\txScale: initialXScale,\n\t\t\tchartConfig: initialChartConfig,\n\t\t\tplotData: initialPlotData,\n\t\t\txAccessor,\n\t\t\tdisplayXAccessor,\n\t\t} = this.state;\n\t\tconst { filterData } = this.state;\n\t\tconst { fullData } = this;\n\t\tconst { postCalculator } = this.props;\n\n\t\tconst { topLeft: iTL, bottomRight: iBR } = pinchCoordinates(initialPinch);\n\t\tconst { topLeft: fTL, bottomRight: fBR } = pinchCoordinates(finalPinch);\n\n\t\tconst e = initialPinchXScale.range()[1];\n\n\t\tconst xDash = Math.round(-(iBR[0] * fTL[0] - iTL[0] * fBR[0]) / (iTL[0] - iBR[0]));\n\t\tconst yDash = Math.round(e + ((e - iBR[0]) * (e - fTL[0]) - (e - iTL[0]) * (e - fBR[0])) / ((e - iTL[0]) - (e - iBR[0])));\n\n\t\tconst x = Math.round(-xDash * iTL[0] / (-xDash + fTL[0]));\n\t\tconst y = Math.round(e - (yDash - e) * (e - iTL[0]) / (yDash + (e - fTL[0])));\n\n\t\tconst newDomain = [x, y].map(initialPinchXScale.invert);\n\t\t// var domainR = initial.right + right;\n\n\t\tconst { plotData: beforePlotData, domain } = filterData(\n\t\t\tfullData,\n\t\t\tnewDomain,\n\t\t\txAccessor,\n\t\t\tinitialPinchXScale,\n\t\t\t{\n\t\t\t\tcurrentPlotData: initialPlotData,\n\t\t\t\tcurrentDomain: initialXScale.domain()\n\t\t\t}\n\t\t);\n\n\t\tconst plotData = postCalculator(beforePlotData);\n\t\tconst updatedScale = initialXScale.copy().domain(domain);\n\n\t\tconst mouseXY = finalPinch.touch1Pos;\n\t\tconst chartConfig = getChartConfigWithUpdatedYScales(\n\t\t\tinitialChartConfig,\n\t\t\t{ plotData, xAccessor, displayXAccessor, fullData },\n\t\t\tupdatedScale.domain()\n\t\t);\n\t\tconst currentItem = getCurrentItem(updatedScale, xAccessor, mouseXY, plotData);\n\n\t\treturn {\n\t\t\tchartConfig,\n\t\t\txScale: updatedScale,\n\t\t\tplotData,\n\t\t\tmouseXY,\n\t\t\tcurrentItem,\n\t\t};\n\t}\n\tcancelDrag() {\n\t\tthis.eventCaptureNode.cancelDrag();\n\t\tthis.triggerEvent(\"dragcancel\");\n\t}\n\thandlePinchZoom(initialPinch, finalPinch, e) {\n\t\tif (!this.waitingForPinchZoomAnimationFrame) {\n\t\t\tthis.waitingForPinchZoomAnimationFrame = true;\n\t\t\tconst state = this.pinchZoomHelper(initialPinch, finalPinch);\n\n\t\t\tthis.triggerEvent(\"pinchzoom\", state, e);\n\n\t\t\tthis.finalPinch = finalPinch;\n\n\t\t\trequestAnimationFrame(() => {\n\t\t\t\tthis.clearBothCanvas();\n\t\t\t\tthis.draw({ trigger: \"pinchzoom\" });\n\t\t\t\tthis.waitingForPinchZoomAnimationFrame = false;\n\t\t\t});\n\t\t}\n\t}\n\thandlePinchZoomEnd(initialPinch, e) {\n\t\tconst { xAccessor } = this.state;\n\n\t\tif (this.finalPinch) {\n\t\t\tconst state = this.pinchZoomHelper(initialPinch, this.finalPinch);\n\t\t\tconst { xScale } = state;\n\t\t\tthis.triggerEvent(\"pinchzoom\", state, e);\n\n\t\t\tthis.finalPinch = null;\n\n\t\t\tthis.clearThreeCanvas();\n\n\t\t\tconst { fullData } = this;\n\t\t\tconst firstItem = head(fullData);\n\n\t\t\tconst start = head(xScale.domain());\n\t\t\tconst end = xAccessor(firstItem);\n\t\t\tconst { onLoadMore } = this.props;\n\n\t\t\tthis.setState(state, () => {\n\t\t\t\tif (start < end) {\n\t\t\t\t\tonLoadMore(start, end);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\thandleZoom(zoomDirection, mouseXY, e) {\n\t\tif (this.panInProgress)\n\t\t\treturn;\n\t\t// console.log(\"zoomDirection \", zoomDirection, \" mouseXY \", mouseXY);\n\t\tconst { xAccessor, xScale: initialXScale, plotData: initialPlotData } = this.state;\n\t\tconst { zoomMultiplier, zoomAnchor } = this.props;\n\t\tconst { fullData } = this;\n\t\tconst item = zoomAnchor({\n\t\t\txScale: initialXScale,\n\t\t\txAccessor,\n\t\t\tmouseXY,\n\t\t\tplotData: initialPlotData,\n\t\t\tfullData,\n\t\t});\n\n\t\tconst cx = initialXScale(item);\n\t\tconst c = zoomDirection > 0 ? 1 * zoomMultiplier : 1 / zoomMultiplier;\n\t\tconst newDomain = initialXScale.range().map(x => cx + (x - cx) * c).map(initialXScale.invert);\n\n\t\tconst { xScale, plotData, chartConfig } = this.calculateStateForDomain(newDomain);\n\n\t\tconst currentItem = getCurrentItem(xScale, xAccessor, mouseXY, plotData);\n\t\tconst currentCharts = getCurrentCharts(chartConfig, mouseXY);\n\n\t\tthis.clearThreeCanvas();\n\n\t\tconst firstItem = head(fullData);\n\n\t\tconst start = head(xScale.domain());\n\t\tconst end = xAccessor(firstItem);\n\t\tconst { onLoadMore } = this.props;\n\n\t\tthis.mutableState = {\n\t\t\tmouseXY: mouseXY,\n\t\t\tcurrentItem: currentItem,\n\t\t\tcurrentCharts: currentCharts,\n\t\t};\n\n\t\tthis.triggerEvent(\"zoom\", {\n\t\t\txScale,\n\t\t\tplotData,\n\t\t\tchartConfig,\n\t\t\tmouseXY,\n\t\t\tcurrentCharts,\n\t\t\tcurrentItem,\n\t\t\tshow: true,\n\t\t}, e);\n\n\t\tthis.setState({\n\t\t\txScale,\n\t\t\tplotData,\n\t\t\tchartConfig,\n\t\t}, () => {\n\t\t\tif (start < end) {\n\t\t\t\tonLoadMore(start, end);\n\t\t\t}\n\t\t});\n\t}\n\txAxisZoom(newDomain) {\n\t\tconst { xScale, plotData, chartConfig } = this.calculateStateForDomain(newDomain);\n\t\tthis.clearThreeCanvas();\n\n\t\tconst { xAccessor } = this.state;\n\t\tconst { fullData } = this;\n\t\tconst firstItem = head(fullData);\n\t\tconst start = head(xScale.domain());\n\t\tconst end = xAccessor(firstItem);\n\t\tconst { onLoadMore } = this.props;\n\n\t\tthis.setState({\n\t\t\txScale,\n\t\t\tplotData,\n\t\t\tchartConfig,\n\t\t}, () => {\n\t\t\tif (start < end) onLoadMore(start, end);\n\t\t});\n\t}\n\tyAxisZoom(chartId, newDomain) {\n\t\tthis.clearThreeCanvas();\n\t\tconst { chartConfig: initialChartConfig } = this.state;\n\t\tconst chartConfig = initialChartConfig\n\t\t\t.map(each => {\n\t\t\t\tif (each.id === chartId) {\n\t\t\t\t\tconst { yScale } = each;\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...each,\n\t\t\t\t\t\tyScale: yScale.copy().domain(newDomain),\n\t\t\t\t\t\tyPanEnabled: true,\n\t\t\t\t\t};\n\t\t\t\t} else {\n\t\t\t\t\treturn each;\n\t\t\t\t}\n\t\t\t});\n\n\t\tthis.setState({\n\t\t\tchartConfig,\n\t\t});\n\t}\n\ttriggerEvent(type, props, e) {\n\t\t// console.log(\"triggering ->\", type);\n\n\t\tthis.subscriptions.forEach(each => {\n\t\t\tconst state = {\n\t\t\t\t...this.state,\n\t\t\t\tfullData: this.fullData,\n\t\t\t\tsubscriptions: this.subscriptions,\n\t\t\t};\n\t\t\teach.listener(type, props, state, e);\n\t\t});\n\t}\n\tdraw(props) {\n\t\tthis.subscriptions.forEach(each => {\n\t\t\tif (isDefined(each.draw))\n\t\t\t\teach.draw(props);\n\t\t});\n\t}\n\tredraw() {\n\t\tthis.clearThreeCanvas();\n\t\tthis.draw({ force: true });\n\t}\n\tpanHelper(mouseXY, initialXScale, { dx, dy }, chartsToPan) {\n\t\tconst { xAccessor, displayXAccessor, chartConfig: initialChartConfig } = this.state;\n\t\tconst { filterData } = this.state;\n\t\tconst { fullData } = this;\n\t\tconst { postCalculator } = this.props;\n\n\t\t// console.log(dx, dy);\n\t\tif (isNotDefined(initialXScale.invert))\n\t\t\tthrow new Error(\"xScale provided does not have an invert() method.\"\n\t\t\t\t+ \"You are likely using an ordinal scale. This scale does not support zoom, pan\");\n\n\t\tconst newDomain = initialXScale.range().map(x => x - dx).map(initialXScale.invert);\n\n\t\tconst { plotData: beforePlotData, domain } = filterData(\n\t\t\tfullData,\n\t\t\tnewDomain,\n\t\t\txAccessor,\n\t\t\tinitialXScale,\n\t\t\t{\n\t\t\t\tcurrentPlotData: this.hackyWayToStopPanBeyondBounds__plotData,\n\t\t\t\tcurrentDomain: this.hackyWayToStopPanBeyondBounds__domain\n\t\t\t}\n\t\t);\n\n\t\tconst updatedScale = initialXScale.copy().domain(domain);\n\t\tconst plotData = postCalculator(beforePlotData);\n\t\t// console.log(last(plotData));\n\n\t\tconst currentItem = getCurrentItem(updatedScale, xAccessor, mouseXY, plotData);\n\t\tconst chartConfig = getChartConfigWithUpdatedYScales(\n\t\t\tinitialChartConfig,\n\t\t\t{ plotData, xAccessor, displayXAccessor, fullData },\n\t\t\tupdatedScale.domain(),\n\t\t\tdy,\n\t\t\tchartsToPan\n\t\t);\n\t\tconst currentCharts = getCurrentCharts(chartConfig, mouseXY);\n\n\t\t// console.log(initialXScale.domain(), newDomain, updatedScale.domain());\n\t\treturn {\n\t\t\txScale: updatedScale,\n\t\t\tplotData,\n\t\t\tchartConfig,\n\t\t\tmouseXY,\n\t\t\tcurrentCharts,\n\t\t\tcurrentItem,\n\t\t};\n\t}\n\thandlePan(mousePosition, panStartXScale, dxdy, chartsToPan, e) {\n\t\tif (!this.waitingForPanAnimationFrame) {\n\t\t\tthis.waitingForPanAnimationFrame = true;\n\n\t\t\tthis.hackyWayToStopPanBeyondBounds__plotData = this.hackyWayToStopPanBeyondBounds__plotData || this.state.plotData;\n\t\t\tthis.hackyWayToStopPanBeyondBounds__domain = this.hackyWayToStopPanBeyondBounds__domain || this.state.xScale.domain();\n\n\t\t\tconst state = this.panHelper(mousePosition, panStartXScale, dxdy, chartsToPan);\n\n\t\t\tthis.hackyWayToStopPanBeyondBounds__plotData = state.plotData;\n\t\t\tthis.hackyWayToStopPanBeyondBounds__domain = state.xScale.domain();\n\n\t\t\tthis.panInProgress = true;\n\t\t\t// console.log(panStartXScale.domain(), state.xScale.domain());\n\n\t\t\tthis.triggerEvent(\"pan\", state, e);\n\n\t\t\tthis.mutableState = {\n\t\t\t\tmouseXY: state.mouseXY,\n\t\t\t\tcurrentItem: state.currentItem,\n\t\t\t\tcurrentCharts: state.currentCharts,\n\t\t\t};\n\t\t\trequestAnimationFrame(() => {\n\t\t\t\tthis.waitingForPanAnimationFrame = false;\n\t\t\t\tthis.clearBothCanvas();\n\t\t\t\tthis.draw({ trigger: \"pan\" });\n\t\t\t});\n\t\t}\n\t}\n\thandlePanEnd(mousePosition, panStartXScale, dxdy, chartsToPan, e) {\n\t\tconst state = this.panHelper(mousePosition, panStartXScale, dxdy, chartsToPan);\n\t\t// console.log(this.canvasDrawCallbackList.map(d => d.type));\n\t\tthis.hackyWayToStopPanBeyondBounds__plotData = null;\n\t\tthis.hackyWayToStopPanBeyondBounds__domain = null;\n\n\t\tthis.panInProgress = false;\n\n\t\t// console.log(\"PANEND\", panEnd++);\n\t\tconst {\n\t\t\txScale,\n\t\t\tplotData,\n\t\t\tchartConfig,\n\t\t} = state;\n\n\t\tthis.triggerEvent(\"panend\", state, e);\n\n\t\trequestAnimationFrame(() => {\n\t\t\tconst { xAccessor } = this.state;\n\t\t\tconst { fullData } = this;\n\n\t\t\tconst firstItem = head(fullData);\n\t\t\tconst start = head(xScale.domain());\n\t\t\tconst end = xAccessor(firstItem);\n\t\t\t// console.log(start, end, start < end ? \"Load more\" : \"I have it\");\n\n\t\t\tconst { onLoadMore } = this.props;\n\n\t\t\tthis.clearThreeCanvas();\n\n\t\t\tthis.setState({\n\t\t\t\txScale,\n\t\t\t\tplotData,\n\t\t\t\tchartConfig,\n\t\t\t}, () => {\n\t\t\t\tif (start < end) onLoadMore(start, end);\n\t\t\t});\n\t\t});\n\t}\n\thandleMouseDown(mousePosition, currentCharts, e) {\n\t\tthis.triggerEvent(\"mousedown\", this.mutableState, e);\n\t}\n\thandleMouseEnter(e) {\n\t\tthis.triggerEvent(\"mouseenter\", {\n\t\t\tshow: true,\n\t\t}, e);\n\t}\n\thandleMouseMove(mouseXY, inputType, e) {\n\t\tif (!this.waitingForMouseMoveAnimationFrame) {\n\t\t\tthis.waitingForMouseMoveAnimationFrame = true;\n\n\t\t\tconst { chartConfig, plotData, xScale, xAccessor } = this.state;\n\t\t\tconst currentCharts = getCurrentCharts(chartConfig, mouseXY);\n\t\t\tconst currentItem = getCurrentItem(xScale, xAccessor, mouseXY, plotData);\n\t\t\tthis.triggerEvent(\"mousemove\", {\n\t\t\t\tshow: true,\n\t\t\t\tmouseXY,\n\t\t\t\t// prevMouseXY is used in interactive components\n\t\t\t\tprevMouseXY: this.prevMouseXY,\n\t\t\t\tcurrentItem,\n\t\t\t\tcurrentCharts,\n\t\t\t}, e);\n\n\t\t\tthis.prevMouseXY = mouseXY;\n\t\t\tthis.mutableState = {\n\t\t\t\tmouseXY,\n\t\t\t\tcurrentItem,\n\t\t\t\tcurrentCharts,\n\t\t\t};\n\n\t\t\trequestAnimationFrame(() => {\n\t\t\t\tthis.clearMouseCanvas();\n\t\t\t\tthis.draw({ trigger: \"mousemove\" });\n\t\t\t\tthis.waitingForMouseMoveAnimationFrame = false;\n\t\t\t});\n\t\t}\n\t}\n\thandleMouseLeave(e) {\n\t\tthis.triggerEvent(\"mouseleave\", { show: false }, e);\n\t\tthis.clearMouseCanvas();\n\t\tthis.draw({ trigger: \"mouseleave\" });\n\t}\n\thandleDragStart({ startPos }, e) {\n\t\tthis.triggerEvent(\"dragstart\", { startPos }, e);\n\t}\n\thandleDrag({ startPos, mouseXY }, e) {\n\t\tconst { chartConfig, plotData, xScale, xAccessor } = this.state;\n\t\tconst currentCharts = getCurrentCharts(chartConfig, mouseXY);\n\t\tconst currentItem = getCurrentItem(xScale, xAccessor, mouseXY, plotData);\n\n\t\tthis.triggerEvent(\"drag\", {\n\t\t\tstartPos,\n\t\t\tmouseXY,\n\t\t\tcurrentItem,\n\t\t\tcurrentCharts,\n\t\t}, e);\n\n\t\tthis.mutableState = {\n\t\t\tmouseXY,\n\t\t\tcurrentItem,\n\t\t\tcurrentCharts,\n\t\t};\n\n\t\trequestAnimationFrame(() => {\n\t\t\tthis.clearMouseCanvas();\n\t\t\tthis.draw({ trigger: \"drag\" });\n\t\t});\n\t}\n\thandleDragEnd({ mouseXY }, e) {\n\t\tthis.triggerEvent(\"dragend\", { mouseXY }, e);\n\n\t\trequestAnimationFrame(() => {\n\t\t\tthis.clearMouseCanvas();\n\t\t\tthis.draw({ trigger: \"dragend\" });\n\t\t});\n\t}\n\thandleClick(mousePosition, e) {\n\t\tthis.triggerEvent(\"click\", this.mutableState, e);\n\n\t\trequestAnimationFrame(() => {\n\t\t\tthis.clearMouseCanvas();\n\t\t\tthis.draw({ trigger: \"click\" });\n\t\t});\n\t}\n\thandleDoubleClick(mousePosition, e) {\n\t\tthis.triggerEvent(\"dblclick\", {}, e);\n\t}\n\tgetChildContext() {\n\t\tconst dimensions = getDimensions(this.props);\n\t\treturn {\n\t\t\tfullData: this.fullData,\n\t\t\tplotData: this.state.plotData,\n\t\t\twidth: dimensions.width,\n\t\t\theight: dimensions.height,\n\t\t\tchartConfig: this.state.chartConfig,\n\t\t\txScale: this.state.xScale,\n\t\t\txAccessor: this.state.xAccessor,\n\t\t\tdisplayXAccessor: this.state.displayXAccessor,\n\t\t\tchartCanvasType: this.props.type,\n\t\t\tmargin: this.props.margin,\n\t\t\tratio: this.props.ratio,\n\t\t\txAxisZoom: this.xAxisZoom,\n\t\t\tyAxisZoom: this.yAxisZoom,\n\t\t\tgetCanvasContexts: this.getCanvasContexts,\n\t\t\tredraw: this.redraw,\n\t\t\tsubscribe: this.subscribe,\n\t\t\tunsubscribe: this.unsubscribe,\n\t\t\tgenerateSubscriptionId: this.generateSubscriptionId,\n\t\t\tgetMutableState: this.getMutableState,\n\t\t\tamIOnTop: this.amIOnTop,\n\t\t\tsetCursorClass: this.setCursorClass,\n\t\t};\n\t}\n\tcomponentWillMount() {\n\t\tconst { fullData, ...state } = resetChart(this.props, true);\n\t\tthis.setState(state);\n\t\tthis.fullData = fullData;\n\t}\n\tcomponentWillReceiveProps(nextProps) {\n\t\tconst reset = shouldResetChart(this.props, nextProps);\n\n\t\tconst interaction = isInteractionEnabled(this.state.xScale, this.state.xAccessor, this.state.plotData);\n\t\tconst { chartConfig: initialChartConfig } = this.state;\n\n\t\tlet newState;\n\t\tif (!interaction || reset || !shallowEqual(this.props.xExtents, nextProps.xExtents)) {\n\t\t\tif (process.env.NODE_ENV !== \"production\") {\n\t\t\t\tif (!interaction)\n\t\t\t\t\tlog(\"RESET CHART, changes to a non interactive chart\");\n\t\t\t\telse if (reset)\n\t\t\t\t\tlog(\"RESET CHART, one or more of these props changed\", CANDIDATES_FOR_RESET);\n\t\t\t\telse\n\t\t\t\t\tlog(\"xExtents changed\");\n\t\t\t}\n\t\t\t// do reset\n\t\t\tnewState = resetChart(nextProps);\n\t\t} else {\n\n\t\t\tconst [start, end] = this.state.xScale.domain();\n\t\t\tconst prevLastItem = last(this.fullData);\n\n\t\t\tconst calculatedState = calculateFullData(nextProps);\n\t\t\tconst { xAccessor } = calculatedState;\n\t\t\tconst lastItemWasVisible = xAccessor(prevLastItem) <= end && xAccessor(prevLastItem) >= start;\n\n\t\t\tif (process.env.NODE_ENV !== \"production\") {\n\t\t\t\tif (this.props.data !== nextProps.data)\n\t\t\t\t\tlog(\"data is changed but seriesName did not, change the seriesName if you wish to reset the chart and lastItemWasVisible = \", lastItemWasVisible);\n\t\t\t\telse\n\t\t\t\t\tlog(\"Trivial change, may be width/height or type changed, but that does not matter\");\n\t\t\t}\n\n\t\t\tnewState = updateChart(\n\t\t\t\tcalculatedState,\n\t\t\t\tthis.state.xScale,\n\t\t\t\tnextProps,\n\t\t\t\tlastItemWasVisible,\n\t\t\t\tinitialChartConfig,\n\t\t\t);\n\t\t}\n\n\t\tconst { fullData, ...state } = newState;\n\n\t\tif (this.panInProgress) {\n\t\t\tif (process.env.NODE_ENV !== \"production\") {\n\t\t\t\tlog(\"Pan is in progress\");\n\t\t\t}\n\t\t} else {\n\t\t\t/*\n\t\t\tif (!reset) {\n\t\t\t\tstate.chartConfig\n\t\t\t\t\t.forEach((each) => {\n\t\t\t\t\t\t// const sourceChartConfig = initialChartConfig.filter(d => d.id === each.id);\n\t\t\t\t\t\tconst prevChartConfig = find(initialChartConfig, d => d.id === each.id);\n\t\t\t\t\t\tif (isDefined(prevChartConfig) && prevChartConfig.yPanEnabled) {\n\t\t\t\t\t\t\teach.yScale.domain(prevChartConfig.yScale.domain());\n\t\t\t\t\t\t\teach.yPanEnabled = prevChartConfig.yPanEnabled;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t}\n\t\t\t*/\n\t\t\tthis.clearThreeCanvas();\n\n\t\t\tthis.setState(state);\n\t\t}\n\t\tthis.fullData = fullData;\n\t}\n\t/*\n\tcomponentDidUpdate(prevProps, prevState) {\n\t\tconsole.error(this.state.chartConfig, this.state.chartConfig.map(d => d.yScale.domain()));\n\t}\n\t*/\n\tresetYDomain(chartId) {\n\t\tconst { chartConfig } = this.state;\n\t\tlet changed = false;\n\t\tconst newChartConfig = chartConfig\n\t\t\t.map(each => {\n\t\t\t\tif ((isNotDefined(chartId) || each.id === chartId)\n\t\t\t\t\t\t&& !shallowEqual(each.yScale.domain(), each.realYDomain)) {\n\t\t\t\t\tchanged = true;\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...each,\n\t\t\t\t\t\tyScale: each.yScale.domain(each.realYDomain),\n\t\t\t\t\t\tyPanEnabled: false,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\treturn each;\n\t\t\t});\n\n\t\tif (changed) {\n\t\t\tthis.clearThreeCanvas();\n\t\t\tthis.setState({\n\t\t\t\tchartConfig: newChartConfig\n\t\t\t});\n\t\t}\n\t}\n\tshouldComponentUpdate() {\n\t\t// console.log(\"Happneing.....\", !this.panInProgress)\n\t\treturn !this.panInProgress;\n\t}\n\trender() {\n\n\t\tconst { type, height, width, margin, className, zIndex, defaultFocus, ratio, mouseMoveEvent, panEvent, zoomEvent } = this.props;\n\t\tconst { useCrossHairStyleCursor, onSelect } = this.props;\n\n\t\tconst { plotData, xScale, xAccessor, chartConfig } = this.state;\n\t\tconst dimensions = getDimensions(this.props);\n\n\t\tconst interaction = isInteractionEnabled(xScale, xAccessor, plotData);\n\n\t\tconst cursorStyle = useCrossHairStyleCursor && interaction;\n\t\tconst cursor = getCursorStyle();\n\t\treturn (\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t{cursor}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t{chartConfig\n\t\t\t\t\t\t\t.map((each, idx) => \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{this.props.children}\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t);\n\t}\n}\n\nfunction isInteractionEnabled(xScale, xAccessor, data) {\n\tconst interaction = !isNaN(xScale(xAccessor(head(data)))) && isDefined(xScale.invert);\n\treturn interaction;\n}\n\nChartCanvas.propTypes = {\n\twidth: PropTypes.number.isRequired,\n\theight: PropTypes.number.isRequired,\n\tmargin: PropTypes.object,\n\tratio: PropTypes.number.isRequired,\n\t// interval: PropTypes.oneOf([\"D\", \"W\", \"M\"]), // ,\"m1\", \"m5\", \"m15\", \"W\", \"M\"\n\ttype: PropTypes.oneOf([\"svg\", \"hybrid\"]),\n\tpointsPerPxThreshold: PropTypes.number,\n\tminPointsPerPxThreshold: PropTypes.number,\n\tdata: PropTypes.array.isRequired,\n\t// initialDisplay: PropTypes.number,\n\txAccessor: PropTypes.func,\n\txExtents: PropTypes.oneOfType([\n\t\tPropTypes.array,\n\t\tPropTypes.func\n\t]),\n\tzoomAnchor: PropTypes.func,\n\n\tclassName: PropTypes.string,\n\tseriesName: PropTypes.string.isRequired,\n\tzIndex: PropTypes.number,\n\tchildren: PropTypes.node.isRequired,\n\txScale: PropTypes.func.isRequired,\n\tpostCalculator: PropTypes.func,\n\tflipXScale: PropTypes.bool,\n\tuseCrossHairStyleCursor: PropTypes.bool,\n\tpadding: PropTypes.oneOfType([\n\t\tPropTypes.number,\n\t\tPropTypes.shape({\n\t\t\tleft: PropTypes.number,\n\t\t\tright: PropTypes.number,\n\t\t})\n\t]),\n\tdefaultFocus: PropTypes.bool,\n\tzoomMultiplier: PropTypes.number,\n\tonLoadMore: PropTypes.func,\n\tdisplayXAccessor: function(props, propName/* , componentName */) {\n\t\tif (isNotDefined(props[propName])) {\n\t\t\tconsole.warn(\"`displayXAccessor` is not defined,\"\n\t\t\t\t+ \" will use the value from `xAccessor` as `displayXAccessor`.\"\n\t\t\t\t+ \" This might be ok if you do not use a discontinuous scale\"\n\t\t\t\t+ \" but if you do, provide a `displayXAccessor` prop to `ChartCanvas`\");\n\t\t} else if (typeof props[propName] !== \"function\") {\n\t\t\treturn new Error(\"displayXAccessor has to be a function\");\n\t\t}\n\t},\n\tmouseMoveEvent: PropTypes.bool,\n\tpanEvent: PropTypes.bool,\n\tclamp: PropTypes.oneOfType([PropTypes.string, PropTypes.bool, PropTypes.func]),\n\tzoomEvent: PropTypes.bool,\n\tonSelect: PropTypes.func,\n\tmaintainPointsPerPixelOnResize: PropTypes.bool,\n\tdisableInteraction: PropTypes.bool,\n};\n\nChartCanvas.defaultProps = {\n\tmargin: { top: 20, right: 30, bottom: 30, left: 80 },\n\ttype: \"hybrid\",\n\tpointsPerPxThreshold: 2,\n\tminPointsPerPxThreshold: 1 / 100,\n\tclassName: \"react-stockchart\",\n\tzIndex: 1,\n\txExtents: [min, max],\n\tpostCalculator: identity,\n\tpadding: 0,\n\txAccessor: identity,\n\tflipXScale: false,\n\tuseCrossHairStyleCursor: true,\n\tdefaultFocus: true,\n\tonLoadMore: noop,\n\tonSelect: noop,\n\tmouseMoveEvent: true,\n\tpanEvent: true,\n\tzoomEvent: true,\n\tzoomMultiplier: 1.1,\n\tclamp: false,\n\tzoomAnchor: mouseBasedZoomAnchor,\n\tmaintainPointsPerPixelOnResize: true,\n\t// ratio: 2,\n\tdisableInteraction: false,\n};\n\nChartCanvas.childContextTypes = {\n\tplotData: PropTypes.array,\n\tfullData: PropTypes.array,\n\tchartConfig: PropTypes.arrayOf(\n\t\tPropTypes.shape({\n\t\t\tid: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,\n\t\t\torigin: PropTypes.arrayOf(PropTypes.number).isRequired,\n\t\t\tpadding: PropTypes.oneOfType([\n\t\t\t\tPropTypes.number,\n\t\t\t\tPropTypes.shape({\n\t\t\t\t\ttop: PropTypes.number,\n\t\t\t\t\tbottom: PropTypes.number,\n\t\t\t\t})\n\t\t\t]),\n\t\t\tyExtents: PropTypes.arrayOf(PropTypes.func),\n\t\t\tyExtentsProvider: PropTypes.func,\n\t\t\tyScale: PropTypes.func.isRequired,\n\t\t\tmouseCoordinates: PropTypes.shape({\n\t\t\t\tat: PropTypes.string,\n\t\t\t\tformat: PropTypes.func\n\t\t\t}),\n\t\t\twidth: PropTypes.number.isRequired,\n\t\t\theight: PropTypes.number.isRequired,\n\t\t})\n\t).isRequired,\n\txScale: PropTypes.func.isRequired,\n\txAccessor: PropTypes.func.isRequired,\n\tdisplayXAccessor: PropTypes.func.isRequired,\n\twidth: PropTypes.number.isRequired,\n\theight: PropTypes.number.isRequired,\n\tchartCanvasType: PropTypes.oneOf([\"svg\", \"hybrid\"]).isRequired,\n\tmargin: PropTypes.object.isRequired,\n\tratio: PropTypes.number.isRequired,\n\tgetCanvasContexts: PropTypes.func,\n\txAxisZoom: PropTypes.func,\n\tyAxisZoom: PropTypes.func,\n\tamIOnTop: PropTypes.func,\n\tredraw: PropTypes.func,\n\tsubscribe: PropTypes.func,\n\tunsubscribe: PropTypes.func,\n\tsetCursorClass: PropTypes.func,\n\tgenerateSubscriptionId: PropTypes.func,\n\tgetMutableState: PropTypes.func,\n};\n\nChartCanvas.ohlcv = d => ({ date: d.date, open: d.open, high: d.high, low: d.low, close: d.close, volume: d.volume });\n\nexport default ChartCanvas;\n"]} \ No newline at end of file +{"version":3,"sources":["../../src/lib/ChartCanvas.js"],"names":["log","CANDIDATES_FOR_RESET","shouldResetChart","thisProps","nextProps","every","result","key","getCursorStyle","tooltipStyle","getDimensions","props","height","margin","top","bottom","width","left","right","getXScaleDirection","flipXScale","calculateFullData","fullData","data","plotFull","xScale","clamp","pointsPerPxThreshold","xAccessor","displayXAccessor","minPointsPerPxThreshold","useWholeData","filterData","copy","resetChart","firstCalculation","process","env","NODE_ENV","state","calculateState","initialPlotData","plotData","postCalculator","children","dimensions","chartConfig","domain","updateChart","newState","initialXScale","lastItemWasVisible","initialChartConfig","lastItem","start","end","padding","maintainPointsPerPixelOnResize","direction","updatedXScale","setXRange","range","rangeStart","rangeEnd","newRangeStart","newRangeEnd","newDomainExtent","newStart","lastItemX","response","fallbackStart","fallbackEnd","dx","map","x","invert","newEnd","inputXAccesor","xExtentsProp","xExtents","i","length","prev","curr","Error","extent","d","each","rangeRoundPoints","isNaN","pinchCoordinates","pinch","touch1Pos","touch2Pos","topLeft","Math","min","bottomRight","max","ChartCanvas","getDataInfo","bind","getCanvasContexts","handleMouseMove","handleMouseEnter","handleMouseLeave","handleZoom","handlePinchZoom","handlePinchZoomEnd","handlePan","handlePanEnd","handleClick","handleMouseDown","handleDoubleClick","handleContextMenu","handleDragStart","handleDrag","handleDragEnd","panHelper","pinchZoomHelper","xAxisZoom","yAxisZoom","resetYDomain","calculateStateForDomain","generateSubscriptionId","draw","redraw","getAllPanConditions","subscriptions","subscribe","unsubscribe","amIOnTop","saveEventCaptureNode","saveCanvasContainerNode","setCursorClass","getMutableState","interactiveState","panInProgress","mutableState","lastSubscriptionId","node","eventCaptureNode","canvasContainerNode","canvases","axes","mouseCoord","ratio","bg","id","rest","getPanConditions","draggable","panEnabled","concat","filter","className","dragableComponents","mouseXY","e","currentCharts","currentItem","triggerEvent","newDomain","currentPlotData","currentDomain","beforePlotData","updatedScale","initialPinch","finalPinch","initialPinchXScale","iTL","iBR","fTL","fBR","xDash","round","yDash","y","cancelDrag","waitingForPinchZoomAnimationFrame","requestAnimationFrame","clearBothCanvas","trigger","clearThreeCanvas","firstItem","onLoadMore","setState","zoomDirection","zoomMultiplier","zoomAnchor","item","cx","c","show","chartId","yScale","yPanEnabled","type","forEach","listener","force","chartsToPan","dy","hackyWayToStopPanBeyondBounds__plotData","hackyWayToStopPanBeyondBounds__domain","mousePosition","panStartXScale","dxdy","waitingForPanAnimationFrame","inputType","waitingForMouseMoveAnimationFrame","prevMouseXY","clearMouseCanvas","startPos","chartCanvasType","reset","interaction","isInteractionEnabled","prevLastItem","calculatedState","changed","newChartConfig","realYDomain","zIndex","defaultFocus","mouseMoveEvent","panEvent","zoomEvent","useCrossHairStyleCursor","onSelect","cursorStyle","cursor","position","idx","disableInteraction","propTypes","number","isRequired","object","oneOf","array","func","oneOfType","string","seriesName","bool","shape","propName","console","warn","defaultProps","childContextTypes","arrayOf","origin","yExtents","yExtentsProvider","mouseCoordinates","at","format","ohlcv","date","open","high","low","close","volume"],"mappings":"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","file":"ChartCanvas.js","sourcesContent":["\n\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { extent as d3Extent, min, max } from \"d3-array\";\n\nimport {\n\thead,\n\tlast,\n\tisDefined,\n\tisNotDefined,\n\tclearCanvas,\n\tshallowEqual,\n\tidentity,\n\tnoop,\n\tfunctor,\n\tgetLogger,\n} from \"./utils\";\n\n/* eslint-disable no-unused-vars */\nimport {\n\tmouseBasedZoomAnchor,\n\tlastVisibleItemBasedZoomAnchor,\n\trightDomainBasedZoomAnchor,\n} from \"./utils/zoomBehavior\";\n/* eslint-enable no-unused-vars */\n\nimport { getNewChartConfig, getChartConfigWithUpdatedYScales, getCurrentCharts, getCurrentItem } from \"./utils/ChartDataUtil\";\n\nimport EventCapture from \"./EventCapture\";\n\nimport CanvasContainer from \"./CanvasContainer\";\nimport evaluator from \"./scale/evaluator\";\n\nconst log = getLogger(\"ChartCanvas\");\n\nconst CANDIDATES_FOR_RESET = [\n\t\"seriesName\",\n\t/* \"data\",*/\n\t/* \"xAccessor\",*/\n];\n\nfunction shouldResetChart(thisProps, nextProps) {\n\treturn !CANDIDATES_FOR_RESET.every(key => {\n\t\tconst result = shallowEqual(thisProps[key], nextProps[key]);\n\t\t// console.log(key, result);\n\t\treturn result;\n\t});\n}\n\nfunction getCursorStyle() {\n\tconst tooltipStyle = `\n\t.react-stockcharts-grabbing-cursor {\n\t\tpointer-events: all;\n\t\tcursor: -moz-grabbing;\n\t\tcursor: -webkit-grabbing;\n\t\tcursor: grabbing;\n\t}\n\t.react-stockcharts-crosshair-cursor {\n\t\tpointer-events: all;\n\t\tcursor: crosshair;\n\t}\n\t.react-stockcharts-tooltip-hover {\n\t\tpointer-events: all;\n\t\tcursor: pointer;\n\t}\n\t.react-stockcharts-avoid-interaction {\n\t\tpointer-events: none;\n\t}\n\t.react-stockcharts-enable-interaction {\n\t\tpointer-events: all;\n\t}\n\t.react-stockcharts-tooltip {\n\t\tpointer-events: all;\n\t\tcursor: pointer;\n\t}\n\t.react-stockcharts-default-cursor {\n\t\tcursor: default;\n\t}\n\t.react-stockcharts-move-cursor {\n\t\tcursor: move;\n\t}\n\t.react-stockcharts-pointer-cursor {\n\t\tcursor: pointer;\n\t}\n\t.react-stockcharts-ns-resize-cursor {\n\t\tcursor: ns-resize;\n\t}\n\t.react-stockcharts-ew-resize-cursor {\n\t\tcursor: ew-resize;\n\t}`;\n\treturn ();\n}\n\nfunction getDimensions(props) {\n\treturn {\n\t\theight: props.height - props.margin.top - props.margin.bottom,\n\t\twidth: props.width - props.margin.left - props.margin.right,\n\t};\n}\n\nfunction getXScaleDirection(flipXScale) {\n\treturn flipXScale ? -1 : 1;\n}\n\nfunction calculateFullData(props) {\n\tconst { data: fullData, plotFull, xScale, clamp, pointsPerPxThreshold, flipXScale } = props;\n\tconst { xAccessor, displayXAccessor, minPointsPerPxThreshold } = props;\n\n\tconst useWholeData = isDefined(plotFull)\n\t\t? plotFull\n\t\t: xAccessor === identity;\n\n\tconst { filterData } = evaluator({\n\t\txScale,\n\t\tuseWholeData,\n\t\tclamp,\n\t\tpointsPerPxThreshold,\n\t\tminPointsPerPxThreshold,\n\t\tflipXScale,\n\t});\n\n\treturn {\n\t\txAccessor,\n\t\tdisplayXAccessor: displayXAccessor || xAccessor,\n\t\txScale: xScale.copy(),\n\t\tfullData,\n\t\tfilterData\n\t};\n}\nfunction resetChart(props, firstCalculation = false) {\n\tif (process.env.NODE_ENV !== \"production\") {\n\t\tif (!firstCalculation) log(\"CHART RESET\");\n\t}\n\n\tconst state = calculateState(props);\n\tconst { xAccessor, displayXAccessor, fullData } = state;\n\tconst { plotData: initialPlotData, xScale } = state;\n\tconst { postCalculator, children } = props;\n\n\tconst plotData = postCalculator(initialPlotData);\n\n\tconst dimensions = getDimensions(props);\n\tconst chartConfig = getChartConfigWithUpdatedYScales(\n\t\tgetNewChartConfig(dimensions, children),\n\t\t{ plotData, xAccessor, displayXAccessor, fullData },\n\t\txScale.domain()\n\t);\n\n\treturn {\n\t\t...state,\n\t\txScale,\n\t\tplotData,\n\t\tchartConfig,\n\t};\n}\n\nfunction updateChart(\n\tnewState,\n\tinitialXScale,\n\tprops,\n\tlastItemWasVisible,\n\tinitialChartConfig,\n) {\n\n\tconst { fullData, xScale, xAccessor, displayXAccessor, filterData } = newState;\n\n\tconst lastItem = last(fullData);\n\tconst [start, end] = initialXScale.domain();\n\n\tif (process.env.NODE_ENV !== \"production\") {\n\t\tlog(\"TRIVIAL CHANGE\");\n\t}\n\n\tconst { postCalculator, children, padding, flipXScale } = props;\n\tconst { maintainPointsPerPixelOnResize } = props;\n\tconst direction = getXScaleDirection(flipXScale);\n\tconst dimensions = getDimensions(props);\n\n\tconst updatedXScale = setXRange(xScale, dimensions, padding, direction);\n\n\t// console.log(\"lastItemWasVisible =\", lastItemWasVisible, end, xAccessor(lastItem), end >= xAccessor(lastItem));\n\tlet initialPlotData;\n\tif (!lastItemWasVisible || end >= xAccessor(lastItem)) {\n\t\t// resize comes here...\n\t\t// get plotData between [start, end] and do not change the domain\n\t\tconst [rangeStart, rangeEnd] = initialXScale.range();\n\t\tconst [newRangeStart, newRangeEnd] = updatedXScale.range();\n\t\tconst newDomainExtent = ((newRangeEnd - newRangeStart) / (rangeEnd - rangeStart)) * (end - start);\n\t\tconst newStart = maintainPointsPerPixelOnResize\n\t\t\t? end - newDomainExtent\n\t\t\t: start;\n\n\t\tconst lastItemX = initialXScale(xAccessor(lastItem));\n\t\t// console.log(\"pointsPerPixel => \", newStart, start, end, updatedXScale(end));\n\t\tconst response = filterData(\n\t\t\tfullData, [newStart, end], xAccessor, updatedXScale,\n\t\t\t{ fallbackStart: start, fallbackEnd: { lastItem, lastItemX } }\n\t\t);\n\t\tinitialPlotData = response.plotData;\n\t\tupdatedXScale.domain(response.domain);\n\t\t// console.log(\"HERE!!!!!\", start, end);\n\t} else if (lastItemWasVisible\n\t\t\t&& end < xAccessor(lastItem)) {\n\t\t// this is when a new item is added and last item was visible\n\t\t// so slide over and show the new item also\n\n\t\t// get plotData between [xAccessor(l) - (end - start), xAccessor(l)] and DO change the domain\n\t\tconst dx = initialXScale(xAccessor(lastItem)) - initialXScale.range()[1];\n\t\tconst [newStart, newEnd] = initialXScale.range().map(x => x + dx).map(initialXScale.invert);\n\n\n\t\tconst response = filterData(fullData, [newStart, newEnd], xAccessor, updatedXScale);\n\t\tinitialPlotData = response.plotData;\n\t\tupdatedXScale.domain(response.domain);\t\t// if last item was visible, then shift\n\t}\n\t// plotData = getDataOfLength(fullData, showingInterval, plotData.length)\n\tconst plotData = postCalculator(initialPlotData);\n\tconst chartConfig = getChartConfigWithUpdatedYScales(\n\t\tgetNewChartConfig(dimensions, children, initialChartConfig),\n\t\t{ plotData, xAccessor, displayXAccessor, fullData },\n\t\tupdatedXScale.domain()\n\t);\n\n\treturn {\n\t\txScale: updatedXScale,\n\t\txAccessor,\n\t\tchartConfig,\n\t\tplotData,\n\t\tfullData,\n\t\tfilterData,\n\t};\n}\n\nfunction calculateState(props) {\n\n\tconst {\n\t\txAccessor: inputXAccesor, xExtents: xExtentsProp, data, padding, flipXScale\n\t} = props;\n\n\tif (process.env.NODE_ENV !== \"production\" && isDefined(props.xScale.invert)) {\n\t\tfor (let i = 1; i < data.length; i++) {\n\t\t\tconst prev = data[i - 1];\n\t\t\tconst curr = data[i];\n\t\t\tif (inputXAccesor(prev) > inputXAccesor(curr)) {\n\t\t\t\tthrow new Error(\"'data' is not sorted on 'xAccessor', send 'data' sorted in ascending order of 'xAccessor'\");\n\t\t\t}\n\t\t}\n\t}\n\n\tconst direction = getXScaleDirection(flipXScale);\n\tconst dimensions = getDimensions(props);\n\n\tconst extent = typeof xExtentsProp === \"function\"\n\t\t? xExtentsProp(data)\n\t\t: d3Extent(xExtentsProp.map(d => functor(d)).map(each => each(data, inputXAccesor)));\n\n\tconst { xAccessor, displayXAccessor, xScale, fullData, filterData } = calculateFullData(props);\n\tconst updatedXScale = setXRange(xScale, dimensions, padding, direction);\n\n\tconst { plotData, domain } = filterData(fullData, extent, inputXAccesor, updatedXScale);\n\n\treturn {\n\t\tplotData,\n\t\txScale: updatedXScale.domain(domain),\n\t\txAccessor,\n\t\tdisplayXAccessor,\n\t\tfullData,\n\t\tfilterData,\n\t};\n}\n\nfunction setXRange(xScale, dimensions, padding, direction = 1) {\n\tif (xScale.rangeRoundPoints) {\n\t\tif (isNaN(padding)) throw new Error(\"padding has to be a number for ordinal scale\");\n\t\txScale.rangeRoundPoints([0, dimensions.width], padding);\n\t} else if (xScale.padding) {\n\t\tif (isNaN(padding)) throw new Error(\"padding has to be a number for ordinal scale\");\n\t\txScale.range([0, dimensions.width]);\n\t\txScale.padding(padding / 2);\n\t} else {\n\t\tconst { left, right } = isNaN(padding)\n\t\t\t? padding\n\t\t\t: { left: padding, right: padding };\n\t\tif (direction > 0) {\n\t\t\txScale.range([left, dimensions.width - right]);\n\t\t} else {\n\t\t\txScale.range([dimensions.width - right, left]);\n\t\t}\n\t}\n\treturn xScale;\n}\n\nfunction pinchCoordinates(pinch) {\n\tconst { touch1Pos, touch2Pos } = pinch;\n\n\treturn {\n\t\ttopLeft: [Math.min(touch1Pos[0], touch2Pos[0]), Math.min(touch1Pos[1], touch2Pos[1])],\n\t\tbottomRight: [Math.max(touch1Pos[0], touch2Pos[0]), Math.max(touch1Pos[1], touch2Pos[1])]\n\t};\n}\n\n\nclass ChartCanvas extends Component {\n\tconstructor() {\n\t\tsuper();\n\t\tthis.getDataInfo = this.getDataInfo.bind(this);\n\t\tthis.getCanvasContexts = this.getCanvasContexts.bind(this);\n\n\t\tthis.handleMouseMove = this.handleMouseMove.bind(this);\n\t\tthis.handleMouseEnter = this.handleMouseEnter.bind(this);\n\t\tthis.handleMouseLeave = this.handleMouseLeave.bind(this);\n\t\tthis.handleZoom = this.handleZoom.bind(this);\n\t\tthis.handlePinchZoom = this.handlePinchZoom.bind(this);\n\t\tthis.handlePinchZoomEnd = this.handlePinchZoomEnd.bind(this);\n\t\tthis.handlePan = this.handlePan.bind(this);\n\t\tthis.handlePanEnd = this.handlePanEnd.bind(this);\n\t\tthis.handleClick = this.handleClick.bind(this);\n\t\tthis.handleMouseDown = this.handleMouseDown.bind(this);\n\t\tthis.handleDoubleClick = this.handleDoubleClick.bind(this);\n\t\tthis.handleContextMenu = this.handleContextMenu.bind(this);\n\t\tthis.handleDragStart = this.handleDragStart.bind(this);\n\t\tthis.handleDrag = this.handleDrag.bind(this);\n\t\tthis.handleDragEnd = this.handleDragEnd.bind(this);\n\n\t\tthis.panHelper = this.panHelper.bind(this);\n\t\tthis.pinchZoomHelper = this.pinchZoomHelper.bind(this);\n\t\tthis.xAxisZoom = this.xAxisZoom.bind(this);\n\t\tthis.yAxisZoom = this.yAxisZoom.bind(this);\n\t\tthis.resetYDomain = this.resetYDomain.bind(this);\n\t\tthis.calculateStateForDomain = this.calculateStateForDomain.bind(this);\n\t\tthis.generateSubscriptionId = this.generateSubscriptionId.bind(this);\n\t\tthis.draw = this.draw.bind(this);\n\t\tthis.redraw = this.redraw.bind(this);\n\t\tthis.getAllPanConditions = this.getAllPanConditions.bind(this);\n\n\t\tthis.subscriptions = [];\n\t\tthis.subscribe = this.subscribe.bind(this);\n\t\tthis.unsubscribe = this.unsubscribe.bind(this);\n\t\tthis.amIOnTop = this.amIOnTop.bind(this);\n\t\tthis.saveEventCaptureNode = this.saveEventCaptureNode.bind(this);\n\t\tthis.saveCanvasContainerNode = this.saveCanvasContainerNode.bind(this);\n\t\tthis.setCursorClass = this.setCursorClass.bind(this);\n\t\tthis.getMutableState = this.getMutableState.bind(this);\n\t\t// this.canvasDrawCallbackList = [];\n\t\tthis.interactiveState = [];\n\t\tthis.panInProgress = false;\n\n\t\tthis.state = {};\n\t\tthis.mutableState = {};\n\t\tthis.lastSubscriptionId = 0;\n\t}\n\tsaveEventCaptureNode(node) {\n\t\tthis.eventCaptureNode = node;\n\t}\n\tsaveCanvasContainerNode(node) {\n\t\tthis.canvasContainerNode = node;\n\t}\n\tgetMutableState() {\n\t\treturn this.mutableState;\n\t}\n\tgetDataInfo() {\n\t\treturn {\n\t\t\t...this.state,\n\t\t\tfullData: this.fullData,\n\t\t};\n\t}\n\tgetCanvasContexts() {\n\t\tif (this.canvasContainerNode) {\n\t\t\treturn this.canvasContainerNode.getCanvasContexts();\n\t\t}\n\t}\n\tgenerateSubscriptionId() {\n\t\tthis.lastSubscriptionId++;\n\t\treturn this.lastSubscriptionId;\n\t}\n\tclearBothCanvas() {\n\t\tconst canvases = this.getCanvasContexts();\n\t\tif (canvases && canvases.axes) {\n\t\t\tclearCanvas([\n\t\t\t\tcanvases.axes,\n\t\t\t\t// canvases.hover,\n\t\t\t\tcanvases.mouseCoord\n\t\t\t], this.props.ratio);\n\t\t}\n\t}\n\tclearMouseCanvas() {\n\t\tconst canvases = this.getCanvasContexts();\n\t\tif (canvases && canvases.mouseCoord) {\n\t\t\tclearCanvas([\n\t\t\t\tcanvases.mouseCoord,\n\t\t\t\t// canvases.hover,\n\t\t\t], this.props.ratio);\n\t\t}\n\t}\n\tclearThreeCanvas() {\n\t\tconst canvases = this.getCanvasContexts();\n\t\tif (canvases && canvases.axes) {\n\t\t\tclearCanvas([\n\t\t\t\tcanvases.axes,\n\t\t\t\t// canvases.hover,\n\t\t\t\tcanvases.mouseCoord,\n\t\t\t\tcanvases.bg\n\t\t\t], this.props.ratio);\n\t\t}\n\t}\n\tsubscribe(id, rest) {\n\t\tconst { getPanConditions = functor({\n\t\t\tdraggable: false,\n\t\t\tpanEnabled: true,\n\t\t}) } = rest;\n\t\tthis.subscriptions = this.subscriptions.concat({\n\t\t\tid,\n\t\t\t...rest,\n\t\t\tgetPanConditions,\n\t\t});\n\t}\n\tunsubscribe(id) {\n\t\tthis.subscriptions = this.subscriptions.filter(each => each.id !== id);\n\t}\n\tgetAllPanConditions() {\n\t\treturn this.subscriptions\n\t\t\t.map(each => each.getPanConditions());\n\t}\n\tsetCursorClass(className) {\n\t\tif (this.eventCaptureNode != null) {\n\t\t\tthis.eventCaptureNode.setCursorClass(className);\n\t\t}\n\t}\n\tamIOnTop(id) {\n\t\tconst dragableComponents = this.subscriptions\n\t\t\t.filter(each => each.getPanConditions().draggable);\n\n\t\treturn dragableComponents.length > 0\n\t\t\t&& last(dragableComponents).id === id;\n\t}\n\thandleContextMenu(mouseXY, e) {\n\t\tconst { xAccessor, chartConfig, plotData, xScale } = this.state;\n\n\t\tconst currentCharts = getCurrentCharts(chartConfig, mouseXY);\n\t\tconst currentItem = getCurrentItem(xScale, xAccessor, mouseXY, plotData);\n\n\t\tthis.triggerEvent(\"contextmenu\", {\n\t\t\tmouseXY,\n\t\t\tcurrentItem,\n\t\t\tcurrentCharts,\n\t\t}, e);\n\t}\n\tcalculateStateForDomain(newDomain) {\n\t\tconst {\n\t\t\txAccessor,\n\t\t\tdisplayXAccessor,\n\t\t\txScale: initialXScale,\n\t\t\tchartConfig: initialChartConfig,\n\t\t\tplotData: initialPlotData\n\t\t} = this.state;\n\t\tconst { filterData } = this.state;\n\t\tconst { fullData } = this;\n\t\tconst { postCalculator } = this.props;\n\n\t\tconst { plotData: beforePlotData, domain } = filterData(\n\t\t\tfullData,\n\t\t\tnewDomain,\n\t\t\txAccessor,\n\t\t\tinitialXScale,\n\t\t\t{\n\t\t\t\tcurrentPlotData: initialPlotData,\n\t\t\t\tcurrentDomain: initialXScale.domain()\n\t\t\t}\n\t\t);\n\n\t\tconst plotData = postCalculator(beforePlotData);\n\t\tconst updatedScale = initialXScale.copy().domain(domain);\n\t\tconst chartConfig = getChartConfigWithUpdatedYScales(\n\t\t\tinitialChartConfig,\n\t\t\t{ plotData, xAccessor, displayXAccessor, fullData },\n\t\t\tupdatedScale.domain()\n\t\t);\n\n\t\treturn {\n\t\t\txScale: updatedScale,\n\t\t\tplotData,\n\t\t\tchartConfig,\n\t\t};\n\t}\n\tpinchZoomHelper(initialPinch, finalPinch) {\n\t\tconst { xScale: initialPinchXScale } = initialPinch;\n\n\t\tconst {\n\t\t\txScale: initialXScale,\n\t\t\tchartConfig: initialChartConfig,\n\t\t\tplotData: initialPlotData,\n\t\t\txAccessor,\n\t\t\tdisplayXAccessor,\n\t\t} = this.state;\n\t\tconst { filterData } = this.state;\n\t\tconst { fullData } = this;\n\t\tconst { postCalculator } = this.props;\n\n\t\tconst { topLeft: iTL, bottomRight: iBR } = pinchCoordinates(initialPinch);\n\t\tconst { topLeft: fTL, bottomRight: fBR } = pinchCoordinates(finalPinch);\n\n\t\tconst e = initialPinchXScale.range()[1];\n\n\t\tconst xDash = Math.round(-(iBR[0] * fTL[0] - iTL[0] * fBR[0]) / (iTL[0] - iBR[0]));\n\t\tconst yDash = Math.round(e + ((e - iBR[0]) * (e - fTL[0]) - (e - iTL[0]) * (e - fBR[0])) / ((e - iTL[0]) - (e - iBR[0])));\n\n\t\tconst x = Math.round(-xDash * iTL[0] / (-xDash + fTL[0]));\n\t\tconst y = Math.round(e - (yDash - e) * (e - iTL[0]) / (yDash + (e - fTL[0])));\n\n\t\tconst newDomain = [x, y].map(initialPinchXScale.invert);\n\t\t// var domainR = initial.right + right;\n\n\t\tconst { plotData: beforePlotData, domain } = filterData(\n\t\t\tfullData,\n\t\t\tnewDomain,\n\t\t\txAccessor,\n\t\t\tinitialPinchXScale,\n\t\t\t{\n\t\t\t\tcurrentPlotData: initialPlotData,\n\t\t\t\tcurrentDomain: initialXScale.domain()\n\t\t\t}\n\t\t);\n\n\t\tconst plotData = postCalculator(beforePlotData);\n\t\tconst updatedScale = initialXScale.copy().domain(domain);\n\n\t\tconst mouseXY = finalPinch.touch1Pos;\n\t\tconst chartConfig = getChartConfigWithUpdatedYScales(\n\t\t\tinitialChartConfig,\n\t\t\t{ plotData, xAccessor, displayXAccessor, fullData },\n\t\t\tupdatedScale.domain()\n\t\t);\n\t\tconst currentItem = getCurrentItem(updatedScale, xAccessor, mouseXY, plotData);\n\n\t\treturn {\n\t\t\tchartConfig,\n\t\t\txScale: updatedScale,\n\t\t\tplotData,\n\t\t\tmouseXY,\n\t\t\tcurrentItem,\n\t\t};\n\t}\n\tcancelDrag() {\n\t\tthis.eventCaptureNode.cancelDrag();\n\t\tthis.triggerEvent(\"dragcancel\");\n\t}\n\thandlePinchZoom(initialPinch, finalPinch, e) {\n\t\tif (!this.waitingForPinchZoomAnimationFrame) {\n\t\t\tthis.waitingForPinchZoomAnimationFrame = true;\n\t\t\tconst state = this.pinchZoomHelper(initialPinch, finalPinch);\n\n\t\t\tthis.triggerEvent(\"pinchzoom\", state, e);\n\n\t\t\tthis.finalPinch = finalPinch;\n\n\t\t\trequestAnimationFrame(() => {\n\t\t\t\tthis.clearBothCanvas();\n\t\t\t\tthis.draw({ trigger: \"pinchzoom\" });\n\t\t\t\tthis.waitingForPinchZoomAnimationFrame = false;\n\t\t\t});\n\t\t}\n\t}\n\thandlePinchZoomEnd(initialPinch, e) {\n\t\tconst { xAccessor } = this.state;\n\n\t\tif (this.finalPinch) {\n\t\t\tconst state = this.pinchZoomHelper(initialPinch, this.finalPinch);\n\t\t\tconst { xScale } = state;\n\t\t\tthis.triggerEvent(\"pinchzoom\", state, e);\n\n\t\t\tthis.finalPinch = null;\n\n\t\t\tthis.clearThreeCanvas();\n\n\t\t\tconst { fullData } = this;\n\t\t\tconst firstItem = head(fullData);\n\n\t\t\tconst start = head(xScale.domain());\n\t\t\tconst end = xAccessor(firstItem);\n\t\t\tconst { onLoadMore } = this.props;\n\n\t\t\tthis.setState(state, () => {\n\t\t\t\tif (start < end) {\n\t\t\t\t\tonLoadMore(start, end);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\thandleZoom(zoomDirection, mouseXY, e) {\n\t\tif (this.panInProgress)\n\t\t\treturn;\n\t\t// console.log(\"zoomDirection \", zoomDirection, \" mouseXY \", mouseXY);\n\t\tconst { xAccessor, xScale: initialXScale, plotData: initialPlotData } = this.state;\n\t\tconst { zoomMultiplier, zoomAnchor } = this.props;\n\t\tconst { fullData } = this;\n\t\tconst item = zoomAnchor({\n\t\t\txScale: initialXScale,\n\t\t\txAccessor,\n\t\t\tmouseXY,\n\t\t\tplotData: initialPlotData,\n\t\t\tfullData,\n\t\t});\n\n\t\tconst cx = initialXScale(item);\n\t\tconst c = zoomDirection > 0 ? 1 * zoomMultiplier : 1 / zoomMultiplier;\n\t\tconst newDomain = initialXScale.range().map(x => cx + (x - cx) * c).map(initialXScale.invert);\n\n\t\tconst { xScale, plotData, chartConfig } = this.calculateStateForDomain(newDomain);\n\n\t\tconst currentItem = getCurrentItem(xScale, xAccessor, mouseXY, plotData);\n\t\tconst currentCharts = getCurrentCharts(chartConfig, mouseXY);\n\n\t\tthis.clearThreeCanvas();\n\n\t\tconst firstItem = head(fullData);\n\n\t\tconst start = head(xScale.domain());\n\t\tconst end = xAccessor(firstItem);\n\t\tconst { onLoadMore } = this.props;\n\n\t\tthis.mutableState = {\n\t\t\tmouseXY: mouseXY,\n\t\t\tcurrentItem: currentItem,\n\t\t\tcurrentCharts: currentCharts,\n\t\t};\n\n\t\tthis.triggerEvent(\"zoom\", {\n\t\t\txScale,\n\t\t\tplotData,\n\t\t\tchartConfig,\n\t\t\tmouseXY,\n\t\t\tcurrentCharts,\n\t\t\tcurrentItem,\n\t\t\tshow: true,\n\t\t}, e);\n\n\t\tthis.setState({\n\t\t\txScale,\n\t\t\tplotData,\n\t\t\tchartConfig,\n\t\t}, () => {\n\t\t\tif (start < end) {\n\t\t\t\tonLoadMore(start, end);\n\t\t\t}\n\t\t});\n\t}\n\txAxisZoom(newDomain) {\n\t\tconst { xScale, plotData, chartConfig } = this.calculateStateForDomain(newDomain);\n\t\tthis.clearThreeCanvas();\n\n\t\tconst { xAccessor } = this.state;\n\t\tconst { fullData } = this;\n\t\tconst firstItem = head(fullData);\n\t\tconst start = head(xScale.domain());\n\t\tconst end = xAccessor(firstItem);\n\t\tconst { onLoadMore } = this.props;\n\n\t\tthis.setState({\n\t\t\txScale,\n\t\t\tplotData,\n\t\t\tchartConfig,\n\t\t}, () => {\n\t\t\tif (start < end) onLoadMore(start, end);\n\t\t});\n\t}\n\tyAxisZoom(chartId, newDomain) {\n\t\tthis.clearThreeCanvas();\n\t\tconst { chartConfig: initialChartConfig } = this.state;\n\t\tconst chartConfig = initialChartConfig\n\t\t\t.map(each => {\n\t\t\t\tif (each.id === chartId) {\n\t\t\t\t\tconst { yScale } = each;\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...each,\n\t\t\t\t\t\tyScale: yScale.copy().domain(newDomain),\n\t\t\t\t\t\tyPanEnabled: true,\n\t\t\t\t\t};\n\t\t\t\t} else {\n\t\t\t\t\treturn each;\n\t\t\t\t}\n\t\t\t});\n\n\t\tthis.setState({\n\t\t\tchartConfig,\n\t\t});\n\t}\n\ttriggerEvent(type, props, e) {\n\t\t// console.log(\"triggering ->\", type);\n\n\t\tthis.subscriptions.forEach(each => {\n\t\t\tconst state = {\n\t\t\t\t...this.state,\n\t\t\t\tfullData: this.fullData,\n\t\t\t\tsubscriptions: this.subscriptions,\n\t\t\t};\n\t\t\teach.listener(type, props, state, e);\n\t\t});\n\t}\n\tdraw(props) {\n\t\tthis.subscriptions.forEach(each => {\n\t\t\tif (isDefined(each.draw))\n\t\t\t\teach.draw(props);\n\t\t});\n\t}\n\tredraw() {\n\t\tthis.clearThreeCanvas();\n\t\tthis.draw({ force: true });\n\t}\n\tpanHelper(mouseXY, initialXScale, { dx, dy }, chartsToPan) {\n\t\tconst { xAccessor, displayXAccessor, chartConfig: initialChartConfig } = this.state;\n\t\tconst { filterData } = this.state;\n\t\tconst { fullData } = this;\n\t\tconst { postCalculator } = this.props;\n\n\t\t// console.log(dx, dy);\n\t\tif (isNotDefined(initialXScale.invert))\n\t\t\tthrow new Error(\"xScale provided does not have an invert() method.\"\n\t\t\t\t+ \"You are likely using an ordinal scale. This scale does not support zoom, pan\");\n\n\t\tconst newDomain = initialXScale.range().map(x => x - dx).map(initialXScale.invert);\n\n\t\tconst { plotData: beforePlotData, domain } = filterData(\n\t\t\tfullData,\n\t\t\tnewDomain,\n\t\t\txAccessor,\n\t\t\tinitialXScale,\n\t\t\t{\n\t\t\t\tcurrentPlotData: this.hackyWayToStopPanBeyondBounds__plotData,\n\t\t\t\tcurrentDomain: this.hackyWayToStopPanBeyondBounds__domain\n\t\t\t}\n\t\t);\n\n\t\tconst updatedScale = initialXScale.copy().domain(domain);\n\t\tconst plotData = postCalculator(beforePlotData);\n\t\t// console.log(last(plotData));\n\n\t\tconst currentItem = getCurrentItem(updatedScale, xAccessor, mouseXY, plotData);\n\t\tconst chartConfig = getChartConfigWithUpdatedYScales(\n\t\t\tinitialChartConfig,\n\t\t\t{ plotData, xAccessor, displayXAccessor, fullData },\n\t\t\tupdatedScale.domain(),\n\t\t\tdy,\n\t\t\tchartsToPan\n\t\t);\n\t\tconst currentCharts = getCurrentCharts(chartConfig, mouseXY);\n\n\t\t// console.log(initialXScale.domain(), newDomain, updatedScale.domain());\n\t\treturn {\n\t\t\txScale: updatedScale,\n\t\t\tplotData,\n\t\t\tchartConfig,\n\t\t\tmouseXY,\n\t\t\tcurrentCharts,\n\t\t\tcurrentItem,\n\t\t};\n\t}\n\thandlePan(mousePosition, panStartXScale, dxdy, chartsToPan, e) {\n\t\tif (!this.waitingForPanAnimationFrame) {\n\t\t\tthis.waitingForPanAnimationFrame = true;\n\n\t\t\tthis.hackyWayToStopPanBeyondBounds__plotData = this.hackyWayToStopPanBeyondBounds__plotData || this.state.plotData;\n\t\t\tthis.hackyWayToStopPanBeyondBounds__domain = this.hackyWayToStopPanBeyondBounds__domain || this.state.xScale.domain();\n\n\t\t\tconst state = this.panHelper(mousePosition, panStartXScale, dxdy, chartsToPan);\n\n\t\t\tthis.hackyWayToStopPanBeyondBounds__plotData = state.plotData;\n\t\t\tthis.hackyWayToStopPanBeyondBounds__domain = state.xScale.domain();\n\n\t\t\tthis.panInProgress = true;\n\t\t\t// console.log(panStartXScale.domain(), state.xScale.domain());\n\n\t\t\tthis.triggerEvent(\"pan\", state, e);\n\n\t\t\tthis.mutableState = {\n\t\t\t\tmouseXY: state.mouseXY,\n\t\t\t\tcurrentItem: state.currentItem,\n\t\t\t\tcurrentCharts: state.currentCharts,\n\t\t\t};\n\t\t\trequestAnimationFrame(() => {\n\t\t\t\tthis.waitingForPanAnimationFrame = false;\n\t\t\t\tthis.clearBothCanvas();\n\t\t\t\tthis.draw({ trigger: \"pan\" });\n\t\t\t});\n\t\t}\n\t}\n\thandlePanEnd(mousePosition, panStartXScale, dxdy, chartsToPan, e) {\n\t\tconst state = this.panHelper(mousePosition, panStartXScale, dxdy, chartsToPan);\n\t\t// console.log(this.canvasDrawCallbackList.map(d => d.type));\n\t\tthis.hackyWayToStopPanBeyondBounds__plotData = null;\n\t\tthis.hackyWayToStopPanBeyondBounds__domain = null;\n\n\t\tthis.panInProgress = false;\n\n\t\t// console.log(\"PANEND\", panEnd++);\n\t\tconst {\n\t\t\txScale,\n\t\t\tplotData,\n\t\t\tchartConfig,\n\t\t} = state;\n\n\t\tthis.triggerEvent(\"panend\", state, e);\n\n\t\trequestAnimationFrame(() => {\n\t\t\tconst { xAccessor } = this.state;\n\t\t\tconst { fullData } = this;\n\n\t\t\tconst firstItem = head(fullData);\n\t\t\tconst start = head(xScale.domain());\n\t\t\tconst end = xAccessor(firstItem);\n\t\t\t// console.log(start, end, start < end ? \"Load more\" : \"I have it\");\n\n\t\t\tconst { onLoadMore } = this.props;\n\n\t\t\tthis.clearThreeCanvas();\n\n\t\t\tthis.setState({\n\t\t\t\txScale,\n\t\t\t\tplotData,\n\t\t\t\tchartConfig,\n\t\t\t}, () => {\n\t\t\t\tif (start < end) onLoadMore(start, end);\n\t\t\t});\n\t\t});\n\t}\n\thandleMouseDown(mousePosition, currentCharts, e) {\n\t\tthis.triggerEvent(\"mousedown\", this.mutableState, e);\n\t}\n\thandleMouseEnter(e) {\n\t\tthis.triggerEvent(\"mouseenter\", {\n\t\t\tshow: true,\n\t\t}, e);\n\t}\n\thandleMouseMove(mouseXY, inputType, e) {\n\t\tif (!this.waitingForMouseMoveAnimationFrame) {\n\t\t\tthis.waitingForMouseMoveAnimationFrame = true;\n\n\t\t\tconst { chartConfig, plotData, xScale, xAccessor } = this.state;\n\t\t\tconst currentCharts = getCurrentCharts(chartConfig, mouseXY);\n\t\t\tconst currentItem = getCurrentItem(xScale, xAccessor, mouseXY, plotData);\n\t\t\tthis.triggerEvent(\"mousemove\", {\n\t\t\t\tshow: true,\n\t\t\t\tmouseXY,\n\t\t\t\t// prevMouseXY is used in interactive components\n\t\t\t\tprevMouseXY: this.prevMouseXY,\n\t\t\t\tcurrentItem,\n\t\t\t\tcurrentCharts,\n\t\t\t}, e);\n\n\t\t\tthis.prevMouseXY = mouseXY;\n\t\t\tthis.mutableState = {\n\t\t\t\tmouseXY,\n\t\t\t\tcurrentItem,\n\t\t\t\tcurrentCharts,\n\t\t\t};\n\n\t\t\trequestAnimationFrame(() => {\n\t\t\t\tthis.clearMouseCanvas();\n\t\t\t\tthis.draw({ trigger: \"mousemove\" });\n\t\t\t\tthis.waitingForMouseMoveAnimationFrame = false;\n\t\t\t});\n\t\t}\n\t}\n\thandleMouseLeave(e) {\n\t\tthis.triggerEvent(\"mouseleave\", { show: false }, e);\n\t\tthis.clearMouseCanvas();\n\t\tthis.draw({ trigger: \"mouseleave\" });\n\t}\n\thandleDragStart({ startPos }, e) {\n\t\tthis.triggerEvent(\"dragstart\", { startPos }, e);\n\t}\n\thandleDrag({ startPos, mouseXY }, e) {\n\t\tconst { chartConfig, plotData, xScale, xAccessor } = this.state;\n\t\tconst currentCharts = getCurrentCharts(chartConfig, mouseXY);\n\t\tconst currentItem = getCurrentItem(xScale, xAccessor, mouseXY, plotData);\n\n\t\tthis.triggerEvent(\"drag\", {\n\t\t\tstartPos,\n\t\t\tmouseXY,\n\t\t\tcurrentItem,\n\t\t\tcurrentCharts,\n\t\t}, e);\n\n\t\tthis.mutableState = {\n\t\t\tmouseXY,\n\t\t\tcurrentItem,\n\t\t\tcurrentCharts,\n\t\t};\n\n\t\trequestAnimationFrame(() => {\n\t\t\tthis.clearMouseCanvas();\n\t\t\tthis.draw({ trigger: \"drag\" });\n\t\t});\n\t}\n\thandleDragEnd({ mouseXY }, e) {\n\t\tthis.triggerEvent(\"dragend\", { mouseXY }, e);\n\n\t\trequestAnimationFrame(() => {\n\t\t\tthis.clearMouseCanvas();\n\t\t\tthis.draw({ trigger: \"dragend\" });\n\t\t});\n\t}\n\thandleClick(mousePosition, e) {\n\t\tthis.triggerEvent(\"click\", this.mutableState, e);\n\n\t\trequestAnimationFrame(() => {\n\t\t\tthis.clearMouseCanvas();\n\t\t\tthis.draw({ trigger: \"click\" });\n\t\t});\n\t}\n\thandleDoubleClick(mousePosition, e) {\n\t\tthis.triggerEvent(\"dblclick\", {}, e);\n\t}\n\tgetChildContext() {\n\t\tconst dimensions = getDimensions(this.props);\n\t\treturn {\n\t\t\tfullData: this.fullData,\n\t\t\tplotData: this.state.plotData,\n\t\t\twidth: dimensions.width,\n\t\t\theight: dimensions.height,\n\t\t\tchartConfig: this.state.chartConfig,\n\t\t\txScale: this.state.xScale,\n\t\t\txAccessor: this.state.xAccessor,\n\t\t\tdisplayXAccessor: this.state.displayXAccessor,\n\t\t\tchartCanvasType: this.props.type,\n\t\t\tmargin: this.props.margin,\n\t\t\tratio: this.props.ratio,\n\t\t\txAxisZoom: this.xAxisZoom,\n\t\t\tyAxisZoom: this.yAxisZoom,\n\t\t\tgetCanvasContexts: this.getCanvasContexts,\n\t\t\tredraw: this.redraw,\n\t\t\tsubscribe: this.subscribe,\n\t\t\tunsubscribe: this.unsubscribe,\n\t\t\tgenerateSubscriptionId: this.generateSubscriptionId,\n\t\t\tgetMutableState: this.getMutableState,\n\t\t\tamIOnTop: this.amIOnTop,\n\t\t\tsetCursorClass: this.setCursorClass,\n\t\t};\n\t}\n\tcomponentWillMount() {\n\t\tconst { fullData, ...state } = resetChart(this.props, true);\n\t\tthis.setState(state);\n\t\tthis.fullData = fullData;\n\t}\n\tcomponentWillReceiveProps(nextProps) {\n\t\tconst reset = shouldResetChart(this.props, nextProps);\n\n\t\tconst interaction = isInteractionEnabled(this.state.xScale, this.state.xAccessor, this.state.plotData);\n\t\tconst { chartConfig: initialChartConfig } = this.state;\n\n\t\tlet newState;\n\t\tif (!interaction || reset || !shallowEqual(this.props.xExtents, nextProps.xExtents)) {\n\t\t\tif (process.env.NODE_ENV !== \"production\") {\n\t\t\t\tif (!interaction)\n\t\t\t\t\tlog(\"RESET CHART, changes to a non interactive chart\");\n\t\t\t\telse if (reset)\n\t\t\t\t\tlog(\"RESET CHART, one or more of these props changed\", CANDIDATES_FOR_RESET);\n\t\t\t\telse\n\t\t\t\t\tlog(\"xExtents changed\");\n\t\t\t}\n\t\t\t// do reset\n\t\t\tnewState = resetChart(nextProps);\n\t\t\tthis.mutableState = {};\n\t\t} else {\n\n\t\t\tconst [start, end] = this.state.xScale.domain();\n\t\t\tconst prevLastItem = last(this.fullData);\n\n\t\t\tconst calculatedState = calculateFullData(nextProps);\n\t\t\tconst { xAccessor } = calculatedState;\n\t\t\tconst lastItemWasVisible = xAccessor(prevLastItem) <= end && xAccessor(prevLastItem) >= start;\n\n\t\t\tif (process.env.NODE_ENV !== \"production\") {\n\t\t\t\tif (this.props.data !== nextProps.data)\n\t\t\t\t\tlog(\"data is changed but seriesName did not, change the seriesName if you wish to reset the chart and lastItemWasVisible = \", lastItemWasVisible);\n\t\t\t\telse\n\t\t\t\t\tlog(\"Trivial change, may be width/height or type changed, but that does not matter\");\n\t\t\t}\n\n\t\t\tnewState = updateChart(\n\t\t\t\tcalculatedState,\n\t\t\t\tthis.state.xScale,\n\t\t\t\tnextProps,\n\t\t\t\tlastItemWasVisible,\n\t\t\t\tinitialChartConfig,\n\t\t\t);\n\t\t}\n\n\t\tconst { fullData, ...state } = newState;\n\n\t\tif (this.panInProgress) {\n\t\t\tif (process.env.NODE_ENV !== \"production\") {\n\t\t\t\tlog(\"Pan is in progress\");\n\t\t\t}\n\t\t} else {\n\t\t\t/*\n\t\t\tif (!reset) {\n\t\t\t\tstate.chartConfig\n\t\t\t\t\t.forEach((each) => {\n\t\t\t\t\t\t// const sourceChartConfig = initialChartConfig.filter(d => d.id === each.id);\n\t\t\t\t\t\tconst prevChartConfig = find(initialChartConfig, d => d.id === each.id);\n\t\t\t\t\t\tif (isDefined(prevChartConfig) && prevChartConfig.yPanEnabled) {\n\t\t\t\t\t\t\teach.yScale.domain(prevChartConfig.yScale.domain());\n\t\t\t\t\t\t\teach.yPanEnabled = prevChartConfig.yPanEnabled;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t}\n\t\t\t*/\n\t\t\tthis.clearThreeCanvas();\n\n\t\t\tthis.setState(state);\n\t\t}\n\t\tthis.fullData = fullData;\n\t}\n\t/*\n\tcomponentDidUpdate(prevProps, prevState) {\n\t\tconsole.error(this.state.chartConfig, this.state.chartConfig.map(d => d.yScale.domain()));\n\t}\n\t*/\n\tresetYDomain(chartId) {\n\t\tconst { chartConfig } = this.state;\n\t\tlet changed = false;\n\t\tconst newChartConfig = chartConfig\n\t\t\t.map(each => {\n\t\t\t\tif ((isNotDefined(chartId) || each.id === chartId)\n\t\t\t\t\t\t&& !shallowEqual(each.yScale.domain(), each.realYDomain)) {\n\t\t\t\t\tchanged = true;\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...each,\n\t\t\t\t\t\tyScale: each.yScale.domain(each.realYDomain),\n\t\t\t\t\t\tyPanEnabled: false,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\treturn each;\n\t\t\t});\n\n\t\tif (changed) {\n\t\t\tthis.clearThreeCanvas();\n\t\t\tthis.setState({\n\t\t\t\tchartConfig: newChartConfig\n\t\t\t});\n\t\t}\n\t}\n\tshouldComponentUpdate() {\n\t\t// console.log(\"Happneing.....\", !this.panInProgress)\n\t\treturn !this.panInProgress;\n\t}\n\trender() {\n\n\t\tconst { type, height, width, margin, className, zIndex, defaultFocus, ratio, mouseMoveEvent, panEvent, zoomEvent } = this.props;\n\t\tconst { useCrossHairStyleCursor, onSelect } = this.props;\n\n\t\tconst { plotData, xScale, xAccessor, chartConfig } = this.state;\n\t\tconst dimensions = getDimensions(this.props);\n\n\t\tconst interaction = isInteractionEnabled(xScale, xAccessor, plotData);\n\n\t\tconst cursorStyle = useCrossHairStyleCursor && interaction;\n\t\tconst cursor = getCursorStyle();\n\t\treturn (\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t{cursor}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t{chartConfig\n\t\t\t\t\t\t\t.map((each, idx) => \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{this.props.children}\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t);\n\t}\n}\n\nfunction isInteractionEnabled(xScale, xAccessor, data) {\n\tconst interaction = !isNaN(xScale(xAccessor(head(data)))) && isDefined(xScale.invert);\n\treturn interaction;\n}\n\nChartCanvas.propTypes = {\n\twidth: PropTypes.number.isRequired,\n\theight: PropTypes.number.isRequired,\n\tmargin: PropTypes.object,\n\tratio: PropTypes.number.isRequired,\n\t// interval: PropTypes.oneOf([\"D\", \"W\", \"M\"]), // ,\"m1\", \"m5\", \"m15\", \"W\", \"M\"\n\ttype: PropTypes.oneOf([\"svg\", \"hybrid\"]),\n\tpointsPerPxThreshold: PropTypes.number,\n\tminPointsPerPxThreshold: PropTypes.number,\n\tdata: PropTypes.array.isRequired,\n\t// initialDisplay: PropTypes.number,\n\txAccessor: PropTypes.func,\n\txExtents: PropTypes.oneOfType([\n\t\tPropTypes.array,\n\t\tPropTypes.func\n\t]),\n\tzoomAnchor: PropTypes.func,\n\n\tclassName: PropTypes.string,\n\tseriesName: PropTypes.string.isRequired,\n\tzIndex: PropTypes.number,\n\tchildren: PropTypes.node.isRequired,\n\txScale: PropTypes.func.isRequired,\n\tpostCalculator: PropTypes.func,\n\tflipXScale: PropTypes.bool,\n\tuseCrossHairStyleCursor: PropTypes.bool,\n\tpadding: PropTypes.oneOfType([\n\t\tPropTypes.number,\n\t\tPropTypes.shape({\n\t\t\tleft: PropTypes.number,\n\t\t\tright: PropTypes.number,\n\t\t})\n\t]),\n\tdefaultFocus: PropTypes.bool,\n\tzoomMultiplier: PropTypes.number,\n\tonLoadMore: PropTypes.func,\n\tdisplayXAccessor: function(props, propName/* , componentName */) {\n\t\tif (isNotDefined(props[propName])) {\n\t\t\tconsole.warn(\"`displayXAccessor` is not defined,\"\n\t\t\t\t+ \" will use the value from `xAccessor` as `displayXAccessor`.\"\n\t\t\t\t+ \" This might be ok if you do not use a discontinuous scale\"\n\t\t\t\t+ \" but if you do, provide a `displayXAccessor` prop to `ChartCanvas`\");\n\t\t} else if (typeof props[propName] !== \"function\") {\n\t\t\treturn new Error(\"displayXAccessor has to be a function\");\n\t\t}\n\t},\n\tmouseMoveEvent: PropTypes.bool,\n\tpanEvent: PropTypes.bool,\n\tclamp: PropTypes.oneOfType([PropTypes.string, PropTypes.bool, PropTypes.func]),\n\tzoomEvent: PropTypes.bool,\n\tonSelect: PropTypes.func,\n\tmaintainPointsPerPixelOnResize: PropTypes.bool,\n\tdisableInteraction: PropTypes.bool,\n};\n\nChartCanvas.defaultProps = {\n\tmargin: { top: 20, right: 30, bottom: 30, left: 80 },\n\ttype: \"hybrid\",\n\tpointsPerPxThreshold: 2,\n\tminPointsPerPxThreshold: 1 / 100,\n\tclassName: \"react-stockchart\",\n\tzIndex: 1,\n\txExtents: [min, max],\n\tpostCalculator: identity,\n\tpadding: 0,\n\txAccessor: identity,\n\tflipXScale: false,\n\tuseCrossHairStyleCursor: true,\n\tdefaultFocus: true,\n\tonLoadMore: noop,\n\tonSelect: noop,\n\tmouseMoveEvent: true,\n\tpanEvent: true,\n\tzoomEvent: true,\n\tzoomMultiplier: 1.1,\n\tclamp: false,\n\tzoomAnchor: mouseBasedZoomAnchor,\n\tmaintainPointsPerPixelOnResize: true,\n\t// ratio: 2,\n\tdisableInteraction: false,\n};\n\nChartCanvas.childContextTypes = {\n\tplotData: PropTypes.array,\n\tfullData: PropTypes.array,\n\tchartConfig: PropTypes.arrayOf(\n\t\tPropTypes.shape({\n\t\t\tid: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,\n\t\t\torigin: PropTypes.arrayOf(PropTypes.number).isRequired,\n\t\t\tpadding: PropTypes.oneOfType([\n\t\t\t\tPropTypes.number,\n\t\t\t\tPropTypes.shape({\n\t\t\t\t\ttop: PropTypes.number,\n\t\t\t\t\tbottom: PropTypes.number,\n\t\t\t\t})\n\t\t\t]),\n\t\t\tyExtents: PropTypes.arrayOf(PropTypes.func),\n\t\t\tyExtentsProvider: PropTypes.func,\n\t\t\tyScale: PropTypes.func.isRequired,\n\t\t\tmouseCoordinates: PropTypes.shape({\n\t\t\t\tat: PropTypes.string,\n\t\t\t\tformat: PropTypes.func\n\t\t\t}),\n\t\t\twidth: PropTypes.number.isRequired,\n\t\t\theight: PropTypes.number.isRequired,\n\t\t})\n\t).isRequired,\n\txScale: PropTypes.func.isRequired,\n\txAccessor: PropTypes.func.isRequired,\n\tdisplayXAccessor: PropTypes.func.isRequired,\n\twidth: PropTypes.number.isRequired,\n\theight: PropTypes.number.isRequired,\n\tchartCanvasType: PropTypes.oneOf([\"svg\", \"hybrid\"]).isRequired,\n\tmargin: PropTypes.object.isRequired,\n\tratio: PropTypes.number.isRequired,\n\tgetCanvasContexts: PropTypes.func,\n\txAxisZoom: PropTypes.func,\n\tyAxisZoom: PropTypes.func,\n\tamIOnTop: PropTypes.func,\n\tredraw: PropTypes.func,\n\tsubscribe: PropTypes.func,\n\tunsubscribe: PropTypes.func,\n\tsetCursorClass: PropTypes.func,\n\tgenerateSubscriptionId: PropTypes.func,\n\tgetMutableState: PropTypes.func,\n};\n\nChartCanvas.ohlcv = d => ({ date: d.date, open: d.open, high: d.high, low: d.low, close: d.close, volume: d.volume });\n\nexport default ChartCanvas;\n"]} \ No newline at end of file diff --git a/lib/annotation/LabelAnnotation.js b/lib/annotation/LabelAnnotation.js index bd4b203..c18a1a6 100644 --- a/lib/annotation/LabelAnnotation.js +++ b/lib/annotation/LabelAnnotation.js @@ -133,7 +133,7 @@ function helper(props, xAccessor, xScale, yScale) { LabelAnnotation.propTypes = { className: _propTypes2.default.string, - text: _propTypes2.default.string, + text: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.func]), textAnchor: _propTypes2.default.string, fontFamily: _propTypes2.default.string, fontSize: _propTypes2.default.number, diff --git a/lib/annotation/LabelAnnotation.js.map b/lib/annotation/LabelAnnotation.js.map index 938ecfd..97fd136 100644 --- a/lib/annotation/LabelAnnotation.js.map +++ b/lib/annotation/LabelAnnotation.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../../src/lib/annotation/LabelAnnotation.js"],"names":["helper","LabelAnnotation","props","handleClick","bind","e","onClick","xScale","yScale","datum","className","textAnchor","fontFamily","fontSize","opacity","rotate","xAccessor","xPos","yPos","fill","text","tooltip","x","y","plotData","xFunc","yFunc","propTypes","string","number","func","object","oneOfType","defaultProps"],"mappings":"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","file":"LabelAnnotation.js","sourcesContent":["\n\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { functor } from \"../utils\";\n\nclass LabelAnnotation extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.handleClick = this.handleClick.bind(this);\n\t}\n\thandleClick(e) {\n\t\tconst { onClick } = this.props;\n\n\t\tif (onClick) {\n\t\t\tconst { xScale, yScale, datum } = this.props;\n\t\t\tonClick({ xScale, yScale, datum }, e);\n\t\t}\n\t}\n\trender() {\n\t\tconst { className, textAnchor, fontFamily, fontSize, opacity, rotate } = this.props;\n\t\tconst { xAccessor, xScale, yScale } = this.props;\n\n\t\tconst { xPos, yPos, fill, text, tooltip } = helper(this.props, xAccessor, xScale, yScale);\n\n\t\treturn (\n\t\t\t{tooltip}\n\t\t\t{text}\n\t\t);\n\t}\n}\n\nexport function helper(props, xAccessor, xScale, yScale) {\n\tconst { x, y, datum, fill, text, tooltip, plotData } = props;\n\n\tconst xFunc = functor(x);\n\tconst yFunc = functor(y);\n\n\tconst [xPos, yPos] = [xFunc({ xScale, xAccessor, datum, plotData }), yFunc({ yScale, datum, plotData })];\n\n\treturn {\n\t\txPos,\n\t\tyPos,\n\t\ttext: functor(text)(datum),\n\t\tfill: functor(fill)(datum),\n\t\ttooltip: functor(tooltip)(datum),\n\t};\n}\n\nLabelAnnotation.propTypes = {\n\tclassName: PropTypes.string,\n\ttext: PropTypes.string,\n\ttextAnchor: PropTypes.string,\n\tfontFamily: PropTypes.string,\n\tfontSize: PropTypes.number,\n\topacity: PropTypes.number,\n\trotate: PropTypes.number,\n\tonClick: PropTypes.func,\n\txAccessor: PropTypes.func,\n\txScale: PropTypes.func,\n\tyScale: PropTypes.func,\n\tdatum: PropTypes.object,\n\tx: PropTypes.oneOfType([\n\t\tPropTypes.number,\n\t\tPropTypes.func\n\t]),\n\ty: PropTypes.oneOfType([\n\t\tPropTypes.number,\n\t\tPropTypes.func\n\t])\n};\n\nexport const defaultProps = {\n\ttextAnchor: \"middle\",\n\tfontFamily: \"Helvetica Neue, Helvetica, Arial, sans-serif\",\n\tfontSize: 12,\n\tfill: \"#000000\",\n\topacity: 1,\n\trotate: 0,\n\tx: ({ xScale, xAccessor, datum }) => xScale(xAccessor(datum)),\n};\n\nLabelAnnotation.defaultProps = {\n\t...defaultProps,\n\tclassName: \"react-stockcharts-labelannotation\",\n};\n\nexport default LabelAnnotation;\n"]} \ No newline at end of file +{"version":3,"sources":["../../../src/lib/annotation/LabelAnnotation.js"],"names":["helper","LabelAnnotation","props","handleClick","bind","e","onClick","xScale","yScale","datum","className","textAnchor","fontFamily","fontSize","opacity","rotate","xAccessor","xPos","yPos","fill","text","tooltip","x","y","plotData","xFunc","yFunc","propTypes","string","oneOfType","func","number","object","defaultProps"],"mappings":"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","file":"LabelAnnotation.js","sourcesContent":["\n\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { functor } from \"../utils\";\n\nclass LabelAnnotation extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.handleClick = this.handleClick.bind(this);\n\t}\n\thandleClick(e) {\n\t\tconst { onClick } = this.props;\n\n\t\tif (onClick) {\n\t\t\tconst { xScale, yScale, datum } = this.props;\n\t\t\tonClick({ xScale, yScale, datum }, e);\n\t\t}\n\t}\n\trender() {\n\t\tconst { className, textAnchor, fontFamily, fontSize, opacity, rotate } = this.props;\n\t\tconst { xAccessor, xScale, yScale } = this.props;\n\n\t\tconst { xPos, yPos, fill, text, tooltip } = helper(this.props, xAccessor, xScale, yScale);\n\n\t\treturn (\n\t\t\t{tooltip}\n\t\t\t{text}\n\t\t);\n\t}\n}\n\nexport function helper(props, xAccessor, xScale, yScale) {\n\tconst { x, y, datum, fill, text, tooltip, plotData } = props;\n\n\tconst xFunc = functor(x);\n\tconst yFunc = functor(y);\n\n\tconst [xPos, yPos] = [xFunc({ xScale, xAccessor, datum, plotData }), yFunc({ yScale, datum, plotData })];\n\n\treturn {\n\t\txPos,\n\t\tyPos,\n\t\ttext: functor(text)(datum),\n\t\tfill: functor(fill)(datum),\n\t\ttooltip: functor(tooltip)(datum),\n\t};\n}\n\nLabelAnnotation.propTypes = {\n\tclassName: PropTypes.string,\n\ttext: PropTypes.oneOfType([\n\t\tPropTypes.string,\n\t\tPropTypes.func\n\t]),\n\ttextAnchor: PropTypes.string,\n\tfontFamily: PropTypes.string,\n\tfontSize: PropTypes.number,\n\topacity: PropTypes.number,\n\trotate: PropTypes.number,\n\tonClick: PropTypes.func,\n\txAccessor: PropTypes.func,\n\txScale: PropTypes.func,\n\tyScale: PropTypes.func,\n\tdatum: PropTypes.object,\n\tx: PropTypes.oneOfType([\n\t\tPropTypes.number,\n\t\tPropTypes.func\n\t]),\n\ty: PropTypes.oneOfType([\n\t\tPropTypes.number,\n\t\tPropTypes.func\n\t])\n};\n\nexport const defaultProps = {\n\ttextAnchor: \"middle\",\n\tfontFamily: \"Helvetica Neue, Helvetica, Arial, sans-serif\",\n\tfontSize: 12,\n\tfill: \"#000000\",\n\topacity: 1,\n\trotate: 0,\n\tx: ({ xScale, xAccessor, datum }) => xScale(xAccessor(datum)),\n};\n\nLabelAnnotation.defaultProps = {\n\t...defaultProps,\n\tclassName: \"react-stockcharts-labelannotation\",\n};\n\nexport default LabelAnnotation;\n"]} \ No newline at end of file diff --git a/lib/axes/Axis.js b/lib/axes/Axis.js index 8252010..b3e075b 100644 --- a/lib/axes/Axis.js +++ b/lib/axes/Axis.js @@ -116,6 +116,7 @@ var Axis = function (_Component) { var _props3 = this.props, bg = _props3.bg, axisZoomCallback = _props3.axisZoomCallback, + className = _props3.className, zoomCursorClassName = _props3.zoomCursorClassName, zoomEnabled = _props3.zoomEnabled, getScale = _props3.getScale, @@ -135,6 +136,7 @@ var Axis = function (_Component) { getMoreProps: this.getMoreProps, getMouseDelta: getMouseDelta, axisZoomCallback: axisZoomCallback, + className: className, zoomCursorClassName: zoomCursorClassName, inverted: inverted, onContextMenu: onContextMenu, diff --git a/lib/axes/Axis.js.map b/lib/axes/Axis.js.map index 2ff6d5f..819fe36 100644 --- a/lib/axes/Axis.js.map +++ b/lib/axes/Axis.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../../src/lib/axes/Axis.js"],"names":["Axis","props","renderSVG","bind","drawOnCanvas","saveNode","getMoreProps","node","ctx","moreProps","showDomain","showTicks","transform","range","getScale","save","translate","drawAxisLine","tickProps","tickHelper","drawTicks","restore","className","ticks","axisTicksSVG","domain","axisLineSVG","bg","axisZoomCallback","zoomCursorClassName","zoomEnabled","inverted","getMouseDelta","edgeClip","onContextMenu","onDoubleClick","zoomCapture","propTypes","innerTickSize","number","outerTickSize","tickFormat","func","tickPadding","tickSize","tickLabelFill","string","tickStroke","tickStrokeOpacity","tickStrokeWidth","tickStrokeDasharray","oneOf","tickValues","oneOfType","array","tickInterval","tickIntervalFunction","bool","arrayOf","isRequired","object","defaultProps","scale","orient","fontSize","fontFamily","fontWeight","flexTicks","showTickLabel","tickArguments","tickValuesProp","min","max","baseTickValues","baseFormat","format","d","sign","tickSpacing","Math","dy","canvas_dy","textAnchor","map","x","round","value","x1","y1","x2","y2","labelX","labelY","nodes","id","fy","origX","simulation","force","strength","stop","i","tick","zip","combine","a","b","abs","y","domainClassName","fill","stroke","strokeWidth","opacity","xAxis","lineWidth","strokeStyle","beginPath","moveTo","lineTo","Tick","children","result","idx","fillStyle","forEach","drawEachTick","font","textAlign","drawEachTickLabel","setLineDash","split","fillText"],"mappings":"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","file":"Axis.js","sourcesContent":["import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { forceSimulation, forceX, forceCollide } from \"d3-force\";\nimport { range as d3Range } from \"d3-array\";\n\nimport GenericChartComponent from \"../GenericChartComponent\";\nimport { getAxisCanvas } from \"../GenericComponent\";\nimport AxisZoomCapture from \"./AxisZoomCapture\";\n\nimport { first, last, hexToRGBA, isNotDefined, isDefined, identity, zipper, strokeDashTypes, getStrokeDasharray } from \"../utils\";\n\nclass Axis extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.renderSVG = this.renderSVG.bind(this);\n\t\tthis.drawOnCanvas = this.drawOnCanvas.bind(this);\n\t\tthis.saveNode = this.saveNode.bind(this);\n\t\tthis.getMoreProps = this.getMoreProps.bind(this);\n\t}\n\tsaveNode(node) {\n\t\tthis.node = node;\n\t}\n\tgetMoreProps() {\n\t\treturn this.node.getMoreProps();\n\t}\n\tdrawOnCanvas(ctx, moreProps) {\n\t\tconst { showDomain, showTicks, transform, range, getScale } = this.props;\n\n\t\tctx.save();\n\t\tctx.translate(transform[0], transform[1]);\n\n\t\tif (showDomain) drawAxisLine(ctx, this.props, range);\n\t\tif (showTicks) {\n\t\t\tconst tickProps = tickHelper(this.props, getScale(moreProps));\n\t\t\tdrawTicks(ctx, tickProps);\n\t\t}\n\n\t\tctx.restore();\n\t}\n\trenderSVG(moreProps) {\n\t\tconst { className } = this.props;\n\t\tconst { showDomain, showTicks, range, getScale } = this.props;\n\n\t\tconst ticks = showTicks ? axisTicksSVG(this.props, getScale(moreProps)) : null;\n\t\tconst domain = showDomain ? axisLineSVG(this.props, range) : null;\n\n\t\treturn \n\t\t\t{ticks}\n\t\t\t{domain}\n\t\t;\n\t}\n\trender() {\n\t\tconst { bg, axisZoomCallback, zoomCursorClassName, zoomEnabled, getScale, inverted } = this.props;\n\t\tconst { transform, getMouseDelta, edgeClip } = this.props;\n\t\tconst { onContextMenu, onDoubleClick } = this.props;\n\n\t\tconst zoomCapture = zoomEnabled\n\t\t\t? \n\t\t\t: null;\n\n\t\treturn \n\t\t\t{zoomCapture}\n\t\t\t\n\t\t;\n\t}\n}\n\nAxis.propTypes = {\n\tinnerTickSize: PropTypes.number,\n\touterTickSize: PropTypes.number,\n\ttickFormat: PropTypes.func,\n\ttickPadding: PropTypes.number,\n\ttickSize: PropTypes.number,\n\tticks: PropTypes.number,\n\ttickLabelFill: PropTypes.string,\n\ttickStroke: PropTypes.string,\n\ttickStrokeOpacity: PropTypes.number,\n\ttickStrokeWidth: PropTypes.number,\n\ttickStrokeDasharray: PropTypes.oneOf(strokeDashTypes),\n\ttickValues: PropTypes.oneOfType([PropTypes.array, PropTypes.func]),\n\ttickInterval: PropTypes.number,\n\ttickIntervalFunction: PropTypes.func,\n\tshowDomain: PropTypes.bool,\n\tshowTicks: PropTypes.bool,\n\tclassName: PropTypes.string,\n\taxisZoomCallback: PropTypes.func,\n\tzoomEnabled: PropTypes.bool,\n\tinverted: PropTypes.bool,\n\tzoomCursorClassName: PropTypes.string,\n\ttransform: PropTypes.arrayOf(PropTypes.number).isRequired,\n\trange: PropTypes.arrayOf(PropTypes.number).isRequired,\n\tgetMouseDelta: PropTypes.func.isRequired,\n\tgetScale: PropTypes.func.isRequired,\n\tbg: PropTypes.object.isRequired,\n\tedgeClip: PropTypes.bool.isRequired,\n\tonContextMenu: PropTypes.func,\n\tonDoubleClick: PropTypes.func,\n};\n\nAxis.defaultProps = {\n\tzoomEnabled: false,\n\tzoomCursorClassName: \"\",\n\tedgeClip: false,\n};\n\nfunction tickHelper(props, scale) {\n\tconst {\n\t\torient, innerTickSize, tickFormat, tickPadding,\n\t\ttickLabelFill, tickStrokeWidth, tickStrokeDasharray,\n\t\tfontSize, fontFamily, fontWeight, showTicks, flexTicks,\n\t\tshowTickLabel\n\t} = props;\n\tconst {\n\t\tticks: tickArguments, tickValues: tickValuesProp,\n\t\ttickStroke, tickStrokeOpacity, tickInterval, tickIntervalFunction\n\t} = props;\n\n\t// if (tickArguments) tickArguments = [tickArguments];\n\n\tlet tickValues;\n\tif (isDefined(tickValuesProp)) {\n\t\tif (typeof tickValuesProp === \"function\") {\n\t\t\ttickValues = tickValuesProp(scale.domain());\n\t\t} else {\n\t\t\ttickValues = tickValuesProp;\n\t\t}\n\t} else if (isDefined(tickInterval)) {\n\t\tconst [min, max] = scale.domain();\n\t\tconst baseTickValues = d3Range(min, max, (max - min) / tickInterval);\n\n\t\ttickValues = tickIntervalFunction\n\t\t\t? tickIntervalFunction(min, max, tickInterval)\n\t\t\t: baseTickValues;\n\t} else if (isDefined(scale.ticks)) {\n\t\ttickValues = scale.ticks(tickArguments, flexTicks);\n\t} else {\n\t\ttickValues = scale.domain();\n\t}\n\n\tconst baseFormat = scale.tickFormat\n\t\t? scale.tickFormat(tickArguments)\n\t\t: identity;\n\n\tconst format = isNotDefined(tickFormat)\n\t\t? baseFormat\n\t\t: d => tickFormat(d) || \"\";\n\n\tconst sign = orient === \"top\" || orient === \"left\" ? -1 : 1;\n\tconst tickSpacing = Math.max(innerTickSize, 0) + tickPadding;\n\n\tlet ticks, dy, canvas_dy, textAnchor;\n\n\tif (orient === \"bottom\" || orient === \"top\") {\n\t\tdy = sign < 0 ? \"0em\" : \".71em\";\n\t\tcanvas_dy = sign < 0 ? 0 : (fontSize * .71);\n\t\ttextAnchor = \"middle\";\n\n\t\tticks = tickValues.map(d => {\n\t\t\tconst x = Math.round(scale(d));\n\t\t\treturn {\n\t\t\t\tvalue: d,\n\t\t\t\tx1: x,\n\t\t\t\ty1: 0,\n\t\t\t\tx2: x,\n\t\t\t\ty2: sign * innerTickSize,\n\t\t\t\tlabelX: x,\n\t\t\t\tlabelY: sign * tickSpacing,\n\t\t\t};\n\t\t});\n\n\t\tif (showTicks && flexTicks) {\n\t\t\t// console.log(ticks, showTicks);\n\n\t\t\tconst nodes = ticks.map(d => ({ id: d.value, value: d.value, fy: d.y2, origX: d.x1 }));\n\n\t\t\tconst simulation = forceSimulation(nodes)\n\t\t\t\t.force(\"x\", forceX(d => d.origX).strength(1))\n\t\t\t\t.force(\"collide\", forceCollide(22))\n\t\t\t\t// .force(\"center\", forceCenter())\n\t\t\t\t.stop();\n\n\t\t\tfor (let i = 0; i < 100; ++i) simulation.tick();\n\t\t\t// console.log(nodes);\n\n\t\t\tconst zip = zipper()\n\t\t\t\t.combine((a, b) => {\n\t\t\t\t\tif (Math.abs(b.x - b.origX) > 0.01) {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t...a,\n\t\t\t\t\t\t\tx2: b.x,\n\t\t\t\t\t\t\tlabelX: b.x\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\treturn a;\n\t\t\t\t});\n\n\t\t\tticks = zip(ticks, nodes);\n\t\t}\n\n\n\t} else {\n\t\tticks = tickValues.map(d => {\n\t\t\tconst y = Math.round(scale(d));\n\t\t\treturn {\n\t\t\t\tvalue: d,\n\t\t\t\tx1: 0,\n\t\t\t\ty1: y,\n\t\t\t\tx2: sign * innerTickSize,\n\t\t\t\ty2: y,\n\t\t\t\tlabelX: sign * tickSpacing,\n\t\t\t\tlabelY: y,\n\t\t\t};\n\t\t});\n\n\t\tdy = \".32em\";\n\t\tcanvas_dy = (fontSize * .32);\n\t\ttextAnchor = sign < 0 ? \"end\" : \"start\";\n\t}\n\n\treturn {\n\t\tticks, scale, tickStroke,\n\t\ttickLabelFill: (tickLabelFill || tickStroke),\n\t\ttickStrokeOpacity,\n\t\ttickStrokeWidth,\n\t\ttickStrokeDasharray,\n\t\tdy,\n\t\tcanvas_dy,\n\t\ttextAnchor,\n\t\tfontSize,\n\t\tfontFamily,\n\t\tfontWeight,\n\t\tformat,\n\t\tshowTickLabel,\n\t};\n}\n\n/* eslint-disable react/prop-types */\nfunction axisLineSVG(props, range) {\n\tconst { orient, outerTickSize } = props;\n\tconst { domainClassName, fill, stroke, strokeWidth, opacity } = props;\n\n\tconst sign = orient === \"top\" || orient === \"left\" ? -1 : 1;\n\n\tlet d;\n\n\tif (orient === \"bottom\" || orient === \"top\") {\n\t\td = \"M\" + range[0] + \",\" + sign * outerTickSize + \"V0H\" + range[1] + \"V\" + sign * outerTickSize;\n\t} else {\n\t\td = \"M\" + sign * outerTickSize + \",\" + range[0] + \"H0V\" + range[1] + \"H\" + sign * outerTickSize;\n\t}\n\n\treturn (\n\t\t\n\t\t\n\t);\n}\n/* eslint-enable react/prop-types */\n\n\nfunction drawAxisLine(ctx, props, range) {\n\t// props = { ...AxisLine.defaultProps, ...props };\n\n\tconst { orient, outerTickSize, stroke, strokeWidth, opacity } = props;\n\n\tconst sign = orient === \"top\" || orient === \"left\" ? -1 : 1;\n\tconst xAxis = (orient === \"bottom\" || orient === \"top\");\n\n\t// var range = d3_scaleRange(xAxis ? xScale : yScale);\n\n\tctx.lineWidth = strokeWidth;\n\tctx.strokeStyle = hexToRGBA(stroke, opacity);\n\n\tctx.beginPath();\n\n\tif (xAxis) {\n\t\tctx.moveTo(first(range), sign * outerTickSize);\n\t\tctx.lineTo(first(range), 0);\n\t\tctx.lineTo(last(range), 0);\n\t\tctx.lineTo(last(range), sign * outerTickSize);\n\t} else {\n\t\tctx.moveTo(sign * outerTickSize, first(range));\n\t\tctx.lineTo(0, first(range));\n\t\tctx.lineTo(0, last(range));\n\t\tctx.lineTo(sign * outerTickSize, last(range));\n\t}\n\tctx.stroke();\n}\n\nfunction Tick(props) {\n\tconst { tickLabelFill, tickStroke, tickStrokeOpacity, tickStrokeDasharray, tickStrokeWidth, textAnchor, fontSize, fontFamily, fontWeight } = props;\n\tconst { x1, y1, x2, y2, labelX, labelY, dy } = props;\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t{props.children}\n\t\t\t\n\t\t\n\t);\n}\n\nTick.propTypes = {\n\tchildren: PropTypes.string.isRequired,\n\tx1: PropTypes.number.isRequired,\n\ty1: PropTypes.number.isRequired,\n\tx2: PropTypes.number.isRequired,\n\ty2: PropTypes.number.isRequired,\n\tlabelX: PropTypes.number.isRequired,\n\tlabelY: PropTypes.number.isRequired,\n\tdy: PropTypes.string.isRequired,\n\ttickStroke: PropTypes.string,\n\ttickLabelFill: PropTypes.string,\n\ttickStrokeWidth: PropTypes.number,\n\ttickStrokeOpacity: PropTypes.number,\n\ttickStrokeDasharray: PropTypes.oneOf(strokeDashTypes),\n\ttextAnchor: PropTypes.string,\n\tfontSize: PropTypes.number,\n\tfontFamily: PropTypes.string,\n\tfontWeight: PropTypes.oneOfType([\n\t PropTypes.string,\n\t PropTypes.number\n\t]),\n};\n\nfunction axisTicksSVG(props, scale) {\n\tconst result = tickHelper(props, scale);\n\n\tconst { tickLabelFill, tickStroke, tickStrokeOpacity, tickStrokeWidth, tickStrokeDasharray, textAnchor } = result;\n\tconst { fontSize, fontFamily, fontWeight, ticks, format } = result;\n\n\tconst { dy } = result;\n\n\treturn (\n\t\t\n\t\t\t{ticks.map((tick, idx) => {\n\t\t\t\treturn (\n\t\t\t\t\t{format(tick.value)}\n\t\t\t\t);\n\t\t\t})}\n\t\t\n\t);\n}\n\nfunction drawTicks(ctx, result) {\n\n\tconst { tickStroke, tickStrokeOpacity, tickLabelFill } = result;\n\tconst { textAnchor, fontSize, fontFamily, fontWeight, ticks, showTickLabel } = result;\n\n\tctx.strokeStyle = hexToRGBA(tickStroke, tickStrokeOpacity);\n\n\tctx.fillStyle = tickStroke;\n\t// ctx.textBaseline = 'middle';\n\n\tticks.forEach((tick) => {\n\t\tdrawEachTick(ctx, tick, result);\n\t});\n\n\tctx.font = `${fontWeight} ${fontSize}px ${fontFamily}`;\n\tctx.fillStyle = tickLabelFill;\n\tctx.textAlign = textAnchor === \"middle\" ? \"center\" : textAnchor;\n\n\tif (showTickLabel) {\n\t\tticks.forEach((tick) => {\n\t\t\tdrawEachTickLabel(ctx, tick, result);\n\t\t});\n\t}\n}\n\nfunction drawEachTick(ctx, tick, result) {\n\tconst { tickStrokeWidth, tickStrokeDasharray } = result;\n\n\tctx.beginPath();\n\n\tctx.moveTo(tick.x1, tick.y1);\n\tctx.lineTo(tick.x2, tick.y2);\n\tctx.lineWidth = tickStrokeWidth;\n\tctx.setLineDash(getStrokeDasharray(tickStrokeDasharray).split(\",\"));\n\tctx.stroke();\n}\n\nfunction drawEachTickLabel(ctx, tick, result) {\n\tconst { canvas_dy, format } = result;\n\n\tctx.beginPath();\n\tctx.fillText(format(tick.value), tick.labelX, tick.labelY + canvas_dy);\n}\n\nexport default Axis;\n"]} \ No newline at end of file +{"version":3,"sources":["../../../src/lib/axes/Axis.js"],"names":["Axis","props","renderSVG","bind","drawOnCanvas","saveNode","getMoreProps","node","ctx","moreProps","showDomain","showTicks","transform","range","getScale","save","translate","drawAxisLine","tickProps","tickHelper","drawTicks","restore","className","ticks","axisTicksSVG","domain","axisLineSVG","bg","axisZoomCallback","zoomCursorClassName","zoomEnabled","inverted","getMouseDelta","edgeClip","onContextMenu","onDoubleClick","zoomCapture","propTypes","innerTickSize","number","outerTickSize","tickFormat","func","tickPadding","tickSize","tickLabelFill","string","tickStroke","tickStrokeOpacity","tickStrokeWidth","tickStrokeDasharray","oneOf","tickValues","oneOfType","array","tickInterval","tickIntervalFunction","bool","arrayOf","isRequired","object","defaultProps","scale","orient","fontSize","fontFamily","fontWeight","flexTicks","showTickLabel","tickArguments","tickValuesProp","min","max","baseTickValues","baseFormat","format","d","sign","tickSpacing","Math","dy","canvas_dy","textAnchor","map","x","round","value","x1","y1","x2","y2","labelX","labelY","nodes","id","fy","origX","simulation","force","strength","stop","i","tick","zip","combine","a","b","abs","y","domainClassName","fill","stroke","strokeWidth","opacity","xAxis","lineWidth","strokeStyle","beginPath","moveTo","lineTo","Tick","children","result","idx","fillStyle","forEach","drawEachTick","font","textAlign","drawEachTickLabel","setLineDash","split","fillText"],"mappings":"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","file":"Axis.js","sourcesContent":["import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { forceSimulation, forceX, forceCollide } from \"d3-force\";\nimport { range as d3Range } from \"d3-array\";\n\nimport GenericChartComponent from \"../GenericChartComponent\";\nimport { getAxisCanvas } from \"../GenericComponent\";\nimport AxisZoomCapture from \"./AxisZoomCapture\";\n\nimport { first, last, hexToRGBA, isNotDefined, isDefined, identity, zipper, strokeDashTypes, getStrokeDasharray } from \"../utils\";\n\nclass Axis extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.renderSVG = this.renderSVG.bind(this);\n\t\tthis.drawOnCanvas = this.drawOnCanvas.bind(this);\n\t\tthis.saveNode = this.saveNode.bind(this);\n\t\tthis.getMoreProps = this.getMoreProps.bind(this);\n\t}\n\tsaveNode(node) {\n\t\tthis.node = node;\n\t}\n\tgetMoreProps() {\n\t\treturn this.node.getMoreProps();\n\t}\n\tdrawOnCanvas(ctx, moreProps) {\n\t\tconst { showDomain, showTicks, transform, range, getScale } = this.props;\n\n\t\tctx.save();\n\t\tctx.translate(transform[0], transform[1]);\n\n\t\tif (showDomain) drawAxisLine(ctx, this.props, range);\n\t\tif (showTicks) {\n\t\t\tconst tickProps = tickHelper(this.props, getScale(moreProps));\n\t\t\tdrawTicks(ctx, tickProps);\n\t\t}\n\n\t\tctx.restore();\n\t}\n\trenderSVG(moreProps) {\n\t\tconst { className } = this.props;\n\t\tconst { showDomain, showTicks, range, getScale } = this.props;\n\n\t\tconst ticks = showTicks ? axisTicksSVG(this.props, getScale(moreProps)) : null;\n\t\tconst domain = showDomain ? axisLineSVG(this.props, range) : null;\n\n\t\treturn \n\t\t\t{ticks}\n\t\t\t{domain}\n\t\t;\n\t}\n\trender() {\n\t\tconst { bg, axisZoomCallback, className, zoomCursorClassName, zoomEnabled, getScale, inverted } = this.props;\n\t\tconst { transform, getMouseDelta, edgeClip } = this.props;\n\t\tconst { onContextMenu, onDoubleClick } = this.props;\n\n\t\tconst zoomCapture = zoomEnabled\n\t\t\t? \n\t\t\t: null;\n\n\t\treturn \n\t\t\t{zoomCapture}\n\t\t\t\n\t\t;\n\t}\n}\n\nAxis.propTypes = {\n\tinnerTickSize: PropTypes.number,\n\touterTickSize: PropTypes.number,\n\ttickFormat: PropTypes.func,\n\ttickPadding: PropTypes.number,\n\ttickSize: PropTypes.number,\n\tticks: PropTypes.number,\n\ttickLabelFill: PropTypes.string,\n\ttickStroke: PropTypes.string,\n\ttickStrokeOpacity: PropTypes.number,\n\ttickStrokeWidth: PropTypes.number,\n\ttickStrokeDasharray: PropTypes.oneOf(strokeDashTypes),\n\ttickValues: PropTypes.oneOfType([PropTypes.array, PropTypes.func]),\n\ttickInterval: PropTypes.number,\n\ttickIntervalFunction: PropTypes.func,\n\tshowDomain: PropTypes.bool,\n\tshowTicks: PropTypes.bool,\n\tclassName: PropTypes.string,\n\taxisZoomCallback: PropTypes.func,\n\tzoomEnabled: PropTypes.bool,\n\tinverted: PropTypes.bool,\n\tzoomCursorClassName: PropTypes.string,\n\ttransform: PropTypes.arrayOf(PropTypes.number).isRequired,\n\trange: PropTypes.arrayOf(PropTypes.number).isRequired,\n\tgetMouseDelta: PropTypes.func.isRequired,\n\tgetScale: PropTypes.func.isRequired,\n\tbg: PropTypes.object.isRequired,\n\tedgeClip: PropTypes.bool.isRequired,\n\tonContextMenu: PropTypes.func,\n\tonDoubleClick: PropTypes.func,\n};\n\nAxis.defaultProps = {\n\tzoomEnabled: false,\n\tzoomCursorClassName: \"\",\n\tedgeClip: false,\n};\n\nfunction tickHelper(props, scale) {\n\tconst {\n\t\torient, innerTickSize, tickFormat, tickPadding,\n\t\ttickLabelFill, tickStrokeWidth, tickStrokeDasharray,\n\t\tfontSize, fontFamily, fontWeight, showTicks, flexTicks,\n\t\tshowTickLabel\n\t} = props;\n\tconst {\n\t\tticks: tickArguments, tickValues: tickValuesProp,\n\t\ttickStroke, tickStrokeOpacity, tickInterval, tickIntervalFunction\n\t} = props;\n\n\t// if (tickArguments) tickArguments = [tickArguments];\n\n\tlet tickValues;\n\tif (isDefined(tickValuesProp)) {\n\t\tif (typeof tickValuesProp === \"function\") {\n\t\t\ttickValues = tickValuesProp(scale.domain());\n\t\t} else {\n\t\t\ttickValues = tickValuesProp;\n\t\t}\n\t} else if (isDefined(tickInterval)) {\n\t\tconst [min, max] = scale.domain();\n\t\tconst baseTickValues = d3Range(min, max, (max - min) / tickInterval);\n\n\t\ttickValues = tickIntervalFunction\n\t\t\t? tickIntervalFunction(min, max, tickInterval)\n\t\t\t: baseTickValues;\n\t} else if (isDefined(scale.ticks)) {\n\t\ttickValues = scale.ticks(tickArguments, flexTicks);\n\t} else {\n\t\ttickValues = scale.domain();\n\t}\n\n\tconst baseFormat = scale.tickFormat\n\t\t? scale.tickFormat(tickArguments)\n\t\t: identity;\n\n\tconst format = isNotDefined(tickFormat)\n\t\t? baseFormat\n\t\t: d => tickFormat(d) || \"\";\n\n\tconst sign = orient === \"top\" || orient === \"left\" ? -1 : 1;\n\tconst tickSpacing = Math.max(innerTickSize, 0) + tickPadding;\n\n\tlet ticks, dy, canvas_dy, textAnchor;\n\n\tif (orient === \"bottom\" || orient === \"top\") {\n\t\tdy = sign < 0 ? \"0em\" : \".71em\";\n\t\tcanvas_dy = sign < 0 ? 0 : (fontSize * .71);\n\t\ttextAnchor = \"middle\";\n\n\t\tticks = tickValues.map(d => {\n\t\t\tconst x = Math.round(scale(d));\n\t\t\treturn {\n\t\t\t\tvalue: d,\n\t\t\t\tx1: x,\n\t\t\t\ty1: 0,\n\t\t\t\tx2: x,\n\t\t\t\ty2: sign * innerTickSize,\n\t\t\t\tlabelX: x,\n\t\t\t\tlabelY: sign * tickSpacing,\n\t\t\t};\n\t\t});\n\n\t\tif (showTicks && flexTicks) {\n\t\t\t// console.log(ticks, showTicks);\n\n\t\t\tconst nodes = ticks.map(d => ({ id: d.value, value: d.value, fy: d.y2, origX: d.x1 }));\n\n\t\t\tconst simulation = forceSimulation(nodes)\n\t\t\t\t.force(\"x\", forceX(d => d.origX).strength(1))\n\t\t\t\t.force(\"collide\", forceCollide(22))\n\t\t\t\t// .force(\"center\", forceCenter())\n\t\t\t\t.stop();\n\n\t\t\tfor (let i = 0; i < 100; ++i) simulation.tick();\n\t\t\t// console.log(nodes);\n\n\t\t\tconst zip = zipper()\n\t\t\t\t.combine((a, b) => {\n\t\t\t\t\tif (Math.abs(b.x - b.origX) > 0.01) {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t...a,\n\t\t\t\t\t\t\tx2: b.x,\n\t\t\t\t\t\t\tlabelX: b.x\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\treturn a;\n\t\t\t\t});\n\n\t\t\tticks = zip(ticks, nodes);\n\t\t}\n\n\n\t} else {\n\t\tticks = tickValues.map(d => {\n\t\t\tconst y = Math.round(scale(d));\n\t\t\treturn {\n\t\t\t\tvalue: d,\n\t\t\t\tx1: 0,\n\t\t\t\ty1: y,\n\t\t\t\tx2: sign * innerTickSize,\n\t\t\t\ty2: y,\n\t\t\t\tlabelX: sign * tickSpacing,\n\t\t\t\tlabelY: y,\n\t\t\t};\n\t\t});\n\n\t\tdy = \".32em\";\n\t\tcanvas_dy = (fontSize * .32);\n\t\ttextAnchor = sign < 0 ? \"end\" : \"start\";\n\t}\n\n\treturn {\n\t\tticks, scale, tickStroke,\n\t\ttickLabelFill: (tickLabelFill || tickStroke),\n\t\ttickStrokeOpacity,\n\t\ttickStrokeWidth,\n\t\ttickStrokeDasharray,\n\t\tdy,\n\t\tcanvas_dy,\n\t\ttextAnchor,\n\t\tfontSize,\n\t\tfontFamily,\n\t\tfontWeight,\n\t\tformat,\n\t\tshowTickLabel,\n\t};\n}\n\n/* eslint-disable react/prop-types */\nfunction axisLineSVG(props, range) {\n\tconst { orient, outerTickSize } = props;\n\tconst { domainClassName, fill, stroke, strokeWidth, opacity } = props;\n\n\tconst sign = orient === \"top\" || orient === \"left\" ? -1 : 1;\n\n\tlet d;\n\n\tif (orient === \"bottom\" || orient === \"top\") {\n\t\td = \"M\" + range[0] + \",\" + sign * outerTickSize + \"V0H\" + range[1] + \"V\" + sign * outerTickSize;\n\t} else {\n\t\td = \"M\" + sign * outerTickSize + \",\" + range[0] + \"H0V\" + range[1] + \"H\" + sign * outerTickSize;\n\t}\n\n\treturn (\n\t\t\n\t\t\n\t);\n}\n/* eslint-enable react/prop-types */\n\n\nfunction drawAxisLine(ctx, props, range) {\n\t// props = { ...AxisLine.defaultProps, ...props };\n\n\tconst { orient, outerTickSize, stroke, strokeWidth, opacity } = props;\n\n\tconst sign = orient === \"top\" || orient === \"left\" ? -1 : 1;\n\tconst xAxis = (orient === \"bottom\" || orient === \"top\");\n\n\t// var range = d3_scaleRange(xAxis ? xScale : yScale);\n\n\tctx.lineWidth = strokeWidth;\n\tctx.strokeStyle = hexToRGBA(stroke, opacity);\n\n\tctx.beginPath();\n\n\tif (xAxis) {\n\t\tctx.moveTo(first(range), sign * outerTickSize);\n\t\tctx.lineTo(first(range), 0);\n\t\tctx.lineTo(last(range), 0);\n\t\tctx.lineTo(last(range), sign * outerTickSize);\n\t} else {\n\t\tctx.moveTo(sign * outerTickSize, first(range));\n\t\tctx.lineTo(0, first(range));\n\t\tctx.lineTo(0, last(range));\n\t\tctx.lineTo(sign * outerTickSize, last(range));\n\t}\n\tctx.stroke();\n}\n\nfunction Tick(props) {\n\tconst { tickLabelFill, tickStroke, tickStrokeOpacity, tickStrokeDasharray, tickStrokeWidth, textAnchor, fontSize, fontFamily, fontWeight } = props;\n\tconst { x1, y1, x2, y2, labelX, labelY, dy } = props;\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t{props.children}\n\t\t\t\n\t\t\n\t);\n}\n\nTick.propTypes = {\n\tchildren: PropTypes.string.isRequired,\n\tx1: PropTypes.number.isRequired,\n\ty1: PropTypes.number.isRequired,\n\tx2: PropTypes.number.isRequired,\n\ty2: PropTypes.number.isRequired,\n\tlabelX: PropTypes.number.isRequired,\n\tlabelY: PropTypes.number.isRequired,\n\tdy: PropTypes.string.isRequired,\n\ttickStroke: PropTypes.string,\n\ttickLabelFill: PropTypes.string,\n\ttickStrokeWidth: PropTypes.number,\n\ttickStrokeOpacity: PropTypes.number,\n\ttickStrokeDasharray: PropTypes.oneOf(strokeDashTypes),\n\ttextAnchor: PropTypes.string,\n\tfontSize: PropTypes.number,\n\tfontFamily: PropTypes.string,\n\tfontWeight: PropTypes.oneOfType([\n\t PropTypes.string,\n\t PropTypes.number\n\t]),\n};\n\nfunction axisTicksSVG(props, scale) {\n\tconst result = tickHelper(props, scale);\n\n\tconst { tickLabelFill, tickStroke, tickStrokeOpacity, tickStrokeWidth, tickStrokeDasharray, textAnchor } = result;\n\tconst { fontSize, fontFamily, fontWeight, ticks, format } = result;\n\n\tconst { dy } = result;\n\n\treturn (\n\t\t\n\t\t\t{ticks.map((tick, idx) => {\n\t\t\t\treturn (\n\t\t\t\t\t{format(tick.value)}\n\t\t\t\t);\n\t\t\t})}\n\t\t\n\t);\n}\n\nfunction drawTicks(ctx, result) {\n\n\tconst { tickStroke, tickStrokeOpacity, tickLabelFill } = result;\n\tconst { textAnchor, fontSize, fontFamily, fontWeight, ticks, showTickLabel } = result;\n\n\tctx.strokeStyle = hexToRGBA(tickStroke, tickStrokeOpacity);\n\n\tctx.fillStyle = tickStroke;\n\t// ctx.textBaseline = 'middle';\n\n\tticks.forEach((tick) => {\n\t\tdrawEachTick(ctx, tick, result);\n\t});\n\n\tctx.font = `${fontWeight} ${fontSize}px ${fontFamily}`;\n\tctx.fillStyle = tickLabelFill;\n\tctx.textAlign = textAnchor === \"middle\" ? \"center\" : textAnchor;\n\n\tif (showTickLabel) {\n\t\tticks.forEach((tick) => {\n\t\t\tdrawEachTickLabel(ctx, tick, result);\n\t\t});\n\t}\n}\n\nfunction drawEachTick(ctx, tick, result) {\n\tconst { tickStrokeWidth, tickStrokeDasharray } = result;\n\n\tctx.beginPath();\n\n\tctx.moveTo(tick.x1, tick.y1);\n\tctx.lineTo(tick.x2, tick.y2);\n\tctx.lineWidth = tickStrokeWidth;\n\tctx.setLineDash(getStrokeDasharray(tickStrokeDasharray).split(\",\"));\n\tctx.stroke();\n}\n\nfunction drawEachTickLabel(ctx, tick, result) {\n\tconst { canvas_dy, format } = result;\n\n\tctx.beginPath();\n\tctx.fillText(format(tick.value), tick.labelX, tick.labelY + canvas_dy);\n}\n\nexport default Axis;\n"]} \ No newline at end of file diff --git a/lib/axes/AxisZoomCapture.js b/lib/axes/AxisZoomCapture.js index a90b912..02a32e8 100644 --- a/lib/axes/AxisZoomCapture.js +++ b/lib/axes/AxisZoomCapture.js @@ -191,13 +191,14 @@ var AxisZoomCapture = function (_Component) { value: function render() { var _props4 = this.props, bg = _props4.bg, + className = _props4.className, zoomCursorClassName = _props4.zoomCursorClassName; var cursor = (0, _utils.isDefined)(this.state.startPosition) ? zoomCursorClassName : "react-stockcharts-default-cursor"; return _react2.default.createElement("rect", { - className: "react-stockcharts-enable-interaction " + cursor, + className: "react-stockcharts-enable-interaction " + cursor + " " + className, ref: this.saveNode, x: bg.x, y: bg.y, opacity: 0, height: bg.h, width: bg.w, onContextMenu: this.handleRightClick, diff --git a/lib/axes/AxisZoomCapture.js.map b/lib/axes/AxisZoomCapture.js.map index 000a896..33f6470 100644 --- a/lib/axes/AxisZoomCapture.js.map +++ b/lib/axes/AxisZoomCapture.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../../src/lib/axes/AxisZoomCapture.js"],"names":["AxisZoomCapture","props","handleDragStartMouse","bind","handleDragStartTouch","handleDrag","handleDragEnd","handleRightClick","saveNode","state","startPosition","node","e","stopPropagation","preventDefault","onContextMenu","mouseXY","getBoundingClientRect","on","setState","contextMenuClicked","mouseInteraction","getScale","getMoreProps","startScale","dragHappened","invert","startXY","touches","length","getMouseDelta","inverted","diff","center","range","tempRange","map","d","newDomain","axisZoomCallback","clicked","onDoubleClick","setTimeout","bg","zoomCursorClassName","cursor","x","y","h","w","propTypes","innerTickSize","number","outerTickSize","tickFormat","func","tickPadding","tickSize","ticks","tickValues","array","showDomain","bool","showTicks","className","string","object","isRequired","defaultProps"],"mappings":"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","file":"AxisZoomCapture.js","sourcesContent":["\n\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { select, event as d3Event, mouse, touches } from \"d3-selection\";\nimport { mean } from \"d3-array\";\n\nimport {\n\tfirst,\n\tlast,\n\tisDefined,\n\tnoop,\n\tmousePosition,\n\td3Window,\n\tMOUSEMOVE,\n\tMOUSEUP,\n\tTOUCHMOVE,\n\tTOUCHEND,\n\ttouchPosition,\n\tgetTouchProps,\n\tsign,\n} from \"../utils\";\n\nclass AxisZoomCapture extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.handleDragStartMouse = this.handleDragStartMouse.bind(this);\n\t\tthis.handleDragStartTouch = this.handleDragStartTouch.bind(this);\n\t\tthis.handleDrag = this.handleDrag.bind(this);\n\t\tthis.handleDragEnd = this.handleDragEnd.bind(this);\n\t\tthis.handleRightClick = this.handleRightClick.bind(this);\n\t\tthis.saveNode = this.saveNode.bind(this);\n\t\tthis.state = {\n\t\t\tstartPosition: null\n\t\t};\n\t}\n\tsaveNode(node) {\n\t\tthis.node = node;\n\t}\n\thandleRightClick(e) {\n\t\te.stopPropagation();\n\t\te.preventDefault();\n\n\t\tconst { onContextMenu } = this.props;\n\n\t\tconst mouseXY = mousePosition(e, this.node.getBoundingClientRect());\n\n\t\tselect(d3Window(this.node))\n\t\t\t.on(MOUSEMOVE, null)\n\t\t\t.on(MOUSEUP, null);\n\t\tthis.setState({\n\t\t\tstartPosition: null,\n\t\t});\n\n\t\tonContextMenu(mouseXY, e);\n\n\t\tthis.contextMenuClicked = true;\n\t}\n\thandleDragStartMouse(e) {\n\t\tthis.mouseInteraction = true;\n\n\t\tconst { getScale, getMoreProps } = this.props;\n\t\tconst startScale = getScale(getMoreProps());\n\t\tthis.dragHappened = false;\n\n\t\tif (startScale.invert) {\n\t\t\tselect(d3Window(this.node))\n\t\t\t\t.on(MOUSEMOVE, this.handleDrag, false)\n\t\t\t\t.on(MOUSEUP, this.handleDragEnd, false);\n\n\t\t\tconst startXY = mousePosition(e);\n\n\t\t\tthis.setState({\n\t\t\t\tstartPosition: {\n\t\t\t\t\tstartXY,\n\t\t\t\t\tstartScale,\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\te.preventDefault();\n\t}\n\thandleDragStartTouch(e) {\n\t\tthis.mouseInteraction = false;\n\n\t\tconst { getScale, getMoreProps } = this.props;\n\t\tconst startScale = getScale(getMoreProps());\n\t\tthis.dragHappened = false;\n\n\t\tif (e.touches.length === 1 && startScale.invert) {\n\t\t\tselect(d3Window(this.node))\n\t\t\t\t.on(TOUCHMOVE, this.handleDrag)\n\t\t\t\t.on(TOUCHEND, this.handleDragEnd);\n\n\t\t\tconst startXY = touchPosition(getTouchProps(e.touches[0]), e);\n\n\t\t\tthis.setState({\n\t\t\t\tstartPosition: {\n\t\t\t\t\tstartXY,\n\t\t\t\t\tstartScale,\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\thandleDrag() {\n\t\tconst { startPosition } = this.state;\n\t\tconst { getMouseDelta, inverted } = this.props;\n\n\t\tthis.dragHappened = true;\n\t\tif (isDefined(startPosition)) {\n\t\t\tconst { startScale } = startPosition;\n\t\t\tconst { startXY } = startPosition;\n\n\t\t\tconst mouseXY = this.mouseInteraction\n\t\t\t\t? mouse(this.node)\n\t\t\t\t: touches(this.node)[0];\n\n\t\t\tconst diff = getMouseDelta(startXY, mouseXY);\n\n\t\t\tconst center = mean(startScale.range());\n\n\t\t\tconst tempRange = startScale.range()\n\t\t\t\t.map(d => inverted ? d - sign(d - center) * diff : d + sign(d - center) * diff);\n\n\t\t\tconst newDomain = tempRange.map(startScale.invert);\n\n\t\t\tif (sign(last(startScale.range()) - first(startScale.range())) === sign(last(tempRange) - first(tempRange))) {\n\n\t\t\t\tconst { axisZoomCallback } = this.props;\n\t\t\t\t// console.log(startXScale.domain(), newXDomain)\n\t\t\t\taxisZoomCallback(newDomain);\n\t\t\t}\n\t\t}\n\t}\n\thandleDragEnd() {\n\n\t\tif (!this.dragHappened) {\n\t\t\tif (this.clicked) {\n\t\t\t\tconst e = d3Event;\n\t\t\t\tconst mouseXY = this.mouseInteraction\n\t\t\t\t\t? mouse(this.node)\n\t\t\t\t\t: touches(this.node)[0];\n\t\t\t\tconst { onDoubleClick } = this.props;\n\n\t\t\t\tonDoubleClick(mouseXY, e);\n\t\t\t} else {\n\t\t\t\tthis.clicked = true;\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.clicked = false;\n\t\t\t\t}, 300);\n\t\t\t}\n\t\t}\n\n\t\tselect(d3Window(this.node))\n\t\t\t.on(MOUSEMOVE, null)\n\t\t\t.on(MOUSEUP, null)\n\t\t\t.on(TOUCHMOVE, null)\n\t\t\t.on(TOUCHEND, null);\n\n\t\tthis.setState({\n\t\t\tstartPosition: null,\n\t\t});\n\t}\n\trender() {\n\t\tconst { bg, zoomCursorClassName } = this.props;\n\n\t\tconst cursor = isDefined(this.state.startPosition)\n\t\t\t? zoomCursorClassName\n\t\t\t: \"react-stockcharts-default-cursor\";\n\n\t\treturn ;\n\t}\n}\n\nAxisZoomCapture.propTypes = {\n\tinnerTickSize: PropTypes.number,\n\touterTickSize: PropTypes.number,\n\ttickFormat: PropTypes.func,\n\ttickPadding: PropTypes.number,\n\ttickSize: PropTypes.number,\n\tticks: PropTypes.number,\n\ttickValues: PropTypes.array,\n\tshowDomain: PropTypes.bool,\n\tshowTicks: PropTypes.bool,\n\tclassName: PropTypes.string,\n\taxisZoomCallback: PropTypes.func,\n\tinverted: PropTypes.bool,\n\tbg: PropTypes.object.isRequired,\n\tzoomCursorClassName: PropTypes.string.isRequired,\n\tgetMoreProps: PropTypes.func.isRequired,\n\tgetScale: PropTypes.func.isRequired,\n\tgetMouseDelta: PropTypes.func.isRequired,\n\tonDoubleClick: PropTypes.func.isRequired,\n\tonContextMenu: PropTypes.func.isRequired,\n};\n\nAxisZoomCapture.defaultProps = {\n\tonDoubleClick: noop,\n\tonContextMenu: noop,\n\tinverted: true\n};\n\nexport default AxisZoomCapture;\n"]} \ No newline at end of file +{"version":3,"sources":["../../../src/lib/axes/AxisZoomCapture.js"],"names":["AxisZoomCapture","props","handleDragStartMouse","bind","handleDragStartTouch","handleDrag","handleDragEnd","handleRightClick","saveNode","state","startPosition","node","e","stopPropagation","preventDefault","onContextMenu","mouseXY","getBoundingClientRect","on","setState","contextMenuClicked","mouseInteraction","getScale","getMoreProps","startScale","dragHappened","invert","startXY","touches","length","getMouseDelta","inverted","diff","center","range","tempRange","map","d","newDomain","axisZoomCallback","clicked","onDoubleClick","setTimeout","bg","className","zoomCursorClassName","cursor","x","y","h","w","propTypes","innerTickSize","number","outerTickSize","tickFormat","func","tickPadding","tickSize","ticks","tickValues","array","showDomain","bool","showTicks","string","object","isRequired","defaultProps"],"mappings":";;;;;;;;AAEA;;;;AACA;;;;AACA;;AACA;;AAEA;;;;;;;;;;IAgBMA,e;;;AACL,0BAAYC,KAAZ,EAAmB;AAAA;;AAAA,gIACZA,KADY;;AAElB,QAAKC,oBAAL,GAA4B,MAAKA,oBAAL,CAA0BC,IAA1B,OAA5B;AACA,QAAKC,oBAAL,GAA4B,MAAKA,oBAAL,CAA0BD,IAA1B,OAA5B;AACA,QAAKE,UAAL,GAAkB,MAAKA,UAAL,CAAgBF,IAAhB,OAAlB;AACA,QAAKG,aAAL,GAAqB,MAAKA,aAAL,CAAmBH,IAAnB,OAArB;AACA,QAAKI,gBAAL,GAAwB,MAAKA,gBAAL,CAAsBJ,IAAtB,OAAxB;AACA,QAAKK,QAAL,GAAgB,MAAKA,QAAL,CAAcL,IAAd,OAAhB;AACA,QAAKM,KAAL,GAAa;AACZC,kBAAe;AADH,GAAb;AARkB;AAWlB;;;;2BACQC,I,EAAM;AACd,QAAKA,IAAL,GAAYA,IAAZ;AACA;;;mCACgBC,C,EAAG;AACnBA,KAAEC,eAAF;AACAD,KAAEE,cAAF;;AAFmB,OAIXC,aAJW,GAIO,KAAKd,KAJZ,CAIXc,aAJW;;;AAMnB,OAAMC,UAAU,0BAAcJ,CAAd,EAAiB,KAAKD,IAAL,CAAUM,qBAAV,EAAjB,CAAhB;;AAEA,4BAAO,qBAAS,KAAKN,IAAd,CAAP,EACEO,EADF,mBACgB,IADhB,EAEEA,EAFF,iBAEc,IAFd;AAGA,QAAKC,QAAL,CAAc;AACbT,mBAAe;AADF,IAAd;;AAIAK,iBAAcC,OAAd,EAAuBJ,CAAvB;;AAEA,QAAKQ,kBAAL,GAA0B,IAA1B;AACA;;;uCACoBR,C,EAAG;AACvB,QAAKS,gBAAL,GAAwB,IAAxB;;AADuB,gBAGY,KAAKpB,KAHjB;AAAA,OAGfqB,QAHe,UAGfA,QAHe;AAAA,OAGLC,YAHK,UAGLA,YAHK;;AAIvB,OAAMC,aAAaF,SAASC,cAAT,CAAnB;AACA,QAAKE,YAAL,GAAoB,KAApB;;AAEA,OAAID,WAAWE,MAAf,EAAuB;AACtB,6BAAO,qBAAS,KAAKf,IAAd,CAAP,EACEO,EADF,mBACgB,KAAKb,UADrB,EACiC,KADjC,EAEEa,EAFF,iBAEc,KAAKZ,aAFnB,EAEkC,KAFlC;;AAIA,QAAMqB,UAAU,0BAAcf,CAAd,CAAhB;;AAEA,SAAKO,QAAL,CAAc;AACbT,oBAAe;AACdiB,sBADc;AAEdH;AAFc;AADF,KAAd;AAMA;AACDZ,KAAEE,cAAF;AACA;;;uCACoBF,C,EAAG;AACvB,QAAKS,gBAAL,GAAwB,KAAxB;;AADuB,iBAGY,KAAKpB,KAHjB;AAAA,OAGfqB,QAHe,WAGfA,QAHe;AAAA,OAGLC,YAHK,WAGLA,YAHK;;AAIvB,OAAMC,aAAaF,SAASC,cAAT,CAAnB;AACA,QAAKE,YAAL,GAAoB,KAApB;;AAEA,OAAIb,EAAEgB,OAAF,CAAUC,MAAV,KAAqB,CAArB,IAA0BL,WAAWE,MAAzC,EAAiD;AAChD,6BAAO,qBAAS,KAAKf,IAAd,CAAP,EACEO,EADF,mBACgB,KAAKb,UADrB,EAEEa,EAFF,kBAEe,KAAKZ,aAFpB;;AAIA,QAAMqB,UAAU,0BAAc,0BAAcf,EAAEgB,OAAF,CAAU,CAAV,CAAd,CAAd,EAA2ChB,CAA3C,CAAhB;;AAEA,SAAKO,QAAL,CAAc;AACbT,oBAAe;AACdiB,sBADc;AAEdH;AAFc;AADF,KAAd;AAMA;AACD;;;+BACY;AAAA,OACJd,aADI,GACc,KAAKD,KADnB,CACJC,aADI;AAAA,iBAEwB,KAAKT,KAF7B;AAAA,OAEJ6B,aAFI,WAEJA,aAFI;AAAA,OAEWC,QAFX,WAEWA,QAFX;;;AAIZ,QAAKN,YAAL,GAAoB,IAApB;AACA,OAAI,sBAAUf,aAAV,CAAJ,EAA8B;AAAA,QACrBc,UADqB,GACNd,aADM,CACrBc,UADqB;AAAA,QAErBG,OAFqB,GAETjB,aAFS,CAErBiB,OAFqB;;;AAI7B,QAAMX,UAAU,KAAKK,gBAAL,GACb,wBAAM,KAAKV,IAAX,CADa,GAEb,0BAAQ,KAAKA,IAAb,EAAmB,CAAnB,CAFH;;AAIA,QAAMqB,OAAOF,cAAcH,OAAd,EAAuBX,OAAvB,CAAb;;AAEA,QAAMiB,SAAS,mBAAKT,WAAWU,KAAX,EAAL,CAAf;;AAEA,QAAMC,YAAYX,WAAWU,KAAX,GAChBE,GADgB,CACZ;AAAA,YAAKL,WAAWM,IAAI,iBAAKA,IAAIJ,MAAT,IAAmBD,IAAlC,GAAyCK,IAAI,iBAAKA,IAAIJ,MAAT,IAAmBD,IAArE;AAAA,KADY,CAAlB;;AAGA,QAAMM,YAAYH,UAAUC,GAAV,CAAcZ,WAAWE,MAAzB,CAAlB;;AAEA,QAAI,iBAAK,iBAAKF,WAAWU,KAAX,EAAL,IAA2B,kBAAMV,WAAWU,KAAX,EAAN,CAAhC,MAA+D,iBAAK,iBAAKC,SAAL,IAAkB,kBAAMA,SAAN,CAAvB,CAAnE,EAA6G;AAAA,SAEpGI,gBAFoG,GAE/E,KAAKtC,KAF0E,CAEpGsC,gBAFoG;AAG5G;;AACAA,sBAAiBD,SAAjB;AACA;AACD;AACD;;;kCACe;AAAA;;AAEf,OAAI,CAAC,KAAKb,YAAV,EAAwB;AACvB,QAAI,KAAKe,OAAT,EAAkB;AACjB,SAAM5B,sBAAN;AACA,SAAMI,UAAU,KAAKK,gBAAL,GACb,wBAAM,KAAKV,IAAX,CADa,GAEb,0BAAQ,KAAKA,IAAb,EAAmB,CAAnB,CAFH;AAFiB,SAKT8B,aALS,GAKS,KAAKxC,KALd,CAKTwC,aALS;;;AAOjBA,mBAAczB,OAAd,EAAuBJ,CAAvB;AACA,KARD,MAQO;AACN,UAAK4B,OAAL,GAAe,IAAf;AACAE,gBAAW,YAAM;AAChB,aAAKF,OAAL,GAAe,KAAf;AACA,MAFD,EAEG,GAFH;AAGA;AACD;;AAED,4BAAO,qBAAS,KAAK7B,IAAd,CAAP,EACEO,EADF,mBACgB,IADhB,EAEEA,EAFF,iBAEc,IAFd,EAGEA,EAHF,mBAGgB,IAHhB,EAIEA,EAJF,kBAIe,IAJf;;AAMA,QAAKC,QAAL,CAAc;AACbT,mBAAe;AADF,IAAd;AAGA;;;2BACQ;AAAA,iBACuC,KAAKT,KAD5C;AAAA,OACA0C,EADA,WACAA,EADA;AAAA,OACIC,SADJ,WACIA,SADJ;AAAA,OACeC,mBADf,WACeA,mBADf;;;AAGR,OAAMC,SAAS,sBAAU,KAAKrC,KAAL,CAAWC,aAArB,IACZmC,mBADY,GAEZ,kCAFH;;AAIA,UAAO;AACN,yDAAmDC,MAAnD,SAA6DF,SADvD;AAEN,SAAK,KAAKpC,QAFJ;AAGN,OAAGmC,GAAGI,CAHA,EAGG,GAAGJ,GAAGK,CAHT,EAGY,SAAS,CAHrB,EAGwB,QAAQL,GAAGM,CAHnC,EAGsC,OAAON,GAAGO,CAHhD;AAIN,mBAAe,KAAK3C,gBAJd;AAKN,iBAAa,KAAKL,oBALZ;AAMN,kBAAc,KAAKE;AANb,KAAP;AAQA;;;;;;AAGFJ,gBAAgBmD,SAAhB,GAA4B;AAC3BC,gBAAe,oBAAUC,MADE;AAE3BC,gBAAe,oBAAUD,MAFE;AAG3BE,aAAY,oBAAUC,IAHK;AAI3BC,cAAa,oBAAUJ,MAJI;AAK3BK,WAAU,oBAAUL,MALO;AAM3BM,QAAO,oBAAUN,MANU;AAO3BO,aAAY,oBAAUC,KAPK;AAQ3BC,aAAY,oBAAUC,IARK;AAS3BC,YAAW,oBAAUD,IATM;AAU3BnB,YAAW,oBAAUqB,MAVM;AAW3B1B,mBAAkB,oBAAUiB,IAXD;AAY3BzB,WAAU,oBAAUgC,IAZO;AAa3BpB,KAAI,oBAAUuB,MAAV,CAAiBC,UAbM;AAc3BtB,sBAAqB,oBAAUoB,MAAV,CAAiBE,UAdX;AAe3B5C,eAAc,oBAAUiC,IAAV,CAAeW,UAfF;AAgB3B7C,WAAU,oBAAUkC,IAAV,CAAeW,UAhBE;AAiB3BrC,gBAAe,oBAAU0B,IAAV,CAAeW,UAjBH;AAkB3B1B,gBAAe,oBAAUe,IAAV,CAAeW,UAlBH;AAmB3BpD,gBAAe,oBAAUyC,IAAV,CAAeW;AAnBH,CAA5B;;AAsBAnE,gBAAgBoE,YAAhB,GAA+B;AAC9B3B,2BAD8B;AAE9B1B,2BAF8B;AAG9BgB,WAAU;AAHoB,CAA/B;;kBAMe/B,e","file":"AxisZoomCapture.js","sourcesContent":["\n\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { select, event as d3Event, mouse, touches } from \"d3-selection\";\nimport { mean } from \"d3-array\";\n\nimport {\n\tfirst,\n\tlast,\n\tisDefined,\n\tnoop,\n\tmousePosition,\n\td3Window,\n\tMOUSEMOVE,\n\tMOUSEUP,\n\tTOUCHMOVE,\n\tTOUCHEND,\n\ttouchPosition,\n\tgetTouchProps,\n\tsign,\n} from \"../utils\";\n\nclass AxisZoomCapture extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.handleDragStartMouse = this.handleDragStartMouse.bind(this);\n\t\tthis.handleDragStartTouch = this.handleDragStartTouch.bind(this);\n\t\tthis.handleDrag = this.handleDrag.bind(this);\n\t\tthis.handleDragEnd = this.handleDragEnd.bind(this);\n\t\tthis.handleRightClick = this.handleRightClick.bind(this);\n\t\tthis.saveNode = this.saveNode.bind(this);\n\t\tthis.state = {\n\t\t\tstartPosition: null\n\t\t};\n\t}\n\tsaveNode(node) {\n\t\tthis.node = node;\n\t}\n\thandleRightClick(e) {\n\t\te.stopPropagation();\n\t\te.preventDefault();\n\n\t\tconst { onContextMenu } = this.props;\n\n\t\tconst mouseXY = mousePosition(e, this.node.getBoundingClientRect());\n\n\t\tselect(d3Window(this.node))\n\t\t\t.on(MOUSEMOVE, null)\n\t\t\t.on(MOUSEUP, null);\n\t\tthis.setState({\n\t\t\tstartPosition: null,\n\t\t});\n\n\t\tonContextMenu(mouseXY, e);\n\n\t\tthis.contextMenuClicked = true;\n\t}\n\thandleDragStartMouse(e) {\n\t\tthis.mouseInteraction = true;\n\n\t\tconst { getScale, getMoreProps } = this.props;\n\t\tconst startScale = getScale(getMoreProps());\n\t\tthis.dragHappened = false;\n\n\t\tif (startScale.invert) {\n\t\t\tselect(d3Window(this.node))\n\t\t\t\t.on(MOUSEMOVE, this.handleDrag, false)\n\t\t\t\t.on(MOUSEUP, this.handleDragEnd, false);\n\n\t\t\tconst startXY = mousePosition(e);\n\n\t\t\tthis.setState({\n\t\t\t\tstartPosition: {\n\t\t\t\t\tstartXY,\n\t\t\t\t\tstartScale,\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\te.preventDefault();\n\t}\n\thandleDragStartTouch(e) {\n\t\tthis.mouseInteraction = false;\n\n\t\tconst { getScale, getMoreProps } = this.props;\n\t\tconst startScale = getScale(getMoreProps());\n\t\tthis.dragHappened = false;\n\n\t\tif (e.touches.length === 1 && startScale.invert) {\n\t\t\tselect(d3Window(this.node))\n\t\t\t\t.on(TOUCHMOVE, this.handleDrag)\n\t\t\t\t.on(TOUCHEND, this.handleDragEnd);\n\n\t\t\tconst startXY = touchPosition(getTouchProps(e.touches[0]), e);\n\n\t\t\tthis.setState({\n\t\t\t\tstartPosition: {\n\t\t\t\t\tstartXY,\n\t\t\t\t\tstartScale,\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\thandleDrag() {\n\t\tconst { startPosition } = this.state;\n\t\tconst { getMouseDelta, inverted } = this.props;\n\n\t\tthis.dragHappened = true;\n\t\tif (isDefined(startPosition)) {\n\t\t\tconst { startScale } = startPosition;\n\t\t\tconst { startXY } = startPosition;\n\n\t\t\tconst mouseXY = this.mouseInteraction\n\t\t\t\t? mouse(this.node)\n\t\t\t\t: touches(this.node)[0];\n\n\t\t\tconst diff = getMouseDelta(startXY, mouseXY);\n\n\t\t\tconst center = mean(startScale.range());\n\n\t\t\tconst tempRange = startScale.range()\n\t\t\t\t.map(d => inverted ? d - sign(d - center) * diff : d + sign(d - center) * diff);\n\n\t\t\tconst newDomain = tempRange.map(startScale.invert);\n\n\t\t\tif (sign(last(startScale.range()) - first(startScale.range())) === sign(last(tempRange) - first(tempRange))) {\n\n\t\t\t\tconst { axisZoomCallback } = this.props;\n\t\t\t\t// console.log(startXScale.domain(), newXDomain)\n\t\t\t\taxisZoomCallback(newDomain);\n\t\t\t}\n\t\t}\n\t}\n\thandleDragEnd() {\n\n\t\tif (!this.dragHappened) {\n\t\t\tif (this.clicked) {\n\t\t\t\tconst e = d3Event;\n\t\t\t\tconst mouseXY = this.mouseInteraction\n\t\t\t\t\t? mouse(this.node)\n\t\t\t\t\t: touches(this.node)[0];\n\t\t\t\tconst { onDoubleClick } = this.props;\n\n\t\t\t\tonDoubleClick(mouseXY, e);\n\t\t\t} else {\n\t\t\t\tthis.clicked = true;\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.clicked = false;\n\t\t\t\t}, 300);\n\t\t\t}\n\t\t}\n\n\t\tselect(d3Window(this.node))\n\t\t\t.on(MOUSEMOVE, null)\n\t\t\t.on(MOUSEUP, null)\n\t\t\t.on(TOUCHMOVE, null)\n\t\t\t.on(TOUCHEND, null);\n\n\t\tthis.setState({\n\t\t\tstartPosition: null,\n\t\t});\n\t}\n\trender() {\n\t\tconst { bg, className, zoomCursorClassName } = this.props;\n\n\t\tconst cursor = isDefined(this.state.startPosition)\n\t\t\t? zoomCursorClassName\n\t\t\t: \"react-stockcharts-default-cursor\";\n\n\t\treturn ;\n\t}\n}\n\nAxisZoomCapture.propTypes = {\n\tinnerTickSize: PropTypes.number,\n\touterTickSize: PropTypes.number,\n\ttickFormat: PropTypes.func,\n\ttickPadding: PropTypes.number,\n\ttickSize: PropTypes.number,\n\tticks: PropTypes.number,\n\ttickValues: PropTypes.array,\n\tshowDomain: PropTypes.bool,\n\tshowTicks: PropTypes.bool,\n\tclassName: PropTypes.string,\n\taxisZoomCallback: PropTypes.func,\n\tinverted: PropTypes.bool,\n\tbg: PropTypes.object.isRequired,\n\tzoomCursorClassName: PropTypes.string.isRequired,\n\tgetMoreProps: PropTypes.func.isRequired,\n\tgetScale: PropTypes.func.isRequired,\n\tgetMouseDelta: PropTypes.func.isRequired,\n\tonDoubleClick: PropTypes.func.isRequired,\n\tonContextMenu: PropTypes.func.isRequired,\n};\n\nAxisZoomCapture.defaultProps = {\n\tonDoubleClick: noop,\n\tonContextMenu: noop,\n\tinverted: true\n};\n\nexport default AxisZoomCapture;\n"]} \ No newline at end of file diff --git a/lib/interactive/FibonacciRetracement.js b/lib/interactive/FibonacciRetracement.js index c1baa08..398a2bd 100644 --- a/lib/interactive/FibonacciRetracement.js +++ b/lib/interactive/FibonacciRetracement.js @@ -225,12 +225,13 @@ var FibonacciRetracement = function (_Component) { hoverText = _props4.hoverText; var overrideIndex = (0, _utils.isDefined)(override) ? override.index : null; + var hoverTextWidthDefault = _extends({}, FibonacciRetracement.defaultProps.hoverText, hoverText); var currentRetracement = (0, _utils.isDefined)(current) && (0, _utils.isDefined)(current.x2) ? _react2.default.createElement(_EachFibRetracement2.default, _extends({ interactive: false, type: type, appearance: appearance, - hoverText: hoverText + hoverText: hoverTextWidthDefault }, current)) : null; return _react2.default.createElement( "g", @@ -238,14 +239,16 @@ var FibonacciRetracement = function (_Component) { retracements.map(function (each, idx) { var eachAppearance = (0, _utils.isDefined)(each.appearance) ? _extends({}, appearance, each.appearance) : appearance; + var eachHoverText = (0, _utils.isDefined)(each.hoverText) ? _extends({}, hoverTextWidthDefault, each.hoverText) : hoverTextWidthDefault; + return _react2.default.createElement(_EachFibRetracement2.default, _extends({ key: idx, ref: _this5.saveNodeType(idx), index: idx, type: each.type, - selected: each.selected, - hoverText: hoverText + selected: each.selected }, idx === overrideIndex ? override : each, { + hoverText: eachHoverText, appearance: eachAppearance, onDrag: _this5.handleDrag, onDragComplete: _this5.handleDragComplete @@ -319,9 +322,10 @@ FibonacciRetracement.defaultProps = { hoverText: _extends({}, _HoverTextNearMouse2.default.defaultProps, { enable: true, - bgHeight: 18, - bgWidth: 120, - text: "Click to select object" + bgHeight: "auto", + bgWidth: "auto", + text: "Click to select object", + selectedText: "" }), currentPositionStroke: "#000000", currentPositionOpacity: 1, diff --git a/lib/interactive/FibonacciRetracement.js.map b/lib/interactive/FibonacciRetracement.js.map index d32495c..35f4bb1 100644 --- a/lib/interactive/FibonacciRetracement.js.map +++ b/lib/interactive/FibonacciRetracement.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../../src/lib/interactive/FibonacciRetracement.js"],"names":["FibonacciRetracement","props","handleStart","bind","handleEnd","handleDrawRetracement","handleEdge1Drag","handleEdge2Drag","handleDrag","handleDragComplete","terminate","getSelectionState","saveNodeType","nodes","state","xyValue","current","x1","mouseMoved","setState","x2","y2","index","xy","override","echo","newXYValue","origXYValue","retracements","dx","x1Value","y1","x2Value","moreProps","rest","newRetracements","map","each","idx","selected","onComplete","onStart","e","appearance","type","concat","currentPositionStroke","currentPositionOpacity","currentPositionStrokeWidth","currentPositionRadius","enabled","hoverText","overrideIndex","currentRetracement","eachAppearance","propTypes","bool","isRequired","width","number","func","onSelect","oneOf","object","string","array","shape","stroke","strokeWidth","strokeOpacity","fontFamily","fontSize","fontFill","edgeStroke","edgeFill","nsEdgeFill","edgeStrokeWidth","r","defaultProps","enable","bgHeight","bgWidth","text"],"mappings":"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","file":"FibonacciRetracement.js","sourcesContent":["\n\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport { isDefined, isNotDefined, noop } from \"../utils\";\nimport {\n\tterminate,\n\tsaveNodeType,\n\tisHoverForInteractiveType,\n} from \"./utils\";\nimport EachFibRetracement from \"./wrapper/EachFibRetracement\";\nimport MouseLocationIndicator from \"./components/MouseLocationIndicator\";\nimport HoverTextNearMouse from \"./components/HoverTextNearMouse\";\n\nclass FibonacciRetracement extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\n\t\tthis.handleStart = this.handleStart.bind(this);\n\t\tthis.handleEnd = this.handleEnd.bind(this);\n\t\tthis.handleDrawRetracement = this.handleDrawRetracement.bind(this);\n\n\t\tthis.handleEdge1Drag = this.handleEdge1Drag.bind(this);\n\t\tthis.handleEdge2Drag = this.handleEdge2Drag.bind(this);\n\n\t\tthis.handleDrag = this.handleDrag.bind(this);\n\t\tthis.handleDragComplete = this.handleDragComplete.bind(this);\n\n\t\tthis.terminate = terminate.bind(this);\n\t\tthis.getSelectionState = isHoverForInteractiveType(\"retracements\")\n\t\t\t.bind(this);\n\n\t\tthis.saveNodeType = saveNodeType.bind(this);\n\t\tthis.nodes = [];\n\n\t\tthis.state = {\n\t\t};\n\t}\n\thandleDrawRetracement(xyValue) {\n\t\tconst { current } = this.state;\n\t\tif (isDefined(current) && isDefined(current.x1)) {\n\t\t\tthis.mouseMoved = true;\n\t\t\tthis.setState({\n\t\t\t\tcurrent: {\n\t\t\t\t\t...current,\n\t\t\t\t\tx2: xyValue[0],\n\t\t\t\t\ty2: xyValue[1]\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\thandleDrag(index, xy) {\n\t\tthis.setState({\n\t\t\toverride: {\n\t\t\t\tindex,\n\t\t\t\t...xy\n\t\t\t}\n\t\t});\n\t}\n\thandleEdge1Drag(echo, newXYValue, origXYValue) {\n\t\tconst { retracements } = this.props;\n\t\tconst { index } = echo;\n\n\t\tconst dx = origXYValue.x1Value - newXYValue.x1Value;\n\n\t\tthis.setState({\n\t\t\toverride: {\n\t\t\t\tindex,\n\t\t\t\tx1: retracements[index].x1 - dx,\n\t\t\t\ty1: retracements[index].y1,\n\t\t\t\tx2: retracements[index].x2,\n\t\t\t\ty2: retracements[index].y2\n\t\t\t}\n\t\t});\n\t}\n\thandleEdge2Drag(echo, newXYValue, origXYValue) {\n\t\tconst { retracements } = this.props;\n\t\tconst { index } = echo;\n\n\t\tconst dx = origXYValue.x2Value - newXYValue.x2Value;\n\n\t\tthis.setState({\n\t\t\toverride: {\n\t\t\t\tindex,\n\t\t\t\tx1: retracements[index].x1,\n\t\t\t\ty1: retracements[index].y1,\n\t\t\t\tx2: retracements[index].x2 - dx,\n\t\t\t\ty2: retracements[index].y2\n\t\t\t}\n\t\t});\n\t}\n\thandleDragComplete(moreProps) {\n\t\tconst { retracements } = this.props;\n\t\tconst { override } = this.state;\n\t\tif (isDefined(override)) {\n\t\t\tconst { index, ...rest } = override;\n\n\t\t\tconst newRetracements = retracements.map(\n\t\t\t\t(each, idx) =>\n\t\t\t\t\t(idx === index\n\t\t\t\t\t\t? { ...each, ...rest, selected: true }\n\t\t\t\t\t\t: each)\n\t\t\t);\n\t\t\tthis.setState(\n\t\t\t\t{\n\t\t\t\t\toverride: null,\n\t\t\t\t},\n\t\t\t\t() => {\n\t\t\t\t\tthis.props.onComplete(newRetracements, moreProps);\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t}\n\thandleStart(xyValue, moreProps) {\n\t\tconst { current } = this.state;\n\t\tif (isNotDefined(current) || isNotDefined(current.x1)) {\n\t\t\tthis.mouseMoved = false;\n\t\t\tthis.setState(\n\t\t\t\t{\n\t\t\t\t\tcurrent: {\n\t\t\t\t\t\tx1: xyValue[0],\n\t\t\t\t\t\ty1: xyValue[1],\n\t\t\t\t\t\tx2: null,\n\t\t\t\t\t\ty2: null\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t() => {\n\t\t\t\t\tthis.props.onStart(moreProps);\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t}\n\thandleEnd(xyValue, moreProps, e) {\n\t\tconst { retracements, appearance, type } = this.props;\n\t\tconst { current } = this.state;\n\n\t\tif (this.mouseMoved && isDefined(current) && isDefined(current.x1)) {\n\t\t\tconst newRetracements = retracements.concat({\n\t\t\t\t...current,\n\t\t\t\tx2: xyValue[0],\n\t\t\t\ty2: xyValue[1],\n\t\t\t\tselected: true,\n\t\t\t\tappearance,\n\t\t\t\ttype,\n\t\t\t});\n\n\t\t\tthis.setState(\n\t\t\t\t{\n\t\t\t\t\tcurrent: null,\n\t\t\t\t},\n\t\t\t\t() => {\n\t\t\t\t\tthis.props.onComplete(newRetracements, moreProps, e);\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t}\n\trender() {\n\t\tconst { current, override } = this.state;\n\t\tconst { retracements } = this.props;\n\n\t\tconst {\n\t\t\tappearance,\n\t\t\ttype\n\t\t} = this.props;\n\t\tconst {\n\t\t\tcurrentPositionStroke,\n\t\t\tcurrentPositionOpacity,\n\t\t\tcurrentPositionStrokeWidth,\n\t\t\tcurrentPositionRadius\n\t\t} = this.props;\n\n\t\tconst { enabled, hoverText } = this.props;\n\t\tconst overrideIndex = isDefined(override) ? override.index : null;\n\n\t\tconst currentRetracement = isDefined(current) && isDefined(current.x2)\n\t\t\t? \n\t\t\t: null;\n\t\treturn (\n\t\t\t\n\t\t\t\t{retracements.map((each, idx) => {\n\t\t\t\t\tconst eachAppearance = isDefined(each.appearance)\n\t\t\t\t\t\t? { ...appearance, ...each.appearance }\n\t\t\t\t\t\t: appearance;\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t\t{currentRetracement}\n\t\t\t\t\n\t\t\t\n\t\t);\n\t}\n}\n\n// onClick={this.handleClick}\n\nFibonacciRetracement.propTypes = {\n\tenabled: PropTypes.bool.isRequired,\n\twidth: PropTypes.number,\n\n\tonStart: PropTypes.func,\n\tonComplete: PropTypes.func,\n\tonSelect: PropTypes.func,\n\n\ttype: PropTypes.oneOf([\n\t\t\"EXTEND\", // extends from -Infinity to +Infinity\n\t\t\"RAY\", // extends to +/-Infinity in one direction\n\t\t\"BOUND\" // extends between the set bounds\n\t]).isRequired,\n\thoverText: PropTypes.object.isRequired,\n\n\tcurrentPositionStroke: PropTypes.string,\n\tcurrentPositionStrokeWidth: PropTypes.number,\n\tcurrentPositionOpacity: PropTypes.number,\n\tcurrentPositionRadius: PropTypes.number,\n\n\tretracements: PropTypes.array.isRequired,\n\n\tappearance: PropTypes.shape({\n\t\tstroke: PropTypes.string.isRequired,\n\t\tstrokeWidth: PropTypes.number.isRequired,\n\t\tstrokeOpacity: PropTypes.number.isRequired,\n\t\tfontFamily: PropTypes.string.isRequired,\n\t\tfontSize: PropTypes.number.isRequired,\n\t\tfontFill: PropTypes.string.isRequired,\n\t\tedgeStroke: PropTypes.string.isRequired,\n\t\tedgeFill: PropTypes.string.isRequired,\n\t\tnsEdgeFill: PropTypes.string.isRequired,\n\t\tedgeStrokeWidth: PropTypes.number.isRequired,\n\t\tr: PropTypes.number.isRequired,\n\t}).isRequired\n};\n\nFibonacciRetracement.defaultProps = {\n\tenabled: true,\n\ttype: \"RAY\",\n\tretracements: [],\n\n\tonStart: noop,\n\tonComplete: noop,\n\tonSelect: noop,\n\n\thoverText: {\n\t\t...HoverTextNearMouse.defaultProps,\n\t\tenable: true,\n\t\tbgHeight: 18,\n\t\tbgWidth: 120,\n\t\ttext: \"Click to select object\"\n\t},\n\tcurrentPositionStroke: \"#000000\",\n\tcurrentPositionOpacity: 1,\n\tcurrentPositionStrokeWidth: 3,\n\tcurrentPositionRadius: 4,\n\n\tappearance: {\n\t\tstroke: \"#000000\",\n\t\tstrokeWidth: 1,\n\t\tstrokeOpacity: 1,\n\t\tfontFamily: \"Helvetica Neue, Helvetica, Arial, sans-serif\",\n\t\tfontSize: 11,\n\t\tfontFill: \"#000000\",\n\t\tedgeStroke: \"#000000\",\n\t\tedgeFill: \"#FFFFFF\",\n\t\tnsEdgeFill: \"#000000\",\n\t\tedgeStrokeWidth: 1,\n\t\tr: 5,\n\t}\n};\n\nexport default FibonacciRetracement;\n"]} \ No newline at end of file +{"version":3,"sources":["../../../src/lib/interactive/FibonacciRetracement.js"],"names":["FibonacciRetracement","props","handleStart","bind","handleEnd","handleDrawRetracement","handleEdge1Drag","handleEdge2Drag","handleDrag","handleDragComplete","terminate","getSelectionState","saveNodeType","nodes","state","xyValue","current","x1","mouseMoved","setState","x2","y2","index","xy","override","echo","newXYValue","origXYValue","retracements","dx","x1Value","y1","x2Value","moreProps","rest","newRetracements","map","each","idx","selected","onComplete","onStart","e","appearance","type","concat","currentPositionStroke","currentPositionOpacity","currentPositionStrokeWidth","currentPositionRadius","enabled","hoverText","overrideIndex","hoverTextWidthDefault","defaultProps","currentRetracement","eachAppearance","eachHoverText","propTypes","bool","isRequired","width","number","func","onSelect","oneOf","object","string","array","shape","stroke","strokeWidth","strokeOpacity","fontFamily","fontSize","fontFill","edgeStroke","edgeFill","nsEdgeFill","edgeStrokeWidth","r","enable","bgHeight","bgWidth","text","selectedText"],"mappings":"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","file":"FibonacciRetracement.js","sourcesContent":["\n\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport { isDefined, isNotDefined, noop } from \"../utils\";\nimport {\n\tterminate,\n\tsaveNodeType,\n\tisHoverForInteractiveType,\n} from \"./utils\";\nimport EachFibRetracement from \"./wrapper/EachFibRetracement\";\nimport MouseLocationIndicator from \"./components/MouseLocationIndicator\";\nimport HoverTextNearMouse from \"./components/HoverTextNearMouse\";\n\nclass FibonacciRetracement extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\n\t\tthis.handleStart = this.handleStart.bind(this);\n\t\tthis.handleEnd = this.handleEnd.bind(this);\n\t\tthis.handleDrawRetracement = this.handleDrawRetracement.bind(this);\n\n\t\tthis.handleEdge1Drag = this.handleEdge1Drag.bind(this);\n\t\tthis.handleEdge2Drag = this.handleEdge2Drag.bind(this);\n\n\t\tthis.handleDrag = this.handleDrag.bind(this);\n\t\tthis.handleDragComplete = this.handleDragComplete.bind(this);\n\n\t\tthis.terminate = terminate.bind(this);\n\t\tthis.getSelectionState = isHoverForInteractiveType(\"retracements\")\n\t\t\t.bind(this);\n\n\t\tthis.saveNodeType = saveNodeType.bind(this);\n\t\tthis.nodes = [];\n\n\t\tthis.state = {\n\t\t};\n\t}\n\thandleDrawRetracement(xyValue) {\n\t\tconst { current } = this.state;\n\t\tif (isDefined(current) && isDefined(current.x1)) {\n\t\t\tthis.mouseMoved = true;\n\t\t\tthis.setState({\n\t\t\t\tcurrent: {\n\t\t\t\t\t...current,\n\t\t\t\t\tx2: xyValue[0],\n\t\t\t\t\ty2: xyValue[1]\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\thandleDrag(index, xy) {\n\t\tthis.setState({\n\t\t\toverride: {\n\t\t\t\tindex,\n\t\t\t\t...xy\n\t\t\t}\n\t\t});\n\t}\n\thandleEdge1Drag(echo, newXYValue, origXYValue) {\n\t\tconst { retracements } = this.props;\n\t\tconst { index } = echo;\n\n\t\tconst dx = origXYValue.x1Value - newXYValue.x1Value;\n\n\t\tthis.setState({\n\t\t\toverride: {\n\t\t\t\tindex,\n\t\t\t\tx1: retracements[index].x1 - dx,\n\t\t\t\ty1: retracements[index].y1,\n\t\t\t\tx2: retracements[index].x2,\n\t\t\t\ty2: retracements[index].y2\n\t\t\t}\n\t\t});\n\t}\n\thandleEdge2Drag(echo, newXYValue, origXYValue) {\n\t\tconst { retracements } = this.props;\n\t\tconst { index } = echo;\n\n\t\tconst dx = origXYValue.x2Value - newXYValue.x2Value;\n\n\t\tthis.setState({\n\t\t\toverride: {\n\t\t\t\tindex,\n\t\t\t\tx1: retracements[index].x1,\n\t\t\t\ty1: retracements[index].y1,\n\t\t\t\tx2: retracements[index].x2 - dx,\n\t\t\t\ty2: retracements[index].y2\n\t\t\t}\n\t\t});\n\t}\n\thandleDragComplete(moreProps) {\n\t\tconst { retracements } = this.props;\n\t\tconst { override } = this.state;\n\t\tif (isDefined(override)) {\n\t\t\tconst { index, ...rest } = override;\n\n\t\t\tconst newRetracements = retracements.map(\n\t\t\t\t(each, idx) =>\n\t\t\t\t\t(idx === index\n\t\t\t\t\t\t? { ...each, ...rest, selected: true }\n\t\t\t\t\t\t: each)\n\t\t\t);\n\t\t\tthis.setState(\n\t\t\t\t{\n\t\t\t\t\toverride: null,\n\t\t\t\t},\n\t\t\t\t() => {\n\t\t\t\t\tthis.props.onComplete(newRetracements, moreProps);\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t}\n\thandleStart(xyValue, moreProps) {\n\t\tconst { current } = this.state;\n\t\tif (isNotDefined(current) || isNotDefined(current.x1)) {\n\t\t\tthis.mouseMoved = false;\n\t\t\tthis.setState(\n\t\t\t\t{\n\t\t\t\t\tcurrent: {\n\t\t\t\t\t\tx1: xyValue[0],\n\t\t\t\t\t\ty1: xyValue[1],\n\t\t\t\t\t\tx2: null,\n\t\t\t\t\t\ty2: null\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t() => {\n\t\t\t\t\tthis.props.onStart(moreProps);\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t}\n\thandleEnd(xyValue, moreProps, e) {\n\t\tconst { retracements, appearance, type } = this.props;\n\t\tconst { current } = this.state;\n\n\t\tif (this.mouseMoved && isDefined(current) && isDefined(current.x1)) {\n\t\t\tconst newRetracements = retracements.concat({\n\t\t\t\t...current,\n\t\t\t\tx2: xyValue[0],\n\t\t\t\ty2: xyValue[1],\n\t\t\t\tselected: true,\n\t\t\t\tappearance,\n\t\t\t\ttype,\n\t\t\t});\n\n\t\t\tthis.setState(\n\t\t\t\t{\n\t\t\t\t\tcurrent: null,\n\t\t\t\t},\n\t\t\t\t() => {\n\t\t\t\t\tthis.props.onComplete(newRetracements, moreProps, e);\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t}\n\trender() {\n\t\tconst { current, override } = this.state;\n\t\tconst { retracements } = this.props;\n\n\t\tconst {\n\t\t\tappearance,\n\t\t\ttype\n\t\t} = this.props;\n\t\tconst {\n\t\t\tcurrentPositionStroke,\n\t\t\tcurrentPositionOpacity,\n\t\t\tcurrentPositionStrokeWidth,\n\t\t\tcurrentPositionRadius\n\t\t} = this.props;\n\n\t\tconst { enabled, hoverText } = this.props;\n\t\tconst overrideIndex = isDefined(override) ? override.index : null;\n\t\tconst hoverTextWidthDefault = {\n\t\t\t...FibonacciRetracement.defaultProps.hoverText,\n\t\t\t...hoverText\n\t\t};\n\n\t\tconst currentRetracement = isDefined(current) && isDefined(current.x2)\n\t\t\t? \n\t\t\t: null;\n\t\treturn (\n\t\t\t\n\t\t\t\t{retracements.map((each, idx) => {\n\t\t\t\t\tconst eachAppearance = isDefined(each.appearance)\n\t\t\t\t\t\t? { ...appearance, ...each.appearance }\n\t\t\t\t\t\t: appearance;\n\n\t\t\t\t\tconst eachHoverText = isDefined(each.hoverText)\n\t\t\t\t\t\t? { ...hoverTextWidthDefault, ...each.hoverText }\n\t\t\t\t\t\t: hoverTextWidthDefault;\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t\t{currentRetracement}\n\t\t\t\t\n\t\t\t\n\t\t);\n\t}\n}\n\n// onClick={this.handleClick}\n\nFibonacciRetracement.propTypes = {\n\tenabled: PropTypes.bool.isRequired,\n\twidth: PropTypes.number,\n\n\tonStart: PropTypes.func,\n\tonComplete: PropTypes.func,\n\tonSelect: PropTypes.func,\n\n\ttype: PropTypes.oneOf([\n\t\t\"EXTEND\", // extends from -Infinity to +Infinity\n\t\t\"RAY\", // extends to +/-Infinity in one direction\n\t\t\"BOUND\" // extends between the set bounds\n\t]).isRequired,\n\thoverText: PropTypes.object.isRequired,\n\n\tcurrentPositionStroke: PropTypes.string,\n\tcurrentPositionStrokeWidth: PropTypes.number,\n\tcurrentPositionOpacity: PropTypes.number,\n\tcurrentPositionRadius: PropTypes.number,\n\n\tretracements: PropTypes.array.isRequired,\n\n\tappearance: PropTypes.shape({\n\t\tstroke: PropTypes.string.isRequired,\n\t\tstrokeWidth: PropTypes.number.isRequired,\n\t\tstrokeOpacity: PropTypes.number.isRequired,\n\t\tfontFamily: PropTypes.string.isRequired,\n\t\tfontSize: PropTypes.number.isRequired,\n\t\tfontFill: PropTypes.string.isRequired,\n\t\tedgeStroke: PropTypes.string.isRequired,\n\t\tedgeFill: PropTypes.string.isRequired,\n\t\tnsEdgeFill: PropTypes.string.isRequired,\n\t\tedgeStrokeWidth: PropTypes.number.isRequired,\n\t\tr: PropTypes.number.isRequired,\n\t}).isRequired\n};\n\nFibonacciRetracement.defaultProps = {\n\tenabled: true,\n\ttype: \"RAY\",\n\tretracements: [],\n\n\tonStart: noop,\n\tonComplete: noop,\n\tonSelect: noop,\n\n\thoverText: {\n\t\t...HoverTextNearMouse.defaultProps,\n\t\tenable: true,\n\t\tbgHeight: \"auto\",\n\t\tbgWidth: \"auto\",\n\t\ttext: \"Click to select object\",\n\t\tselectedText: \"\",\n\t},\n\tcurrentPositionStroke: \"#000000\",\n\tcurrentPositionOpacity: 1,\n\tcurrentPositionStrokeWidth: 3,\n\tcurrentPositionRadius: 4,\n\n\tappearance: {\n\t\tstroke: \"#000000\",\n\t\tstrokeWidth: 1,\n\t\tstrokeOpacity: 1,\n\t\tfontFamily: \"Helvetica Neue, Helvetica, Arial, sans-serif\",\n\t\tfontSize: 11,\n\t\tfontFill: \"#000000\",\n\t\tedgeStroke: \"#000000\",\n\t\tedgeFill: \"#FFFFFF\",\n\t\tnsEdgeFill: \"#000000\",\n\t\tedgeStrokeWidth: 1,\n\t\tr: 5,\n\t}\n};\n\nexport default FibonacciRetracement;\n"]} \ No newline at end of file diff --git a/lib/interactive/InteractiveText.js b/lib/interactive/InteractiveText.js index 45f48a0..0859ea2 100644 --- a/lib/interactive/InteractiveText.js +++ b/lib/interactive/InteractiveText.js @@ -150,14 +150,18 @@ var InteractiveText = function (_Component) { var _props2 = this.props, textList = _props2.textList, - defaultText = _props2.defaultText; + defaultText = _props2.defaultText, + hoverText = _props2.hoverText; var override = this.state.override; return _react2.default.createElement( "g", null, textList.map(function (each, idx) { - var props = _extends({}, defaultText, each); + var defaultHoverText = InteractiveText.defaultProps.hoverText; + var props = _extends({}, defaultText, each, { + hoverText: _extends({}, defaultHoverText, hoverText, each.hoverText || {}) + }); return _react2.default.createElement(_EachText2.default, _extends({ key: idx, ref: _this3.saveNodeType(idx), index: idx @@ -196,6 +200,8 @@ InteractiveText.propTypes = { defaultText: _propTypes2.default.shape({ bgFill: _propTypes2.default.string.isRequired, bgOpacity: _propTypes2.default.number.isRequired, + bgStrokeWidth: _propTypes2.default.number, + bgStroke: _propTypes2.default.string, textFill: _propTypes2.default.string.isRequired, fontFamily: _propTypes2.default.string.isRequired, fontWeight: _propTypes2.default.string.isRequired, @@ -217,6 +223,7 @@ InteractiveText.defaultProps = { defaultText: { bgFill: "#D3D3D3", bgOpacity: 1, + bgStrokeWidth: 1, textFill: "#F10040", fontFamily: "Helvetica Neue, Helvetica, Arial, sans-serif", fontSize: 12, @@ -226,9 +233,10 @@ InteractiveText.defaultProps = { }, hoverText: _extends({}, _HoverTextNearMouse2.default.defaultProps, { enable: true, - bgHeight: 18, - bgWidth: 175, - text: "Click and drag the edge circles" + bgHeight: "auto", + bgWidth: "auto", + text: "Click to select object", + selectedText: "" }), textList: [] }; diff --git a/lib/interactive/InteractiveText.js.map b/lib/interactive/InteractiveText.js.map index efa16f8..dfc8d12 100644 --- a/lib/interactive/InteractiveText.js.map +++ b/lib/interactive/InteractiveText.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../../src/lib/interactive/InteractiveText.js"],"names":["InteractiveText","props","handleDraw","bind","handleDrag","handleDragComplete","terminate","saveNodeType","getSelectionState","nodes","state","index","position","setState","override","moreProps","textList","newTextList","map","each","idx","selected","onDragComplete","xyValue","current","start","end","e","enabled","mouseXY","mouseY","yScale","chartConfig","xAccessor","currentItem","invert","defaultText","onChoosePosition","newText","propTypes","func","isRequired","onSelect","shape","bgFill","string","bgOpacity","number","textFill","fontFamily","fontWeight","fontStyle","fontSize","text","hoverText","object","array","bool","defaultProps","enable","bgHeight","bgWidth","contextTypes","subscribe","unsubscribe","generateSubscriptionId","chartId","oneOfType"],"mappings":"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","file":"InteractiveText.js","sourcesContent":["\n\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport { isDefined, noop } from \"../utils\";\n\nimport {\n\tgetValueFromOverride,\n\tterminate,\n\tsaveNodeType,\n\tisHoverForInteractiveType,\n} from \"./utils\";\nimport EachText from \"./wrapper/EachText\";\nimport HoverTextNearMouse from \"./components/HoverTextNearMouse\";\nimport GenericChartComponent from \"../GenericChartComponent\";\nimport { getMouseCanvas } from \"../GenericComponent\";\n\nclass InteractiveText extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\n\t\tthis.handleDraw = this.handleDraw.bind(this);\n\t\tthis.handleDrag = this.handleDrag.bind(this);\n\t\tthis.handleDragComplete = this.handleDragComplete.bind(this);\n\t\tthis.terminate = terminate.bind(this);\n\n\t\tthis.saveNodeType = saveNodeType.bind(this);\n\t\tthis.getSelectionState = isHoverForInteractiveType(\"textList\")\n\t\t\t.bind(this);\n\n\t\tthis.nodes = [];\n\t\tthis.state = {};\n\t}\n\thandleDrag(index, position) {\n\t\tthis.setState({\n\t\t\toverride: {\n\t\t\t\tindex,\n\t\t\t\tposition,\n\t\t\t}\n\t\t});\n\t}\n\thandleDragComplete(moreProps) {\n\t\tconst { override } = this.state;\n\t\tif (isDefined(override)) {\n\t\t\tconst { textList } = this.props;\n\t\t\tconst newTextList = textList\n\t\t\t\t.map((each, idx) => {\n\t\t\t\t\tconst selected = (idx === override.index);\n\t\t\t\t\treturn selected\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t...each,\n\t\t\t\t\t\t\tposition: override.position,\n\t\t\t\t\t\t\tselected,\n\t\t\t\t\t\t}\n\t\t\t\t\t\t: {\n\t\t\t\t\t\t\t...each,\n\t\t\t\t\t\t\tselected\n\t\t\t\t\t\t};\n\t\t\t\t});\n\t\t\tthis.setState({\n\t\t\t\toverride: null,\n\t\t\t}, () => {\n\t\t\t\tthis.props.onDragComplete(newTextList, moreProps);\n\t\t\t});\n\t\t}\n\t}\n\thandleDrawLine(xyValue) {\n\t\tconst { current } = this.state;\n\n\t\tif (isDefined(current) && isDefined(current.start)) {\n\t\t\tthis.setState({\n\t\t\t\tcurrent: {\n\t\t\t\t\tstart: current.start,\n\t\t\t\t\tend: xyValue,\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\thandleDraw(moreProps, e) {\n\t\tconst { enabled } = this.props;\n\t\tif (enabled) {\n\t\t\tconst {\n\t\t\t\tmouseXY: [, mouseY],\n\t\t\t\tchartConfig: { yScale },\n\t\t\t\txAccessor,\n\t\t\t\tcurrentItem,\n\t\t\t} = moreProps;\n\n\t\t\tconst xyValue = [xAccessor(currentItem), yScale.invert(mouseY)];\n\n\t\t\tconst { defaultText, onChoosePosition } = this.props;\n\n\t\t\tconst newText = {\n\t\t\t\t...defaultText,\n\t\t\t\tposition: xyValue,\n\t\t\t};\n\t\t\tonChoosePosition(newText, moreProps, e);\n\t\t}/* else {\n\t\t\tthis.handleClick(moreProps, e);\n\t\t} */\n\t}\n\trender() {\n\t\tconst { textList, defaultText } = this.props;\n\t\tconst { override } = this.state;\n\t\treturn \n\t\t\t{textList.map((each, idx) => {\n\t\t\t\tconst props = {\n\t\t\t\t\t...defaultText,\n\t\t\t\t\t...each,\n\t\t\t\t};\n\t\t\t\treturn ;\n\t\t\t})}\n\t\t\t;\n\t\t;\n\t}\n}\n\nInteractiveText.propTypes = {\n\tonChoosePosition: PropTypes.func.isRequired,\n\tonDragComplete: PropTypes.func.isRequired,\n\tonSelect: PropTypes.func,\n\n\tdefaultText: PropTypes.shape({\n\t\tbgFill: PropTypes.string.isRequired,\n\t\tbgOpacity: PropTypes.number.isRequired,\n\t\ttextFill: PropTypes.string.isRequired,\n\t\tfontFamily: PropTypes.string.isRequired,\n\t\tfontWeight: PropTypes.string.isRequired,\n\t\tfontStyle: PropTypes.string.isRequired,\n\t\tfontSize: PropTypes.number.isRequired,\n\t\ttext: PropTypes.string.isRequired,\n\t}).isRequired,\n\n\thoverText: PropTypes.object.isRequired,\n\ttextList: PropTypes.array.isRequired,\n\tenabled: PropTypes.bool.isRequired,\n};\n\nInteractiveText.defaultProps = {\n\tonChoosePosition: noop,\n\tonDragComplete: noop,\n\tonSelect: noop,\n\n\tdefaultText: {\n\t\tbgFill: \"#D3D3D3\",\n\t\tbgOpacity: 1,\n\t\ttextFill: \"#F10040\",\n\t\tfontFamily: \"Helvetica Neue, Helvetica, Arial, sans-serif\",\n\t\tfontSize: 12,\n\t\tfontStyle: \"normal\",\n\t\tfontWeight: \"normal\",\n\t\ttext: \"Lorem ipsum...\"\n\t},\n\thoverText: {\n\t\t...HoverTextNearMouse.defaultProps,\n\t\tenable: true,\n\t\tbgHeight: 18,\n\t\tbgWidth: 175,\n\t\ttext: \"Click and drag the edge circles\",\n\t},\n\ttextList: [],\n};\n\nInteractiveText.contextTypes = {\n\tsubscribe: PropTypes.func.isRequired,\n\tunsubscribe: PropTypes.func.isRequired,\n\tgenerateSubscriptionId: PropTypes.func.isRequired,\n\tchartId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,\n};\n\nexport default InteractiveText;\n"]} \ No newline at end of file +{"version":3,"sources":["../../../src/lib/interactive/InteractiveText.js"],"names":["InteractiveText","props","handleDraw","bind","handleDrag","handleDragComplete","terminate","saveNodeType","getSelectionState","nodes","state","index","position","setState","override","moreProps","textList","newTextList","map","each","idx","selected","onDragComplete","xyValue","current","start","end","e","enabled","mouseXY","mouseY","yScale","chartConfig","xAccessor","currentItem","invert","defaultText","onChoosePosition","newText","hoverText","defaultHoverText","defaultProps","propTypes","func","isRequired","onSelect","shape","bgFill","string","bgOpacity","number","bgStrokeWidth","bgStroke","textFill","fontFamily","fontWeight","fontStyle","fontSize","text","object","array","bool","enable","bgHeight","bgWidth","selectedText","contextTypes","subscribe","unsubscribe","generateSubscriptionId","chartId","oneOfType"],"mappings":"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","file":"InteractiveText.js","sourcesContent":["\n\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport { isDefined, noop } from \"../utils\";\n\nimport {\n\tgetValueFromOverride,\n\tterminate,\n\tsaveNodeType,\n\tisHoverForInteractiveType,\n} from \"./utils\";\nimport EachText from \"./wrapper/EachText\";\nimport HoverTextNearMouse from \"./components/HoverTextNearMouse\";\nimport GenericChartComponent from \"../GenericChartComponent\";\nimport { getMouseCanvas } from \"../GenericComponent\";\n\nclass InteractiveText extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\n\t\tthis.handleDraw = this.handleDraw.bind(this);\n\t\tthis.handleDrag = this.handleDrag.bind(this);\n\t\tthis.handleDragComplete = this.handleDragComplete.bind(this);\n\t\tthis.terminate = terminate.bind(this);\n\n\t\tthis.saveNodeType = saveNodeType.bind(this);\n\t\tthis.getSelectionState = isHoverForInteractiveType(\"textList\")\n\t\t\t.bind(this);\n\n\t\tthis.nodes = [];\n\t\tthis.state = {};\n\t}\n\thandleDrag(index, position) {\n\t\tthis.setState({\n\t\t\toverride: {\n\t\t\t\tindex,\n\t\t\t\tposition,\n\t\t\t}\n\t\t});\n\t}\n\thandleDragComplete(moreProps) {\n\t\tconst { override } = this.state;\n\t\tif (isDefined(override)) {\n\t\t\tconst { textList } = this.props;\n\t\t\tconst newTextList = textList\n\t\t\t\t.map((each, idx) => {\n\t\t\t\t\tconst selected = (idx === override.index);\n\t\t\t\t\treturn selected\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t...each,\n\t\t\t\t\t\t\tposition: override.position,\n\t\t\t\t\t\t\tselected,\n\t\t\t\t\t\t}\n\t\t\t\t\t\t: {\n\t\t\t\t\t\t\t...each,\n\t\t\t\t\t\t\tselected\n\t\t\t\t\t\t};\n\t\t\t\t});\n\t\t\tthis.setState({\n\t\t\t\toverride: null,\n\t\t\t}, () => {\n\t\t\t\tthis.props.onDragComplete(newTextList, moreProps);\n\t\t\t});\n\t\t}\n\t}\n\thandleDrawLine(xyValue) {\n\t\tconst { current } = this.state;\n\n\t\tif (isDefined(current) && isDefined(current.start)) {\n\t\t\tthis.setState({\n\t\t\t\tcurrent: {\n\t\t\t\t\tstart: current.start,\n\t\t\t\t\tend: xyValue,\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\thandleDraw(moreProps, e) {\n\t\tconst { enabled } = this.props;\n\t\tif (enabled) {\n\t\t\tconst {\n\t\t\t\tmouseXY: [, mouseY],\n\t\t\t\tchartConfig: { yScale },\n\t\t\t\txAccessor,\n\t\t\t\tcurrentItem,\n\t\t\t} = moreProps;\n\n\t\t\tconst xyValue = [xAccessor(currentItem), yScale.invert(mouseY)];\n\n\t\t\tconst { defaultText, onChoosePosition } = this.props;\n\n\t\t\tconst newText = {\n\t\t\t\t...defaultText,\n\t\t\t\tposition: xyValue,\n\t\t\t};\n\t\t\tonChoosePosition(newText, moreProps, e);\n\t\t}/* else {\n\t\t\tthis.handleClick(moreProps, e);\n\t\t} */\n\t}\n\trender() {\n\t\tconst { textList, defaultText, hoverText } = this.props;\n\t\tconst { override } = this.state;\n\t\treturn \n\t\t\t{textList.map((each, idx) => {\n\t\t\t\tconst defaultHoverText = InteractiveText.defaultProps.hoverText;\n\t\t\t\tconst props = {\n\t\t\t\t\t...defaultText,\n\t\t\t\t\t...each,\n\t\t\t\t\thoverText: {\n\t\t\t\t\t\t...defaultHoverText,\n\t\t\t\t\t\t...hoverText,\n\t\t\t\t\t\t...(each.hoverText || {})\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t\treturn ;\n\t\t\t})}\n\t\t\t;\n\t\t;\n\t}\n}\n\nInteractiveText.propTypes = {\n\tonChoosePosition: PropTypes.func.isRequired,\n\tonDragComplete: PropTypes.func.isRequired,\n\tonSelect: PropTypes.func,\n\n\tdefaultText: PropTypes.shape({\n\t\tbgFill: PropTypes.string.isRequired,\n\t\tbgOpacity: PropTypes.number.isRequired,\n\t\tbgStrokeWidth: PropTypes.number,\n\t\tbgStroke: PropTypes.string,\n\t\ttextFill: PropTypes.string.isRequired,\n\t\tfontFamily: PropTypes.string.isRequired,\n\t\tfontWeight: PropTypes.string.isRequired,\n\t\tfontStyle: PropTypes.string.isRequired,\n\t\tfontSize: PropTypes.number.isRequired,\n\t\ttext: PropTypes.string.isRequired,\n\t}).isRequired,\n\n\thoverText: PropTypes.object.isRequired,\n\ttextList: PropTypes.array.isRequired,\n\tenabled: PropTypes.bool.isRequired,\n};\n\nInteractiveText.defaultProps = {\n\tonChoosePosition: noop,\n\tonDragComplete: noop,\n\tonSelect: noop,\n\n\tdefaultText: {\n\t\tbgFill: \"#D3D3D3\",\n\t\tbgOpacity: 1,\n\t\tbgStrokeWidth: 1,\n\t\ttextFill: \"#F10040\",\n\t\tfontFamily: \"Helvetica Neue, Helvetica, Arial, sans-serif\",\n\t\tfontSize: 12,\n\t\tfontStyle: \"normal\",\n\t\tfontWeight: \"normal\",\n\t\ttext: \"Lorem ipsum...\"\n\t},\n\thoverText: {\n\t\t...HoverTextNearMouse.defaultProps,\n\t\tenable: true,\n\t\tbgHeight: \"auto\",\n\t\tbgWidth: \"auto\",\n\t\ttext: \"Click to select object\",\n\t\tselectedText: \"\",\n\t},\n\ttextList: [],\n};\n\nInteractiveText.contextTypes = {\n\tsubscribe: PropTypes.func.isRequired,\n\tunsubscribe: PropTypes.func.isRequired,\n\tgenerateSubscriptionId: PropTypes.func.isRequired,\n\tchartId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,\n};\n\nexport default InteractiveText;\n"]} \ No newline at end of file diff --git a/lib/interactive/StandardDeviationChannel.js b/lib/interactive/StandardDeviationChannel.js index 4a688a9..a01b284 100644 --- a/lib/interactive/StandardDeviationChannel.js +++ b/lib/interactive/StandardDeviationChannel.js @@ -107,7 +107,6 @@ var StandardDeviationChannel = function (_Component) { if ((0, _utils.isDefined)(current) && (0, _utils.isDefined)(current.start)) { this.mouseMoved = true; - console.log(xyValue); this.setState({ current: { start: current.start, @@ -188,19 +187,25 @@ var StandardDeviationChannel = function (_Component) { override = _state.override; + var eachDefaultAppearance = _extends({}, StandardDeviationChannel.defaultProps.appearance, appearance); + + var hoverTextDefault = _extends({}, StandardDeviationChannel.defaultProps.hoverText, hoverText); + var tempLine = (0, _utils.isDefined)(current) && (0, _utils.isDefined)(current.end) ? _react2.default.createElement(_EachLinearRegressionChannel2.default, { interactive: false, x1Value: current.start[0], x2Value: current.end[0], - appearance: appearance, - hoverText: hoverText + appearance: eachDefaultAppearance, + hoverText: hoverTextDefault }) : null; return _react2.default.createElement( "g", null, channels.map(function (each, idx) { - var eachAppearance = (0, _utils.isDefined)(each.appearance) ? _extends({}, appearance, each.appearance) : appearance; + var eachAppearance = (0, _utils.isDefined)(each.appearance) ? _extends({}, eachDefaultAppearance, each.appearance) : eachDefaultAppearance; + + var eachHoverText = (0, _utils.isDefined)(each.hoverText) ? _extends({}, hoverTextDefault, each.hoverText) : hoverTextDefault; return _react2.default.createElement(_EachLinearRegressionChannel2.default, { key: idx, ref: _this5.saveNodeType(idx), @@ -212,7 +217,7 @@ var StandardDeviationChannel = function (_Component) { appearance: eachAppearance, snapTo: snapTo, - hoverText: hoverText, + hoverText: eachHoverText, onDrag: _this5.handleDragLine, onDragComplete: _this5.handleDragLineComplete, @@ -241,9 +246,9 @@ var StandardDeviationChannel = function (_Component) { StandardDeviationChannel.propTypes = { enabled: _propTypes2.default.bool.isRequired, - snapTo: _propTypes2.default.func.isRequired, + snapTo: _propTypes2.default.func, - onStart: _propTypes2.default.func.isRequired, + onStart: _propTypes2.default.func, onComplete: _propTypes2.default.func.isRequired, onSelect: _propTypes2.default.func, @@ -253,18 +258,18 @@ StandardDeviationChannel.propTypes = { currentPositionRadius: _propTypes2.default.number, appearance: _propTypes2.default.shape({ - stroke: _propTypes2.default.string.isRequired, - strokeOpacity: _propTypes2.default.number.isRequired, - strokeWidth: _propTypes2.default.number.isRequired, - fill: _propTypes2.default.string.isRequired, - fillOpacity: _propTypes2.default.number.isRequired, - edgeStrokeWidth: _propTypes2.default.number.isRequired, - edgeStroke: _propTypes2.default.string.isRequired, - edgeFill: _propTypes2.default.string.isRequired, - r: _propTypes2.default.number.isRequired + stroke: _propTypes2.default.string, + strokeOpacity: _propTypes2.default.number, + strokeWidth: _propTypes2.default.number, + fill: _propTypes2.default.string, + fillOpacity: _propTypes2.default.number, + edgeStrokeWidth: _propTypes2.default.number, + edgeStroke: _propTypes2.default.string, + edgeFill: _propTypes2.default.string, + r: _propTypes2.default.number }).isRequired, - hoverText: _propTypes2.default.object.isRequired, + hoverText: _propTypes2.default.object, channels: _propTypes2.default.array.isRequired }; @@ -295,9 +300,10 @@ StandardDeviationChannel.defaultProps = { hoverText: _extends({}, _HoverTextNearMouse2.default.defaultProps, { enable: true, - bgHeight: 18, - bgWidth: 175, - text: "Click and drag the edge circles" + bgHeight: "auto", + bgWidth: "auto", + text: "Click and drag the edge circles", + selectedText: "" }), channels: [] }; diff --git a/lib/interactive/StandardDeviationChannel.js.map b/lib/interactive/StandardDeviationChannel.js.map index 3cf3bdf..45e2754 100644 --- a/lib/interactive/StandardDeviationChannel.js.map +++ b/lib/interactive/StandardDeviationChannel.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../../src/lib/interactive/StandardDeviationChannel.js"],"names":["StandardDeviationChannel","props","handleStart","bind","handleEnd","handleDrawLine","handleDragLine","handleDragLineComplete","terminate","saveNodeType","getSelectionState","nodes","state","index","newXYValue","setState","override","moreProps","channels","newChannels","map","each","idx","start","x1Value","y1Value","end","x2Value","y2Value","selected","onComplete","xyValue","current","mouseMoved","console","log","onStart","e","appearance","d","enabled","snapTo","currentPositionRadius","currentPositionStroke","currentPositionOpacity","currentPositionStrokeWidth","hoverText","tempLine","eachAppearance","propTypes","bool","isRequired","func","onSelect","string","number","shape","stroke","strokeOpacity","strokeWidth","fill","fillOpacity","edgeStrokeWidth","edgeStroke","edgeFill","r","object","array","defaultProps","close","enable","bgHeight","bgWidth","text"],"mappings":"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","file":"StandardDeviationChannel.js","sourcesContent":["\n\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport { isDefined, isNotDefined, noop } from \"../utils\";\n\nimport {\n\tgetValueFromOverride,\n\tterminate,\n\tsaveNodeType,\n\tisHoverForInteractiveType,\n} from \"./utils\";\n\nimport EachLinearRegressionChannel from \"./wrapper/EachLinearRegressionChannel\";\nimport MouseLocationIndicator from \"./components/MouseLocationIndicator\";\nimport HoverTextNearMouse from \"./components/HoverTextNearMouse\";\n\nclass StandardDeviationChannel extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\n\t\tthis.handleStart = this.handleStart.bind(this);\n\t\tthis.handleEnd = this.handleEnd.bind(this);\n\t\tthis.handleDrawLine = this.handleDrawLine.bind(this);\n\t\tthis.handleDragLine = this.handleDragLine.bind(this);\n\t\tthis.handleDragLineComplete = this.handleDragLineComplete.bind(this);\n\n\t\tthis.terminate = terminate.bind(this);\n\t\tthis.saveNodeType = saveNodeType.bind(this);\n\n\t\tthis.getSelectionState = isHoverForInteractiveType(\"channels\")\n\t\t\t.bind(this);\n\n\t\tthis.nodes = [];\n\t\tthis.state = {};\n\t}\n\thandleDragLine(index, newXYValue) {\n\t\tthis.setState({\n\t\t\toverride: {\n\t\t\t\tindex,\n\t\t\t\t...newXYValue\n\t\t\t}\n\t\t});\n\t}\n\thandleDragLineComplete(moreProps) {\n\t\tconst { override } = this.state;\n\t\tconst { channels } = this.props;\n\t\tif (isDefined(override)) {\n\n\t\t\tconst newChannels = channels\n\t\t\t\t.map((each, idx) => idx === override.index\n\t\t\t\t\t? {\n\t\t\t\t\t\t...each,\n\t\t\t\t\t\tstart: [override.x1Value, override.y1Value],\n\t\t\t\t\t\tend: [override.x2Value, override.y2Value],\n\t\t\t\t\t\tselected: true,\n\t\t\t\t\t}\n\t\t\t\t\t: each);\n\t\t\tthis.setState({\n\t\t\t\toverride: null,\n\t\t\t}, () => {\n\t\t\t\tthis.props.onComplete(newChannels, moreProps);\n\t\t\t});\n\t\t}\n\t}\n\thandleDrawLine(xyValue) {\n\t\tconst { current } = this.state;\n\n\t\tif (isDefined(current) && isDefined(current.start)) {\n\t\t\tthis.mouseMoved = true;\n\t\t\tconsole.log(xyValue);\n\t\t\tthis.setState({\n\t\t\t\tcurrent: {\n\t\t\t\t\tstart: current.start,\n\t\t\t\t\tend: xyValue,\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\thandleStart(xyValue) {\n\t\tconst { current } = this.state;\n\n\t\tif (isNotDefined(current) || isNotDefined(current.start)) {\n\t\t\tthis.mouseMoved = false;\n\n\t\t\tthis.setState({\n\t\t\t\tcurrent: {\n\t\t\t\t\tstart: xyValue,\n\t\t\t\t\tend: null,\n\t\t\t\t}\n\t\t\t}, () => {\n\t\t\t\tthis.props.onStart();\n\t\t\t});\n\t\t}\n\t}\n\thandleEnd(xyValue, moreProps, e) {\n\t\tconst { current } = this.state;\n\t\tconst { appearance, channels } = this.props;\n\n\t\tif (this.mouseMoved\n\t\t\t&& isDefined(current)\n\t\t\t&& isDefined(current.start)\n\t\t) {\n\t\t\tconst newChannels = [\n\t\t\t\t...channels.map(d => ({ ...d, selected: false })),\n\t\t\t\t{\n\t\t\t\t\tstart: current.start,\n\t\t\t\t\tend: xyValue,\n\t\t\t\t\tselected: true,\n\t\t\t\t\tappearance,\n\t\t\t\t}\n\t\t\t];\n\n\t\t\tthis.setState({\n\t\t\t\tcurrent: null,\n\t\t\t}, () => {\n\t\t\t\tthis.props.onComplete(newChannels, moreProps, e);\n\t\t\t});\n\t\t}\n\t}\n\trender() {\n\t\tconst { appearance } = this.props;\n\t\tconst { enabled, snapTo } = this.props;\n\t\tconst { currentPositionRadius, currentPositionStroke } = this.props;\n\t\tconst { currentPositionOpacity, currentPositionStrokeWidth } = this.props;\n\t\tconst { hoverText, channels } = this.props;\n\t\tconst { current, override } = this.state;\n\n\t\tconst tempLine = isDefined(current) && isDefined(current.end)\n\t\t\t? \n\t\t\t: null;\n\n\t\treturn \n\t\t\t{channels.map((each, idx) => {\n\t\t\t\tconst eachAppearance = isDefined(each.appearance)\n\t\t\t\t\t? { ...appearance, ...each.appearance }\n\t\t\t\t\t: appearance;\n\n\t\t\t\treturn ;\n\t\t\t})}\n\t\t\t{tempLine}\n\t\t\t\n\t\t;\n\t}\n}\n\nStandardDeviationChannel.propTypes = {\n\tenabled: PropTypes.bool.isRequired,\n\tsnapTo: PropTypes.func.isRequired,\n\n\tonStart: PropTypes.func.isRequired,\n\tonComplete: PropTypes.func.isRequired,\n\tonSelect: PropTypes.func,\n\n\tcurrentPositionStroke: PropTypes.string,\n\tcurrentPositionStrokeWidth: PropTypes.number,\n\tcurrentPositionOpacity: PropTypes.number,\n\tcurrentPositionRadius: PropTypes.number,\n\n\tappearance: PropTypes.shape({\n\t\tstroke: PropTypes.string.isRequired,\n\t\tstrokeOpacity: PropTypes.number.isRequired,\n\t\tstrokeWidth: PropTypes.number.isRequired,\n\t\tfill: PropTypes.string.isRequired,\n\t\tfillOpacity: PropTypes.number.isRequired,\n\t\tedgeStrokeWidth: PropTypes.number.isRequired,\n\t\tedgeStroke: PropTypes.string.isRequired,\n\t\tedgeFill: PropTypes.string.isRequired,\n\t\tr: PropTypes.number.isRequired,\n\t}).isRequired,\n\n\thoverText: PropTypes.object.isRequired,\n\tchannels: PropTypes.array.isRequired,\n};\n\nStandardDeviationChannel.defaultProps = {\n\tsnapTo: d => d.close,\n\tappearance: {\n\t\tstroke: \"#000000\",\n\t\tfillOpacity: 0.2,\n\t\tstrokeOpacity: 1,\n\t\tstrokeWidth: 1,\n\t\tfill: \"#8AAFE2\",\n\t\tedgeStrokeWidth: 2,\n\t\tedgeStroke: \"#000000\",\n\t\tedgeFill: \"#FFFFFF\",\n\t\tr: 5,\n\t},\n\n\tonStart: noop,\n\tonComplete: noop,\n\tonSelect: noop,\n\n\tcurrentPositionStroke: \"#000000\",\n\tcurrentPositionOpacity: 1,\n\tcurrentPositionStrokeWidth: 3,\n\tcurrentPositionRadius: 4,\n\n\thoverText: {\n\t\t...HoverTextNearMouse.defaultProps,\n\t\tenable: true,\n\t\tbgHeight: 18,\n\t\tbgWidth: 175,\n\t\ttext: \"Click and drag the edge circles\",\n\t},\n\tchannels: [],\n};\n\nexport default StandardDeviationChannel;\n"]} \ No newline at end of file +{"version":3,"sources":["../../../src/lib/interactive/StandardDeviationChannel.js"],"names":["StandardDeviationChannel","props","handleStart","bind","handleEnd","handleDrawLine","handleDragLine","handleDragLineComplete","terminate","saveNodeType","getSelectionState","nodes","state","index","newXYValue","setState","override","moreProps","channels","newChannels","map","each","idx","start","x1Value","y1Value","end","x2Value","y2Value","selected","onComplete","xyValue","current","mouseMoved","onStart","e","appearance","d","enabled","snapTo","currentPositionRadius","currentPositionStroke","currentPositionOpacity","currentPositionStrokeWidth","hoverText","eachDefaultAppearance","defaultProps","hoverTextDefault","tempLine","eachAppearance","eachHoverText","propTypes","bool","isRequired","func","onSelect","string","number","shape","stroke","strokeOpacity","strokeWidth","fill","fillOpacity","edgeStrokeWidth","edgeStroke","edgeFill","r","object","array","close","enable","bgHeight","bgWidth","text","selectedText"],"mappings":"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","file":"StandardDeviationChannel.js","sourcesContent":["\n\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport { isDefined, isNotDefined, noop } from \"../utils\";\n\nimport {\n\tgetValueFromOverride,\n\tterminate,\n\tsaveNodeType,\n\tisHoverForInteractiveType,\n} from \"./utils\";\n\nimport EachLinearRegressionChannel from \"./wrapper/EachLinearRegressionChannel\";\nimport MouseLocationIndicator from \"./components/MouseLocationIndicator\";\nimport HoverTextNearMouse from \"./components/HoverTextNearMouse\";\n\nclass StandardDeviationChannel extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\n\t\tthis.handleStart = this.handleStart.bind(this);\n\t\tthis.handleEnd = this.handleEnd.bind(this);\n\t\tthis.handleDrawLine = this.handleDrawLine.bind(this);\n\t\tthis.handleDragLine = this.handleDragLine.bind(this);\n\t\tthis.handleDragLineComplete = this.handleDragLineComplete.bind(this);\n\n\t\tthis.terminate = terminate.bind(this);\n\t\tthis.saveNodeType = saveNodeType.bind(this);\n\n\t\tthis.getSelectionState = isHoverForInteractiveType(\"channels\")\n\t\t\t.bind(this);\n\n\t\tthis.nodes = [];\n\t\tthis.state = {};\n\t}\n\thandleDragLine(index, newXYValue) {\n\t\tthis.setState({\n\t\t\toverride: {\n\t\t\t\tindex,\n\t\t\t\t...newXYValue\n\t\t\t}\n\t\t});\n\t}\n\thandleDragLineComplete(moreProps) {\n\t\tconst { override } = this.state;\n\t\tconst { channels } = this.props;\n\t\tif (isDefined(override)) {\n\n\t\t\tconst newChannels = channels\n\t\t\t\t.map((each, idx) => idx === override.index\n\t\t\t\t\t? {\n\t\t\t\t\t\t...each,\n\t\t\t\t\t\tstart: [override.x1Value, override.y1Value],\n\t\t\t\t\t\tend: [override.x2Value, override.y2Value],\n\t\t\t\t\t\tselected: true,\n\t\t\t\t\t}\n\t\t\t\t\t: each);\n\t\t\tthis.setState({\n\t\t\t\toverride: null,\n\t\t\t}, () => {\n\t\t\t\tthis.props.onComplete(newChannels, moreProps);\n\t\t\t});\n\t\t}\n\t}\n\thandleDrawLine(xyValue) {\n\t\tconst { current } = this.state;\n\n\t\tif (isDefined(current) && isDefined(current.start)) {\n\t\t\tthis.mouseMoved = true;\n\t\t\tthis.setState({\n\t\t\t\tcurrent: {\n\t\t\t\t\tstart: current.start,\n\t\t\t\t\tend: xyValue,\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\thandleStart(xyValue) {\n\t\tconst { current } = this.state;\n\n\t\tif (isNotDefined(current) || isNotDefined(current.start)) {\n\t\t\tthis.mouseMoved = false;\n\n\t\t\tthis.setState({\n\t\t\t\tcurrent: {\n\t\t\t\t\tstart: xyValue,\n\t\t\t\t\tend: null,\n\t\t\t\t}\n\t\t\t}, () => {\n\t\t\t\tthis.props.onStart();\n\t\t\t});\n\t\t}\n\t}\n\thandleEnd(xyValue, moreProps, e) {\n\t\tconst { current } = this.state;\n\t\tconst { appearance, channels } = this.props;\n\n\t\tif (this.mouseMoved\n\t\t\t&& isDefined(current)\n\t\t\t&& isDefined(current.start)\n\t\t) {\n\t\t\tconst newChannels = [\n\t\t\t\t...channels.map(d => ({ ...d, selected: false })),\n\t\t\t\t{\n\t\t\t\t\tstart: current.start,\n\t\t\t\t\tend: xyValue,\n\t\t\t\t\tselected: true,\n\t\t\t\t\tappearance,\n\t\t\t\t}\n\t\t\t];\n\n\t\t\tthis.setState({\n\t\t\t\tcurrent: null,\n\t\t\t}, () => {\n\t\t\t\tthis.props.onComplete(newChannels, moreProps, e);\n\t\t\t});\n\t\t}\n\t}\n\trender() {\n\t\tconst { appearance } = this.props;\n\t\tconst { enabled, snapTo } = this.props;\n\t\tconst { currentPositionRadius, currentPositionStroke } = this.props;\n\t\tconst { currentPositionOpacity, currentPositionStrokeWidth } = this.props;\n\t\tconst { hoverText, channels } = this.props;\n\t\tconst { current, override } = this.state;\n\n\t\tconst eachDefaultAppearance = {\n\t\t\t...StandardDeviationChannel.defaultProps.appearance,\n\t\t\t...appearance\n\t\t};\n\n\t\tconst hoverTextDefault = {\n\t\t\t...StandardDeviationChannel.defaultProps.hoverText,\n\t\t\t...hoverText\n\t\t};\n\n\t\tconst tempLine = isDefined(current) && isDefined(current.end)\n\t\t\t? \n\t\t\t: null;\n\n\t\treturn \n\t\t\t{channels.map((each, idx) => {\n\t\t\t\tconst eachAppearance = isDefined(each.appearance)\n\t\t\t\t\t? { ...eachDefaultAppearance, ...each.appearance }\n\t\t\t\t\t: eachDefaultAppearance;\n\n\t\t\t\tconst eachHoverText = isDefined(each.hoverText)\n\t\t\t\t\t? { ...hoverTextDefault, ...each.hoverText }\n\t\t\t\t\t: hoverTextDefault;\n\n\t\t\t\treturn ;\n\t\t\t})}\n\t\t\t{tempLine}\n\t\t\t\n\t\t;\n\t}\n}\n\nStandardDeviationChannel.propTypes = {\n\tenabled: PropTypes.bool.isRequired,\n\tsnapTo: PropTypes.func,\n\n\tonStart: PropTypes.func,\n\tonComplete: PropTypes.func.isRequired,\n\tonSelect: PropTypes.func,\n\n\tcurrentPositionStroke: PropTypes.string,\n\tcurrentPositionStrokeWidth: PropTypes.number,\n\tcurrentPositionOpacity: PropTypes.number,\n\tcurrentPositionRadius: PropTypes.number,\n\n\tappearance: PropTypes.shape({\n\t\tstroke: PropTypes.string,\n\t\tstrokeOpacity: PropTypes.number,\n\t\tstrokeWidth: PropTypes.number,\n\t\tfill: PropTypes.string,\n\t\tfillOpacity: PropTypes.number,\n\t\tedgeStrokeWidth: PropTypes.number,\n\t\tedgeStroke: PropTypes.string,\n\t\tedgeFill: PropTypes.string,\n\t\tr: PropTypes.number,\n\t}).isRequired,\n\n\thoverText: PropTypes.object,\n\tchannels: PropTypes.array.isRequired,\n};\n\nStandardDeviationChannel.defaultProps = {\n\tsnapTo: d => d.close,\n\tappearance: {\n\t\tstroke: \"#000000\",\n\t\tfillOpacity: 0.2,\n\t\tstrokeOpacity: 1,\n\t\tstrokeWidth: 1,\n\t\tfill: \"#8AAFE2\",\n\t\tedgeStrokeWidth: 2,\n\t\tedgeStroke: \"#000000\",\n\t\tedgeFill: \"#FFFFFF\",\n\t\tr: 5,\n\t},\n\n\tonStart: noop,\n\tonComplete: noop,\n\tonSelect: noop,\n\n\tcurrentPositionStroke: \"#000000\",\n\tcurrentPositionOpacity: 1,\n\tcurrentPositionStrokeWidth: 3,\n\tcurrentPositionRadius: 4,\n\n\thoverText: {\n\t\t...HoverTextNearMouse.defaultProps,\n\t\tenable: true,\n\t\tbgHeight: \"auto\",\n\t\tbgWidth: \"auto\",\n\t\ttext: \"Click and drag the edge circles\",\n\t\tselectedText: \"\"\n\t},\n\tchannels: [],\n};\n\nexport default StandardDeviationChannel;\n"]} \ No newline at end of file diff --git a/lib/interactive/TrendLine.js b/lib/interactive/TrendLine.js index 30177cd..dddcf6b 100644 --- a/lib/interactive/TrendLine.js +++ b/lib/interactive/TrendLine.js @@ -214,6 +214,8 @@ var TrendLine = function (_Component) { trends.map(function (each, idx) { var eachAppearance = (0, _utils.isDefined)(each.appearance) ? _extends({}, appearance, each.appearance) : appearance; + var hoverTextWithDefault = _extends({}, TrendLine.defaultProps.hoverText, hoverText); + return _react2.default.createElement(_EachTrendLine2.default, { key: idx, ref: _this5.saveNodeType(idx), index: idx, @@ -231,7 +233,7 @@ var TrendLine = function (_Component) { edgeFill: eachAppearance.edgeFill, edgeStrokeWidth: eachAppearance.edgeStrokeWidth, r: eachAppearance.r, - hoverText: hoverText, + hoverText: hoverTextWithDefault, onDrag: _this5.handleDragLine, onDragComplete: _this5.handleDragLineComplete, edgeInteractiveCursor: "react-stockcharts-move-cursor", @@ -309,9 +311,10 @@ TrendLine.defaultProps = { }, hoverText: _extends({}, _HoverTextNearMouse2.default.defaultProps, { enable: true, - bgHeight: 18, - bgWidth: 120, - text: "Click to select object" + bgHeight: "auto", + bgWidth: "auto", + text: "Click to select object", + selectedText: "" }), trends: [], diff --git a/lib/interactive/TrendLine.js.map b/lib/interactive/TrendLine.js.map index b006a29..521d069 100644 --- a/lib/interactive/TrendLine.js.map +++ b/lib/interactive/TrendLine.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../../src/lib/interactive/TrendLine.js"],"names":["TrendLine","props","handleStart","bind","handleEnd","handleDrawLine","handleDragLine","handleDragLineComplete","terminate","saveNodeType","getSelectionState","state","nodes","index","newXYValue","setState","override","moreProps","trends","newTrends","map","each","idx","start","x1Value","y1Value","end","x2Value","y2Value","selected","onComplete","xyValue","current","mouseMoved","e","onStart","appearance","type","d","enabled","snap","shouldDisableSnap","snapTo","currentPositionRadius","currentPositionStroke","currentPositionstrokeOpacity","currentPositionStrokeWidth","hoverText","tempLine","stroke","strokeWidth","strokeOpacity","eachAppearance","strokeDasharray","edgeStroke","edgeFill","edgeStrokeWidth","r","propTypes","bool","isRequired","func","onSelect","string","number","oneOf","object","array","shape","defaultProps","button","shiftKey","enable","bgHeight","bgWidth","text"],"mappings":"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","file":"TrendLine.js","sourcesContent":["\n\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport { isDefined, isNotDefined, noop, strokeDashTypes } from \"../utils\";\n\nimport {\n\tgetValueFromOverride,\n\tterminate,\n\tsaveNodeType,\n\tisHoverForInteractiveType,\n} from \"./utils\";\n\nimport EachTrendLine from \"./wrapper/EachTrendLine\";\nimport StraightLine from \"./components/StraightLine\";\nimport MouseLocationIndicator from \"./components/MouseLocationIndicator\";\nimport HoverTextNearMouse from \"./components/HoverTextNearMouse\";\n\nclass TrendLine extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\n\t\tthis.handleStart = this.handleStart.bind(this);\n\t\tthis.handleEnd = this.handleEnd.bind(this);\n\t\tthis.handleDrawLine = this.handleDrawLine.bind(this);\n\t\tthis.handleDragLine = this.handleDragLine.bind(this);\n\t\tthis.handleDragLineComplete = this.handleDragLineComplete.bind(this);\n\n\t\tthis.terminate = terminate.bind(this);\n\t\tthis.saveNodeType = saveNodeType.bind(this);\n\n\t\tthis.getSelectionState = isHoverForInteractiveType(\"trends\")\n\t\t\t.bind(this);\n\n\t\tthis.state = {\n\t\t};\n\t\tthis.nodes = [];\n\t}\n\thandleDragLine(index, newXYValue) {\n\t\tthis.setState({\n\t\t\toverride: {\n\t\t\t\tindex,\n\t\t\t\t...newXYValue\n\t\t\t}\n\t\t});\n\t}\n\thandleDragLineComplete(moreProps) {\n\t\tconst { override } = this.state;\n\t\tif (isDefined(override)) {\n\t\t\tconst { trends } = this.props;\n\t\t\tconst newTrends = trends\n\t\t\t\t.map((each, idx) => idx === override.index\n\t\t\t\t\t? {\n\t\t\t\t\t\t...each,\n\t\t\t\t\t\tstart: [override.x1Value, override.y1Value],\n\t\t\t\t\t\tend: [override.x2Value, override.y2Value],\n\t\t\t\t\t\tselected: true,\n\t\t\t\t\t}\n\t\t\t\t\t: {\n\t\t\t\t\t\t...each,\n\t\t\t\t\t\tselected: false,\n\t\t\t\t\t});\n\n\t\t\tthis.setState({\n\t\t\t\toverride: null,\n\t\t\t}, () => {\n\t\t\t\tthis.props.onComplete(newTrends, moreProps);\n\t\t\t});\n\t\t}\n\t}\n\thandleDrawLine(xyValue) {\n\t\tconst { current } = this.state;\n\t\tif (isDefined(current) && isDefined(current.start)) {\n\t\t\tthis.mouseMoved = true;\n\t\t\tthis.setState({\n\t\t\t\tcurrent: {\n\t\t\t\t\tstart: current.start,\n\t\t\t\t\tend: xyValue,\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\thandleStart(xyValue, moreProps, e) {\n\t\tconst { current } = this.state;\n\n\t\tif (isNotDefined(current) || isNotDefined(current.start)) {\n\t\t\tthis.mouseMoved = false;\n\n\t\t\tthis.setState({\n\t\t\t\tcurrent: {\n\t\t\t\t\tstart: xyValue,\n\t\t\t\t\tend: null,\n\t\t\t\t},\n\t\t\t}, () => {\n\t\t\t\tthis.props.onStart(moreProps, e);\n\t\t\t});\n\t\t}\n\t}\n\thandleEnd(xyValue, moreProps, e) {\n\t\tconst { current } = this.state;\n\t\tconst { trends, appearance, type } = this.props;\n\n\t\tif (this.mouseMoved\n\t\t\t&& isDefined(current)\n\t\t\t&& isDefined(current.start)\n\t\t) {\n\t\t\tconst newTrends = [\n\t\t\t\t...trends.map(d => ({ ...d, selected: false })),\n\t\t\t\t{\n\t\t\t\t\tstart: current.start,\n\t\t\t\t\tend: xyValue,\n\t\t\t\t\tselected: true,\n\t\t\t\t\tappearance,\n\t\t\t\t\ttype,\n\t\t\t\t}\n\t\t\t];\n\t\t\tthis.setState({\n\t\t\t\tcurrent: null,\n\t\t\t\ttrends: newTrends\n\t\t\t}, () => {\n\t\t\t\tthis.props.onComplete(newTrends, moreProps, e);\n\t\t\t});\n\t\t}\n\t}\n\trender() {\n\t\tconst { appearance } = this.props;\n\t\tconst { enabled, snap, shouldDisableSnap, snapTo, type } = this.props;\n\t\tconst { currentPositionRadius, currentPositionStroke } = this.props;\n\t\tconst { currentPositionstrokeOpacity, currentPositionStrokeWidth } = this.props;\n\t\tconst { hoverText, trends } = this.props;\n\t\tconst { current, override } = this.state;\n\n\t\tconst tempLine = isDefined(current) && isDefined(current.end)\n\t\t\t? \n\t\t\t: null;\n\n\t\treturn \n\t\t\t{trends.map((each, idx) => {\n\t\t\t\tconst eachAppearance = isDefined(each.appearance)\n\t\t\t\t\t? { ...appearance, ...each.appearance }\n\t\t\t\t\t: appearance;\n\n\t\t\t\treturn ;\n\t\t\t})}\n\t\t\t{tempLine}\n\t\t\t\n\t\t;\n\t}\n}\n\n\nTrendLine.propTypes = {\n\tsnap: PropTypes.bool.isRequired,\n\tenabled: PropTypes.bool.isRequired,\n\tsnapTo: PropTypes.func,\n\tshouldDisableSnap: PropTypes.func.isRequired,\n\n\tonStart: PropTypes.func.isRequired,\n\tonComplete: PropTypes.func.isRequired,\n\tonSelect: PropTypes.func,\n\n\tcurrentPositionStroke: PropTypes.string,\n\tcurrentPositionStrokeWidth: PropTypes.number,\n\tcurrentPositionstrokeOpacity: PropTypes.number,\n\tcurrentPositionRadius: PropTypes.number,\n\ttype: PropTypes.oneOf([\n\t\t\"XLINE\", // extends from -Infinity to +Infinity\n\t\t\"RAY\", // extends to +/-Infinity in one direction\n\t\t\"LINE\", // extends between the set bounds\n\t]),\n\thoverText: PropTypes.object.isRequired,\n\n\ttrends: PropTypes.array.isRequired,\n\n\tappearance: PropTypes.shape({\n\t\tstroke: PropTypes.string.isRequired,\n\t\tstrokeOpacity: PropTypes.number.isRequired,\n\t\tstrokeWidth: PropTypes.number.isRequired,\n\t\tstrokeDasharray: PropTypes.oneOf(strokeDashTypes),\n\t\tedgeStrokeWidth: PropTypes.number.isRequired,\n\t\tedgeFill: PropTypes.string.isRequired,\n\t\tedgeStroke: PropTypes.string.isRequired,\n\t}).isRequired\n};\n\nTrendLine.defaultProps = {\n\ttype: \"XLINE\",\n\n\tonStart: noop,\n\tonComplete: noop,\n\tonSelect: noop,\n\n\tcurrentPositionStroke: \"#000000\",\n\tcurrentPositionstrokeOpacity: 1,\n\tcurrentPositionStrokeWidth: 3,\n\tcurrentPositionRadius: 0,\n\n\tshouldDisableSnap: e => (e.button === 2 || e.shiftKey),\n\thoverText: {\n\t\t...HoverTextNearMouse.defaultProps,\n\t\tenable: true,\n\t\tbgHeight: 18,\n\t\tbgWidth: 120,\n\t\ttext: \"Click to select object\",\n\t},\n\ttrends: [],\n\n\tappearance: {\n\t\tstroke: \"#000000\",\n\t\tstrokeOpacity: 1,\n\t\tstrokeWidth: 1,\n\t\tstrokeDasharray: \"Solid\",\n\t\tedgeStrokeWidth: 1,\n\t\tedgeFill: \"#FFFFFF\",\n\t\tedgeStroke: \"#000000\",\n\t\tr: 6,\n\t}\n};\n\nexport default TrendLine;\n"]} \ No newline at end of file +{"version":3,"sources":["../../../src/lib/interactive/TrendLine.js"],"names":["TrendLine","props","handleStart","bind","handleEnd","handleDrawLine","handleDragLine","handleDragLineComplete","terminate","saveNodeType","getSelectionState","state","nodes","index","newXYValue","setState","override","moreProps","trends","newTrends","map","each","idx","start","x1Value","y1Value","end","x2Value","y2Value","selected","onComplete","xyValue","current","mouseMoved","e","onStart","appearance","type","d","enabled","snap","shouldDisableSnap","snapTo","currentPositionRadius","currentPositionStroke","currentPositionstrokeOpacity","currentPositionStrokeWidth","hoverText","tempLine","stroke","strokeWidth","strokeOpacity","eachAppearance","hoverTextWithDefault","defaultProps","strokeDasharray","edgeStroke","edgeFill","edgeStrokeWidth","r","propTypes","bool","isRequired","func","onSelect","string","number","oneOf","object","array","shape","button","shiftKey","enable","bgHeight","bgWidth","text","selectedText"],"mappings":"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","file":"TrendLine.js","sourcesContent":["\n\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport { isDefined, isNotDefined, noop, strokeDashTypes } from \"../utils\";\n\nimport {\n\tgetValueFromOverride,\n\tterminate,\n\tsaveNodeType,\n\tisHoverForInteractiveType,\n} from \"./utils\";\n\nimport EachTrendLine from \"./wrapper/EachTrendLine\";\nimport StraightLine from \"./components/StraightLine\";\nimport MouseLocationIndicator from \"./components/MouseLocationIndicator\";\nimport HoverTextNearMouse from \"./components/HoverTextNearMouse\";\n\nclass TrendLine extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\n\t\tthis.handleStart = this.handleStart.bind(this);\n\t\tthis.handleEnd = this.handleEnd.bind(this);\n\t\tthis.handleDrawLine = this.handleDrawLine.bind(this);\n\t\tthis.handleDragLine = this.handleDragLine.bind(this);\n\t\tthis.handleDragLineComplete = this.handleDragLineComplete.bind(this);\n\n\t\tthis.terminate = terminate.bind(this);\n\t\tthis.saveNodeType = saveNodeType.bind(this);\n\n\t\tthis.getSelectionState = isHoverForInteractiveType(\"trends\")\n\t\t\t.bind(this);\n\n\t\tthis.state = {\n\t\t};\n\t\tthis.nodes = [];\n\t}\n\thandleDragLine(index, newXYValue) {\n\t\tthis.setState({\n\t\t\toverride: {\n\t\t\t\tindex,\n\t\t\t\t...newXYValue\n\t\t\t}\n\t\t});\n\t}\n\thandleDragLineComplete(moreProps) {\n\t\tconst { override } = this.state;\n\t\tif (isDefined(override)) {\n\t\t\tconst { trends } = this.props;\n\t\t\tconst newTrends = trends\n\t\t\t\t.map((each, idx) => idx === override.index\n\t\t\t\t\t? {\n\t\t\t\t\t\t...each,\n\t\t\t\t\t\tstart: [override.x1Value, override.y1Value],\n\t\t\t\t\t\tend: [override.x2Value, override.y2Value],\n\t\t\t\t\t\tselected: true,\n\t\t\t\t\t}\n\t\t\t\t\t: {\n\t\t\t\t\t\t...each,\n\t\t\t\t\t\tselected: false,\n\t\t\t\t\t});\n\n\t\t\tthis.setState({\n\t\t\t\toverride: null,\n\t\t\t}, () => {\n\t\t\t\tthis.props.onComplete(newTrends, moreProps);\n\t\t\t});\n\t\t}\n\t}\n\thandleDrawLine(xyValue) {\n\t\tconst { current } = this.state;\n\t\tif (isDefined(current) && isDefined(current.start)) {\n\t\t\tthis.mouseMoved = true;\n\t\t\tthis.setState({\n\t\t\t\tcurrent: {\n\t\t\t\t\tstart: current.start,\n\t\t\t\t\tend: xyValue,\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\thandleStart(xyValue, moreProps, e) {\n\t\tconst { current } = this.state;\n\n\t\tif (isNotDefined(current) || isNotDefined(current.start)) {\n\t\t\tthis.mouseMoved = false;\n\n\t\t\tthis.setState({\n\t\t\t\tcurrent: {\n\t\t\t\t\tstart: xyValue,\n\t\t\t\t\tend: null,\n\t\t\t\t},\n\t\t\t}, () => {\n\t\t\t\tthis.props.onStart(moreProps, e);\n\t\t\t});\n\t\t}\n\t}\n\thandleEnd(xyValue, moreProps, e) {\n\t\tconst { current } = this.state;\n\t\tconst { trends, appearance, type } = this.props;\n\n\t\tif (this.mouseMoved\n\t\t\t&& isDefined(current)\n\t\t\t&& isDefined(current.start)\n\t\t) {\n\t\t\tconst newTrends = [\n\t\t\t\t...trends.map(d => ({ ...d, selected: false })),\n\t\t\t\t{\n\t\t\t\t\tstart: current.start,\n\t\t\t\t\tend: xyValue,\n\t\t\t\t\tselected: true,\n\t\t\t\t\tappearance,\n\t\t\t\t\ttype,\n\t\t\t\t}\n\t\t\t];\n\t\t\tthis.setState({\n\t\t\t\tcurrent: null,\n\t\t\t\ttrends: newTrends\n\t\t\t}, () => {\n\t\t\t\tthis.props.onComplete(newTrends, moreProps, e);\n\t\t\t});\n\t\t}\n\t}\n\trender() {\n\t\tconst { appearance } = this.props;\n\t\tconst { enabled, snap, shouldDisableSnap, snapTo, type } = this.props;\n\t\tconst { currentPositionRadius, currentPositionStroke } = this.props;\n\t\tconst { currentPositionstrokeOpacity, currentPositionStrokeWidth } = this.props;\n\t\tconst { hoverText, trends } = this.props;\n\t\tconst { current, override } = this.state;\n\n\t\tconst tempLine = isDefined(current) && isDefined(current.end)\n\t\t\t? \n\t\t\t: null;\n\n\t\treturn \n\t\t\t{trends.map((each, idx) => {\n\t\t\t\tconst eachAppearance = isDefined(each.appearance)\n\t\t\t\t\t? { ...appearance, ...each.appearance }\n\t\t\t\t\t: appearance;\n\n\t\t\t\tconst hoverTextWithDefault = {\n\t\t\t\t\t...TrendLine.defaultProps.hoverText,\n\t\t\t\t\t...hoverText\n\t\t\t\t};\n\n\t\t\t\treturn ;\n\t\t\t})}\n\t\t\t{tempLine}\n\t\t\t\n\t\t;\n\t}\n}\n\n\nTrendLine.propTypes = {\n\tsnap: PropTypes.bool.isRequired,\n\tenabled: PropTypes.bool.isRequired,\n\tsnapTo: PropTypes.func,\n\tshouldDisableSnap: PropTypes.func.isRequired,\n\n\tonStart: PropTypes.func.isRequired,\n\tonComplete: PropTypes.func.isRequired,\n\tonSelect: PropTypes.func,\n\n\tcurrentPositionStroke: PropTypes.string,\n\tcurrentPositionStrokeWidth: PropTypes.number,\n\tcurrentPositionstrokeOpacity: PropTypes.number,\n\tcurrentPositionRadius: PropTypes.number,\n\ttype: PropTypes.oneOf([\n\t\t\"XLINE\", // extends from -Infinity to +Infinity\n\t\t\"RAY\", // extends to +/-Infinity in one direction\n\t\t\"LINE\", // extends between the set bounds\n\t]),\n\thoverText: PropTypes.object.isRequired,\n\n\ttrends: PropTypes.array.isRequired,\n\n\tappearance: PropTypes.shape({\n\t\tstroke: PropTypes.string.isRequired,\n\t\tstrokeOpacity: PropTypes.number.isRequired,\n\t\tstrokeWidth: PropTypes.number.isRequired,\n\t\tstrokeDasharray: PropTypes.oneOf(strokeDashTypes),\n\t\tedgeStrokeWidth: PropTypes.number.isRequired,\n\t\tedgeFill: PropTypes.string.isRequired,\n\t\tedgeStroke: PropTypes.string.isRequired,\n\t}).isRequired\n};\n\nTrendLine.defaultProps = {\n\ttype: \"XLINE\",\n\n\tonStart: noop,\n\tonComplete: noop,\n\tonSelect: noop,\n\n\tcurrentPositionStroke: \"#000000\",\n\tcurrentPositionstrokeOpacity: 1,\n\tcurrentPositionStrokeWidth: 3,\n\tcurrentPositionRadius: 0,\n\n\tshouldDisableSnap: e => (e.button === 2 || e.shiftKey),\n\thoverText: {\n\t\t...HoverTextNearMouse.defaultProps,\n\t\tenable: true,\n\t\tbgHeight: \"auto\",\n\t\tbgWidth: \"auto\",\n\t\ttext: \"Click to select object\",\n\t\tselectedText: \"\",\n\t},\n\ttrends: [],\n\n\tappearance: {\n\t\tstroke: \"#000000\",\n\t\tstrokeOpacity: 1,\n\t\tstrokeWidth: 1,\n\t\tstrokeDasharray: \"Solid\",\n\t\tedgeStrokeWidth: 1,\n\t\tedgeFill: \"#FFFFFF\",\n\t\tedgeStroke: \"#000000\",\n\t\tr: 6,\n\t}\n};\n\nexport default TrendLine;\n"]} \ No newline at end of file diff --git a/lib/interactive/components/HoverTextNearMouse.js b/lib/interactive/components/HoverTextNearMouse.js index fba62c6..4563c20 100644 --- a/lib/interactive/components/HoverTextNearMouse.js +++ b/lib/interactive/components/HoverTextNearMouse.js @@ -22,8 +22,6 @@ var _GenericChartComponent = require("../../GenericChartComponent"); var _GenericChartComponent2 = _interopRequireDefault(_GenericChartComponent); -var _GenericComponent = require("../../GenericComponent"); - var _utils = require("../../utils"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } @@ -35,6 +33,7 @@ function _possibleConstructorReturn(self, call) { if (!self) { throw new Referen function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } var PADDING = 10; +var MIN_WIDTH = PADDING; var HoverTextNearMouse = function (_Component) { _inherits(HoverTextNearMouse, _Component); @@ -44,42 +43,83 @@ var HoverTextNearMouse = function (_Component) { var _this = _possibleConstructorReturn(this, (HoverTextNearMouse.__proto__ || Object.getPrototypeOf(HoverTextNearMouse)).call(this, props)); + _this.state = { + textWidth: undefined, + textHeight: undefined + }; + + _this.saveNode = _this.saveNode.bind(_this); + _this.updateTextSize = _this.updateTextSize.bind(_this); _this.renderSVG = _this.renderSVG.bind(_this); - _this.drawOnCanvas = _this.drawOnCanvas.bind(_this); return _this; } _createClass(HoverTextNearMouse, [{ - key: "drawOnCanvas", - value: function drawOnCanvas(ctx, moreProps) { + key: "saveNode", + value: function saveNode(node) { + this.textNode = node; + } + }, { + key: "updateTextSize", + value: function updateTextSize() { var _props = this.props, - fontFamily = _props.fontFamily, - fontSize = _props.fontSize, - fill = _props.fill, - bgFill = _props.bgFill, - bgOpacity = _props.bgOpacity; - - // console.log(moreProps) - - var textMetaData = helper(this.props, moreProps); - - if ((0, _utils.isDefined)(textMetaData)) { - var rect = textMetaData.rect, - text = textMetaData.text; - - - ctx.strokeStyle = bgFill; - ctx.fillStyle = (0, _utils.hexToRGBA)(bgFill, bgOpacity); - ctx.beginPath(); - ctx.rect(rect.x, rect.y, rect.width, rect.height); - ctx.fill(); - ctx.stroke(); - - ctx.font = fontSize + "px " + fontFamily; - ctx.fillStyle = fill; - ctx.beginPath(); - - ctx.fillText(text.text, text.x, text.y); + bgWidth = _props.bgWidth, + bgHeight = _props.bgHeight; + + if (bgWidth === "auto" || bgHeight === "auto") { + var textNode = this.textNode; + if (textNode) { + var _textNode$getBBox = textNode.getBBox(), + width = _textNode$getBBox.width, + height = _textNode$getBBox.height; + + if (this.state.textWidth !== width || this.state.textHeight !== height) { + this.setState({ + textWidth: width, + textHeight: height + }); + } + } + } + } + }, { + key: "componentDidMount", + value: function componentDidMount() { + this.updateTextSize(); + } + }, { + key: "componentDidUpdate", + value: function componentDidUpdate() { + this.updateTextSize(); + } + }, { + key: "getBgWidth", + value: function getBgWidth() { + var bgWidth = this.props.bgWidth; + var textWidth = this.state.textWidth; + + + if (bgWidth !== "auto") { + return bgWidth; + } else if (textWidth !== undefined) { + return textWidth + PADDING; + } else { + return MIN_WIDTH; + } + } + }, { + key: "getBgHeight", + value: function getBgHeight() { + var bgHeight = this.props.bgHeight; + var textHeight = this.state.textHeight; + + + if (bgHeight !== "auto") { + return bgHeight; + } else if (textHeight !== undefined) { + return textHeight + PADDING; + } else { + return MIN_WIDTH; } } }, { @@ -94,13 +134,15 @@ var HoverTextNearMouse = function (_Component) { // console.log(moreProps) - var textMetaData = helper(this.props, moreProps); + var textMetaData = helper(_extends({}, this.props, { + bgWidth: this.getBgWidth(), + bgHeight: this.getBgHeight() + }), moreProps); if ((0, _utils.isDefined)(textMetaData)) { var rect = textMetaData.rect, text = textMetaData.text; - return _react2.default.createElement( "g", null, @@ -112,9 +154,11 @@ var HoverTextNearMouse = function (_Component) { _react2.default.createElement( "text", { + ref: this.saveNode, fontSize: fontSize, fontFamily: fontFamily, textAnchor: "start", + alignmentBaseline: "central", fill: fill, x: text.x, y: text.y }, @@ -126,22 +170,24 @@ var HoverTextNearMouse = function (_Component) { }, { key: "render", value: function render() { - - return _react2.default.createElement(_GenericChartComponent2.default, { foo: true, - - svgDraw: this.renderSVG, - - canvasToDraw: _GenericComponent.getMouseCanvas, - canvasDraw: this.drawOnCanvas, - - drawOn: ["mousemove"] - }); + var text = this.props.text; + + if (text) { + return _react2.default.createElement(_GenericChartComponent2.default, { + svgDraw: this.renderSVG, + drawOn: ["mousemove"] + }); + } else { + return null; + } } }]); return HoverTextNearMouse; }(_react.Component); +var numberOrString = _propTypes2.default.oneOfType([_propTypes2.default.number, _propTypes2.default.oneOf(["auto"])]); + HoverTextNearMouse.propTypes = { fontFamily: _propTypes2.default.string.isRequired, fontSize: _propTypes2.default.number.isRequired, @@ -149,8 +195,8 @@ HoverTextNearMouse.propTypes = { text: _propTypes2.default.string.isRequired, bgFill: _propTypes2.default.string.isRequired, bgOpacity: _propTypes2.default.number.isRequired, - bgWidth: _propTypes2.default.number.isRequired, - bgHeight: _propTypes2.default.number.isRequired, + bgWidth: numberOrString.isRequired, + bgHeight: numberOrString.isRequired, show: _propTypes2.default.bool.isRequired }; @@ -164,7 +210,6 @@ HoverTextNearMouse.defaultProps = { function helper(props, moreProps) { var show = props.show, - fontSize = props.fontSize, bgWidth = props.bgWidth, bgHeight = props.bgHeight; var mouseXY = moreProps.mouseXY, @@ -180,6 +225,7 @@ function helper(props, moreProps) { y = _mouseXY[1]; var cx = x < width / 2 ? x + PADDING : x - bgWidth - PADDING; + var cy = y < height / 2 ? y + PADDING : y - bgHeight - PADDING; var rect = { @@ -188,10 +234,11 @@ function helper(props, moreProps) { width: bgWidth, height: bgHeight }; + var text = { text: props.text, x: cx + PADDING / 2, - y: cy + fontSize + y: cy + bgHeight / 2 }; return { diff --git a/lib/interactive/components/HoverTextNearMouse.js.map b/lib/interactive/components/HoverTextNearMouse.js.map index c652d19..f906c4a 100644 --- a/lib/interactive/components/HoverTextNearMouse.js.map +++ b/lib/interactive/components/HoverTextNearMouse.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../../../src/lib/interactive/components/HoverTextNearMouse.js"],"names":["PADDING","HoverTextNearMouse","props","renderSVG","bind","drawOnCanvas","ctx","moreProps","fontFamily","fontSize","fill","bgFill","bgOpacity","textMetaData","helper","rect","text","strokeStyle","fillStyle","beginPath","x","y","width","height","stroke","font","fillText","propTypes","string","isRequired","number","bgWidth","bgHeight","show","bool","defaultProps","mouseXY","chartConfig","mouseInsideCanvas","cx","cy"],"mappings":"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","file":"HoverTextNearMouse.js","sourcesContent":["import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport GenericChartComponent from \"../../GenericChartComponent\";\nimport { getMouseCanvas } from \"../../GenericComponent\";\nimport { isDefined, hexToRGBA } from \"../../utils\";\n\nconst PADDING = 10;\n\nclass HoverTextNearMouse extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.renderSVG = this.renderSVG.bind(this);\n\t\tthis.drawOnCanvas = this.drawOnCanvas.bind(this);\n\t}\n\tdrawOnCanvas(ctx, moreProps) {\n\t\tconst {\n\t\t\tfontFamily,\n\t\t\tfontSize,\n\t\t\tfill,\n\t\t\tbgFill,\n\t\t\tbgOpacity,\n\t\t} = this.props;\n\n\t\t// console.log(moreProps)\n\t\tconst textMetaData = helper(this.props, moreProps);\n\n\t\tif (isDefined(textMetaData)) {\n\t\t\tconst { rect, text } = textMetaData;\n\n\t\t\tctx.strokeStyle = bgFill;\n\t\t\tctx.fillStyle = hexToRGBA(bgFill, bgOpacity);\n\t\t\tctx.beginPath();\n\t\t\tctx.rect(rect.x, rect.y, rect.width, rect.height);\n\t\t\tctx.fill();\n\t\t\tctx.stroke();\n\n\t\t\tctx.font = `${ fontSize }px ${fontFamily}`;\n\t\t\tctx.fillStyle = fill;\n\t\t\tctx.beginPath();\n\n\t\t\tctx.fillText(text.text, text.x, text.y);\n\t\t}\n\t}\n\trenderSVG(moreProps) {\n\t\tconst {\n\t\t\tfontFamily,\n\t\t\tfontSize,\n\t\t\tfill,\n\t\t\tbgFill,\n\t\t\tbgOpacity,\n\t\t} = this.props;\n\n\t\t// console.log(moreProps)\n\t\tconst textMetaData = helper(this.props, moreProps);\n\n\t\tif (isDefined(textMetaData)) {\n\t\t\tconst { rect, text } = textMetaData;\n\n\t\t\treturn (\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{text.text}\n\t\t\t\t\n\t\t\t);\n\t\t}\n\t}\n\trender() {\n\n\t\treturn ;\n\t}\n}\n\nHoverTextNearMouse.propTypes = {\n\tfontFamily: PropTypes.string.isRequired,\n\tfontSize: PropTypes.number.isRequired,\n\tfill: PropTypes.string.isRequired,\n\ttext: PropTypes.string.isRequired,\n\tbgFill: PropTypes.string.isRequired,\n\tbgOpacity: PropTypes.number.isRequired,\n\tbgWidth: PropTypes.number.isRequired,\n\tbgHeight: PropTypes.number.isRequired,\n\tshow: PropTypes.bool.isRequired,\n};\n\nHoverTextNearMouse.defaultProps = {\n\tfontFamily: \"Helvetica Neue, Helvetica, Arial, sans-serif\",\n\tfontSize: 12,\n\tfill: \"#000000\",\n\tbgFill: \"#FA9325\",\n\tbgOpacity: 0.5,\n};\n\nfunction helper(props, moreProps) {\n\tconst {\n\t\tshow,\n\t\tfontSize,\n\t\tbgWidth,\n\t\tbgHeight,\n\t} = props;\n\n\tconst {\n\t\tmouseXY,\n\t\tchartConfig: { height, width },\n\t\tshow: mouseInsideCanvas\n\t} = moreProps;\n\n\tif (show && mouseInsideCanvas) {\n\t\tconst [x, y] = mouseXY;\n\n\t\tconst cx = x < width / 2\n\t\t\t? x + PADDING\n\t\t\t: x - bgWidth - PADDING;\n\t\tconst cy = y < height / 2\n\t\t\t? y + PADDING\n\t\t\t: y - bgHeight - PADDING;\n\n\t\tconst rect = {\n\t\t\tx: cx,\n\t\t\ty: cy,\n\t\t\twidth: bgWidth,\n\t\t\theight: bgHeight,\n\t\t};\n\t\tconst text = {\n\t\t\ttext: props.text,\n\t\t\tx: cx + PADDING / 2,\n\t\t\ty: cy + fontSize\n\t\t};\n\n\t\treturn {\n\t\t\trect,\n\t\t\ttext\n\t\t};\n\t}\n}\n\nexport default HoverTextNearMouse;\n"]} \ No newline at end of file +{"version":3,"sources":["../../../../src/lib/interactive/components/HoverTextNearMouse.js"],"names":["PADDING","MIN_WIDTH","HoverTextNearMouse","props","state","textWidth","undefined","textHeight","saveNode","bind","updateTextSize","renderSVG","node","textNode","bgWidth","bgHeight","getBBox","width","height","setState","moreProps","fontFamily","fontSize","fill","bgFill","bgOpacity","textMetaData","helper","getBgWidth","getBgHeight","rect","text","x","y","numberOrString","oneOfType","number","oneOf","propTypes","string","isRequired","show","bool","defaultProps","mouseXY","chartConfig","mouseInsideCanvas","cx","cy"],"mappings":"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","file":"HoverTextNearMouse.js","sourcesContent":["import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport GenericChartComponent from \"../../GenericChartComponent\";\nimport { isDefined } from \"../../utils\";\n\nconst PADDING = 10;\nconst MIN_WIDTH = PADDING;\n\nclass HoverTextNearMouse extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\n\t\tthis.state = {\n\t\t\ttextWidth: undefined,\n\t\t\ttextHeight: undefined,\n\t\t};\n\n\t\tthis.saveNode = this.saveNode.bind(this);\n\t\tthis.updateTextSize = this.updateTextSize.bind(this);\n\t\tthis.renderSVG = this.renderSVG.bind(this);\n\t}\n\tsaveNode(node) {\n\t\tthis.textNode = node;\n\t}\n\n\tupdateTextSize() {\n\t\tconst { bgWidth, bgHeight } = this.props;\n\t\tif (bgWidth === \"auto\" || bgHeight === \"auto\") {\n\t\t\tconst textNode = this.textNode;\n\t\t\tif (textNode) {\n\t\t\t\tconst { width, height } = textNode.getBBox();\n\t\t\t\tif (this.state.textWidth !== width || this.state.textHeight !== height) {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\ttextWidth: width,\n\t\t\t\t\t\ttextHeight: height\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tcomponentDidMount() {\n\t\tthis.updateTextSize();\n\t}\n\n\tcomponentDidUpdate() {\n\t\tthis.updateTextSize();\n\t}\n\n\tgetBgWidth() {\n\t\tconst { bgWidth } = this.props;\n\t\tconst { textWidth } = this.state;\n\n\t\tif (bgWidth !== \"auto\") {\n\t\t\treturn bgWidth;\n\t\t} else if (textWidth !== undefined) {\n\t\t\treturn textWidth + PADDING;\n\t\t} else {\n\t\t\treturn MIN_WIDTH;\n\t\t}\n\t}\n\n\tgetBgHeight() {\n\t\tconst { bgHeight } = this.props;\n\t\tconst { textHeight } = this.state;\n\n\t\tif (bgHeight !== \"auto\") {\n\t\t\treturn bgHeight;\n\t\t} else if (textHeight !== undefined) {\n\t\t\treturn textHeight + PADDING;\n\t\t} else {\n\t\t\treturn MIN_WIDTH;\n\t\t}\n\t}\n\n\trenderSVG(moreProps) {\n\t\tconst {\n\t\t\tfontFamily,\n\t\t\tfontSize,\n\t\t\tfill,\n\t\t\tbgFill,\n\t\t\tbgOpacity,\n\t\t} = this.props;\n\n\t\t// console.log(moreProps)\n\t\tconst textMetaData = helper({\n\t\t\t...this.props,\n\t\t\tbgWidth: this.getBgWidth(),\n\t\t\tbgHeight: this.getBgHeight()\n\t\t}, moreProps);\n\n\t\tif (isDefined(textMetaData)) {\n\t\t\tconst { rect, text } = textMetaData;\n\t\t\treturn (\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{text.text}\n\t\t\t\t\n\t\t\t);\n\t\t}\n\t}\n\trender() {\n\t\tconst { text } = this.props;\n\t\tif (text) {\n\t\t\treturn ;\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t}\n}\n\nconst numberOrString = PropTypes.oneOfType([\n\tPropTypes.number,\n\tPropTypes.oneOf([\"auto\"]),\n]);\n\nHoverTextNearMouse.propTypes = {\n\tfontFamily: PropTypes.string.isRequired,\n\tfontSize: PropTypes.number.isRequired,\n\tfill: PropTypes.string.isRequired,\n\ttext: PropTypes.string.isRequired,\n\tbgFill: PropTypes.string.isRequired,\n\tbgOpacity: PropTypes.number.isRequired,\n\tbgWidth: numberOrString.isRequired,\n\tbgHeight: numberOrString.isRequired,\n\tshow: PropTypes.bool.isRequired,\n};\n\nHoverTextNearMouse.defaultProps = {\n\tfontFamily: \"Helvetica Neue, Helvetica, Arial, sans-serif\",\n\tfontSize: 12,\n\tfill: \"#000000\",\n\tbgFill: \"#FA9325\",\n\tbgOpacity: 0.5,\n};\n\nfunction helper(props, moreProps) {\n\tconst {\n\t\tshow,\n\t\tbgWidth,\n\t\tbgHeight,\n\t} = props;\n\n\tconst {\n\t\tmouseXY,\n\t\tchartConfig: { height, width },\n\t\tshow: mouseInsideCanvas\n\t} = moreProps;\n\n\tif (show && mouseInsideCanvas) {\n\t\tconst [x, y] = mouseXY;\n\n\t\tconst cx = x < width / 2\n\t\t\t? x + PADDING\n\t\t\t: x - bgWidth - PADDING;\n\n\t\tconst cy = y < height / 2\n\t\t\t? y + PADDING\n\t\t\t: y - bgHeight - PADDING;\n\n\t\tconst rect = {\n\t\t\tx: cx,\n\t\t\ty: cy,\n\t\t\twidth: bgWidth,\n\t\t\theight: bgHeight,\n\t\t};\n\n\t\tconst text = {\n\t\t\ttext: props.text,\n\t\t\tx: cx + PADDING / 2,\n\t\t\ty: cy + bgHeight / 2,\n\t\t};\n\n\t\treturn {\n\t\t\trect,\n\t\t\ttext\n\t\t};\n\t}\n}\n\nexport default HoverTextNearMouse;\n"]} \ No newline at end of file diff --git a/lib/interactive/components/InteractiveText.js b/lib/interactive/components/InteractiveText.js index d07a86f..38f6157 100644 --- a/lib/interactive/components/InteractiveText.js +++ b/lib/interactive/components/InteractiveText.js @@ -79,6 +79,8 @@ var InteractiveText = function (_Component) { var _props = this.props, bgFill = _props.bgFill, bgOpacity = _props.bgOpacity, + bgStrokeWidth = _props.bgStrokeWidth, + bgStroke = _props.bgStroke, textFill = _props.textFill, fontFamily = _props.fontFamily, fontSize = _props.fontSize, @@ -110,7 +112,8 @@ var InteractiveText = function (_Component) { ctx.fillRect(rect.x, rect.y, rect.width, rect.height); if (selected) { - ctx.strokeStyle = textFill; + ctx.strokeStyle = bgStroke; + ctx.lineWidth = bgStrokeWidth; ctx.strokeRect(rect.x, rect.y, rect.width, rect.height); } @@ -194,6 +197,8 @@ function helper(props, moreProps, textWidth) { InteractiveText.propTypes = { bgFill: _propTypes2.default.string.isRequired, bgOpacity: _propTypes2.default.number.isRequired, + bgStrokeWidth: _propTypes2.default.number.isRequired, + bgStroke: _propTypes2.default.string.isRequired, textFill: _propTypes2.default.string.isRequired, fontFamily: _propTypes2.default.string.isRequired, @@ -224,7 +229,6 @@ InteractiveText.defaultProps = { type: "SD", // standard dev fontWeight: "normal", // standard dev - strokeWidth: 1, tolerance: 4, selected: false }; diff --git a/lib/interactive/components/InteractiveText.js.map b/lib/interactive/components/InteractiveText.js.map index fa92449..85f7690 100644 --- a/lib/interactive/components/InteractiveText.js.map +++ b/lib/interactive/components/InteractiveText.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../../../src/lib/interactive/components/InteractiveText.js"],"names":["InteractiveText","props","calculateTextWidth","renderSVG","bind","drawOnCanvas","isHover","moreProps","onHover","textWidth","helper","rect","mouseXY","x","y","width","height","nextProps","text","fontStyle","fontWeight","fontSize","fontFamily","ctx","bgFill","bgOpacity","textFill","font","measureText","selected","fillStyle","beginPath","fillRect","strokeStyle","strokeRect","textBaseline","textAlign","fillText","Error","interactiveCursorClass","onUnHover","onDragStart","onDrag","onDragComplete","position","xScale","yScale","chartConfig","xValue","yValue","propTypes","string","isRequired","number","oneOfType","func","defaultClassName","tolerance","bool","defaultProps","type","strokeWidth"],"mappings":";;;;;;;;;;AAAA;;;;AACA;;;;AAEA;;;;AACA;;AAEA;;;;;;;;;;IAEMA,e;;;AACL,0BAAYC,KAAZ,EAAmB;AAAA;;AAAA,gIACZA,KADY;;AAGlB,QAAKC,kBAAL,GAA0B,IAA1B;;AAEA,QAAKC,SAAL,GAAiB,MAAKA,SAAL,CAAeC,IAAf,OAAjB;AACA,QAAKC,YAAL,GAAoB,MAAKA,YAAL,CAAkBD,IAAlB,OAApB;AACA,QAAKE,OAAL,GAAe,MAAKA,OAAL,CAAaF,IAAb,OAAf;AAPkB;AAQlB;;;;0BACOG,S,EAAW;AAAA,OACVC,OADU,GACE,KAAKP,KADP,CACVO,OADU;;;AAGlB,OACC,sBAAUA,OAAV,KACG,sBAAU,KAAKC,SAAf,CADH,IAEG,CAAC,KAAKP,kBAHV,EAIE;AAAA,kBACgBQ,OAAO,KAAKT,KAAZ,EAAmBM,SAAnB,EAA8B,KAAKE,SAAnC,CADhB;AAAA,QACOE,IADP,WACOA,IADP;;AAAA,4CAE2BJ,SAF3B,CAEOK,OAFP;AAAA,QAEiBC,CAFjB;AAAA,QAEoBC,CAFpB;;AAID,QACCD,KAAKF,KAAKE,CAAV,IACGC,KAAKH,KAAKG,CADb,IAEGD,KAAKF,KAAKE,CAAL,GAASF,KAAKI,KAFtB,IAGGD,KAAKH,KAAKG,CAAL,GAASH,KAAKK,MAJvB,EAKE;AACD,YAAO,IAAP;AACA;AACD;AACD,UAAO,KAAP;AACA;;;4CACyBC,S,EAAW;AACpC,QAAKf,kBAAL,GACCe,UAAUC,IAAV,KAAmB,KAAKjB,KAAL,CAAWiB,IAA9B,IACGD,UAAUE,SAAV,KAAwB,KAAKlB,KAAL,CAAWkB,SADtC,IAEGF,UAAUG,UAAV,KAAyB,KAAKnB,KAAL,CAAWmB,UAFvC,IAGGH,UAAUI,QAAV,KAAuB,KAAKpB,KAAL,CAAWoB,QAHrC,IAIGJ,UAAUK,UAAV,KAAyB,KAAKrB,KAAL,CAAWqB,UALxC;AAOA;;;+BACYC,G,EAAKhB,S,EAAW;AAAA,gBAUxB,KAAKN,KAVmB;AAAA,OAE3BuB,MAF2B,UAE3BA,MAF2B;AAAA,OAG3BC,SAH2B,UAG3BA,SAH2B;AAAA,OAI3BC,QAJ2B,UAI3BA,QAJ2B;AAAA,OAK3BJ,UAL2B,UAK3BA,UAL2B;AAAA,OAM3BD,QAN2B,UAM3BA,QAN2B;AAAA,OAO3BF,SAP2B,UAO3BA,SAP2B;AAAA,OAQ3BC,UAR2B,UAQ3BA,UAR2B;AAAA,OAS3BF,IAT2B,UAS3BA,IAT2B;;;AAY5B,OAAI,KAAKhB,kBAAT,EAA6B;AAC5BqB,QAAII,IAAJ,GAAcR,SAAd,SAA2BC,UAA3B,SAAyCC,QAAzC,WAAuDC,UAAvD;;AAD4B,2BAEVC,IAAIK,WAAJ,CAAgBV,IAAhB,CAFU;AAAA,QAEpBH,KAFoB,oBAEpBA,KAFoB;;AAG5B,SAAKN,SAAL,GAAiBM,KAAjB;AACA,SAAKb,kBAAL,GAA0B,KAA1B;AACA;;AAjB2B,OAmBpB2B,QAnBoB,GAmBP,KAAK5B,KAnBE,CAmBpB4B,QAnBoB;;AAAA,kBAqBLnB,OAAO,KAAKT,KAAZ,EAAmBM,SAAnB,EAA8B,KAAKE,SAAnC,CArBK;AAAA,OAqBpBI,CArBoB,YAqBpBA,CArBoB;AAAA,OAqBjBC,CArBiB,YAqBjBA,CArBiB;AAAA,OAqBdH,IArBc,YAqBdA,IArBc;;AAuB5BY,OAAIO,SAAJ,GAAgB,sBAAUN,MAAV,EAAkBC,SAAlB,CAAhB;;AAEAF,OAAIQ,SAAJ;AACAR,OAAIS,QAAJ,CAAarB,KAAKE,CAAlB,EAAqBF,KAAKG,CAA1B,EAA6BH,KAAKI,KAAlC,EAAyCJ,KAAKK,MAA9C;;AAEA,OAAIa,QAAJ,EAAc;AACbN,QAAIU,WAAJ,GAAkBP,QAAlB;AACAH,QAAIW,UAAJ,CAAevB,KAAKE,CAApB,EAAuBF,KAAKG,CAA5B,EAA+BH,KAAKI,KAApC,EAA2CJ,KAAKK,MAAhD;AACA;;AAEDO,OAAIO,SAAJ,GAAgBJ,QAAhB;AACAH,OAAIY,YAAJ,GAAmB,QAAnB;AACAZ,OAAIa,SAAJ,GAAgB,QAAhB;AACAb,OAAII,IAAJ,GAAcR,SAAd,SAA2BC,UAA3B,SAAyCC,QAAzC,WAAuDC,UAAvD;;AAEAC,OAAIQ,SAAJ;AACAR,OAAIc,QAAJ,CAAanB,IAAb,EAAmBL,CAAnB,EAAsBC,CAAtB;AACA;;;8BACW;AACX,SAAM,IAAIwB,KAAJ,CAAU,qBAAV,CAAN;AACA;;;2BACQ;AAAA,iBACqC,KAAKrC,KAD1C;AAAA,OACA4B,QADA,WACAA,QADA;AAAA,OACUU,sBADV,WACUA,sBADV;AAAA,iBAEuB,KAAKtC,KAF5B;AAAA,OAEAO,OAFA,WAEAA,OAFA;AAAA,OAESgC,SAFT,WAESA,SAFT;AAAA,iBAGwC,KAAKvC,KAH7C;AAAA,OAGAwC,WAHA,WAGAA,WAHA;AAAA,OAGaC,MAHb,WAGaA,MAHb;AAAA,OAGqBC,cAHrB,WAGqBA,cAHrB;;;AAKR,UAAO;AACN,aAAS,KAAKrC,OADR;;AAGN,aAAS,KAAKH,SAHR;AAIN,kDAJM;AAKN,gBAAY,KAAKE,YALX;;AAON,4BAAwBkC,sBAPlB;AAQN,cAAUV,QARJ;;AAUN,iBAAaY,WAVP;AAWN,YAAQC,MAXF;AAYN,oBAAgBC,cAZV;AAaN,aAASnC,OAbH;AAcN,eAAWgC,SAdL;;AAgBN,YAAQ,CAAC,WAAD,EAAc,YAAd,EAA4B,KAA5B,EAAmC,MAAnC;AAhBF,KAAP;AAkBA;;;;;;AAGF,SAAS9B,MAAT,CAAgBT,KAAhB,EAAuBM,SAAvB,EAAkCE,SAAlC,EAA6C;AAAA,KACpCmC,QADoC,GACb3C,KADa,CACpC2C,QADoC;AAAA,KAC1BvB,QAD0B,GACbpB,KADa,CAC1BoB,QAD0B;AAAA,KAGpCwB,MAHoC,GAGAtC,SAHA,CAGpCsC,MAHoC;AAAA,KAGbC,MAHa,GAGAvC,SAHA,CAG5BwC,WAH4B,CAGbD,MAHa;;AAAA,gCAKnBF,QALmB;AAAA,KAKrCI,MALqC;AAAA,KAK7BC,MAL6B;;AAM5C,KAAMpC,IAAIgC,OAAOG,MAAP,CAAV;AACA,KAAMlC,IAAIgC,OAAOG,MAAP,CAAV;;AAEA,KAAMtC,OAAO;AACZE,KAAGA,IAAIJ,YAAY,CAAhB,GAAoBY,QADX;AAEZP,KAAGA,IAAIO,QAFK;AAGZN,SAAON,YAAYY,WAAW,CAHlB;AAIZL,UAAQK,WAAW;AAJP,EAAb;;AAOA,QAAO;AACNR,MADM,EACHC,IADG,EACAH;AADA,EAAP;AAGA;;AAEDX,gBAAgBkD,SAAhB,GAA4B;AAC3B1B,SAAQ,oBAAU2B,MAAV,CAAiBC,UADE;AAE3B3B,YAAW,oBAAU4B,MAAV,CAAiBD,UAFD;;AAI3B1B,WAAU,oBAAUyB,MAAV,CAAiBC,UAJA;AAK3B9B,aAAY,oBAAU6B,MAAV,CAAiBC,UALF;AAM3B/B,WAAU,oBAAUgC,MAAV,CAAiBD,UANA;AAO3BhC,aAAY,oBAAUkC,SAAV,CAAoB,CAC/B,oBAAUD,MADqB,EAE/B,oBAAUF,MAFqB,CAApB,EAGTC,UAVwB;AAW3BjC,YAAW,oBAAUgC,MAAV,CAAiBC,UAXD;;AAa3BlC,OAAM,oBAAUiC,MAAV,CAAiBC,UAbI;;AAe3BX,cAAa,oBAAUc,IAAV,CAAeH,UAfD;AAgB3BV,SAAQ,oBAAUa,IAAV,CAAeH,UAhBI;AAiB3BT,iBAAgB,oBAAUY,IAAV,CAAeH,UAjBJ;AAkB3B5C,UAAS,oBAAU+C,IAlBQ;AAmB3Bf,YAAW,oBAAUe,IAnBM;;AAqB3BC,mBAAkB,oBAAUL,MArBD;AAsB3BZ,yBAAwB,oBAAUY,MAtBP;;AAwB3BM,YAAW,oBAAUJ,MAAV,CAAiBD,UAxBD;AAyB3BvB,WAAU,oBAAU6B,IAAV,CAAeN;AAzBE,CAA5B;;AA4BApD,gBAAgB2D,YAAhB,GAA+B;AAC9BlB,yBAD8B;AAE9BC,oBAF8B;AAG9BC,4BAH8B;;AAK9BiB,OAAM,IALwB,EAKlB;AACZxC,aAAY,QANkB,EAMR;;AAEtByC,cAAa,CARiB;AAS9BJ,YAAW,CATmB;AAU9B5B,WAAU;AAVoB,CAA/B;;kBAae7B,e","file":"InteractiveText.js","sourcesContent":["import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport GenericChartComponent from \"../../GenericChartComponent\";\nimport { getMouseCanvas } from \"../../GenericComponent\";\n\nimport { isDefined, noop, hexToRGBA } from \"../../utils\";\n\nclass InteractiveText extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\n\t\tthis.calculateTextWidth = true;\n\n\t\tthis.renderSVG = this.renderSVG.bind(this);\n\t\tthis.drawOnCanvas = this.drawOnCanvas.bind(this);\n\t\tthis.isHover = this.isHover.bind(this);\n\t}\n\tisHover(moreProps) {\n\t\tconst { onHover } = this.props;\n\n\t\tif (\n\t\t\tisDefined(onHover)\n\t\t\t&& isDefined(this.textWidth)\n\t\t\t&& !this.calculateTextWidth\n\t\t) {\n\t\t\tconst { rect } = helper(this.props, moreProps, this.textWidth);\n\t\t\tconst { mouseXY: [x, y] } = moreProps;\n\n\t\t\tif (\n\t\t\t\tx >= rect.x\n\t\t\t\t&& y >= rect.y\n\t\t\t\t&& x <= rect.x + rect.width\n\t\t\t\t&& y <= rect.y + rect.height\n\t\t\t) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\tcomponentWillReceiveProps(nextProps) {\n\t\tthis.calculateTextWidth = (\n\t\t\tnextProps.text !== this.props.text\n\t\t\t|| nextProps.fontStyle !== this.props.fontStyle\n\t\t\t|| nextProps.fontWeight !== this.props.fontWeight\n\t\t\t|| nextProps.fontSize !== this.props.fontSize\n\t\t\t|| nextProps.fontFamily !== this.props.fontFamily\n\t\t);\n\t}\n\tdrawOnCanvas(ctx, moreProps) {\n\t\tconst {\n\t\t\tbgFill,\n\t\t\tbgOpacity,\n\t\t\ttextFill,\n\t\t\tfontFamily,\n\t\t\tfontSize,\n\t\t\tfontStyle,\n\t\t\tfontWeight,\n\t\t\ttext,\n\t\t} = this.props;\n\n\t\tif (this.calculateTextWidth) {\n\t\t\tctx.font = `${fontStyle} ${fontWeight} ${fontSize}px ${fontFamily}`;\n\t\t\tconst { width } = ctx.measureText(text);\n\t\t\tthis.textWidth = width;\n\t\t\tthis.calculateTextWidth = false;\n\t\t}\n\n\t\tconst { selected } = this.props;\n\n\t\tconst { x, y, rect } = helper(this.props, moreProps, this.textWidth);\n\n\t\tctx.fillStyle = hexToRGBA(bgFill, bgOpacity);\n\n\t\tctx.beginPath();\n\t\tctx.fillRect(rect.x, rect.y, rect.width, rect.height);\n\n\t\tif (selected) {\n\t\t\tctx.strokeStyle = textFill;\n\t\t\tctx.strokeRect(rect.x, rect.y, rect.width, rect.height);\n\t\t}\n\n\t\tctx.fillStyle = textFill;\n\t\tctx.textBaseline = \"middle\";\n\t\tctx.textAlign = \"center\";\n\t\tctx.font = `${fontStyle} ${fontWeight} ${fontSize}px ${fontFamily}`;\n\n\t\tctx.beginPath();\n\t\tctx.fillText(text, x, y);\n\t}\n\trenderSVG() {\n\t\tthrow new Error(\"svg not implemented\");\n\t}\n\trender() {\n\t\tconst { selected, interactiveCursorClass } = this.props;\n\t\tconst { onHover, onUnHover } = this.props;\n\t\tconst { onDragStart, onDrag, onDragComplete } = this.props;\n\n\t\treturn ;\n\t}\n}\n\nfunction helper(props, moreProps, textWidth) {\n\tconst { position, fontSize } = props;\n\n\tconst { xScale, chartConfig: { yScale } } = moreProps;\n\n\tconst [xValue, yValue] = position;\n\tconst x = xScale(xValue);\n\tconst y = yScale(yValue);\n\n\tconst rect = {\n\t\tx: x - textWidth / 2 - fontSize,\n\t\ty: y - fontSize,\n\t\twidth: textWidth + fontSize * 2,\n\t\theight: fontSize * 2,\n\t};\n\n\treturn {\n\t\tx, y, rect\n\t};\n}\n\nInteractiveText.propTypes = {\n\tbgFill: PropTypes.string.isRequired,\n\tbgOpacity: PropTypes.number.isRequired,\n\n\ttextFill: PropTypes.string.isRequired,\n\tfontFamily: PropTypes.string.isRequired,\n\tfontSize: PropTypes.number.isRequired,\n\tfontWeight: PropTypes.oneOfType([\n\t\tPropTypes.number,\n\t\tPropTypes.string,\n\t]).isRequired,\n\tfontStyle: PropTypes.string.isRequired,\n\n\ttext: PropTypes.string.isRequired,\n\n\tonDragStart: PropTypes.func.isRequired,\n\tonDrag: PropTypes.func.isRequired,\n\tonDragComplete: PropTypes.func.isRequired,\n\tonHover: PropTypes.func,\n\tonUnHover: PropTypes.func,\n\n\tdefaultClassName: PropTypes.string,\n\tinteractiveCursorClass: PropTypes.string,\n\n\ttolerance: PropTypes.number.isRequired,\n\tselected: PropTypes.bool.isRequired,\n};\n\nInteractiveText.defaultProps = {\n\tonDragStart: noop,\n\tonDrag: noop,\n\tonDragComplete: noop,\n\n\ttype: \"SD\", // standard dev\n\tfontWeight: \"normal\", // standard dev\n\n\tstrokeWidth: 1,\n\ttolerance: 4,\n\tselected: false,\n};\n\nexport default InteractiveText;"]} \ No newline at end of file +{"version":3,"sources":["../../../../src/lib/interactive/components/InteractiveText.js"],"names":["InteractiveText","props","calculateTextWidth","renderSVG","bind","drawOnCanvas","isHover","moreProps","onHover","textWidth","helper","rect","mouseXY","x","y","width","height","nextProps","text","fontStyle","fontWeight","fontSize","fontFamily","ctx","bgFill","bgOpacity","bgStrokeWidth","bgStroke","textFill","font","measureText","selected","fillStyle","beginPath","fillRect","strokeStyle","lineWidth","strokeRect","textBaseline","textAlign","fillText","Error","interactiveCursorClass","onUnHover","onDragStart","onDrag","onDragComplete","position","xScale","yScale","chartConfig","xValue","yValue","propTypes","string","isRequired","number","oneOfType","func","defaultClassName","tolerance","bool","defaultProps","type"],"mappings":"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","file":"InteractiveText.js","sourcesContent":["import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport GenericChartComponent from \"../../GenericChartComponent\";\nimport { getMouseCanvas } from \"../../GenericComponent\";\n\nimport { isDefined, noop, hexToRGBA } from \"../../utils\";\n\nclass InteractiveText extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\n\t\tthis.calculateTextWidth = true;\n\n\t\tthis.renderSVG = this.renderSVG.bind(this);\n\t\tthis.drawOnCanvas = this.drawOnCanvas.bind(this);\n\t\tthis.isHover = this.isHover.bind(this);\n\t}\n\tisHover(moreProps) {\n\t\tconst { onHover } = this.props;\n\n\t\tif (\n\t\t\tisDefined(onHover)\n\t\t\t&& isDefined(this.textWidth)\n\t\t\t&& !this.calculateTextWidth\n\t\t) {\n\t\t\tconst { rect } = helper(this.props, moreProps, this.textWidth);\n\t\t\tconst { mouseXY: [x, y] } = moreProps;\n\n\t\t\tif (\n\t\t\t\tx >= rect.x\n\t\t\t\t&& y >= rect.y\n\t\t\t\t&& x <= rect.x + rect.width\n\t\t\t\t&& y <= rect.y + rect.height\n\t\t\t) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\tcomponentWillReceiveProps(nextProps) {\n\t\tthis.calculateTextWidth = (\n\t\t\tnextProps.text !== this.props.text\n\t\t\t|| nextProps.fontStyle !== this.props.fontStyle\n\t\t\t|| nextProps.fontWeight !== this.props.fontWeight\n\t\t\t|| nextProps.fontSize !== this.props.fontSize\n\t\t\t|| nextProps.fontFamily !== this.props.fontFamily\n\t\t);\n\t}\n\tdrawOnCanvas(ctx, moreProps) {\n\t\tconst {\n\t\t\tbgFill,\n\t\t\tbgOpacity,\n\t\t\tbgStrokeWidth,\n\t\t\tbgStroke,\n\t\t\ttextFill,\n\t\t\tfontFamily,\n\t\t\tfontSize,\n\t\t\tfontStyle,\n\t\t\tfontWeight,\n\t\t\ttext,\n\t\t} = this.props;\n\n\t\tif (this.calculateTextWidth) {\n\t\t\tctx.font = `${fontStyle} ${fontWeight} ${fontSize}px ${fontFamily}`;\n\t\t\tconst { width } = ctx.measureText(text);\n\t\t\tthis.textWidth = width;\n\t\t\tthis.calculateTextWidth = false;\n\t\t}\n\n\t\tconst { selected } = this.props;\n\n\t\tconst { x, y, rect } = helper(this.props, moreProps, this.textWidth);\n\n\t\tctx.fillStyle = hexToRGBA(bgFill, bgOpacity);\n\n\t\tctx.beginPath();\n\t\tctx.fillRect(rect.x, rect.y, rect.width, rect.height);\n\n\t\tif (selected) {\n\t\t\tctx.strokeStyle = bgStroke;\n\t\t\tctx.lineWidth = bgStrokeWidth;\n\t\t\tctx.strokeRect(rect.x, rect.y, rect.width, rect.height);\n\t\t}\n\n\t\tctx.fillStyle = textFill;\n\t\tctx.textBaseline = \"middle\";\n\t\tctx.textAlign = \"center\";\n\t\tctx.font = `${fontStyle} ${fontWeight} ${fontSize}px ${fontFamily}`;\n\n\t\tctx.beginPath();\n\t\tctx.fillText(text, x, y);\n\t}\n\trenderSVG() {\n\t\tthrow new Error(\"svg not implemented\");\n\t}\n\trender() {\n\t\tconst { selected, interactiveCursorClass } = this.props;\n\t\tconst { onHover, onUnHover } = this.props;\n\t\tconst { onDragStart, onDrag, onDragComplete } = this.props;\n\n\t\treturn ;\n\t}\n}\n\nfunction helper(props, moreProps, textWidth) {\n\tconst { position, fontSize } = props;\n\n\tconst { xScale, chartConfig: { yScale } } = moreProps;\n\n\tconst [xValue, yValue] = position;\n\tconst x = xScale(xValue);\n\tconst y = yScale(yValue);\n\n\tconst rect = {\n\t\tx: x - textWidth / 2 - fontSize,\n\t\ty: y - fontSize,\n\t\twidth: textWidth + fontSize * 2,\n\t\theight: fontSize * 2,\n\t};\n\n\treturn {\n\t\tx, y, rect\n\t};\n}\n\nInteractiveText.propTypes = {\n\tbgFill: PropTypes.string.isRequired,\n\tbgOpacity: PropTypes.number.isRequired,\n\tbgStrokeWidth: PropTypes.number.isRequired,\n\tbgStroke: PropTypes.string.isRequired,\n\n\ttextFill: PropTypes.string.isRequired,\n\tfontFamily: PropTypes.string.isRequired,\n\tfontSize: PropTypes.number.isRequired,\n\tfontWeight: PropTypes.oneOfType([\n\t\tPropTypes.number,\n\t\tPropTypes.string,\n\t]).isRequired,\n\tfontStyle: PropTypes.string.isRequired,\n\n\ttext: PropTypes.string.isRequired,\n\n\tonDragStart: PropTypes.func.isRequired,\n\tonDrag: PropTypes.func.isRequired,\n\tonDragComplete: PropTypes.func.isRequired,\n\tonHover: PropTypes.func,\n\tonUnHover: PropTypes.func,\n\n\tdefaultClassName: PropTypes.string,\n\tinteractiveCursorClass: PropTypes.string,\n\n\ttolerance: PropTypes.number.isRequired,\n\tselected: PropTypes.bool.isRequired,\n};\n\nInteractiveText.defaultProps = {\n\tonDragStart: noop,\n\tonDrag: noop,\n\tonDragComplete: noop,\n\n\ttype: \"SD\", // standard dev\n\tfontWeight: \"normal\", // standard dev\n\n\ttolerance: 4,\n\tselected: false,\n};\n\nexport default InteractiveText;"]} \ No newline at end of file diff --git a/lib/interactive/components/LinearRegressionChannelWithArea.js b/lib/interactive/components/LinearRegressionChannelWithArea.js index 00c8336..dd7e62e 100644 --- a/lib/interactive/components/LinearRegressionChannelWithArea.js +++ b/lib/interactive/components/LinearRegressionChannelWithArea.js @@ -70,9 +70,14 @@ var LinearRegressionChannelWithArea = function (_Component) { x1 = _helper.x1, y1 = _helper.y1, x2 = _helper.x2, - y2 = _helper.y2; + y2 = _helper.y2, + dy = _helper.dy; - var hovering = (0, _StraightLine.isHovering2)([x1, y1], [x2, y2], mouseXY, tolerance); + var yDiffs = [-dy, 0, dy]; + + var hovering = yDiffs.reduce(function (result, diff) { + return result || (0, _StraightLine.isHovering2)([x1, y1 + diff], [x2, y2 + diff], mouseXY, tolerance); + }, false); return hovering; } return false; diff --git a/lib/interactive/components/LinearRegressionChannelWithArea.js.map b/lib/interactive/components/LinearRegressionChannelWithArea.js.map index e3f8435..5d7f267 100644 --- a/lib/interactive/components/LinearRegressionChannelWithArea.js.map +++ b/lib/interactive/components/LinearRegressionChannelWithArea.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../../../src/lib/interactive/components/LinearRegressionChannelWithArea.js"],"names":["edge1Provider","edge2Provider","LinearRegressionChannelWithArea","props","renderSVG","bind","drawOnCanvas","isHover","moreProps","tolerance","onHover","mouseXY","helper","x1","y1","x2","y2","hovering","ctx","stroke","strokeWidth","fillOpacity","strokeOpacity","fill","dy","lineWidth","strokeStyle","fillStyle","beginPath","moveTo","lineTo","closePath","line","toString","selected","interactiveCursorClass","onUnHover","x1Value","x2Value","type","xScale","yScale","chartConfig","fullData","xAccessor","left","right","startIndex","Math","min","endIndex","max","array","slice","xs","map","d","valueOf","ys","close","n","length","combine","x","y","xys","xSquareds","pow","b","a","newy1","newy2","stdDev","propTypes","any","isRequired","oneOf","string","number","onDragStart","func","onDrag","onDragComplete","defaultClassName","bool","defaultProps"],"mappings":"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","file":"LinearRegressionChannelWithArea.js","sourcesContent":["import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { sum, deviation } from \"d3-array\";\nimport { path as d3Path } from \"d3-path\";\n\nimport GenericChartComponent from \"../../GenericChartComponent\";\nimport { getMouseCanvas } from \"../../GenericComponent\";\nimport { isHovering2 } from \"./StraightLine\";\n\nimport { isDefined, getClosestItemIndexes, noop, zipper, hexToRGBA } from \"../../utils\";\n\nclass LinearRegressionChannelWithArea extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\n\t\tthis.renderSVG = this.renderSVG.bind(this);\n\t\tthis.drawOnCanvas = this.drawOnCanvas.bind(this);\n\t\tthis.isHover = this.isHover.bind(this);\n\t}\n\tisHover(moreProps) {\n\t\tconst { tolerance, onHover } = this.props;\n\n\t\tif (isDefined(onHover)) {\n\t\t\tconst { mouseXY } = moreProps;\n\n\t\t\tconst { x1, y1, x2, y2 } = helper(this.props, moreProps);\n\n\t\t\tconst hovering = isHovering2(\n\t\t\t\t[x1, y1], [x2, y2], mouseXY, tolerance\n\t\t\t);\n\t\t\treturn hovering;\n\t\t}\n\t\treturn false;\n\t}\n\tdrawOnCanvas(ctx, moreProps) {\n\t\tconst { stroke, strokeWidth, fillOpacity, strokeOpacity, fill } = this.props;\n\t\tconst { x1, y1, x2, y2, dy } = helper(this.props, moreProps);\n\n\t\tctx.lineWidth = strokeWidth;\n\t\tctx.strokeStyle = hexToRGBA(stroke, strokeOpacity);\n\t\tctx.fillStyle = hexToRGBA(fill, fillOpacity);\n\n\t\tctx.beginPath();\n\t\tctx.moveTo(x1, y1 - dy);\n\t\tctx.lineTo(x2, y2 - dy);\n\t\tctx.stroke();\n\n\t\tctx.beginPath();\n\t\tctx.moveTo(x2, y2 + dy);\n\t\tctx.lineTo(x1, y1 + dy);\n\t\tctx.stroke();\n\n\t\tctx.beginPath();\n\t\tctx.moveTo(x1, y1 - dy);\n\t\tctx.lineTo(x2, y2 - dy);\n\t\tctx.lineTo(x2, y2 + dy);\n\t\tctx.lineTo(x1, y1 + dy);\n\t\tctx.closePath();\n\t\tctx.fill();\n\n\t\tctx.beginPath();\n\t\tctx.moveTo(x2, y2);\n\t\tctx.lineTo(x1, y1);\n\t\tctx.stroke();\n\t}\n\trenderSVG(moreProps) {\n\t\tconst { stroke, strokeWidth, fillOpacity, strokeOpacity, fill } = this.props;\n\t\tconst { x1, y1, x2, y2, dy } = helper(this.props, moreProps);\n\t\tconst line = {\n\t\t\tstrokeWidth,\n\t\t\tstroke,\n\t\t\tstrokeOpacity,\n\t\t};\n\t\tconst ctx = d3Path();\n\t\tctx.moveTo(x1, y1 - dy);\n\t\tctx.lineTo(x2, y2 - dy);\n\t\tctx.lineTo(x2, y2 + dy);\n\t\tctx.lineTo(x1, y1 + dy);\n\t\tctx.closePath();\n\t\treturn (\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t);\n\t}\n\trender() {\n\t\tconst { selected, interactiveCursorClass } = this.props;\n\t\tconst { onHover, onUnHover } = this.props;\n\n\t\treturn ;\n\t}\n}\n\nexport function edge1Provider(props) {\n\treturn function(moreProps) {\n\t\tconst { x1, y1 } = helper(props, moreProps);\n\t\treturn [x1, y1];\n\t};\n}\n\nexport function edge2Provider(props) {\n\treturn function(moreProps) {\n\t\tconst { x2, y2 } = helper(props, moreProps);\n\t\treturn [x2, y2];\n\t};\n}\n\n\nfunction helper(props, moreProps) {\n\tconst { x1Value, x2Value, type } = props;\n\n\tconst { xScale, chartConfig: { yScale }, fullData } = moreProps;\n\tconst { xAccessor } = moreProps;\n\n\t/*\n\thttp://www.metastock.com/Customer/Resources/TAAZ/?p=65\n\ty = a + bx\n\tn = length of array\n\tb = (n * sum(x*y) - sum(xs) * sum(ys)) / (n * sum(xSquareds) - (sum(xs) ^ 2))\n\ta = (sum of closes)\n\t*/\n\n\tconst { left } = getClosestItemIndexes(fullData, x1Value, xAccessor);\n\tconst { right } = getClosestItemIndexes(fullData, x2Value, xAccessor);\n\n\tconst startIndex = Math.min(left, right);\n\tconst endIndex = Math.max(left, right) + 1;\n\n\tconst array = fullData.slice(startIndex, endIndex);\n\n\tconst xs = array.map(d => xAccessor(d).valueOf());\n\tconst ys = array.map(d => d.close);\n\tconst n = array.length;\n\n\tconst combine = zipper()\n\t\t.combine((x, y) => x * y);\n\n\tconst xys = combine(xs, ys);\n\tconst xSquareds = xs.map(x => Math.pow(x, 2));\n\n\tconst b = (n * sum(xys) - sum(xs) * sum(ys)) / (n * sum(xSquareds) - Math.pow(sum(xs), 2));\n\tconst a = (sum(ys) - b * sum(xs)) / n;\n\n\tconst newy1 = a + b * x1Value;\n\tconst newy2 = a + b * x2Value;\n\n\tconst x1 = xScale(x1Value);\n\tconst y1 = yScale(newy1);\n\tconst x2 = xScale(x2Value);\n\tconst y2 = yScale(newy2);\n\n\tconst stdDev = type === \"SD\"\n\t\t? deviation(array, d => d.close)\n\t\t: 0;\n\n\tconst dy = yScale(newy1 - stdDev) - y1;\n\n\treturn {\n\t\tx1, y1, x2, y2, dy\n\t};\n}\n\nLinearRegressionChannelWithArea.propTypes = {\n\tx1Value: PropTypes.any.isRequired,\n\tx2Value: PropTypes.any.isRequired,\n\n\ttype: PropTypes.oneOf([\n\t\t\"SD\", // standard deviation channel\n\t\t\"Raff\", // Raff Regression Channel\n\t]).isRequired,\n\n\tinteractiveCursorClass: PropTypes.string,\n\tstroke: PropTypes.string.isRequired,\n\tstrokeWidth: PropTypes.number.isRequired,\n\tfill: PropTypes.string.isRequired,\n\tfillOpacity: PropTypes.number.isRequired,\n\tstrokeOpacity: PropTypes.number.isRequired,\n\n\tonDragStart: PropTypes.func.isRequired,\n\tonDrag: PropTypes.func.isRequired,\n\tonDragComplete: PropTypes.func.isRequired,\n\n\tonHover: PropTypes.func,\n\tonUnHover: PropTypes.func,\n\n\tdefaultClassName: PropTypes.string,\n\n\ttolerance: PropTypes.number.isRequired,\n\tselected: PropTypes.bool.isRequired,\n};\n\nLinearRegressionChannelWithArea.defaultProps = {\n\tonDragStart: noop,\n\tonDrag: noop,\n\tonDragComplete: noop,\n\n\ttype: \"SD\", // standard dev\n\n\tstrokeWidth: 1,\n\ttolerance: 4,\n\tselected: false,\n};\n\nexport default LinearRegressionChannelWithArea;"]} \ No newline at end of file +{"version":3,"sources":["../../../../src/lib/interactive/components/LinearRegressionChannelWithArea.js"],"names":["edge1Provider","edge2Provider","LinearRegressionChannelWithArea","props","renderSVG","bind","drawOnCanvas","isHover","moreProps","tolerance","onHover","mouseXY","helper","x1","y1","x2","y2","dy","yDiffs","hovering","reduce","result","diff","ctx","stroke","strokeWidth","fillOpacity","strokeOpacity","fill","lineWidth","strokeStyle","fillStyle","beginPath","moveTo","lineTo","closePath","line","toString","selected","interactiveCursorClass","onUnHover","x1Value","x2Value","type","xScale","yScale","chartConfig","fullData","xAccessor","left","right","startIndex","Math","min","endIndex","max","array","slice","xs","map","d","valueOf","ys","close","n","length","combine","x","y","xys","xSquareds","pow","b","a","newy1","newy2","stdDev","propTypes","any","isRequired","oneOf","string","number","onDragStart","func","onDrag","onDragComplete","defaultClassName","bool","defaultProps"],"mappings":"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","file":"LinearRegressionChannelWithArea.js","sourcesContent":["import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { sum, deviation } from \"d3-array\";\nimport { path as d3Path } from \"d3-path\";\n\nimport GenericChartComponent from \"../../GenericChartComponent\";\nimport { getMouseCanvas } from \"../../GenericComponent\";\nimport { isHovering2 } from \"./StraightLine\";\n\nimport { isDefined, getClosestItemIndexes, noop, zipper, hexToRGBA } from \"../../utils\";\n\nclass LinearRegressionChannelWithArea extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\n\t\tthis.renderSVG = this.renderSVG.bind(this);\n\t\tthis.drawOnCanvas = this.drawOnCanvas.bind(this);\n\t\tthis.isHover = this.isHover.bind(this);\n\t}\n\tisHover(moreProps) {\n\t\tconst { tolerance, onHover } = this.props;\n\n\t\tif (isDefined(onHover)) {\n\t\t\tconst { mouseXY } = moreProps;\n\n\t\t\tconst { x1, y1, x2, y2, dy } = helper(this.props, moreProps);\n\t\t\tconst yDiffs = [-dy, 0, dy];\n\n\t\t\tconst hovering = yDiffs.reduce((result, diff) => result || isHovering2(\n\t\t\t\t[x1, y1 + diff], [x2, y2 + diff], mouseXY, tolerance\n\t\t\t), false);\n\t\t\treturn hovering;\n\t\t}\n\t\treturn false;\n\t}\n\tdrawOnCanvas(ctx, moreProps) {\n\t\tconst { stroke, strokeWidth, fillOpacity, strokeOpacity, fill } = this.props;\n\t\tconst { x1, y1, x2, y2, dy } = helper(this.props, moreProps);\n\n\t\tctx.lineWidth = strokeWidth;\n\t\tctx.strokeStyle = hexToRGBA(stroke, strokeOpacity);\n\t\tctx.fillStyle = hexToRGBA(fill, fillOpacity);\n\n\t\tctx.beginPath();\n\t\tctx.moveTo(x1, y1 - dy);\n\t\tctx.lineTo(x2, y2 - dy);\n\t\tctx.stroke();\n\n\t\tctx.beginPath();\n\t\tctx.moveTo(x2, y2 + dy);\n\t\tctx.lineTo(x1, y1 + dy);\n\t\tctx.stroke();\n\n\t\tctx.beginPath();\n\t\tctx.moveTo(x1, y1 - dy);\n\t\tctx.lineTo(x2, y2 - dy);\n\t\tctx.lineTo(x2, y2 + dy);\n\t\tctx.lineTo(x1, y1 + dy);\n\t\tctx.closePath();\n\t\tctx.fill();\n\n\t\tctx.beginPath();\n\t\tctx.moveTo(x2, y2);\n\t\tctx.lineTo(x1, y1);\n\t\tctx.stroke();\n\t}\n\trenderSVG(moreProps) {\n\t\tconst { stroke, strokeWidth, fillOpacity, strokeOpacity, fill } = this.props;\n\t\tconst { x1, y1, x2, y2, dy } = helper(this.props, moreProps);\n\t\tconst line = {\n\t\t\tstrokeWidth,\n\t\t\tstroke,\n\t\t\tstrokeOpacity,\n\t\t};\n\t\tconst ctx = d3Path();\n\t\tctx.moveTo(x1, y1 - dy);\n\t\tctx.lineTo(x2, y2 - dy);\n\t\tctx.lineTo(x2, y2 + dy);\n\t\tctx.lineTo(x1, y1 + dy);\n\t\tctx.closePath();\n\t\treturn (\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t);\n\t}\n\trender() {\n\t\tconst { selected, interactiveCursorClass } = this.props;\n\t\tconst { onHover, onUnHover } = this.props;\n\n\t\treturn ;\n\t}\n}\n\nexport function edge1Provider(props) {\n\treturn function(moreProps) {\n\t\tconst { x1, y1 } = helper(props, moreProps);\n\t\treturn [x1, y1];\n\t};\n}\n\nexport function edge2Provider(props) {\n\treturn function(moreProps) {\n\t\tconst { x2, y2 } = helper(props, moreProps);\n\t\treturn [x2, y2];\n\t};\n}\n\n\nfunction helper(props, moreProps) {\n\tconst { x1Value, x2Value, type } = props;\n\n\tconst { xScale, chartConfig: { yScale }, fullData } = moreProps;\n\tconst { xAccessor } = moreProps;\n\n\t/*\n\thttp://www.metastock.com/Customer/Resources/TAAZ/?p=65\n\ty = a + bx\n\tn = length of array\n\tb = (n * sum(x*y) - sum(xs) * sum(ys)) / (n * sum(xSquareds) - (sum(xs) ^ 2))\n\ta = (sum of closes)\n\t*/\n\n\tconst { left } = getClosestItemIndexes(fullData, x1Value, xAccessor);\n\tconst { right } = getClosestItemIndexes(fullData, x2Value, xAccessor);\n\n\tconst startIndex = Math.min(left, right);\n\tconst endIndex = Math.max(left, right) + 1;\n\n\tconst array = fullData.slice(startIndex, endIndex);\n\n\tconst xs = array.map(d => xAccessor(d).valueOf());\n\tconst ys = array.map(d => d.close);\n\tconst n = array.length;\n\n\tconst combine = zipper()\n\t\t.combine((x, y) => x * y);\n\n\tconst xys = combine(xs, ys);\n\tconst xSquareds = xs.map(x => Math.pow(x, 2));\n\n\tconst b = (n * sum(xys) - sum(xs) * sum(ys)) / (n * sum(xSquareds) - Math.pow(sum(xs), 2));\n\tconst a = (sum(ys) - b * sum(xs)) / n;\n\n\tconst newy1 = a + b * x1Value;\n\tconst newy2 = a + b * x2Value;\n\n\tconst x1 = xScale(x1Value);\n\tconst y1 = yScale(newy1);\n\tconst x2 = xScale(x2Value);\n\tconst y2 = yScale(newy2);\n\n\tconst stdDev = type === \"SD\"\n\t\t? deviation(array, d => d.close)\n\t\t: 0;\n\n\tconst dy = yScale(newy1 - stdDev) - y1;\n\n\treturn {\n\t\tx1, y1, x2, y2, dy\n\t};\n}\n\nLinearRegressionChannelWithArea.propTypes = {\n\tx1Value: PropTypes.any.isRequired,\n\tx2Value: PropTypes.any.isRequired,\n\n\ttype: PropTypes.oneOf([\n\t\t\"SD\", // standard deviation channel\n\t\t\"Raff\", // Raff Regression Channel\n\t]).isRequired,\n\n\tinteractiveCursorClass: PropTypes.string,\n\tstroke: PropTypes.string.isRequired,\n\tstrokeWidth: PropTypes.number.isRequired,\n\tfill: PropTypes.string.isRequired,\n\tfillOpacity: PropTypes.number.isRequired,\n\tstrokeOpacity: PropTypes.number.isRequired,\n\n\tonDragStart: PropTypes.func.isRequired,\n\tonDrag: PropTypes.func.isRequired,\n\tonDragComplete: PropTypes.func.isRequired,\n\n\tonHover: PropTypes.func,\n\tonUnHover: PropTypes.func,\n\n\tdefaultClassName: PropTypes.string,\n\n\ttolerance: PropTypes.number.isRequired,\n\tselected: PropTypes.bool.isRequired,\n};\n\nLinearRegressionChannelWithArea.defaultProps = {\n\tonDragStart: noop,\n\tonDrag: noop,\n\tonDragComplete: noop,\n\n\ttype: \"SD\", // standard dev\n\n\tstrokeWidth: 1,\n\ttolerance: 4,\n\tselected: false,\n};\n\nexport default LinearRegressionChannelWithArea;"]} \ No newline at end of file diff --git a/lib/interactive/wrapper/EachFibRetracement.js b/lib/interactive/wrapper/EachFibRetracement.js index 512ae99..b4a9d0e 100644 --- a/lib/interactive/wrapper/EachFibRetracement.js +++ b/lib/interactive/wrapper/EachFibRetracement.js @@ -266,7 +266,9 @@ var EachFibRetracement = function (_Component) { var lines = helper({ x1: x1, x2: x2, y1: y1, y2: y2 }); var hoverTextEnabled = hoverText.enable, - restHoverTextProps = _objectWithoutProperties(hoverText, ["enable"]); + hoverTextSelected = hoverText.selectedText, + hoverTextUnselected = hoverText.text, + restHoverTextProps = _objectWithoutProperties(hoverText, ["enable", "selectedText", "text"]); var lineType = type === "EXTEND" ? "XLINE" : type === "BOUND" ? "LINE" : type; var dir = (0, _utils.head)(lines).y1 > (0, _utils.last)(lines).y1 ? 3 : -1.3; @@ -368,12 +370,14 @@ var EachFibRetracement = function (_Component) { strokeWidth: edgeStrokeWidth, interactiveCursorClass: interactiveEdgeCursorClass, onDrag: edge2DragHandler, - onDragComplete: onDragComplete }), - _react2.default.createElement(_HoverTextNearMouse2.default, _extends({ - show: hoverTextEnabled && hover && !selected - }, restHoverTextProps)) + onDragComplete: onDragComplete }) ); - }) + }), + _react2.default.createElement(_HoverTextNearMouse2.default, _extends({ + show: hoverTextEnabled && hover + }, restHoverTextProps, { + text: selected ? hoverTextSelected : hoverTextUnselected + })) ); } }]); diff --git a/lib/interactive/wrapper/EachFibRetracement.js.map b/lib/interactive/wrapper/EachFibRetracement.js.map index 94b8784..b88791f 100644 --- a/lib/interactive/wrapper/EachFibRetracement.js.map +++ b/lib/interactive/wrapper/EachFibRetracement.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../../../src/lib/interactive/wrapper/EachFibRetracement.js"],"names":["EachFibRetracement","props","handleEdge1Drag","bind","handleEdge2Drag","handleLineNSResizeTop","handleLineNSResizeBottom","handleLineMove","handleLineDragStart","handleHover","isHover","saveNodeType","nodes","state","hover","moreProps","hovering","setState","x1","y1","x2","y2","dragStart","index","onDrag","x1Value","y1Value","x2Value","y2Value","xScale","yScale","chartConfig","xAccessor","fullData","startPos","mouseXY","dx","dy","newX1Value","newY1Value","invert","newX2Value","newY2Value","interactive","yDisplayFormat","type","appearance","stroke","strokeWidth","strokeOpacity","fontFamily","fontSize","fontFill","edgeStroke","edgeFill","nsEdgeFill","edgeStrokeWidth","r","hoverText","selected","onDragComplete","lines","helper","hoverTextEnabled","enable","restHoverTextProps","lineType","dir","map","line","j","text","y","percent","toFixed","xyProvider","start","end","x","Math","min","firstOrLast","length","interactiveCursorClass","interactiveEdgeCursorClass","dragHandler","edge1DragHandler","edge2DragHandler","hoverHandler","onHover","onUnHover","retracements","each","propTypes","any","isRequired","number","func","string","bool","shape","object","defaultProps","d"],"mappings":"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","file":"EachFibRetracement.js","sourcesContent":["import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport { head, last, noop } from \"../../utils\";\nimport { getXValue } from \"../../utils/ChartDataUtil\";\nimport { saveNodeType, isHover } from \"../utils\";\n\nimport { getNewXY } from \"./EachTrendLine\";\nimport StraightLine, { generateLine } from \"../components/StraightLine\";\nimport ClickableCircle from \"../components/ClickableCircle\";\nimport HoverTextNearMouse from \"../components/HoverTextNearMouse\";\nimport Text from \"../components/Text\";\n\nclass EachFibRetracement extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\n\t\tthis.handleEdge1Drag = this.handleEdge1Drag.bind(this);\n\t\tthis.handleEdge2Drag = this.handleEdge2Drag.bind(this);\n\n\t\tthis.handleLineNSResizeTop = this.handleLineNSResizeTop.bind(this);\n\t\tthis.handleLineNSResizeBottom = this.handleLineNSResizeBottom.bind(this);\n\t\tthis.handleLineMove = this.handleLineMove.bind(this);\n\n\t\tthis.handleLineDragStart = this.handleLineDragStart.bind(this);\n\n\t\tthis.handleHover = this.handleHover.bind(this);\n\n\t\tthis.isHover = isHover.bind(this);\n\t\tthis.saveNodeType = saveNodeType.bind(this);\n\t\tthis.nodes = {};\n\n\t\tthis.state = {\n\t\t\thover: false,\n\t\t};\n\t}\n\thandleHover(moreProps) {\n\t\tif (this.state.hover !== moreProps.hovering) {\n\t\t\tthis.setState({\n\t\t\t\thover: moreProps.hovering\n\t\t\t});\n\t\t}\n\t}\n\thandleLineDragStart() {\n\t\tconst {\n\t\t\tx1, y1, x2, y2,\n\t\t} = this.props;\n\n\t\tthis.dragStart = {\n\t\t\tx1, y1, x2, y2,\n\t\t};\n\t}\n\thandleLineMove(moreProps) {\n\t\tconst { index, onDrag } = this.props;\n\n\t\tconst {\n\t\t\tx1: x1Value, y1: y1Value, x2: x2Value, y2: y2Value,\n\t\t} = this.dragStart;\n\n\t\tconst { xScale, chartConfig: { yScale }, xAccessor, fullData } = moreProps;\n\t\tconst { startPos, mouseXY } = moreProps;\n\n\t\tconst x1 = xScale(x1Value);\n\t\tconst y1 = yScale(y1Value);\n\t\tconst x2 = xScale(x2Value);\n\t\tconst y2 = yScale(y2Value);\n\n\t\tconst dx = startPos[0] - mouseXY[0];\n\t\tconst dy = startPos[1] - mouseXY[1];\n\n\t\tconst newX1Value = getXValue(xScale, xAccessor, [x1 - dx, y1 - dy], fullData);\n\t\tconst newY1Value = yScale.invert(y1 - dy);\n\t\tconst newX2Value = getXValue(xScale, xAccessor, [x2 - dx, y2 - dy], fullData);\n\t\tconst newY2Value = yScale.invert(y2 - dy);\n\n\t\tonDrag(index, {\n\t\t\tx1: newX1Value,\n\t\t\ty1: newY1Value,\n\t\t\tx2: newX2Value,\n\t\t\ty2: newY2Value,\n\t\t});\n\t}\n\thandleLineNSResizeTop(moreProps) {\n\t\tconst { index, onDrag } = this.props;\n\t\tconst {\n\t\t\tx1, x2, y2,\n\t\t} = this.props;\n\n\t\tconst [, y1] = getNewXY(moreProps);\n\n\t\tonDrag(index, {\n\t\t\tx1,\n\t\t\ty1,\n\t\t\tx2,\n\t\t\ty2,\n\t\t});\n\t}\n\thandleLineNSResizeBottom(moreProps) {\n\t\tconst { index, onDrag } = this.props;\n\t\tconst {\n\t\t\tx1, y1, x2,\n\t\t} = this.props;\n\n\t\tconst [, y2] = getNewXY(moreProps);\n\n\t\tonDrag(index, {\n\t\t\tx1,\n\t\t\ty1,\n\t\t\tx2,\n\t\t\ty2,\n\t\t});\n\t}\n\thandleEdge1Drag(moreProps) {\n\t\tconst { index, onDrag } = this.props;\n\t\tconst {\n\t\t\ty1, x2, y2,\n\t\t} = this.props;\n\n\t\tconst [x1] = getNewXY(moreProps);\n\n\t\tonDrag(index, {\n\t\t\tx1,\n\t\t\ty1,\n\t\t\tx2,\n\t\t\ty2,\n\t\t});\n\t}\n\thandleEdge2Drag(moreProps) {\n\t\tconst { index, onDrag } = this.props;\n\t\tconst {\n\t\t\tx1, y1, y2,\n\t\t} = this.props;\n\n\t\tconst [x2] = getNewXY(moreProps);\n\n\t\tonDrag(index, {\n\t\t\tx1,\n\t\t\ty1,\n\t\t\tx2,\n\t\t\ty2,\n\t\t});\n\t}\n\trender() {\n\t\tconst { x1, x2, y1, y2 } = this.props;\n\t\tconst { interactive, yDisplayFormat, type, appearance } = this.props;\n\t\tconst { stroke, strokeWidth, strokeOpacity } = appearance;\n\t\tconst { fontFamily, fontSize, fontFill } = appearance;\n\t\tconst { edgeStroke, edgeFill, nsEdgeFill, edgeStrokeWidth, r } = appearance;\n\t\tconst { hoverText, selected } = this.props;\n\t\tconst { hover } = this.state;\n\t\tconst { onDragComplete } = this.props;\n\t\tconst lines = helper({ x1, x2, y1, y2 });\n\t\tconst { enable: hoverTextEnabled, ...restHoverTextProps } = hoverText;\n\n\t\tconst lineType = type === \"EXTEND\" ? \"XLINE\" : type === \"BOUND\" ? \"LINE\" : type;\n\t\tconst dir = head(lines).y1 > last(lines).y1 ? 3 : -1.3;\n\n\t\treturn \n\t\t\t{lines.map((line, j) => {\n\t\t\t\tconst text = `${yDisplayFormat(line.y)} (${line.percent.toFixed(2)}%)`;\n\n\t\t\t\tconst xyProvider = ({ xScale, chartConfig }) => {\n\t\t\t\t\tconst { yScale } = chartConfig;\n\t\t\t\t\tconst { x1, y1, x2 } = generateLine({\n\t\t\t\t\t\ttype: lineType,\n\t\t\t\t\t\tstart: [line.x1, line.y],\n\t\t\t\t\t\tend: [line.x2, line.y],\n\t\t\t\t\t\txScale,\n\t\t\t\t\t\tyScale,\n\t\t\t\t\t});\n\n\t\t\t\t\tconst x = xScale(Math.min(x1, x2)) + 10;\n\t\t\t\t\tconst y = yScale(y1) + dir * 4;\n\t\t\t\t\treturn [x, y];\n\t\t\t\t};\n\n\t\t\t\tconst firstOrLast = (j === 0) || (j === lines.length - 1);\n\n\t\t\t\tconst interactiveCursorClass = firstOrLast\n\t\t\t\t\t? \"react-stockcharts-ns-resize-cursor\"\n\t\t\t\t\t: \"react-stockcharts-move-cursor\";\n\n\t\t\t\tconst interactiveEdgeCursorClass = firstOrLast\n\t\t\t\t\t? \"react-stockcharts-ns-resize-cursor\"\n\t\t\t\t\t: \"react-stockcharts-ew-resize-cursor\";\n\n\t\t\t\tconst dragHandler = j === 0\n\t\t\t\t\t? this.handleLineNSResizeTop\n\t\t\t\t\t: j === lines.length - 1\n\t\t\t\t\t\t? this.handleLineNSResizeBottom\n\t\t\t\t\t\t: this.handleLineMove;\n\n\t\t\t\tconst edge1DragHandler = j === 0\n\t\t\t\t\t? this.handleLineNSResizeTop\n\t\t\t\t\t: j === lines.length - 1\n\t\t\t\t\t\t? this.handleLineNSResizeBottom\n\t\t\t\t\t\t: this.handleEdge1Drag;\n\t\t\t\tconst edge2DragHandler = j === 0\n\t\t\t\t\t? this.handleLineNSResizeTop\n\t\t\t\t\t: j === lines.length - 1\n\t\t\t\t\t\t? this.handleLineNSResizeBottom\n\t\t\t\t\t\t: this.handleEdge2Drag;\n\n\t\t\t\tconst hoverHandler = interactive\n\t\t\t\t\t? { onHover: this.handleHover, onUnHover: this.handleHover }\n\t\t\t\t\t: {};\n\t\t\t\treturn \n\t\t\t\t\t\n\t\t\t\t\t{text}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t;\n\t\t\t})}\n\t\t;\n\t}\n}\n\n\nfunction helper({ x1, y1, x2, y2 }) {\n\tconst dy = y2 - y1;\n\tconst retracements = [100, 61.8, 50, 38.2, 23.6, 0]\n\t\t.map(each => ({\n\t\t\tpercent: each,\n\t\t\tx1,\n\t\t\tx2,\n\t\t\ty: (y2 - (each / 100) * dy),\n\t\t}));\n\n\treturn retracements;\n}\n\nEachFibRetracement.propTypes = {\n\tx1: PropTypes.any.isRequired,\n\tx2: PropTypes.any.isRequired,\n\ty1: PropTypes.number.isRequired,\n\ty2: PropTypes.number.isRequired,\n\n\tyDisplayFormat: PropTypes.func.isRequired,\n\ttype: PropTypes.string.isRequired,\n\tselected: PropTypes.bool.isRequired,\n\n\tappearance: PropTypes.shape({\n\t\tstroke: PropTypes.string.isRequired,\n\t\tstrokeWidth: PropTypes.number.isRequired,\n\t\tstrokeOpacity: PropTypes.number.isRequired,\n\t\tfontFamily: PropTypes.string.isRequired,\n\t\tfontSize: PropTypes.number.isRequired,\n\t\tfontFill: PropTypes.string.isRequired,\n\t\tedgeStroke: PropTypes.string.isRequired,\n\t\tedgeFill: PropTypes.string.isRequired,\n\t\tnsEdgeFill: PropTypes.string.isRequired,\n\t\tedgeStrokeWidth: PropTypes.number.isRequired,\n\t\tr: PropTypes.number.isRequired,\n\t}).isRequired,\n\n\tinteractive: PropTypes.bool.isRequired,\n\thoverText: PropTypes.object.isRequired,\n\n\tindex: PropTypes.number,\n\tonDrag: PropTypes.func.isRequired,\n\tonDragComplete: PropTypes.func.isRequired,\n};\n\nEachFibRetracement.defaultProps = {\n\tyDisplayFormat: d => d.toFixed(2),\n\tinteractive: true,\n\n\tappearance: {\n\t\tstroke: \"#000000\",\n\t\tstrokeWidth: 1,\n\t\tstrokeOpacity: 1,\n\t\tfontFamily: \"Helvetica Neue, Helvetica, Arial, sans-serif\",\n\t\tfontSize: 10,\n\t\tfontFill: \"#000000\",\n\t\tedgeStroke: \"#000000\",\n\t\tedgeFill: \"#FFFFFF\",\n\t\tnsEdgeFill: \"#000000\",\n\t\tedgeStrokeWidth: 1,\n\t\tr: 5,\n\t},\n\tselected: false,\n\n\tonDrag: noop,\n\tonDragComplete: noop,\n\n\thoverText: {\n\t\tenable: false,\n\t}\n};\n\nexport default EachFibRetracement;\n"]} \ No newline at end of file +{"version":3,"sources":["../../../../src/lib/interactive/wrapper/EachFibRetracement.js"],"names":["EachFibRetracement","props","handleEdge1Drag","bind","handleEdge2Drag","handleLineNSResizeTop","handleLineNSResizeBottom","handleLineMove","handleLineDragStart","handleHover","isHover","saveNodeType","nodes","state","hover","moreProps","hovering","setState","x1","y1","x2","y2","dragStart","index","onDrag","x1Value","y1Value","x2Value","y2Value","xScale","yScale","chartConfig","xAccessor","fullData","startPos","mouseXY","dx","dy","newX1Value","newY1Value","invert","newX2Value","newY2Value","interactive","yDisplayFormat","type","appearance","stroke","strokeWidth","strokeOpacity","fontFamily","fontSize","fontFill","edgeStroke","edgeFill","nsEdgeFill","edgeStrokeWidth","r","hoverText","selected","onDragComplete","lines","helper","hoverTextEnabled","enable","hoverTextSelected","selectedText","hoverTextUnselected","text","restHoverTextProps","lineType","dir","map","line","j","y","percent","toFixed","xyProvider","start","end","x","Math","min","firstOrLast","length","interactiveCursorClass","interactiveEdgeCursorClass","dragHandler","edge1DragHandler","edge2DragHandler","hoverHandler","onHover","onUnHover","retracements","each","propTypes","any","isRequired","number","func","string","bool","shape","object","defaultProps","d"],"mappings":"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","file":"EachFibRetracement.js","sourcesContent":["import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport { head, last, noop } from \"../../utils\";\nimport { getXValue } from \"../../utils/ChartDataUtil\";\nimport { saveNodeType, isHover } from \"../utils\";\n\nimport { getNewXY } from \"./EachTrendLine\";\nimport StraightLine, { generateLine } from \"../components/StraightLine\";\nimport ClickableCircle from \"../components/ClickableCircle\";\nimport HoverTextNearMouse from \"../components/HoverTextNearMouse\";\nimport Text from \"../components/Text\";\n\nclass EachFibRetracement extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\n\t\tthis.handleEdge1Drag = this.handleEdge1Drag.bind(this);\n\t\tthis.handleEdge2Drag = this.handleEdge2Drag.bind(this);\n\n\t\tthis.handleLineNSResizeTop = this.handleLineNSResizeTop.bind(this);\n\t\tthis.handleLineNSResizeBottom = this.handleLineNSResizeBottom.bind(this);\n\t\tthis.handleLineMove = this.handleLineMove.bind(this);\n\n\t\tthis.handleLineDragStart = this.handleLineDragStart.bind(this);\n\n\t\tthis.handleHover = this.handleHover.bind(this);\n\n\t\tthis.isHover = isHover.bind(this);\n\t\tthis.saveNodeType = saveNodeType.bind(this);\n\t\tthis.nodes = {};\n\n\t\tthis.state = {\n\t\t\thover: false,\n\t\t};\n\t}\n\thandleHover(moreProps) {\n\t\tif (this.state.hover !== moreProps.hovering) {\n\t\t\tthis.setState({\n\t\t\t\thover: moreProps.hovering\n\t\t\t});\n\t\t}\n\t}\n\thandleLineDragStart() {\n\t\tconst {\n\t\t\tx1, y1, x2, y2,\n\t\t} = this.props;\n\n\t\tthis.dragStart = {\n\t\t\tx1, y1, x2, y2,\n\t\t};\n\t}\n\thandleLineMove(moreProps) {\n\t\tconst { index, onDrag } = this.props;\n\n\t\tconst {\n\t\t\tx1: x1Value, y1: y1Value, x2: x2Value, y2: y2Value,\n\t\t} = this.dragStart;\n\n\t\tconst { xScale, chartConfig: { yScale }, xAccessor, fullData } = moreProps;\n\t\tconst { startPos, mouseXY } = moreProps;\n\n\t\tconst x1 = xScale(x1Value);\n\t\tconst y1 = yScale(y1Value);\n\t\tconst x2 = xScale(x2Value);\n\t\tconst y2 = yScale(y2Value);\n\n\t\tconst dx = startPos[0] - mouseXY[0];\n\t\tconst dy = startPos[1] - mouseXY[1];\n\n\t\tconst newX1Value = getXValue(xScale, xAccessor, [x1 - dx, y1 - dy], fullData);\n\t\tconst newY1Value = yScale.invert(y1 - dy);\n\t\tconst newX2Value = getXValue(xScale, xAccessor, [x2 - dx, y2 - dy], fullData);\n\t\tconst newY2Value = yScale.invert(y2 - dy);\n\n\t\tonDrag(index, {\n\t\t\tx1: newX1Value,\n\t\t\ty1: newY1Value,\n\t\t\tx2: newX2Value,\n\t\t\ty2: newY2Value,\n\t\t});\n\t}\n\thandleLineNSResizeTop(moreProps) {\n\t\tconst { index, onDrag } = this.props;\n\t\tconst {\n\t\t\tx1, x2, y2,\n\t\t} = this.props;\n\n\t\tconst [, y1] = getNewXY(moreProps);\n\n\t\tonDrag(index, {\n\t\t\tx1,\n\t\t\ty1,\n\t\t\tx2,\n\t\t\ty2,\n\t\t});\n\t}\n\thandleLineNSResizeBottom(moreProps) {\n\t\tconst { index, onDrag } = this.props;\n\t\tconst {\n\t\t\tx1, y1, x2,\n\t\t} = this.props;\n\n\t\tconst [, y2] = getNewXY(moreProps);\n\n\t\tonDrag(index, {\n\t\t\tx1,\n\t\t\ty1,\n\t\t\tx2,\n\t\t\ty2,\n\t\t});\n\t}\n\thandleEdge1Drag(moreProps) {\n\t\tconst { index, onDrag } = this.props;\n\t\tconst {\n\t\t\ty1, x2, y2,\n\t\t} = this.props;\n\n\t\tconst [x1] = getNewXY(moreProps);\n\n\t\tonDrag(index, {\n\t\t\tx1,\n\t\t\ty1,\n\t\t\tx2,\n\t\t\ty2,\n\t\t});\n\t}\n\thandleEdge2Drag(moreProps) {\n\t\tconst { index, onDrag } = this.props;\n\t\tconst {\n\t\t\tx1, y1, y2,\n\t\t} = this.props;\n\n\t\tconst [x2] = getNewXY(moreProps);\n\n\t\tonDrag(index, {\n\t\t\tx1,\n\t\t\ty1,\n\t\t\tx2,\n\t\t\ty2,\n\t\t});\n\t}\n\trender() {\n\t\tconst { x1, x2, y1, y2 } = this.props;\n\t\tconst { interactive, yDisplayFormat, type, appearance } = this.props;\n\t\tconst { stroke, strokeWidth, strokeOpacity } = appearance;\n\t\tconst { fontFamily, fontSize, fontFill } = appearance;\n\t\tconst { edgeStroke, edgeFill, nsEdgeFill, edgeStrokeWidth, r } = appearance;\n\t\tconst { hoverText, selected } = this.props;\n\t\tconst { hover } = this.state;\n\t\tconst { onDragComplete } = this.props;\n\t\tconst lines = helper({ x1, x2, y1, y2 });\n\n\t\tconst {\n\t\t\tenable: hoverTextEnabled,\n\t\t\tselectedText: hoverTextSelected,\n\t\t\ttext: hoverTextUnselected,\n\t\t\t...restHoverTextProps\n\t\t} = hoverText;\n\n\t\tconst lineType = type === \"EXTEND\" ? \"XLINE\" : type === \"BOUND\" ? \"LINE\" : type;\n\t\tconst dir = head(lines).y1 > last(lines).y1 ? 3 : -1.3;\n\n\t\treturn (\n\t\t\t\n\t\t\t\t{lines.map((line, j) => {\n\t\t\t\t\tconst text = `${yDisplayFormat(line.y)} (${line.percent.toFixed(2)}%)`;\n\n\t\t\t\t\tconst xyProvider = ({ xScale, chartConfig }) => {\n\t\t\t\t\t\tconst { yScale } = chartConfig;\n\t\t\t\t\t\tconst { x1, y1, x2 } = generateLine({\n\t\t\t\t\t\t\ttype: lineType,\n\t\t\t\t\t\t\tstart: [line.x1, line.y],\n\t\t\t\t\t\t\tend: [line.x2, line.y],\n\t\t\t\t\t\t\txScale,\n\t\t\t\t\t\t\tyScale,\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tconst x = xScale(Math.min(x1, x2)) + 10;\n\t\t\t\t\t\tconst y = yScale(y1) + dir * 4;\n\t\t\t\t\t\treturn [x, y];\n\t\t\t\t\t};\n\n\t\t\t\t\tconst firstOrLast = (j === 0) || (j === lines.length - 1);\n\n\t\t\t\t\tconst interactiveCursorClass = firstOrLast\n\t\t\t\t\t\t? \"react-stockcharts-ns-resize-cursor\"\n\t\t\t\t\t\t: \"react-stockcharts-move-cursor\";\n\n\t\t\t\t\tconst interactiveEdgeCursorClass = firstOrLast\n\t\t\t\t\t\t? \"react-stockcharts-ns-resize-cursor\"\n\t\t\t\t\t\t: \"react-stockcharts-ew-resize-cursor\";\n\n\t\t\t\t\tconst dragHandler = j === 0\n\t\t\t\t\t\t? this.handleLineNSResizeTop\n\t\t\t\t\t\t: j === lines.length - 1\n\t\t\t\t\t\t\t? this.handleLineNSResizeBottom\n\t\t\t\t\t\t\t: this.handleLineMove;\n\n\t\t\t\t\tconst edge1DragHandler = j === 0\n\t\t\t\t\t\t? this.handleLineNSResizeTop\n\t\t\t\t\t\t: j === lines.length - 1\n\t\t\t\t\t\t\t? this.handleLineNSResizeBottom\n\t\t\t\t\t\t\t: this.handleEdge1Drag;\n\t\t\t\t\tconst edge2DragHandler = j === 0\n\t\t\t\t\t\t? this.handleLineNSResizeTop\n\t\t\t\t\t\t: j === lines.length - 1\n\t\t\t\t\t\t\t? this.handleLineNSResizeBottom\n\t\t\t\t\t\t\t: this.handleEdge2Drag;\n\n\t\t\t\t\tconst hoverHandler = interactive\n\t\t\t\t\t\t? { onHover: this.handleHover, onUnHover: this.handleHover }\n\t\t\t\t\t\t: {};\n\t\t\t\t\treturn \n\t\t\t\t\t\t\n\t\t\t\t\t\t{text}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t;\n\t\t\t\t})}\n\t\t\t\t\n\t\t\t\n\t\t);\n\t}\n}\n\n\nfunction helper({ x1, y1, x2, y2 }) {\n\tconst dy = y2 - y1;\n\tconst retracements = [100, 61.8, 50, 38.2, 23.6, 0]\n\t\t.map(each => ({\n\t\t\tpercent: each,\n\t\t\tx1,\n\t\t\tx2,\n\t\t\ty: (y2 - (each / 100) * dy),\n\t\t}));\n\n\treturn retracements;\n}\n\nEachFibRetracement.propTypes = {\n\tx1: PropTypes.any.isRequired,\n\tx2: PropTypes.any.isRequired,\n\ty1: PropTypes.number.isRequired,\n\ty2: PropTypes.number.isRequired,\n\n\tyDisplayFormat: PropTypes.func.isRequired,\n\ttype: PropTypes.string.isRequired,\n\tselected: PropTypes.bool.isRequired,\n\n\tappearance: PropTypes.shape({\n\t\tstroke: PropTypes.string.isRequired,\n\t\tstrokeWidth: PropTypes.number.isRequired,\n\t\tstrokeOpacity: PropTypes.number.isRequired,\n\t\tfontFamily: PropTypes.string.isRequired,\n\t\tfontSize: PropTypes.number.isRequired,\n\t\tfontFill: PropTypes.string.isRequired,\n\t\tedgeStroke: PropTypes.string.isRequired,\n\t\tedgeFill: PropTypes.string.isRequired,\n\t\tnsEdgeFill: PropTypes.string.isRequired,\n\t\tedgeStrokeWidth: PropTypes.number.isRequired,\n\t\tr: PropTypes.number.isRequired,\n\t}).isRequired,\n\n\tinteractive: PropTypes.bool.isRequired,\n\thoverText: PropTypes.object.isRequired,\n\n\tindex: PropTypes.number,\n\tonDrag: PropTypes.func.isRequired,\n\tonDragComplete: PropTypes.func.isRequired,\n};\n\nEachFibRetracement.defaultProps = {\n\tyDisplayFormat: d => d.toFixed(2),\n\tinteractive: true,\n\n\tappearance: {\n\t\tstroke: \"#000000\",\n\t\tstrokeWidth: 1,\n\t\tstrokeOpacity: 1,\n\t\tfontFamily: \"Helvetica Neue, Helvetica, Arial, sans-serif\",\n\t\tfontSize: 10,\n\t\tfontFill: \"#000000\",\n\t\tedgeStroke: \"#000000\",\n\t\tedgeFill: \"#FFFFFF\",\n\t\tnsEdgeFill: \"#000000\",\n\t\tedgeStrokeWidth: 1,\n\t\tr: 5,\n\t},\n\tselected: false,\n\n\tonDrag: noop,\n\tonDragComplete: noop,\n\n\thoverText: {\n\t\tenable: false,\n\t}\n};\n\nexport default EachFibRetracement;\n"]} \ No newline at end of file diff --git a/lib/interactive/wrapper/EachLinearRegressionChannel.js b/lib/interactive/wrapper/EachLinearRegressionChannel.js index 1e54909..e0ac920 100644 --- a/lib/interactive/wrapper/EachLinearRegressionChannel.js +++ b/lib/interactive/wrapper/EachLinearRegressionChannel.js @@ -143,10 +143,9 @@ var EachLinearRegressionChannel = function (_Component) { var hoverHandler = interactive ? { onHover: this.handleHover, onUnHover: this.handleHover } : {}; var hoverTextEnabled = hoverText.enable, - restHoverTextProps = _objectWithoutProperties(hoverText, ["enable"]); - - // console.log("SELECTED ->", selected); - + hoverTextSelected = hoverText.selectedText, + hoverTextUnselected = hoverText.text, + restHoverTextProps = _objectWithoutProperties(hoverText, ["enable", "selectedText", "text"]); return _react2.default.createElement( "g", @@ -186,8 +185,10 @@ var EachLinearRegressionChannel = function (_Component) { onDrag: this.handleEdge2Drag, onDragComplete: onDragComplete }), _react2.default.createElement(_HoverTextNearMouse2.default, _extends({ - show: hoverTextEnabled && hover && !selected - }, restHoverTextProps)) + show: hoverTextEnabled && hover + }, restHoverTextProps, { + text: selected ? hoverTextSelected : hoverTextUnselected + })) ); } }]); diff --git a/lib/interactive/wrapper/EachLinearRegressionChannel.js.map b/lib/interactive/wrapper/EachLinearRegressionChannel.js.map index 236b013..d43c177 100644 --- a/lib/interactive/wrapper/EachLinearRegressionChannel.js.map +++ b/lib/interactive/wrapper/EachLinearRegressionChannel.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../../../src/lib/interactive/wrapper/EachLinearRegressionChannel.js"],"names":["getNewXY","EachLinearRegressionChannel","props","handleEdge1Drag","bind","handleEdge2Drag","handleHover","isHover","saveNodeType","nodes","state","hover","moreProps","index","onDrag","snapTo","x2Value","x1Value","hovering","setState","appearance","edgeInteractiveCursor","hoverText","interactive","selected","onDragComplete","stroke","strokeWidth","strokeOpacity","fill","fillOpacity","r","edgeStrokeWidth","edgeFill","edgeStroke","hoverHandler","onHover","onUnHover","hoverTextEnabled","enable","restHoverTextProps","xScale","xAccessor","plotData","mouseXY","currentItem","x","y","propTypes","defaultClassName","string","any","isRequired","number","shape","func","bool","object","defaultProps","bgHeight","bgWidth","text"],"mappings":"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","file":"EachLinearRegressionChannel.js","sourcesContent":["import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport { noop } from \"../../utils\";\nimport { getCurrentItem } from \"../../utils/ChartDataUtil\";\nimport { saveNodeType, isHover } from \"../utils\";\n\nimport HoverTextNearMouse from \"../components/HoverTextNearMouse\";\nimport {\n\tdefault as LinearRegressionChannelWithArea,\n\tedge1Provider,\n\tedge2Provider\n} from \"../components/LinearRegressionChannelWithArea\";\n\nimport ClickableCircle from \"../components/ClickableCircle\";\n\nclass EachLinearRegressionChannel extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\n\t\tthis.handleEdge1Drag = this.handleEdge1Drag.bind(this);\n\t\tthis.handleEdge2Drag = this.handleEdge2Drag.bind(this);\n\n\t\tthis.handleHover = this.handleHover.bind(this);\n\n\t\tthis.isHover = isHover.bind(this);\n\t\tthis.saveNodeType = saveNodeType.bind(this);\n\t\tthis.nodes = {};\n\n\t\tthis.state = {\n\t\t\thover: false,\n\t\t};\n\t}\n\thandleEdge1Drag(moreProps) {\n\t\tconst { index, onDrag, snapTo } = this.props;\n\t\tconst {\n\t\t\tx2Value,\n\t\t} = this.props;\n\n\t\tconst [x1Value] = getNewXY(moreProps, snapTo);\n\n\t\tonDrag(index, {\n\t\t\tx1Value,\n\t\t\tx2Value,\n\t\t});\n\t}\n\thandleEdge2Drag(moreProps) {\n\t\tconst { index, onDrag, snapTo } = this.props;\n\t\tconst {\n\t\t\tx1Value,\n\t\t} = this.props;\n\n\t\tconst [x2Value] = getNewXY(moreProps, snapTo);\n\n\t\tonDrag(index, {\n\t\t\tx1Value,\n\t\t\tx2Value,\n\t\t});\n\t}\n\thandleHover(moreProps) {\n\t\tif (this.state.hover !== moreProps.hovering) {\n\t\t\tthis.setState({\n\t\t\t\thover: moreProps.hovering\n\t\t\t});\n\t\t}\n\t}\n\trender() {\n\t\tconst {\n\t\t\tx1Value,\n\t\t\tx2Value,\n\t\t\tappearance,\n\t\t\tedgeInteractiveCursor,\n\t\t\thoverText,\n\t\t\tinteractive,\n\t\t\tselected,\n\t\t\tonDragComplete,\n\t\t} = this.props;\n\t\tconst {\n\t\t\tstroke,\n\t\t\tstrokeWidth,\n\t\t\tstrokeOpacity,\n\t\t\tfill,\n\t\t\tfillOpacity,\n\t\t\tr,\n\t\t\tedgeStrokeWidth,\n\t\t\tedgeFill,\n\t\t\tedgeStroke,\n\t\t} = appearance;\n\t\tconst { hover } = this.state;\n\n\t\tconst hoverHandler = interactive\n\t\t\t? { onHover: this.handleHover, onUnHover: this.handleHover }\n\t\t\t: {};\n\t\tconst { enable: hoverTextEnabled, ...restHoverTextProps } = hoverText;\n\n\t\t// console.log(\"SELECTED ->\", selected);\n\t\treturn \n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t;\n\t}\n}\n\nexport function getNewXY(moreProps, snapTo) {\n\tconst { xScale, xAccessor, plotData, mouseXY } = moreProps;\n\n\tconst currentItem = getCurrentItem(xScale, xAccessor, mouseXY, plotData);\n\tconst x = xAccessor(currentItem);\n\tconst y = snapTo(currentItem);\n\n\treturn [x, y];\n}\n\nEachLinearRegressionChannel.propTypes = {\n\tdefaultClassName: PropTypes.string,\n\n\tx1Value: PropTypes.any.isRequired,\n\tx2Value: PropTypes.any.isRequired,\n\n\tindex: PropTypes.number,\n\n\tappearance: PropTypes.shape({\n\t\tstroke: PropTypes.string.isRequired,\n\t\tfillOpacity: PropTypes.number.isRequired,\n\t\tstrokeOpacity: PropTypes.number.isRequired,\n\t\tstrokeWidth: PropTypes.number.isRequired,\n\t\tfill: PropTypes.string.isRequired,\n\t\tedgeStrokeWidth: PropTypes.number.isRequired,\n\t\tedgeStroke: PropTypes.string.isRequired,\n\t\tedgeFill: PropTypes.string.isRequired,\n\t\tr: PropTypes.number.isRequired,\n\t}).isRequired,\n\n\tedgeInteractiveCursor: PropTypes.string,\n\tonDrag: PropTypes.func.isRequired,\n\tonDragComplete: PropTypes.func.isRequired,\n\tsnapTo: PropTypes.func,\n\tinteractive: PropTypes.bool.isRequired,\n\tselected: PropTypes.bool.isRequired,\n\n\thoverText: PropTypes.object.isRequired,\n};\n\nEachLinearRegressionChannel.defaultProps = {\n\tonDrag: noop,\n\tonDragComplete: noop,\n\n\tappearance: {\n\t\tstroke: \"#000000\",\n\t\tfillOpacity: 0.7,\n\t\tstrokeOpacity: 1,\n\t\tstrokeWidth: 1,\n\t\tfill: \"#8AAFE2\",\n\t\tedgeStrokeWidth: 2,\n\t\tedgeStroke: \"#000000\",\n\t\tedgeFill: \"#FFFFFF\",\n\t\tr: 5,\n\t},\n\tinteractive: true,\n\tselected: false,\n\thoverText: {\n\t\t...HoverTextNearMouse.defaultProps,\n\t\tenable: true,\n\t\tbgHeight: 18,\n\t\tbgWidth: 175,\n\t\ttext: \"Click and drag the edge circles\",\n\t}\n};\n\nexport default EachLinearRegressionChannel;"]} \ No newline at end of file +{"version":3,"sources":["../../../../src/lib/interactive/wrapper/EachLinearRegressionChannel.js"],"names":["getNewXY","EachLinearRegressionChannel","props","handleEdge1Drag","bind","handleEdge2Drag","handleHover","isHover","saveNodeType","nodes","state","hover","moreProps","index","onDrag","snapTo","x2Value","x1Value","hovering","setState","appearance","edgeInteractiveCursor","hoverText","interactive","selected","onDragComplete","stroke","strokeWidth","strokeOpacity","fill","fillOpacity","r","edgeStrokeWidth","edgeFill","edgeStroke","hoverHandler","onHover","onUnHover","hoverTextEnabled","enable","hoverTextSelected","selectedText","hoverTextUnselected","text","restHoverTextProps","xScale","xAccessor","plotData","mouseXY","currentItem","x","y","propTypes","defaultClassName","string","any","isRequired","number","shape","func","bool","object","defaultProps","bgHeight","bgWidth"],"mappings":"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","file":"EachLinearRegressionChannel.js","sourcesContent":["import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport { noop } from \"../../utils\";\nimport { getCurrentItem } from \"../../utils/ChartDataUtil\";\nimport { saveNodeType, isHover } from \"../utils\";\n\nimport HoverTextNearMouse from \"../components/HoverTextNearMouse\";\nimport {\n\tdefault as LinearRegressionChannelWithArea,\n\tedge1Provider,\n\tedge2Provider\n} from \"../components/LinearRegressionChannelWithArea\";\n\nimport ClickableCircle from \"../components/ClickableCircle\";\n\nclass EachLinearRegressionChannel extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\n\t\tthis.handleEdge1Drag = this.handleEdge1Drag.bind(this);\n\t\tthis.handleEdge2Drag = this.handleEdge2Drag.bind(this);\n\n\t\tthis.handleHover = this.handleHover.bind(this);\n\n\t\tthis.isHover = isHover.bind(this);\n\t\tthis.saveNodeType = saveNodeType.bind(this);\n\t\tthis.nodes = {};\n\n\t\tthis.state = {\n\t\t\thover: false,\n\t\t};\n\t}\n\thandleEdge1Drag(moreProps) {\n\t\tconst { index, onDrag, snapTo } = this.props;\n\t\tconst {\n\t\t\tx2Value,\n\t\t} = this.props;\n\n\t\tconst [x1Value] = getNewXY(moreProps, snapTo);\n\n\t\tonDrag(index, {\n\t\t\tx1Value,\n\t\t\tx2Value,\n\t\t});\n\t}\n\thandleEdge2Drag(moreProps) {\n\t\tconst { index, onDrag, snapTo } = this.props;\n\t\tconst {\n\t\t\tx1Value,\n\t\t} = this.props;\n\n\t\tconst [x2Value] = getNewXY(moreProps, snapTo);\n\n\t\tonDrag(index, {\n\t\t\tx1Value,\n\t\t\tx2Value,\n\t\t});\n\t}\n\thandleHover(moreProps) {\n\t\tif (this.state.hover !== moreProps.hovering) {\n\t\t\tthis.setState({\n\t\t\t\thover: moreProps.hovering\n\t\t\t});\n\t\t}\n\t}\n\trender() {\n\t\tconst {\n\t\t\tx1Value,\n\t\t\tx2Value,\n\t\t\tappearance,\n\t\t\tedgeInteractiveCursor,\n\t\t\thoverText,\n\t\t\tinteractive,\n\t\t\tselected,\n\t\t\tonDragComplete,\n\t\t} = this.props;\n\t\tconst {\n\t\t\tstroke,\n\t\t\tstrokeWidth,\n\t\t\tstrokeOpacity,\n\t\t\tfill,\n\t\t\tfillOpacity,\n\t\t\tr,\n\t\t\tedgeStrokeWidth,\n\t\t\tedgeFill,\n\t\t\tedgeStroke,\n\t\t} = appearance;\n\t\tconst { hover } = this.state;\n\n\t\tconst hoverHandler = interactive\n\t\t\t? { onHover: this.handleHover, onUnHover: this.handleHover }\n\t\t\t: {};\n\n\t\tconst {\n\t\t\tenable: hoverTextEnabled,\n\t\t\tselectedText: hoverTextSelected,\n\t\t\ttext: hoverTextUnselected,\n\t\t\t...restHoverTextProps\n\t\t} = hoverText;\n\n\t\treturn \n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t;\n\t}\n}\n\nexport function getNewXY(moreProps, snapTo) {\n\tconst { xScale, xAccessor, plotData, mouseXY } = moreProps;\n\n\tconst currentItem = getCurrentItem(xScale, xAccessor, mouseXY, plotData);\n\tconst x = xAccessor(currentItem);\n\tconst y = snapTo(currentItem);\n\n\treturn [x, y];\n}\n\nEachLinearRegressionChannel.propTypes = {\n\tdefaultClassName: PropTypes.string,\n\n\tx1Value: PropTypes.any.isRequired,\n\tx2Value: PropTypes.any.isRequired,\n\n\tindex: PropTypes.number,\n\n\tappearance: PropTypes.shape({\n\t\tstroke: PropTypes.string.isRequired,\n\t\tfillOpacity: PropTypes.number.isRequired,\n\t\tstrokeOpacity: PropTypes.number.isRequired,\n\t\tstrokeWidth: PropTypes.number.isRequired,\n\t\tfill: PropTypes.string.isRequired,\n\t\tedgeStrokeWidth: PropTypes.number.isRequired,\n\t\tedgeStroke: PropTypes.string.isRequired,\n\t\tedgeFill: PropTypes.string.isRequired,\n\t\tr: PropTypes.number.isRequired,\n\t}).isRequired,\n\n\tedgeInteractiveCursor: PropTypes.string,\n\tonDrag: PropTypes.func.isRequired,\n\tonDragComplete: PropTypes.func.isRequired,\n\tsnapTo: PropTypes.func,\n\tinteractive: PropTypes.bool.isRequired,\n\tselected: PropTypes.bool.isRequired,\n\n\thoverText: PropTypes.object.isRequired,\n};\n\nEachLinearRegressionChannel.defaultProps = {\n\tonDrag: noop,\n\tonDragComplete: noop,\n\n\tappearance: {\n\t\tstroke: \"#000000\",\n\t\tfillOpacity: 0.7,\n\t\tstrokeOpacity: 1,\n\t\tstrokeWidth: 1,\n\t\tfill: \"#8AAFE2\",\n\t\tedgeStrokeWidth: 2,\n\t\tedgeStroke: \"#000000\",\n\t\tedgeFill: \"#FFFFFF\",\n\t\tr: 5,\n\t},\n\tinteractive: true,\n\tselected: false,\n\thoverText: {\n\t\t...HoverTextNearMouse.defaultProps,\n\t\tenable: true,\n\t\tbgHeight: 18,\n\t\tbgWidth: 175,\n\t\ttext: \"Click and drag the edge circles\",\n\t}\n};\n\nexport default EachLinearRegressionChannel;"]} \ No newline at end of file diff --git a/lib/interactive/wrapper/EachText.js b/lib/interactive/wrapper/EachText.js index 7b0eea6..03d5dcd 100644 --- a/lib/interactive/wrapper/EachText.js +++ b/lib/interactive/wrapper/EachText.js @@ -129,6 +129,8 @@ var EachText = function (_Component) { position = _props2.position, bgFill = _props2.bgFill, bgOpacity = _props2.bgOpacity, + bgStroke = _props2.bgStroke, + bgStrokeWidth = _props2.bgStrokeWidth, textFill = _props2.textFill, fontFamily = _props2.fontFamily, fontSize = _props2.fontSize, @@ -147,7 +149,9 @@ var EachText = function (_Component) { }; var hoverTextEnabled = hoverText.enable, - restHoverTextProps = _objectWithoutProperties(hoverText, ["enable"]); + hoverTextSelected = hoverText.selectedText, + hoverTextUnselected = hoverText.text, + restHoverTextProps = _objectWithoutProperties(hoverText, ["enable", "selectedText", "text"]); return _react2.default.createElement( "g", @@ -161,10 +165,11 @@ var EachText = function (_Component) { onDragStart: this.handleDragStart, onDrag: this.handleDrag, onDragComplete: onDragComplete, - position: position, bgFill: bgFill, bgOpacity: bgOpacity, + bgStroke: bgStroke || textFill, + bgStrokeWidth: bgStrokeWidth, textFill: textFill, fontFamily: fontFamily, fontStyle: fontStyle, @@ -173,8 +178,10 @@ var EachText = function (_Component) { text: text })), _react2.default.createElement(_HoverTextNearMouse2.default, _extends({ - show: hoverTextEnabled && hover && !selected - }, restHoverTextProps)) + show: hoverTextEnabled && hover + }, restHoverTextProps, { + text: selected ? hoverTextSelected : hoverTextUnselected + })) ); } }]); @@ -200,6 +207,8 @@ EachText.propTypes = { position: _propTypes2.default.array.isRequired, bgFill: _propTypes2.default.string.isRequired, bgOpacity: _propTypes2.default.number.isRequired, + bgStrokeWidth: _propTypes2.default.number.isRequired, + bgStroke: _propTypes2.default.string, textFill: _propTypes2.default.string.isRequired, fontWeight: _propTypes2.default.string.isRequired, @@ -219,18 +228,14 @@ EachText.propTypes = { EachText.defaultProps = { onDrag: _utils.noop, onDragComplete: _utils.noop, - edgeStroke: "#000000", - edgeFill: "#FFFFFF", - edgeStrokeWidth: 2, - r: 5, - strokeWidth: 1, - opacity: 1, + bgOpacity: 1, + bgStrokeWidth: 1, selected: false, fill: "#8AAFE2", hoverText: _extends({}, _HoverTextNearMouse2.default.defaultProps, { enable: true, - bgHeight: 18, - bgWidth: 120, + bgHeight: "auto", + bgWidth: "auto", text: "Click to select object" }) }; diff --git a/lib/interactive/wrapper/EachText.js.map b/lib/interactive/wrapper/EachText.js.map index a7dbd07..d1f62b2 100644 --- a/lib/interactive/wrapper/EachText.js.map +++ b/lib/interactive/wrapper/EachText.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../../../src/lib/interactive/wrapper/EachText.js"],"names":["EachText","props","handleHover","bind","handleDragStart","handleDrag","isHover","saveNodeType","nodes","state","hover","moreProps","position","mouseXY","yScale","chartConfig","xScale","mouseX","mouseY","textCX","textCY","dx","dy","dragStartPosition","index","onDrag","xAccessor","plotData","xValue","invert","xyValue","hovering","setState","bgFill","bgOpacity","textFill","fontFamily","fontSize","fontWeight","fontStyle","text","hoverText","selected","onDragComplete","hoverHandler","onHover","onUnHover","hoverTextEnabled","enable","restHoverTextProps","propTypes","number","array","isRequired","string","bool","func","object","defaultProps","edgeStroke","edgeFill","edgeStrokeWidth","r","strokeWidth","opacity","fill","bgHeight","bgWidth"],"mappings":"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","file":"EachText.js","sourcesContent":["import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport { noop } from \"../../utils\";\nimport { saveNodeType, isHover } from \"../utils\";\nimport { getXValue } from \"../../utils/ChartDataUtil\";\n\nimport HoverTextNearMouse from \"../components/HoverTextNearMouse\";\nimport InteractiveText from \"../components/InteractiveText\";\n\nclass EachText extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\n\t\tthis.handleHover = this.handleHover.bind(this);\n\n\t\tthis.handleDragStart = this.handleDragStart.bind(this);\n\t\tthis.handleDrag = this.handleDrag.bind(this);\n\n\t\tthis.isHover = isHover.bind(this);\n\t\tthis.saveNodeType = saveNodeType.bind(this);\n\t\tthis.nodes = {};\n\n\t\tthis.state = {\n\t\t\thover: false,\n\t\t};\n\t}\n\thandleDragStart(moreProps) {\n\t\tconst {\n\t\t\tposition,\n\t\t} = this.props;\n\t\tconst { mouseXY } = moreProps;\n\t\tconst { chartConfig: { yScale }, xScale } = moreProps;\n\t\tconst [mouseX, mouseY] = mouseXY;\n\n\t\tconst [textCX, textCY] = position;\n\t\tconst dx = mouseX - xScale(textCX);\n\t\tconst dy = mouseY - yScale(textCY);\n\n\t\tthis.dragStartPosition = {\n\t\t\tposition, dx, dy\n\t\t};\n\t}\n\thandleDrag(moreProps) {\n\t\tconst { index, onDrag } = this.props;\n\t\tconst {\n\t\t\tmouseXY: [, mouseY],\n\t\t\tchartConfig: { yScale },\n\t\t\txAccessor,\n\t\t\tmouseXY,\n\t\t\tplotData,\n\t\t\txScale,\n\t\t} = moreProps;\n\n\t\tconst { dx, dy } = this.dragStartPosition;\n\t\tconst xValue = xScale.invert(\n\t\t\txScale(getXValue(xScale, xAccessor, mouseXY, plotData)) - dx\n\t\t);\n\t\t// xScale.invert(xScale(xAccessor(currentItem)) - dx);\n\t\tconst xyValue = [\n\t\t\txValue,\n\t\t\tyScale.invert(mouseY - dy)\n\t\t];\n\n\t\tonDrag(index, xyValue);\n\t}\n\thandleHover(moreProps) {\n\t\tif (this.state.hover !== moreProps.hovering) {\n\t\t\tthis.setState({\n\t\t\t\thover: moreProps.hovering\n\t\t\t});\n\t\t}\n\t}\n\trender() {\n\t\tconst {\n\t\t\tposition,\n\t\t\tbgFill,\n\t\t\tbgOpacity,\n\t\t\ttextFill,\n\t\t\tfontFamily,\n\t\t\tfontSize,\n\t\t\tfontWeight,\n\t\t\tfontStyle,\n\t\t\ttext,\n\t\t\thoverText,\n\t\t\tselected,\n\t\t\tonDragComplete,\n\t\t} = this.props;\n\t\tconst { hover } = this.state;\n\n\t\tconst hoverHandler = {\n\t\t\tonHover: this.handleHover,\n\t\t\tonUnHover: this.handleHover\n\t\t};\n\n\t\tconst { enable: hoverTextEnabled, ...restHoverTextProps } = hoverText;\n\n\t\treturn \n\t\t\t\n\t\t\t\n\t\t;\n\t}\n}\n/*\nexport function getNewXY(moreProps, snapTo) {\n\tconst { xScale, xAccessor, plotData, mouseXY } = moreProps;\n\n\tconst currentItem = getCurrentItem(xScale, xAccessor, mouseXY, plotData);\n\tconst x = xAccessor(currentItem);\n\tconst y = snapTo(currentItem);\n\n\treturn [x, y];\n}\n */\nEachText.propTypes = {\n\tindex: PropTypes.number,\n\n\tposition: PropTypes.array.isRequired,\n\tbgFill: PropTypes.string.isRequired,\n\tbgOpacity: PropTypes.number.isRequired,\n\ttextFill: PropTypes.string.isRequired,\n\n\tfontWeight: PropTypes.string.isRequired,\n\tfontFamily: PropTypes.string.isRequired,\n\tfontStyle: PropTypes.string.isRequired,\n\tfontSize: PropTypes.number.isRequired,\n\n\ttext: PropTypes.string.isRequired,\n\tselected: PropTypes.bool.isRequired,\n\n\tonDrag: PropTypes.func.isRequired,\n\tonDragComplete: PropTypes.func.isRequired,\n\n\thoverText: PropTypes.object.isRequired,\n};\n\nEachText.defaultProps = {\n\tonDrag: noop,\n\tonDragComplete: noop,\n\tedgeStroke: \"#000000\",\n\tedgeFill: \"#FFFFFF\",\n\tedgeStrokeWidth: 2,\n\tr: 5,\n\tstrokeWidth: 1,\n\topacity: 1,\n\tselected: false,\n\tfill: \"#8AAFE2\",\n\thoverText: {\n\t\t...HoverTextNearMouse.defaultProps,\n\t\tenable: true,\n\t\tbgHeight: 18,\n\t\tbgWidth: 120,\n\t\ttext: \"Click to select object\",\n\t}\n};\n\nexport default EachText;"]} \ No newline at end of file +{"version":3,"sources":["../../../../src/lib/interactive/wrapper/EachText.js"],"names":["EachText","props","handleHover","bind","handleDragStart","handleDrag","isHover","saveNodeType","nodes","state","hover","moreProps","position","mouseXY","yScale","chartConfig","xScale","mouseX","mouseY","textCX","textCY","dx","dy","dragStartPosition","index","onDrag","xAccessor","plotData","xValue","invert","xyValue","hovering","setState","bgFill","bgOpacity","bgStroke","bgStrokeWidth","textFill","fontFamily","fontSize","fontWeight","fontStyle","text","hoverText","selected","onDragComplete","hoverHandler","onHover","onUnHover","hoverTextEnabled","enable","hoverTextSelected","selectedText","hoverTextUnselected","restHoverTextProps","propTypes","number","array","isRequired","string","bool","func","object","defaultProps","fill","bgHeight","bgWidth"],"mappings":"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","file":"EachText.js","sourcesContent":["import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport { noop } from \"../../utils\";\nimport { saveNodeType, isHover } from \"../utils\";\nimport { getXValue } from \"../../utils/ChartDataUtil\";\n\nimport HoverTextNearMouse from \"../components/HoverTextNearMouse\";\nimport InteractiveText from \"../components/InteractiveText\";\n\nclass EachText extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\n\t\tthis.handleHover = this.handleHover.bind(this);\n\n\t\tthis.handleDragStart = this.handleDragStart.bind(this);\n\t\tthis.handleDrag = this.handleDrag.bind(this);\n\n\t\tthis.isHover = isHover.bind(this);\n\t\tthis.saveNodeType = saveNodeType.bind(this);\n\t\tthis.nodes = {};\n\n\t\tthis.state = {\n\t\t\thover: false,\n\t\t};\n\t}\n\thandleDragStart(moreProps) {\n\t\tconst {\n\t\t\tposition,\n\t\t} = this.props;\n\t\tconst { mouseXY } = moreProps;\n\t\tconst { chartConfig: { yScale }, xScale } = moreProps;\n\t\tconst [mouseX, mouseY] = mouseXY;\n\n\t\tconst [textCX, textCY] = position;\n\t\tconst dx = mouseX - xScale(textCX);\n\t\tconst dy = mouseY - yScale(textCY);\n\n\t\tthis.dragStartPosition = {\n\t\t\tposition, dx, dy\n\t\t};\n\t}\n\thandleDrag(moreProps) {\n\t\tconst { index, onDrag } = this.props;\n\t\tconst {\n\t\t\tmouseXY: [, mouseY],\n\t\t\tchartConfig: { yScale },\n\t\t\txAccessor,\n\t\t\tmouseXY,\n\t\t\tplotData,\n\t\t\txScale,\n\t\t} = moreProps;\n\n\t\tconst { dx, dy } = this.dragStartPosition;\n\t\tconst xValue = xScale.invert(\n\t\t\txScale(getXValue(xScale, xAccessor, mouseXY, plotData)) - dx\n\t\t);\n\t\t// xScale.invert(xScale(xAccessor(currentItem)) - dx);\n\t\tconst xyValue = [\n\t\t\txValue,\n\t\t\tyScale.invert(mouseY - dy)\n\t\t];\n\n\t\tonDrag(index, xyValue);\n\t}\n\thandleHover(moreProps) {\n\t\tif (this.state.hover !== moreProps.hovering) {\n\t\t\tthis.setState({\n\t\t\t\thover: moreProps.hovering\n\t\t\t});\n\t\t}\n\t}\n\trender() {\n\t\tconst {\n\t\t\tposition,\n\t\t\tbgFill,\n\t\t\tbgOpacity,\n\t\t\tbgStroke,\n\t\t\tbgStrokeWidth,\n\t\t\ttextFill,\n\t\t\tfontFamily,\n\t\t\tfontSize,\n\t\t\tfontWeight,\n\t\t\tfontStyle,\n\t\t\ttext,\n\t\t\thoverText,\n\t\t\tselected,\n\t\t\tonDragComplete,\n\t\t} = this.props;\n\t\tconst { hover } = this.state;\n\n\t\tconst hoverHandler = {\n\t\t\tonHover: this.handleHover,\n\t\t\tonUnHover: this.handleHover\n\t\t};\n\n\t\tconst {\n\t\t\tenable: hoverTextEnabled,\n\t\t\tselectedText: hoverTextSelected,\n\t\t\ttext: hoverTextUnselected,\n\t\t\t...restHoverTextProps\n\t\t} = hoverText;\n\n\t\treturn \n\t\t\t\n\t\t\t\n\t\t;\n\t}\n}\n/*\nexport function getNewXY(moreProps, snapTo) {\n\tconst { xScale, xAccessor, plotData, mouseXY } = moreProps;\n\n\tconst currentItem = getCurrentItem(xScale, xAccessor, mouseXY, plotData);\n\tconst x = xAccessor(currentItem);\n\tconst y = snapTo(currentItem);\n\n\treturn [x, y];\n}\n */\nEachText.propTypes = {\n\tindex: PropTypes.number,\n\n\tposition: PropTypes.array.isRequired,\n\tbgFill: PropTypes.string.isRequired,\n\tbgOpacity: PropTypes.number.isRequired,\n\tbgStrokeWidth: PropTypes.number.isRequired,\n\tbgStroke: PropTypes.string,\n\ttextFill: PropTypes.string.isRequired,\n\n\tfontWeight: PropTypes.string.isRequired,\n\tfontFamily: PropTypes.string.isRequired,\n\tfontStyle: PropTypes.string.isRequired,\n\tfontSize: PropTypes.number.isRequired,\n\n\ttext: PropTypes.string.isRequired,\n\tselected: PropTypes.bool.isRequired,\n\n\tonDrag: PropTypes.func.isRequired,\n\tonDragComplete: PropTypes.func.isRequired,\n\n\thoverText: PropTypes.object.isRequired,\n};\n\nEachText.defaultProps = {\n\tonDrag: noop,\n\tonDragComplete: noop,\n\tbgOpacity: 1,\n\tbgStrokeWidth: 1,\n\tselected: false,\n\tfill: \"#8AAFE2\",\n\thoverText: {\n\t\t...HoverTextNearMouse.defaultProps,\n\t\tenable: true,\n\t\tbgHeight: \"auto\",\n\t\tbgWidth: \"auto\",\n\t\ttext: \"Click to select object\",\n\t}\n};\n\nexport default EachText;"]} \ No newline at end of file diff --git a/lib/interactive/wrapper/EachTrendLine.js b/lib/interactive/wrapper/EachTrendLine.js index 2c649a5..337f9a9 100644 --- a/lib/interactive/wrapper/EachTrendLine.js +++ b/lib/interactive/wrapper/EachTrendLine.js @@ -233,14 +233,16 @@ var EachTrendLine = function (_Component) { hoverText = _props8.hoverText, selected = _props8.selected, onDragComplete = _props8.onDragComplete; + + var hoverTextEnabled = hoverText.enable, + hoverTextSelected = hoverText.selectedText, + hoverTextUnselected = hoverText.text, + restHoverTextProps = _objectWithoutProperties(hoverText, ["enable", "selectedText", "text"]); + var _state = this.state, hover = _state.hover, anchor = _state.anchor; - // console.log("SELECTED ->", selected); - - var hoverTextEnabled = hoverText.enable, - restHoverTextProps = _objectWithoutProperties(hoverText, ["enable"]); return _react2.default.createElement( "g", @@ -292,8 +294,10 @@ var EachTrendLine = function (_Component) { onDrag: this.handleEdge2Drag, onDragComplete: this.handleDragComplete }), _react2.default.createElement(_HoverTextNearMouse2.default, _extends({ - show: hoverTextEnabled && hover && !selected - }, restHoverTextProps)) + show: hoverTextEnabled && hover + }, restHoverTextProps, { + text: selected ? hoverTextSelected : hoverTextUnselected + })) ); } }]); diff --git a/lib/interactive/wrapper/EachTrendLine.js.map b/lib/interactive/wrapper/EachTrendLine.js.map index a99a425..be627de 100644 --- a/lib/interactive/wrapper/EachTrendLine.js.map +++ b/lib/interactive/wrapper/EachTrendLine.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../../../src/lib/interactive/wrapper/EachTrendLine.js"],"names":["getNewXY","EachTrendLine","props","handleEdge1Drag","bind","handleEdge2Drag","handleLineDragStart","handleLineDrag","handleEdge1DragStart","handleEdge2DragStart","handleDragComplete","handleHover","isHover","saveNodeType","nodes","state","hover","x1Value","y1Value","x2Value","y2Value","dragStart","moreProps","index","onDrag","xScale","yScale","chartConfig","xAccessor","fullData","startPos","mouseXY","x1","y1","x2","y2","dx","dy","newX1Value","newY1Value","invert","newX2Value","newY2Value","setState","anchor","undefined","onDragComplete","hovering","type","stroke","strokeWidth","strokeOpacity","strokeDasharray","r","edgeStrokeWidth","edgeFill","edgeStroke","edgeInteractiveCursor","lineInteractiveCursor","hoverText","selected","hoverTextEnabled","enable","restHoverTextProps","plotData","mouseY","x","domain","slice","sort","small","big","y","newY","Math","min","max","propTypes","any","isRequired","number","oneOf","func","onEdge1Drag","onEdge2Drag","onSelect","onUnSelect","defaultClassName","string","bool","object","defaultProps"],"mappings":"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","file":"EachTrendLine.js","sourcesContent":["import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport { ascending as d3Ascending } from \"d3-array\";\nimport { noop, strokeDashTypes } from \"../../utils\";\nimport { saveNodeType, isHover } from \"../utils\";\nimport { getXValue } from \"../../utils/ChartDataUtil\";\n\nimport StraightLine from \"../components/StraightLine\";\nimport ClickableCircle from \"../components/ClickableCircle\";\nimport HoverTextNearMouse from \"../components/HoverTextNearMouse\";\n\nclass EachTrendLine extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\n\t\tthis.handleEdge1Drag = this.handleEdge1Drag.bind(this);\n\t\tthis.handleEdge2Drag = this.handleEdge2Drag.bind(this);\n\t\tthis.handleLineDragStart = this.handleLineDragStart.bind(this);\n\t\tthis.handleLineDrag = this.handleLineDrag.bind(this);\n\n\t\tthis.handleEdge1DragStart = this.handleEdge1DragStart.bind(this);\n\t\tthis.handleEdge2DragStart = this.handleEdge2DragStart.bind(this);\n\n\t\tthis.handleDragComplete = this.handleDragComplete.bind(this);\n\n\t\tthis.handleHover = this.handleHover.bind(this);\n\n\t\tthis.isHover = isHover.bind(this);\n\t\tthis.saveNodeType = saveNodeType.bind(this);\n\t\tthis.nodes = {};\n\n\t\tthis.state = {\n\t\t\thover: false,\n\t\t};\n\t}\n\thandleLineDragStart() {\n\t\tconst {\n\t\t\tx1Value, y1Value,\n\t\t\tx2Value, y2Value,\n\t\t} = this.props;\n\n\t\tthis.dragStart = {\n\t\t\tx1Value, y1Value,\n\t\t\tx2Value, y2Value,\n\t\t};\n\t}\n\thandleLineDrag(moreProps) {\n\t\tconst { index, onDrag } = this.props;\n\n\t\tconst {\n\t\t\tx1Value, y1Value,\n\t\t\tx2Value, y2Value,\n\t\t} = this.dragStart;\n\n\t\tconst { xScale, chartConfig: { yScale }, xAccessor, fullData } = moreProps;\n\t\tconst { startPos, mouseXY } = moreProps;\n\n\t\tconst x1 = xScale(x1Value);\n\t\tconst y1 = yScale(y1Value);\n\t\tconst x2 = xScale(x2Value);\n\t\tconst y2 = yScale(y2Value);\n\n\t\tconst dx = startPos[0] - mouseXY[0];\n\t\tconst dy = startPos[1] - mouseXY[1];\n\n\t\tconst newX1Value = getXValue(xScale, xAccessor, [x1 - dx, y1 - dy], fullData);\n\t\tconst newY1Value = yScale.invert(y1 - dy);\n\t\tconst newX2Value = getXValue(xScale, xAccessor, [x2 - dx, y2 - dy], fullData);\n\t\tconst newY2Value = yScale.invert(y2 - dy);\n\n\t\tonDrag(index, {\n\t\t\tx1Value: newX1Value,\n\t\t\ty1Value: newY1Value,\n\t\t\tx2Value: newX2Value,\n\t\t\ty2Value: newY2Value,\n\t\t});\n\t}\n\thandleEdge1DragStart() {\n\t\tthis.setState({\n\t\t\tanchor: \"edge2\"\n\t\t});\n\t}\n\thandleEdge2DragStart() {\n\t\tthis.setState({\n\t\t\tanchor: \"edge1\"\n\t\t});\n\t}\n\thandleDragComplete(...rest) {\n\t\tthis.setState({\n\t\t\tanchor: undefined\n\t\t});\n\t\tthis.props.onDragComplete(...rest);\n\t}\n\thandleEdge1Drag(moreProps) {\n\t\tconst { index, onDrag } = this.props;\n\t\tconst {\n\t\t\tx2Value, y2Value,\n\t\t} = this.props;\n\n\t\tconst [x1Value, y1Value] = getNewXY(moreProps);\n\n\t\tonDrag(index, {\n\t\t\tx1Value,\n\t\t\ty1Value,\n\t\t\tx2Value,\n\t\t\ty2Value,\n\t\t});\n\t}\n\thandleEdge2Drag(moreProps) {\n\t\tconst { index, onDrag } = this.props;\n\t\tconst {\n\t\t\tx1Value, y1Value,\n\t\t} = this.props;\n\n\t\tconst [x2Value, y2Value] = getNewXY(moreProps);\n\n\t\tonDrag(index, {\n\t\t\tx1Value,\n\t\t\ty1Value,\n\t\t\tx2Value,\n\t\t\ty2Value,\n\t\t});\n\t}\n\thandleHover(moreProps) {\n\t\tif (this.state.hover !== moreProps.hovering) {\n\t\t\tthis.setState({\n\t\t\t\thover: moreProps.hovering\n\t\t\t});\n\t\t}\n\t}\n\trender() {\n\t\tconst {\n\t\t\tx1Value,\n\t\t\ty1Value,\n\t\t\tx2Value,\n\t\t\ty2Value,\n\t\t\ttype,\n\t\t\tstroke,\n\t\t\tstrokeWidth,\n\t\t\tstrokeOpacity,\n\t\t\tstrokeDasharray,\n\t\t\tr,\n\t\t\tedgeStrokeWidth,\n\t\t\tedgeFill,\n\t\t\tedgeStroke,\n\t\t\tedgeInteractiveCursor,\n\t\t\tlineInteractiveCursor,\n\t\t\thoverText,\n\t\t\tselected,\n\n\t\t\tonDragComplete,\n\t\t} = this.props;\n\t\tconst { hover, anchor } = this.state;\n\n\t\t// console.log(\"SELECTED ->\", selected);\n\t\tconst { enable: hoverTextEnabled, ...restHoverTextProps } = hoverText;\n\n\t\treturn \n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t;\n\t}\n}\n\nexport function getNewXY(moreProps) {\n\tconst { xScale, chartConfig: { yScale }, xAccessor, plotData, mouseXY } = moreProps;\n\tconst mouseY = mouseXY[1];\n\n\tconst x = getXValue(xScale, xAccessor, mouseXY, plotData);\n\n\tconst [small, big] = yScale.domain().slice().sort(d3Ascending);\n\tconst y = yScale.invert(mouseY);\n\tconst newY = Math.min(Math.max(y, small), big);\n\n\treturn [x, newY];\n}\n\nEachTrendLine.propTypes = {\n\tx1Value: PropTypes.any.isRequired,\n\tx2Value: PropTypes.any.isRequired,\n\ty1Value: PropTypes.any.isRequired,\n\ty2Value: PropTypes.any.isRequired,\n\n\tindex: PropTypes.number,\n\n\ttype: PropTypes.oneOf([\n\t\t\"XLINE\", // extends from -Infinity to +Infinity\n\t\t\"RAY\", // extends to +/-Infinity in one direction\n\t\t\"LINE\", // extends between the set bounds\n\t]).isRequired,\n\n\tonDrag: PropTypes.func.isRequired,\n\tonEdge1Drag: PropTypes.func.isRequired,\n\tonEdge2Drag: PropTypes.func.isRequired,\n\tonDragComplete: PropTypes.func.isRequired,\n\tonSelect: PropTypes.func.isRequired,\n\tonUnSelect: PropTypes.func.isRequired,\n\n\tr: PropTypes.number.isRequired,\n\tstrokeOpacity: PropTypes.number.isRequired,\n\tdefaultClassName: PropTypes.string,\n\n\tselected: PropTypes.bool,\n\n\tstroke: PropTypes.string.isRequired,\n\tstrokeWidth: PropTypes.number.isRequired,\n\tstrokeDasharray: PropTypes.oneOf(strokeDashTypes),\n\n\tedgeStrokeWidth: PropTypes.number.isRequired,\n\tedgeStroke: PropTypes.string.isRequired,\n\tedgeInteractiveCursor: PropTypes.string.isRequired,\n\tlineInteractiveCursor: PropTypes.string.isRequired,\n\tedgeFill: PropTypes.string.isRequired,\n\thoverText: PropTypes.object.isRequired,\n};\n\nEachTrendLine.defaultProps = {\n\tonDrag: noop,\n\tonEdge1Drag: noop,\n\tonEdge2Drag: noop,\n\tonDragComplete: noop,\n\tonSelect: noop,\n\tonUnSelect: noop,\n\n\tselected: false,\n\n\tedgeStroke: \"#000000\",\n\tedgeFill: \"#FFFFFF\",\n\tedgeStrokeWidth: 2,\n\tr: 5,\n\tstrokeWidth: 1,\n\tstrokeOpacity: 1,\n\tstrokeDasharray: \"Solid\",\n\thoverText: {\n\t\tenable: false,\n\t}\n};\n\nexport default EachTrendLine;"]} \ No newline at end of file +{"version":3,"sources":["../../../../src/lib/interactive/wrapper/EachTrendLine.js"],"names":["getNewXY","EachTrendLine","props","handleEdge1Drag","bind","handleEdge2Drag","handleLineDragStart","handleLineDrag","handleEdge1DragStart","handleEdge2DragStart","handleDragComplete","handleHover","isHover","saveNodeType","nodes","state","hover","x1Value","y1Value","x2Value","y2Value","dragStart","moreProps","index","onDrag","xScale","yScale","chartConfig","xAccessor","fullData","startPos","mouseXY","x1","y1","x2","y2","dx","dy","newX1Value","newY1Value","invert","newX2Value","newY2Value","setState","anchor","undefined","onDragComplete","hovering","type","stroke","strokeWidth","strokeOpacity","strokeDasharray","r","edgeStrokeWidth","edgeFill","edgeStroke","edgeInteractiveCursor","lineInteractiveCursor","hoverText","selected","hoverTextEnabled","enable","hoverTextSelected","selectedText","hoverTextUnselected","text","restHoverTextProps","plotData","mouseY","x","domain","slice","sort","small","big","y","newY","Math","min","max","propTypes","any","isRequired","number","oneOf","func","onEdge1Drag","onEdge2Drag","onSelect","onUnSelect","defaultClassName","string","bool","object","defaultProps"],"mappings":"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","file":"EachTrendLine.js","sourcesContent":["import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport { ascending as d3Ascending } from \"d3-array\";\nimport { noop, strokeDashTypes } from \"../../utils\";\nimport { saveNodeType, isHover } from \"../utils\";\nimport { getXValue } from \"../../utils/ChartDataUtil\";\n\nimport StraightLine from \"../components/StraightLine\";\nimport ClickableCircle from \"../components/ClickableCircle\";\nimport HoverTextNearMouse from \"../components/HoverTextNearMouse\";\n\nclass EachTrendLine extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\n\t\tthis.handleEdge1Drag = this.handleEdge1Drag.bind(this);\n\t\tthis.handleEdge2Drag = this.handleEdge2Drag.bind(this);\n\t\tthis.handleLineDragStart = this.handleLineDragStart.bind(this);\n\t\tthis.handleLineDrag = this.handleLineDrag.bind(this);\n\n\t\tthis.handleEdge1DragStart = this.handleEdge1DragStart.bind(this);\n\t\tthis.handleEdge2DragStart = this.handleEdge2DragStart.bind(this);\n\n\t\tthis.handleDragComplete = this.handleDragComplete.bind(this);\n\n\t\tthis.handleHover = this.handleHover.bind(this);\n\n\t\tthis.isHover = isHover.bind(this);\n\t\tthis.saveNodeType = saveNodeType.bind(this);\n\t\tthis.nodes = {};\n\n\t\tthis.state = {\n\t\t\thover: false,\n\t\t};\n\t}\n\thandleLineDragStart() {\n\t\tconst {\n\t\t\tx1Value, y1Value,\n\t\t\tx2Value, y2Value,\n\t\t} = this.props;\n\n\t\tthis.dragStart = {\n\t\t\tx1Value, y1Value,\n\t\t\tx2Value, y2Value,\n\t\t};\n\t}\n\thandleLineDrag(moreProps) {\n\t\tconst { index, onDrag } = this.props;\n\n\t\tconst {\n\t\t\tx1Value, y1Value,\n\t\t\tx2Value, y2Value,\n\t\t} = this.dragStart;\n\n\t\tconst { xScale, chartConfig: { yScale }, xAccessor, fullData } = moreProps;\n\t\tconst { startPos, mouseXY } = moreProps;\n\n\t\tconst x1 = xScale(x1Value);\n\t\tconst y1 = yScale(y1Value);\n\t\tconst x2 = xScale(x2Value);\n\t\tconst y2 = yScale(y2Value);\n\n\t\tconst dx = startPos[0] - mouseXY[0];\n\t\tconst dy = startPos[1] - mouseXY[1];\n\n\t\tconst newX1Value = getXValue(xScale, xAccessor, [x1 - dx, y1 - dy], fullData);\n\t\tconst newY1Value = yScale.invert(y1 - dy);\n\t\tconst newX2Value = getXValue(xScale, xAccessor, [x2 - dx, y2 - dy], fullData);\n\t\tconst newY2Value = yScale.invert(y2 - dy);\n\n\t\tonDrag(index, {\n\t\t\tx1Value: newX1Value,\n\t\t\ty1Value: newY1Value,\n\t\t\tx2Value: newX2Value,\n\t\t\ty2Value: newY2Value,\n\t\t});\n\t}\n\thandleEdge1DragStart() {\n\t\tthis.setState({\n\t\t\tanchor: \"edge2\"\n\t\t});\n\t}\n\thandleEdge2DragStart() {\n\t\tthis.setState({\n\t\t\tanchor: \"edge1\"\n\t\t});\n\t}\n\thandleDragComplete(...rest) {\n\t\tthis.setState({\n\t\t\tanchor: undefined\n\t\t});\n\t\tthis.props.onDragComplete(...rest);\n\t}\n\thandleEdge1Drag(moreProps) {\n\t\tconst { index, onDrag } = this.props;\n\t\tconst {\n\t\t\tx2Value, y2Value,\n\t\t} = this.props;\n\n\t\tconst [x1Value, y1Value] = getNewXY(moreProps);\n\n\t\tonDrag(index, {\n\t\t\tx1Value,\n\t\t\ty1Value,\n\t\t\tx2Value,\n\t\t\ty2Value,\n\t\t});\n\t}\n\thandleEdge2Drag(moreProps) {\n\t\tconst { index, onDrag } = this.props;\n\t\tconst {\n\t\t\tx1Value, y1Value,\n\t\t} = this.props;\n\n\t\tconst [x2Value, y2Value] = getNewXY(moreProps);\n\n\t\tonDrag(index, {\n\t\t\tx1Value,\n\t\t\ty1Value,\n\t\t\tx2Value,\n\t\t\ty2Value,\n\t\t});\n\t}\n\thandleHover(moreProps) {\n\t\tif (this.state.hover !== moreProps.hovering) {\n\t\t\tthis.setState({\n\t\t\t\thover: moreProps.hovering\n\t\t\t});\n\t\t}\n\t}\n\trender() {\n\t\tconst {\n\t\t\tx1Value,\n\t\t\ty1Value,\n\t\t\tx2Value,\n\t\t\ty2Value,\n\t\t\ttype,\n\t\t\tstroke,\n\t\t\tstrokeWidth,\n\t\t\tstrokeOpacity,\n\t\t\tstrokeDasharray,\n\t\t\tr,\n\t\t\tedgeStrokeWidth,\n\t\t\tedgeFill,\n\t\t\tedgeStroke,\n\t\t\tedgeInteractiveCursor,\n\t\t\tlineInteractiveCursor,\n\t\t\thoverText,\n\t\t\tselected,\n\n\t\t\tonDragComplete,\n\t\t} = this.props;\n\n\t\tconst {\n\t\t\tenable: hoverTextEnabled,\n\t\t\tselectedText: hoverTextSelected,\n\t\t\ttext: hoverTextUnselected,\n\t\t\t...restHoverTextProps\n\t\t} = hoverText;\n\n\t\tconst { hover, anchor } = this.state;\n\n\t\treturn \n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t;\n\t}\n}\n\nexport function getNewXY(moreProps) {\n\tconst { xScale, chartConfig: { yScale }, xAccessor, plotData, mouseXY } = moreProps;\n\tconst mouseY = mouseXY[1];\n\n\tconst x = getXValue(xScale, xAccessor, mouseXY, plotData);\n\n\tconst [small, big] = yScale.domain().slice().sort(d3Ascending);\n\tconst y = yScale.invert(mouseY);\n\tconst newY = Math.min(Math.max(y, small), big);\n\n\treturn [x, newY];\n}\n\nEachTrendLine.propTypes = {\n\tx1Value: PropTypes.any.isRequired,\n\tx2Value: PropTypes.any.isRequired,\n\ty1Value: PropTypes.any.isRequired,\n\ty2Value: PropTypes.any.isRequired,\n\n\tindex: PropTypes.number,\n\n\ttype: PropTypes.oneOf([\n\t\t\"XLINE\", // extends from -Infinity to +Infinity\n\t\t\"RAY\", // extends to +/-Infinity in one direction\n\t\t\"LINE\", // extends between the set bounds\n\t]).isRequired,\n\n\tonDrag: PropTypes.func.isRequired,\n\tonEdge1Drag: PropTypes.func.isRequired,\n\tonEdge2Drag: PropTypes.func.isRequired,\n\tonDragComplete: PropTypes.func.isRequired,\n\tonSelect: PropTypes.func.isRequired,\n\tonUnSelect: PropTypes.func.isRequired,\n\n\tr: PropTypes.number.isRequired,\n\tstrokeOpacity: PropTypes.number.isRequired,\n\tdefaultClassName: PropTypes.string,\n\n\tselected: PropTypes.bool,\n\n\tstroke: PropTypes.string.isRequired,\n\tstrokeWidth: PropTypes.number.isRequired,\n\tstrokeDasharray: PropTypes.oneOf(strokeDashTypes),\n\n\tedgeStrokeWidth: PropTypes.number.isRequired,\n\tedgeStroke: PropTypes.string.isRequired,\n\tedgeInteractiveCursor: PropTypes.string.isRequired,\n\tlineInteractiveCursor: PropTypes.string.isRequired,\n\tedgeFill: PropTypes.string.isRequired,\n\thoverText: PropTypes.object.isRequired,\n};\n\nEachTrendLine.defaultProps = {\n\tonDrag: noop,\n\tonEdge1Drag: noop,\n\tonEdge2Drag: noop,\n\tonDragComplete: noop,\n\tonSelect: noop,\n\tonUnSelect: noop,\n\n\tselected: false,\n\n\tedgeStroke: \"#000000\",\n\tedgeFill: \"#FFFFFF\",\n\tedgeStrokeWidth: 2,\n\tr: 5,\n\tstrokeWidth: 1,\n\tstrokeOpacity: 1,\n\tstrokeDasharray: \"Solid\",\n\thoverText: {\n\t\tenable: false,\n\t}\n};\n\nexport default EachTrendLine;"]} \ No newline at end of file diff --git a/lib/series/LineSeries.js b/lib/series/LineSeries.js index 26f73b2..17affc1 100644 --- a/lib/series/LineSeries.js +++ b/lib/series/LineSeries.js @@ -225,9 +225,12 @@ var LineSeries = function (_Component) { }, { key: "render", value: function render() { - var highlightOnHover = this.props.highlightOnHover; + var _props6 = this.props, + highlightOnHover = _props6.highlightOnHover, + onHover = _props6.onHover, + onUnHover = _props6.onUnHover; - var hoverProps = highlightOnHover ? { + var hoverProps = highlightOnHover || onHover || onUnHover ? { isHover: this.isHover, drawOn: ["mousemove", "pan"], canvasToDraw: _GenericComponent.getMouseCanvas @@ -243,7 +246,9 @@ var LineSeries = function (_Component) { onClickWhenHover: this.props.onClick, onDoubleClickWhenHover: this.props.onDoubleClick, - onContextMenuWhenHover: this.props.onContextMenu + onContextMenuWhenHover: this.props.onContextMenu, + onHover: this.props.onHover, + onUnHover: this.props.onUnHover }, hoverProps)); } }]); @@ -281,6 +286,8 @@ LineSeries.propTypes = { highlightOnHover: _propTypes2.default.bool, onClick: _propTypes2.default.func, onDoubleClick: _propTypes2.default.func, + onHover: _propTypes2.default.func, + onUnHover: _propTypes2.default.func, onContextMenu: _propTypes2.default.func, yAccessor: _propTypes2.default.func, connectNulls: _propTypes2.default.bool, diff --git a/lib/series/LineSeries.js.map b/lib/series/LineSeries.js.map index 7770123..5633af9 100644 --- a/lib/series/LineSeries.js.map +++ b/lib/series/LineSeries.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../../src/lib/series/LineSeries.js"],"names":["LineSeries","props","renderSVG","bind","drawOnCanvas","isHover","moreProps","highlightOnHover","yAccessor","hoverTolerance","mouseXY","currentItem","xScale","plotData","chartConfig","yScale","origin","xAccessor","x","y","radius","invert","left","right","cy","cx","hovering1","Math","pow","l","r","x1","y1","x2","y2","m","b","desiredY","round","hovering2","ctx","stroke","strokeOpacity","strokeWidth","hoverStrokeWidth","lineCap","lineJoin","defined","strokeDasharray","interpolation","canvasClip","connectNulls","hovering","save","lineWidth","strokeStyle","setLineDash","split","dataSeries","d","curve","beginPath","context","restore","style","fill","className","hoverProps","drawOn","canvasToDraw","onClick","onDoubleClick","onContextMenu","propTypes","string","number","func","oneOf","bool","object","defaultProps","isNaN","e","console","log"],"mappings":"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","file":"LineSeries.js","sourcesContent":["\n\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { line as d3Line } from \"d3-shape\";\n\nimport GenericChartComponent from \"../GenericChartComponent\";\nimport { getAxisCanvas, getMouseCanvas } from \"../GenericComponent\";\n\nimport {\n\tisDefined,\n\tgetClosestItemIndexes,\n\tstrokeDashTypes,\n\tgetStrokeDasharray,\n\thexToRGBA,\n} from \"../utils\";\n\nclass LineSeries extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.renderSVG = this.renderSVG.bind(this);\n\t\tthis.drawOnCanvas = this.drawOnCanvas.bind(this);\n\t\tthis.isHover = this.isHover.bind(this);\n\t}\n\tisHover(moreProps) {\n\t\t// console.log(\"HERE\")\n\t\tconst { highlightOnHover, yAccessor, hoverTolerance } = this.props;\n\n\t\tif (!highlightOnHover) return false;\n\n\t\tconst { mouseXY, currentItem, xScale, plotData } = moreProps;\n\t\tconst { chartConfig: { yScale, origin } } = moreProps;\n\n\t\tconst { xAccessor } = moreProps;\n\n\t\tconst [x, y] = mouseXY;\n\t\tconst radius = hoverTolerance;\n\n\t\tconst { left, right } = getClosestItemIndexes(plotData, xScale.invert(x), xAccessor);\n\t\tif (left === right) {\n\t\t\tconst cy = yScale(yAccessor(currentItem)) + origin[1];\n\t\t\tconst cx = xScale(xAccessor(currentItem)) + origin[0];\n\n\t\t\tconst hovering1 = Math.pow(x - cx, 2) + Math.pow(y - cy, 2) < Math.pow(radius, 2);\n\n\t\t\treturn hovering1;\n\t\t} else {\n\t\t\tconst l = plotData[left];\n\t\t\tconst r = plotData[right];\n\t\t\tconst x1 = xScale(xAccessor(l)) + origin[0];\n\t\t\tconst y1 = yScale(yAccessor(l)) + origin[1];\n\t\t\tconst x2 = xScale(xAccessor(r)) + origin[0];\n\t\t\tconst y2 = yScale(yAccessor(r)) + origin[1];\n\n\t\t\t// y = m * x + b\n\t\t\tconst m /* slope */ = (y2 - y1) / (x2 - x1);\n\t\t\tconst b /* y intercept */ = -1 * m * x1 + y1;\n\n\t\t\tconst desiredY = Math.round(m * x + b);\n\n\t\t\tconst hovering2 = y >= desiredY - radius && y <= desiredY + radius;\n\n\t\t\treturn hovering2;\n\t\t}\n\t}\n\tdrawOnCanvas(ctx, moreProps) {\n\t\tconst {\n\t\t\tyAccessor,\n\t\t\tstroke,\n\t\t\tstrokeOpacity,\n\t\t\tstrokeWidth,\n\t\t\thoverStrokeWidth,\n\t\t\tlineCap,\n\t\t\tlineJoin,\n\t\t\tdefined,\n\t\t\tstrokeDasharray,\n\t\t\tinterpolation,\n\t\t\tcanvasClip\n\t\t} = this.props;\n\n\t\tconst { connectNulls } = this.props;\n\n\t\tconst { xAccessor } = moreProps;\n\t\tconst { xScale, chartConfig: { yScale }, plotData, hovering } = moreProps;\n\n\t\tif (canvasClip) {\n\t\t\tctx.save();\n\t\t\tcanvasClip(ctx, moreProps);\n\t\t}\n\n\t\tctx.lineWidth = hovering ? hoverStrokeWidth : strokeWidth;\n ctx.lineCap = lineCap;\n ctx.lineJoin = lineJoin;\n\t\tctx.strokeStyle = hexToRGBA(stroke, strokeOpacity);\n\t\tctx.setLineDash(getStrokeDasharray(strokeDasharray).split(\",\"));\n\n\t\tconst dataSeries = d3Line()\n\t\t\t.x(d => Math.round(xScale(xAccessor(d))))\n\t\t\t.y(d => Math.round(yScale(yAccessor(d))));\n\n\t\tif (isDefined(interpolation)) {\n\t\t\tdataSeries.curve(interpolation);\n\t\t}\n\t\tif (!connectNulls) {\n\t\t\tdataSeries.defined(d => defined(yAccessor(d)));\n\t\t}\n\n\t\tctx.beginPath();\n\t\tdataSeries.context(ctx)(plotData);\n\t\tctx.stroke();\n\n\t\tif (canvasClip) {\n\t\t\tctx.restore();\n\t\t}\n\t}\n\trenderSVG(moreProps) {\n\t\tconst { yAccessor, stroke, strokeOpacity, strokeWidth, hoverStrokeWidth,\n lineCap, lineJoin, defined, strokeDasharray } = this.props;\n\t\tconst { connectNulls } = this.props;\n\t\tconst { interpolation, style } = this.props;\n\t\tconst { xAccessor, chartConfig } = moreProps;\n\n\t\tconst { xScale, plotData, hovering } = moreProps;\n\n\t\tconst { yScale } = chartConfig;\n\t\tconst dataSeries = d3Line()\n\t\t\t.x(d => Math.round(xScale(xAccessor(d))))\n\t\t\t.y(d => Math.round(yScale(yAccessor(d))));\n\n\t\tif (isDefined(interpolation)) {\n\t\t\tdataSeries.curve(interpolation);\n\t\t}\n\t\tif (!connectNulls) {\n\t\t\tdataSeries.defined(d => defined(yAccessor(d)));\n\t\t}\n\t\tconst d = dataSeries(plotData);\n\n\t\tconst { fill, className } = this.props;\n\n\t\treturn (\n\t\t\t\n\t\t);\n\t}\n\trender() {\n\t\tconst { highlightOnHover } = this.props;\n\t\tconst hoverProps = highlightOnHover\n\t\t\t? {\n\t\t\t\tisHover: this.isHover,\n\t\t\t\tdrawOn: [\"mousemove\", \"pan\"],\n\t\t\t\tcanvasToDraw: getMouseCanvas\n\t\t\t}\n\t\t\t: {\n\t\t\t\tdrawOn: [\"pan\"],\n\t\t\t\tcanvasToDraw: getAxisCanvas\n\t\t\t};\n\n\t\treturn ;\n\t}\n}\n\n/*\nfunction segment(points, ctx) {\n\tctx.beginPath();\n\n\tconst [x, y] = first(points);\n\tctx.moveTo(x, y);\n\tfor (let i = 1; i < points.length; i++) {\n\t\tconst [x1, y1] = points[i];\n\t\tctx.lineTo(x1, y1);\n\t}\n\n\tctx.stroke();\n}\n*/\n\nLineSeries.propTypes = {\n\tclassName: PropTypes.string,\n\tstrokeWidth: PropTypes.number,\n\tstrokeOpacity: PropTypes.number,\n\tstroke: PropTypes.string,\n\thoverStrokeWidth: PropTypes.number,\n\tlineCap: PropTypes.string,\n\tlineJoin: PropTypes.string,\n\tfill: PropTypes.string,\n\tdefined: PropTypes.func,\n\thoverTolerance: PropTypes.number,\n\tstrokeDasharray: PropTypes.oneOf(strokeDashTypes),\n\thighlightOnHover: PropTypes.bool,\n\tonClick: PropTypes.func,\n\tonDoubleClick: PropTypes.func,\n\tonContextMenu: PropTypes.func,\n\tyAccessor: PropTypes.func,\n\tconnectNulls: PropTypes.bool,\n\tinterpolation: PropTypes.func,\n\tcanvasClip: PropTypes.func,\n\tstyle: PropTypes.object,\n};\n\nLineSeries.defaultProps = {\n\tclassName: \"line \",\n\tstrokeWidth: 1,\n\tstrokeOpacity: 1,\n\thoverStrokeWidth: 4,\n\tlineCap: \"round\",\n\tlineJoin: \"round\",\n\tfill: \"none\",\n\tstroke: \"#4682B4\",\n\tstrokeDasharray: \"Solid\",\n\tdefined: d => !isNaN(d),\n\thoverTolerance: 6,\n\thighlightOnHover: false,\n\tconnectNulls: false,\n\tonClick: function(e) { console.log(\"Click\", e); },\n\tonDoubleClick: function(e) { console.log(\"Double Click\", e); },\n\tonContextMenu: function(e) { console.log(\"Right Click\", e); },\n};\n\nexport default LineSeries;\n"]} \ No newline at end of file +{"version":3,"sources":["../../../src/lib/series/LineSeries.js"],"names":["LineSeries","props","renderSVG","bind","drawOnCanvas","isHover","moreProps","highlightOnHover","yAccessor","hoverTolerance","mouseXY","currentItem","xScale","plotData","chartConfig","yScale","origin","xAccessor","x","y","radius","invert","left","right","cy","cx","hovering1","Math","pow","l","r","x1","y1","x2","y2","m","b","desiredY","round","hovering2","ctx","stroke","strokeOpacity","strokeWidth","hoverStrokeWidth","lineCap","lineJoin","defined","strokeDasharray","interpolation","canvasClip","connectNulls","hovering","save","lineWidth","strokeStyle","setLineDash","split","dataSeries","d","curve","beginPath","context","restore","style","fill","className","onHover","onUnHover","hoverProps","drawOn","canvasToDraw","onClick","onDoubleClick","onContextMenu","propTypes","string","number","func","oneOf","bool","object","defaultProps","isNaN","e","console","log"],"mappings":"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","file":"LineSeries.js","sourcesContent":["\n\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { line as d3Line } from \"d3-shape\";\n\nimport GenericChartComponent from \"../GenericChartComponent\";\nimport { getAxisCanvas, getMouseCanvas } from \"../GenericComponent\";\n\nimport {\n\tisDefined,\n\tgetClosestItemIndexes,\n\tstrokeDashTypes,\n\tgetStrokeDasharray,\n\thexToRGBA,\n} from \"../utils\";\n\nclass LineSeries extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.renderSVG = this.renderSVG.bind(this);\n\t\tthis.drawOnCanvas = this.drawOnCanvas.bind(this);\n\t\tthis.isHover = this.isHover.bind(this);\n\t}\n\tisHover(moreProps) {\n\t\t// console.log(\"HERE\")\n\t\tconst { highlightOnHover, yAccessor, hoverTolerance } = this.props;\n\n\t\tif (!highlightOnHover) return false;\n\n\t\tconst { mouseXY, currentItem, xScale, plotData } = moreProps;\n\t\tconst { chartConfig: { yScale, origin } } = moreProps;\n\n\t\tconst { xAccessor } = moreProps;\n\n\t\tconst [x, y] = mouseXY;\n\t\tconst radius = hoverTolerance;\n\n\t\tconst { left, right } = getClosestItemIndexes(plotData, xScale.invert(x), xAccessor);\n\t\tif (left === right) {\n\t\t\tconst cy = yScale(yAccessor(currentItem)) + origin[1];\n\t\t\tconst cx = xScale(xAccessor(currentItem)) + origin[0];\n\n\t\t\tconst hovering1 = Math.pow(x - cx, 2) + Math.pow(y - cy, 2) < Math.pow(radius, 2);\n\n\t\t\treturn hovering1;\n\t\t} else {\n\t\t\tconst l = plotData[left];\n\t\t\tconst r = plotData[right];\n\t\t\tconst x1 = xScale(xAccessor(l)) + origin[0];\n\t\t\tconst y1 = yScale(yAccessor(l)) + origin[1];\n\t\t\tconst x2 = xScale(xAccessor(r)) + origin[0];\n\t\t\tconst y2 = yScale(yAccessor(r)) + origin[1];\n\n\t\t\t// y = m * x + b\n\t\t\tconst m /* slope */ = (y2 - y1) / (x2 - x1);\n\t\t\tconst b /* y intercept */ = -1 * m * x1 + y1;\n\n\t\t\tconst desiredY = Math.round(m * x + b);\n\n\t\t\tconst hovering2 = y >= desiredY - radius && y <= desiredY + radius;\n\n\t\t\treturn hovering2;\n\t\t}\n\t}\n\tdrawOnCanvas(ctx, moreProps) {\n\t\tconst {\n\t\t\tyAccessor,\n\t\t\tstroke,\n\t\t\tstrokeOpacity,\n\t\t\tstrokeWidth,\n\t\t\thoverStrokeWidth,\n\t\t\tlineCap,\n\t\t\tlineJoin,\n\t\t\tdefined,\n\t\t\tstrokeDasharray,\n\t\t\tinterpolation,\n\t\t\tcanvasClip\n\t\t} = this.props;\n\n\t\tconst { connectNulls } = this.props;\n\n\t\tconst { xAccessor } = moreProps;\n\t\tconst { xScale, chartConfig: { yScale }, plotData, hovering } = moreProps;\n\n\t\tif (canvasClip) {\n\t\t\tctx.save();\n\t\t\tcanvasClip(ctx, moreProps);\n\t\t}\n\n\t\tctx.lineWidth = hovering ? hoverStrokeWidth : strokeWidth;\n ctx.lineCap = lineCap;\n ctx.lineJoin = lineJoin;\n\t\tctx.strokeStyle = hexToRGBA(stroke, strokeOpacity);\n\t\tctx.setLineDash(getStrokeDasharray(strokeDasharray).split(\",\"));\n\n\t\tconst dataSeries = d3Line()\n\t\t\t.x(d => Math.round(xScale(xAccessor(d))))\n\t\t\t.y(d => Math.round(yScale(yAccessor(d))));\n\n\t\tif (isDefined(interpolation)) {\n\t\t\tdataSeries.curve(interpolation);\n\t\t}\n\t\tif (!connectNulls) {\n\t\t\tdataSeries.defined(d => defined(yAccessor(d)));\n\t\t}\n\n\t\tctx.beginPath();\n\t\tdataSeries.context(ctx)(plotData);\n\t\tctx.stroke();\n\n\t\tif (canvasClip) {\n\t\t\tctx.restore();\n\t\t}\n\t}\n\trenderSVG(moreProps) {\n\t\tconst { yAccessor, stroke, strokeOpacity, strokeWidth, hoverStrokeWidth,\n lineCap, lineJoin, defined, strokeDasharray } = this.props;\n\t\tconst { connectNulls } = this.props;\n\t\tconst { interpolation, style } = this.props;\n\t\tconst { xAccessor, chartConfig } = moreProps;\n\n\t\tconst { xScale, plotData, hovering } = moreProps;\n\n\t\tconst { yScale } = chartConfig;\n\t\tconst dataSeries = d3Line()\n\t\t\t.x(d => Math.round(xScale(xAccessor(d))))\n\t\t\t.y(d => Math.round(yScale(yAccessor(d))));\n\n\t\tif (isDefined(interpolation)) {\n\t\t\tdataSeries.curve(interpolation);\n\t\t}\n\t\tif (!connectNulls) {\n\t\t\tdataSeries.defined(d => defined(yAccessor(d)));\n\t\t}\n\t\tconst d = dataSeries(plotData);\n\n\t\tconst { fill, className } = this.props;\n\n\t\treturn (\n\t\t\t\n\t\t);\n\t}\n\trender() {\n\t\tconst { highlightOnHover, onHover, onUnHover } = this.props;\n\t\tconst hoverProps = (highlightOnHover || onHover || onUnHover)\n\t\t\t? {\n\t\t\t\tisHover: this.isHover,\n\t\t\t\tdrawOn: [\"mousemove\", \"pan\"],\n\t\t\t\tcanvasToDraw: getMouseCanvas\n\t\t\t}\n\t\t\t: {\n\t\t\t\tdrawOn: [\"pan\"],\n\t\t\t\tcanvasToDraw: getAxisCanvas\n\t\t\t};\n\n\t\treturn ;\n\t}\n}\n\n/*\nfunction segment(points, ctx) {\n\tctx.beginPath();\n\n\tconst [x, y] = first(points);\n\tctx.moveTo(x, y);\n\tfor (let i = 1; i < points.length; i++) {\n\t\tconst [x1, y1] = points[i];\n\t\tctx.lineTo(x1, y1);\n\t}\n\n\tctx.stroke();\n}\n*/\n\nLineSeries.propTypes = {\n\tclassName: PropTypes.string,\n\tstrokeWidth: PropTypes.number,\n\tstrokeOpacity: PropTypes.number,\n\tstroke: PropTypes.string,\n\thoverStrokeWidth: PropTypes.number,\n\tlineCap: PropTypes.string,\n\tlineJoin: PropTypes.string,\n\tfill: PropTypes.string,\n\tdefined: PropTypes.func,\n\thoverTolerance: PropTypes.number,\n\tstrokeDasharray: PropTypes.oneOf(strokeDashTypes),\n\thighlightOnHover: PropTypes.bool,\n\tonClick: PropTypes.func,\n\tonDoubleClick: PropTypes.func,\n\tonHover: PropTypes.func,\n\tonUnHover: PropTypes.func,\n\tonContextMenu: PropTypes.func,\n\tyAccessor: PropTypes.func,\n\tconnectNulls: PropTypes.bool,\n\tinterpolation: PropTypes.func,\n\tcanvasClip: PropTypes.func,\n\tstyle: PropTypes.object,\n};\n\nLineSeries.defaultProps = {\n\tclassName: \"line \",\n\tstrokeWidth: 1,\n\tstrokeOpacity: 1,\n\thoverStrokeWidth: 4,\n\tlineCap: \"round\",\n\tlineJoin: \"round\",\n\tfill: \"none\",\n\tstroke: \"#4682B4\",\n\tstrokeDasharray: \"Solid\",\n\tdefined: d => !isNaN(d),\n\thoverTolerance: 6,\n\thighlightOnHover: false,\n\tconnectNulls: false,\n\tonClick: function(e) { console.log(\"Click\", e); },\n\tonDoubleClick: function(e) { console.log(\"Double Click\", e); },\n\tonContextMenu: function(e) { console.log(\"Right Click\", e); },\n};\n\nexport default LineSeries;\n"]} \ No newline at end of file diff --git a/lib/series/SARSeries.js b/lib/series/SARSeries.js index 5169625..88e307b 100644 --- a/lib/series/SARSeries.js +++ b/lib/series/SARSeries.js @@ -75,8 +75,7 @@ var SARSeries = function (_Component) { var width = xScale(xAccessor((0, _utils.last)(plotData))) - xScale(xAccessor((0, _utils.first)(plotData))); var d = width / plotData.length * 0.5 / 2; - var rx = Math.max(0.5, d / 2) + (hovering ? 2 : 0); - var ry = Math.min(2, Math.max(0.5, d)) + (hovering ? 0 : 0); + var radius = Math.min(2, Math.max(0.5, d)) + (hovering ? 2 : 0); plotData.forEach(function (each) { var centerX = xScale(xAccessor(each)); @@ -87,7 +86,7 @@ var SARSeries = function (_Component) { ctx.strokeStyle = color; ctx.beginPath(); - ctx.ellipse(centerX, centerY, rx, ry, 0, 0, 2 * Math.PI); + ctx.ellipse(centerX, centerY, radius, radius, 0, 0, 2 * Math.PI); ctx.closePath(); ctx.fill(); ctx.stroke(); diff --git a/lib/series/SARSeries.js.map b/lib/series/SARSeries.js.map index e2f36ae..e30eb2d 100644 --- a/lib/series/SARSeries.js.map +++ b/lib/series/SARSeries.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../../src/lib/series/SARSeries.js"],"names":["SARSeries","props","renderSVG","bind","drawOnCanvas","isHover","moreProps","mouseXY","currentItem","yScale","chartConfig","yAccessor","y","currentY","ctx","fill","opacity","xAccessor","plotData","xScale","hovering","width","d","length","rx","Math","max","ry","min","forEach","centerX","each","centerY","color","close","falling","rising","fillStyle","strokeStyle","beginPath","ellipse","PI","closePath","stroke","className","filter","map","idx","highlightOnHover","hoverProps","drawOn","canvasToDraw","onClick","onDoubleClick","onContextMenu","propTypes","string","object","isRequired","func","number","bool","defaultProps","e","console","log"],"mappings":";;;;;;;;;;AAEA;;;;AACA;;;;AAEA;;;;AACA;;AAEA;;;;;;;;;;IAEMA,S;;;AACL,oBAAYC,KAAZ,EAAmB;AAAA;;AAAA,oHACZA,KADY;;AAElB,QAAKC,SAAL,GAAiB,MAAKA,SAAL,CAAeC,IAAf,OAAjB;AACA,QAAKC,YAAL,GAAoB,MAAKA,YAAL,CAAkBD,IAAlB,OAApB;AACA,QAAKE,OAAL,GAAe,MAAKA,OAAL,CAAaF,IAAb,OAAf;AAJkB;AAKlB;;;;0BACOG,S,EAAW;AAAA,OACVC,OADU,GACwCD,SADxC,CACVC,OADU;AAAA,OACDC,WADC,GACwCF,SADxC,CACDE,WADC;AAAA,OAC2BC,MAD3B,GACwCH,SADxC,CACYI,WADZ,CAC2BD,MAD3B;AAAA,OAEVE,SAFU,GAEI,KAAKV,KAFT,CAEVU,SAFU;;AAGlB,OAAMC,IAAIL,QAAQ,CAAR,CAAV;AACA,OAAMM,WAAWJ,OAAOE,UAAUH,WAAV,CAAP,CAAjB;AACA,UAAOI,IAAKC,WAAW,CAAhB,IAAqBD,IAAIC,WAAW,CAA3C;AACA;;;+BACYC,G,EAAKR,S,EAAW;AAAA,gBACS,KAAKL,KADd;AAAA,OACpBU,SADoB,UACpBA,SADoB;AAAA,OACTI,IADS,UACTA,IADS;AAAA,OACHC,OADG,UACHA,OADG;AAAA,OAEpBC,SAFoB,GAE+CX,SAF/C,CAEpBW,SAFoB;AAAA,OAETC,QAFS,GAE+CZ,SAF/C,CAETY,QAFS;AAAA,OAECC,MAFD,GAE+Cb,SAF/C,CAECa,MAFD;AAAA,OAEwBV,MAFxB,GAE+CH,SAF/C,CAESI,WAFT,CAEwBD,MAFxB;AAAA,OAEkCW,QAFlC,GAE+Cd,SAF/C,CAEkCc,QAFlC;;;AAI5B,OAAMC,QAAQF,OAAOF,UAAU,iBAAKC,QAAL,CAAV,CAAP,IAAoCC,OAAOF,UAAU,kBAAMC,QAAN,CAAV,CAAP,CAAlD;;AAEA,OAAMI,IAAKD,QAAQH,SAASK,MAAlB,GAA4B,GAA5B,GAAkC,CAA5C;AACA,OAAMC,KAAKC,KAAKC,GAAL,CAAS,GAAT,EAAeJ,IAAI,CAAnB,KAAyBF,WAAW,CAAX,GAAe,CAAxC,CAAX;AACA,OAAMO,KAAKF,KAAKG,GAAL,CAAS,CAAT,EAAYH,KAAKC,GAAL,CAAS,GAAT,EAAeJ,CAAf,CAAZ,KAAkCF,WAAW,CAAX,GAAe,CAAjD,CAAX;;AAEAF,YAASW,OAAT,CAAiB,gBAAQ;AACxB,QAAMC,UAAUX,OAAOF,UAAUc,IAAV,CAAP,CAAhB;AACA,QAAMC,UAAUvB,OAAOE,UAAUoB,IAAV,CAAP,CAAhB;AACA,QAAME,QAAQtB,UAAUoB,IAAV,IAAkBA,KAAKG,KAAvB,GACXnB,KAAKoB,OADM,GAEXpB,KAAKqB,MAFR;;AAIAtB,QAAIuB,SAAJ,GAAgB,sBAAUJ,KAAV,EAAiBjB,OAAjB,CAAhB;AACAF,QAAIwB,WAAJ,GAAkBL,KAAlB;;AAEAnB,QAAIyB,SAAJ;AACAzB,QAAI0B,OAAJ,CAAYV,OAAZ,EAAqBE,OAArB,EAA8BR,EAA9B,EAAkCG,EAAlC,EAAsC,CAAtC,EAAyC,CAAzC,EAA4C,IAAIF,KAAKgB,EAArD;AACA3B,QAAI4B,SAAJ;AACA5B,QAAIC,IAAJ;AACAD,QAAI6B,MAAJ;AACA,IAfD;AAgBA;;;4BACSrC,S,EAAW;AAAA,iBACa,KAAKL,KADlB;AAAA,OACZ2C,SADY,WACZA,SADY;AAAA,OACDjC,SADC,WACDA,SADC;AAAA,OAEZM,SAFY,GAE6CX,SAF7C,CAEZW,SAFY;AAAA,OAEDC,QAFC,GAE6CZ,SAF7C,CAEDY,QAFC;AAAA,OAESC,MAFT,GAE6Cb,SAF7C,CAESa,MAFT;AAAA,OAEgCV,MAFhC,GAE6CH,SAF7C,CAEiBI,WAFjB,CAEgCD,MAFhC;AAGpB;;AAEA,UAAO;AAAA;AAAA,MAAG,WAAWmC,SAAd;AACL1B,aACC2B,MADD,CACQ;AAAA,YAAQ,sBAAUlC,UAAUoB,IAAV,CAAV,CAAR;AAAA,KADR,EAECe,GAFD,CAEK,UAACf,IAAD,EAAOgB,GAAP,EAAe;AACnB,YAAO,0CAAQ,KAAKA,GAAb,EAAkB,IAAI5B,OAAOF,UAAUc,IAAV,CAAP,CAAtB;AACN,UAAItB,OAAOE,UAAUoB,IAAV,CAAP,CADE,EACuB,GAAG,CAD1B,EAC6B,MAAK,OADlC,GAAP;AAEA,KALD;AADK,IAAP;AAQA;;;2BAEQ;AAAA,OACAiB,gBADA,GACqB,KAAK/C,KAD1B,CACA+C,gBADA;;AAER,OAAMC,aAAaD,mBAChB;AACD3C,aAAS,KAAKA,OADb;AAED6C,YAAQ,CAAC,WAAD,EAAc,KAAd,CAFP;AAGDC;AAHC,IADgB,GAMhB;AACDD,YAAQ,CAAC,KAAD,CADP;AAEDC;AAFC,IANH;;AAWA,UAAO;AACN,aAAS,KAAKjD,SADR;;AAGN,gBAAY,KAAKE,YAHX;;AAKN,sBAAkB,KAAKH,KAAL,CAAWmD,OALvB;AAMN,4BAAwB,KAAKnD,KAAL,CAAWoD,aAN7B;AAON,4BAAwB,KAAKpD,KAAL,CAAWqD;AAP7B,MAQFL,UARE,EAAP;AAUA;;;;;;AAGFjD,UAAUuD,SAAV,GAAsB;AACrBX,YAAW,oBAAUY,MADA;AAErBzC,OAAM,oBAAU0C,MAAV,CAAiBC,UAFF;AAGrB/C,YAAW,oBAAUgD,IAAV,CAAeD,UAHL;AAIrB1C,UAAS,oBAAU4C,MAAV,CAAiBF,UAJL;AAKrBN,UAAS,oBAAUO,IALE;AAMrBN,gBAAe,oBAAUM,IANJ;AAOrBL,gBAAe,oBAAUK,IAPJ;AAQrBX,mBAAkB,oBAAUa;AARP,CAAtB;;AAWA7D,UAAU8D,YAAV,GAAyB;AACxBlB,YAAW,uBADa;AAExB7B,OAAM;AACLoB,WAAS,SADJ;AAELC,UAAQ;AAFH,EAFkB;AAMxBY,mBAAkB,IANM;AAOxBhC,UAAS,GAPe;AAQxBoC,UAAS,iBAASW,CAAT,EAAY;AAAEC,UAAQC,GAAR,CAAY,OAAZ,EAAqBF,CAArB;AAA0B,EARzB;AASxBV,gBAAe,uBAASU,CAAT,EAAY;AAAEC,UAAQC,GAAR,CAAY,cAAZ,EAA4BF,CAA5B;AAAiC,EATtC;AAUxBT,gBAAe,uBAASS,CAAT,EAAY;AAAEC,UAAQC,GAAR,CAAY,aAAZ,EAA2BF,CAA3B;AAAgC;AAVrC,CAAzB;;kBAae/D,S","file":"SARSeries.js","sourcesContent":["\n\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport GenericChartComponent from \"../GenericChartComponent\";\nimport { getAxisCanvas, getMouseCanvas } from \"../GenericComponent\";\n\nimport { isDefined, first, last, hexToRGBA } from \"../utils\";\n\nclass SARSeries extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.renderSVG = this.renderSVG.bind(this);\n\t\tthis.drawOnCanvas = this.drawOnCanvas.bind(this);\n\t\tthis.isHover = this.isHover.bind(this);\n\t}\n\tisHover(moreProps) {\n\t\tconst { mouseXY, currentItem, chartConfig: { yScale } } = moreProps;\n\t\tconst { yAccessor } = this.props;\n\t\tconst y = mouseXY[1];\n\t\tconst currentY = yScale(yAccessor(currentItem));\n\t\treturn y < currentY + 5 && y > currentY - 5;\n\t}\n\tdrawOnCanvas(ctx, moreProps) {\n\t\tconst { yAccessor, fill, opacity } = this.props;\n\t\tconst { xAccessor, plotData, xScale, chartConfig: { yScale }, hovering } = moreProps;\n\n\t\tconst width = xScale(xAccessor(last(plotData))) - xScale(xAccessor(first(plotData)));\n\n\t\tconst d = (width / plotData.length) * 0.5 / 2;\n\t\tconst rx = Math.max(0.5, d / 2) + (hovering ? 2 : 0);\n\t\tconst ry = Math.min(2, Math.max(0.5, d)) + (hovering ? 0 : 0);\n\n\t\tplotData.forEach(each => {\n\t\t\tconst centerX = xScale(xAccessor(each));\n\t\t\tconst centerY = yScale(yAccessor(each));\n\t\t\tconst color = yAccessor(each) > each.close\n\t\t\t\t? fill.falling\n\t\t\t\t: fill.rising;\n\n\t\t\tctx.fillStyle = hexToRGBA(color, opacity);\n\t\t\tctx.strokeStyle = color;\n\n\t\t\tctx.beginPath();\n\t\t\tctx.ellipse(centerX, centerY, rx, ry, 0, 0, 2 * Math.PI);\n\t\t\tctx.closePath();\n\t\t\tctx.fill();\n\t\t\tctx.stroke();\n\t\t});\n\t}\n\trenderSVG(moreProps) {\n\t\tconst { className, yAccessor } = this.props;\n\t\tconst { xAccessor, plotData, xScale, chartConfig: { yScale } } = moreProps;\n\t\t// console.log(moreProps);\n\n\t\treturn \n\t\t\t{plotData\n\t\t\t\t.filter(each => isDefined(yAccessor(each)))\n\t\t\t\t.map((each, idx) => {\n\t\t\t\t\treturn ;\n\t\t\t\t})}\n\t\t;\n\t}\n\n\trender() {\n\t\tconst { highlightOnHover } = this.props;\n\t\tconst hoverProps = highlightOnHover\n\t\t\t? {\n\t\t\t\tisHover: this.isHover,\n\t\t\t\tdrawOn: [\"mousemove\", \"pan\"],\n\t\t\t\tcanvasToDraw: getMouseCanvas\n\t\t\t}\n\t\t\t: {\n\t\t\t\tdrawOn: [\"pan\"],\n\t\t\t\tcanvasToDraw: getAxisCanvas\n\t\t\t};\n\n\t\treturn ;\n\t}\n}\n\nSARSeries.propTypes = {\n\tclassName: PropTypes.string,\n\tfill: PropTypes.object.isRequired,\n\tyAccessor: PropTypes.func.isRequired,\n\topacity: PropTypes.number.isRequired,\n\tonClick: PropTypes.func,\n\tonDoubleClick: PropTypes.func,\n\tonContextMenu: PropTypes.func,\n\thighlightOnHover: PropTypes.bool,\n};\n\nSARSeries.defaultProps = {\n\tclassName: \"react-stockcharts-sar\",\n\tfill: {\n\t\tfalling: \"#4682B4\",\n\t\trising: \"#15EC2E\",\n\t},\n\thighlightOnHover: true,\n\topacity: 0.2,\n\tonClick: function(e) { console.log(\"Click\", e); },\n\tonDoubleClick: function(e) { console.log(\"Double Click\", e); },\n\tonContextMenu: function(e) { console.log(\"Right Click\", e); },\n};\n\nexport default SARSeries;\n"]} \ No newline at end of file +{"version":3,"sources":["../../../src/lib/series/SARSeries.js"],"names":["SARSeries","props","renderSVG","bind","drawOnCanvas","isHover","moreProps","mouseXY","currentItem","yScale","chartConfig","yAccessor","y","currentY","ctx","fill","opacity","xAccessor","plotData","xScale","hovering","width","d","length","radius","Math","min","max","forEach","centerX","each","centerY","color","close","falling","rising","fillStyle","strokeStyle","beginPath","ellipse","PI","closePath","stroke","className","filter","map","idx","highlightOnHover","hoverProps","drawOn","canvasToDraw","onClick","onDoubleClick","onContextMenu","propTypes","string","object","isRequired","func","number","bool","defaultProps","e","console","log"],"mappings":"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","file":"SARSeries.js","sourcesContent":["\n\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport GenericChartComponent from \"../GenericChartComponent\";\nimport { getAxisCanvas, getMouseCanvas } from \"../GenericComponent\";\n\nimport { isDefined, first, last, hexToRGBA } from \"../utils\";\n\nclass SARSeries extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.renderSVG = this.renderSVG.bind(this);\n\t\tthis.drawOnCanvas = this.drawOnCanvas.bind(this);\n\t\tthis.isHover = this.isHover.bind(this);\n\t}\n\tisHover(moreProps) {\n\t\tconst { mouseXY, currentItem, chartConfig: { yScale } } = moreProps;\n\t\tconst { yAccessor } = this.props;\n\t\tconst y = mouseXY[1];\n\t\tconst currentY = yScale(yAccessor(currentItem));\n\t\treturn y < currentY + 5 && y > currentY - 5;\n\t}\n\tdrawOnCanvas(ctx, moreProps) {\n\t\tconst { yAccessor, fill, opacity } = this.props;\n\t\tconst { xAccessor, plotData, xScale, chartConfig: { yScale }, hovering } = moreProps;\n\n\t\tconst width = xScale(xAccessor(last(plotData))) - xScale(xAccessor(first(plotData)));\n\n\t\tconst d = (width / plotData.length) * 0.5 / 2;\n\t\tconst radius = Math.min(2, Math.max(0.5, d)) + (hovering ? 2 : 0);\n\n\t\tplotData.forEach(each => {\n\t\t\tconst centerX = xScale(xAccessor(each));\n\t\t\tconst centerY = yScale(yAccessor(each));\n\t\t\tconst color = yAccessor(each) > each.close\n\t\t\t\t? fill.falling\n\t\t\t\t: fill.rising;\n\n\t\t\tctx.fillStyle = hexToRGBA(color, opacity);\n\t\t\tctx.strokeStyle = color;\n\n\t\t\tctx.beginPath();\n\t\t\tctx.ellipse(centerX, centerY, radius, radius, 0, 0, 2 * Math.PI);\n\t\t\tctx.closePath();\n\t\t\tctx.fill();\n\t\t\tctx.stroke();\n\t\t});\n\t}\n\trenderSVG(moreProps) {\n\t\tconst { className, yAccessor } = this.props;\n\t\tconst { xAccessor, plotData, xScale, chartConfig: { yScale } } = moreProps;\n\t\t// console.log(moreProps);\n\n\t\treturn \n\t\t\t{plotData\n\t\t\t\t.filter(each => isDefined(yAccessor(each)))\n\t\t\t\t.map((each, idx) => {\n\t\t\t\t\treturn ;\n\t\t\t\t})}\n\t\t;\n\t}\n\n\trender() {\n\t\tconst { highlightOnHover } = this.props;\n\t\tconst hoverProps = highlightOnHover\n\t\t\t? {\n\t\t\t\tisHover: this.isHover,\n\t\t\t\tdrawOn: [\"mousemove\", \"pan\"],\n\t\t\t\tcanvasToDraw: getMouseCanvas\n\t\t\t}\n\t\t\t: {\n\t\t\t\tdrawOn: [\"pan\"],\n\t\t\t\tcanvasToDraw: getAxisCanvas\n\t\t\t};\n\n\t\treturn ;\n\t}\n}\n\nSARSeries.propTypes = {\n\tclassName: PropTypes.string,\n\tfill: PropTypes.object.isRequired,\n\tyAccessor: PropTypes.func.isRequired,\n\topacity: PropTypes.number.isRequired,\n\tonClick: PropTypes.func,\n\tonDoubleClick: PropTypes.func,\n\tonContextMenu: PropTypes.func,\n\thighlightOnHover: PropTypes.bool,\n};\n\nSARSeries.defaultProps = {\n\tclassName: \"react-stockcharts-sar\",\n\tfill: {\n\t\tfalling: \"#4682B4\",\n\t\trising: \"#15EC2E\",\n\t},\n\thighlightOnHover: true,\n\topacity: 0.2,\n\tonClick: function(e) { console.log(\"Click\", e); },\n\tonDoubleClick: function(e) { console.log(\"Double Click\", e); },\n\tonContextMenu: function(e) { console.log(\"Right Click\", e); },\n};\n\nexport default SARSeries;\n"]} \ No newline at end of file diff --git a/lib/series/StackedBarSeries.js b/lib/series/StackedBarSeries.js index 7ec5d2c..62044d9 100644 --- a/lib/series/StackedBarSeries.js +++ b/lib/series/StackedBarSeries.js @@ -53,6 +53,13 @@ function roundRect(ctx, x, y, width, height, radius, fill, stroke) { if (typeof radius === 'undefined') { radius = 5; } + if (width / 2 < radius) { + radius = width / 2; + } + if (height / 2 < radius) { + radius = height / 2; + } + if (typeof radius === 'number') { radius = { tl: radius, tr: radius, br: radius, bl: radius }; } else { diff --git a/lib/series/StackedBarSeries.js.map b/lib/series/StackedBarSeries.js.map index 1045108..3cbec03 100644 --- a/lib/series/StackedBarSeries.js.map +++ b/lib/series/StackedBarSeries.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../../src/lib/series/StackedBarSeries.js"],"names":["identityStack","drawOnCanvasHelper","svgHelper","getBarsSVG2","drawOnCanvas2","getBars","roundRect","ctx","x","y","width","height","radius","fill","stroke","tl","tr","br","bl","defaultRadius","side","beginPath","moveTo","lineTo","quadraticCurveTo","closePath","StackedBarSeries","props","renderSVG","bind","drawOnCanvas","moreProps","xAccessor","clip","propTypes","baseAt","oneOfType","number","func","isRequired","direction","oneOf","bool","opacity","string","className","defaultProps","xScale","yScale","range","widthRatio","swapScales","keys","stack","data","response","map","key","i","arrays","array","d","index","arguments","length","stackFn","defaultPostAction","postRotateAction","rotateXY","chartConfig","plotData","bars","doStuff","convertToArray","item","Array","isArray","yAccessor","modifiedYAccessor","modifiedXAccessor","modifiedXScale","modifiedYScale","postProcessor","each","idx","nest","entries","forEach","outer","values","strokeStyle","fillStyle","fillRect","after","spaceBetweenBar","getClassName","getFill","getBase","widthFunctor","barWidth","Math","round","eachBarWidth","offset","ds","appearance","eachYAccessor","_","newData","h","groupOffset","groupWidth","filter","isNaN","bar"],"mappings":"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","file":"StackedBarSeries.js","sourcesContent":["\n\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport { nest as d3Nest } from \"d3-collection\";\nimport { merge } from \"d3-array\";\nimport { stack as d3Stack } from \"d3-shape\";\n\nimport GenericChartComponent from \"../GenericChartComponent\";\nimport { getAxisCanvas } from \"../GenericComponent\";\n\nimport { identity, hexToRGBA, head, functor, plotDataLengthBarWidth } from \"../utils\";\n\nfunction roundRect(ctx, x, y, width, height, radius, fill, stroke) {\n if (typeof stroke == 'undefined') {\n stroke = true;\n }\n if (typeof radius === 'undefined') {\n radius = 5;\n }\n if (typeof radius === 'number') {\n radius = {tl: radius, tr: radius, br: radius, bl: radius};\n } else {\n var defaultRadius = {tl: 0, tr: 0, br: 0, bl: 0};\n for (var side in defaultRadius) {\n radius[side] = radius[side] || defaultRadius[side];\n }\n }\n ctx.beginPath();\n ctx.moveTo(x + radius.tl, y);\n ctx.lineTo(x + width - radius.tr, y);\n ctx.quadraticCurveTo(x + width, y, x + width, y + radius.tr);\n ctx.lineTo(x + width, y + height - radius.br);\n ctx.quadraticCurveTo(x + width, y + height, x + width - radius.br, y + height);\n ctx.lineTo(x + radius.bl, y + height);\n ctx.quadraticCurveTo(x, y + height, x, y + height - radius.bl);\n ctx.lineTo(x, y + radius.tl);\n ctx.quadraticCurveTo(x, y, x + radius.tl, y);\n ctx.closePath();\n\n if (fill) {\n ctx.fill();\n }\n if (stroke) {\n ctx.stroke();\n }\n}\n\nclass StackedBarSeries extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.renderSVG = this.renderSVG.bind(this);\n\t\tthis.drawOnCanvas = this.drawOnCanvas.bind(this);\n\t}\n\tdrawOnCanvas(ctx, moreProps) {\n\t\tconst { xAccessor } = moreProps;\n\t\t// var { xScale, chartConfig: { yScale }, plotData } = moreProps;\n\n\t\tdrawOnCanvasHelper(ctx, this.props, moreProps, xAccessor, d3Stack);\n\t}\n\trenderSVG(moreProps) {\n\t\tconst { xAccessor } = moreProps;\n\n\t\treturn {svgHelper(this.props, moreProps, xAccessor, d3Stack)};\n\t}\n\trender() {\n\t\tconst { clip } = this.props;\n\n\t\treturn ;\n\t}\n}\n\nStackedBarSeries.propTypes = {\n\tbaseAt: PropTypes.oneOfType([\n\t\tPropTypes.number,\n\t\tPropTypes.func,\n\t]).isRequired,\n\tdirection: PropTypes.oneOf([\"up\", \"down\"]).isRequired,\n\tstroke: PropTypes.bool.isRequired,\n\twidth: PropTypes.oneOfType([\n\t\tPropTypes.number,\n\t\tPropTypes.func\n\t]).isRequired,\n\topacity: PropTypes.number.isRequired,\n\tfill: PropTypes.oneOfType([\n\t\tPropTypes.func, PropTypes.string\n\t]).isRequired,\n\tclassName: PropTypes.oneOfType([\n\t\tPropTypes.func, PropTypes.string\n\t]).isRequired,\n\tclip: PropTypes.bool.isRequired,\n radius: PropTypes.number\n};\n\nStackedBarSeries.defaultProps = {\n\tbaseAt: (xScale, yScale/* , d*/) => head(yScale.range()),\n\tdirection: \"up\",\n\tclassName: \"bar\",\n\tstroke: true,\n\tfill: \"#4682B4\",\n radius: 0,\n\topacity: 0.5,\n\twidth: plotDataLengthBarWidth,\n\twidthRatio: 0.8,\n\tclip: true,\n\tswapScales: false,\n};\n\nexport function identityStack() {\n\tlet keys = [];\n\tfunction stack(data) {\n\t\tconst response = keys.map((key, i) => {\n\t\t\t// eslint-disable-next-line prefer-const\n\t\t\tlet arrays = data.map(d => {\n\t\t\t\t// eslint-disable-next-line prefer-const\n\t\t\t\tlet array = [0, d[key]];\n\t\t\t\tarray.data = d;\n\t\t\t\treturn array;\n\t\t\t});\n\t\t\tarrays.key = key;\n\t\t\tarrays.index = i;\n\t\t\treturn arrays;\n\t\t});\n\t\treturn response;\n\t}\n\tstack.keys = function(x) {\n\t\tif (!arguments.length) {\n\t\t\treturn keys;\n\t\t}\n\t\tkeys = x;\n\t\treturn stack;\n\t};\n\treturn stack;\n}\n\n\nexport function drawOnCanvasHelper(ctx, props, moreProps, xAccessor, stackFn, defaultPostAction = identity, postRotateAction = rotateXY) {\n\tconst { xScale, chartConfig: { yScale }, plotData } = moreProps;\n\n\tconst bars = doStuff(props, xAccessor, plotData, xScale, yScale, stackFn, postRotateAction, defaultPostAction);\n\n\tdrawOnCanvas2(props, ctx, bars);\n}\n\nfunction convertToArray(item) {\n\treturn Array.isArray(item) ? item : [item];\n}\n\nexport function svgHelper(props, moreProps, xAccessor, stackFn, defaultPostAction = identity, postRotateAction = rotateXY) {\n\tconst { xScale, chartConfig: { yScale }, plotData } = moreProps;\n\tconst bars = doStuff(props, xAccessor, plotData, xScale, yScale, stackFn, postRotateAction, defaultPostAction);\n\treturn getBarsSVG2(props, bars);\n}\n\nfunction doStuff(props, xAccessor, plotData, xScale, yScale, stackFn, postRotateAction, defaultPostAction) {\n\tconst { yAccessor, swapScales } = props;\n\n\tconst modifiedYAccessor = swapScales ? convertToArray(props.xAccessor) : convertToArray(yAccessor);\n\tconst modifiedXAccessor = swapScales ? yAccessor : xAccessor;\n\n\tconst modifiedXScale = swapScales ? yScale : xScale;\n\tconst modifiedYScale = swapScales ? xScale : yScale;\n\n\tconst postProcessor = swapScales ? postRotateAction : defaultPostAction;\n\n\tconst bars = getBars(props, modifiedXAccessor, modifiedYAccessor, modifiedXScale, modifiedYScale, plotData, stackFn, postProcessor);\n\n\treturn bars;\n}\n\nexport const rotateXY = (array) => array.map(each => {\n\treturn {\n\t\t...each,\n\t\tx: each.y,\n\t\ty: each.x,\n\t\theight: each.width,\n\t\twidth: each.height\n\t};\n});\n\nexport function getBarsSVG2(props, bars) {\n\t/* eslint-disable react/prop-types */\n\tconst { opacity } = props;\n\t/* eslint-enable react/prop-types */\n\n\treturn bars.map((d, idx) => {\n\t\tif (d.width <= 1) {\n\t\t\treturn ;\n\t\t}\n\t\treturn ;\n\t});\n}\n\nexport function drawOnCanvas2(props, ctx, bars) {\n\tconst { stroke } = props;\n\n\tconst nest = d3Nest()\n\t\t.key(d => d.fill)\n\t\t.entries(bars);\n\n\tnest.forEach(outer => {\n\t\tconst { key, values } = outer;\n\t\tif (head(values).width > 1) {\n\t\t\tctx.strokeStyle = key;\n\t\t}\n\t\tconst fillStyle = head(values).width <= 1\n\t\t\t? key\n\t\t\t: hexToRGBA(key, props.opacity);\n\t\tctx.fillStyle = fillStyle;\n\n\t\tvalues.forEach(d => {\n\t\t\tif (d.width <= 1) {\n\t\t\t\t/* */\n\t\t\t\t/*\n\t\t\t\tctx.beginPath();\n\t\t\t\tctx.moveTo(d.x, d.y);\n\t\t\t\tctx.lineTo(d.x, d.y + d.height);\n\t\t\t\tctx.stroke();\n\t\t\t\t*/\n\t\t\t\tctx.fillRect(d.x - 0.5, d.y, 1, d.height);\n\t\t\t} else {\n\t\t\t\t/* */\n\t\t\t\t/*\n\t\t\t\tctx.beginPath();\n\t\t\t\tctx.rect(d.x, d.y, d.width, d.height);\n\t\t\t\tctx.fill();\n\t\t\t\t*/\n\n roundRect(ctx, d.x, d.y, d.width, d.height, props.radius, true, stroke);\n\t\t //ctx.fillRect(d.x, d.y, d.width, d.height);\n\t\t\t\t//if (stroke) ctx.strokeRect(d.x, d.y, d.width, d.height);\n\t\t\t}\n\n\t\t});\n\t});\n}\n\nexport function getBars(props, xAccessor, yAccessor, xScale, yScale, plotData, stack = identityStack, after = identity) {\n\tconst { baseAt, className, fill, stroke, spaceBetweenBar = 0 } = props;\n\n\tconst getClassName = functor(className);\n\tconst getFill = functor(fill);\n\tconst getBase = functor(baseAt);\n\n\tconst widthFunctor = functor(props.width);\n\tconst width = widthFunctor(props, {\n\t\txScale,\n\t\txAccessor,\n\t\tplotData\n\t});\n\n\tconst barWidth = Math.round(width);\n\n\tconst eachBarWidth = (barWidth - spaceBetweenBar * (yAccessor.length - 1)) / yAccessor.length;\n\n\tconst offset = (barWidth === 1 ? 0 : 0.5 * width);\n\n\tconst ds = plotData\n\t\t.map(each => {\n\t\t\t// eslint-disable-next-line prefer-const\n\t\t\tlet d = {\n\t\t\t\tappearance: {\n\t\t\t\t},\n\t\t\t\tx: xAccessor(each),\n\t\t\t};\n\t\t\tyAccessor.forEach((eachYAccessor, i) => {\n\t\t\t\tconst key = `y${i}`;\n\t\t\t\td[key] = eachYAccessor(each);\n\t\t\t\tconst appearance = {\n\t\t\t\t\tclassName: getClassName(each, i),\n\t\t\t\t\tstroke: stroke ? getFill(each, i) : \"none\",\n\t\t\t\t\tfill: getFill(each, i),\n\t\t\t\t};\n\t\t\t\td.appearance[key] = appearance;\n\t\t\t});\n\t\t\treturn d;\n\t\t});\n\n\tconst keys = yAccessor.map((_, i) => `y${i}`);\n\n\t// console.log(ds);\n\n\tconst data = stack().keys(keys)(ds);\n\n\t// console.log(data);\n\n\tconst newData = data.map((each, i) => {\n\t\tconst key = each.key;\n\t\treturn each.map((d) => {\n\t\t\t// eslint-disable-next-line prefer-const\n\t\t\tlet array = [d[0], d[1]];\n\t\t\tarray.data = {\n\t\t\t\tx: d.data.x,\n\t\t\t\ti,\n\t\t\t\tappearance: d.data.appearance[key]\n\t\t\t};\n\t\t\treturn array;\n\t\t});\n\t});\n\t// console.log(newData);\n\t// console.log(merge(newData));\n\n\tconst bars = merge(newData)\n\t\t// .filter(d => isDefined(d.y))\n\t\t.map(d => {\n\t\t\t// let baseValue = yScale.invert(getBase(xScale, yScale, d.datum));\n\t\t\tlet y = yScale(d[1]);\n\t\t\t/* let h = isDefined(d.y0) && d.y0 !== 0 && !isNaN(d.y0)\n\t\t\t\t\t? yScale(d.y0) - y\n\t\t\t\t\t: getBase(xScale, yScale, d.datum) - yScale(d.y)*/\n\t\t\tlet h = getBase(xScale, yScale, d.data) - yScale(d[1] - d[0]);\n\t\t\t// console.log(d.y, yScale.domain(), yScale.range())\n\t\t\t// let h = ;\n\t\t\t// if (d.y < 0) h = -h;\n\t\t\t// console.log(d, y, h)\n\t\t\tif (h < 0) {\n\t\t\t\ty = y + h;\n\t\t\t\th = -h;\n\t\t\t}\n\t\t\t// console.log(d.data.i, Math.round(offset - (d.data.i > 0 ? (eachBarWidth + spaceBetweenBar) * d.data.i : 0)))\n\t\t\t/* console.log(d.series, d.datum.date, d.x,\n\t\t\t\t\tgetBase(xScale, yScale, d.datum), `d.y=${d.y}, d.y0=${d.y0}, y=${y}, h=${h}`)*/\n\t\t\treturn {\n\t\t\t\t...d.data.appearance,\n\t\t\t\t// series: d.series,\n\t\t\t\t// i: d.x,\n\t\t\t\tx: Math.round(xScale(d.data.x) - width / 2),\n\t\t\t\ty: y,\n\t\t\t\tgroupOffset: Math.round(offset - (d.data.i > 0 ? (eachBarWidth + spaceBetweenBar) * d.data.i : 0)),\n\t\t\t\tgroupWidth: Math.round(eachBarWidth),\n\t\t\t\toffset: Math.round(offset),\n\t\t\t\theight: h,\n\t\t\t\twidth: barWidth,\n\t\t\t};\n\t\t})\n\t\t.filter(bar => !isNaN(bar.y));\n\n\treturn after(bars);\n}\n\nexport default StackedBarSeries;\n"]} \ No newline at end of file +{"version":3,"sources":["../../../src/lib/series/StackedBarSeries.js"],"names":["identityStack","drawOnCanvasHelper","svgHelper","getBarsSVG2","drawOnCanvas2","getBars","roundRect","ctx","x","y","width","height","radius","fill","stroke","tl","tr","br","bl","defaultRadius","side","beginPath","moveTo","lineTo","quadraticCurveTo","closePath","StackedBarSeries","props","renderSVG","bind","drawOnCanvas","moreProps","xAccessor","clip","propTypes","baseAt","oneOfType","number","func","isRequired","direction","oneOf","bool","opacity","string","className","defaultProps","xScale","yScale","range","widthRatio","swapScales","keys","stack","data","response","map","key","i","arrays","array","d","index","arguments","length","stackFn","defaultPostAction","postRotateAction","rotateXY","chartConfig","plotData","bars","doStuff","convertToArray","item","Array","isArray","yAccessor","modifiedYAccessor","modifiedXAccessor","modifiedXScale","modifiedYScale","postProcessor","each","idx","nest","entries","forEach","outer","values","strokeStyle","fillStyle","fillRect","after","spaceBetweenBar","getClassName","getFill","getBase","widthFunctor","barWidth","Math","round","eachBarWidth","offset","ds","appearance","eachYAccessor","_","newData","h","groupOffset","groupWidth","filter","isNaN","bar"],"mappings":"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","file":"StackedBarSeries.js","sourcesContent":["\n\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport { nest as d3Nest } from \"d3-collection\";\nimport { merge } from \"d3-array\";\nimport { stack as d3Stack } from \"d3-shape\";\n\nimport GenericChartComponent from \"../GenericChartComponent\";\nimport { getAxisCanvas } from \"../GenericComponent\";\n\nimport { identity, hexToRGBA, head, functor, plotDataLengthBarWidth } from \"../utils\";\n\nfunction roundRect(ctx, x, y, width, height, radius, fill, stroke) {\n if (typeof stroke == 'undefined') {\n stroke = true;\n }\n if (typeof radius === 'undefined') {\n radius = 5;\n }\n if (width / 2 < radius) {\n radius = width / 2;\n }\n if (height / 2 < radius) {\n radius = height / 2;\n }\n\n if (typeof radius === 'number') {\n radius = {tl: radius, tr: radius, br: radius, bl: radius};\n } else {\n var defaultRadius = {tl: 0, tr: 0, br: 0, bl: 0};\n for (var side in defaultRadius) {\n radius[side] = radius[side] || defaultRadius[side];\n }\n }\n ctx.beginPath();\n ctx.moveTo(x + radius.tl, y);\n ctx.lineTo(x + width - radius.tr, y);\n ctx.quadraticCurveTo(x + width, y, x + width, y + radius.tr);\n ctx.lineTo(x + width, y + height - radius.br);\n ctx.quadraticCurveTo(x + width, y + height, x + width - radius.br, y + height);\n ctx.lineTo(x + radius.bl, y + height);\n ctx.quadraticCurveTo(x, y + height, x, y + height - radius.bl);\n ctx.lineTo(x, y + radius.tl);\n ctx.quadraticCurveTo(x, y, x + radius.tl, y);\n ctx.closePath();\n\n if (fill) {\n ctx.fill();\n }\n if (stroke) {\n ctx.stroke();\n }\n}\n\nclass StackedBarSeries extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.renderSVG = this.renderSVG.bind(this);\n\t\tthis.drawOnCanvas = this.drawOnCanvas.bind(this);\n\t}\n\tdrawOnCanvas(ctx, moreProps) {\n\t\tconst { xAccessor } = moreProps;\n\t\t// var { xScale, chartConfig: { yScale }, plotData } = moreProps;\n\n\t\tdrawOnCanvasHelper(ctx, this.props, moreProps, xAccessor, d3Stack);\n\t}\n\trenderSVG(moreProps) {\n\t\tconst { xAccessor } = moreProps;\n\n\t\treturn {svgHelper(this.props, moreProps, xAccessor, d3Stack)};\n\t}\n\trender() {\n\t\tconst { clip } = this.props;\n\n\t\treturn ;\n\t}\n}\n\nStackedBarSeries.propTypes = {\n\tbaseAt: PropTypes.oneOfType([\n\t\tPropTypes.number,\n\t\tPropTypes.func,\n\t]).isRequired,\n\tdirection: PropTypes.oneOf([\"up\", \"down\"]).isRequired,\n\tstroke: PropTypes.bool.isRequired,\n\twidth: PropTypes.oneOfType([\n\t\tPropTypes.number,\n\t\tPropTypes.func\n\t]).isRequired,\n\topacity: PropTypes.number.isRequired,\n\tfill: PropTypes.oneOfType([\n\t\tPropTypes.func, PropTypes.string\n\t]).isRequired,\n\tclassName: PropTypes.oneOfType([\n\t\tPropTypes.func, PropTypes.string\n\t]).isRequired,\n\tclip: PropTypes.bool.isRequired,\n radius: PropTypes.number\n};\n\nStackedBarSeries.defaultProps = {\n\tbaseAt: (xScale, yScale/* , d*/) => head(yScale.range()),\n\tdirection: \"up\",\n\tclassName: \"bar\",\n\tstroke: true,\n\tfill: \"#4682B4\",\n radius: 0,\n\topacity: 0.5,\n\twidth: plotDataLengthBarWidth,\n\twidthRatio: 0.8,\n\tclip: true,\n\tswapScales: false,\n};\n\nexport function identityStack() {\n\tlet keys = [];\n\tfunction stack(data) {\n\t\tconst response = keys.map((key, i) => {\n\t\t\t// eslint-disable-next-line prefer-const\n\t\t\tlet arrays = data.map(d => {\n\t\t\t\t// eslint-disable-next-line prefer-const\n\t\t\t\tlet array = [0, d[key]];\n\t\t\t\tarray.data = d;\n\t\t\t\treturn array;\n\t\t\t});\n\t\t\tarrays.key = key;\n\t\t\tarrays.index = i;\n\t\t\treturn arrays;\n\t\t});\n\t\treturn response;\n\t}\n\tstack.keys = function(x) {\n\t\tif (!arguments.length) {\n\t\t\treturn keys;\n\t\t}\n\t\tkeys = x;\n\t\treturn stack;\n\t};\n\treturn stack;\n}\n\n\nexport function drawOnCanvasHelper(ctx, props, moreProps, xAccessor, stackFn, defaultPostAction = identity, postRotateAction = rotateXY) {\n\tconst { xScale, chartConfig: { yScale }, plotData } = moreProps;\n\n\tconst bars = doStuff(props, xAccessor, plotData, xScale, yScale, stackFn, postRotateAction, defaultPostAction);\n\n\tdrawOnCanvas2(props, ctx, bars);\n}\n\nfunction convertToArray(item) {\n\treturn Array.isArray(item) ? item : [item];\n}\n\nexport function svgHelper(props, moreProps, xAccessor, stackFn, defaultPostAction = identity, postRotateAction = rotateXY) {\n\tconst { xScale, chartConfig: { yScale }, plotData } = moreProps;\n\tconst bars = doStuff(props, xAccessor, plotData, xScale, yScale, stackFn, postRotateAction, defaultPostAction);\n\treturn getBarsSVG2(props, bars);\n}\n\nfunction doStuff(props, xAccessor, plotData, xScale, yScale, stackFn, postRotateAction, defaultPostAction) {\n\tconst { yAccessor, swapScales } = props;\n\n\tconst modifiedYAccessor = swapScales ? convertToArray(props.xAccessor) : convertToArray(yAccessor);\n\tconst modifiedXAccessor = swapScales ? yAccessor : xAccessor;\n\n\tconst modifiedXScale = swapScales ? yScale : xScale;\n\tconst modifiedYScale = swapScales ? xScale : yScale;\n\n\tconst postProcessor = swapScales ? postRotateAction : defaultPostAction;\n\n\tconst bars = getBars(props, modifiedXAccessor, modifiedYAccessor, modifiedXScale, modifiedYScale, plotData, stackFn, postProcessor);\n\n\treturn bars;\n}\n\nexport const rotateXY = (array) => array.map(each => {\n\treturn {\n\t\t...each,\n\t\tx: each.y,\n\t\ty: each.x,\n\t\theight: each.width,\n\t\twidth: each.height\n\t};\n});\n\nexport function getBarsSVG2(props, bars) {\n\t/* eslint-disable react/prop-types */\n\tconst { opacity } = props;\n\t/* eslint-enable react/prop-types */\n\n\treturn bars.map((d, idx) => {\n\t\tif (d.width <= 1) {\n\t\t\treturn ;\n\t\t}\n\t\treturn ;\n\t});\n}\n\nexport function drawOnCanvas2(props, ctx, bars) {\n\tconst { stroke } = props;\n\n\tconst nest = d3Nest()\n\t\t.key(d => d.fill)\n\t\t.entries(bars);\n\n\tnest.forEach(outer => {\n\t\tconst { key, values } = outer;\n\t\tif (head(values).width > 1) {\n\t\t\tctx.strokeStyle = key;\n\t\t}\n\t\tconst fillStyle = head(values).width <= 1\n\t\t\t? key\n\t\t\t: hexToRGBA(key, props.opacity);\n\t\tctx.fillStyle = fillStyle;\n\n\t\tvalues.forEach(d => {\n\t\t\tif (d.width <= 1) {\n\t\t\t\t/* */\n\t\t\t\t/*\n\t\t\t\tctx.beginPath();\n\t\t\t\tctx.moveTo(d.x, d.y);\n\t\t\t\tctx.lineTo(d.x, d.y + d.height);\n\t\t\t\tctx.stroke();\n\t\t\t\t*/\n\t\t\t\tctx.fillRect(d.x - 0.5, d.y, 1, d.height);\n\t\t\t} else {\n\t\t\t\t/* */\n\t\t\t\t/*\n\t\t\t\tctx.beginPath();\n\t\t\t\tctx.rect(d.x, d.y, d.width, d.height);\n\t\t\t\tctx.fill();\n\t\t\t\t*/\n\n roundRect(ctx, d.x, d.y, d.width, d.height, props.radius, true, stroke);\n\t\t //ctx.fillRect(d.x, d.y, d.width, d.height);\n\t\t\t\t//if (stroke) ctx.strokeRect(d.x, d.y, d.width, d.height);\n\t\t\t}\n\n\t\t});\n\t});\n}\n\nexport function getBars(props, xAccessor, yAccessor, xScale, yScale, plotData, stack = identityStack, after = identity) {\n\tconst { baseAt, className, fill, stroke, spaceBetweenBar = 0 } = props;\n\n\tconst getClassName = functor(className);\n\tconst getFill = functor(fill);\n\tconst getBase = functor(baseAt);\n\n\tconst widthFunctor = functor(props.width);\n\tconst width = widthFunctor(props, {\n\t\txScale,\n\t\txAccessor,\n\t\tplotData\n\t});\n\n\tconst barWidth = Math.round(width);\n\n\tconst eachBarWidth = (barWidth - spaceBetweenBar * (yAccessor.length - 1)) / yAccessor.length;\n\n\tconst offset = (barWidth === 1 ? 0 : 0.5 * width);\n\n\tconst ds = plotData\n\t\t.map(each => {\n\t\t\t// eslint-disable-next-line prefer-const\n\t\t\tlet d = {\n\t\t\t\tappearance: {\n\t\t\t\t},\n\t\t\t\tx: xAccessor(each),\n\t\t\t};\n\t\t\tyAccessor.forEach((eachYAccessor, i) => {\n\t\t\t\tconst key = `y${i}`;\n\t\t\t\td[key] = eachYAccessor(each);\n\t\t\t\tconst appearance = {\n\t\t\t\t\tclassName: getClassName(each, i),\n\t\t\t\t\tstroke: stroke ? getFill(each, i) : \"none\",\n\t\t\t\t\tfill: getFill(each, i),\n\t\t\t\t};\n\t\t\t\td.appearance[key] = appearance;\n\t\t\t});\n\t\t\treturn d;\n\t\t});\n\n\tconst keys = yAccessor.map((_, i) => `y${i}`);\n\n\t// console.log(ds);\n\n\tconst data = stack().keys(keys)(ds);\n\n\t// console.log(data);\n\n\tconst newData = data.map((each, i) => {\n\t\tconst key = each.key;\n\t\treturn each.map((d) => {\n\t\t\t// eslint-disable-next-line prefer-const\n\t\t\tlet array = [d[0], d[1]];\n\t\t\tarray.data = {\n\t\t\t\tx: d.data.x,\n\t\t\t\ti,\n\t\t\t\tappearance: d.data.appearance[key]\n\t\t\t};\n\t\t\treturn array;\n\t\t});\n\t});\n\t// console.log(newData);\n\t// console.log(merge(newData));\n\n\tconst bars = merge(newData)\n\t\t// .filter(d => isDefined(d.y))\n\t\t.map(d => {\n\t\t\t// let baseValue = yScale.invert(getBase(xScale, yScale, d.datum));\n\t\t\tlet y = yScale(d[1]);\n\t\t\t/* let h = isDefined(d.y0) && d.y0 !== 0 && !isNaN(d.y0)\n\t\t\t\t\t? yScale(d.y0) - y\n\t\t\t\t\t: getBase(xScale, yScale, d.datum) - yScale(d.y)*/\n\t\t\tlet h = getBase(xScale, yScale, d.data) - yScale(d[1] - d[0]);\n\t\t\t// console.log(d.y, yScale.domain(), yScale.range())\n\t\t\t// let h = ;\n\t\t\t// if (d.y < 0) h = -h;\n\t\t\t// console.log(d, y, h)\n\t\t\tif (h < 0) {\n\t\t\t\ty = y + h;\n\t\t\t\th = -h;\n\t\t\t}\n\t\t\t// console.log(d.data.i, Math.round(offset - (d.data.i > 0 ? (eachBarWidth + spaceBetweenBar) * d.data.i : 0)))\n\t\t\t/* console.log(d.series, d.datum.date, d.x,\n\t\t\t\t\tgetBase(xScale, yScale, d.datum), `d.y=${d.y}, d.y0=${d.y0}, y=${y}, h=${h}`)*/\n\t\t\treturn {\n\t\t\t\t...d.data.appearance,\n\t\t\t\t// series: d.series,\n\t\t\t\t// i: d.x,\n\t\t\t\tx: Math.round(xScale(d.data.x) - width / 2),\n\t\t\t\ty: y,\n\t\t\t\tgroupOffset: Math.round(offset - (d.data.i > 0 ? (eachBarWidth + spaceBetweenBar) * d.data.i : 0)),\n\t\t\t\tgroupWidth: Math.round(eachBarWidth),\n\t\t\t\toffset: Math.round(offset),\n\t\t\t\theight: h,\n\t\t\t\twidth: barWidth,\n\t\t\t};\n\t\t})\n\t\t.filter(bar => !isNaN(bar.y));\n\n\treturn after(bars);\n}\n\nexport default StackedBarSeries;\n"]} \ No newline at end of file diff --git a/package.json b/package.json index 0f623ff..34c68d8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "react-stockcharts", - "version": "0.7.6", + "version": "0.7.8", "description": "Highly customizable stock charts with ReactJS and d3", "main": "index.js", "module": "es/index.js", @@ -24,7 +24,7 @@ "debug": "^3.1.0", "lodash.flattendeep": "^4.4.0", "prop-types": "^15.6.0", - "save-svg-as-png": "^1.2.0" + "save-svg-as-png": "^1.4.5" }, "peerDependencies": { "react": "^15.0.0 || ^16.0.0",