@polygon.io/charts
Version:
A set of React components for charting financial market data.
1 lines • 3.27 kB
JavaScript
;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"),_d3Shape=require("d3-shape");require("d3-transition");var _LiveIndicator=_interopRequireDefault(require("../LiveIndicator")),_PreviousCloseLine=_interopRequireDefault(require("../PreviousCloseLine")),_useTimeAxis=_interopRequireDefault(require("../../hooks/useTimeAxis")),_usePriceAxis=_interopRequireDefault(require("../../hooks/usePriceAxis"));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,LineDataChart=function(a){var b=a.data,c=a.width,d=a.height,e=a.previousClose,f=a.transitionDuration,g=a.liveUpdates,h=(0,_react.useRef)(null),i=(0,_styledComponents.useTheme)(),j=i.color.content,k=j.success,l=void 0===k?"":k,m=j.danger,n=void 0===m?"":m,o=(0,_useTimeAxis["default"])(c,b),p=(0,_usePriceAxis["default"])(d,b,e),q=(0,_react.useCallback)(function(a){var b=a.t;return b},[]),r=(0,_react.useCallback)(function(a){var b=a.c;return b},[]),s=(0,_react.useMemo)(function(){return b.slice(-1)},[b]),t=s[0],u=(0,_react.useMemo)(function(){return b.slice(0,1)},[b]),v=u[0],w=(0,_react.useMemo)(function(){return g?t&&e<=r(t)?l:n:t&&v&&r(v)<=r(t)?l:n},[t,e,r,l,n,v,g]),x=(0,_react.useMemo)(function(){var a=function(a){return o(q(a))+o.bandwidth()/2},c=function(a){return p(r(a))};return b.reduce(function(e,f,d){if(d<b.length-1){var g=b[d+1];e.push({t:f.t,values:[[a(f),c(f)],[a(g),c(g)]]})}return e},[])},[b,q,r,o,p]),y=(0,_react.useCallback)(function(a){return a.transition().delay(function(a,b){return b*(f/x.length)}).duration(f/x.length).ease(_d3Ease.easeLinear).attr("opacity","1")},[x.length,f]);return(0,_react.useEffect)(function(){var a=(0,_d3Selection.select)(h.current),b=a.selectAll("path").data(x,function isEqual(a,b){var c=a.t;return"".concat(c,"+").concat(b)});b.enter().insert("path").attr("opacity","0").call(y).merge(b).attr("stroke-width",2).attr("stroke",w).attr("d",function(a){return(0,_d3Shape.line)()(a.values)}),b.exit().remove()},[b,o,p,q,r,w,x,y]),__jsx("svg",{ref:h,height:d,width:c},__jsx(_PreviousCloseLine["default"],{data:b,width:c,height:d,previousClose:e}),g&&__jsx(_LiveIndicator["default"],{data:b,width:c,height:d,previousClose:e,transitionDuration:f}))};LineDataChart.defaultProps={data:[],previousClose:0,liveUpdates:!1};var _default=LineDataChart;exports["default"]=_default;