@orderly.network/chart 2.0.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +66 -0
- package/dist/index.d.ts +66 -0
- package/dist/index.js +17 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +11 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +47 -0
package/dist/index.d.mts
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import * as tailwindcss_types_config from 'tailwindcss/types/config';
|
|
3
|
+
|
|
4
|
+
type PnLChartDataItem = {
|
|
5
|
+
date: string;
|
|
6
|
+
pnl: number;
|
|
7
|
+
};
|
|
8
|
+
type PnLChartProps = {
|
|
9
|
+
colors?: {
|
|
10
|
+
profit: string;
|
|
11
|
+
loss: string;
|
|
12
|
+
};
|
|
13
|
+
data: PnLChartDataItem[];
|
|
14
|
+
invisible?: boolean;
|
|
15
|
+
};
|
|
16
|
+
declare const PnLBarChart: (props: PnLChartProps) => react_jsx_runtime.JSX.Element;
|
|
17
|
+
|
|
18
|
+
type PnlLineChartProps$1 = {
|
|
19
|
+
colors?: {
|
|
20
|
+
profit: string;
|
|
21
|
+
loss: string;
|
|
22
|
+
};
|
|
23
|
+
data: any;
|
|
24
|
+
invisible?: boolean;
|
|
25
|
+
};
|
|
26
|
+
declare const PnlLineChart: (props: PnlLineChartProps$1) => react_jsx_runtime.JSX.Element;
|
|
27
|
+
|
|
28
|
+
type AssetChartDataItem = {
|
|
29
|
+
date: string;
|
|
30
|
+
account_value: number;
|
|
31
|
+
};
|
|
32
|
+
type PnlLineChartProps = {
|
|
33
|
+
colors?: {
|
|
34
|
+
profit: string;
|
|
35
|
+
loss: string;
|
|
36
|
+
};
|
|
37
|
+
data: AssetChartDataItem[];
|
|
38
|
+
invisible?: boolean;
|
|
39
|
+
};
|
|
40
|
+
declare const AssetLineChart: (props: PnlLineChartProps) => react_jsx_runtime.JSX.Element;
|
|
41
|
+
|
|
42
|
+
type VolChartDataItem = {
|
|
43
|
+
date: string;
|
|
44
|
+
volume: number;
|
|
45
|
+
opacity?: string | number;
|
|
46
|
+
};
|
|
47
|
+
type VolChartTooltip = {
|
|
48
|
+
rm?: number;
|
|
49
|
+
dp?: number;
|
|
50
|
+
};
|
|
51
|
+
type VolChartProps = {
|
|
52
|
+
colors?: {
|
|
53
|
+
fill: string;
|
|
54
|
+
};
|
|
55
|
+
data: VolChartDataItem[];
|
|
56
|
+
tooltip?: VolChartTooltip;
|
|
57
|
+
className?: string;
|
|
58
|
+
};
|
|
59
|
+
declare const VolBarChart: (props: VolChartProps) => react_jsx_runtime.JSX.Element;
|
|
60
|
+
|
|
61
|
+
declare const chartPlugin: () => {
|
|
62
|
+
handler: tailwindcss_types_config.PluginCreator;
|
|
63
|
+
config?: Partial<tailwindcss_types_config.Config> | undefined;
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
export { AssetLineChart, PnLBarChart, PnlLineChart, VolBarChart, type VolChartDataItem, chartPlugin };
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import * as tailwindcss_types_config from 'tailwindcss/types/config';
|
|
3
|
+
|
|
4
|
+
type PnLChartDataItem = {
|
|
5
|
+
date: string;
|
|
6
|
+
pnl: number;
|
|
7
|
+
};
|
|
8
|
+
type PnLChartProps = {
|
|
9
|
+
colors?: {
|
|
10
|
+
profit: string;
|
|
11
|
+
loss: string;
|
|
12
|
+
};
|
|
13
|
+
data: PnLChartDataItem[];
|
|
14
|
+
invisible?: boolean;
|
|
15
|
+
};
|
|
16
|
+
declare const PnLBarChart: (props: PnLChartProps) => react_jsx_runtime.JSX.Element;
|
|
17
|
+
|
|
18
|
+
type PnlLineChartProps$1 = {
|
|
19
|
+
colors?: {
|
|
20
|
+
profit: string;
|
|
21
|
+
loss: string;
|
|
22
|
+
};
|
|
23
|
+
data: any;
|
|
24
|
+
invisible?: boolean;
|
|
25
|
+
};
|
|
26
|
+
declare const PnlLineChart: (props: PnlLineChartProps$1) => react_jsx_runtime.JSX.Element;
|
|
27
|
+
|
|
28
|
+
type AssetChartDataItem = {
|
|
29
|
+
date: string;
|
|
30
|
+
account_value: number;
|
|
31
|
+
};
|
|
32
|
+
type PnlLineChartProps = {
|
|
33
|
+
colors?: {
|
|
34
|
+
profit: string;
|
|
35
|
+
loss: string;
|
|
36
|
+
};
|
|
37
|
+
data: AssetChartDataItem[];
|
|
38
|
+
invisible?: boolean;
|
|
39
|
+
};
|
|
40
|
+
declare const AssetLineChart: (props: PnlLineChartProps) => react_jsx_runtime.JSX.Element;
|
|
41
|
+
|
|
42
|
+
type VolChartDataItem = {
|
|
43
|
+
date: string;
|
|
44
|
+
volume: number;
|
|
45
|
+
opacity?: string | number;
|
|
46
|
+
};
|
|
47
|
+
type VolChartTooltip = {
|
|
48
|
+
rm?: number;
|
|
49
|
+
dp?: number;
|
|
50
|
+
};
|
|
51
|
+
type VolChartProps = {
|
|
52
|
+
colors?: {
|
|
53
|
+
fill: string;
|
|
54
|
+
};
|
|
55
|
+
data: VolChartDataItem[];
|
|
56
|
+
tooltip?: VolChartTooltip;
|
|
57
|
+
className?: string;
|
|
58
|
+
};
|
|
59
|
+
declare const VolBarChart: (props: VolChartProps) => react_jsx_runtime.JSX.Element;
|
|
60
|
+
|
|
61
|
+
declare const chartPlugin: () => {
|
|
62
|
+
handler: tailwindcss_types_config.PluginCreator;
|
|
63
|
+
config?: Partial<tailwindcss_types_config.Config> | undefined;
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
export { AssetLineChart, PnLBarChart, PnlLineChart, VolBarChart, type VolChartDataItem, chartPlugin };
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var react = require('react');
|
|
4
|
+
var recharts = require('recharts');
|
|
5
|
+
var ui = require('@orderly.network/ui');
|
|
6
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
7
|
+
var utils = require('@orderly.network/utils');
|
|
8
|
+
|
|
9
|
+
var N=Object.create;var k=Object.defineProperty;var z=Object.getOwnPropertyDescriptor;var D=Object.getOwnPropertyNames;var I=Object.getPrototypeOf,K=Object.prototype.hasOwnProperty;var g=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var $=(t,e,r,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of D(e))!K.call(t,i)&&i!==r&&k(t,i,{get:()=>e[i],enumerable:!(o=z(e,i))||o.enumerable});return t};var M=(t,e,r)=>(r=t!=null?N(I(t)):{},$(!t||!t.__esModule?k(r,"default",{value:t,enumerable:!0}):r,t));var _=g(x=>{Object.defineProperty(x,"__esModule",{value:!0});Object.defineProperty(x,"default",{enumerable:!0,get:function(){return Jt}});function S(t,e){return {handler:t,config:e}}S.withOptions=function(t,e=()=>({})){let r=function(o){return {__options:o,handler:t(o),config:e(o)}};return r.__isOptionsFunction=!0,r.__pluginFunction=t,r.__configFunction=e,r};var Jt=S;});var O=g(b=>{Object.defineProperty(b,"__esModule",{value:!0});Object.defineProperty(b,"default",{enumerable:!0,get:function(){return te}});var Zt=jt(_());function jt(t){return t&&t.__esModule?t:{default:t}}var te=Zt.default;});var R=g((Qe,A)=>{var C=O();A.exports=(C.__esModule?C:{default:C}).default;});var v=()=>{let t=document.documentElement,e=getComputedStyle(t);return {primary:u(e.getPropertyValue("--oui-color-primary")),primaryLight:u(e.getPropertyValue("--oui-color-primary-light")),secondary:u(e.getPropertyValue("--oui-color-secondary")),success:u(e.getPropertyValue("--oui-color-success")),warning:u(e.getPropertyValue("--oui-color-warning")),danger:u(e.getPropertyValue("--oui-color-danger")),info:u(e.getPropertyValue("--oui-color-info")),loss:u(e.getPropertyValue("--oui-color-trading-loss")),profit:u(e.getPropertyValue("--oui-color-trading-profit"))}},u=t=>`rgb(${t.split(" ").join(",")})`;var f=t=>react.useMemo(()=>{let r=v();return {profit:t?.profit||r.profit,loss:t?.loss||r.loss,primary:r.primary,primaryLight:r.primaryLight}},[t]);var d=t=>{let{label:e,value:r,prefix:o,unit:i="USDC",coloring:a=!1,dp:n,rm:c}=t;return jsxRuntime.jsxs(ui.Box,{intensity:600,p:3,r:"md",children:[jsxRuntime.jsxs(ui.Flex,{direction:"row",className:t.titleClassName,children:[o,jsxRuntime.jsx(ui.Text.numeral,{unit:i,as:"div",size:"sm",coloring:a,showIdentifier:a,unitClassName:"oui-text-base-contrast-54 oui-ml-1",weight:"semibold",rm:c,dp:n,children:r})]}),jsxRuntime.jsx(ui.Text,{size:"2xs",intensity:54,weight:"semibold",children:e})]})};var h=t=>{let e=Math.abs(t),r=e===0?0:e<=10?2:e<=100?1:0,o=utils.numberToHumanStyle(e,r);return t<0?`-${o}`:o};var ot=t=>{let{fill:e,x:r,y:o,width:i,height:a}=t,n=Math.abs(a);return jsxRuntime.jsx("rect",{rx:2,x:r,y:a>0?o:o+a,width:i,height:n,stroke:"none",fill:e})},it=t=>{let{x:e,y:r,stroke:o,payload:i,index:a,width:n,containerWidth:c}=t,V=a===0?48:c>0?c-10:n+i.offset;return jsxRuntime.jsx("g",{transform:`translate(${V},${r-6})`,children:jsxRuntime.jsx("text",{x:0,y:0,dy:16,textAnchor:a===0?"start":"end",fontSize:10,fill:"rgba(255,255,255,0.54)",children:a===0?i.value:"Now"})})},at=t=>{let{width:e,height:r,stroke:o,fill:i}=t;return jsxRuntime.jsx(recharts.Cross,{x:t.x+t.width/2,top:t.top,height:r,width:1,stroke:"rgba(255,255,255,0.16)",strokeDasharray:"3 2",fill:"none"})},nt=t=>{let{active:e,payload:r,label:o}=t,i=react.useRef(new Date().toISOString().split("T")[0]);return e&&r&&r.length?jsxRuntime.jsx(d,{label:o===i.current?"Now":o,value:r[0].value,coloring:!0}):null},lt=t=>{let{invisible:e}=t,r=f(t.colors),o=react.useRef(0);return jsxRuntime.jsx(recharts.ResponsiveContainer,{className:ui.cn(e&&"chart-invisible"),onResize:(i,a)=>{o.current=i;},children:jsxRuntime.jsxs(recharts.BarChart,{data:t.data,margin:{left:-10,top:10,right:10,bottom:30},children:[!e&&jsxRuntime.jsx(recharts.Tooltip,{cursor:jsxRuntime.jsx(at,{}),content:jsxRuntime.jsx(nt,{})}),jsxRuntime.jsx(recharts.CartesianGrid,{vertical:!1,stroke:"#FFFFFF",strokeOpacity:.04}),jsxRuntime.jsx(recharts.ReferenceLine,{y:0,stroke:"rgba(0,0,0,0.04)"}),!e&&jsxRuntime.jsx(recharts.Bar,{dataKey:"pnl",shape:jsxRuntime.jsx(ot,{}),children:t.data.map((i,a)=>jsxRuntime.jsx(recharts.Cell,{fill:i.pnl>0?r.profit:r.loss},`cell-${a}`))}),jsxRuntime.jsx(recharts.YAxis,{tick:{fontSize:10,fill:"rgba(255,255,255,0.54)"},tickFormatter:i=>h(i),tickLine:!1,axisLine:!1,dataKey:"pnl"}),jsxRuntime.jsx(recharts.XAxis,{dataKey:"date",tickLine:!1,interval:t.data.length-2,height:1,tick:jsxRuntime.jsx(it,{containerWidth:o.current}),stroke:"#FFFFFF",strokeOpacity:.04})]})})};var y=t=>{let{x:e,y:r,stroke:o,payload:i,index:a}=t;return jsxRuntime.jsx("g",{transform:`translate(${e},${r-6})`,children:jsxRuntime.jsx("text",{x:0,y:0,dy:16,textAnchor:"end",fontSize:10,fill:"rgba(255,255,255,0.54)",children:a===0?i.value:"Now"})})};var xt=t=>{let{active:e,payload:r,label:o}=t,i=react.useRef(new Date().toISOString().split("T")[0]);return e&&r&&r.length?jsxRuntime.jsx(d,{label:o===i.current?"Now":o,value:r[0].value,coloring:!0}):null},bt=t=>{let e=f(t.colors),r=i=>{let a=[];return i?.reduce((n,c)=>(n+=c.pnl,a.push({...c,pnl:n,_pnl:c.pnl}),n),0),a},o=react.useMemo(()=>r(t.data),[t.data]);return jsxRuntime.jsx(recharts.ResponsiveContainer,{className:t.invisible?"chart-invisible":"",children:jsxRuntime.jsxs(recharts.LineChart,{data:o,margin:{top:20,right:10,left:-10,bottom:0},children:[jsxRuntime.jsx(recharts.CartesianGrid,{vertical:!1,stroke:"#FFFFFF",strokeOpacity:.04}),jsxRuntime.jsx(recharts.XAxis,{dataKey:"date",interval:t.data.length-2,tick:jsxRuntime.jsx(y,{}),stroke:"#FFFFFF",strokeOpacity:.04}),jsxRuntime.jsx(recharts.YAxis,{dataKey:"pnl",tick:{fontSize:10,fill:"rgba(255,255,255,0.54)"},tickLine:!1,axisLine:!1,tickFormatter:i=>h(i)}),!t.invisible&&jsxRuntime.jsx(recharts.Tooltip,{cursor:{strokeDasharray:"3 2",strokeOpacity:.16},content:jsxRuntime.jsx(xt,{})}),!t.invisible&&jsxRuntime.jsx(recharts.Line,{type:"natural",dataKey:"pnl",stroke:e.primaryLight,strokeWidth:2,dot:!1,isAnimationActive:!1})]})})};var _t=t=>{let{active:e,payload:r,label:o}=t,i=react.useRef(new Date().toISOString().split("T")[0]);return e&&r&&r.length?jsxRuntime.jsx(d,{label:o===i.current?"Now":o,value:r[0].value}):null},Ot=t=>{let e=f(t.colors);return jsxRuntime.jsx(recharts.ResponsiveContainer,{className:t.invisible?"chart-invisible":"",children:jsxRuntime.jsxs(recharts.LineChart,{width:530,height:180,data:t.data,margin:{top:20,right:10,left:-20,bottom:-10},children:[jsxRuntime.jsx(recharts.CartesianGrid,{vertical:!1,stroke:"#FFFFFF",strokeOpacity:.04}),jsxRuntime.jsx(recharts.XAxis,{dataKey:"date",interval:t.data.length-2,tick:jsxRuntime.jsx(y,{}),stroke:"#FFFFFF",strokeOpacity:.04}),jsxRuntime.jsx(recharts.YAxis,{dataKey:"account_value",tick:{fontSize:10,fill:"rgba(255,255,255,0.54)"},tickLine:!1,axisLine:!1,tickFormatter:r=>h(r)}),!t.invisible&&jsxRuntime.jsx(recharts.Tooltip,{cursor:{strokeDasharray:"3 2",strokeOpacity:.16},content:jsxRuntime.jsx(_t,{})}),!t.invisible&&jsxRuntime.jsx(recharts.Line,{type:"natural",dataKey:"account_value",stroke:e.profit,strokeWidth:2,dot:!1,isAnimationActive:!1})]})})};var Gt=t=>{let{fill:e,x:r,y:o,width:i,height:a,opacity:n}=t,c=Math.abs(a);return jsxRuntime.jsx("rect",{rx:2,x:r,y:a>0?o:o+a,width:i,height:c,stroke:"none",fill:e,opacity:n})},Wt=t=>{let{width:e,height:r,payload:o,stroke:i,fill:a}=t;return o?.[0]?.value===0?null:jsxRuntime.jsx(recharts.Cross,{x:t.x+t.width/2,top:t.top,height:r,width:1,stroke:"rgba(255,255,255,0.16)",strokeDasharray:"3 2",fill:"none"})},Yt=t=>{let{active:e,payload:r,label:o,tooltip:i}=t;return r?.[0]?.value===0?null:e&&r&&r.length?jsxRuntime.jsx(d,{label:o,value:r[0].value,titleClassName:"oui-gap-4",rm:i?.rm,dp:i?.dp}):null},qt=t=>{let e=f(t.colors?.fill?{profit:t.colors?.fill,loss:t.colors?.fill}:void 0),r=t.data.reduce((a,n)=>a+n.volume,0)===0,o=t.data.reduce((a,n)=>a>n.volume?a:n.volume,0),i=o<=10?2:o<=100?1:0;return jsxRuntime.jsx(ui.Box,{className:ui.cn(t.className),children:jsxRuntime.jsx(recharts.ResponsiveContainer,{children:jsxRuntime.jsxs(recharts.BarChart,{data:t.data,margin:{left:-0,top:6,right:0,bottom:20},children:[jsxRuntime.jsx(recharts.Tooltip,{cursor:jsxRuntime.jsx(Wt,{}),content:jsxRuntime.jsx(Yt,{tooltip:t.tooltip})}),jsxRuntime.jsx(recharts.CartesianGrid,{vertical:!1,stroke:"#FFFFFF",strokeOpacity:.08,repeatCount:6}),jsxRuntime.jsx(recharts.ReferenceLine,{y:0,stroke:"#000"}),jsxRuntime.jsx(recharts.Bar,{dataKey:"volume",shape:jsxRuntime.jsx(Gt,{}),minPointSize:1,children:t.data.map((a,n)=>jsxRuntime.jsx(recharts.Cell,{fill:a.volume>0?e.profit:e.loss,opacity:a.opacity},`cell-${n}`))}),jsxRuntime.jsx(recharts.YAxis,{tick:{fontSize:10,fill:"rgba(255,255,255,0.54)"},tickLine:!1,axisLine:!1,dataKey:"volume",tickFormatter:(a,n)=>r?`${n*100}`:Et(a,i),width:45}),jsxRuntime.jsx(recharts.XAxis,{dataKey:"date",tickLine:!1,interval:t.data.length-2,height:1,tick:{fontSize:10,fill:"rgba(255,255,255,0.54)"},stroke:"rgb(229, 231, 235)",strokeOpacity:.2})]})})})};function Et(t,e=0){let r=["","K","M","B","T"],o=0;for(;t>=1e3&&o<r.length-1;)t/=1e3,o++;return `${Qt(t,e)}${r[o]}`}function Qt(t,e){let r=t.toString(),o=r.indexOf(".");if(o===-1||e===0)return r.split(".")[0];let i=o+e+1;return r.slice(0,i)}var B=M(R()),ee=()=>(0, B.default)(function({addComponents:t,addBase:e}){t({".xAxis":{".recharts-cartesian-axis-tick:first-child text":{"text-anchor":"start"},".recharts-cartesian-axis-tick:last-child text":{"text-anchor":"end"}}},{respectPrefix:!1});});
|
|
10
|
+
|
|
11
|
+
exports.AssetLineChart = Ot;
|
|
12
|
+
exports.PnLBarChart = lt;
|
|
13
|
+
exports.PnlLineChart = bt;
|
|
14
|
+
exports.VolBarChart = qt;
|
|
15
|
+
exports.chartPlugin = ee;
|
|
16
|
+
//# sourceMappingURL=index.js.map
|
|
17
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../node_modules/.pnpm/tailwindcss@3.4.12_ts-node@10.9.2_@swc+core@1.7.26_@swc+helpers@0.5.13__@types+node@22.5.5_typescript@5.2.2_/node_modules/tailwindcss/lib/util/createPlugin.js","../../../node_modules/.pnpm/tailwindcss@3.4.12_ts-node@10.9.2_@swc+core@1.7.26_@swc+helpers@0.5.13__@types+node@22.5.5_typescript@5.2.2_/node_modules/tailwindcss/lib/public/create-plugin.js","../../../node_modules/.pnpm/tailwindcss@3.4.12_ts-node@10.9.2_@swc+core@1.7.26_@swc+helpers@0.5.13__@types+node@22.5.5_typescript@5.2.2_/node_modules/tailwindcss/plugin.js","../src/orderly/useColors.ts","../src/utils/theme.ts","../src/orderly/pnlBar.tsx","../src/orderly/customTooltip.tsx","../src/utils/yTickFormatter.ts","../src/orderly/xAxisLabel.tsx","../src/orderly/pnlLine.tsx","../src/orderly/assetLine.tsx","../src/orderly/volBar.tsx","../src/tailwindcss/theme.ts"],"names":["require_createPlugin","__commonJSMin","exports","_default","createPlugin","plugin","config","pluginFunction","configFunction","optionsFunction","options","require_create_plugin","_createPlugin","_interop_require_default","obj","require_plugin","module","getThemeColors","root","computedStyle","convertToRGB","color","useColors","colors","useMemo","themeColors","OrderlyChartTooltip","props","label","value","prefix","unit","coloring","dp","rm","jsxs","Box","Flex","jsx","Text","tickFormatter","absValue","formatted","numberToHumanStyle","RoundedRectangle","fill","x","y","width","height","absHeight","XAxisLabel","stroke","payload","index","containerWidth","_x","CustomizedCross","Cross","CustomTooltip","active","todayStr","useRef","PnLBarChart","invisible","widthRef","ResponsiveContainer","cn","BarChart","Tooltip","CartesianGrid","ReferenceLine","Bar","entry","Cell","YAxis","XAxis","PnlLineChart","dataTransfer","data","series","acc","item","LineChart","Line","AssetLineChart","opacity","tooltip","VolBarChart","isEmpty","b","maxVolume","decimal","number","decimalPlaces","abbreviations","toFixedWithoutRounding","num","fix","numStr","decimalIndex","cutoffIndex","import_plugin","chartPlugin","addComponents","addBase"],"mappings":"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","file":"index.js","sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function() {\n return _default;\n }\n});\nfunction createPlugin(plugin, config) {\n return {\n handler: plugin,\n config\n };\n}\ncreatePlugin.withOptions = function(pluginFunction, configFunction = ()=>({})) {\n const optionsFunction = function(options) {\n return {\n __options: options,\n handler: pluginFunction(options),\n config: configFunction(options)\n };\n };\n optionsFunction.__isOptionsFunction = true;\n // Expose plugin dependencies so that `object-hash` returns a different\n // value if anything here changes, to ensure a rebuild is triggered.\n optionsFunction.__pluginFunction = pluginFunction;\n optionsFunction.__configFunction = configFunction;\n return optionsFunction;\n};\nconst _default = createPlugin;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function() {\n return _default;\n }\n});\nconst _createPlugin = /*#__PURE__*/ _interop_require_default(require(\"../util/createPlugin\"));\nfunction _interop_require_default(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nconst _default = _createPlugin.default;\n","let createPlugin = require('./lib/public/create-plugin')\nmodule.exports = (createPlugin.__esModule ? createPlugin : { default: createPlugin }).default\n","import { useMemo } from \"react\";\nimport { getThemeColors } from \"../utils/theme\";\n\nexport const useColors = (colors?: { profit: string; loss: string }) => {\n const _colors = useMemo(() => {\n const themeColors = getThemeColors();\n return {\n profit: colors?.profit || themeColors.profit,\n loss: colors?.loss || themeColors.loss,\n primary: themeColors.primary,\n primaryLight: themeColors.primaryLight,\n };\n }, [colors]);\n\n return _colors;\n};\n","export const getThemeColors = () => {\n const root = document.documentElement;\n const computedStyle = getComputedStyle(root);\n\n const colors = {\n primary: convertToRGB(\n computedStyle.getPropertyValue(\"--oui-color-primary\")\n ),\n primaryLight: convertToRGB(\n computedStyle.getPropertyValue(\"--oui-color-primary-light\")\n ),\n secondary: convertToRGB(\n computedStyle.getPropertyValue(\"--oui-color-secondary\")\n ),\n success: convertToRGB(\n computedStyle.getPropertyValue(\"--oui-color-success\")\n ),\n warning: convertToRGB(\n computedStyle.getPropertyValue(\"--oui-color-warning\")\n ),\n danger: convertToRGB(computedStyle.getPropertyValue(\"--oui-color-danger\")),\n info: convertToRGB(computedStyle.getPropertyValue(\"--oui-color-info\")),\n loss: convertToRGB(\n computedStyle.getPropertyValue(\"--oui-color-trading-loss\")\n ),\n profit: convertToRGB(\n computedStyle.getPropertyValue(\"--oui-color-trading-profit\")\n ),\n };\n\n return colors;\n};\n\nconst convertToRGB = (color: string) => {\n return `rgb(${color.split(\" \").join(\",\")})`;\n};\n","import { useColors } from \"./useColors\";\nimport {\n BarChart,\n XAxis,\n YAxis,\n ResponsiveContainer,\n Bar,\n Cell,\n Tooltip,\n CartesianGrid,\n ReferenceLine,\n Cross,\n} from \"recharts\";\nimport type { TooltipProps } from \"recharts\";\nimport { OrderlyChartTooltip } from \"./customTooltip\";\nimport { Box, cn } from \"@orderly.network/ui\";\nimport { Flex } from \"@orderly.network/ui\";\n// import { XAxisLabel } from \"./xAxisLabel\";\nimport { useRef } from \"react\";\nimport { numberToHumanStyle } from \"@orderly.network/utils\";\nimport { tickFormatter } from \"../utils/yTickFormatter\";\n\nexport type PnLChartDataItem = {\n date: string;\n pnl: number;\n};\n\nexport type PnLChartProps = {\n colors?: {\n profit: string;\n loss: string;\n };\n data: PnLChartDataItem[];\n invisible?: boolean;\n};\n\nconst RoundedRectangle = (props: any) => {\n const { fill, x, y, width, height } = props;\n\n const absHeight = Math.abs(height);\n\n return (\n <rect\n rx={2}\n x={x}\n y={height > 0 ? y : y + height}\n width={width}\n height={absHeight}\n stroke=\"none\"\n fill={fill}\n />\n );\n};\n\nexport const XAxisLabel = (props: any) => {\n const { x, y, stroke, payload, index, width, containerWidth } = props;\n\n const _x =\n index === 0\n ? 48\n : containerWidth > 0\n ? containerWidth - 10\n : width + payload.offset;\n\n return (\n <g transform={`translate(${_x},${y - 6})`}>\n <text\n x={0}\n y={0}\n dy={16}\n textAnchor={index === 0 ? \"start\" : \"end\"}\n // textAnchor={\"start\"}\n fontSize={10}\n fill={\"rgba(255,255,255,0.54)\"}\n >\n {index === 0 ? payload.value : \"Now\"}\n </text>\n </g>\n );\n};\n\nconst CustomizedCross = (props: any) => {\n const { width, height, stroke, fill } = props;\n\n return (\n // @ts-ignore\n <Cross\n // y={props.y + props.top}\n x={props.x + props.width / 2}\n top={props.top}\n height={height}\n width={1}\n stroke={\"rgba(255,255,255,0.16)\"}\n strokeDasharray={\"3 2\"}\n fill={\"none\"}\n />\n );\n};\n\nconst CustomTooltip = (props: TooltipProps<any, any>) => {\n const { active, payload, label } = props;\n\n const todayStr = useRef(new Date().toISOString().split(\"T\")[0]);\n\n if (active && payload && payload.length) {\n return (\n <OrderlyChartTooltip\n label={label === todayStr.current ? \"Now\" : label}\n value={payload[0].value}\n coloring\n />\n );\n }\n\n return null;\n};\n\nexport const PnLBarChart = (props: PnLChartProps) => {\n const { invisible } = props;\n const colors = useColors(props.colors);\n const widthRef = useRef(0);\n\n return (\n // @ts-ignore\n <ResponsiveContainer\n className={cn(invisible && \"chart-invisible\")}\n onResize={(width, height) => {\n // console.log(\"width\", width, height);\n widthRef.current = width;\n }}\n >\n {/* @ts-ignore */}\n <BarChart\n data={props.data}\n margin={{ left: -10, top: 10, right: 10, bottom: 30 }}\n >\n {!invisible && (\n // @ts-ignore\n <Tooltip\n // cursor={{ fillOpacity: 0.1 }}\n cursor={<CustomizedCross />}\n content={<CustomTooltip />}\n />\n )}\n\n <CartesianGrid vertical={false} stroke=\"#FFFFFF\" strokeOpacity={0.04} />\n <ReferenceLine y={0} stroke=\"rgba(0,0,0,0.04)\" />\n\n {!invisible && (\n // @ts-ignore\n <Bar dataKey=\"pnl\" shape={<RoundedRectangle />}>\n {props.data.map((entry, index) => {\n return (\n // @ts-ignore\n <Cell\n key={`cell-${index}`}\n fill={entry.pnl > 0 ? colors.profit : colors.loss}\n />\n );\n })}\n </Bar>\n )}\n {/* @ts-ignore */}\n <YAxis\n tick={{ fontSize: 10, fill: \"rgba(255,255,255,0.54)\" }}\n tickFormatter={(value) => tickFormatter(value)}\n tickLine={false}\n axisLine={false}\n dataKey={\"pnl\"}\n />\n {/* @ts-ignore */}\n <XAxis\n dataKey=\"date\"\n // axisLine={false}\n tickLine={false}\n interval={props.data.length - 2}\n // tick={renderQuarterTick}\n height={1}\n // scale=\"time\"\n // tick={{ fontSize: 10, fill: \"rgba(255,255,255,0.54)\" }}\n tick={<XAxisLabel containerWidth={widthRef.current} />}\n stroke=\"#FFFFFF\"\n strokeOpacity={0.04}\n />\n </BarChart>\n </ResponsiveContainer>\n );\n};\n","import { Box, Flex, Text } from \"@orderly.network/ui\";\n\nexport const OrderlyChartTooltip = (props: {\n label: string;\n value: string | number;\n unit?: string;\n prefix?: React.ReactNode;\n titleClassName?: string;\n coloring?: boolean;\n dp?: number;\n rm?: number;\n}) => {\n const {\n label,\n value,\n prefix,\n unit = \"USDC\",\n coloring = false,\n dp,\n rm,\n } = props;\n return (\n <Box intensity={600} p={3} r=\"md\">\n <Flex direction={\"row\"} className={props.titleClassName}>\n {prefix}\n <Text.numeral\n unit={unit}\n as=\"div\"\n size=\"sm\"\n coloring={coloring}\n showIdentifier={coloring}\n unitClassName=\"oui-text-base-contrast-54 oui-ml-1\"\n weight=\"semibold\"\n rm={rm}\n dp={dp}\n >\n {value}\n </Text.numeral>\n </Flex>\n <Text size=\"2xs\" intensity={54} weight=\"semibold\">\n {label}\n </Text>\n </Box>\n );\n};\n","import { numberToHumanStyle } from \"@orderly.network/utils\";\n\nexport const tickFormatter = (value: number) => {\n let absValue = Math.abs(value);\n const dp = absValue === 0 ? 0 : absValue <= 10 ? 2 : absValue <= 100 ? 1 : 0;\n\n const formatted = numberToHumanStyle(absValue, dp);\n return value < 0 ? `-${formatted}` : formatted;\n};\n","export const XAxisLabel = (props: any) => {\n const { x, y, stroke, payload, index } = props;\n\n return (\n <g transform={`translate(${x},${y - 6})`}>\n <text\n x={0}\n y={0}\n dy={16}\n textAnchor=\"end\"\n fontSize={10}\n fill={\"rgba(255,255,255,0.54)\"}\n >\n {index === 0 ? payload.value : \"Now\"}\n </text>\n </g>\n );\n};\n","import { useMemo, useRef } from \"react\";\nimport { getThemeColors } from \"../utils/theme\";\nimport { useColors } from \"./useColors\";\n// import { Line } from \"../line/line\";\nimport {\n LineChart,\n XAxis,\n YAxis,\n Line,\n CartesianGrid,\n ReferenceLine,\n Tooltip,\n ResponsiveContainer,\n} from \"recharts\";\nimport type { TooltipProps } from \"recharts\";\nimport { OrderlyChartTooltip } from \"./customTooltip\";\nimport { XAxisLabel } from \"./xAxisLabel\";\nimport { numberToHumanStyle } from \"@orderly.network/utils\";\nimport { tickFormatter } from \"../utils/yTickFormatter\";\n\nexport type PnlLineChartProps = {\n colors?: {\n profit: string;\n loss: string;\n };\n data: any;\n invisible?: boolean;\n};\n\nconst CustomTooltip = (props: TooltipProps<any, any>) => {\n const { active, payload, label } = props;\n\n const todayStr = useRef(new Date().toISOString().split(\"T\")[0]);\n\n if (active && payload && payload.length) {\n return (\n <OrderlyChartTooltip\n label={label === todayStr.current ? \"Now\" : label}\n value={payload[0].value}\n coloring\n />\n );\n }\n\n return null;\n};\n\nconst PnlLineChart = (props: PnlLineChartProps) => {\n const colors = useColors(props.colors);\n\n const dataTransfer = (data: any[]) => {\n const series: any[] = [];\n\n data?.reduce((acc, item) => {\n acc += item.pnl;\n series.push({\n ...item,\n pnl: acc,\n _pnl: item.pnl,\n // date: new Date(item.date).getTime(),\n });\n return acc;\n }, 0);\n\n return series;\n };\n\n const data = useMemo(() => dataTransfer(props.data), [props.data]);\n\n return (\n // @ts-ignore\n <ResponsiveContainer className={props.invisible ? \"chart-invisible\" : \"\"}>\n {/* @ts-ignore */}\n <LineChart\n data={data}\n margin={{ top: 20, right: 10, left: -10, bottom: 0 }}\n >\n <CartesianGrid vertical={false} stroke=\"#FFFFFF\" strokeOpacity={0.04} />\n {/* @ts-ignore */}\n <XAxis\n dataKey=\"date\"\n interval={props.data.length - 2}\n // tick={{ fontSize: 10, fill: \"rgba(255,255,255,0.54)\" }}\n tick={<XAxisLabel />}\n stroke=\"#FFFFFF\"\n strokeOpacity={0.04}\n // scale={\"time\"}\n // type=\"number\"\n // range={}\n />\n {/* @ts-ignore */}\n <YAxis\n dataKey=\"pnl\"\n tick={{ fontSize: 10, fill: \"rgba(255,255,255,0.54)\" }}\n tickLine={false}\n axisLine={false}\n tickFormatter={(value) => tickFormatter(value)}\n />\n {/* @ts-ignore */}\n {!props.invisible && (\n // @ts-ignore\n <Tooltip\n cursor={{ strokeDasharray: \"3 2\", strokeOpacity: 0.16 }}\n content={<CustomTooltip />}\n />\n )}\n\n {/* <ReferenceLine y={0} stroke=\"#000\" /> */}\n {/* @ts-ignore */}\n {!props.invisible && (\n // @ts-ignore\n <Line\n type=\"natural\"\n dataKey=\"pnl\"\n stroke={colors.primaryLight}\n strokeWidth={2}\n dot={false}\n isAnimationActive={false}\n />\n )}\n </LineChart>\n </ResponsiveContainer>\n );\n};\n\nexport { PnlLineChart };\n","import { useColors } from \"./useColors\";\n// import { Line } from \"../line/line\";\nimport {\n LineChart,\n XAxis,\n YAxis,\n Line,\n CartesianGrid,\n Tooltip,\n Label,\n ResponsiveContainer,\n} from \"recharts\";\n\nimport type { TooltipProps } from \"recharts\";\nimport { OrderlyChartTooltip } from \"./customTooltip\";\nimport { XAxisLabel } from \"./xAxisLabel\";\nimport { useRef } from \"react\";\nimport { numberToHumanStyle } from \"@orderly.network/utils\";\nimport { tickFormatter } from \"../utils/yTickFormatter\";\n\nexport type AssetChartDataItem = {\n date: string;\n account_value: number;\n};\n\nexport type PnlLineChartProps = {\n colors?: {\n profit: string;\n loss: string;\n };\n data: AssetChartDataItem[];\n invisible?: boolean;\n};\n\nconst CustomTooltip = (props: TooltipProps<any, any>) => {\n const { active, payload, label } = props;\n\n const todayStr = useRef(new Date().toISOString().split(\"T\")[0]);\n\n if (active && payload && payload.length) {\n return (\n <OrderlyChartTooltip\n label={label === todayStr.current ? \"Now\" : label}\n value={payload[0].value}\n />\n );\n }\n\n return null;\n};\n\nconst AssetLineChart = (props: PnlLineChartProps) => {\n const colors = useColors(props.colors);\n\n // const dataTransfer = (data: any[]) => {\n // const series: any[] = [];\n\n // data.reduce((acc, item) => {\n // acc += item.pnl;\n // series.push({ ...item, pnl: acc, _pnl: item.pnl });\n // return acc;\n // }, 0);\n\n // return series;\n // };\n\n // const data = useMemo(() => dataTransfer(props.data), [props.data]);\n\n return (\n // @ts-ignore\n <ResponsiveContainer className={props.invisible ? \"chart-invisible\" : \"\"}>\n {/* @ts-ignore */}\n <LineChart\n width={530}\n height={180}\n data={props.data}\n margin={{ top: 20, right: 10, left: -20, bottom: -10 }}\n >\n <CartesianGrid vertical={false} stroke=\"#FFFFFF\" strokeOpacity={0.04} />\n {/* @ts-ignore */}\n <XAxis\n dataKey=\"date\"\n interval={props.data.length - 2}\n // tick={{ fontSize: 10, fill: \"rgba(255,255,255,0.54)\" }}\n tick={<XAxisLabel />}\n stroke=\"#FFFFFF\"\n strokeOpacity={0.04}\n ></XAxis>\n {/* @ts-ignore */}\n <YAxis\n dataKey=\"account_value\"\n tick={{ fontSize: 10, fill: \"rgba(255,255,255,0.54)\" }}\n tickLine={false}\n axisLine={false}\n tickFormatter={(value) => tickFormatter(value)}\n />\n {/* @ts-ignore */}\n {!props.invisible && (\n // @ts-ignore\n <Tooltip\n cursor={{ strokeDasharray: \"3 2\", strokeOpacity: 0.16 }}\n content={<CustomTooltip />}\n />\n )}\n\n {/* <Legend /> */}\n {/* @ts-ignore */}\n {!props.invisible && (\n // @ts-ignore\n <Line\n type=\"natural\"\n dataKey=\"account_value\"\n stroke={colors.profit}\n strokeWidth={2}\n dot={false}\n isAnimationActive={false}\n />\n )}\n </LineChart>\n </ResponsiveContainer>\n );\n};\n\nexport { AssetLineChart };\n","import { useColors } from \"./useColors\";\nimport {\n BarChart,\n XAxis,\n YAxis,\n ResponsiveContainer,\n Bar,\n Cell,\n Tooltip,\n CartesianGrid,\n ReferenceLine,\n Cross,\n} from \"recharts\";\nimport type { TooltipProps } from \"recharts\";\nimport { OrderlyChartTooltip } from \"./customTooltip\";\nimport { Box, cn } from \"@orderly.network/ui\";\n\nexport type VolChartDataItem = {\n date: string;\n volume: number;\n opacity?: string | number;\n};\n\nexport type VolChartTooltip = {\n rm?: number;\n dp?: number;\n};\n\nexport type VolChartProps = {\n colors?: {\n fill: string;\n };\n data: VolChartDataItem[];\n tooltip?: VolChartTooltip;\n className?: string;\n};\n\nconst RoundedRectangle = (props: any) => {\n const { fill, x, y, width, height, opacity } = props;\n const absHeight = Math.abs(height);\n\n return (\n <rect\n rx={2}\n x={x}\n y={height > 0 ? y : y + height}\n width={width}\n height={absHeight}\n stroke=\"none\"\n fill={fill}\n opacity={opacity}\n />\n );\n};\n\nconst CustomizedCross = (props: any) => {\n const { width, height, payload, stroke, fill } = props;\n\n if (payload?.[0]?.value === 0) return null;\n\n return (\n // @ts-ignore\n <Cross\n // y={props.y + props.top}\n x={props.x + props.width / 2}\n top={props.top}\n height={height}\n width={1}\n stroke={\"rgba(255,255,255,0.16)\"}\n strokeDasharray={\"3 2\"}\n fill={\"none\"}\n />\n );\n};\n\nconst CustomTooltip = (\n props: TooltipProps<any, any> & { tooltip?: VolChartTooltip }\n) => {\n const { active, payload, label, tooltip } = props;\n\n if (payload?.[0]?.value === 0) return null;\n\n if (active && payload && payload.length) {\n return (\n <OrderlyChartTooltip\n label={label}\n value={payload[0].value}\n // prefix=\"Commission\"\n titleClassName=\"oui-gap-4\"\n rm={tooltip?.rm}\n dp={tooltip?.dp}\n />\n );\n }\n\n return null;\n};\n\nexport const VolBarChart = (props: VolChartProps) => {\n const colors = useColors(\n props.colors?.fill\n ? { profit: props.colors?.fill, loss: props.colors?.fill }\n : undefined\n );\n\n const isEmpty = props.data.reduce((a, b) => a + b.volume, 0) === 0;\n const maxVolume = props.data.reduce((a,b) => (a > b.volume ? a : b.volume), 0);\n const decimal = maxVolume <= 10 ? 2 : (maxVolume <= 100 ? 1 : 0);\n\n return (\n // @ts-ignore\n <Box className={cn(props.className)}>\n {/* @ts-ignore */}\n <ResponsiveContainer>\n {/* @ts-ignore */}\n <BarChart\n data={props.data}\n margin={{ left: -0, top: 6, right: 0, bottom: 20 }}\n >\n {/* @ts-ignore */}\n <Tooltip\n // cursor={{ fillOpacity: 0.1 }}\n cursor={<CustomizedCross />}\n content={<CustomTooltip tooltip={props.tooltip} />}\n />\n <CartesianGrid\n vertical={false}\n stroke=\"#FFFFFF\"\n strokeOpacity={0.08}\n repeatCount={6}\n />\n <ReferenceLine y={0} stroke=\"#000\" />\n {/* @ts-ignore */}\n <Bar dataKey=\"volume\" shape={<RoundedRectangle />} minPointSize={1}>\n {props.data.map((entry, index) => {\n return (\n // @ts-ignore\n <Cell\n key={`cell-${index}`}\n fill={entry.volume > 0 ? colors.profit : colors.loss}\n opacity={entry.opacity}\n />\n );\n })}\n </Bar>\n {/* @ts-ignore */}\n <YAxis\n tick={{ fontSize: 10, fill: \"rgba(255,255,255,0.54)\" }}\n tickLine={false}\n axisLine={false}\n dataKey={\"volume\"}\n tickFormatter={(value, index) => {\n if (isEmpty) return `${index * 100}`;\n return numberToHumanStyle(value, decimal);\n }}\n width={45}\n />\n {/* @ts-ignore */}\n <XAxis\n dataKey=\"date\"\n // axisLine={false}\n tickLine={false}\n interval={props.data.length - 2}\n // tick={renderQuarterTick}\n height={1}\n // scale=\"time\"\n tick={{ fontSize: 10, fill: \"rgba(255,255,255,0.54)\" }}\n stroke=\"rgb(229, 231, 235)\"\n strokeOpacity={0.2}\n />\n </BarChart>\n </ResponsiveContainer>\n </Box>\n );\n};\nfunction numberToHumanStyle(number: number, decimalPlaces: number = 0): string {\n const abbreviations = [\"\", \"K\", \"M\", \"B\", \"T\"];\n\n let index = 0;\n while (number >= 1000 && index < abbreviations.length - 1) {\n number /= 1000;\n index++;\n }\n\n const roundedNumber = toFixedWithoutRounding(number, decimalPlaces);\n\n return `${roundedNumber}${abbreviations[index]}`;\n}\n\nfunction toFixedWithoutRounding(num: number, fix: number): string {\n const numStr = num.toString();\n const decimalIndex = numStr.indexOf(\".\");\n\n if (decimalIndex === -1 || fix === 0) {\n return numStr.split(\".\")[0];\n }\n\n const cutoffIndex = decimalIndex + fix + 1;\n\n return numStr.slice(0, cutoffIndex);\n}\n","import plugin from \"tailwindcss/plugin\";\n\nexport const chartPlugin = () =>\n plugin(function ({ addComponents, addBase }) {\n addComponents(\n {\n \".xAxis\": {\n \".recharts-cartesian-axis-tick:first-child text\": {\n \"text-anchor\": \"start\",\n },\n \".recharts-cartesian-axis-tick:last-child text\": {\n \"text-anchor\": \"end\",\n },\n },\n },\n {\n respectPrefix: false,\n }\n );\n });\n"]}
|
package/dist/index.mjs
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { useRef, useMemo } from 'react';
|
|
2
|
+
import { ResponsiveContainer, BarChart, Tooltip, CartesianGrid, ReferenceLine, Bar, Cell, YAxis, XAxis, LineChart, Line, Cross } from 'recharts';
|
|
3
|
+
import { cn, Box, Flex, Text } from '@orderly.network/ui';
|
|
4
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
5
|
+
import { numberToHumanStyle } from '@orderly.network/utils';
|
|
6
|
+
|
|
7
|
+
var N=Object.create;var k=Object.defineProperty;var z=Object.getOwnPropertyDescriptor;var D=Object.getOwnPropertyNames;var I=Object.getPrototypeOf,K=Object.prototype.hasOwnProperty;var g=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var $=(t,e,r,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of D(e))!K.call(t,i)&&i!==r&&k(t,i,{get:()=>e[i],enumerable:!(o=z(e,i))||o.enumerable});return t};var M=(t,e,r)=>(r=t!=null?N(I(t)):{},$(!t||!t.__esModule?k(r,"default",{value:t,enumerable:!0}):r,t));var _=g(x=>{Object.defineProperty(x,"__esModule",{value:!0});Object.defineProperty(x,"default",{enumerable:!0,get:function(){return Jt}});function S(t,e){return {handler:t,config:e}}S.withOptions=function(t,e=()=>({})){let r=function(o){return {__options:o,handler:t(o),config:e(o)}};return r.__isOptionsFunction=!0,r.__pluginFunction=t,r.__configFunction=e,r};var Jt=S;});var O=g(b=>{Object.defineProperty(b,"__esModule",{value:!0});Object.defineProperty(b,"default",{enumerable:!0,get:function(){return te}});var Zt=jt(_());function jt(t){return t&&t.__esModule?t:{default:t}}var te=Zt.default;});var R=g((Qe,A)=>{var C=O();A.exports=(C.__esModule?C:{default:C}).default;});var v=()=>{let t=document.documentElement,e=getComputedStyle(t);return {primary:u(e.getPropertyValue("--oui-color-primary")),primaryLight:u(e.getPropertyValue("--oui-color-primary-light")),secondary:u(e.getPropertyValue("--oui-color-secondary")),success:u(e.getPropertyValue("--oui-color-success")),warning:u(e.getPropertyValue("--oui-color-warning")),danger:u(e.getPropertyValue("--oui-color-danger")),info:u(e.getPropertyValue("--oui-color-info")),loss:u(e.getPropertyValue("--oui-color-trading-loss")),profit:u(e.getPropertyValue("--oui-color-trading-profit"))}},u=t=>`rgb(${t.split(" ").join(",")})`;var f=t=>useMemo(()=>{let r=v();return {profit:t?.profit||r.profit,loss:t?.loss||r.loss,primary:r.primary,primaryLight:r.primaryLight}},[t]);var d=t=>{let{label:e,value:r,prefix:o,unit:i="USDC",coloring:a=!1,dp:n,rm:c}=t;return jsxs(Box,{intensity:600,p:3,r:"md",children:[jsxs(Flex,{direction:"row",className:t.titleClassName,children:[o,jsx(Text.numeral,{unit:i,as:"div",size:"sm",coloring:a,showIdentifier:a,unitClassName:"oui-text-base-contrast-54 oui-ml-1",weight:"semibold",rm:c,dp:n,children:r})]}),jsx(Text,{size:"2xs",intensity:54,weight:"semibold",children:e})]})};var h=t=>{let e=Math.abs(t),r=e===0?0:e<=10?2:e<=100?1:0,o=numberToHumanStyle(e,r);return t<0?`-${o}`:o};var ot=t=>{let{fill:e,x:r,y:o,width:i,height:a}=t,n=Math.abs(a);return jsx("rect",{rx:2,x:r,y:a>0?o:o+a,width:i,height:n,stroke:"none",fill:e})},it=t=>{let{x:e,y:r,stroke:o,payload:i,index:a,width:n,containerWidth:c}=t,V=a===0?48:c>0?c-10:n+i.offset;return jsx("g",{transform:`translate(${V},${r-6})`,children:jsx("text",{x:0,y:0,dy:16,textAnchor:a===0?"start":"end",fontSize:10,fill:"rgba(255,255,255,0.54)",children:a===0?i.value:"Now"})})},at=t=>{let{width:e,height:r,stroke:o,fill:i}=t;return jsx(Cross,{x:t.x+t.width/2,top:t.top,height:r,width:1,stroke:"rgba(255,255,255,0.16)",strokeDasharray:"3 2",fill:"none"})},nt=t=>{let{active:e,payload:r,label:o}=t,i=useRef(new Date().toISOString().split("T")[0]);return e&&r&&r.length?jsx(d,{label:o===i.current?"Now":o,value:r[0].value,coloring:!0}):null},lt=t=>{let{invisible:e}=t,r=f(t.colors),o=useRef(0);return jsx(ResponsiveContainer,{className:cn(e&&"chart-invisible"),onResize:(i,a)=>{o.current=i;},children:jsxs(BarChart,{data:t.data,margin:{left:-10,top:10,right:10,bottom:30},children:[!e&&jsx(Tooltip,{cursor:jsx(at,{}),content:jsx(nt,{})}),jsx(CartesianGrid,{vertical:!1,stroke:"#FFFFFF",strokeOpacity:.04}),jsx(ReferenceLine,{y:0,stroke:"rgba(0,0,0,0.04)"}),!e&&jsx(Bar,{dataKey:"pnl",shape:jsx(ot,{}),children:t.data.map((i,a)=>jsx(Cell,{fill:i.pnl>0?r.profit:r.loss},`cell-${a}`))}),jsx(YAxis,{tick:{fontSize:10,fill:"rgba(255,255,255,0.54)"},tickFormatter:i=>h(i),tickLine:!1,axisLine:!1,dataKey:"pnl"}),jsx(XAxis,{dataKey:"date",tickLine:!1,interval:t.data.length-2,height:1,tick:jsx(it,{containerWidth:o.current}),stroke:"#FFFFFF",strokeOpacity:.04})]})})};var y=t=>{let{x:e,y:r,stroke:o,payload:i,index:a}=t;return jsx("g",{transform:`translate(${e},${r-6})`,children:jsx("text",{x:0,y:0,dy:16,textAnchor:"end",fontSize:10,fill:"rgba(255,255,255,0.54)",children:a===0?i.value:"Now"})})};var xt=t=>{let{active:e,payload:r,label:o}=t,i=useRef(new Date().toISOString().split("T")[0]);return e&&r&&r.length?jsx(d,{label:o===i.current?"Now":o,value:r[0].value,coloring:!0}):null},bt=t=>{let e=f(t.colors),r=i=>{let a=[];return i?.reduce((n,c)=>(n+=c.pnl,a.push({...c,pnl:n,_pnl:c.pnl}),n),0),a},o=useMemo(()=>r(t.data),[t.data]);return jsx(ResponsiveContainer,{className:t.invisible?"chart-invisible":"",children:jsxs(LineChart,{data:o,margin:{top:20,right:10,left:-10,bottom:0},children:[jsx(CartesianGrid,{vertical:!1,stroke:"#FFFFFF",strokeOpacity:.04}),jsx(XAxis,{dataKey:"date",interval:t.data.length-2,tick:jsx(y,{}),stroke:"#FFFFFF",strokeOpacity:.04}),jsx(YAxis,{dataKey:"pnl",tick:{fontSize:10,fill:"rgba(255,255,255,0.54)"},tickLine:!1,axisLine:!1,tickFormatter:i=>h(i)}),!t.invisible&&jsx(Tooltip,{cursor:{strokeDasharray:"3 2",strokeOpacity:.16},content:jsx(xt,{})}),!t.invisible&&jsx(Line,{type:"natural",dataKey:"pnl",stroke:e.primaryLight,strokeWidth:2,dot:!1,isAnimationActive:!1})]})})};var _t=t=>{let{active:e,payload:r,label:o}=t,i=useRef(new Date().toISOString().split("T")[0]);return e&&r&&r.length?jsx(d,{label:o===i.current?"Now":o,value:r[0].value}):null},Ot=t=>{let e=f(t.colors);return jsx(ResponsiveContainer,{className:t.invisible?"chart-invisible":"",children:jsxs(LineChart,{width:530,height:180,data:t.data,margin:{top:20,right:10,left:-20,bottom:-10},children:[jsx(CartesianGrid,{vertical:!1,stroke:"#FFFFFF",strokeOpacity:.04}),jsx(XAxis,{dataKey:"date",interval:t.data.length-2,tick:jsx(y,{}),stroke:"#FFFFFF",strokeOpacity:.04}),jsx(YAxis,{dataKey:"account_value",tick:{fontSize:10,fill:"rgba(255,255,255,0.54)"},tickLine:!1,axisLine:!1,tickFormatter:r=>h(r)}),!t.invisible&&jsx(Tooltip,{cursor:{strokeDasharray:"3 2",strokeOpacity:.16},content:jsx(_t,{})}),!t.invisible&&jsx(Line,{type:"natural",dataKey:"account_value",stroke:e.profit,strokeWidth:2,dot:!1,isAnimationActive:!1})]})})};var Gt=t=>{let{fill:e,x:r,y:o,width:i,height:a,opacity:n}=t,c=Math.abs(a);return jsx("rect",{rx:2,x:r,y:a>0?o:o+a,width:i,height:c,stroke:"none",fill:e,opacity:n})},Wt=t=>{let{width:e,height:r,payload:o,stroke:i,fill:a}=t;return o?.[0]?.value===0?null:jsx(Cross,{x:t.x+t.width/2,top:t.top,height:r,width:1,stroke:"rgba(255,255,255,0.16)",strokeDasharray:"3 2",fill:"none"})},Yt=t=>{let{active:e,payload:r,label:o,tooltip:i}=t;return r?.[0]?.value===0?null:e&&r&&r.length?jsx(d,{label:o,value:r[0].value,titleClassName:"oui-gap-4",rm:i?.rm,dp:i?.dp}):null},qt=t=>{let e=f(t.colors?.fill?{profit:t.colors?.fill,loss:t.colors?.fill}:void 0),r=t.data.reduce((a,n)=>a+n.volume,0)===0,o=t.data.reduce((a,n)=>a>n.volume?a:n.volume,0),i=o<=10?2:o<=100?1:0;return jsx(Box,{className:cn(t.className),children:jsx(ResponsiveContainer,{children:jsxs(BarChart,{data:t.data,margin:{left:-0,top:6,right:0,bottom:20},children:[jsx(Tooltip,{cursor:jsx(Wt,{}),content:jsx(Yt,{tooltip:t.tooltip})}),jsx(CartesianGrid,{vertical:!1,stroke:"#FFFFFF",strokeOpacity:.08,repeatCount:6}),jsx(ReferenceLine,{y:0,stroke:"#000"}),jsx(Bar,{dataKey:"volume",shape:jsx(Gt,{}),minPointSize:1,children:t.data.map((a,n)=>jsx(Cell,{fill:a.volume>0?e.profit:e.loss,opacity:a.opacity},`cell-${n}`))}),jsx(YAxis,{tick:{fontSize:10,fill:"rgba(255,255,255,0.54)"},tickLine:!1,axisLine:!1,dataKey:"volume",tickFormatter:(a,n)=>r?`${n*100}`:Et(a,i),width:45}),jsx(XAxis,{dataKey:"date",tickLine:!1,interval:t.data.length-2,height:1,tick:{fontSize:10,fill:"rgba(255,255,255,0.54)"},stroke:"rgb(229, 231, 235)",strokeOpacity:.2})]})})})};function Et(t,e=0){let r=["","K","M","B","T"],o=0;for(;t>=1e3&&o<r.length-1;)t/=1e3,o++;return `${Qt(t,e)}${r[o]}`}function Qt(t,e){let r=t.toString(),o=r.indexOf(".");if(o===-1||e===0)return r.split(".")[0];let i=o+e+1;return r.slice(0,i)}var B=M(R()),ee=()=>(0, B.default)(function({addComponents:t,addBase:e}){t({".xAxis":{".recharts-cartesian-axis-tick:first-child text":{"text-anchor":"start"},".recharts-cartesian-axis-tick:last-child text":{"text-anchor":"end"}}},{respectPrefix:!1});});
|
|
8
|
+
|
|
9
|
+
export { Ot as AssetLineChart, lt as PnLBarChart, bt as PnlLineChart, qt as VolBarChart, ee as chartPlugin };
|
|
10
|
+
//# sourceMappingURL=index.mjs.map
|
|
11
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../node_modules/.pnpm/tailwindcss@3.4.12_ts-node@10.9.2_@swc+core@1.7.26_@swc+helpers@0.5.13__@types+node@22.5.5_typescript@5.2.2_/node_modules/tailwindcss/lib/util/createPlugin.js","../../../node_modules/.pnpm/tailwindcss@3.4.12_ts-node@10.9.2_@swc+core@1.7.26_@swc+helpers@0.5.13__@types+node@22.5.5_typescript@5.2.2_/node_modules/tailwindcss/lib/public/create-plugin.js","../../../node_modules/.pnpm/tailwindcss@3.4.12_ts-node@10.9.2_@swc+core@1.7.26_@swc+helpers@0.5.13__@types+node@22.5.5_typescript@5.2.2_/node_modules/tailwindcss/plugin.js","../src/orderly/useColors.ts","../src/utils/theme.ts","../src/orderly/pnlBar.tsx","../src/orderly/customTooltip.tsx","../src/utils/yTickFormatter.ts","../src/orderly/xAxisLabel.tsx","../src/orderly/pnlLine.tsx","../src/orderly/assetLine.tsx","../src/orderly/volBar.tsx","../src/tailwindcss/theme.ts"],"names":["require_createPlugin","__commonJSMin","exports","_default","createPlugin","plugin","config","pluginFunction","configFunction","optionsFunction","options","require_create_plugin","_createPlugin","_interop_require_default","obj","require_plugin","module","getThemeColors","root","computedStyle","convertToRGB","color","useColors","colors","useMemo","themeColors","OrderlyChartTooltip","props","label","value","prefix","unit","coloring","dp","rm","jsxs","Box","Flex","jsx","Text","tickFormatter","absValue","formatted","numberToHumanStyle","RoundedRectangle","fill","x","y","width","height","absHeight","XAxisLabel","stroke","payload","index","containerWidth","_x","CustomizedCross","Cross","CustomTooltip","active","todayStr","useRef","PnLBarChart","invisible","widthRef","ResponsiveContainer","cn","BarChart","Tooltip","CartesianGrid","ReferenceLine","Bar","entry","Cell","YAxis","XAxis","PnlLineChart","dataTransfer","data","series","acc","item","LineChart","Line","AssetLineChart","opacity","tooltip","VolBarChart","isEmpty","b","maxVolume","decimal","number","decimalPlaces","abbreviations","toFixedWithoutRounding","num","fix","numStr","decimalIndex","cutoffIndex","import_plugin","chartPlugin","addComponents","addBase"],"mappings":"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","file":"index.mjs","sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function() {\n return _default;\n }\n});\nfunction createPlugin(plugin, config) {\n return {\n handler: plugin,\n config\n };\n}\ncreatePlugin.withOptions = function(pluginFunction, configFunction = ()=>({})) {\n const optionsFunction = function(options) {\n return {\n __options: options,\n handler: pluginFunction(options),\n config: configFunction(options)\n };\n };\n optionsFunction.__isOptionsFunction = true;\n // Expose plugin dependencies so that `object-hash` returns a different\n // value if anything here changes, to ensure a rebuild is triggered.\n optionsFunction.__pluginFunction = pluginFunction;\n optionsFunction.__configFunction = configFunction;\n return optionsFunction;\n};\nconst _default = createPlugin;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function() {\n return _default;\n }\n});\nconst _createPlugin = /*#__PURE__*/ _interop_require_default(require(\"../util/createPlugin\"));\nfunction _interop_require_default(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nconst _default = _createPlugin.default;\n","let createPlugin = require('./lib/public/create-plugin')\nmodule.exports = (createPlugin.__esModule ? createPlugin : { default: createPlugin }).default\n","import { useMemo } from \"react\";\nimport { getThemeColors } from \"../utils/theme\";\n\nexport const useColors = (colors?: { profit: string; loss: string }) => {\n const _colors = useMemo(() => {\n const themeColors = getThemeColors();\n return {\n profit: colors?.profit || themeColors.profit,\n loss: colors?.loss || themeColors.loss,\n primary: themeColors.primary,\n primaryLight: themeColors.primaryLight,\n };\n }, [colors]);\n\n return _colors;\n};\n","export const getThemeColors = () => {\n const root = document.documentElement;\n const computedStyle = getComputedStyle(root);\n\n const colors = {\n primary: convertToRGB(\n computedStyle.getPropertyValue(\"--oui-color-primary\")\n ),\n primaryLight: convertToRGB(\n computedStyle.getPropertyValue(\"--oui-color-primary-light\")\n ),\n secondary: convertToRGB(\n computedStyle.getPropertyValue(\"--oui-color-secondary\")\n ),\n success: convertToRGB(\n computedStyle.getPropertyValue(\"--oui-color-success\")\n ),\n warning: convertToRGB(\n computedStyle.getPropertyValue(\"--oui-color-warning\")\n ),\n danger: convertToRGB(computedStyle.getPropertyValue(\"--oui-color-danger\")),\n info: convertToRGB(computedStyle.getPropertyValue(\"--oui-color-info\")),\n loss: convertToRGB(\n computedStyle.getPropertyValue(\"--oui-color-trading-loss\")\n ),\n profit: convertToRGB(\n computedStyle.getPropertyValue(\"--oui-color-trading-profit\")\n ),\n };\n\n return colors;\n};\n\nconst convertToRGB = (color: string) => {\n return `rgb(${color.split(\" \").join(\",\")})`;\n};\n","import { useColors } from \"./useColors\";\nimport {\n BarChart,\n XAxis,\n YAxis,\n ResponsiveContainer,\n Bar,\n Cell,\n Tooltip,\n CartesianGrid,\n ReferenceLine,\n Cross,\n} from \"recharts\";\nimport type { TooltipProps } from \"recharts\";\nimport { OrderlyChartTooltip } from \"./customTooltip\";\nimport { Box, cn } from \"@orderly.network/ui\";\nimport { Flex } from \"@orderly.network/ui\";\n// import { XAxisLabel } from \"./xAxisLabel\";\nimport { useRef } from \"react\";\nimport { numberToHumanStyle } from \"@orderly.network/utils\";\nimport { tickFormatter } from \"../utils/yTickFormatter\";\n\nexport type PnLChartDataItem = {\n date: string;\n pnl: number;\n};\n\nexport type PnLChartProps = {\n colors?: {\n profit: string;\n loss: string;\n };\n data: PnLChartDataItem[];\n invisible?: boolean;\n};\n\nconst RoundedRectangle = (props: any) => {\n const { fill, x, y, width, height } = props;\n\n const absHeight = Math.abs(height);\n\n return (\n <rect\n rx={2}\n x={x}\n y={height > 0 ? y : y + height}\n width={width}\n height={absHeight}\n stroke=\"none\"\n fill={fill}\n />\n );\n};\n\nexport const XAxisLabel = (props: any) => {\n const { x, y, stroke, payload, index, width, containerWidth } = props;\n\n const _x =\n index === 0\n ? 48\n : containerWidth > 0\n ? containerWidth - 10\n : width + payload.offset;\n\n return (\n <g transform={`translate(${_x},${y - 6})`}>\n <text\n x={0}\n y={0}\n dy={16}\n textAnchor={index === 0 ? \"start\" : \"end\"}\n // textAnchor={\"start\"}\n fontSize={10}\n fill={\"rgba(255,255,255,0.54)\"}\n >\n {index === 0 ? payload.value : \"Now\"}\n </text>\n </g>\n );\n};\n\nconst CustomizedCross = (props: any) => {\n const { width, height, stroke, fill } = props;\n\n return (\n // @ts-ignore\n <Cross\n // y={props.y + props.top}\n x={props.x + props.width / 2}\n top={props.top}\n height={height}\n width={1}\n stroke={\"rgba(255,255,255,0.16)\"}\n strokeDasharray={\"3 2\"}\n fill={\"none\"}\n />\n );\n};\n\nconst CustomTooltip = (props: TooltipProps<any, any>) => {\n const { active, payload, label } = props;\n\n const todayStr = useRef(new Date().toISOString().split(\"T\")[0]);\n\n if (active && payload && payload.length) {\n return (\n <OrderlyChartTooltip\n label={label === todayStr.current ? \"Now\" : label}\n value={payload[0].value}\n coloring\n />\n );\n }\n\n return null;\n};\n\nexport const PnLBarChart = (props: PnLChartProps) => {\n const { invisible } = props;\n const colors = useColors(props.colors);\n const widthRef = useRef(0);\n\n return (\n // @ts-ignore\n <ResponsiveContainer\n className={cn(invisible && \"chart-invisible\")}\n onResize={(width, height) => {\n // console.log(\"width\", width, height);\n widthRef.current = width;\n }}\n >\n {/* @ts-ignore */}\n <BarChart\n data={props.data}\n margin={{ left: -10, top: 10, right: 10, bottom: 30 }}\n >\n {!invisible && (\n // @ts-ignore\n <Tooltip\n // cursor={{ fillOpacity: 0.1 }}\n cursor={<CustomizedCross />}\n content={<CustomTooltip />}\n />\n )}\n\n <CartesianGrid vertical={false} stroke=\"#FFFFFF\" strokeOpacity={0.04} />\n <ReferenceLine y={0} stroke=\"rgba(0,0,0,0.04)\" />\n\n {!invisible && (\n // @ts-ignore\n <Bar dataKey=\"pnl\" shape={<RoundedRectangle />}>\n {props.data.map((entry, index) => {\n return (\n // @ts-ignore\n <Cell\n key={`cell-${index}`}\n fill={entry.pnl > 0 ? colors.profit : colors.loss}\n />\n );\n })}\n </Bar>\n )}\n {/* @ts-ignore */}\n <YAxis\n tick={{ fontSize: 10, fill: \"rgba(255,255,255,0.54)\" }}\n tickFormatter={(value) => tickFormatter(value)}\n tickLine={false}\n axisLine={false}\n dataKey={\"pnl\"}\n />\n {/* @ts-ignore */}\n <XAxis\n dataKey=\"date\"\n // axisLine={false}\n tickLine={false}\n interval={props.data.length - 2}\n // tick={renderQuarterTick}\n height={1}\n // scale=\"time\"\n // tick={{ fontSize: 10, fill: \"rgba(255,255,255,0.54)\" }}\n tick={<XAxisLabel containerWidth={widthRef.current} />}\n stroke=\"#FFFFFF\"\n strokeOpacity={0.04}\n />\n </BarChart>\n </ResponsiveContainer>\n );\n};\n","import { Box, Flex, Text } from \"@orderly.network/ui\";\n\nexport const OrderlyChartTooltip = (props: {\n label: string;\n value: string | number;\n unit?: string;\n prefix?: React.ReactNode;\n titleClassName?: string;\n coloring?: boolean;\n dp?: number;\n rm?: number;\n}) => {\n const {\n label,\n value,\n prefix,\n unit = \"USDC\",\n coloring = false,\n dp,\n rm,\n } = props;\n return (\n <Box intensity={600} p={3} r=\"md\">\n <Flex direction={\"row\"} className={props.titleClassName}>\n {prefix}\n <Text.numeral\n unit={unit}\n as=\"div\"\n size=\"sm\"\n coloring={coloring}\n showIdentifier={coloring}\n unitClassName=\"oui-text-base-contrast-54 oui-ml-1\"\n weight=\"semibold\"\n rm={rm}\n dp={dp}\n >\n {value}\n </Text.numeral>\n </Flex>\n <Text size=\"2xs\" intensity={54} weight=\"semibold\">\n {label}\n </Text>\n </Box>\n );\n};\n","import { numberToHumanStyle } from \"@orderly.network/utils\";\n\nexport const tickFormatter = (value: number) => {\n let absValue = Math.abs(value);\n const dp = absValue === 0 ? 0 : absValue <= 10 ? 2 : absValue <= 100 ? 1 : 0;\n\n const formatted = numberToHumanStyle(absValue, dp);\n return value < 0 ? `-${formatted}` : formatted;\n};\n","export const XAxisLabel = (props: any) => {\n const { x, y, stroke, payload, index } = props;\n\n return (\n <g transform={`translate(${x},${y - 6})`}>\n <text\n x={0}\n y={0}\n dy={16}\n textAnchor=\"end\"\n fontSize={10}\n fill={\"rgba(255,255,255,0.54)\"}\n >\n {index === 0 ? payload.value : \"Now\"}\n </text>\n </g>\n );\n};\n","import { useMemo, useRef } from \"react\";\nimport { getThemeColors } from \"../utils/theme\";\nimport { useColors } from \"./useColors\";\n// import { Line } from \"../line/line\";\nimport {\n LineChart,\n XAxis,\n YAxis,\n Line,\n CartesianGrid,\n ReferenceLine,\n Tooltip,\n ResponsiveContainer,\n} from \"recharts\";\nimport type { TooltipProps } from \"recharts\";\nimport { OrderlyChartTooltip } from \"./customTooltip\";\nimport { XAxisLabel } from \"./xAxisLabel\";\nimport { numberToHumanStyle } from \"@orderly.network/utils\";\nimport { tickFormatter } from \"../utils/yTickFormatter\";\n\nexport type PnlLineChartProps = {\n colors?: {\n profit: string;\n loss: string;\n };\n data: any;\n invisible?: boolean;\n};\n\nconst CustomTooltip = (props: TooltipProps<any, any>) => {\n const { active, payload, label } = props;\n\n const todayStr = useRef(new Date().toISOString().split(\"T\")[0]);\n\n if (active && payload && payload.length) {\n return (\n <OrderlyChartTooltip\n label={label === todayStr.current ? \"Now\" : label}\n value={payload[0].value}\n coloring\n />\n );\n }\n\n return null;\n};\n\nconst PnlLineChart = (props: PnlLineChartProps) => {\n const colors = useColors(props.colors);\n\n const dataTransfer = (data: any[]) => {\n const series: any[] = [];\n\n data?.reduce((acc, item) => {\n acc += item.pnl;\n series.push({\n ...item,\n pnl: acc,\n _pnl: item.pnl,\n // date: new Date(item.date).getTime(),\n });\n return acc;\n }, 0);\n\n return series;\n };\n\n const data = useMemo(() => dataTransfer(props.data), [props.data]);\n\n return (\n // @ts-ignore\n <ResponsiveContainer className={props.invisible ? \"chart-invisible\" : \"\"}>\n {/* @ts-ignore */}\n <LineChart\n data={data}\n margin={{ top: 20, right: 10, left: -10, bottom: 0 }}\n >\n <CartesianGrid vertical={false} stroke=\"#FFFFFF\" strokeOpacity={0.04} />\n {/* @ts-ignore */}\n <XAxis\n dataKey=\"date\"\n interval={props.data.length - 2}\n // tick={{ fontSize: 10, fill: \"rgba(255,255,255,0.54)\" }}\n tick={<XAxisLabel />}\n stroke=\"#FFFFFF\"\n strokeOpacity={0.04}\n // scale={\"time\"}\n // type=\"number\"\n // range={}\n />\n {/* @ts-ignore */}\n <YAxis\n dataKey=\"pnl\"\n tick={{ fontSize: 10, fill: \"rgba(255,255,255,0.54)\" }}\n tickLine={false}\n axisLine={false}\n tickFormatter={(value) => tickFormatter(value)}\n />\n {/* @ts-ignore */}\n {!props.invisible && (\n // @ts-ignore\n <Tooltip\n cursor={{ strokeDasharray: \"3 2\", strokeOpacity: 0.16 }}\n content={<CustomTooltip />}\n />\n )}\n\n {/* <ReferenceLine y={0} stroke=\"#000\" /> */}\n {/* @ts-ignore */}\n {!props.invisible && (\n // @ts-ignore\n <Line\n type=\"natural\"\n dataKey=\"pnl\"\n stroke={colors.primaryLight}\n strokeWidth={2}\n dot={false}\n isAnimationActive={false}\n />\n )}\n </LineChart>\n </ResponsiveContainer>\n );\n};\n\nexport { PnlLineChart };\n","import { useColors } from \"./useColors\";\n// import { Line } from \"../line/line\";\nimport {\n LineChart,\n XAxis,\n YAxis,\n Line,\n CartesianGrid,\n Tooltip,\n Label,\n ResponsiveContainer,\n} from \"recharts\";\n\nimport type { TooltipProps } from \"recharts\";\nimport { OrderlyChartTooltip } from \"./customTooltip\";\nimport { XAxisLabel } from \"./xAxisLabel\";\nimport { useRef } from \"react\";\nimport { numberToHumanStyle } from \"@orderly.network/utils\";\nimport { tickFormatter } from \"../utils/yTickFormatter\";\n\nexport type AssetChartDataItem = {\n date: string;\n account_value: number;\n};\n\nexport type PnlLineChartProps = {\n colors?: {\n profit: string;\n loss: string;\n };\n data: AssetChartDataItem[];\n invisible?: boolean;\n};\n\nconst CustomTooltip = (props: TooltipProps<any, any>) => {\n const { active, payload, label } = props;\n\n const todayStr = useRef(new Date().toISOString().split(\"T\")[0]);\n\n if (active && payload && payload.length) {\n return (\n <OrderlyChartTooltip\n label={label === todayStr.current ? \"Now\" : label}\n value={payload[0].value}\n />\n );\n }\n\n return null;\n};\n\nconst AssetLineChart = (props: PnlLineChartProps) => {\n const colors = useColors(props.colors);\n\n // const dataTransfer = (data: any[]) => {\n // const series: any[] = [];\n\n // data.reduce((acc, item) => {\n // acc += item.pnl;\n // series.push({ ...item, pnl: acc, _pnl: item.pnl });\n // return acc;\n // }, 0);\n\n // return series;\n // };\n\n // const data = useMemo(() => dataTransfer(props.data), [props.data]);\n\n return (\n // @ts-ignore\n <ResponsiveContainer className={props.invisible ? \"chart-invisible\" : \"\"}>\n {/* @ts-ignore */}\n <LineChart\n width={530}\n height={180}\n data={props.data}\n margin={{ top: 20, right: 10, left: -20, bottom: -10 }}\n >\n <CartesianGrid vertical={false} stroke=\"#FFFFFF\" strokeOpacity={0.04} />\n {/* @ts-ignore */}\n <XAxis\n dataKey=\"date\"\n interval={props.data.length - 2}\n // tick={{ fontSize: 10, fill: \"rgba(255,255,255,0.54)\" }}\n tick={<XAxisLabel />}\n stroke=\"#FFFFFF\"\n strokeOpacity={0.04}\n ></XAxis>\n {/* @ts-ignore */}\n <YAxis\n dataKey=\"account_value\"\n tick={{ fontSize: 10, fill: \"rgba(255,255,255,0.54)\" }}\n tickLine={false}\n axisLine={false}\n tickFormatter={(value) => tickFormatter(value)}\n />\n {/* @ts-ignore */}\n {!props.invisible && (\n // @ts-ignore\n <Tooltip\n cursor={{ strokeDasharray: \"3 2\", strokeOpacity: 0.16 }}\n content={<CustomTooltip />}\n />\n )}\n\n {/* <Legend /> */}\n {/* @ts-ignore */}\n {!props.invisible && (\n // @ts-ignore\n <Line\n type=\"natural\"\n dataKey=\"account_value\"\n stroke={colors.profit}\n strokeWidth={2}\n dot={false}\n isAnimationActive={false}\n />\n )}\n </LineChart>\n </ResponsiveContainer>\n );\n};\n\nexport { AssetLineChart };\n","import { useColors } from \"./useColors\";\nimport {\n BarChart,\n XAxis,\n YAxis,\n ResponsiveContainer,\n Bar,\n Cell,\n Tooltip,\n CartesianGrid,\n ReferenceLine,\n Cross,\n} from \"recharts\";\nimport type { TooltipProps } from \"recharts\";\nimport { OrderlyChartTooltip } from \"./customTooltip\";\nimport { Box, cn } from \"@orderly.network/ui\";\n\nexport type VolChartDataItem = {\n date: string;\n volume: number;\n opacity?: string | number;\n};\n\nexport type VolChartTooltip = {\n rm?: number;\n dp?: number;\n};\n\nexport type VolChartProps = {\n colors?: {\n fill: string;\n };\n data: VolChartDataItem[];\n tooltip?: VolChartTooltip;\n className?: string;\n};\n\nconst RoundedRectangle = (props: any) => {\n const { fill, x, y, width, height, opacity } = props;\n const absHeight = Math.abs(height);\n\n return (\n <rect\n rx={2}\n x={x}\n y={height > 0 ? y : y + height}\n width={width}\n height={absHeight}\n stroke=\"none\"\n fill={fill}\n opacity={opacity}\n />\n );\n};\n\nconst CustomizedCross = (props: any) => {\n const { width, height, payload, stroke, fill } = props;\n\n if (payload?.[0]?.value === 0) return null;\n\n return (\n // @ts-ignore\n <Cross\n // y={props.y + props.top}\n x={props.x + props.width / 2}\n top={props.top}\n height={height}\n width={1}\n stroke={\"rgba(255,255,255,0.16)\"}\n strokeDasharray={\"3 2\"}\n fill={\"none\"}\n />\n );\n};\n\nconst CustomTooltip = (\n props: TooltipProps<any, any> & { tooltip?: VolChartTooltip }\n) => {\n const { active, payload, label, tooltip } = props;\n\n if (payload?.[0]?.value === 0) return null;\n\n if (active && payload && payload.length) {\n return (\n <OrderlyChartTooltip\n label={label}\n value={payload[0].value}\n // prefix=\"Commission\"\n titleClassName=\"oui-gap-4\"\n rm={tooltip?.rm}\n dp={tooltip?.dp}\n />\n );\n }\n\n return null;\n};\n\nexport const VolBarChart = (props: VolChartProps) => {\n const colors = useColors(\n props.colors?.fill\n ? { profit: props.colors?.fill, loss: props.colors?.fill }\n : undefined\n );\n\n const isEmpty = props.data.reduce((a, b) => a + b.volume, 0) === 0;\n const maxVolume = props.data.reduce((a,b) => (a > b.volume ? a : b.volume), 0);\n const decimal = maxVolume <= 10 ? 2 : (maxVolume <= 100 ? 1 : 0);\n\n return (\n // @ts-ignore\n <Box className={cn(props.className)}>\n {/* @ts-ignore */}\n <ResponsiveContainer>\n {/* @ts-ignore */}\n <BarChart\n data={props.data}\n margin={{ left: -0, top: 6, right: 0, bottom: 20 }}\n >\n {/* @ts-ignore */}\n <Tooltip\n // cursor={{ fillOpacity: 0.1 }}\n cursor={<CustomizedCross />}\n content={<CustomTooltip tooltip={props.tooltip} />}\n />\n <CartesianGrid\n vertical={false}\n stroke=\"#FFFFFF\"\n strokeOpacity={0.08}\n repeatCount={6}\n />\n <ReferenceLine y={0} stroke=\"#000\" />\n {/* @ts-ignore */}\n <Bar dataKey=\"volume\" shape={<RoundedRectangle />} minPointSize={1}>\n {props.data.map((entry, index) => {\n return (\n // @ts-ignore\n <Cell\n key={`cell-${index}`}\n fill={entry.volume > 0 ? colors.profit : colors.loss}\n opacity={entry.opacity}\n />\n );\n })}\n </Bar>\n {/* @ts-ignore */}\n <YAxis\n tick={{ fontSize: 10, fill: \"rgba(255,255,255,0.54)\" }}\n tickLine={false}\n axisLine={false}\n dataKey={\"volume\"}\n tickFormatter={(value, index) => {\n if (isEmpty) return `${index * 100}`;\n return numberToHumanStyle(value, decimal);\n }}\n width={45}\n />\n {/* @ts-ignore */}\n <XAxis\n dataKey=\"date\"\n // axisLine={false}\n tickLine={false}\n interval={props.data.length - 2}\n // tick={renderQuarterTick}\n height={1}\n // scale=\"time\"\n tick={{ fontSize: 10, fill: \"rgba(255,255,255,0.54)\" }}\n stroke=\"rgb(229, 231, 235)\"\n strokeOpacity={0.2}\n />\n </BarChart>\n </ResponsiveContainer>\n </Box>\n );\n};\nfunction numberToHumanStyle(number: number, decimalPlaces: number = 0): string {\n const abbreviations = [\"\", \"K\", \"M\", \"B\", \"T\"];\n\n let index = 0;\n while (number >= 1000 && index < abbreviations.length - 1) {\n number /= 1000;\n index++;\n }\n\n const roundedNumber = toFixedWithoutRounding(number, decimalPlaces);\n\n return `${roundedNumber}${abbreviations[index]}`;\n}\n\nfunction toFixedWithoutRounding(num: number, fix: number): string {\n const numStr = num.toString();\n const decimalIndex = numStr.indexOf(\".\");\n\n if (decimalIndex === -1 || fix === 0) {\n return numStr.split(\".\")[0];\n }\n\n const cutoffIndex = decimalIndex + fix + 1;\n\n return numStr.slice(0, cutoffIndex);\n}\n","import plugin from \"tailwindcss/plugin\";\n\nexport const chartPlugin = () =>\n plugin(function ({ addComponents, addBase }) {\n addComponents(\n {\n \".xAxis\": {\n \".recharts-cartesian-axis-tick:first-child text\": {\n \"text-anchor\": \"start\",\n },\n \".recharts-cartesian-axis-tick:last-child text\": {\n \"text-anchor\": \"end\",\n },\n },\n },\n {\n respectPrefix: false,\n }\n );\n });\n"]}
|
package/package.json
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@orderly.network/chart",
|
|
3
|
+
"version": "2.0.0-alpha.1",
|
|
4
|
+
"description": "Charting library for Orderly Network",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"module": "dist/index.mjs",
|
|
7
|
+
"keywords": [],
|
|
8
|
+
"files": [
|
|
9
|
+
"dist"
|
|
10
|
+
],
|
|
11
|
+
"publishConfig": {
|
|
12
|
+
"access": "public"
|
|
13
|
+
},
|
|
14
|
+
"devDependencies": {
|
|
15
|
+
"@types/d3-array": "^3.2.1",
|
|
16
|
+
"@types/d3-axis": "^3.0.6",
|
|
17
|
+
"@types/d3-scale": "^4.0.8",
|
|
18
|
+
"@types/d3-selection": "^3.0.10",
|
|
19
|
+
"@types/d3-shape": "^3.1.6",
|
|
20
|
+
"@types/react": "^18.3.2",
|
|
21
|
+
"@types/react-dom": "^18.3.0",
|
|
22
|
+
"react": "^18.3.1",
|
|
23
|
+
"react-dom": "^18.2.0",
|
|
24
|
+
"tailwindcss": "^3.4.4",
|
|
25
|
+
"tsup": "^8.1.0",
|
|
26
|
+
"tsconfig": "0.3.12"
|
|
27
|
+
},
|
|
28
|
+
"peerDependencies": {
|
|
29
|
+
"react": "^18.3.1",
|
|
30
|
+
"react-dom": "^18.2.0"
|
|
31
|
+
},
|
|
32
|
+
"dependencies": {
|
|
33
|
+
"d3-array": "^3.2.4",
|
|
34
|
+
"d3-axis": "^3.0.0",
|
|
35
|
+
"d3-scale": "^4.0.2",
|
|
36
|
+
"d3-selection": "^3.0.0",
|
|
37
|
+
"d3-shape": "^3.2.0",
|
|
38
|
+
"recharts": "^2.12.7",
|
|
39
|
+
"@orderly.network/utils": "2.0.0-alpha.1",
|
|
40
|
+
"@orderly.network/ui": "2.0.0-alpha.1"
|
|
41
|
+
},
|
|
42
|
+
"scripts": {
|
|
43
|
+
"build": "tsup",
|
|
44
|
+
"build:css": "tailwindcss build -i src/tailwind.css -o dist/styles.css",
|
|
45
|
+
"test": "echo \"Error: no test specified\" && exit 1"
|
|
46
|
+
}
|
|
47
|
+
}
|