@dodoex/widgets 3.0.2-rise.1 → 3.0.2-rise.2

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.
Files changed (53) hide show
  1. package/dist/cjs/locales/en-US.js +1 -1
  2. package/dist/cjs/locales/zh-CN.js +1 -1
  3. package/dist/{helper-DmwmyAg2.cjs → helper-Ddu47qgC.cjs} +1 -1
  4. package/dist/{helper-Cn7LIi7f.js → helper-DgYd0ng7.js} +1 -1
  5. package/dist/{index-C40xvoe0.cjs → index-B7R4KcwK.cjs} +2 -2
  6. package/dist/{index-BwMPShDW.js → index-BqHw4J6Y.js} +1 -1
  7. package/dist/index-Cx32ntts.js +31 -0
  8. package/dist/index-D0ASZ9Pv.js +78 -0
  9. package/dist/{index-8M7lpUFg.cjs → index-DIarf_NP.cjs} +6 -6
  10. package/dist/index-DwwVhTxW.cjs +31 -0
  11. package/dist/index.cjs +1 -1
  12. package/dist/index.js +1 -1
  13. package/dist/locales/en-US.js +1 -1
  14. package/dist/locales/zh-CN.js +1 -1
  15. package/dist/types/components/AddressWithLinkAndCopy.d.ts +2 -1
  16. package/dist/types/components/List/EmptyList.d.ts +2 -1
  17. package/dist/types/components/Swap/components/TokenCard/TokenPickerDialog.d.ts +3 -2
  18. package/dist/types/components/TokenLogoPair.d.ts +1 -1
  19. package/dist/types/components/Widget/index.d.ts +25 -1
  20. package/dist/types/components/WidgetContainer.d.ts +1 -1
  21. package/dist/types/hooks/contract/useFetchBlockNumber.d.ts +1 -1
  22. package/dist/types/hooks/useGlobalState.d.ts +32 -0
  23. package/dist/types/hooks/useTokenState.d.ts +18 -0
  24. package/dist/types/utils/token.d.ts +1 -1
  25. package/dist/types/widgets/MiningWidget/hooks/helper.d.ts +2 -2
  26. package/dist/types/widgets/MiningWidget/hooks/useReviewRewardToken.d.ts +2 -2
  27. package/dist/types/widgets/PoolWidget/AMMV3/hooks/usePools.d.ts +1 -1
  28. package/dist/types/widgets/PoolWidget/PoolList/AddLiquidity.d.ts +7 -1
  29. package/dist/types/widgets/PoolWidget/PoolList/MyLiquidity.d.ts +7 -1
  30. package/dist/types/widgets/PoolWidget/PoolList/components/LiquidityTable.d.ts +3 -1
  31. package/dist/types/widgets/PoolWidget/PoolList/components/migationWidget.d.ts +7 -0
  32. package/dist/types/widgets/PoolWidget/PoolList/hooks/usePoolListFilterTokenAndPool.d.ts +9 -1
  33. package/dist/types/widgets/PoolWidget/PoolList/index.d.ts +11 -1
  34. package/dist/types/widgets/PoolWidget/hooks/usePoolDetail.d.ts +35 -0
  35. package/package.json +3 -6
  36. package/dist/index-5PCIiwtZ.js +0 -78
  37. package/dist/index-6fhZA_Cb.cjs +0 -31
  38. package/dist/index-C1T26jFv.js +0 -31
  39. package/dist/types/store/actions/globals.d.ts +0 -9
  40. package/dist/types/store/actions/index.d.ts +0 -4
  41. package/dist/types/store/actions/settings.d.ts +0 -3
  42. package/dist/types/store/actions/token.d.ts +0 -7
  43. package/dist/types/store/actions/wallet.d.ts +0 -6
  44. package/dist/types/store/index.d.ts +0 -12
  45. package/dist/types/store/reducers/globals.d.ts +0 -21
  46. package/dist/types/store/reducers/index.d.ts +0 -17
  47. package/dist/types/store/reducers/settings.d.ts +0 -8
  48. package/dist/types/store/reducers/token.d.ts +0 -22
  49. package/dist/types/store/reducers/wallet.d.ts +0 -13
  50. package/dist/types/store/selectors/globals.d.ts +0 -7
  51. package/dist/types/store/selectors/settings.d.ts +0 -2
  52. package/dist/types/store/selectors/token.d.ts +0 -6
  53. package/dist/types/store/selectors/wallet.d.ts +0 -6
@@ -1,7 +1,8 @@
1
1
  import { ChainId } from '@dodoex/api';
2
2
  import React from 'react';
3
+ import { TokenAndPoolFilterUserOptions } from './hooks/usePoolListFilterTokenAndPool';
3
4
  import { PoolOperateProps } from '../PoolOperate';
