@velora-dex/widget 0.2.5-dev.2 → 0.2.5-dev.4
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/components/widget/OrderExpiryInput/index.d.ts.map +1 -1
- package/dist/components/widget/OrderExpiryInput/index.js +6 -5
- package/dist/components/widget/OrderExpiryInput/index.js.map +1 -1
- package/dist/components/widget/SwapModeSwitcher/state/swapSideAtom.d.ts +0 -3
- package/dist/components/widget/SwapModeSwitcher/state/swapSideAtom.d.ts.map +1 -1
- package/dist/components/widget/SwapModeSwitcher/state/swapSideAtom.js +5 -5
- package/dist/components/widget/SwapModeSwitcher/state/swapSideAtom.js.map +1 -1
- package/dist/components/widget/SwapModeSwitcher/state/swapSideFromPropsAtom.d.ts +5 -0
- package/dist/components/widget/SwapModeSwitcher/state/swapSideFromPropsAtom.d.ts.map +1 -0
- package/dist/components/widget/SwapModeSwitcher/state/swapSideFromPropsAtom.js +6 -0
- package/dist/components/widget/SwapModeSwitcher/state/swapSideFromPropsAtom.js.map +1 -0
- package/dist/core/inputs/state/common.d.ts +1 -1
- package/dist/core/inputs/state/common.d.ts.map +1 -1
- package/dist/core/inputs/state/common.js +6 -6
- package/dist/core/inputs/state/common.js.map +1 -1
- package/dist/core/inputs/state/setTokenByAddressAtom.d.ts.map +1 -1
- package/dist/core/inputs/state/setTokenByAddressAtom.js +16 -17
- package/dist/core/inputs/state/setTokenByAddressAtom.js.map +1 -1
- package/dist/core/inputs/state/types.d.ts +3 -3
- package/dist/core/inputs/state/types.d.ts.map +1 -1
- package/dist/core/limit/state/deadlineAtom.d.ts +5 -1
- package/dist/core/limit/state/deadlineAtom.d.ts.map +1 -1
- package/dist/core/limit/state/deadlineAtom.js +26 -3
- package/dist/core/limit/state/deadlineAtom.js.map +1 -1
- package/dist/core/limit/state/utils.d.ts +1 -1
- package/dist/core/limit/state/utils.d.ts.map +1 -1
- package/dist/core/limit/state/utils.js +3 -2
- package/dist/core/limit/state/utils.js.map +1 -1
- package/dist/core/otc/state/deadlineAtom.d.ts +5 -1
- package/dist/core/otc/state/deadlineAtom.d.ts.map +1 -1
- package/dist/core/otc/state/deadlineAtom.js +26 -3
- package/dist/core/otc/state/deadlineAtom.js.map +1 -1
- package/dist/core/state/currentSwapInputAtom.d.ts +1 -1
- package/dist/core/state/currentSwapInputAtom.d.ts.map +1 -1
- package/dist/core/state/currentSwapInputAtom.js +5 -1
- package/dist/core/state/currentSwapInputAtom.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/widget/OrderExpiryInput/index.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/widget/OrderExpiryInput/index.tsx"],"names":[],"mappings":"AAsIA,KAAK,qBAAqB,GAAG;IAC3B,IAAI,EAAE,OAAO,GAAG,KAAK,CAAC;CACvB,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,OAAO,qBAAqB,4CAW5D,CAAC"}
|
|
@@ -111,7 +111,7 @@ const TimeUnitInput = (t0) => {
|
|
|
111
111
|
return prev;
|
|
112
112
|
}
|
|
113
113
|
return currentTimeUnitObject;
|
|
114
|
-
});
|
|
114
|
+
}, true);
|
|
115
115
|
};
|
|
116
116
|
$[0] = setTimeUnitObject;
|
|
117
117
|
$[1] = t1;
|
|
@@ -121,10 +121,11 @@ const TimeUnitInput = (t0) => {
|
|
|
121
121
|
const onTimeUnitChange = t1;
|
|
122
122
|
let t2;
|
|
123
123
|
if ($[2] !== isLimit || $[3] !== setTimeUnitObject) {
|
|
124
|
-
t2 = (values) => {
|
|
124
|
+
t2 = (values, sourceInfo) => {
|
|
125
|
+
const resetDeadlineFromProps = sourceInfo.source === "event";
|
|
125
126
|
const floatValue = values.floatValue;
|
|
126
127
|
if (floatValue === neverTimeUnit.value && !isLimit) {
|
|
127
|
-
setTimeUnitObject(neverTimeUnit);
|
|
128
|
+
setTimeUnitObject(neverTimeUnit, resetDeadlineFromProps);
|
|
128
129
|
} else {
|
|
129
130
|
if (floatValue !== void 0) {
|
|
130
131
|
setTimeUnitObject((prev_0) => {
|
|
@@ -135,9 +136,9 @@ const TimeUnitInput = (t0) => {
|
|
|
135
136
|
...prev_0,
|
|
136
137
|
value: floatValue
|
|
137
138
|
};
|
|
138
|
-
});
|
|
139
|
+
}, resetDeadlineFromProps);
|
|
139
140
|
} else {
|
|
140
|
-
setTimeUnitObject(minTimeUnit);
|
|
141
|
+
setTimeUnitObject(minTimeUnit, resetDeadlineFromProps);
|
|
141
142
|
}
|
|
142
143
|
}
|
|
143
144
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/components/widget/OrderExpiryInput/index.tsx"],"sourcesContent":["import { UnstyledInput } from \"@/components/ui/input\";\nimport { NumericFormat, type NumericFormatProps } from \"react-number-format\";\nimport { DropdownWithItems } from \"../Dropdown/DropdownWithItems\";\nimport type { DropdownItem, DropdownWithItemsProps } from \"../Dropdown/types\";\nimport { ChevronIcon } from \"../Icon/ChevronIcon\";\nimport { useAtom } from \"jotai\";\nimport {\n timeUnitAtom as limitTimeUnitAtom,\n type TimeUnit,\n type TimeUnitObject,\n} from \"@/core/limit/state/deadlineAtom\";\nimport { timeUnitAtom as otcTimeUnitAtom } from \"@/core/otc/state/deadlineAtom\";\nimport {\n minTimeUnit,\n neverTimeUnit,\n timeUnits,\n} from \"@/core/limit/state/constants\";\n\ntype TimeUnitsDropdownProps = {\n expiryTimeValue: number;\n selectedTimeUnit: TimeUnit;\n onSelect: (timeUnit: TimeUnitObject) => void;\n classes?: DropdownWithItemsProps[\"classes\"];\n type: OrderExpiryInputProps[\"type\"];\n};\n\nconst TimeUnitsDropdown: React.FC<TimeUnitsDropdownProps> = ({\n expiryTimeValue,\n selectedTimeUnit,\n onSelect,\n classes,\n type,\n}) => {\n const isLimit = type === \"limit\";\n const specificTimeUnits = isLimit\n ? timeUnits.filter((item) => item.label !== \"never\")\n : timeUnits; // OTC can have 0 deadline\n\n const items = specificTimeUnits.map<DropdownItem>((item) => ({\n label: item.label,\n onSelect: () => {\n onSelect(item);\n },\n className: \"capitalize\",\n selected: item.label === selectedTimeUnit,\n }));\n\n const label =\n expiryTimeValue > 1 || selectedTimeUnit === neverTimeUnit.label\n ? selectedTimeUnit\n : selectedTimeUnit.slice(0, -1); // \"days\" -> \"day\"\n\n const menuTrigger = (\n <div className=\"flex justify-between items-center gap-1.5 text-contrast-3 dark:text-contrast-7 text-sm cursor-pointer\">\n <span className=\"capitalize\">{label}</span>\n <ChevronIcon width={12} height={12} className=\"pt-[2px]\" />\n </div>\n );\n\n return (\n <DropdownWithItems\n items={items}\n menuTrigger={menuTrigger}\n classes={classes}\n align=\"end\"\n />\n );\n};\n\nconst TimeUnitInput = ({ type }: OrderExpiryInputProps) => {\n const isLimit = type === \"limit\";\n const [timeUnitObject, setTimeUnitObject] = useAtom(\n isLimit ? limitTimeUnitAtom : otcTimeUnitAtom\n );\n\n const onTimeUnitChange = (currentTimeUnitObject: TimeUnitObject) => {\n setTimeUnitObject((prev) => {\n if (prev.label === currentTimeUnitObject.label) {\n return prev;\n }\n\n return currentTimeUnitObject;\n });\n };\n\n const onValueChange: NumericFormatProps[\"onValueChange\"] = (values) => {\n const floatValue = values.floatValue;\n\n if (floatValue === neverTimeUnit.value && !isLimit) {\n setTimeUnitObject(neverTimeUnit);\n } else if (floatValue !== undefined) {\n setTimeUnitObject((prev) => {\n if (prev.value === floatValue) return prev;\n return { ...prev, value: floatValue };\n });\n } else {\n setTimeUnitObject(minTimeUnit);\n }\n };\n\n return (\n <div className=\"flex justify-between items-center flex-1\">\n {timeUnitObject.label !== neverTimeUnit.label && (\n <NumericFormat\n className=\"min-w-0 w-full text-lg font-geist-mono text-contrast-3 dark:text-contrast-8\"\n placeholder=\"0\"\n value={timeUnitObject.value}\n onValueChange={onValueChange}\n decimalScale={0}\n allowNegative={false}\n allowLeadingZeros={false}\n customInput={UnstyledInput}\n thousandSeparator\n />\n )}\n <TimeUnitsDropdown\n selectedTimeUnit={timeUnitObject.label}\n onSelect={onTimeUnitChange}\n expiryTimeValue={timeUnitObject.value}\n classes={{\n trigger: \"w-full min-h-[28px]\",\n }}\n type={type}\n />\n </div>\n );\n};\n\ntype OrderExpiryInputProps = {\n type: \"limit\" | \"otc\";\n};\n\nexport const OrderExpiryInput = (props: OrderExpiryInputProps) => {\n return (\n <div className=\"flex flex-col gap-[8px] p-4 border-1 rounded-[12px] border-transparent transition-all focus-within:border-primary-azul-1 bg-contrast-8 dark:bg-contrast-2\">\n <div className=\"flex items-center justify-between text-xs text-contrast-3 dark:text-contrast-7\">\n <span>Order Expiry</span>\n </div>\n <div className=\"flex items-center justify-between gap-1.5\">\n <TimeUnitInput {...props} />\n </div>\n </div>\n );\n};\n"],"names":["TimeUnitsDropdown","t0","$","_c","expiryTimeValue","selectedTimeUnit","onSelect","classes","type","isLimit","t1","specificTimeUnits","timeUnits","filter","_temp","t2","item_0","label","item","className","selected","map","items","neverTimeUnit","slice","t3","t4","Symbol","for","t5","menuTrigger","t6","TimeUnitInput","timeUnitObject","setTimeUnitObject","useAtom","limitTimeUnitAtom","otcTimeUnitAtom","currentTimeUnitObject","prev","onTimeUnitChange","values","floatValue","value","undefined","prev_0","minTimeUnit","onValueChange","UnstyledInput","trigger","OrderExpiryInput","props"],"mappings":";;;;;;;;;;;AA0BA,MAAMA,oBAAsDC,CAAAA,EAAAA,KAAA;AAAA,EAAA,MAAAC,CAAAA,GAAAC,cAAA,EAAA,CAAA;AAAC,EAAA,MAAA;AAAA,IAAAC,eAAAA;AAAAA,IAAAC,gBAAAA;AAAAA,IAAAC,QAAAA;AAAAA,IAAAC,OAAAA;AAAAA,IAAAC;AAAAA,GAAA,GAAAP,EAAAA;AAO3D,EAAA,MAAAQ,UAAgBD,IAAAA,KAAS,OAAA;AAAQ,EAAA,IAAAE,EAAAA;AAAA,EAAA,IAAAR,CAAAA,CAAA,CAAA,CAAA,KAAAO,OAAAA,IAAAP,CAAAA,QAAAI,QAAAA,IAAAJ,CAAAA,CAAA,CAAA,CAAA,KAAAG,gBAAAA,EAAA;AACjC,IAAA,MAAAM,iBAAAA,GAA0BF,OAAAA,GACtBG,SAAAA,CAASC,MAAAA,CAAQC,KACT,CAAA,GAFcF,SAAAA;AAEZ,IAAA,IAAAG,GAAAA;AAAA,IAAA,IAAAb,EAAA,CAAA,CAAA,KAAAI,YAAAJ,CAAAA,QAAAG,gBAAAA,EAAA;AAEoCU,MAAAA,MAAAC,CAAAA,MAAAA,MAAW;AAAA,QAAAC,OACpDC,MAAAA,CAAID,KAAAA;AAAAA,QAAMX,UACPA,MAAA;AACRA,UAAAA,QAAAA,CAASY,MAAI,CAAA;AAAA,QAAC,CAAA;AAAA,QACfC,SAAAA,EACU,YAAA;AAAA,QAAYC,QAAAA,EACbF,OAAID,KAAAA,KAAWZ;AAAAA,OAC3B,CAAA;AAAEH,MAAAA,CAAAA,MAAAI,QAAAA;AAAAJ,MAAAA,CAAAA,MAAAG,gBAAAA;AAAAH,MAAAA,CAAAA,MAAAa,GAAAA;AAAAA,IAAA,CAAA,MAAA;AAAAA,MAAAA,GAAAA,GAAAb,EAAA,CAAA,CAAA;AAAA,IAAA;AAPYQ,IAAAA,EAAAA,GAAAC,iBAAAA,CAAiBU,IAAmBN,GAOhD,CAAA;AAACb,IAAAA,CAAAA,MAAAO,OAAAA;AAAAP,IAAAA,CAAAA,MAAAI,QAAAA;AAAAJ,IAAAA,CAAAA,MAAAG,gBAAAA;AAAAH,IAAAA,CAAAA,MAAAQ,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAR,EAAA,CAAA,CAAA;AAAA,EAAA;AAPH,EAAA,MAAAoB,KAAAA,GAAcZ,EAAAA;AAOV,EAAA,IAAAK,EAAAA;AAAA,EAAA,IAAAb,EAAA,CAAA,CAAA,KAAAE,mBAAAF,CAAAA,QAAAG,gBAAAA,EAAA;AAGFU,IAAAA,EAAAA,GAAAX,eAAAA,GAAkB,KAAKC,gBAAAA,KAAqBkB,aAAAA,CAAaN,QAAzDZ,gBAAAA,GAEIA,gBAAAA,CAAgBmB,KAAAA,CAAO,CAAA,EAAG,EAAE,CAAA;AAACtB,IAAAA,CAAAA,MAAAE,eAAAA;AAAAF,IAAAA,CAAAA,MAAAG,gBAAAA;AAAAH,IAAAA,CAAAA,MAAAa,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAb,EAAA,CAAA,CAAA;AAAA,EAAA;AAHnC,EAAA,MAAAe,KAAAA,GACEF,EAAAA;AAEkC,EAAA,IAAAU,EAAAA;AAAA,EAAA,IAAAvB,CAAAA,SAAAe,KAAAA,EAAA;AAIhCQ,IAAAA,EAAAA,mBAAA,GAAA,CAAA,MAAA,EAAA,EAAgB,SAAA,EAAA,YAAA,EAAcR,QAAAA,EAAAA,KAAAA,EAAM,CAAA;AAAOf,IAAAA,CAAAA,OAAAe,KAAAA;AAAAf,IAAAA,CAAAA,OAAAuB,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAvB,EAAA,EAAA,CAAA;AAAA,EAAA;AAAA,EAAA,IAAAwB,EAAAA;AAAA,EAAA,IAAAxB,EAAA,EAAA,CAAA,KAAAyB,MAAAA,CAAAC,GAAAA,CAAA,2BAAA,CAAA,EAAA;AAC3CF,IAAAA,EAAAA,uBAAC,WAAA,EAAA,EAAmB,KAAA,MAAY,MAAA,MAAc,WAAA,UAAA,EAAU,CAAA;AAAGxB,IAAAA,CAAAA,OAAAwB,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAxB,EAAA,EAAA,CAAA;AAAA,EAAA;AAAA,EAAA,IAAA2B,EAAAA;AAAA,EAAA,IAAA3B,CAAAA,SAAAuB,EAAAA,EAAA;AAF7DI,IAAAA,EAAAA,mBAAA,IAAA,CAAA,KAAA,EAAA,EAAe,SAAA,EAAA,uGAAA,EACbJ,QAAAA,EAAAA;AAAAA,MAAAA,EAAAA;AAAAA,MACAC;AAAAA,KAAAA,EACF,CAAA;AAAMxB,IAAAA,CAAAA,OAAAuB,EAAAA;AAAAvB,IAAAA,CAAAA,OAAA2B,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAA3B,EAAA,EAAA,CAAA;AAAA,EAAA;AAJR,EAAA,MAAA4B,WAAAA,GACED,EAAAA;AAIA,EAAA,IAAAE,EAAAA;AAAA,EAAA,IAAA7B,CAAAA,CAAA,EAAA,CAAA,KAAAK,OAAAA,IAAAL,CAAAA,SAAAoB,KAAAA,IAAApB,CAAAA,CAAA,EAAA,CAAA,KAAA4B,WAAAA,EAAA;AAGAC,IAAAA,EAAAA,uBAAC,iBAAA,EAAA,EACQT,KAAAA,EACMQ,WAAAA,EACJvB,OAAAA,EACH,OAAA,KAAA,EAAK,CAAA;AACXL,IAAAA,CAAAA,OAAAK,OAAAA;AAAAL,IAAAA,CAAAA,OAAAoB,KAAAA;AAAApB,IAAAA,CAAAA,OAAA4B,WAAAA;AAAA5B,IAAAA,CAAAA,OAAA6B,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAA7B,EAAA,EAAA,CAAA;AAAA,EAAA;AAAA,EAAA,OALF6B,EAAAA;AAKE,CAAA;AAIN,MAAMC,gBAAgB/B,CAAAA,EAAAA,KAAA;AAAA,EAAA,MAAAC,CAAAA,GAAAC,cAAA,EAAA,CAAA;AAAC,EAAA,MAAA;AAAA,IAAAK;AAAAA,GAAA,GAAAP,EAAAA;AACrB,EAAA,MAAAQ,UAAgBD,IAAAA,KAAS,OAAA;AACzB,EAAA,MAAA,CAAAyB,cAAAA,EAAAC,iBAAA,IAA4CC,OAAAA,CAC1C1B,OAAAA,GAAA2B,eAAAC,cACF,CAAA;AAAE,EAAA,IAAA3B,EAAAA;AAAA,EAAA,IAAAR,CAAAA,QAAAgC,iBAAAA,EAAA;AAEuBxB,IAAAA,EAAAA,GAAA4B,CAAAA,qBAAAA,KAAA;AACvBJ,MAAAA,iBAAAA,CAAkBK,CAAAA,IAAAA,KAAA;AAChB,QAAA,IAAIA,IAAAA,CAAItB,KAAAA,KAAWqB,qBAAAA,CAAqBrB,KAAAA,EAAM;AAAA,UAAA,OACrCsB,IAAAA;AAAAA,QAAI;AACZ,QAAA,OAEMD,qBAAAA;AAAAA,MAAqB,CAC7B,CAAA;AAAA,IAAC,CAAA;AACHpC,IAAAA,CAAAA,MAAAgC,iBAAAA;AAAAhC,IAAAA,CAAAA,MAAAQ,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAR,EAAA,CAAA,CAAA;AAAA,EAAA;AARD,EAAA,MAAAsC,gBAAAA,GAAyB9B,EAAAA;AAQvB,EAAA,IAAAK,EAAAA;AAAA,EAAA,IAAAb,EAAA,CAAA,CAAA,KAAAO,WAAAP,CAAAA,QAAAgC,iBAAAA,EAAA;AAEyDnB,IAAAA,EAAAA,GAAA0B,CAAAA,MAAAA,KAAA;AACzD,MAAA,MAAAC,aAAmBD,MAAAA,CAAMC,UAAAA;AAEzB,MAAA,IAAIA,UAAAA,KAAenB,aAAAA,CAAaoB,KAAAA,IAA5B,CAAuClC,OAAAA,EAAO;AAChDyB,QAAAA,iBAAAA,CAAkBX,aAAa,CAAA;AAAA,MAAC,CAAA,MAAA;AAC3B,QAAA,IAAImB,eAAeE,MAAAA,EAAS;AACjCV,UAAAA,iBAAAA,CAAkBW,CAAAA,MAAAA,KAAA;AAChB,YAAA,IAAIN,MAAAA,CAAII,UAAWD,UAAAA,EAAU;AAAA,cAAA,OAASH,MAAAA;AAAAA,YAAI;AAAC,YAAA,OACpC;AAAA,cAAA,GAAKA,MAAAA;AAAAA,cAAII,KAAAA,EAASD;AAAAA,aAAW;AAAA,UAAC,CACtC,CAAA;AAAA,QAAC,CAAA,MAAA;AAEFR,UAAAA,iBAAAA,CAAkBY,WAAW,CAAA;AAAA,QAAC;AAAA,MAC/B;AAAA,IAAA,CAAA;AACF5C,IAAAA,CAAAA,MAAAO,OAAAA;AAAAP,IAAAA,CAAAA,MAAAgC,iBAAAA;AAAAhC,IAAAA,CAAAA,MAAAa,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAb,EAAA,CAAA,CAAA;AAAA,EAAA;AAbD,EAAA,MAAA6C,aAAAA,GAA2DhC,EAAAA;AAazD,EAAA,IAAAU,EAAAA;AAAA,EAAA,IAAAvB,CAAAA,CAAA,CAAA,CAAA,KAAA6C,aAAAA,IAAA7C,CAAAA,CAAA,CAAA,CAAA,KAAA+B,cAAAA,CAAAhB,KAAAA,IAAAf,CAAAA,CAAA,CAAA,CAAA,KAAA+B,eAAAU,KAAAA,EAAA;AAIGlB,IAAAA,EAAAA,GAAAQ,cAAAA,CAAchB,UAAWM,aAAAA,CAAaN,KAAAA,wBACpC,aAAA,EAAA,EACW,SAAA,EAAA,6EAAA,EACE,WAAA,EAAA,GAAA,EACL,KAAA,EAAAgB,eAAcU,KAAAA,EACNI,aAAAA,EACD,YAAA,EAAA,CAAA,EACC,aAAA,EAAA,KAAA,EACI,mBAAA,KAAA,EACNC,WAAAA,EAAAA,aAAAA,EACb,iBAAA,EAAA,IAAA,EAAiB,CAAA;AAEpB9C,IAAAA,CAAAA,MAAA6C,aAAAA;AAAA7C,IAAAA,CAAAA,CAAA,CAAA,IAAA+B,cAAAA,CAAAhB,KAAAA;AAAAf,IAAAA,CAAAA,CAAA,CAAA,IAAA+B,cAAAA,CAAAU,KAAAA;AAAAzC,IAAAA,CAAAA,MAAAuB,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAvB,EAAA,CAAA,CAAA;AAAA,EAAA;AAAA,EAAA,IAAAwB,EAAAA;AAAA,EAAA,IAAAxB,EAAA,CAAA,CAAA,KAAAyB,MAAAA,CAAAC,GAAAA,CAAA,2BAAA,CAAA,EAAA;AAKUF,IAAAA,EAAAA,GAAA;AAAA,MAAAuB,OAAAA,EACE;AAAA,KACX;AAAC/C,IAAAA,CAAAA,MAAAwB,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAxB,EAAA,CAAA,CAAA;AAAA,EAAA;AAAA,EAAA,IAAA2B,EAAAA;AAAA,EAAA,IAAA3B,EAAA,EAAA,CAAA,KAAAsC,gBAAAA,IAAAtC,CAAAA,CAAA,EAAA,CAAA,KAAA+B,cAAAA,CAAAhB,KAAAA,IAAAf,CAAAA,SAAA+B,cAAAA,CAAAU,SAAAzC,CAAAA,SAAAM,IAAAA,EAAA;AANHqB,IAAAA,EAAAA,mBAAA,GAAA,CAAC,iBAAA,EAAA,EACmB,gBAAA,EAAAI,cAAAA,CAAchB,KAAAA,EACtBuB,QAAAA,EAAAA,gBAAAA,EACO,eAAA,EAAAP,cAAAA,CAAcU,KAAAA,EACtB,OAAA,EAAAjB,EAAAA,EAGHlB,IAAAA,EAAI,CAAA;AACVN,IAAAA,CAAAA,OAAAsC,gBAAAA;AAAAtC,IAAAA,CAAAA,CAAA,EAAA,IAAA+B,cAAAA,CAAAhB,KAAAA;AAAAf,IAAAA,CAAAA,CAAA,EAAA,IAAA+B,cAAAA,CAAAU,KAAAA;AAAAzC,IAAAA,CAAAA,OAAAM,IAAAA;AAAAN,IAAAA,CAAAA,OAAA2B,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAA3B,EAAA,EAAA,CAAA;AAAA,EAAA;AAAA,EAAA,IAAA6B,EAAAA;AAAA,EAAA,IAAA7B,EAAA,EAAA,CAAA,KAAAuB,MAAAvB,CAAAA,SAAA2B,EAAAA,EAAA;AAtBJE,IAAAA,EAAAA,mBAAA,IAAA,CAAA,KAAA,EAAA,EAAe,SAAA,EAAA,0CAAA,EACZN,QAAAA,EAAAA;AAAAA,MAAAA,EAAAA;AAAAA,MAaDI;AAAAA,KAAAA,EASF,CAAA;AAAM3B,IAAAA,CAAAA,OAAAuB,EAAAA;AAAAvB,IAAAA,CAAAA,OAAA2B,EAAAA;AAAA3B,IAAAA,CAAAA,OAAA6B,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAA7B,EAAA,EAAA,CAAA;AAAA,EAAA;AAAA,EAAA,OAvBN6B,EAAAA;AAuBM,CAAA;AAQH,MAAMmB,mBAAmBC,CAAAA,KAAAA,KAAA;AAAA,EAAA,MAAAjD,CAAAA,GAAAC,cAAA,CAAA,CAAA;AAAA,EAAA,IAAAF,EAAAA;AAAA,EAAA,IAAAC,EAAA,CAAA,CAAA,KAAAyB,MAAAA,CAAAC,GAAAA,CAAA,2BAAA,CAAA,EAAA;AAG1B3B,IAAAA,EAAAA,uBAAA,KAAA,EAAA,EAAe,SAAA,EAAA,kFACb,QAAA,kBAAA,GAAA,CAAA,MAAA,EAAA,EAAM,0BAAY,CAAA,EACpB,CAAA;AAAMC,IAAAA,CAAAA,MAAAD,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAC,EAAA,CAAA,CAAA;AAAA,EAAA;AAAA,EAAA,IAAAQ,EAAAA;AAAA,EAAA,IAAAR,CAAAA,QAAAiD,KAAAA,EAAA;AAHRzC,IAAAA,EAAAA,mBAAA,IAAA,CAAA,KAAA,EAAA,EAAe,SAAA,EAAA,2JAAA,EACbT,QAAAA,EAAAA;AAAAA,MAAAA,EAAAA;AAAAA,sBAGA,GAAA,CAAA,SAAe,SAAA,EAAA,2CAAA,EACb,8BAAC,aAAA,EAAA,EAAa,GAAKkD,UACrB;AAAA,KAAA,EACF,CAAA;AAAMjD,IAAAA,CAAAA,MAAAiD,KAAAA;AAAAjD,IAAAA,CAAAA,MAAAQ,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAR,EAAA,CAAA,CAAA;AAAA,EAAA;AAAA,EAAA,OAPNQ,EAAAA;AAOM;AAnHkD,SAAAI,MAAAI,IAAAA,EAAA;AAAA,EAAA,OAS3BA,KAAID,KAAAA,KAAW,OAAA;AAAO;;;;"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/components/widget/OrderExpiryInput/index.tsx"],"sourcesContent":["import { UnstyledInput } from \"@/components/ui/input\";\nimport { NumericFormat, type NumericFormatProps } from \"react-number-format\";\nimport { DropdownWithItems } from \"../Dropdown/DropdownWithItems\";\nimport type { DropdownItem, DropdownWithItemsProps } from \"../Dropdown/types\";\nimport { ChevronIcon } from \"../Icon/ChevronIcon\";\nimport { useAtom } from \"jotai\";\nimport {\n timeUnitAtom as limitTimeUnitAtom,\n type TimeUnit,\n type TimeUnitObject,\n} from \"@/core/limit/state/deadlineAtom\";\nimport { timeUnitAtom as otcTimeUnitAtom } from \"@/core/otc/state/deadlineAtom\";\nimport {\n minTimeUnit,\n neverTimeUnit,\n timeUnits,\n} from \"@/core/limit/state/constants\";\n\ntype TimeUnitsDropdownProps = {\n expiryTimeValue: number;\n selectedTimeUnit: TimeUnit;\n onSelect: (timeUnit: TimeUnitObject) => void;\n classes?: DropdownWithItemsProps[\"classes\"];\n type: OrderExpiryInputProps[\"type\"];\n};\n\nconst TimeUnitsDropdown: React.FC<TimeUnitsDropdownProps> = ({\n expiryTimeValue,\n selectedTimeUnit,\n onSelect,\n classes,\n type,\n}) => {\n const isLimit = type === \"limit\";\n const specificTimeUnits = isLimit\n ? timeUnits.filter((item) => item.label !== \"never\")\n : timeUnits; // OTC can have 0 deadline\n\n const items = specificTimeUnits.map<DropdownItem>((item) => ({\n label: item.label,\n onSelect: () => {\n onSelect(item);\n },\n className: \"capitalize\",\n selected: item.label === selectedTimeUnit,\n }));\n\n const label =\n expiryTimeValue > 1 || selectedTimeUnit === neverTimeUnit.label\n ? selectedTimeUnit\n : selectedTimeUnit.slice(0, -1); // \"days\" -> \"day\"\n\n const menuTrigger = (\n <div className=\"flex justify-between items-center gap-1.5 text-contrast-3 dark:text-contrast-7 text-sm cursor-pointer\">\n <span className=\"capitalize\">{label}</span>\n <ChevronIcon width={12} height={12} className=\"pt-[2px]\" />\n </div>\n );\n\n return (\n <DropdownWithItems\n items={items}\n menuTrigger={menuTrigger}\n classes={classes}\n align=\"end\"\n />\n );\n};\n\nconst TimeUnitInput = ({ type }: OrderExpiryInputProps) => {\n const isLimit = type === \"limit\";\n const [timeUnitObject, setTimeUnitObject] = useAtom(\n isLimit ? limitTimeUnitAtom : otcTimeUnitAtom\n );\n\n const onTimeUnitChange = (currentTimeUnitObject: TimeUnitObject) => {\n setTimeUnitObject((prev) => {\n if (prev.label === currentTimeUnitObject.label) {\n return prev;\n }\n\n return currentTimeUnitObject;\n }, true);\n };\n\n const onValueChange: NumericFormatProps[\"onValueChange\"] = (\n values,\n sourceInfo\n ) => {\n // source=\"event\" when changed by user input\n // source=\"prop\" when changed by prop update\n const resetDeadlineFromProps = sourceInfo.source === \"event\";\n const floatValue = values.floatValue;\n\n if (floatValue === neverTimeUnit.value && !isLimit) {\n setTimeUnitObject(neverTimeUnit, resetDeadlineFromProps);\n } else if (floatValue !== undefined) {\n setTimeUnitObject((prev) => {\n if (prev.value === floatValue) return prev;\n return { ...prev, value: floatValue };\n }, resetDeadlineFromProps);\n } else {\n setTimeUnitObject(minTimeUnit, resetDeadlineFromProps);\n }\n };\n\n return (\n <div className=\"flex justify-between items-center flex-1\">\n {timeUnitObject.label !== neverTimeUnit.label && (\n <NumericFormat\n className=\"min-w-0 w-full text-lg font-geist-mono text-contrast-3 dark:text-contrast-8\"\n placeholder=\"0\"\n value={timeUnitObject.value}\n onValueChange={onValueChange}\n decimalScale={0}\n allowNegative={false}\n allowLeadingZeros={false}\n customInput={UnstyledInput}\n thousandSeparator\n />\n )}\n <TimeUnitsDropdown\n selectedTimeUnit={timeUnitObject.label}\n onSelect={onTimeUnitChange}\n expiryTimeValue={timeUnitObject.value}\n classes={{\n trigger: \"w-full min-h-[28px]\",\n }}\n type={type}\n />\n </div>\n );\n};\n\ntype OrderExpiryInputProps = {\n type: \"limit\" | \"otc\";\n};\n\nexport const OrderExpiryInput = (props: OrderExpiryInputProps) => {\n return (\n <div className=\"flex flex-col gap-[8px] p-4 border-1 rounded-[12px] border-transparent transition-all focus-within:border-primary-azul-1 bg-contrast-8 dark:bg-contrast-2\">\n <div className=\"flex items-center justify-between text-xs text-contrast-3 dark:text-contrast-7\">\n <span>Order Expiry</span>\n </div>\n <div className=\"flex items-center justify-between gap-1.5\">\n <TimeUnitInput {...props} />\n </div>\n </div>\n );\n};\n"],"names":["TimeUnitsDropdown","t0","$","_c","expiryTimeValue","selectedTimeUnit","onSelect","classes","type","isLimit","t1","specificTimeUnits","timeUnits","filter","_temp","t2","item_0","label","item","className","selected","map","items","neverTimeUnit","slice","t3","t4","Symbol","for","t5","menuTrigger","t6","TimeUnitInput","timeUnitObject","setTimeUnitObject","useAtom","limitTimeUnitAtom","otcTimeUnitAtom","currentTimeUnitObject","prev","onTimeUnitChange","values","sourceInfo","resetDeadlineFromProps","source","floatValue","value","undefined","prev_0","minTimeUnit","onValueChange","UnstyledInput","trigger","OrderExpiryInput","props"],"mappings":"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"}
|
|
@@ -1,7 +1,4 @@
|
|
|
1
1
|
import { SwapSideUnion } from '@velora-dex/sdk';
|
|
2
|
-
export declare const userSwapSideAtom: import('jotai').PrimitiveAtom<SwapSideUnion | undefined> & {
|
|
3
|
-
init: SwapSideUnion | undefined;
|
|
4
|
-
};
|
|
5
2
|
export declare const swapSideAtom: import('jotai').Atom<SwapSideUnion>;
|
|
6
3
|
export declare const useSwapSide: () => SwapSideUnion;
|
|
7
4
|
//# sourceMappingURL=swapSideAtom.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"swapSideAtom.d.ts","sourceRoot":"","sources":["../../../../../src/components/widget/SwapModeSwitcher/state/swapSideAtom.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"swapSideAtom.d.ts","sourceRoot":"","sources":["../../../../../src/components/widget/SwapModeSwitcher/state/swapSideAtom.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAIrD,eAAO,MAAM,YAAY,qCAsBvB,CAAC;AAEH,eAAO,MAAM,WAAW,qBAEvB,CAAC"}
|
|
@@ -2,8 +2,8 @@ import { swapTokenToAtom } from '../../../../core/inputs/state/selectedTokenAtom
|
|
|
2
2
|
import { currentSwapInputAtom } from '../../../../core/state/currentSwapInputAtom.js';
|
|
3
3
|
import { tradeModeAtom } from '../../../../core/state/tradeModeAtom.js';
|
|
4
4
|
import { atom, useAtomValue } from 'jotai';
|
|
5
|
+
import { swapSideFromPropsAtom } from './swapSideFromPropsAtom.js';
|
|
5
6
|
|
|
6
|
-
const userSwapSideAtom = atom();
|
|
7
7
|
const swapSideAtom = atom((get) => {
|
|
8
8
|
const tradeMode = get(tradeModeAtom);
|
|
9
9
|
if (tradeMode !== "swap") {
|
|
@@ -13,9 +13,9 @@ const swapSideAtom = atom((get) => {
|
|
|
13
13
|
if (!tokenTo) {
|
|
14
14
|
return "SELL";
|
|
15
15
|
}
|
|
16
|
-
const
|
|
17
|
-
if (
|
|
18
|
-
return
|
|
16
|
+
const swapSideFromProps = get(swapSideFromPropsAtom);
|
|
17
|
+
if (swapSideFromProps) {
|
|
18
|
+
return swapSideFromProps;
|
|
19
19
|
}
|
|
20
20
|
const currentSwapInput = get(currentSwapInputAtom);
|
|
21
21
|
return currentSwapInput === "from" ? "SELL" : "BUY";
|
|
@@ -24,5 +24,5 @@ const useSwapSide = () => {
|
|
|
24
24
|
return useAtomValue(swapSideAtom);
|
|
25
25
|
};
|
|
26
26
|
|
|
27
|
-
export { swapSideAtom, useSwapSide
|
|
27
|
+
export { swapSideAtom, useSwapSide };
|
|
28
28
|
//# sourceMappingURL=swapSideAtom.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"swapSideAtom.js","sources":["../../../../../src/components/widget/SwapModeSwitcher/state/swapSideAtom.ts"],"sourcesContent":["import { swapTokenToAtom } from \"@/core/inputs/state/selectedTokenAtom\";\nimport { currentSwapInputAtom } from \"@/core/state/currentSwapInputAtom\";\nimport { tradeModeAtom } from \"@/core/state/tradeModeAtom\";\nimport type { SwapSideUnion } from \"@velora-dex/sdk\";\nimport { atom, useAtomValue } from \"jotai\";\
|
|
1
|
+
{"version":3,"file":"swapSideAtom.js","sources":["../../../../../src/components/widget/SwapModeSwitcher/state/swapSideAtom.ts"],"sourcesContent":["import { swapTokenToAtom } from \"@/core/inputs/state/selectedTokenAtom\";\nimport { currentSwapInputAtom } from \"@/core/state/currentSwapInputAtom\";\nimport { tradeModeAtom } from \"@/core/state/tradeModeAtom\";\nimport type { SwapSideUnion } from \"@velora-dex/sdk\";\nimport { atom, useAtomValue } from \"jotai\";\nimport { swapSideFromPropsAtom } from \"./swapSideFromPropsAtom\";\n\nexport const swapSideAtom = atom<SwapSideUnion>((get) => {\n const tradeMode = get(tradeModeAtom);\n\n if (tradeMode !== \"swap\") {\n return \"SELL\";\n }\n\n const tokenTo = get(swapTokenToAtom);\n\n if (!tokenTo) {\n return \"SELL\";\n }\n\n const swapSideFromProps = get(swapSideFromPropsAtom);\n\n if (swapSideFromProps) {\n return swapSideFromProps;\n }\n\n const currentSwapInput = get(currentSwapInputAtom);\n\n return currentSwapInput === \"from\" ? \"SELL\" : \"BUY\";\n});\n\nexport const useSwapSide = () => {\n return useAtomValue(swapSideAtom);\n};\n"],"names":["swapSideAtom","atom","get","tradeMode","tradeModeAtom","tokenTo","swapTokenToAtom","swapSideFromProps","swapSideFromPropsAtom","currentSwapInput","currentSwapInputAtom","useSwapSide","useAtomValue"],"mappings":";;;;;;AAOO,MAAMA,YAAAA,GAAeC,KAAqBC,CAAAA,GAAAA,KAAQ;AACvD,EAAA,MAAMC,SAAAA,GAAYD,IAAIE,aAAa,CAAA;AAEnC,EAAA,IAAID,cAAc,MAAA,EAAQ;AACxB,IAAA,OAAO,MAAA;AAAA,EACT;AAEA,EAAA,MAAME,OAAAA,GAAUH,IAAII,eAAe,CAAA;AAEnC,EAAA,IAAI,CAACD,OAAAA,EAAS;AACZ,IAAA,OAAO,MAAA;AAAA,EACT;AAEA,EAAA,MAAME,iBAAAA,GAAoBL,IAAIM,qBAAqB,CAAA;AAEnD,EAAA,IAAID,iBAAAA,EAAmB;AACrB,IAAA,OAAOA,iBAAAA;AAAAA,EACT;AAEA,EAAA,MAAME,gBAAAA,GAAmBP,IAAIQ,oBAAoB,CAAA;AAEjD,EAAA,OAAOD,gBAAAA,KAAqB,SAAS,MAAA,GAAS,KAAA;AAChD,CAAC;AAEM,MAAME,cAAcA,MAAA;AAAA,EAAA,OAClBC,aAAaZ,YAAY,CAAA;AAAC;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"swapSideFromPropsAtom.d.ts","sourceRoot":"","sources":["../../../../../src/components/widget/SwapModeSwitcher/state/swapSideFromPropsAtom.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGrD,eAAO,MAAM,qBAAqB;;CAAwB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"swapSideFromPropsAtom.js","sources":["../../../../../src/components/widget/SwapModeSwitcher/state/swapSideFromPropsAtom.ts"],"sourcesContent":["import type { SwapSideUnion } from \"@velora-dex/sdk\";\nimport { atom } from \"jotai\";\n\nexport const swapSideFromPropsAtom = atom<SwapSideUnion>();"],"names":["swapSideFromPropsAtom","atom"],"mappings":";;AAGO,MAAMA,wBAAwBC,IAAAA;;;;"}
|
|
@@ -19,7 +19,7 @@ export declare const tradeModeToPriceRateAmountAtom: Record<"limit" | "otc", {
|
|
|
19
19
|
read: Atom<string>;
|
|
20
20
|
write: Pick<typeof setLimitPriceAmountAtomFromProps, "write"> & Pick<PrimitiveAtom<string | null>, "read">;
|
|
21
21
|
}>;
|
|
22
|
-
export declare const
|
|
22
|
+
export declare const tradeModeToDeadlineFromPropsAtom: Record<"limit" | "otc", typeof limitDeadline.deadlineFromPropsAtom>;
|
|
23
23
|
export declare const tradeModeToPayAmountWeiAtom: Record<TradeMode, typeof payInputAmountWeiAtom>;
|
|
24
24
|
export declare const tradeModeToTokenAtoms: Record<TradeMode, {
|
|
25
25
|
tokenFromAtom: typeof swapTokenFromAtom;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../../src/core/inputs/state/common.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EAEtB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAWzE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,sBAAsB,EACvB,MAAM,mBAAmB,CAAC;AAa3B,OAAO,EAAgB,KAAK,IAAI,EAAE,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;AASpE,OAAO,EAEL,qBAAqB,EACrB,yBAAyB,EACzB,gCAAgC,EACjC,MAAM,0CAA0C,CAAC;AAMlD,OAAO,KAAK,aAAa,MAAM,iCAAiC,CAAC;AAGjE,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,gBAAgB,QAInE;AAED,eAAO,MAAM,4BAA4B,EAAE,MAAM,CAC/C,SAAS,EACT;IACE,IAAI,EAAE,IAAI,CAAC,OAAO,kBAAkB,EAAE,MAAM,CAAC,CAAC;IAC9C,KAAK,EAAE,IAAI,CAAC,OAAO,qBAAqB,EAAE,OAAO,CAAC,GAChD,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;CAC9C,CAKF,CAAC;AAEF,eAAO,MAAM,gCAAgC,EAAE,MAAM,CACnD,SAAS,EACT;IACE,IAAI,EAAE,IAAI,CAAC,OAAO,sBAAsB,EAAE,MAAM,CAAC,CAAC;IAClD,KAAK,EAAE,IAAI,CAAC,OAAO,yBAAyB,EAAE,OAAO,CAAC,GACpD,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;CAC9C,CAQF,CAAC;AAEF,eAAO,MAAM,8BAA8B,EAAE,MAAM,CACjD,OAAO,GAAG,KAAK,EACf;IACE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACnB,KAAK,EAAE,IAAI,CAAC,OAAO,gCAAgC,EAAE,OAAO,CAAC,GAC3D,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;CAC9C,CAUF,CAAC;AAEF,eAAO,MAAM
|
|
1
|
+
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../../src/core/inputs/state/common.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EAEtB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAWzE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,sBAAsB,EACvB,MAAM,mBAAmB,CAAC;AAa3B,OAAO,EAAgB,KAAK,IAAI,EAAE,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;AASpE,OAAO,EAEL,qBAAqB,EACrB,yBAAyB,EACzB,gCAAgC,EACjC,MAAM,0CAA0C,CAAC;AAMlD,OAAO,KAAK,aAAa,MAAM,iCAAiC,CAAC;AAGjE,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,gBAAgB,QAInE;AAED,eAAO,MAAM,4BAA4B,EAAE,MAAM,CAC/C,SAAS,EACT;IACE,IAAI,EAAE,IAAI,CAAC,OAAO,kBAAkB,EAAE,MAAM,CAAC,CAAC;IAC9C,KAAK,EAAE,IAAI,CAAC,OAAO,qBAAqB,EAAE,OAAO,CAAC,GAChD,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;CAC9C,CAKF,CAAC;AAEF,eAAO,MAAM,gCAAgC,EAAE,MAAM,CACnD,SAAS,EACT;IACE,IAAI,EAAE,IAAI,CAAC,OAAO,sBAAsB,EAAE,MAAM,CAAC,CAAC;IAClD,KAAK,EAAE,IAAI,CAAC,OAAO,yBAAyB,EAAE,OAAO,CAAC,GACpD,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;CAC9C,CAQF,CAAC;AAEF,eAAO,MAAM,8BAA8B,EAAE,MAAM,CACjD,OAAO,GAAG,KAAK,EACf;IACE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACnB,KAAK,EAAE,IAAI,CAAC,OAAO,gCAAgC,EAAE,OAAO,CAAC,GAC3D,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;CAC9C,CAUF,CAAC;AAEF,eAAO,MAAM,gCAAgC,EAAE,MAAM,CACnD,OAAO,GAAG,KAAK,EACf,OAAO,aAAa,CAAC,qBAAqB,CAI3C,CAAC;AAEF,eAAO,MAAM,2BAA2B,EAAE,MAAM,CAC9C,SAAS,EACT,OAAO,qBAAqB,CAK7B,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,MAAM,CACxC,SAAS,EACT;IACE,aAAa,EAAE,OAAO,iBAAiB,CAAC;IACxC,WAAW,EAAE,OAAO,eAAe,CAAC;CACrC,CAcF,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,MAAM,CAC3C,SAAS,EACT;IACE,aAAa,EAAE,OAAO,uBAAuB,CAAC;IAC9C,WAAW,EAAE,OAAO,qBAAqB,CAAC;CAC3C,CAcF,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,WAAW,SAAS;;;CAKnD,CAAC"}
|
|
@@ -11,8 +11,8 @@ import { selectLimitTokenToAtom, selectLimitTokenFromAtom } from '../../limit/st
|
|
|
11
11
|
import { selectOtcTokenToAtom, selectOtcTokenFromAtom } from '../../otc/state/selectedTokenActionsAtom.js';
|
|
12
12
|
import { setLimitAmountAtomFromProps, setLimitReceiveAmountAtom, setLimitPriceAmountAtomFromProps } from '../../limit/state/limitInputActionsAtom.js';
|
|
13
13
|
import { setOtcAmountAtomFromProps, setOtcReceiveAmountAtom, setOtcPriceAmountAtomFromProps } from '../../otc/state/otcInputActionsAtom.js';
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
14
|
+
import { deadlineFromPropsAtom as deadlineFromPropsAtom$1 } from '../../limit/state/deadlineAtom.js';
|
|
15
|
+
import { deadlineFromPropsAtom } from '../../otc/state/deadlineAtom.js';
|
|
16
16
|
|
|
17
17
|
function syncTokensAfterChainSwitch(chainId) {
|
|
18
18
|
syncSwapTokensAfterChainSwitch(chainId);
|
|
@@ -57,9 +57,9 @@ const tradeModeToPriceRateAmountAtom = {
|
|
|
57
57
|
write: setOtcPriceAmountAtomFromProps
|
|
58
58
|
}
|
|
59
59
|
};
|
|
60
|
-
const
|
|
61
|
-
limit:
|
|
62
|
-
otc:
|
|
60
|
+
const tradeModeToDeadlineFromPropsAtom = {
|
|
61
|
+
limit: deadlineFromPropsAtom$1,
|
|
62
|
+
otc: deadlineFromPropsAtom
|
|
63
63
|
};
|
|
64
64
|
const tradeModeToPayAmountWeiAtom = {
|
|
65
65
|
swap: payInputAmountWeiAtom,
|
|
@@ -117,5 +117,5 @@ const useWidgetTokens = (tradeMode) => {
|
|
|
117
117
|
return t0;
|
|
118
118
|
};
|
|
119
119
|
|
|
120
|
-
export { syncTokensAfterChainSwitch,
|
|
120
|
+
export { syncTokensAfterChainSwitch, tradeModeToDeadlineFromPropsAtom, tradeModeToPayAmountUnitAtom, tradeModeToPayAmountWeiAtom, tradeModeToPriceRateAmountAtom, tradeModeToReceiveAmountUnitAtom, tradeModeToSetTokenAtoms, tradeModeToTokenAtoms, useWidgetTokens };
|
|
121
121
|
//# sourceMappingURL=common.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.js","sources":["../../../../src/core/inputs/state/common.ts"],"sourcesContent":["import {\n selectSwapTokenFromAtom,\n selectSwapTokenToAtom,\n syncSwapTokensAfterChainSwitch,\n} from \"./selectedTokenActionsAtom\";\nimport { swapTokenFromAtom, swapTokenToAtom } from \"./selectedTokenAtom\";\nimport {\n limitTokenFromAtom,\n limitTokenToAtom,\n syncLimitTokensAfterChainSwitch,\n} from \"@/core/limit/state/selectedTokenAtom\";\nimport {\n otcTokenFromAtom,\n otcTokenToAtom,\n syncOtcTokensAfterChainSwitch,\n} from \"@/core/otc/state/selectedTokenAtom\";\nimport type { TradeMode } from \"@/core/state/tradeModeAtom\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport {\n payInputAmountAtom,\n payInputAmountWeiAtom,\n receiveInputAmountAtom,\n} from \"./inputAmountAtom\";\nimport {\n limitPayInputAmountAtom,\n limitPayInputAmountWeiAtom,\n limitPriceAmountAtom,\n limitReceiveInputAmountAtom,\n} from \"@/core/limit/state/limitInputAmountAtom\";\nimport {\n otcPayInputAmountAtom,\n otcPayInputAmountWeiAtom,\n otcPriceAmountAtom,\n otcReceiveInputAmountAtom,\n} from \"@/core/otc/state/otcInputAmountAtom\";\nimport { useAtomValue, type Atom, type PrimitiveAtom } from \"jotai\";\nimport {\n selectLimitTokenFromAtom,\n selectLimitTokenToAtom,\n} from \"@/core/limit/state/selectedTokenActionsAtom\";\nimport {\n selectOtcTokenFromAtom,\n selectOtcTokenToAtom,\n} from \"@/core/otc/state/selectedTokenActionsAtom\";\nimport {\n setLimitAmountAtomFromProps,\n setLimitPayAmountAtom,\n setLimitReceiveAmountAtom,\n setLimitPriceAmountAtomFromProps,\n} from \"@/core/limit/state/limitInputActionsAtom\";\nimport {\n setOtcAmountAtomFromProps,\n setOtcPriceAmountAtomFromProps,\n setOtcReceiveAmountAtom,\n} from \"@/core/otc/state/otcInputActionsAtom\";\nimport * as limitDeadline from \"@/core/limit/state/deadlineAtom\";\nimport * as otcDeadline from \"@/core/otc/state/deadlineAtom\";\n\nexport function syncTokensAfterChainSwitch(chainId: SupportedChainId) {\n syncSwapTokensAfterChainSwitch(chainId);\n syncLimitTokensAfterChainSwitch(chainId);\n syncOtcTokensAfterChainSwitch(chainId);\n}\n\nexport const tradeModeToPayAmountUnitAtom: Record<\n TradeMode,\n {\n read: Pick<typeof payInputAmountAtom, \"read\">;\n write: Pick<typeof setLimitPayAmountAtom, \"write\"> &\n Pick<PrimitiveAtom<string | null>, \"read\">;\n }\n> = {\n swap: { read: payInputAmountAtom, write: payInputAmountAtom },\n limit: { read: limitPayInputAmountAtom, write: setLimitAmountAtomFromProps },\n otc: { read: otcPayInputAmountAtom, write: setOtcAmountAtomFromProps },\n};\n\nexport const tradeModeToReceiveAmountUnitAtom: Record<\n TradeMode,\n {\n read: Pick<typeof receiveInputAmountAtom, \"read\">;\n write: Pick<typeof setLimitReceiveAmountAtom, \"write\"> &\n Pick<PrimitiveAtom<string | null>, \"read\">;\n }\n> = {\n swap: { read: receiveInputAmountAtom, write: receiveInputAmountAtom },\n limit: {\n read: limitReceiveInputAmountAtom,\n write: setLimitReceiveAmountAtom,\n },\n otc: { read: otcReceiveInputAmountAtom, write: setOtcReceiveAmountAtom },\n};\n\nexport const tradeModeToPriceRateAmountAtom: Record<\n \"limit\" | \"otc\",\n {\n read: Atom<string>;\n write: Pick<typeof setLimitPriceAmountAtomFromProps, \"write\"> &\n Pick<PrimitiveAtom<string | null>, \"read\">;\n }\n> = {\n limit: {\n read: limitPriceAmountAtom,\n write: setLimitPriceAmountAtomFromProps,\n },\n otc: {\n read: otcPriceAmountAtom,\n write: setOtcPriceAmountAtomFromProps,\n },\n};\n\nexport const
|
|
1
|
+
{"version":3,"file":"common.js","sources":["../../../../src/core/inputs/state/common.ts"],"sourcesContent":["import {\n selectSwapTokenFromAtom,\n selectSwapTokenToAtom,\n syncSwapTokensAfterChainSwitch,\n} from \"./selectedTokenActionsAtom\";\nimport { swapTokenFromAtom, swapTokenToAtom } from \"./selectedTokenAtom\";\nimport {\n limitTokenFromAtom,\n limitTokenToAtom,\n syncLimitTokensAfterChainSwitch,\n} from \"@/core/limit/state/selectedTokenAtom\";\nimport {\n otcTokenFromAtom,\n otcTokenToAtom,\n syncOtcTokensAfterChainSwitch,\n} from \"@/core/otc/state/selectedTokenAtom\";\nimport type { TradeMode } from \"@/core/state/tradeModeAtom\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport {\n payInputAmountAtom,\n payInputAmountWeiAtom,\n receiveInputAmountAtom,\n} from \"./inputAmountAtom\";\nimport {\n limitPayInputAmountAtom,\n limitPayInputAmountWeiAtom,\n limitPriceAmountAtom,\n limitReceiveInputAmountAtom,\n} from \"@/core/limit/state/limitInputAmountAtom\";\nimport {\n otcPayInputAmountAtom,\n otcPayInputAmountWeiAtom,\n otcPriceAmountAtom,\n otcReceiveInputAmountAtom,\n} from \"@/core/otc/state/otcInputAmountAtom\";\nimport { useAtomValue, type Atom, type PrimitiveAtom } from \"jotai\";\nimport {\n selectLimitTokenFromAtom,\n selectLimitTokenToAtom,\n} from \"@/core/limit/state/selectedTokenActionsAtom\";\nimport {\n selectOtcTokenFromAtom,\n selectOtcTokenToAtom,\n} from \"@/core/otc/state/selectedTokenActionsAtom\";\nimport {\n setLimitAmountAtomFromProps,\n setLimitPayAmountAtom,\n setLimitReceiveAmountAtom,\n setLimitPriceAmountAtomFromProps,\n} from \"@/core/limit/state/limitInputActionsAtom\";\nimport {\n setOtcAmountAtomFromProps,\n setOtcPriceAmountAtomFromProps,\n setOtcReceiveAmountAtom,\n} from \"@/core/otc/state/otcInputActionsAtom\";\nimport * as limitDeadline from \"@/core/limit/state/deadlineAtom\";\nimport * as otcDeadline from \"@/core/otc/state/deadlineAtom\";\n\nexport function syncTokensAfterChainSwitch(chainId: SupportedChainId) {\n syncSwapTokensAfterChainSwitch(chainId);\n syncLimitTokensAfterChainSwitch(chainId);\n syncOtcTokensAfterChainSwitch(chainId);\n}\n\nexport const tradeModeToPayAmountUnitAtom: Record<\n TradeMode,\n {\n read: Pick<typeof payInputAmountAtom, \"read\">;\n write: Pick<typeof setLimitPayAmountAtom, \"write\"> &\n Pick<PrimitiveAtom<string | null>, \"read\">;\n }\n> = {\n swap: { read: payInputAmountAtom, write: payInputAmountAtom },\n limit: { read: limitPayInputAmountAtom, write: setLimitAmountAtomFromProps },\n otc: { read: otcPayInputAmountAtom, write: setOtcAmountAtomFromProps },\n};\n\nexport const tradeModeToReceiveAmountUnitAtom: Record<\n TradeMode,\n {\n read: Pick<typeof receiveInputAmountAtom, \"read\">;\n write: Pick<typeof setLimitReceiveAmountAtom, \"write\"> &\n Pick<PrimitiveAtom<string | null>, \"read\">;\n }\n> = {\n swap: { read: receiveInputAmountAtom, write: receiveInputAmountAtom },\n limit: {\n read: limitReceiveInputAmountAtom,\n write: setLimitReceiveAmountAtom,\n },\n otc: { read: otcReceiveInputAmountAtom, write: setOtcReceiveAmountAtom },\n};\n\nexport const tradeModeToPriceRateAmountAtom: Record<\n \"limit\" | \"otc\",\n {\n read: Atom<string>;\n write: Pick<typeof setLimitPriceAmountAtomFromProps, \"write\"> &\n Pick<PrimitiveAtom<string | null>, \"read\">;\n }\n> = {\n limit: {\n read: limitPriceAmountAtom,\n write: setLimitPriceAmountAtomFromProps,\n },\n otc: {\n read: otcPriceAmountAtom,\n write: setOtcPriceAmountAtomFromProps,\n },\n};\n\nexport const tradeModeToDeadlineFromPropsAtom: Record<\n \"limit\" | \"otc\",\n typeof limitDeadline.deadlineFromPropsAtom\n> = {\n limit: limitDeadline.deadlineFromPropsAtom,\n otc: otcDeadline.deadlineFromPropsAtom,\n};\n\nexport const tradeModeToPayAmountWeiAtom: Record<\n TradeMode,\n typeof payInputAmountWeiAtom\n> = {\n swap: payInputAmountWeiAtom,\n limit: limitPayInputAmountWeiAtom,\n otc: otcPayInputAmountWeiAtom,\n};\n\nexport const tradeModeToTokenAtoms: Record<\n TradeMode,\n {\n tokenFromAtom: typeof swapTokenFromAtom;\n tokenToAtom: typeof swapTokenToAtom;\n }\n> = {\n swap: {\n tokenFromAtom: swapTokenFromAtom,\n tokenToAtom: swapTokenToAtom,\n },\n limit: {\n tokenFromAtom: limitTokenFromAtom,\n tokenToAtom: limitTokenToAtom,\n },\n otc: {\n tokenFromAtom: otcTokenFromAtom,\n tokenToAtom: otcTokenToAtom,\n },\n};\n\nexport const tradeModeToSetTokenAtoms: Record<\n TradeMode,\n {\n tokenFromAtom: typeof selectSwapTokenFromAtom;\n tokenToAtom: typeof selectSwapTokenToAtom;\n }\n> = {\n swap: {\n tokenFromAtom: selectSwapTokenFromAtom,\n tokenToAtom: selectSwapTokenToAtom,\n },\n limit: {\n tokenFromAtom: selectLimitTokenFromAtom,\n tokenToAtom: selectLimitTokenToAtom,\n },\n otc: {\n tokenFromAtom: selectOtcTokenFromAtom,\n tokenToAtom: selectOtcTokenToAtom,\n },\n};\n\nexport const useWidgetTokens = (tradeMode: TradeMode) => {\n const { tokenFromAtom, tokenToAtom } = tradeModeToTokenAtoms[tradeMode];\n const tokenFrom = useAtomValue(tokenFromAtom);\n const tokenTo = useAtomValue(tokenToAtom);\n return { tokenFrom, tokenTo };\n};\n"],"names":["syncTokensAfterChainSwitch","chainId","syncSwapTokensAfterChainSwitch","syncLimitTokensAfterChainSwitch","syncOtcTokensAfterChainSwitch","tradeModeToPayAmountUnitAtom","swap","read","payInputAmountAtom","write","limit","limitPayInputAmountAtom","setLimitAmountAtomFromProps","otc","otcPayInputAmountAtom","setOtcAmountAtomFromProps","tradeModeToReceiveAmountUnitAtom","receiveInputAmountAtom","limitReceiveInputAmountAtom","setLimitReceiveAmountAtom","otcReceiveInputAmountAtom","setOtcReceiveAmountAtom","tradeModeToPriceRateAmountAtom","limitPriceAmountAtom","setLimitPriceAmountAtomFromProps","otcPriceAmountAtom","setOtcPriceAmountAtomFromProps","tradeModeToDeadlineFromPropsAtom","limitDeadline","deadlineFromPropsAtom","otcDeadline","tradeModeToPayAmountWeiAtom","payInputAmountWeiAtom","limitPayInputAmountWeiAtom","otcPayInputAmountWeiAtom","tradeModeToTokenAtoms","tokenFromAtom","swapTokenFromAtom","tokenToAtom","swapTokenToAtom","limitTokenFromAtom","limitTokenToAtom","otcTokenFromAtom","otcTokenToAtom","tradeModeToSetTokenAtoms","selectSwapTokenFromAtom","selectSwapTokenToAtom","selectLimitTokenFromAtom","selectLimitTokenToAtom","selectOtcTokenFromAtom","selectOtcTokenToAtom","useWidgetTokens","tradeMode","$","_c","tokenFrom","useAtomValue","tokenTo","t0"],"mappings":";;;;;;;;;;;;;;;;AA0DO,SAASA,2BAA2BC,OAAAA,EAA2B;AACpEC,EAAAA,8BAAAA,CAA+BD,OAAO,CAAA;AACtCE,EAAAA,+BAAAA,CAAgCF,OAAO,CAAA;AACvCG,EAAAA,6BAAAA,CAA8BH,OAAO,CAAA;AACvC;AAEO,MAAMI,4BAAAA,GAOT;AAAA,EACFC,IAAAA,EAAM;AAAA,IAAEC,IAAAA,EAAMC,kBAAAA;AAAAA,IAAoBC,KAAAA,EAAOD;AAAAA,GAAmB;AAAA,EAC5DE,KAAAA,EAAO;AAAA,IAAEH,IAAAA,EAAMI,uBAAAA;AAAAA,IAAyBF,KAAAA,EAAOG;AAAAA,GAA4B;AAAA,EAC3EC,GAAAA,EAAK;AAAA,IAAEN,IAAAA,EAAMO,qBAAAA;AAAAA,IAAuBL,KAAAA,EAAOM;AAAAA;AAC7C;AAEO,MAAMC,gCAAAA,GAOT;AAAA,EACFV,IAAAA,EAAM;AAAA,IAAEC,IAAAA,EAAMU,sBAAAA;AAAAA,IAAwBR,KAAAA,EAAOQ;AAAAA,GAAuB;AAAA,EACpEP,KAAAA,EAAO;AAAA,IACLH,IAAAA,EAAMW,2BAAAA;AAAAA,IACNT,KAAAA,EAAOU;AAAAA,GACT;AAAA,EACAN,GAAAA,EAAK;AAAA,IAAEN,IAAAA,EAAMa,yBAAAA;AAAAA,IAA2BX,KAAAA,EAAOY;AAAAA;AACjD;AAEO,MAAMC,8BAAAA,GAOT;AAAA,EACFZ,KAAAA,EAAO;AAAA,IACLH,IAAAA,EAAMgB,oBAAAA;AAAAA,IACNd,KAAAA,EAAOe;AAAAA,GACT;AAAA,EACAX,GAAAA,EAAK;AAAA,IACHN,IAAAA,EAAMkB,kBAAAA;AAAAA,IACNhB,KAAAA,EAAOiB;AAAAA;AAEX;AAEO,MAAMC,gCAAAA,GAGT;AAAA,EACFjB,OAAOkB,uBAAcC;AAAAA,EACrBhB,KAAKiB;AACP;AAEO,MAAMC,2BAAAA,GAGT;AAAA,EACFzB,IAAAA,EAAM0B,qBAAAA;AAAAA,EACNtB,KAAAA,EAAOuB,0BAAAA;AAAAA,EACPpB,GAAAA,EAAKqB;AACP;AAEO,MAAMC,qBAAAA,GAMT;AAAA,EACF7B,IAAAA,EAAM;AAAA,IACJ8B,aAAAA,EAAeC,iBAAAA;AAAAA,IACfC,WAAAA,EAAaC;AAAAA,GACf;AAAA,EACA7B,KAAAA,EAAO;AAAA,IACL0B,aAAAA,EAAeI,kBAAAA;AAAAA,IACfF,WAAAA,EAAaG;AAAAA,GACf;AAAA,EACA5B,GAAAA,EAAK;AAAA,IACHuB,aAAAA,EAAeM,gBAAAA;AAAAA,IACfJ,WAAAA,EAAaK;AAAAA;AAEjB;AAEO,MAAMC,wBAAAA,GAMT;AAAA,EACFtC,IAAAA,EAAM;AAAA,IACJ8B,aAAAA,EAAeS,uBAAAA;AAAAA,IACfP,WAAAA,EAAaQ;AAAAA,GACf;AAAA,EACApC,KAAAA,EAAO;AAAA,IACL0B,aAAAA,EAAeW,wBAAAA;AAAAA,IACfT,WAAAA,EAAaU;AAAAA,GACf;AAAA,EACAnC,GAAAA,EAAK;AAAA,IACHuB,aAAAA,EAAea,sBAAAA;AAAAA,IACfX,WAAAA,EAAaY;AAAAA;AAEjB;AAEO,MAAMC,kBAAkBC,CAAAA,SAAAA,KAAA;AAAA,EAAA,MAAAC,CAAAA,GAAAC,cAAA,CAAA,CAAA;AAC7B,EAAA,MAAA;AAAA,IAAAlB,aAAAA;AAAAA,IAAAE;AAAAA,GAAA,GAAuCH,sBAAsBiB,SAAS,CAAA;AACtE,EAAA,MAAAG,SAAAA,GAAkBC,aAAapB,aAAa,CAAA;AAC5C,EAAA,MAAAqB,OAAAA,GAAgBD,aAAalB,WAAW,CAAA;AAAE,EAAA,IAAAoB,EAAAA;AAAA,EAAA,IAAAL,EAAA,CAAA,CAAA,KAAAE,aAAAF,CAAAA,QAAAI,OAAAA,EAAA;AACnCC,IAAAA,EAAAA,GAAA;AAAA,MAAAH,SAAAA;AAAAA,MAAAE;AAAAA,KAAqB;AAACJ,IAAAA,CAAAA,MAAAE,SAAAA;AAAAF,IAAAA,CAAAA,MAAAI,OAAAA;AAAAJ,IAAAA,CAAAA,MAAAK,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAL,EAAA,CAAA,CAAA;AAAA,EAAA;AAAA,EAAA,OAAtBK,EAAAA;AAAsB;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setTokenByAddressAtom.d.ts","sourceRoot":"","sources":["../../../../src/core/inputs/state/setTokenByAddressAtom.ts"],"names":[],"mappings":"AAgCA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAK9C,eAAO,MAAM,kBAAkB;;CAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"setTokenByAddressAtom.d.ts","sourceRoot":"","sources":["../../../../src/core/inputs/state/setTokenByAddressAtom.ts"],"names":[],"mappings":"AAgCA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAK9C,eAAO,MAAM,kBAAkB;;CAA2B,CAAC;AAoU3D,wBAAgB,2BAA2B,SAE1C;AAED,wBAAgB,wBAAwB,CAAC,EACvC,YAAY,EACZ,gBAAgB,EAChB,UAAU,EACV,cAAc,EACd,WAAW,EACX,UAAU,EACV,aAAa,EACb,IAAI,EACJ,eAAe,EACf,aAAa,GACd,GAAE,cAAmB,QA+BrB"}
|
|
@@ -11,7 +11,7 @@ import { isSupportedChainId } from '../../../lib/web3/wagmi/utils.js';
|
|
|
11
11
|
import { areTokensSame } from '../../../tokens/utils/areTokensSame.js';
|
|
12
12
|
import { pickDefaultTokenPair } from '../../../tokens/defaultTokens.js';
|
|
13
13
|
import { tradeModeAtom, userTradeModeAtom } from '../../state/tradeModeAtom.js';
|
|
14
|
-
import { tradeModeToTokenAtoms, tradeModeToSetTokenAtoms, tradeModeToPayAmountUnitAtom, tradeModeToReceiveAmountUnitAtom, tradeModeToPriceRateAmountAtom,
|
|
14
|
+
import { tradeModeToTokenAtoms, tradeModeToSetTokenAtoms, tradeModeToPayAmountUnitAtom, tradeModeToReceiveAmountUnitAtom, tradeModeToPriceRateAmountAtom, tradeModeToDeadlineFromPropsAtom } from './common.js';
|
|
15
15
|
import { wrappedNativeCurrency } from '../../../lib/constants/weth.js';
|
|
16
16
|
import { autoAddImportedTokenAtom } from '../../../tokens/state/addImportedTokenAtom.js';
|
|
17
17
|
import { getLogger } from '../../logger.js';
|
|
@@ -19,8 +19,8 @@ import { assert } from 'ts-essentials';
|
|
|
19
19
|
import { bridgeInfoAtom } from '../../../hooks/swap/prices/delta/queries/useBridgeInfo.js';
|
|
20
20
|
import { isTradeMode } from '../../../lib/tradeMode.js';
|
|
21
21
|
import { enabledTradeModesAtom } from '../../state/enabledTradeModesAtom.js';
|
|
22
|
-
import {
|
|
23
|
-
import {
|
|
22
|
+
import { swapSideAtom } from '../../../components/widget/SwapModeSwitcher/state/swapSideAtom.js';
|
|
23
|
+
import { swapSideFromPropsAtom } from '../../../components/widget/SwapModeSwitcher/state/swapSideFromPropsAtom.js';
|
|
24
24
|
|
|
25
25
|
const formInputPropsAtom = atom({});
|
|
26
26
|
const logger = getLogger("FormInputProps");
|
|
@@ -72,8 +72,7 @@ const formInputPropsEffectAtom = atomEffect((get, set) => {
|
|
|
72
72
|
srcChainId,
|
|
73
73
|
sendAmount,
|
|
74
74
|
receiveAmount,
|
|
75
|
-
priceRateAmount
|
|
76
|
-
orderDeadline
|
|
75
|
+
priceRateAmount
|
|
77
76
|
} = formInputProps;
|
|
78
77
|
logger.log("using external props to set Widget form input", formInputProps);
|
|
79
78
|
let destChainId = formInputProps.destChainId;
|
|
@@ -156,17 +155,16 @@ const formInputPropsEffectAtom = atomEffect((get, set) => {
|
|
|
156
155
|
const selectTokenToAtom = tradeModeToSetTokenAtoms[selectedForm].tokenToAtom;
|
|
157
156
|
set(selectTokenToAtom, newTokenTo);
|
|
158
157
|
}
|
|
159
|
-
let side = formInputProps.side
|
|
160
|
-
if (
|
|
158
|
+
let side = formInputProps.side;
|
|
159
|
+
if (isValidSide(side)) {
|
|
160
|
+
set(swapSideFromPropsAtom, side);
|
|
161
|
+
} else {
|
|
161
162
|
logger.warn("invalid side provided, must be BUY or SELL", {
|
|
162
163
|
side
|
|
163
164
|
});
|
|
164
|
-
side =
|
|
165
|
+
side = get.peek(swapSideAtom);
|
|
165
166
|
}
|
|
166
167
|
assert(isValidSide(side), "side must be BUY or SELL");
|
|
167
|
-
if (side !== get.peek(userSwapSideAtom)) {
|
|
168
|
-
set(userSwapSideAtom, side);
|
|
169
|
-
}
|
|
170
168
|
const isSwap = selectedForm === "swap";
|
|
171
169
|
const isLimitOrOtc = selectedForm === "limit" || selectedForm === "otc";
|
|
172
170
|
const isSwapWithSell = isSwap && side === "SELL";
|
|
@@ -193,12 +191,13 @@ const formInputPropsEffectAtom = atomEffect((get, set) => {
|
|
|
193
191
|
set(formPriceRateAmountAtom.write, priceRateAmount);
|
|
194
192
|
}
|
|
195
193
|
}
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
const
|
|
199
|
-
const
|
|
200
|
-
if (
|
|
201
|
-
|
|
194
|
+
const orderDeadline = Number(formInputProps.orderDeadline);
|
|
195
|
+
if (orderDeadline !== void 0 && !isNaN(orderDeadline)) {
|
|
196
|
+
const deadlineAtom = tradeModeToDeadlineFromPropsAtom[selectedForm];
|
|
197
|
+
const currentDeadline = get.peek(deadlineAtom);
|
|
198
|
+
if (currentDeadline !== orderDeadline) {
|
|
199
|
+
console.log("setting deadlineFromPropsAtom to", orderDeadline);
|
|
200
|
+
set(deadlineAtom, orderDeadline);
|
|
202
201
|
}
|
|
203
202
|
}
|
|
204
203
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setTokenByAddressAtom.js","sources":["../../../../src/core/inputs/state/setTokenByAddressAtom.ts"],"sourcesContent":["import { atom, useAtom, useSetAtom, type Setter } from \"jotai\";\nimport { atomEffect, type Effect } from \"jotai-effect\";\nimport { isAddress, type Address } from \"viem\";\nimport { isETHaddress } from \"@/tokens/utils/eth\";\nimport { nativeTokensByChainId } from \"@/tokens/constructor\";\nimport { fromListsAtom } from \"@/tokens/state/fromListsAtom\";\nimport {\n autoImportedTokensAtom,\n importedTokensAtom,\n} from \"@/tokens/state/importedTokensAtom\";\nimport type { Token } from \"@/tokens/state/types\";\nimport { useLayoutEffect } from \"react\";\nimport { isSupportedChainId } from \"@/lib/web3/wagmi/utils\";\nimport { areTokensSame } from \"@/tokens/utils/areTokensSame\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { pickDefaultTokenPair } from \"@/tokens/defaultTokens\";\nimport { tradeModeAtom, userTradeModeAtom } from \"@/core/state/tradeModeAtom\";\nimport {\n tradeModeToDeadlineTimeUnitAtom,\n tradeModeToPayAmountUnitAtom,\n tradeModeToPriceRateAmountAtom,\n tradeModeToReceiveAmountUnitAtom,\n tradeModeToSetTokenAtoms,\n tradeModeToTokenAtoms,\n} from \"./common\";\nimport { wrappedNativeCurrency } from \"@/lib/constants/weth\";\nimport { autoAddImportedTokenAtom } from \"@/tokens/state/addImportedTokenAtom\";\nimport { getLogger } from \"@/core/logger\";\nimport { assert } from \"ts-essentials\";\nimport { bridgeInfoAtom } from \"@/hooks/swap/prices/delta/queries/useBridgeInfo\";\nimport { isTradeMode } from \"@/lib/tradeMode\";\nimport { enabledTradeModesAtom } from \"@/core/state/enabledTradeModesAtom\";\nimport type { FormInputProps } from \"./types\";\nimport type { SwapSideUnion } from \"@velora-dex/sdk\";\nimport { userSwapSideAtom } from \"@/components/widget/SwapModeSwitcher/state/swapSideAtom\";\nimport { getClosestTimeUnit } from \"@/core/limit/state/utils\";\n\nexport const formInputPropsAtom = atom<FormInputProps>({});\n\n// in case formInputPros passed to Widget are not exactly expected types\ntype RelaxedFormInputProps = {\n [K in keyof FormInputProps]?: NonNullable<FormInputProps[K]> extends string\n ? string\n : NonNullable<FormInputProps[K]> extends number\n ? number\n : FormInputProps[K];\n};\n\nconst logger = getLogger(\"FormInputProps\");\n\ntype GetterWithPeek = Parameters<Effect>[0];\n\ntype FindTokenAtomsInput = {\n tokenToFind: { address: Address; network: SupportedChainId };\n get: GetterWithPeek;\n set: Setter;\n};\n\nfunction findTokenInAtoms({\n get,\n set,\n tokenToFind,\n}: FindTokenAtomsInput): Token | undefined {\n const tokenFromAddress = tokenToFind.address;\n const chainId = tokenToFind.network;\n\n if (isETHaddress(tokenFromAddress)) {\n // if tokenFrom is ETH, set the native token for tokenFrom Input\n const nativeToken = nativeTokensByChainId[chainId];\n return nativeToken;\n }\n\n const tokenFromLowercase = tokenFromAddress.toLowerCase();\n\n // find the token from the token Lists for the srcChainId,\n // and retry to find the token when allTokens are updated (token lists loaded)\n const tokensMap = get(fromListsAtom).listByChainId[chainId]?.addressMap;\n const tokenFromLists = tokensMap?.[tokenFromLowercase];\n if (tokenFromLists) {\n return tokenFromLists;\n }\n\n // find the token from the imported tokens,\n // don't retry if user imports more tokens during the session\n const importedTokens = get.peek(importedTokensAtom);\n const importedToken = importedTokens[chainId]?.find(\n (token) => token.address.toLowerCase() === tokenFromLowercase\n );\n if (importedToken) {\n return importedToken;\n }\n\n // subscribe to auto-imported tokens, which will be added to only when tokenAddress prop is supplied from outside the widget\n const autoImportedTokens = get(autoImportedTokensAtom);\n // looking through auto-imported tokens isn't strictly necessary because importedTokens atom is updated together with autoImportedTokens atom,\n // except for consistency, and so that we don't have to subscribe to importedTokens atom that would retrigger formProps matching on manual token import\n const autoImportedToken = autoImportedTokens.find(\n (token) =>\n token.address.toLowerCase() === tokenFromLowercase &&\n token.network === chainId\n );\n if (autoImportedToken) {\n return autoImportedToken;\n }\n\n logger.info(\n \"token not available in widget. Will attempt to import from chain\",\n {\n address: tokenFromAddress,\n chainId,\n }\n );\n\n // trigger Token fetch and eventual import when tokenFromAddress is not found in available token lists and atoms\n set(autoAddImportedTokenAtom, { address: tokenFromAddress, chainId });\n}\n\nfunction isValidSide(side: string | undefined): side is SwapSideUnion {\n return side === \"BUY\" || side === \"SELL\";\n}\n\nconst formInputPropsEffectAtom = atomEffect((get, set) => {\n // subscribe to bridgeInfoAtom to have up-to-date available crosses\n // and retry token finding each time when bridgeInfo changes\n get(bridgeInfoAtom);\n\n const enabledTradeModes = get(enabledTradeModesAtom);\n const formInputProps: RelaxedFormInputProps = get(formInputPropsAtom);\n const {\n tokenFromAddress,\n srcChainId,\n sendAmount,\n receiveAmount,\n priceRateAmount,\n orderDeadline,\n } = formInputProps;\n\n logger.log(\"using external props to set Widget form input\", formInputProps);\n\n let destChainId = formInputProps.destChainId;\n let tokenToAddress = formInputProps.tokenToAddress;\n let selectedForm = formInputProps.selectedForm || \"swap\";\n if (!isTradeMode(selectedForm) || !enabledTradeModes.includes(selectedForm)) {\n // guard against invalid props passed through from outside the Widget\n logger.warn(\"invalid or disabled selectedForm provided\", { selectedForm });\n // fallback to first enabled trade mode from the config\n selectedForm = enabledTradeModes[0];\n }\n\n // necessary for type safety\n assert(isTradeMode(selectedForm), \"selectedForm must be a valid trade mode\");\n\n const formAtoms = tradeModeToTokenAtoms[selectedForm];\n const currentTokenFrom = get.peek(formAtoms.tokenFromAtom);\n const currentTokenTo = get.peek(formAtoms.tokenToAtom);\n\n const currentTradeMode = get.peek(tradeModeAtom);\n\n if (currentTradeMode !== selectedForm) {\n set(userTradeModeAtom, selectedForm);\n }\n\n let newTokenFrom: Token | undefined;\n let newTokenTo: Token | undefined;\n\n // if chain isn't given in props, match current srcChainId\n const defaultChainId = currentTokenFrom.network;\n\n if (selectedForm !== \"swap\") {\n // non-swap forms are single-chain only,\n // force destChainId = srcChainId\n destChainId = srcChainId;\n }\n\n if (\n selectedForm === \"otc\" &&\n tokenToAddress &&\n isETHaddress(tokenToAddress)\n ) {\n const wethMapping: Record<number, Address> = wrappedNativeCurrency;\n // OTC Orders don't support ETH as tokenTo=takerAsset,\n // more logical to use WETH instead of no token at all\n tokenToAddress = wethMapping[destChainId || defaultChainId];\n }\n\n {\n // match tokenFromAddress and srcChainId to a new tokenFrom to select\n const tokenToFind = getTokenToFind({\n tokenFromProps: { address: tokenFromAddress, network: srcChainId },\n currentToken: currentTokenFrom,\n defaultChainId,\n });\n if (tokenToFind) {\n newTokenFrom = findTokenInAtoms({\n get,\n tokenToFind,\n set,\n });\n }\n }\n\n {\n // match tokenToAddress and destChainId to a new tokenTo to select\n const tokenToFind = getTokenToFind({\n tokenFromProps: { address: tokenToAddress, network: destChainId },\n currentToken: currentTokenTo,\n defaultChainId,\n });\n if (tokenToFind) {\n newTokenTo = findTokenInAtoms({\n get,\n tokenToFind,\n set,\n });\n }\n }\n\n if (newTokenFrom && newTokenTo && areTokensSame(newTokenFrom, newTokenTo)) {\n // if tokens are the same, skip tokenTo\n newTokenTo = undefined;\n }\n\n if (\n !newTokenFrom &&\n !tokenFromAddress &&\n srcChainId &&\n isSupportedChainId(srcChainId) &&\n srcChainId !== currentTokenFrom.network\n ) {\n // no tokenAddress given, but chainId is provided and different from current\n const [defaultTokenFrom] = pickDefaultTokenPair(srcChainId, selectedForm);\n // set default token for the chain\n newTokenFrom = defaultTokenFrom;\n }\n\n if (\n !newTokenTo &&\n !tokenToAddress &&\n destChainId &&\n isSupportedChainId(destChainId) &&\n destChainId !== currentTokenTo?.network\n ) {\n // no tokenAddress given, but chainId is provided and different from current\n const [, defaultTokenTo] = pickDefaultTokenPair(destChainId, selectedForm);\n // set default token for the chain\n newTokenTo = defaultTokenTo;\n }\n\n if (newTokenFrom) {\n const selectTokenFromAtom =\n tradeModeToSetTokenAtoms[selectedForm].tokenFromAtom;\n set(selectTokenFromAtom, newTokenFrom);\n }\n if (newTokenTo) {\n const selectTokenToAtom =\n tradeModeToSetTokenAtoms[selectedForm].tokenToAtom;\n set(selectTokenToAtom, newTokenTo);\n }\n\n let side = formInputProps.side || \"SELL\";\n if (!isValidSide(side)) {\n // guard against invalid props passed through from outside the Widget\n logger.warn(\"invalid side provided, must be BUY or SELL\", { side });\n // fallback to SELL\n side = \"SELL\";\n }\n\n // necessary for type safety\n assert(isValidSide(side), \"side must be BUY or SELL\");\n\n if (side !== get.peek(userSwapSideAtom)) {\n set(userSwapSideAtom, side);\n }\n\n const isSwap = selectedForm === \"swap\";\n const isLimitOrOtc = selectedForm === \"limit\" || selectedForm === \"otc\";\n\n const isSwapWithSell = isSwap && side === \"SELL\";\n const isSwapWithBuy = isSwap && side === \"BUY\";\n\n if (\n sendAmount &&\n Number(sendAmount) >= 0 &&\n (isSwapWithSell || isLimitOrOtc)\n ) {\n const formPayAmountAtom = tradeModeToPayAmountUnitAtom[selectedForm];\n const currentSendAmount = get.peek(formPayAmountAtom.read);\n if (currentSendAmount !== sendAmount) {\n set(formPayAmountAtom.write, sendAmount);\n }\n }\n\n if (receiveAmount && Number(receiveAmount) >= 0 && isSwapWithBuy) {\n const formReceiveAmountAtom =\n tradeModeToReceiveAmountUnitAtom[selectedForm];\n const currentReceiveAmount = get.peek(formReceiveAmountAtom.read);\n if (currentReceiveAmount !== receiveAmount) {\n set(formReceiveAmountAtom.write, receiveAmount);\n }\n }\n\n if (selectedForm === \"limit\" || selectedForm === \"otc\") {\n if (priceRateAmount && Number(priceRateAmount) >= 0) {\n const formPriceRateAmountAtom =\n tradeModeToPriceRateAmountAtom[selectedForm];\n const currentPriceRateAmount = get.peek(formPriceRateAmountAtom.read);\n if (currentPriceRateAmount !== priceRateAmount) {\n set(formPriceRateAmountAtom.write, priceRateAmount);\n }\n }\n\n if (orderDeadline !== undefined && !isNaN(Number(orderDeadline))) {\n const timeUnitAtom = tradeModeToDeadlineTimeUnitAtom[selectedForm];\n const currentDeadlineTimeUnit = get.peek(timeUnitAtom);\n const newDeadlineTimeUnit = getClosestTimeUnit(orderDeadline);\n if (\n currentDeadlineTimeUnit.label !== newDeadlineTimeUnit.label ||\n currentDeadlineTimeUnit.value !== newDeadlineTimeUnit.value\n ) {\n set(timeUnitAtom, newDeadlineTimeUnit);\n }\n }\n }\n});\n\nfunction getTokenToFind({\n tokenFromProps,\n currentToken,\n defaultChainId,\n}: {\n tokenFromProps: { address?: string; network?: number };\n currentToken?: Token;\n defaultChainId: SupportedChainId;\n}): { address: Address; network: SupportedChainId } | undefined {\n if (!tokenFromProps.address) return;\n // guard against malformed addresses passed through props\n if (!isAddress(tokenFromProps.address)) {\n logger.warn(\"malformed token address provided\", {\n address: tokenFromProps.address,\n });\n return;\n }\n\n const network = tokenFromProps.network || defaultChainId;\n\n // unsupported chainId provided, can't select this Token\n if (!isSupportedChainId(network)) {\n logger.warn(\"unsupported chainId provided\", { network });\n return;\n }\n\n if (\n currentToken &&\n areTokensSame(currentToken, {\n address: tokenFromProps.address,\n network,\n })\n ) {\n // same token already there\n return;\n }\n\n return { address: tokenFromProps.address, network };\n}\n\nexport function useActivateFormInputEffects() {\n useAtom(formInputPropsEffectAtom);\n}\n\nexport function useSetFormInputFromProps({\n selectedForm,\n tokenFromAddress,\n srcChainId,\n tokenToAddress,\n destChainId,\n sendAmount,\n receiveAmount,\n side,\n priceRateAmount,\n orderDeadline,\n}: FormInputProps = {}) {\n const setFormInputProps = useSetAtom(formInputPropsAtom);\n\n // match props together as they are supplied together from outside the Widget,\n // on any one prop change, the whole form input props are updated as long as they are passed together to the Widget\n useLayoutEffect(() => {\n setFormInputProps({\n selectedForm,\n tokenFromAddress,\n srcChainId,\n tokenToAddress,\n destChainId,\n sendAmount,\n receiveAmount,\n side,\n priceRateAmount,\n orderDeadline,\n });\n }, [\n selectedForm,\n tokenFromAddress,\n srcChainId,\n tokenToAddress,\n destChainId,\n sendAmount,\n setFormInputProps,\n receiveAmount,\n side,\n priceRateAmount,\n orderDeadline,\n ]);\n}\n"],"names":["formInputPropsAtom","atom","logger","getLogger","findTokenInAtoms","get","set","tokenToFind","tokenFromAddress","address","chainId","network","isETHaddress","nativeToken","nativeTokensByChainId","tokenFromLowercase","toLowerCase","tokensMap","fromListsAtom","listByChainId","addressMap","tokenFromLists","importedTokens","peek","importedTokensAtom","importedToken","find","token","autoImportedTokens","autoImportedTokensAtom","autoImportedToken","info","autoAddImportedTokenAtom","isValidSide","side","formInputPropsEffectAtom","atomEffect","bridgeInfoAtom","enabledTradeModes","enabledTradeModesAtom","formInputProps","srcChainId","sendAmount","receiveAmount","priceRateAmount","orderDeadline","log","destChainId","tokenToAddress","selectedForm","isTradeMode","includes","warn","assert","formAtoms","tradeModeToTokenAtoms","currentTokenFrom","tokenFromAtom","currentTokenTo","tokenToAtom","currentTradeMode","tradeModeAtom","userTradeModeAtom","newTokenFrom","newTokenTo","defaultChainId","wethMapping","wrappedNativeCurrency","getTokenToFind","tokenFromProps","currentToken","areTokensSame","undefined","isSupportedChainId","defaultTokenFrom","pickDefaultTokenPair","defaultTokenTo","selectTokenFromAtom","tradeModeToSetTokenAtoms","selectTokenToAtom","userSwapSideAtom","isSwap","isLimitOrOtc","isSwapWithSell","isSwapWithBuy","Number","formPayAmountAtom","tradeModeToPayAmountUnitAtom","currentSendAmount","read","write","formReceiveAmountAtom","tradeModeToReceiveAmountUnitAtom","currentReceiveAmount","formPriceRateAmountAtom","tradeModeToPriceRateAmountAtom","currentPriceRateAmount","isNaN","timeUnitAtom","tradeModeToDeadlineTimeUnitAtom","currentDeadlineTimeUnit","newDeadlineTimeUnit","getClosestTimeUnit","label","value","isAddress","useActivateFormInputEffects","useAtom","useSetFormInputFromProps","t0","$","_c","t1","setFormInputProps","useSetAtom","t2","t3","useLayoutEffect"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"setTokenByAddressAtom.js","sources":["../../../../src/core/inputs/state/setTokenByAddressAtom.ts"],"sourcesContent":["import { atom, useAtom, useSetAtom, type Setter } from \"jotai\";\nimport { atomEffect, type Effect } from \"jotai-effect\";\nimport { isAddress, type Address } from \"viem\";\nimport { isETHaddress } from \"@/tokens/utils/eth\";\nimport { nativeTokensByChainId } from \"@/tokens/constructor\";\nimport { fromListsAtom } from \"@/tokens/state/fromListsAtom\";\nimport {\n autoImportedTokensAtom,\n importedTokensAtom,\n} from \"@/tokens/state/importedTokensAtom\";\nimport type { Token } from \"@/tokens/state/types\";\nimport { useLayoutEffect } from \"react\";\nimport { isSupportedChainId } from \"@/lib/web3/wagmi/utils\";\nimport { areTokensSame } from \"@/tokens/utils/areTokensSame\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { pickDefaultTokenPair } from \"@/tokens/defaultTokens\";\nimport { tradeModeAtom, userTradeModeAtom } from \"@/core/state/tradeModeAtom\";\nimport {\n tradeModeToDeadlineFromPropsAtom,\n tradeModeToPayAmountUnitAtom,\n tradeModeToPriceRateAmountAtom,\n tradeModeToReceiveAmountUnitAtom,\n tradeModeToSetTokenAtoms,\n tradeModeToTokenAtoms,\n} from \"./common\";\nimport { wrappedNativeCurrency } from \"@/lib/constants/weth\";\nimport { autoAddImportedTokenAtom } from \"@/tokens/state/addImportedTokenAtom\";\nimport { getLogger } from \"@/core/logger\";\nimport { assert } from \"ts-essentials\";\nimport { bridgeInfoAtom } from \"@/hooks/swap/prices/delta/queries/useBridgeInfo\";\nimport { isTradeMode } from \"@/lib/tradeMode\";\nimport { enabledTradeModesAtom } from \"@/core/state/enabledTradeModesAtom\";\nimport type { FormInputProps } from \"./types\";\nimport type { SwapSideUnion } from \"@velora-dex/sdk\";\nimport { swapSideAtom } from \"@/components/widget/SwapModeSwitcher/state/swapSideAtom\";\nimport { swapSideFromPropsAtom } from \"@/components/widget/SwapModeSwitcher/state/swapSideFromPropsAtom\";\n\nexport const formInputPropsAtom = atom<FormInputProps>({});\n\n// in case formInputPros passed to Widget are not exactly expected types\ntype RelaxedFormInputProps = {\n [K in keyof FormInputProps]?: NonNullable<FormInputProps[K]> extends string\n ? string\n : NonNullable<FormInputProps[K]> extends number\n ? number\n : FormInputProps[K];\n};\n\nconst logger = getLogger(\"FormInputProps\");\n\ntype GetterWithPeek = Parameters<Effect>[0];\n\ntype FindTokenAtomsInput = {\n tokenToFind: { address: Address; network: SupportedChainId };\n get: GetterWithPeek;\n set: Setter;\n};\n\nfunction findTokenInAtoms({\n get,\n set,\n tokenToFind,\n}: FindTokenAtomsInput): Token | undefined {\n const tokenFromAddress = tokenToFind.address;\n const chainId = tokenToFind.network;\n\n if (isETHaddress(tokenFromAddress)) {\n // if tokenFrom is ETH, set the native token for tokenFrom Input\n const nativeToken = nativeTokensByChainId[chainId];\n return nativeToken;\n }\n\n const tokenFromLowercase = tokenFromAddress.toLowerCase();\n\n // find the token from the token Lists for the srcChainId,\n // and retry to find the token when allTokens are updated (token lists loaded)\n const tokensMap = get(fromListsAtom).listByChainId[chainId]?.addressMap;\n const tokenFromLists = tokensMap?.[tokenFromLowercase];\n if (tokenFromLists) {\n return tokenFromLists;\n }\n\n // find the token from the imported tokens,\n // don't retry if user imports more tokens during the session\n const importedTokens = get.peek(importedTokensAtom);\n const importedToken = importedTokens[chainId]?.find(\n (token) => token.address.toLowerCase() === tokenFromLowercase\n );\n if (importedToken) {\n return importedToken;\n }\n\n // subscribe to auto-imported tokens, which will be added to only when tokenAddress prop is supplied from outside the widget\n const autoImportedTokens = get(autoImportedTokensAtom);\n // looking through auto-imported tokens isn't strictly necessary because importedTokens atom is updated together with autoImportedTokens atom,\n // except for consistency, and so that we don't have to subscribe to importedTokens atom that would retrigger formProps matching on manual token import\n const autoImportedToken = autoImportedTokens.find(\n (token) =>\n token.address.toLowerCase() === tokenFromLowercase &&\n token.network === chainId\n );\n if (autoImportedToken) {\n return autoImportedToken;\n }\n\n logger.info(\n \"token not available in widget. Will attempt to import from chain\",\n {\n address: tokenFromAddress,\n chainId,\n }\n );\n\n // trigger Token fetch and eventual import when tokenFromAddress is not found in available token lists and atoms\n set(autoAddImportedTokenAtom, { address: tokenFromAddress, chainId });\n}\n\nfunction isValidSide(side: string | undefined): side is SwapSideUnion {\n return side === \"BUY\" || side === \"SELL\";\n}\n\nconst formInputPropsEffectAtom = atomEffect((get, set) => {\n // subscribe to bridgeInfoAtom to have up-to-date available crosses\n // and retry token finding each time when bridgeInfo changes\n get(bridgeInfoAtom);\n\n const enabledTradeModes = get(enabledTradeModesAtom);\n const formInputProps: RelaxedFormInputProps = get(formInputPropsAtom);\n const {\n tokenFromAddress,\n srcChainId,\n sendAmount,\n receiveAmount,\n priceRateAmount,\n } = formInputProps;\n\n logger.log(\"using external props to set Widget form input\", formInputProps);\n\n let destChainId = formInputProps.destChainId;\n let tokenToAddress = formInputProps.tokenToAddress;\n let selectedForm = formInputProps.selectedForm || \"swap\";\n if (!isTradeMode(selectedForm) || !enabledTradeModes.includes(selectedForm)) {\n // guard against invalid props passed through from outside the Widget\n logger.warn(\"invalid or disabled selectedForm provided\", { selectedForm });\n // fallback to first enabled trade mode from the config\n selectedForm = enabledTradeModes[0];\n }\n\n // necessary for type safety\n assert(isTradeMode(selectedForm), \"selectedForm must be a valid trade mode\");\n\n const formAtoms = tradeModeToTokenAtoms[selectedForm];\n const currentTokenFrom = get.peek(formAtoms.tokenFromAtom);\n const currentTokenTo = get.peek(formAtoms.tokenToAtom);\n\n const currentTradeMode = get.peek(tradeModeAtom);\n\n if (currentTradeMode !== selectedForm) {\n set(userTradeModeAtom, selectedForm);\n }\n\n let newTokenFrom: Token | undefined;\n let newTokenTo: Token | undefined;\n\n // if chain isn't given in props, match current srcChainId\n const defaultChainId = currentTokenFrom.network;\n\n if (selectedForm !== \"swap\") {\n // non-swap forms are single-chain only,\n // force destChainId = srcChainId\n destChainId = srcChainId;\n }\n\n if (\n selectedForm === \"otc\" &&\n tokenToAddress &&\n isETHaddress(tokenToAddress)\n ) {\n const wethMapping: Record<number, Address> = wrappedNativeCurrency;\n // OTC Orders don't support ETH as tokenTo=takerAsset,\n // more logical to use WETH instead of no token at all\n tokenToAddress = wethMapping[destChainId || defaultChainId];\n }\n\n {\n // match tokenFromAddress and srcChainId to a new tokenFrom to select\n const tokenToFind = getTokenToFind({\n tokenFromProps: { address: tokenFromAddress, network: srcChainId },\n currentToken: currentTokenFrom,\n defaultChainId,\n });\n if (tokenToFind) {\n newTokenFrom = findTokenInAtoms({\n get,\n tokenToFind,\n set,\n });\n }\n }\n\n {\n // match tokenToAddress and destChainId to a new tokenTo to select\n const tokenToFind = getTokenToFind({\n tokenFromProps: { address: tokenToAddress, network: destChainId },\n currentToken: currentTokenTo,\n defaultChainId,\n });\n if (tokenToFind) {\n newTokenTo = findTokenInAtoms({\n get,\n tokenToFind,\n set,\n });\n }\n }\n\n if (newTokenFrom && newTokenTo && areTokensSame(newTokenFrom, newTokenTo)) {\n // if tokens are the same, skip tokenTo\n newTokenTo = undefined;\n }\n\n if (\n !newTokenFrom &&\n !tokenFromAddress &&\n srcChainId &&\n isSupportedChainId(srcChainId) &&\n srcChainId !== currentTokenFrom.network\n ) {\n // no tokenAddress given, but chainId is provided and different from current\n const [defaultTokenFrom] = pickDefaultTokenPair(srcChainId, selectedForm);\n // set default token for the chain\n newTokenFrom = defaultTokenFrom;\n }\n\n if (\n !newTokenTo &&\n !tokenToAddress &&\n destChainId &&\n isSupportedChainId(destChainId) &&\n destChainId !== currentTokenTo?.network\n ) {\n // no tokenAddress given, but chainId is provided and different from current\n const [, defaultTokenTo] = pickDefaultTokenPair(destChainId, selectedForm);\n // set default token for the chain\n newTokenTo = defaultTokenTo;\n }\n\n if (newTokenFrom) {\n const selectTokenFromAtom =\n tradeModeToSetTokenAtoms[selectedForm].tokenFromAtom;\n set(selectTokenFromAtom, newTokenFrom);\n }\n if (newTokenTo) {\n const selectTokenToAtom =\n tradeModeToSetTokenAtoms[selectedForm].tokenToAtom;\n set(selectTokenToAtom, newTokenTo);\n }\n\n let side = formInputProps.side;\n if (isValidSide(side)) {\n set(swapSideFromPropsAtom, side);\n } else {\n // guard against invalid props passed through from outside the Widget\n logger.warn(\"invalid side provided, must be BUY or SELL\", { side });\n // fallback to current swap side\n side = get.peek(swapSideAtom);\n }\n\n // necessary for type safety\n assert(isValidSide(side), \"side must be BUY or SELL\");\n\n const isSwap = selectedForm === \"swap\";\n const isLimitOrOtc = selectedForm === \"limit\" || selectedForm === \"otc\";\n\n const isSwapWithSell = isSwap && side === \"SELL\";\n const isSwapWithBuy = isSwap && side === \"BUY\";\n\n if (\n sendAmount &&\n Number(sendAmount) >= 0 &&\n (isSwapWithSell || isLimitOrOtc)\n ) {\n const formPayAmountAtom = tradeModeToPayAmountUnitAtom[selectedForm];\n const currentSendAmount = get.peek(formPayAmountAtom.read);\n if (currentSendAmount !== sendAmount) {\n set(formPayAmountAtom.write, sendAmount);\n }\n }\n\n if (receiveAmount && Number(receiveAmount) >= 0 && isSwapWithBuy) {\n const formReceiveAmountAtom =\n tradeModeToReceiveAmountUnitAtom[selectedForm];\n const currentReceiveAmount = get.peek(formReceiveAmountAtom.read);\n if (currentReceiveAmount !== receiveAmount) {\n set(formReceiveAmountAtom.write, receiveAmount);\n }\n }\n\n if (selectedForm === \"limit\" || selectedForm === \"otc\") {\n if (priceRateAmount && Number(priceRateAmount) >= 0) {\n const formPriceRateAmountAtom =\n tradeModeToPriceRateAmountAtom[selectedForm];\n const currentPriceRateAmount = get.peek(formPriceRateAmountAtom.read);\n if (currentPriceRateAmount !== priceRateAmount) {\n set(formPriceRateAmountAtom.write, priceRateAmount);\n }\n }\n\n const orderDeadline = Number(formInputProps.orderDeadline);\n if (orderDeadline !== undefined && !isNaN(orderDeadline)) {\n const deadlineAtom = tradeModeToDeadlineFromPropsAtom[selectedForm];\n const currentDeadline = get.peek(deadlineAtom);\n\n if (currentDeadline !== orderDeadline) {\n console.log(\"setting deadlineFromPropsAtom to\", orderDeadline);\n set(deadlineAtom, orderDeadline);\n }\n }\n }\n});\n\nfunction getTokenToFind({\n tokenFromProps,\n currentToken,\n defaultChainId,\n}: {\n tokenFromProps: { address?: string; network?: number };\n currentToken?: Token;\n defaultChainId: SupportedChainId;\n}): { address: Address; network: SupportedChainId } | undefined {\n if (!tokenFromProps.address) return;\n // guard against malformed addresses passed through props\n if (!isAddress(tokenFromProps.address)) {\n logger.warn(\"malformed token address provided\", {\n address: tokenFromProps.address,\n });\n return;\n }\n\n const network = tokenFromProps.network || defaultChainId;\n\n // unsupported chainId provided, can't select this Token\n if (!isSupportedChainId(network)) {\n logger.warn(\"unsupported chainId provided\", { network });\n return;\n }\n\n if (\n currentToken &&\n areTokensSame(currentToken, {\n address: tokenFromProps.address,\n network,\n })\n ) {\n // same token already there\n return;\n }\n\n return { address: tokenFromProps.address, network };\n}\n\nexport function useActivateFormInputEffects() {\n useAtom(formInputPropsEffectAtom);\n}\n\nexport function useSetFormInputFromProps({\n selectedForm,\n tokenFromAddress,\n srcChainId,\n tokenToAddress,\n destChainId,\n sendAmount,\n receiveAmount,\n side,\n priceRateAmount,\n orderDeadline,\n}: FormInputProps = {}) {\n const setFormInputProps = useSetAtom(formInputPropsAtom);\n\n // match props together as they are supplied together from outside the Widget,\n // on any one prop change, the whole form input props are updated as long as they are passed together to the Widget\n useLayoutEffect(() => {\n setFormInputProps({\n selectedForm,\n tokenFromAddress,\n srcChainId,\n tokenToAddress,\n destChainId,\n sendAmount,\n receiveAmount,\n side,\n priceRateAmount,\n orderDeadline,\n });\n }, [\n selectedForm,\n tokenFromAddress,\n srcChainId,\n tokenToAddress,\n destChainId,\n sendAmount,\n setFormInputProps,\n receiveAmount,\n side,\n priceRateAmount,\n orderDeadline,\n ]);\n}\n"],"names":["formInputPropsAtom","atom","logger","getLogger","findTokenInAtoms","get","set","tokenToFind","tokenFromAddress","address","chainId","network","isETHaddress","nativeToken","nativeTokensByChainId","tokenFromLowercase","toLowerCase","tokensMap","fromListsAtom","listByChainId","addressMap","tokenFromLists","importedTokens","peek","importedTokensAtom","importedToken","find","token","autoImportedTokens","autoImportedTokensAtom","autoImportedToken","info","autoAddImportedTokenAtom","isValidSide","side","formInputPropsEffectAtom","atomEffect","bridgeInfoAtom","enabledTradeModes","enabledTradeModesAtom","formInputProps","srcChainId","sendAmount","receiveAmount","priceRateAmount","log","destChainId","tokenToAddress","selectedForm","isTradeMode","includes","warn","assert","formAtoms","tradeModeToTokenAtoms","currentTokenFrom","tokenFromAtom","currentTokenTo","tokenToAtom","currentTradeMode","tradeModeAtom","userTradeModeAtom","newTokenFrom","newTokenTo","defaultChainId","wethMapping","wrappedNativeCurrency","getTokenToFind","tokenFromProps","currentToken","areTokensSame","undefined","isSupportedChainId","defaultTokenFrom","pickDefaultTokenPair","defaultTokenTo","selectTokenFromAtom","tradeModeToSetTokenAtoms","selectTokenToAtom","swapSideFromPropsAtom","swapSideAtom","isSwap","isLimitOrOtc","isSwapWithSell","isSwapWithBuy","Number","formPayAmountAtom","tradeModeToPayAmountUnitAtom","currentSendAmount","read","write","formReceiveAmountAtom","tradeModeToReceiveAmountUnitAtom","currentReceiveAmount","formPriceRateAmountAtom","tradeModeToPriceRateAmountAtom","currentPriceRateAmount","orderDeadline","isNaN","deadlineAtom","tradeModeToDeadlineFromPropsAtom","currentDeadline","console","isAddress","useActivateFormInputEffects","useAtom","useSetFormInputFromProps","t0","$","_c","t1","setFormInputProps","useSetAtom","t2","t3","useLayoutEffect"],"mappings":"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"}
|
|
@@ -11,7 +11,7 @@ export type FormInputProps = {
|
|
|
11
11
|
tokenToAddress?: Address;
|
|
12
12
|
/** @description The chainId of the tokenTo, only functional together with selectedForm = "swap"*/
|
|
13
13
|
destChainId?: SupportedChainId;
|
|
14
|
-
/** @description The amount of the pay input,
|
|
14
|
+
/** @description The amount of the pay input, functional when selectedForm is "limit" or "otc", or when selectedForm is "swap" with side = "SELL" */
|
|
15
15
|
sendAmount?: string;
|
|
16
16
|
/** @description The amount of the receive input, only functional together with selectedForm = "swap" and side = "BUY" */
|
|
17
17
|
receiveAmount?: string;
|
|
@@ -19,7 +19,7 @@ export type FormInputProps = {
|
|
|
19
19
|
side?: SwapSideUnion;
|
|
20
20
|
/** @description The price rate amount, only functional together with selectedForm = "limit" or "otc" */
|
|
21
21
|
priceRateAmount?: string;
|
|
22
|
-
/** @description The order deadline in
|
|
23
|
-
orderDeadline?:
|
|
22
|
+
/** @description The order deadline in seconds, only functional together with selectedForm = "limit" or "otc" */
|
|
23
|
+
orderDeadline?: string;
|
|
24
24
|
};
|
|
25
25
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/core/inputs/state/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAEpC,MAAM,MAAM,cAAc,GAAG;IAC3B,4DAA4D;IAC5D,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,mGAAmG;IACnG,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,kGAAkG;IAClG,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAC/B,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/core/inputs/state/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAEpC,MAAM,MAAM,cAAc,GAAG;IAC3B,4DAA4D;IAC5D,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,mGAAmG;IACnG,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,kGAAkG;IAClG,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAC/B,oJAAoJ;IACpJ,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yHAAyH;IACzH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,6FAA6F;IAC7F,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,wGAAwG;IACxG,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gHAAgH;IAChH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC"}
|
|
@@ -1,12 +1,16 @@
|
|
|
1
|
+
import { SetStateAction } from 'jotai';
|
|
1
2
|
import { timeUnits } from './constants';
|
|
2
3
|
export type TimeUnit = (typeof timeUnits)[number]["label"];
|
|
3
4
|
export type TimeUnitObject = {
|
|
4
5
|
label: TimeUnit;
|
|
5
6
|
value: number;
|
|
6
7
|
};
|
|
7
|
-
export declare const timeUnitAtom: import('jotai').
|
|
8
|
+
export declare const timeUnitAtom: import('jotai').WritableAtom<TimeUnitObject, [newTimeUnit: SetStateAction<TimeUnitObject>, resetDeadlineFromProps?: boolean | undefined], void> & {
|
|
8
9
|
init: TimeUnitObject;
|
|
9
10
|
};
|
|
11
|
+
export declare const deadlineFromPropsAtom: import('jotai').WritableAtom<number | undefined, [number | undefined], void> & {
|
|
12
|
+
init: number | undefined;
|
|
13
|
+
};
|
|
10
14
|
export declare const deadlineAtom: import('jotai').Atom<number>;
|
|
11
15
|
export declare const useLimitDeadline: () => number;
|
|
12
16
|
//# sourceMappingURL=deadlineAtom.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deadlineAtom.d.ts","sourceRoot":"","sources":["../../../../src/core/limit/state/deadlineAtom.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"deadlineAtom.d.ts","sourceRoot":"","sources":["../../../../src/core/limit/state/deadlineAtom.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,KAAK,cAAc,EAAE,MAAM,OAAO,CAAC;AAChE,OAAO,EAAgC,SAAS,EAAE,MAAM,aAAa,CAAC;AAGtE,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC;AAE3D,MAAM,MAAM,cAAc,GAAG;IAC3B,KAAK,EAAE,QAAQ,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,eAAO,MAAM,YAAY;;CAiBvB,CAAC;AAEH,eAAO,MAAM,qBAAqB;;CAmBjC,CAAC;AAEF,eAAO,MAAM,YAAY,8BAiBvB,CAAC;AAEH,eAAO,MAAM,gBAAgB,cAE5B,CAAC"}
|
|
@@ -1,9 +1,32 @@
|
|
|
1
1
|
import { atom, useAtomValue } from 'jotai';
|
|
2
2
|
import { defaultTimeUnit, minTimeUnit } from './constants.js';
|
|
3
|
-
import { timeUnitToSeconds } from './utils.js';
|
|
3
|
+
import { getClosestTimeUnit, timeUnitToSeconds } from './utils.js';
|
|
4
4
|
|
|
5
|
-
const timeUnitAtom = atom(defaultTimeUnit)
|
|
5
|
+
const timeUnitAtom = atom(defaultTimeUnit, (get, set, newTimeUnit, resetDeadlineFromProps) => {
|
|
6
|
+
const updatedTimeUnit = typeof newTimeUnit === "function" ? newTimeUnit(get(timeUnitAtom)) : newTimeUnit;
|
|
7
|
+
set(timeUnitAtom, updatedTimeUnit);
|
|
8
|
+
if (resetDeadlineFromProps) {
|
|
9
|
+
set(deadlineFromPropsAtom, void 0);
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
const deadlineFromPropsAtom = atom(
|
|
13
|
+
void 0,
|
|
14
|
+
// timestamp in seconds
|
|
15
|
+
(get, set, newDeadline) => {
|
|
16
|
+
set(deadlineFromPropsAtom, newDeadline);
|
|
17
|
+
if (newDeadline === void 0) return;
|
|
18
|
+
const currentDeadlineTimeUnit = get(timeUnitAtom);
|
|
19
|
+
const newDeadlineTimeUnit = getClosestTimeUnit(newDeadline);
|
|
20
|
+
if (currentDeadlineTimeUnit.label !== newDeadlineTimeUnit.label || currentDeadlineTimeUnit.value !== newDeadlineTimeUnit.value) {
|
|
21
|
+
set(timeUnitAtom, newDeadlineTimeUnit, false);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
);
|
|
6
25
|
const deadlineAtom = atom((get) => {
|
|
26
|
+
const deadlineFromProps = get(deadlineFromPropsAtom);
|
|
27
|
+
if (deadlineFromProps) {
|
|
28
|
+
return deadlineFromProps;
|
|
29
|
+
}
|
|
7
30
|
let timeUnit = get(timeUnitAtom);
|
|
8
31
|
if (timeUnit.label === minTimeUnit.label && timeUnit.value < minTimeUnit.value) {
|
|
9
32
|
timeUnit = minTimeUnit;
|
|
@@ -14,5 +37,5 @@ const useLimitDeadline = () => {
|
|
|
14
37
|
return useAtomValue(deadlineAtom);
|
|
15
38
|
};
|
|
16
39
|
|
|
17
|
-
export { deadlineAtom, timeUnitAtom, useLimitDeadline };
|
|
40
|
+
export { deadlineAtom, deadlineFromPropsAtom, timeUnitAtom, useLimitDeadline };
|
|
18
41
|
//# sourceMappingURL=deadlineAtom.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deadlineAtom.js","sources":["../../../../src/core/limit/state/deadlineAtom.ts"],"sourcesContent":["import { atom, useAtomValue } from \"jotai\";\nimport { defaultTimeUnit, minTimeUnit, timeUnits } from \"./constants\";\nimport { timeUnitToSeconds } from \"./utils\";\n\nexport type TimeUnit = (typeof timeUnits)[number][\"label\"];\n\nexport type TimeUnitObject = {\n label: TimeUnit;\n value: number;\n};\n\nexport const timeUnitAtom = atom<TimeUnitObject>(defaultTimeUnit);\n\nexport const deadlineAtom = atom((get) => {\n let timeUnit = get(timeUnitAtom);\n\n if (\n timeUnit.label === minTimeUnit.label &&\n timeUnit.value < minTimeUnit.value\n ) {\n timeUnit = minTimeUnit;\n }\n\n return Math.floor(Date.now() / 1000 + timeUnitToSeconds(timeUnit));\n});\n\nexport const useLimitDeadline = () => {\n return useAtomValue(deadlineAtom);\n};\n"],"names":["timeUnitAtom","atom","defaultTimeUnit","
|
|
1
|
+
{"version":3,"file":"deadlineAtom.js","sources":["../../../../src/core/limit/state/deadlineAtom.ts"],"sourcesContent":["import { atom, useAtomValue, type SetStateAction } from \"jotai\";\nimport { defaultTimeUnit, minTimeUnit, timeUnits } from \"./constants\";\nimport { getClosestTimeUnit, timeUnitToSeconds } from \"./utils\";\n\nexport type TimeUnit = (typeof timeUnits)[number][\"label\"];\n\nexport type TimeUnitObject = {\n label: TimeUnit;\n value: number;\n};\n\nexport const timeUnitAtom = atom<\n TimeUnitObject,\n [\n newTimeUnit: SetStateAction<TimeUnitObject>,\n resetDeadlineFromProps?: boolean,\n ],\n void\n>(defaultTimeUnit, (get, set, newTimeUnit, resetDeadlineFromProps) => {\n const updatedTimeUnit =\n typeof newTimeUnit === \"function\"\n ? newTimeUnit(get(timeUnitAtom))\n : newTimeUnit;\n set(timeUnitAtom, updatedTimeUnit);\n\n if (resetDeadlineFromProps) {\n set(deadlineFromPropsAtom, undefined);\n }\n});\n\nexport const deadlineFromPropsAtom = atom<\n number | undefined,\n [number | undefined],\n void\n>(\n undefined, // timestamp in seconds\n (get, set, newDeadline) => {\n set(deadlineFromPropsAtom, newDeadline);\n if (newDeadline === undefined) return;\n\n const currentDeadlineTimeUnit = get(timeUnitAtom);\n const newDeadlineTimeUnit = getClosestTimeUnit(newDeadline);\n if (\n currentDeadlineTimeUnit.label !== newDeadlineTimeUnit.label ||\n currentDeadlineTimeUnit.value !== newDeadlineTimeUnit.value\n ) {\n set(timeUnitAtom, newDeadlineTimeUnit, false);\n }\n }\n);\n\nexport const deadlineAtom = atom((get) => {\n const deadlineFromProps = get(deadlineFromPropsAtom);\n\n if (deadlineFromProps) {\n return deadlineFromProps;\n }\n\n let timeUnit = get(timeUnitAtom);\n\n if (\n timeUnit.label === minTimeUnit.label &&\n timeUnit.value < minTimeUnit.value\n ) {\n timeUnit = minTimeUnit;\n }\n\n return Math.floor(Date.now() / 1000 + timeUnitToSeconds(timeUnit));\n});\n\nexport const useLimitDeadline = () => {\n return useAtomValue(deadlineAtom);\n};\n"],"names":["timeUnitAtom","atom","defaultTimeUnit","get","set","newTimeUnit","resetDeadlineFromProps","updatedTimeUnit","deadlineFromPropsAtom","undefined","newDeadline","currentDeadlineTimeUnit","newDeadlineTimeUnit","getClosestTimeUnit","label","value","deadlineAtom","deadlineFromProps","timeUnit","minTimeUnit","Math","floor","Date","now","timeUnitToSeconds","useLimitDeadline","useAtomValue"],"mappings":";;;;AAWO,MAAMA,eAAeC,IAAAA,CAO1BC,eAAAA,EAAiB,CAACC,GAAAA,EAAKC,GAAAA,EAAKC,aAAaC,sBAAAA,KAA2B;AACpE,EAAA,MAAMC,eAAAA,GACJ,OAAOF,WAAAA,KAAgB,UAAA,GACnBA,YAAYF,GAAAA,CAAIH,YAAY,CAAC,CAAA,GAC7BK,WAAAA;AACND,EAAAA,GAAAA,CAAIJ,cAAcO,eAAe,CAAA;AAEjC,EAAA,IAAID,sBAAAA,EAAwB;AAC1BF,IAAAA,GAAAA,CAAII,uBAAuBC,MAAS,CAAA;AAAA,EACtC;AACF,CAAC;AAEM,MAAMD,qBAAAA,GAAwBP,IAAAA;AAAAA,EAKnCQ,MAAAA;AAAAA;AAAAA,EACA,CAACN,GAAAA,EAAKC,GAAAA,EAAKM,WAAAA,KAAgB;AACzBN,IAAAA,GAAAA,CAAII,uBAAuBE,WAAW,CAAA;AACtC,IAAA,IAAIA,gBAAgBD,MAAAA,EAAW;AAE/B,IAAA,MAAME,uBAAAA,GAA0BR,IAAIH,YAAY,CAAA;AAChD,IAAA,MAAMY,mBAAAA,GAAsBC,mBAAmBH,WAAW,CAAA;AAC1D,IAAA,IACEC,wBAAwBG,KAAAA,KAAUF,mBAAAA,CAAoBE,SACtDH,uBAAAA,CAAwBI,KAAAA,KAAUH,oBAAoBG,KAAAA,EACtD;AACAX,MAAAA,GAAAA,CAAIJ,YAAAA,EAAcY,qBAAqB,KAAK,CAAA;AAAA,IAC9C;AAAA,EACF;AACF;AAEO,MAAMI,YAAAA,GAAef,KAAME,CAAAA,GAAAA,KAAQ;AACxC,EAAA,MAAMc,iBAAAA,GAAoBd,IAAIK,qBAAqB,CAAA;AAEnD,EAAA,IAAIS,iBAAAA,EAAmB;AACrB,IAAA,OAAOA,iBAAAA;AAAAA,EACT;AAEA,EAAA,IAAIC,QAAAA,GAAWf,IAAIH,YAAY,CAAA;AAE/B,EAAA,IACEkB,SAASJ,KAAAA,KAAUK,WAAAA,CAAYL,SAC/BI,QAAAA,CAASH,KAAAA,GAAQI,YAAYJ,KAAAA,EAC7B;AACAG,IAAAA,QAAAA,GAAWC,WAAAA;AAAAA,EACb;AAEA,EAAA,OAAOC,IAAAA,CAAKC,MAAMC,IAAAA,CAAKC,GAAAA,KAAQ,GAAA,GAAOC,iBAAAA,CAAkBN,QAAQ,CAAC,CAAA;AACnE,CAAC;AAEM,MAAMO,mBAAmBA,MAAA;AAAA,EAAA,OACvBC,aAAaV,YAAY,CAAA;AAAC;;;;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { TimeUnitObject } from './deadlineAtom';
|
|
2
2
|
import { PriceRates } from '../types';
|
|
3
3
|
export declare function timeUnitToSeconds(timeUnitObj: TimeUnitObject): number;
|
|
4
|
-
export declare function getClosestTimeUnit(
|
|
4
|
+
export declare function getClosestTimeUnit(timestampS: number): {
|
|
5
5
|
readonly label: "never";
|
|
6
6
|
readonly value: 0;
|
|
7
7
|
} | {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/core/limit/state/utils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAG3C,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,cAAc,UAa5D;AASD,wBAAgB,kBAAkB,CAAC,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/core/limit/state/utils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAG3C,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,cAAc,UAa5D;AASD,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM;;;;;;EAoBpD;AAED,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,OAAO,UAcpB;AAED,wBAAgB,kBAAkB,CAChC,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,OAAO,UAcpB;AAED,wBAAgB,cAAc,CAC5B,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,GAChB,UAAU,CAYZ;AAED,wBAAgB,eAAe,CAC7B,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,OAAO,GAClB,UAAU,CAWZ"}
|
|
@@ -28,8 +28,9 @@ const units = [{
|
|
|
28
28
|
label: "minutes",
|
|
29
29
|
ms: 60 * 1e3
|
|
30
30
|
}];
|
|
31
|
-
function getClosestTimeUnit(
|
|
32
|
-
if (
|
|
31
|
+
function getClosestTimeUnit(timestampS) {
|
|
32
|
+
if (timestampS <= 0) return neverTimeUnit;
|
|
33
|
+
const timestampMs = timestampS * 1e3;
|
|
33
34
|
const now = Date.now();
|
|
34
35
|
if (timestampMs <= now) return neverTimeUnit;
|
|
35
36
|
const diffMs = timestampMs - now;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sources":["../../../../src/core/limit/state/utils.ts"],"sourcesContent":["import Big from \"big.js\";\nimport type { TimeUnitObject } from \"./deadlineAtom\";\nimport type { PriceRates } from \"../types\";\nimport { neverTimeUnit, zeroRates } from \"./constants\";\n\nexport function timeUnitToSeconds(timeUnitObj: TimeUnitObject) {\n switch (timeUnitObj.label) {\n case \"minutes\":\n return timeUnitObj.value * 60;\n case \"hours\":\n return timeUnitObj.value * 60 * 60;\n case \"days\":\n return timeUnitObj.value * 60 * 60 * 24;\n case \"months\":\n return timeUnitObj.value * 60 * 60 * 24 * 30;\n default:\n return 0;\n }\n}\n\nconst units = [\n { label: \"months\", ms: 30 * 24 * 60 * 60 * 1000 },\n { label: \"days\", ms: 24 * 60 * 60 * 1000 },\n { label: \"hours\", ms: 60 * 60 * 1000 },\n { label: \"minutes\", ms: 60 * 1000 },\n] as const;\n\nexport function getClosestTimeUnit(
|
|
1
|
+
{"version":3,"file":"utils.js","sources":["../../../../src/core/limit/state/utils.ts"],"sourcesContent":["import Big from \"big.js\";\nimport type { TimeUnitObject } from \"./deadlineAtom\";\nimport type { PriceRates } from \"../types\";\nimport { neverTimeUnit, zeroRates } from \"./constants\";\n\nexport function timeUnitToSeconds(timeUnitObj: TimeUnitObject) {\n switch (timeUnitObj.label) {\n case \"minutes\":\n return timeUnitObj.value * 60;\n case \"hours\":\n return timeUnitObj.value * 60 * 60;\n case \"days\":\n return timeUnitObj.value * 60 * 60 * 24;\n case \"months\":\n return timeUnitObj.value * 60 * 60 * 24 * 30;\n default:\n return 0;\n }\n}\n\nconst units = [\n { label: \"months\", ms: 30 * 24 * 60 * 60 * 1000 },\n { label: \"days\", ms: 24 * 60 * 60 * 1000 },\n { label: \"hours\", ms: 60 * 60 * 1000 },\n { label: \"minutes\", ms: 60 * 1000 },\n] as const;\n\nexport function getClosestTimeUnit(timestampS: number) {\n if (timestampS <= 0) return neverTimeUnit;\n const timestampMs = timestampS * 1000;\n\n const now = Date.now();\n\n if (timestampMs <= now) return neverTimeUnit;\n\n const diffMs = timestampMs - now;\n\n for (const unit of units) {\n const value = Math.floor(diffMs / unit.ms);\n if (value > 0) {\n return {\n label: unit.label,\n value,\n };\n }\n }\n return neverTimeUnit;\n}\n\nexport function calculateReceiveAmount(\n payAmount: string,\n priceRates: PriceRates,\n isReversed: boolean\n) {\n const pay = Big(payAmount || \"0\");\n\n if (isReversed) {\n // price = from/to → receive = pay / price\n const price = Big(priceRates.rateReversed || \"0\");\n if (price.eq(0)) return \"0\";\n return pay.div(price).toFixed();\n }\n\n const price = Big(priceRates.rate || \"0\");\n // normal: price = to/from → receive = pay * price\n return pay.mul(price).toFixed();\n}\n\nexport function calculatePayAmount(\n receiveAmount: string,\n priceRates: PriceRates,\n isReversed: boolean\n) {\n const receive = Big(receiveAmount || \"0\");\n\n if (isReversed) {\n // price = from/to → pay = receive * price\n const price = Big(priceRates.rateReversed || \"0\");\n return receive.mul(price).toFixed();\n }\n\n // normal: pay = receive / price\n const price = Big(priceRates.rate || \"0\");\n if (price.eq(0)) return \"0\";\n return receive.div(price).toFixed();\n}\n\nexport function calculateRates(\n receiveAmount: string,\n payAmount: string\n): PriceRates {\n const receive = Big(receiveAmount || \"0\");\n const pay = Big(payAmount || \"0\");\n\n if (pay.eq(0) || receive.eq(0)) return zeroRates;\n\n // normal: price = to/from → price = receive / pay\n const rate = receive.div(pay).toFixed();\n // reversed: price = from/to → price = pay / receive\n const rateReversed = pay.div(receive).toFixed();\n\n return { rate, rateReversed };\n}\n\nexport function getUpdatedRates(\n value: string,\n isReversed: boolean\n): PriceRates {\n const bigPrice = Big(value || 0);\n if (!bigPrice.eq(0)) {\n const rate = bigPrice.toFixed();\n const rateReversed = Big(1).div(bigPrice).toFixed();\n\n return isReversed\n ? { rate: rateReversed, rateReversed: rate }\n : { rate, rateReversed };\n }\n return zeroRates;\n}\n"],"names":["timeUnitToSeconds","timeUnitObj","label","value","units","ms","getClosestTimeUnit","timestampS","neverTimeUnit","timestampMs","now","Date","diffMs","unit","Math","floor","calculateReceiveAmount","payAmount","priceRates","isReversed","pay","Big","price","rateReversed","eq","div","toFixed","rate","mul","calculatePayAmount","receiveAmount","receive","calculateRates","zeroRates","getUpdatedRates","bigPrice"],"mappings":"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"}
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
import { TimeUnitObject } from '../../limit/state/deadlineAtom';
|
|
2
|
-
|
|
2
|
+
import { SetStateAction } from 'jotai';
|
|
3
|
+
export declare const timeUnitAtom: import('jotai').WritableAtom<TimeUnitObject, [newTimeUnit: SetStateAction<TimeUnitObject>, resetDeadlineFromProps?: boolean | undefined], void> & {
|
|
3
4
|
init: TimeUnitObject;
|
|
4
5
|
};
|
|
6
|
+
export declare const deadlineFromPropsAtom: import('jotai').WritableAtom<number | undefined, [number | undefined], void> & {
|
|
7
|
+
init: number | undefined;
|
|
8
|
+
};
|
|
5
9
|
export declare const deadlineAtom: import('jotai').Atom<number>;
|
|
6
10
|
export declare const useOtcDeadline: () => number;
|
|
7
11
|
//# sourceMappingURL=deadlineAtom.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deadlineAtom.d.ts","sourceRoot":"","sources":["../../../../src/core/otc/state/deadlineAtom.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"deadlineAtom.d.ts","sourceRoot":"","sources":["../../../../src/core/otc/state/deadlineAtom.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAKtE,OAAO,EAAsB,KAAK,cAAc,EAAE,MAAM,OAAO,CAAC;AAEhE,eAAO,MAAM,YAAY;;CAiBvB,CAAC;AAEH,eAAO,MAAM,qBAAqB;;CAmBjC,CAAC;AAEF,eAAO,MAAM,YAAY,8BAkBvB,CAAC;AAEH,eAAO,MAAM,cAAc,cAE1B,CAAC"}
|
|
@@ -1,9 +1,32 @@
|
|
|
1
1
|
import { defaultTimeUnit, neverTimeUnit, minTimeUnit } from '../../limit/state/constants.js';
|
|
2
|
-
import { timeUnitToSeconds } from '../../limit/state/utils.js';
|
|
2
|
+
import { getClosestTimeUnit, timeUnitToSeconds } from '../../limit/state/utils.js';
|
|
3
3
|
import { atom, useAtomValue } from 'jotai';
|
|
4
4
|
|
|
5
|
-
const timeUnitAtom = atom(defaultTimeUnit)
|
|
5
|
+
const timeUnitAtom = atom(defaultTimeUnit, (get, set, newTimeUnit, resetDeadlineFromProps) => {
|
|
6
|
+
const updatedTimeUnit = typeof newTimeUnit === "function" ? newTimeUnit(get(timeUnitAtom)) : newTimeUnit;
|
|
7
|
+
set(timeUnitAtom, updatedTimeUnit);
|
|
8
|
+
if (resetDeadlineFromProps) {
|
|
9
|
+
set(deadlineFromPropsAtom, void 0);
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
const deadlineFromPropsAtom = atom(
|
|
13
|
+
void 0,
|
|
14
|
+
// timestamp in seconds
|
|
15
|
+
(get, set, newDeadline) => {
|
|
16
|
+
set(deadlineFromPropsAtom, newDeadline);
|
|
17
|
+
if (newDeadline === void 0) return;
|
|
18
|
+
const currentDeadlineTimeUnit = get(timeUnitAtom);
|
|
19
|
+
const newDeadlineTimeUnit = getClosestTimeUnit(newDeadline);
|
|
20
|
+
if (currentDeadlineTimeUnit.label !== newDeadlineTimeUnit.label || currentDeadlineTimeUnit.value !== newDeadlineTimeUnit.value) {
|
|
21
|
+
set(timeUnitAtom, newDeadlineTimeUnit);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
);
|
|
6
25
|
const deadlineAtom = atom((get) => {
|
|
26
|
+
const deadlineFromProps = get(deadlineFromPropsAtom);
|
|
27
|
+
if (deadlineFromProps) {
|
|
28
|
+
return deadlineFromProps;
|
|
29
|
+
}
|
|
7
30
|
let timeUnit = get(timeUnitAtom);
|
|
8
31
|
if (timeUnit.label === neverTimeUnit.label) return 0;
|
|
9
32
|
if (timeUnit.label === minTimeUnit.label && timeUnit.value < minTimeUnit.value) {
|
|
@@ -15,5 +38,5 @@ const useOtcDeadline = () => {
|
|
|
15
38
|
return useAtomValue(deadlineAtom);
|
|
16
39
|
};
|
|
17
40
|
|
|
18
|
-
export { deadlineAtom, timeUnitAtom, useOtcDeadline };
|
|
41
|
+
export { deadlineAtom, deadlineFromPropsAtom, timeUnitAtom, useOtcDeadline };
|
|
19
42
|
//# sourceMappingURL=deadlineAtom.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deadlineAtom.js","sources":["../../../../src/core/otc/state/deadlineAtom.ts"],"sourcesContent":["import {\n minTimeUnit,\n neverTimeUnit,\n defaultTimeUnit,\n} from \"@/core/limit/state/constants\";\nimport type { TimeUnitObject } from \"@/core/limit/state/deadlineAtom\";\nimport {
|
|
1
|
+
{"version":3,"file":"deadlineAtom.js","sources":["../../../../src/core/otc/state/deadlineAtom.ts"],"sourcesContent":["import {\n minTimeUnit,\n neverTimeUnit,\n defaultTimeUnit,\n} from \"@/core/limit/state/constants\";\nimport type { TimeUnitObject } from \"@/core/limit/state/deadlineAtom\";\nimport {\n getClosestTimeUnit,\n timeUnitToSeconds,\n} from \"@/core/limit/state/utils\";\nimport { atom, useAtomValue, type SetStateAction } from \"jotai\";\n\nexport const timeUnitAtom = atom<\n TimeUnitObject,\n [\n newTimeUnit: SetStateAction<TimeUnitObject>,\n resetDeadlineFromProps?: boolean,\n ],\n void\n>(defaultTimeUnit, (get, set, newTimeUnit, resetDeadlineFromProps) => {\n const updatedTimeUnit =\n typeof newTimeUnit === \"function\"\n ? newTimeUnit(get(timeUnitAtom))\n : newTimeUnit;\n set(timeUnitAtom, updatedTimeUnit);\n\n if (resetDeadlineFromProps) {\n set(deadlineFromPropsAtom, undefined);\n }\n});\n\nexport const deadlineFromPropsAtom = atom<\n number | undefined,\n [number | undefined],\n void\n>(\n undefined, // timestamp in seconds\n (get, set, newDeadline) => {\n set(deadlineFromPropsAtom, newDeadline);\n if (newDeadline === undefined) return;\n\n const currentDeadlineTimeUnit = get(timeUnitAtom);\n const newDeadlineTimeUnit = getClosestTimeUnit(newDeadline);\n if (\n currentDeadlineTimeUnit.label !== newDeadlineTimeUnit.label ||\n currentDeadlineTimeUnit.value !== newDeadlineTimeUnit.value\n ) {\n set(timeUnitAtom, newDeadlineTimeUnit);\n }\n }\n);\n\nexport const deadlineAtom = atom((get) => {\n const deadlineFromProps = get(deadlineFromPropsAtom);\n\n if (deadlineFromProps) {\n return deadlineFromProps;\n }\n\n let timeUnit = get(timeUnitAtom);\n if (timeUnit.label === neverTimeUnit.label) return 0;\n\n if (\n timeUnit.label === minTimeUnit.label &&\n timeUnit.value < minTimeUnit.value\n ) {\n timeUnit = minTimeUnit;\n }\n\n return Math.floor(Date.now() / 1000 + timeUnitToSeconds(timeUnit));\n});\n\nexport const useOtcDeadline = () => {\n return useAtomValue(deadlineAtom);\n};\n"],"names":["timeUnitAtom","atom","defaultTimeUnit","get","set","newTimeUnit","resetDeadlineFromProps","updatedTimeUnit","deadlineFromPropsAtom","undefined","newDeadline","currentDeadlineTimeUnit","newDeadlineTimeUnit","getClosestTimeUnit","label","value","deadlineAtom","deadlineFromProps","timeUnit","neverTimeUnit","minTimeUnit","Math","floor","Date","now","timeUnitToSeconds","useOtcDeadline","useAtomValue"],"mappings":";;;;AAYO,MAAMA,eAAeC,IAAAA,CAO1BC,eAAAA,EAAiB,CAACC,GAAAA,EAAKC,GAAAA,EAAKC,aAAaC,sBAAAA,KAA2B;AACpE,EAAA,MAAMC,eAAAA,GACJ,OAAOF,WAAAA,KAAgB,UAAA,GACnBA,YAAYF,GAAAA,CAAIH,YAAY,CAAC,CAAA,GAC7BK,WAAAA;AACND,EAAAA,GAAAA,CAAIJ,cAAcO,eAAe,CAAA;AAEjC,EAAA,IAAID,sBAAAA,EAAwB;AAC1BF,IAAAA,GAAAA,CAAII,uBAAuBC,MAAS,CAAA;AAAA,EACtC;AACF,CAAC;AAEM,MAAMD,qBAAAA,GAAwBP,IAAAA;AAAAA,EAKnCQ,MAAAA;AAAAA;AAAAA,EACA,CAACN,GAAAA,EAAKC,GAAAA,EAAKM,WAAAA,KAAgB;AACzBN,IAAAA,GAAAA,CAAII,uBAAuBE,WAAW,CAAA;AACtC,IAAA,IAAIA,gBAAgBD,MAAAA,EAAW;AAE/B,IAAA,MAAME,uBAAAA,GAA0BR,IAAIH,YAAY,CAAA;AAChD,IAAA,MAAMY,mBAAAA,GAAsBC,mBAAmBH,WAAW,CAAA;AAC1D,IAAA,IACEC,wBAAwBG,KAAAA,KAAUF,mBAAAA,CAAoBE,SACtDH,uBAAAA,CAAwBI,KAAAA,KAAUH,oBAAoBG,KAAAA,EACtD;AACAX,MAAAA,GAAAA,CAAIJ,cAAcY,mBAAmB,CAAA;AAAA,IACvC;AAAA,EACF;AACF;AAEO,MAAMI,YAAAA,GAAef,KAAME,CAAAA,GAAAA,KAAQ;AACxC,EAAA,MAAMc,iBAAAA,GAAoBd,IAAIK,qBAAqB,CAAA;AAEnD,EAAA,IAAIS,iBAAAA,EAAmB;AACrB,IAAA,OAAOA,iBAAAA;AAAAA,EACT;AAEA,EAAA,IAAIC,QAAAA,GAAWf,IAAIH,YAAY,CAAA;AAC/B,EAAA,IAAIkB,QAAAA,CAASJ,KAAAA,KAAUK,aAAAA,CAAcL,KAAAA,EAAO,OAAO,CAAA;AAEnD,EAAA,IACEI,SAASJ,KAAAA,KAAUM,WAAAA,CAAYN,SAC/BI,QAAAA,CAASH,KAAAA,GAAQK,YAAYL,KAAAA,EAC7B;AACAG,IAAAA,QAAAA,GAAWE,WAAAA;AAAAA,EACb;AAEA,EAAA,OAAOC,IAAAA,CAAKC,MAAMC,IAAAA,CAAKC,GAAAA,KAAQ,GAAA,GAAOC,iBAAAA,CAAkBP,QAAQ,CAAC,CAAA;AACnE,CAAC;AAEM,MAAMQ,iBAAiBA,MAAA;AAAA,EAAA,OACrBC,aAAaX,YAAY,CAAA;AAAC;;;;"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare const currentSwapInputAtom: import('jotai').
|
|
1
|
+
export declare const currentSwapInputAtom: import('jotai').WritableAtom<"from" | "to", ["from" | "to"], void> & {
|
|
2
2
|
init: "from" | "to";
|
|
3
3
|
};
|
|
4
4
|
//# sourceMappingURL=currentSwapInputAtom.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"currentSwapInputAtom.d.ts","sourceRoot":"","sources":["../../../src/core/state/currentSwapInputAtom.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"currentSwapInputAtom.d.ts","sourceRoot":"","sources":["../../../src/core/state/currentSwapInputAtom.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,oBAAoB;;CAOhC,CAAC"}
|
|
@@ -1,6 +1,10 @@
|
|
|
1
|
+
import { swapSideFromPropsAtom } from '../../components/widget/SwapModeSwitcher/state/swapSideFromPropsAtom.js';
|
|
1
2
|
import { atom } from 'jotai';
|
|
2
3
|
|
|
3
|
-
const currentSwapInputAtom = atom("from")
|
|
4
|
+
const currentSwapInputAtom = atom("from", (_, set, newInput) => {
|
|
5
|
+
set(currentSwapInputAtom, newInput);
|
|
6
|
+
set(swapSideFromPropsAtom, void 0);
|
|
7
|
+
});
|
|
4
8
|
|
|
5
9
|
export { currentSwapInputAtom };
|
|
6
10
|
//# sourceMappingURL=currentSwapInputAtom.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"currentSwapInputAtom.js","sources":["../../../src/core/state/currentSwapInputAtom.ts"],"sourcesContent":["import { atom } from \"jotai\";\n\nexport const currentSwapInputAtom = atom<\"from\" | \"to\">(\"from\");\n"],"names":["currentSwapInputAtom","atom"],"mappings":"
|
|
1
|
+
{"version":3,"file":"currentSwapInputAtom.js","sources":["../../../src/core/state/currentSwapInputAtom.ts"],"sourcesContent":["import { swapSideFromPropsAtom } from \"@/components/widget/SwapModeSwitcher/state/swapSideFromPropsAtom\";\nimport { atom } from \"jotai\";\n\nexport const currentSwapInputAtom = atom<\"from\" | \"to\", [\"from\" | \"to\"], void>(\n \"from\",\n (_, set, newInput) => {\n set(currentSwapInputAtom, newInput);\n // reset side from input props to prioritize user selection\n set(swapSideFromPropsAtom, undefined);\n }\n);\n"],"names":["currentSwapInputAtom","atom","_","set","newInput","swapSideFromPropsAtom","undefined"],"mappings":";;;AAGO,MAAMA,uBAAuBC,IAAAA,CAClC,MAAA,EACA,CAACC,CAAAA,EAAGC,KAAKC,QAAAA,KAAa;AACpBD,EAAAA,GAAAA,CAAIH,sBAAsBI,QAAQ,CAAA;AAElCD,EAAAA,GAAAA,CAAIE,uBAAuBC,MAAS,CAAA;AACtC,CACF;;;;"}
|