react-lightweight-charts-simple
Version:
A simple react wrapper for lightweight-charts library
3 lines (2 loc) • 8.87 kB
JavaScript
;Object.defineProperty(exports,"__esModule",{value:!0});var e=require("lightweight-charts"),r=require("react");function n(){return(n=Object.assign||function(e){for(var r=1;r<arguments.length;r++){var n=arguments[r];for(var t in n)Object.prototype.hasOwnProperty.call(n,t)&&(e[t]=n[t])}return e}).apply(this,arguments)}function t(e,r){if(null==e)return{};var n,t,i={},u=Object.keys(e);for(t=0;t<u.length;t++)r.indexOf(n=u[t])>=0||(i[n]=e[n]);return i}var i=r.createContext({containerRef:{current:null}}),u=r.createContext(void 0);function o(){return r.useContext(i)}var a,c=function(e){return e.contentBoxSize?Array.isArray(e.contentBoxSize)?[e.contentBoxSize[0].inlineSize,e.contentBoxSize[0].blockSize]:[e.contentBoxSize.inlineSize,e.contentBoxSize.blockSize]:[e.contentRect.width,e.contentRect.height]};(a=exports.ChartAutoResizerTriggerSource||(exports.ChartAutoResizerTriggerSource={}))[a.windowResize=1]="windowResize",a[a.parentResize=2]="parentResize";var s="undefined"!=typeof window&&"ResizeObserver"in window?exports.ChartAutoResizerTriggerSource.parentResize:exports.ChartAutoResizerTriggerSource.windowResize,l=function(e){var n=e.triggerSource,t=void 0===n?s:n,i=e.onResize,u=o(),a=u.chart,l=u.containerRef;return r.useEffect((function(){var e;if(0!==t&&a){var r,n=function(e){var r,n,t=a.options(),u=Array.isArray(e)?c(e[0]):[null!=(r=l.current)&&r.parentElement?parseInt(getComputedStyle(l.current.parentElement).width):0,null!=(n=l.current)&&n.parentElement?parseInt(getComputedStyle(l.current.parentElement).height):0],o=t.width||u[0],s=t.height||u[1];a.resize(o,s),null==i||i(a,o,s,l.current)};n(),t&exports.ChartAutoResizerTriggerSource.windowResize&&window.addEventListener("resize",n);var u=null==(e=l.current)?void 0:e.parentElement;return t&exports.ChartAutoResizerTriggerSource.parentResize&&u&&(r=new ResizeObserver(n)).observe(u),function(){var e;t&exports.ChartAutoResizerTriggerSource.windowResize&&window.removeEventListener("resize",n),u&&(null==(e=r)||e.unobserve(u))}}}),[a,t,l,i]),null},f=function(e){var n=e.deps,t=void 0===n?[]:n,i=o().chart;return r.useEffect((function(){i&&setTimeout((function(){return i.timeScale().fitContent()}),0)}),[i].concat(t)),null},h=function(e){var n=e.handler,t=o().chart;return r.useEffect((function(){return null==t||t.subscribeClick(n),function(){return null==t?void 0:t.unsubscribeClick(n)}}),[t,n]),null},d=function(e){var n=e.handler,t=o().chart;return r.useEffect((function(){return null==t||t.subscribeCrosshairMove(n),function(){return null==t?void 0:t.unsubscribeCrosshairMove(n)}}),[t,n]),null},v=function(e){var n=e.handler,t=o().chart;return r.useEffect((function(){return null==t||t.timeScale().subscribeSizeChange(n),function(){return null==t?void 0:t.timeScale().unsubscribeSizeChange(n)}}),[t,n]),null},p=function(e){var n=e.handler,t=o().chart;return r.useEffect((function(){return null==t||t.timeScale().subscribeVisibleTimeRangeChange(n),function(){return null==t?void 0:t.timeScale().unsubscribeVisibleTimeRangeChange(n)}}),[t,n]),null},g=function(e){var n=e.handler,t=o().chart;return r.useEffect((function(){return null==t||t.timeScale().subscribeVisibleLogicalRangeChange(n),function(){return null==t?void 0:t.timeScale().unsubscribeVisibleLogicalRangeChange(n)}}),[t,n]),null},S=["width","height","options","disableAutoResize","disableAutoContentFitOnInit","onClick","onCrosshairMove","onTimeScaleSizeChange","onVisibleTimeRangeChange","onVisibleLogicalRangeChange","onInit","children","style"],b=r.forwardRef((function(u,o){var a=u.width,c=u.height,s=u.options,b=u.disableAutoResize,m=u.disableAutoContentFitOnInit,C=u.onClick,R=u.onCrosshairMove,w=u.onTimeScaleSizeChange,x=u.onVisibleTimeRangeChange,E=u.onVisibleLogicalRangeChange,z=u.onInit,y=u.children,T=u.style,O=t(u,S),A=r.useRef(),L=r.useState(),M=L[0],k=L[1],B=r.useRef(M);r.useImperativeHandle(o,(function(){return{chart:B.current,container:A.current}}));var I=r.useMemo((function(){return n({width:a,height:c},s)}),[a,c,s]);r.useEffect((function(){if(A.current)if(B.current)B.current.applyOptions(I);else{var r=e.createChart(A.current,I);B.current=r,k(r)}}),[I]),r.useEffect((function(){I.width&&I.height&&(null==M||M.resize(I.width,I.height))}),[M,I.width,I.height]),r.useEffect((function(){return function(){var e;null==(e=B.current)||e.remove(),B.current=void 0}}),[]),r.useEffect((function(){M&&(null==z||z(M,A.current))}),[M,z]);var P=r.useMemo((function(){return{chart:M,containerRef:A}}),[M]);return r.createElement(i.Provider,{value:P},r.createElement("div",Object.assign({},O,{style:n({},T,{position:"relative"}),ref:A}),y,!b&&r.createElement(l,null),!m&&r.createElement(f,null),C&&r.createElement(h,{handler:C}),R&&r.createElement(d,{handler:R}),w&&r.createElement(v,{handler:w}),x&&r.createElement(p,{handler:x}),E&&r.createElement(g,{handler:E})))}));function m(){return r.useContext(u)}function C(e,n){function t(e,t){var i=e.data,a=e.latestItem,c=e.options,s=e.markers,l=e.children,f=o().chart,h=r.useState(void 0),d=h[0],v=h[1],p=r.useRef(d);return r.useImperativeHandle(t,(function(){return p.current})),r.useEffect((function(){if(f)if(p.current)c&&p.current.applyOptions(c);else{var e=n(f,c);p.current=e,v(e)}}),[f,c]),r.useEffect((function(){return function(){if(p.current&&f){try{f.removeSeries(p.current)}catch(e){}p.current=void 0}}}),[f]),r.useEffect((function(){null==d||d.setData(null!=i?i:[])}),[d,i]),r.useEffect((function(){a&&(null==d||d.update(a))}),[a,d]),r.useEffect((function(){null==d||d.setMarkers(null!=s?s:[])}),[d,s]),r.createElement(u.Provider,{value:d},l)}return t.displayName=e,t}var R=r.forwardRef(C("AreaSeries",(function(e,r){return e.addAreaSeries(r)}))),w=r.forwardRef(C("BarSeries",(function(e,r){return e.addBarSeries(r)}))),x=r.forwardRef(C("BaselineSeries",(function(e,r){return e.addBaselineSeries(r)}))),E=r.forwardRef(C("CandlestickSeries",(function(e,r){return e.addCandlestickSeries(r)}))),z=r.forwardRef(C("HistogramSeries",(function(e,r){return e.addHistogramSeries(r)}))),y=r.forwardRef(C("LineSeries",(function(e,r){return e.addLineSeries(r)}))),T=["content","makeTransform","style"],O={pointerEvents:"none",position:"absolute",top:0,left:0,zIndex:10,transitionDuration:"150ms",transitionTimingFunction:"ease-out"},A=[0,0],L=function(e,r,n,t){var i,u,o=(null!=r?r:{}).point;if(null!=n&&null!=o){var a=null!=(i=null==e?void 0:e.priceScale("left").width())?i:0,c=null!=(u=null==e?void 0:e.priceScale("right").width())?u:0,s=n.getBoundingClientRect(),l=Math.max(a,Math.min(o.x+a-t.width/2,s.width-c-t.width)),f=o.y-t.height-8;return"translate("+l+"px, "+(f<0?o.y+20:f)+"px)"}},M=r.forwardRef((function(e,i){var u=e.content,a=e.makeTransform,s=e.style,l=t(e,T),f=o(),h=f.chart,v=f.containerRef,p=m(),g=r.useRef(),S=r.useRef(""),b=r.useState(),C=b[0],R=b[1],w=r.useState(A),x=w[0],E=w[1];r.useImperativeHandle(i,(function(){return g.current}));var z=r.useMemo((function(){var e,r="number"!=typeof(null==C?void 0:C.time),t=r?0:1,i=r?S.current:null!=(e=(null!=a?a:L)(h,C,v.current,{width:x[0],height:x[1]}))?e:S.current,u=S.current?"transform,opacity":"opacity";return S.current=i,n({},O,{opacity:t,transform:i,transitionProperty:u},s)}),[C,a,h,v,x,s]),y=r.useCallback((function(e){g.current&&R(e)}),[]);r.useEffect((function(){var e=g.current;if(e){var r=new ResizeObserver((function(e){var r=c(e[0]);E((function(e){return r[0]===e[0]&&r[1]===e[1]?e:r}))}));return r.observe(e),function(){return r.unobserve(e)}}}),[]);var M=r.useMemo((function(){return C&&(null==u?void 0:u({event:C,chart:h,series:p}))}),[h,u,C,p]);return r.createElement("div",Object.assign({},l,{style:z,ref:g}),r.createElement(d,{handler:y}),M)}));exports.AreaSeries=R,exports.BarSeries=w,exports.BaselineSeries=x,exports.CandlestickSeries=E,exports.Chart=b,exports.ChartAutoResizer=l,exports.ChartFitContentTrigger=f,exports.ChartOnClickSubscriber=h,exports.ChartOnCrosshairMoveSubscriber=d,exports.DEFAULT_TOOLTIP_MAKE_TRANSFORM=L,exports.DEFAULT_TOOLTIP_STYLE=O,exports.HistogramSeries=z,exports.LineSeries=y,exports.PriceLine=function(e){var n=m(),t=r.useRef();return r.useEffect((function(){t.current?t.current.applyOptions(e):t.current=null==n?void 0:n.createPriceLine(e)}),[n,e]),r.useEffect((function(){return function(){if(t.current&&n){try{n.removePriceLine(t.current)}catch(e){}t.current=void 0}}}),[n]),null},exports.SeriesHoverDataSubscriber=function(e){var n=e.handler,t=o().chart,i=m();return r.useEffect((function(){if(i&&t){var e=function(e){n(e.seriesPrices.get(i),e,i,t)};return t.subscribeCrosshairMove(e),function(){return t.unsubscribeCrosshairMove(e)}}}),[t,i,n]),null},exports.TimeScaleOnSizeChangeSubscriber=v,exports.TimeScaleOnVisibleLogicalRangeChangeSubscriber=g,exports.TimeScaleOnVisibleTimeRangeChangeSubscriber=p,exports.Tooltip=M,exports.useChart=o,exports.useSeries=m;
//# sourceMappingURL=react-lightweight-charts-simple.cjs.production.min.js.map