UNPKG

@polygon.io/charts

Version:

A set of React components for charting financial market data.

1 lines 3.71 kB
"use strict";var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault"),_typeof=require("@babel/runtime/helpers/typeof");Object.defineProperty(exports,"__esModule",{value:!0}),exports["default"]=void 0;var _react=_interopRequireWildcard(require("react")),_styledComponents=require("styled-components"),_d3Selection=require("d3-selection"),_d3Ease=require("d3-ease"),_d3Interpolate=require("d3-interpolate");require("d3-transition");var _useTimeAxis=_interopRequireDefault(require("../../hooks/useTimeAxis")),_usePriceAxis=_interopRequireDefault(require("../../hooks/usePriceAxis")),_PreviousCloseLine=_interopRequireDefault(require("../PreviousCloseLine"));function _getRequireWildcardCache(a){if("function"!=typeof WeakMap)return null;var b=new WeakMap,c=new WeakMap;return(_getRequireWildcardCache=function(a){return a?c:b})(a)}function _interopRequireWildcard(a,b){if(!b&&a&&a.__esModule)return a;if(null===a||"object"!==_typeof(a)&&"function"!=typeof a)return{default:a};var c=_getRequireWildcardCache(b);if(c&&c.has(a))return c.get(a);var d={},e=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var f in a)if("default"!=f&&Object.prototype.hasOwnProperty.call(a,f)){var g=e?Object.getOwnPropertyDescriptor(a,f):null;g&&(g.get||g.set)?Object.defineProperty(d,f,g):d[f]=a[f]}return d["default"]=a,c&&c.set(a,d),d}var __jsx=_react["default"].createElement,CandlestickChart=function(a){var b=a.data,c=a.width,d=a.height,e=a.previousClose,f=a.transitionDuration,g=(0,_react.useRef)(null),h=(0,_styledComponents.useTheme)(),i=h.color.content,j=i.success,k=void 0===j?"":j,l=i.danger,m=void 0===l?"":l,n=i.secondary,o=void 0===n?"":n,p=(0,_useTimeAxis["default"])(c,b),q=(0,_usePriceAxis["default"])(d,b,e),r=(0,_react.useCallback)(function(a){var b=a.t;return b},[]),s=(0,_react.useCallback)(function(a){var b=a.o,d=a.c;return Math.max(b,d)},[]),t=(0,_react.useCallback)(function(a){var b=a.o,d=a.c;return q(Math.min(b,d))-q(Math.max(b,d))},[q]),u=(0,_react.useCallback)(function(a){var b=a.o,d=a.c;return b>d?m:k},[m,k]),v=(0,_react.useMemo)(function(){return f/5},[f]),w=(0,_react.useMemo)(function(){return f/2-v},[f,v]),x=(0,_react.useCallback)(function(a){return a.transition().delay(function(a,c){return c*(f/b.length)}).duration(w).ease(_d3Ease.easeLinear).attrTween("y",function(a){return(0,_d3Interpolate.interpolate)(q(s(a))+t(a)/2,q(s(a)))}).attrTween("height",function(a){return(0,_d3Interpolate.interpolate)(0,t(a))})},[w,b.length,t,s,f,q]),y=(0,_react.useCallback)(function(a){return a.transition().delay(function(a,c){return c*(f/b.length)+w}).duration(v).ease(_d3Ease.easeLinear).attrTween("y1",function(a){var b=a.o,d=a.c,c=a.h;return(0,_d3Interpolate.interpolate)(q(Math.min(b,d)),q(c))}).attrTween("y2",function(a){var b=a.o,d=a.c,c=a.l;return(0,_d3Interpolate.interpolate)(q(Math.max(b,d)),q(c))})},[w,b.length,f,v,q]);return(0,_react.useEffect)(function(){var a=(0,_d3Selection.select)(g.current),c=function(a,b){var c=a.t;return"".concat(c,"+").concat(b)},d=a.selectAll("line[data-wick]").data(b,c),e=a.selectAll("rect").data(b,c);d.enter().insert("line").call(y).merge(d).attr("data-wick",!0).attr("x1",function(a){return p(r(a))+p.bandwidth()/2}).attr("x2",function(a){return p(r(a))+p.bandwidth()/2}).attr("stroke",o).attr("stroke-width",.5),d.exit().remove(),e.enter().insert("rect").call(x).merge(e).attr("x",function(a){return p(r(a))}).attr("width",p.bandwidth()).attr("fill",u),e.exit().remove()},[f,b,p,q,r,s,u,o,y,x]),__jsx("svg",{ref:g,height:d,width:c},__jsx(_PreviousCloseLine["default"],{data:b,width:c,height:d,previousClose:e}))};CandlestickChart.defaultProps={data:[],previousClose:0};var _default=CandlestickChart;exports["default"]=_default;