4
- export default function AddLiquidityList({ scrollParentRef, filterChainIds, activeChainId, handleChangeActiveChainId, operatePool, setOperatePool, }: {
5
+ export default function AddLiquidityList({ scrollParentRef, filterChainIds, activeChainId, handleChangeActiveChainId, operatePool, setOperatePool, tokenAndPoolFilter, getMigrationPairAndMining, }: {
5
6
  scrollParentRef: React.MutableRefObject<HTMLDivElement | null>;
6
7
  account?: string;
7
8
  filterChainIds?: ChainId[];
@@ -9,4 +10,9 @@ export default function AddLiquidityList({ scrollParentRef, filterChainIds, acti
9
10
  handleChangeActiveChainId: (chainId: number | undefined) => void;
10
11
  operatePool: Partial<PoolOperateProps> | null;
11
12
  setOperatePool: (operate: Partial<PoolOperateProps> | null) => void;
13
+ tokenAndPoolFilter?: TokenAndPoolFilterUserOptions;
14
+ getMigrationPairAndMining?: (p: {
15
+ address: string;
16
+ chainId: number;
17
+ }) => void;
12
18
  }): JSX.Element;
@@ -1,10 +1,16 @@
1
1
  import { ChainId } from '@dodoex/api';
2
+ import { TokenAndPoolFilterUserOptions } from './hooks/usePoolListFilterTokenAndPool';
2
3
  import { PoolOperateProps } from '../PoolOperate';
3
- export default function MyLiquidity({ account, filterChainIds, activeChainId, handleChangeActiveChainId, operatePool, setOperatePool, }: {
4
+ export default function MyLiquidity({ account, filterChainIds, activeChainId, handleChangeActiveChainId, operatePool, setOperatePool, getMigrationPairAndMining, tokenAndPoolFilter, }: {
4
5
  account?: string;
5
6
  filterChainIds?: ChainId[];
6
7
  activeChainId: ChainId | undefined;
7
8
  handleChangeActiveChainId: (chainId: number | undefined) => void;
8
9
  operatePool: Partial<PoolOperateProps> | null;
9
10
  setOperatePool: (operate: Partial<PoolOperateProps> | null) => void;
11
+ getMigrationPairAndMining?: (p: {
12
+ address: string;
13
+ chainId: number;
14
+ }) => void;
15
+ tokenAndPoolFilter?: TokenAndPoolFilterUserOptions;
10
16
  }): JSX.Element;
@@ -1,5 +1,7 @@
1
1
  import { BoxProps } from '@dodoex/components';
2
- export default function LiquidityTable({ sx, children, hasMore, loadMore, loadMoreLoading, ...props }: BoxProps & {
2
+ export default function LiquidityTable({ sx, children, empty, loading, hasMore, loadMore, loadMoreLoading, ...props }: BoxProps & {
3
+ empty?: boolean;
4
+ loading?: boolean;
3
5
  hasMore?: boolean;
4
6
  loadMore?: () => void;
5
7
  loadMoreLoading?: boolean;
@@ -0,0 +1,7 @@
1
+ import { BoxProps } from '@dodoex/components';
2
+ export interface MigrationTagProps {
3
+ sx?: BoxProps['sx'];
4
+ isRightTop?: boolean;
5
+ isReverseColor?: boolean;
6
+ }
7
+ export declare const MigrationTag: ({ sx, isRightTop, isReverseColor, }: MigrationTagProps) => JSX.Element;
@@ -1,6 +1,14 @@
1
+ import React from 'react';
1
2
  import { TokenInfo } from '../../../../hooks/Token';
2
3
  import { FetchLiquidityListLqList } from '../../utils';
3
- export declare function usePoolListFilterTokenAndPool(): {
4
+ export interface TokenAndPoolFilterUserOptions {
5
+ tokens: Array<TokenInfo>;
6
+ lqList: FetchLiquidityListLqList;
7
+ onChangeFilterTokens: (tokens: Array<TokenInfo>) => void;
8
+ onChangeFilterAddressLqList: (lqList: FetchLiquidityListLqList) => void;
9
+ element: React.ReactNode;
10
+ }
11
+ export declare function usePoolListFilterTokenAndPool(tokenAndPoolFilter?: TokenAndPoolFilterUserOptions): {
4
12
  filterTokens: TokenInfo[];
5
13
  filterASymbol: string;
6
14
  filterBSymbol: string;
@@ -1,6 +1,16 @@
1
1
  import React from 'react';
2
2
  import { Page, PageType } from '../../../router/types';
3
- export default function PoolList({ params, scrollRef: scrollParentRefProps, }: {
3
+ import { PoolOperateProps } from '../PoolOperate';
4
+ import { TokenAndPoolFilterUserOptions } from './hooks/usePoolListFilterTokenAndPool';
5
+ export default function PoolList({ params, scrollRef: scrollParentRefProps, tokenAndPoolFilter, operatePMMPoolElement, operatePool: operatePoolProps, onOperatePool, getMigrationPairAndMining, }: {
4
6
  params?: Page<PageType.Pool>['params'];
5
7
  scrollRef?: React.RefObject<any>;
8
+ tokenAndPoolFilter?: TokenAndPoolFilterUserOptions;
9
+ operatePMMPoolElement?: React.ReactElement;
10
+ operatePool?: Partial<PoolOperateProps> | null;
11
+ onOperatePool?: (pool: Partial<PoolOperateProps> | null) => boolean;
12
+ getMigrationPairAndMining?: (p: {
13
+ address: string;
14
+ chainId: number;
15
+ }) => void;
6
16
  }): JSX.Element;
@@ -11,6 +11,13 @@ export declare function usePoolDetail({ id, chainId, }: {
11
11
  baseToken: TokenInfo;
12
12
  quoteToken: TokenInfo;
13
13
  miningAddress: string;
14
+ apy: {
15
+ miningBaseApy?: any | null;
16
+ miningQuoteApy?: any | null;
17
+ transactionBaseApy?: any | null;
18
+ transactionQuoteApy?: any | null;
19
+ metromMiningApy?: any | null;
20
+ } | null | undefined;
14
21
  baseApy: string | undefined;
15
22
  quoteApy: string | undefined;
16
23
  isCpPool: boolean;
@@ -80,6 +87,13 @@ export declare function usePoolDetail({ id, chainId, }: {
80
87
  baseToken: TokenInfo;
81
88
  quoteToken: TokenInfo;
82
89
  miningAddress: string;
90
+ apy: {
91
+ miningBaseApy?: any | null;
92
+ miningQuoteApy?: any | null;
93
+ transactionBaseApy?: any | null;
94
+ transactionQuoteApy?: any | null;
95
+ metromMiningApy?: any | null;
96
+ } | null | undefined;
83
97
  baseApy: string | undefined;
84
98
  quoteApy: string | undefined;
85
99
  isCpPool: boolean;
@@ -149,6 +163,13 @@ export declare function usePoolDetail({ id, chainId, }: {
149
163
  baseToken: TokenInfo;
150
164
  quoteToken: TokenInfo;
151
165
  miningAddress: string;
166
+ apy: {
167
+ miningBaseApy?: any | null;
168
+ miningQuoteApy?: any | null;
169
+ transactionBaseApy?: any | null;
170
+ transactionQuoteApy?: any | null;
171
+ metromMiningApy?: any | null;
172
+ } | null | undefined;
152
173
  baseApy: string | undefined;
153
174
  quoteApy: string | undefined;
154
175
  isCpPool: boolean;
@@ -218,6 +239,13 @@ export declare function usePoolDetail({ id, chainId, }: {
218
239
  baseToken: TokenInfo;
219
240
  quoteToken: TokenInfo;
220
241
  miningAddress: string;
242
+ apy: {
243
+ miningBaseApy?: any | null;
244
+ miningQuoteApy?: any | null;
245
+ transactionBaseApy?: any | null;
246
+ transactionQuoteApy?: any | null;
247
+ metromMiningApy?: any | null;
248
+ } | null | undefined;
221
249
  baseApy: string | undefined;
222
250
  quoteApy: string | undefined;
223
251
  isCpPool: boolean;
@@ -287,6 +315,13 @@ export declare function usePoolDetail({ id, chainId, }: {
287
315
  baseToken: TokenInfo;
288
316
  quoteToken: TokenInfo;
289
317
  miningAddress: string;
318
+ apy: {
319
+ miningBaseApy?: any | null;
320
+ miningQuoteApy?: any | null;
321
+ transactionBaseApy?: any | null;
322
+ transactionQuoteApy?: any | null;
323
+ metromMiningApy?: any | null;
324
+ } | null | undefined;
290
325
  baseApy: string | undefined;
291
326
  quoteApy: string | undefined;
292
327
  isCpPool: boolean;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dodoex/widgets",
3
- "version": "3.0.2-rise.1",
3
+ "version": "3.0.2-rise.2",
4
4
  "description": "DODO Widgets",
5
5
  "source": "src/index.tsx",
6
6
  "types": "dist/types/index.d.ts",
@@ -106,9 +106,7 @@
106
106
  "peerDependencies": {
107
107
  "@babel/runtime": ">=7.17.0",
108
108
  "react": ">=17.0.1",
109
- "react-dom": ">=17.0.1",
110
- "react-redux": ">=7.2.2",
111
- "redux": ">=4.1.2"
109
+ "react-dom": ">=17.0.1"
112
110
  },
113
111
  "devDependencies": {
114
112
  "@babel/preset-env": "^7.16.11",
@@ -154,5 +152,4 @@
154
152
  "ts-jest": "^29.0.1",
155
153
  "typescript": "^5.6.3"
156
154
  }
157
- }
158
-
155
+ }
@@ -1,78 +0,0 @@
1
- import t from"bignumber.js";import{merge as e,throttle as i,debounce as o}from"lodash";import r,{useEffect as n,useMemo as l,useRef as s,useState as a}from"react";import d from"@emotion/styled";import{css as u}from"@emotion/react";import{Stage as c,Layer as p,Rect as m,Line as g,Text as h,Circle as b,Label as f,Tag as M}from"react-konva";import{c as x,e as v,a as y,b as P,d as j,f as w,u as z,g as L,h as k,l as B,i as C,j as S,k as N}from"./helper-Cn7LIi7f.js";import{f as O,j as X,a as T,b as A}from"./index-C1T26jFv.js";import{solveQuadraticFunctionForTarget as q,PMMModel as W}from"@dodoex/api";import"@lingui/core";import"@lingui/react";import"@dodoex/components";import"@dodoex/dodo-contract-request";import"react-redux";import"identicon.js";import"@web3-react/core";import"@web3-react/eip1193";import"@web3-react/walletconnect-v2";import"@web3-react/metamask";import"@web3-react/types";import"@reduxjs/toolkit";import"redux";import"@tanstack/react-query";import"react-dom";import"react-window";import"@ethersproject/bignumber";import"dayjs";import"react-transition-group";import"zustand";import"@dodoex/contract-request";import"axios";import"recharts";import"jsbi";import"tiny-invariant";import"@uniswap/sdk-core";import"@uniswap/v2-sdk";import"react-infinite-scroller";import"d3";import"rmc-date-picker";var E={color:void 0,size:void 0,className:void 0,style:void 0,attr:void 0},F=r.createContext&&r.createContext(E),H=["attr","size","title"];function Z(t,e){if(null==t)return{};var i,o,r=function(t,e){if(null==t)return{};var i,o,r={},n=Object.keys(t);for(o=0;o<n.length;o++)i=n[o],e.indexOf(i)>=0||(r[i]=t[i]);return r}(t,e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);for(o=0;o<n.length;o++)i=n[o],e.indexOf(i)>=0||Object.prototype.propertyIsEnumerable.call(t,i)&&(r[i]=t[i])}return r}function G(){return G=Object.assign?Object.assign.bind():function(t){for(var e=1;e<arguments.length;e++){var i=arguments[e];for(var o in i)Object.prototype.hasOwnProperty.call(i,o)&&(t[o]=i[o])}return t},G.apply(this,arguments)}function D(t,e){var i=Object.keys(t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);e&&(o=o.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),i.push.apply(i,o)}return i}function J(t){for(var e=1;e<arguments.length;e++){var i=null!=arguments[e]?arguments[e]:{};e%2?D(Object(i),!0).forEach((function(e){V(t,e,i[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(i)):D(Object(i)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(i,e))}))}return t}function V(t,e,i){return(e=function(t){var e=function(t,e){if("object"!=typeof t||null===t)return t;var i=t[Symbol.toPrimitive];if(void 0!==i){var o=i.call(t,e||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:String(e)}(e))in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}function Y(t){return t&&t.map(((t,e)=>r.createElement(t.tag,J({key:e},t.attr),Y(t.child))))}function I(t){return e=>r.createElement(R,G({attr:J({},t.attr)},e),Y(t.child))}function R(t){var e=e=>{var i,{attr:o,size:n,title:l}=t,s=Z(t,H),a=n||e.size||"1em";return e.className&&(i=e.className),t.className&&(i=(i?i+" ":"")+t.className),r.createElement("svg",G({stroke:"currentColor",fill:"currentColor",strokeWidth:"0"},e.attr,o,s,{className:i,style:J(J({color:t.color||e.color},e.style),t.style),height:a,width:a,xmlns:"http://www.w3.org/2000/svg"}),l&&r.createElement("title",null,l),t.children)};return void 0!==F?r.createElement(F.Consumer,null,(t=>e(t))):e(E)}function $(t){return I({tag:"svg",attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{d:"M13.293 6.293 7.586 12l5.707 5.707 1.414-1.414L10.414 12l4.293-4.293z"},child:[]}]})(t)}function Q(t){return I({tag:"svg",attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{d:"M10.707 17.707 16.414 12l-5.707-5.707-1.414 1.414L13.586 12l-4.293 4.293z"},child:[]}]})(t)}function K(t){return I({tag:"svg",attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{d:"M5 11h14v2H5z"},child:[]}]})(t)}function U(t){return I({tag:"svg",attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{d:"M19 11h-6V5h-2v6H5v2h6v6h2v-6h6z"},child:[]}]})(t)}const _=d.input`
2
- margin: 4px 10px 4px 6px;
3
- border-radius: 10px;
4
- border: 1px solid #373739;
5
- padding: 4px 9px;
6
- background-color: #1a1a1b;
7
- color: #ffffff;
8
- font-size: 14px;
9
- font-weight: 400;
10
- line-height: 20px;
11
- outline: none;
12
- width: 96px;
13
- &:focus {
14
- border-color: #fff;
15
-
16
- ${({error:t})=>t&&u`
17
- border-color: red;
18
- `}
19
- }
20
- `;const tt="rgba(38, 39, 41, 0.3)";function et({width:o,height:r,midPrice:a,pmmModel:d,params:u,baseTokenSymbol:C,quoteTokenSymbol:S,baseMinAndZoomMultiples:N,colorMap:T,setBaseMinAndZoomMultiples:A}){const q=e({grid:"#2A2A2D",midPriceLine:"#313335",leftBg:[0,tt,1,"#31645d"],leftLine:"#55f6db",leftColor:"",rightBg:[0,tt,1,"#67303d"],rightLine:"#ff4f73",rightColor:"",tooltipBg:"#121212",tooltipColor:void 0},T),W=o,E=r-18,F=W/7,{buyBaseVert:H,sellBaseVert:Z}=y({midPrice:a,q:u.q,q0:u.q0,pmmModel:d}),G=H.div(E),D=Z.div(E),J=s(null),V=s(null),{current:Y}=J,I=s(0),R=s(),{horizontalGridLines:$,verticalGridLines:Q}=function({chartHeight:t,chartWidth:e,horizontalLineCount:i,verticalLineCount:o}){return l((()=>{const r=[],n=t/(i+1),l=[],s=e/o;for(let t=0;t<i;t++){const i=n*(t+1);r.push([0,i,e,i])}for(let e=0;e<o;e++){const i=s*e+s/2;l.push([i,0,i,t])}return{horizontalGridLines:r,verticalGridLines:l}}),[t,e,i,o])}({chartHeight:E,chartWidth:W,horizontalLineCount:9,verticalLineCount:7}),{horizontalLabelTickPoints:K,horizontalLabelTextPoints:U}=function({chartHeight:t,chartWidth:e,xAxisPoints:i,oneXPx:o,baseMinAndZoomMultiples:r}){return l((()=>{const n=x(e,r.zoomMultiples),l=[],s=[];for(let e=0;e<i;e++){l.push([e*o+o/2,t,e*o+o/2,t+4]);const i=n.multipliedBy(e).multipliedBy(o).plus(n.multipliedBy(o/2)).toNumber(),a=r.baseMin.multipliedBy(10**i),d=e*o,u=t+2+4,c=O(a);s.push({x:d,y:u,text:c})}return{horizontalLabelTickPoints:l,horizontalLabelTextPoints:s}}),[r.baseMin,r.zoomMultiples,t,e,o,i])}({chartHeight:E,chartWidth:W,xAxisPoints:7,oneXPx:F,baseMinAndZoomMultiples:N}),{quoteLinePoints:_,quoteLineAreaPoints:et,quoteLineAreaLinearGradientEndPointY:it,baseLinePoints:ot,baseLineAreaPoints:rt,baseLineAreaLinearGradientEndPointY:nt,midPriceLinePoints:lt}=function({chartHeight:e,chartWidth:i,midPrice:o,xPoints:r,pmmModel:n,baseMinAndZoomMultiples:s,buyYPortion:a,sellYPortion:d}){return l((()=>{const l=[],u=[],c=[],{baseMin:p,zoomMultiples:m}=s,g=x(i,m),h=2*m,b=new t(h).div(r);let f=new t(Math.log(o.div(p).toNumber())/Math.log(10));f=t.minimum(h,f),f=t.maximum(0,f);for(let i=new t(0);i.lte(f);){const t=p.multipliedBy(10**i.toNumber()),r=v({val:t,model:n,midPrice:o});if(!r.vert.isNaN()){const t=i.div(g).toNumber(),o=e-r.vert.div(a).toNumber();l.push(t,o)}i=i.plus(b)}for(let t=f;t.lte(h);){const i=p.multipliedBy(10**t.toNumber()),r=v({val:i,model:n,midPrice:o});if(!r.vert.isNaN()){const i=t.div(g).toNumber(),o=e-r.vert.div(d).toNumber();u.push(i,o)}t=t.plus(b)}const M=f.div(g).toNumber(),[,y]=l,P=n.k.eq(0);P&&l.push(M,y||e),l.push(M,e),c.push(M,e,M,0);const j=v({val:p.multipliedBy(10**h),model:n,midPrice:o});let w=e;const z=new t(h).div(g).toNumber();return j.vert.isNaN()||(w=e-j.vert.div(d).toNumber()),P&&u.length>=2&&(u.unshift(M,w),u.unshift(M,e)),u.push(z,w),f.lte(0)&&u.unshift(0,e),{quoteLinePoints:l,quoteLineAreaPoints:[0,e,0,y,...l],quoteLineAreaLinearGradientEndPointY:y,baseLinePoints:u,baseLineAreaPoints:[...u,z,e],baseLineAreaLinearGradientEndPointY:w,midPriceLinePoints:c}}),[s,i,r,o,n,e,a,d])}({chartHeight:E,chartWidth:W,midPrice:a,xPoints:50,pmmModel:d,baseMinAndZoomMultiples:N,buyYPortion:G,sellYPortion:D}),st=t=>{var e;const i=t.target;if(i&&Y){const t=null===(e=i.getStage())||void 0===e?void 0:e.getPointerPosition();if(t){const{x:e}=t;if(e>W)return void Y.hide();z({x:e,tooltip:Y,buyBaseVert:H,sellBaseVert:Z,chartWidth:W,chartHeight:E,midPrice:a,pmmModel:d,baseTokenSymbol:C,quoteTokenSymbol:S,baseMinAndZoomMultiples:N,t:L,isHover:!0,color:q.tooltipColor,leftColor:q.leftLine,rightColor:q.rightLine})}}},at=l((()=>i((t=>{const{target:e}=t,i=e.getStage();if(i){i.container().style.cursor="grabbing";const t=null==i?void 0:i.getPointerPosition();if(t){const e=t.x-I.current;I.current=t.x,R.current=t.x,A((t=>void 0===t.baseMin?t:{baseMin:P({dragDistance:e,prevBaseMin:t.baseMin,chartWidth:W,zoomMultiples:t.zoomMultiples}),zoomMultiples:t.zoomMultiples,targetMarginPriceX:0}))}}}),100)),[W,A]),dt=l((()=>i((t=>{t.cancelBubble=!0,t.evt.preventDefault();const e=t.evt.deltaY<0;A((t=>{const i=j({zoomIn:e,prevZoomMultiples:t.zoomMultiples});return{baseMin:w({midPrice:a,zoomMultiples:i}),zoomMultiples:i,targetMarginPriceX:t.targetMarginPriceX}}))}),100)),[a,A]);return n((()=>{N.targetMarginPriceX>0&&null!==Y?z({x:N.targetMarginPriceX,tooltip:Y,buyBaseVert:H,sellBaseVert:Z,chartWidth:W,chartHeight:E,midPrice:a,pmmModel:d,baseTokenSymbol:C,quoteTokenSymbol:S,baseMinAndZoomMultiples:N,t:L,color:q.tooltipColor,leftColor:q.leftLine,rightColor:q.rightLine}):void 0!==R.current&&null!==Y&&z({x:R.current,tooltip:Y,buyBaseVert:H,sellBaseVert:Z,chartWidth:W,chartHeight:E,midPrice:a,pmmModel:d,baseTokenSymbol:C,quoteTokenSymbol:S,baseMinAndZoomMultiples:N,t:L,isHover:!0,color:q.tooltipColor,leftColor:q.leftLine,rightColor:q.rightLine})}),[N,C,H,E,W,q.leftLine,q.rightLine,q.tooltipColor,a,d,S,Z,Y]),X.jsxs(c,{ref:V,width:o,offsetY:-k,height:r+k,draggable:!0,dragBoundFunc:function(){return{x:this.absolutePosition().x,y:this.absolutePosition().y}},onMouseMove:st,onMouseOver:st,onMouseOut:()=>{Y&&Y.hide()},onDragStart:function(t){const{target:e}=t,i=e.getStage();if(i){const t=i.getPointerPosition();t&&(I.current=t.x)}},onDragMove:at,onDragEnd:t=>{const{target:e}=t,i=e.getStage();i&&(i.container().style.cursor="pointer")},onWheel:dt,children:[X.jsxs(p,{children:[X.jsx(m,{x:0,y:0,width:o,height:E,stroke:q.grid,strokeWidth:1}),$.map(((t,e)=>X.jsx(g,{points:t,stroke:q.grid,strokeWidth:1,lineCap:"round",lineJoin:"round",listening:!1},e))),Q.map(((t,e)=>X.jsx(g,{points:t,stroke:q.grid,strokeWidth:1,lineCap:"round",lineJoin:"round",listening:!1},e))),K.map(((t,e)=>X.jsx(g,{points:t,stroke:"#9d9d9d",strokeWidth:1,lineCap:"round",lineJoin:"round",listening:!1},e))),U.map(((t,e)=>X.jsx(h,{x:t.x,y:t.y,text:t.text,fontFamily:"Manrope",fontSize:12,fill:"#9d9d9d",width:F,padding:0,align:"center",verticalAlign:"bottom",listening:!1},e))),X.jsx(g,{points:et,closed:!0,listening:!1,lineCap:"round",lineJoin:"round",fillLinearGradientStartPoint:{x:0,y:E},fillLinearGradientEndPoint:{x:0,y:it},fillLinearGradientColorStops:q.leftBg}),X.jsx(g,{points:_,stroke:q.leftLine,strokeWidth:2,lineCap:"round",lineJoin:"round",listening:!1}),X.jsx(g,{points:rt,closed:!0,listening:!1,lineCap:"round",lineJoin:"round",fillLinearGradientStartPoint:{x:W,y:E},fillLinearGradientEndPoint:{x:W,y:nt},fillLinearGradientColorStops:q.rightBg}),X.jsx(g,{points:ot,stroke:q.rightLine,strokeWidth:2,lineCap:"round",lineJoin:"round",listening:!1}),X.jsx(g,{points:lt,stroke:q.midPriceLine,strokeWidth:2,lineCap:"round",lineJoin:"round",listening:!1})]}),X.jsxs(p,{ref:J,visible:!1,listening:!1,children:[X.jsx(g,{points:[],stroke:"#ff4f73",strokeWidth:1,lineCap:"round",lineJoin:"round",dash:[4,6],id:"toolTipVertLine"}),X.jsx(g,{points:[],stroke:"ff4f73",strokeWidth:1,lineCap:"round",lineJoin:"round",dash:[4,6],id:"toolTipHoriLine"}),X.jsx(b,{x:0,y:0,radius:5,fill:"#FF5072",stroke:"rgba(255, 80, 114, 0.3)",strokeWidth:12,id:"joinCircle"}),X.jsxs(f,{x:0,y:0,id:"priceTextLabel",children:[X.jsx(M,{fill:q.tooltipBg,id:"priceTextLabel-tag"}),X.jsx(h,{text:"",fontSize:12,fontFamily:"Manrope",padding:4,fill:"#FF5072",id:"priceTextLabel-text"})]}),X.jsxs(f,{x:0,y:0,id:"slippageTextLabel",children:[X.jsx(M,{fill:q.tooltipBg,id:"slippageTextLabel-tag"}),X.jsx(h,{text:"",fontSize:12,fontFamily:"Manrope",padding:4,fill:"#FF5072",id:"slippageTextLabel-text"})]}),X.jsxs(f,{x:0,y:0,id:"toolTip",children:[X.jsx(M,{fill:q.tooltipBg,pointerDirection:"down",pointerWidth:15,pointerHeight:8,cornerRadius:8,lineJoin:"round",id:"toolTip-tag"}),X.jsx(h,{text:"-",fontSize:12,lineHeight:17/12,padding:B,fontFamily:"Manrope",fill:"#FFFFFF",id:"toolTip-text"})]})]})]})}const it=d.button`
21
- margin: 0;
22
- border: none;
23
- padding: 0;
24
- background: none;
25
-
26
- &:focus {
27
- outline: none;
28
- }
29
- &:active {
30
- outline: none;
31
- }
32
- `,ot=d.div`
33
- height: 100%;
34
- `,rt=d.div`
35
- display: flex;
36
- align-items: center;
37
- `,nt=d.div`
38
- border: 1px solid ${({borderColor:t})=>t||"#2a2a2d"};
39
- flex: 1 0 50%;
40
-
41
- display: flex;
42
- align-items: center;
43
- justify-content: center;
44
- font-size: 12px;
45
- font-weight: 400;
46
- line-height: 17px;
47
- color: #606066;
48
-
49
- & + & {
50
- border-left: none;
51
- }
52
- `,lt=d.span`
53
- color: #85858d;
54
- `,st=d.div`
55
- margin-top: 20px;
56
- display: flex;
57
- justify-content: center;
58
- margin-bottom: 9px;
59
- `,at=d(it)`
60
- border-radius: 13px;
61
- background-color: #373739;
62
- width: 24px;
63
- height: 24px;
64
- font-size: 18px;
65
- color: #85858d;
66
- line-height: 0;
67
- & + & {
68
- margin-left: 10px;
69
- }
70
- &:first-child,
71
- &:last-child {
72
- font-size: 20px;
73
- }
74
-
75
- &:hover {
76
- color: #fff;
77
- }
78
- `;function dt({params:e,target:i,isBuy:o=!0}){const r=new t(e.b),n=new t(e.q);let l=new t(e.b0);const s=new t(e.q0),a=new t(e.i),d=new t(e.k),{R:u}=e;1===u&&l.eq(r)&&(l=q(r,n.minus(s),new t(1).div(a),d));const c=o?r.plus(i):r.minus(i);if(c.lt(l)||r.eq(l)){let e=l.multipliedBy(l).div(c).div(c);return e=new t(1).minus(d).plus(d.multipliedBy(e)),a.multipliedBy(e)}const p=new W;p.RStatus=u,p.B=r,p.B0=l,p.Q=n,p.Q0=s,p.i=a,p.k=d,p.mtFeeRate=new t(0),p.lpFeeRate=new t(0);let m=new t(0);m=o?p.querySellBase(i):p.queryBuyBase(i);const g=o?n.minus(m):n.plus(m);let h=s.multipliedBy(s).div(g).div(g);return h=new t(1).minus(d).plus(d.multipliedBy(h)),a.div(h)}const ut=({chartId:e,width:i=834,height:r=460,baseTokenSymbol:s,quoteTokenSymbol:d,pmmModel:u,pmmParams:c,midPrice:p=new t(0),colorMap:m,notShowAmountInput:g})=>{(({id:t})=>{n((()=>{function e(t){t.preventDefault()}let i=!1;try{const t={get passive(){return i=!0,!1}};window.addEventListener("test",(()=>{}),t),window.removeEventListener("test",(()=>{}))}catch(t){i=!1}const o=document.getElementById(t),r=!!i&&{passive:!1};return null==o||o.addEventListener("wheel",e,r),()=>{null==o||o.removeEventListener("wheel",e)}}),[t])})({id:e});const[h,b]=a(""),[f,M]=a(""),[x,v]=a("-"),[y,z]=a("-"),[k,B]=a({baseMin:new t(0),zoomMultiples:C,targetMarginPriceX:0});n((()=>{void 0!==p&&B((t=>({baseMin:w({midPrice:p,zoomMultiples:t.zoomMultiples}),zoomMultiples:t.zoomMultiples,targetMarginPriceX:t.targetMarginPriceX})))}),[p]);const O=l((()=>o((({type:e,amount:o})=>{""===o&&p&&(B({baseMin:w({midPrice:p,zoomMultiples:C}),zoomMultiples:C,targetMarginPriceX:0}),"buy"===e?v("-"):z("-"));const r=new t(o);if(!r.lte(0)&&!r.isNaN()&&(null==c?void 0:c.b)&&!r.gte(c.b)&&p)if("buy"===e){const t=dt({params:c,target:r});B((o=>{const r=S({currentBaseMinAndZoomMultiples:o,targetPrice:t,midPrice:p,width:i});if(r.isSkip)return{baseMin:o.baseMin,zoomMultiples:o.zoomMultiples,targetMarginPriceX:r.targetX};if(r.targetX>0)return{baseMin:r.baseMin,zoomMultiples:r.zoomMultiples,targetMarginPriceX:r.targetX};const n=N({midPrice:p,width:i,type:e,targetPrice:t}),l=n.zoomMultiples.dp(6).toNumber();return{baseMin:w({midPrice:p,zoomMultiples:l}),zoomMultiples:l,targetMarginPriceX:n.targetX}})),v(`${T({input:t.minus(p).div(p)})}`)}else{const t=function({params:t,target:e}){return dt({params:t,target:e,isBuy:!1})}({params:c,target:r});B((o=>{const r=S({currentBaseMinAndZoomMultiples:o,targetPrice:t,midPrice:p,width:i});if(r.isSkip)return{baseMin:o.baseMin,zoomMultiples:o.zoomMultiples,targetMarginPriceX:r.targetX};if(r.targetX>0)return{baseMin:r.baseMin,zoomMultiples:r.zoomMultiples,targetMarginPriceX:r.targetX};const n=N({midPrice:p,width:i,type:e,targetPrice:t}),l=n.zoomMultiples.dp(6).toNumber();return{baseMin:w({midPrice:p,zoomMultiples:l}),zoomMultiples:l,targetMarginPriceX:n.targetX}})),z(`+${T({input:t.minus(p).div(p)})}`)}}),300)),[c,p,i]);n((()=>{void 0!==h&&O({type:"buy",amount:h})}),[O,h]),n((()=>{void 0!==f&&O({type:"sell",amount:f})}),[O,f]);const q=t=>{let e=0;e=t?-.1*i:.1*i,B((t=>void 0===t.baseMin?t:{baseMin:P({dragDistance:e,prevBaseMin:t.baseMin,chartWidth:i,zoomMultiples:t.zoomMultiples}),zoomMultiples:t.zoomMultiples,targetMarginPriceX:t.targetMarginPriceX}))},W=t=>{B((e=>{const i=j({zoomIn:null!=t&&t,prevZoomMultiples:e.zoomMultiples});return{baseMin:w({midPrice:p,zoomMultiples:i}),zoomMultiples:i,targetMarginPriceX:e.targetMarginPriceX}}))},E=l((()=>{if(""===h)return!1;const e=new t(h);return!(!e.lte(0)&&!e.isNaN()&&(null==c?void 0:c.b)&&!e.gte(c.b))}),[h,c]),F=l((()=>{if(""===f)return!1;const e=new t(f);return!(!e.lte(0)&&!e.isNaN()&&(null==c?void 0:c.b)&&!e.gte(c.b))}),[f,c]);return X.jsxs(ot,{id:e,children:[g?"":X.jsxs(rt,{children:[X.jsxs(nt,{borderColor:m&&m.grid,children:[L("pool.chart.buy-amount",{symbol:s}),X.jsx(_,{value:h,error:E,onChange:t=>{const e=A(t.target.value,2);null!==e&&b(e)}}),X.jsx(lt,{children:L("pool.chart.price-impact",{amount:x})})]}),X.jsxs(nt,{borderColor:m&&m.grid,children:[L("pool.chart.sell-amount",{symbol:s}),X.jsx(_,{value:f,error:F,onChange:t=>{const e=A(t.target.value,2);null!==e&&M(e)}}),X.jsx(lt,{children:L("pool.chart.price-impact",{amount:y})})]})]}),void 0!==c&&void 0!==p&&void 0!==u&&void 0!==k.baseMin&&void 0!==p&&X.jsx(et,{width:i,height:r,params:c,midPrice:p,pmmModel:u,baseTokenSymbol:s,quoteTokenSymbol:d,baseMinAndZoomMultiples:k,colorMap:m,setBaseMinAndZoomMultiples:B}),X.jsxs(st,{className:"operate-btn-wrapper",children:[X.jsx(at,{onClick:()=>q(!0),children:X.jsx($,{})}),X.jsx(at,{onClick:()=>W(!1),children:X.jsx(K,{})}),X.jsx(at,{onClick:()=>W(!0),children:X.jsx(U,{})}),X.jsx(at,{onClick:()=>q(!1),children:X.jsx(Q,{})})]})]})};export{ut as default};