@eaera-com/eaera-widgets-v2 0.1.75 → 0.1.76

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/dist/components/base/EaeraButton.d.ts +3 -1
  2. package/dist/components/base/EaeraButton.mjs +1 -1
  3. package/dist/components/base/EaeraCarousel.mjs +1 -1
  4. package/dist/components/base/EaeraDatePicker.mjs +1 -1
  5. package/dist/components/base/EaeraDateTimePicker.mjs +1 -1
  6. package/dist/components/base/EaeraDrawer.mjs +1 -1
  7. package/dist/components/base/EaeraPopconfirm.mjs +1 -1
  8. package/dist/components/base/EaeraUploadDefault.mjs +1 -1
  9. package/dist/components/chunks/EaeraButton-BPVKRBOn.mjs +1 -0
  10. package/dist/components/chunks/{EaeraButtonGroup-B5wTBG3Y.mjs → EaeraButtonGroup-BROLavKb.mjs} +1 -1
  11. package/dist/components/chunks/{EaeraCalendar-BFZSCkQq.mjs → EaeraCalendar-QOYXhJey.mjs} +1 -1
  12. package/dist/components/chunks/{EaeraCarousel-BV02zb3u.mjs → EaeraCarousel-nVdAknBO.mjs} +1 -1
  13. package/dist/components/chunks/{EaeraDatePicker-CAm9fHms.mjs → EaeraDatePicker-Bwt5r5gk.mjs} +1 -1
  14. package/dist/components/chunks/{EaeraDateTimePicker-DXW1M3R7.mjs → EaeraDateTimePicker-Hv_ma8qU.mjs} +1 -1
  15. package/dist/components/chunks/{EaeraDrawer-C3Pj4wvV.mjs → EaeraDrawer-D7drsvOk.mjs} +1 -1
  16. package/dist/components/chunks/{EaeraDynamicFieldRow-Cv4oclH6.mjs → EaeraDynamicFieldRow-mZ5_nqkn.mjs} +1 -1
  17. package/dist/components/chunks/{EaeraForm-DKeyWXY3.mjs → EaeraForm-DEoXRjat.mjs} +1 -1
  18. package/dist/components/chunks/{EaeraPopconfirm-DxtJgCN5.mjs → EaeraPopconfirm-K_C8Pf9V.mjs} +1 -1
  19. package/dist/components/chunks/{EaeraTableV2-ZUpzVKhm.mjs → EaeraTableV2-CBaM5zp9.mjs} +1 -1
  20. package/dist/components/chunks/{EaeraUploadDefault-Cs4SEmWT.mjs → EaeraUploadDefault-r9WuE9Ri.mjs} +1 -1
  21. package/dist/components/chunks/{EaeraWidgetMarginCalculator-CAZcI1eg.mjs → EaeraWidgetMarginCalculator-BokNy1a7.mjs} +1 -1
  22. package/dist/components/chunks/{EaeraWidgetPositionCalculator-BF6O7ATq.mjs → EaeraWidgetPositionCalculator-D36MGO-E.mjs} +1 -1
  23. package/dist/components/chunks/{index-B_ESts1X.mjs → index-9zJYqMyX.mjs} +1 -1
  24. package/dist/components/chunks/{index-CqpcR_2l.mjs → index-CgcRJ8oq.mjs} +1 -1
  25. package/dist/components/chunks/{index-CS3c4zka.mjs → index-ChWzksXo.mjs} +1 -1
  26. package/dist/components/chunks/{index-iEvfkNT8.mjs → index-Cm-cRnqS.mjs} +1 -1
  27. package/dist/components/chunks/index-Cu4uZ9Nd.mjs +1 -0
  28. package/dist/components/chunks/{index-CP8Qcgp3.mjs → index-DD9Bx0uF.mjs} +1 -1
  29. package/dist/components/chunks/index-DhwN0sRS.mjs +1 -0
  30. package/dist/components/chunks/index-wGZD3Xyh.mjs +1 -0
  31. package/dist/components/composite/EaeraCalendar.mjs +1 -1
  32. package/dist/components/composite/EaeraDynamicFieldRow.mjs +1 -1
  33. package/dist/components/composite/EaeraForm.mjs +1 -1
  34. package/dist/components/composite/EaeraTableV2.mjs +1 -1
  35. package/dist/components/custom/EaeraButtonGroup.mjs +1 -1
  36. package/dist/components/custom/EaeraWidgetMarginCalculator.mjs +1 -1
  37. package/dist/components/custom/EaeraWidgetPositionCalculator.mjs +1 -1
  38. package/dist/components/index.mjs +1 -1
  39. package/dist/components/webtrade/EaeraCfdOrderPlacement.mjs +1 -1
  40. package/dist/components/webtrade/EaeraCfdWatchlist.mjs +1 -1
  41. package/dist/components/webtrade/EaeraLightweightChart.mjs +1 -1
  42. package/dist/components/webtrade/EaeraOrderPlacement.mjs +1 -1
  43. package/dist/components/webtrade/EaeraOrderlineOverlay.mjs +1 -1
  44. package/dist/components/webtrade/EaeraTimeNSales.mjs +1 -1
  45. package/dist/components/webtrade/EaeraTradingTable.mjs +1 -1
  46. package/dist/components/webtrade/EaeraWatchlist.mjs +1 -1
  47. package/dist/design-system/components/_button.scss +48 -46
  48. package/dist/eaera-widgets-v2.es.js +8 -6
  49. package/dist/eaera-widgets-v2.umd.cjs +2 -2
  50. package/package.json +1 -1
  51. package/dist/components/chunks/EaeraButton-DGfjUoa6.mjs +0 -1
  52. package/dist/components/chunks/index-0bXWe0Hv.mjs +0 -1
  53. package/dist/components/chunks/index-uox7lRH5.mjs +0 -1
  54. package/dist/components/chunks/index-xImZAwVl.mjs +0 -1
@@ -1 +1 @@
1
- import{ElLoadingDirective as e}from"element-plus/es";import{ref as t,computed as a,watch as r,defineComponent as l,onMounted as o,onUnmounted as i,openBlock as n,createElementBlock as s,createElementVNode as c,unref as u,toDisplayString as d,Fragment as m,createCommentVNode as p,createVNode as v,withCtx as g,renderList as y,normalizeClass as f,createBlock as b,resolveDynamicComponent as w,shallowRef as x,nextTick as C,normalizeStyle as k,Teleport as T,Transition as L,withModifiers as S,createTextVNode as M,withDirectives as F,renderSlot as D}from"vue";import{b as P,a as O}from"./vendor-vueuse-core-B96HGhR7.mjs";import{isBusinessDay as _,ColorType as R,CandlestickSeries as E,AreaSeries as $,LineSeries as z,createChart as j}from"lightweight-charts";import{ElNotification as B}from"element-plus";import{Square as I,Columns2 as A,Rows2 as N,Columns3 as H,Rows3 as V,Grid2X2 as K,ChartCandlestick as W,Camera as U,Table as Y,Scan as Z,CalendarDays as q}from"@lucide/vue";import"./vendor-email-misspelled-0hsXkSSK.mjs";import"./vendor-unorm-Degftfa1.mjs";import"./useEaeraInputPhoneNumber-B72aLnQs.mjs";import"@element-plus/icons-vue";import"echarts/core";import"echarts/renderers";import"echarts/charts";import"echarts/components";import"vue-echarts";import"./vendor-currency-symbol-map-C-1fEG2R.mjs";import{useI18n as G}from"vue-i18n";import"./vendor-sortablejs-D3DyHO5Y.mjs";import{_ as X}from"./index-DaBf9nij.mjs";import{_ as J,O as Q}from"./index-iEvfkNT8.mjs";import{_ as ee}from"./_plugin-vue_export-helper-BCo6x5W8.mjs";import{_ as te}from"./EaeraDialog-uLsXC20k.mjs";import{_ as ae}from"./EaeraButton-DGfjUoa6.mjs";import{t as re,a as le}from"./vendor-html-to-image-DzdJgLib.mjs";import{_ as oe}from"./EaeraDivider-Dggvc36a.mjs";import ie from"../composite/EaeraDropdownV2.mjs";import{_ as ne}from"./EaeraTooltip-BIlULHv4.mjs";import{_ as se}from"./EaeraDatePicker-CAm9fHms.mjs";const ce={Candlestick:"candlestick",Line:"line",Area:"area"},ue={Single:"single",TwoRows:"two-rows",TwoCols:"two-cols",ThreeRows:"three-rows",ThreeCols:"three-cols",Four:"four"},de=e=>{switch(e){case ue.Single:return 1;case ue.TwoRows:case ue.TwoCols:return 2;case ue.ThreeRows:case ue.ThreeCols:return 3;case ue.Four:return 4;default:return 1}},me={OneMinute:"1m",FiveMinutes:"5m",FifteenMinutes:"15m",ThirtyMinutes:"30m",OneHour:"1h",FourHours:"4h",OneDay:"1d",OneWeek:"1w",OneMonth:"1mn"},he={OneDay:"1D",OneWeek:"1W",OneMonth:"1M",ThreeMonths:"3M",SixMonths:"6M",OneYear:"1Y",All:"ALL",Custom:"CUSTOM"},pe={Drawing:"drawing",Orderline:"orderline"},ve=[me.OneMinute,me.FiveMinutes,me.FifteenMinutes,me.ThirtyMinutes,me.OneHour,me.FourHours,me.OneDay,me.OneWeek,me.OneMonth],ge=[he.OneDay,he.OneWeek,he.OneMonth,he.ThreeMonths,he.SixMonths,he.OneYear,he.All,he.Custom],ye=[{value:ce.Candlestick,icon:"Candle3"},{value:ce.Line,icon:"LineChart2"},{value:ce.Area,icon:"AreaChart"}],fe=["download-image","copy-image-to-clipboard","open-image-in-new-tab"],be={[me.OneMinute]:60,[me.FiveMinutes]:300,[me.FifteenMinutes]:900,[me.ThirtyMinutes]:1800,[me.OneHour]:3600,[me.FourHours]:14400,[me.OneDay]:86400,[me.OneWeek]:604800,[me.OneMonth]:2592e3},we=(e,t=100,a=1.272)=>{const r=[],l=Math.floor(Date.now()/1e3),o=be[e]??900;let i=a;for(let n=t-1;n>=0;n--){const e=2e-4,t=i,a=t+15e-5*(Math.random()-.48)+(Math.random()-.5)*e,s=Math.max(t,a)+Math.random()*e*.6,c=Math.min(t,a)-Math.random()*e*.6,u=l-n*o;r.push({time:u,open:+t.toFixed(5),high:+s.toFixed(5),low:+c.toFixed(5),close:+a.toFixed(5)}),i=a}return r},xe=(e,l,o={})=>{const{t:i}=G(),n=t(e.selectedTimeRange??he.OneDay),s=t(e.customTimeRange??null),c=t(e.isExpanded??!1),u=P("multi-chart:layout",e.multiChartLayout??ue.Single),d=t("chart-0"),m=e.selectedTimeFrame??me.OneMinute,p=e.selectedChartType??ce.Candlestick,v=e.dataBarCount??100,g=P("multi-chart:configs",{"chart-0":{timeFrame:m,chartType:p}}),y=e.symbol??"",f=e.overlaySubtitle??"",b=P("multi-chart:symbols",{"chart-0":y}),w=P("multi-chart:descriptions",{"chart-0":f}),x=t(null),C=a(()=>{const e=de(u.value);return Array.from({length:e},(e,t)=>`chart-${t}`)});r(C,e=>{const t=u.value,a={...g.value},r={...w.value},l={...b.value};try{const t={...a},o={...r},i={...l},n=t["chart-0"]??{timeFrame:m,chartType:p},s=o["chart-0"]??f,c=i["chart-0"]??y;e.forEach(e=>{const a=t[e];a&&a.timeFrame&&a.chartType||(t[e]={...n}),o[e]||(o[e]=s),i[e]||(i[e]=c)});const u={},d={},v={};e.forEach(e=>{if(!t[e]||!o[e]||!i[e])throw new Error(`Incomplete config for chart pane "${e}"`);u[e]=t[e],d[e]=o[e],v[e]=i[e]}),g.value=u,w.value=d,b.value=v}catch(o){console.error("Failed to expand chart layout:",o),u.value=t,g.value=a,w.value=r,b.value=l,B.error({message:i("chart.multi-chart.error.expansion-failed"),duration:5e3})}},{immediate:!0}),r(()=>e.selectedTimeFrame,e=>{if(e){const t=d.value;g.value[t]&&(g.value[t]={...g.value[t],timeFrame:e})}}),r(()=>e.selectedChartType,e=>{if(e){const t=d.value;g.value[t]&&(g.value[t]={...g.value[t],chartType:e})}}),r(()=>e.selectedTimeRange,e=>{e&&(n.value=e)}),r(()=>e.customTimeRange,e=>{void 0!==e&&(s.value=e??null)}),r(()=>e.isExpanded,e=>{"boolean"==typeof e&&(c.value=e)}),r(()=>e.multiChartLayout,e=>{e&&(u.value=e)}),r(()=>e.symbol,e=>{const t=d.value;if(void 0!==e&&b.value[t]!==e){b.value={...b.value,[t]:e};const{[t]:a,...r}=R.value;R.value=r}}),r(d,t=>{const a=b.value[t];void 0!==a&&a!==e.symbol&&l("activeSymbolChange",a)}),r(()=>e.overlaySubtitle,e=>{const t=d.value,a=e??"";w.value[t]!==a&&(w.value={...w.value,[t]:a})});const k=(e,t)=>{const a=i(e);return"string"==typeof a&&a.trim().length>0?a:t},T=a(()=>ve.map(e=>({label:k(`chart.time-frame.${e}`,e),value:e}))),L=a(()=>ge.map(e=>({label:k(`chart.time-range.${e}`,e),value:e}))),S=a(()=>ye.map(e=>({label:k(`chart.type.${e.value}`,e.value),value:e.value,icon:e.icon,chartIcon:e.icon}))),M=a(()=>fe.map(e=>"download-image"===e?{value:e,label:k("chart.snapshot.download-image","Download image"),desc:k("chart.snapshot.download-image-shortcut","Ctrl + Alt + S")}:"copy-image-to-clipboard"===e?{value:e,label:k("chart.snapshot.copy-image-to-clipboard","Copy image"),desc:k("chart.snapshot.copy-image-to-clipboard-shortcut","Ctrl + Shift + S")}:{value:e,label:k("chart.snapshot.open-in-new-tab","Open in new tab"),desc:k("chart.snapshot.open-in-new-tab-shortcut","Alt + S")})),F=a(()=>g.value[d.value]??{timeFrame:m,chartType:p}),D=a(()=>e.chartData&&e.chartData.length>0?e.chartData:we(F.value.timeFrame,v)),O=a(()=>{const e=D.value;return e.length>0?e[e.length-1].close:null}),_=a(()=>({selectedTimeFrame:F.value.timeFrame,selectedTimeRange:n.value,selectedChartType:F.value.chartType,customTimeRange:s.value,isExpanded:c.value,isLoading:e.isLoading??!1}));r(_,e=>{l("stateChange",e)},{immediate:!0});const R=t({}),E=e=>g.value[e]?.timeFrame??m,$=async e=>{const t=o.snapshotTargetRef?.value;if(t)switch(e){case"download-image":await(async e=>{try{const t=await re(e,{quality:1,pixelRatio:2}),a=document.createElement("a");a.href=t,a.download=`chart-snapshot-${Date.now()}.png`,a.click()}catch(t){console.error("Failed to download chart image:",t),B.error({message:i("chart.snapshot.error.download"),duration:5e3})}})(t);break;case"copy-image-to-clipboard":await(async e=>{try{const t=await le(e,{quality:1,pixelRatio:2});if(!t?.type||"undefined"==typeof ClipboardItem)throw new Error("Failed to generate image blob");const a=new ClipboardItem({[t.type]:t});await navigator.clipboard.write([a])}catch(t){console.error("Failed to copy chart image to clipboard:",t),B.error({message:i("chart.snapshot.error.copy"),duration:5e3})}})(t);break;case"open-image-in-new-tab":await(async e=>{try{const t=await re(e,{quality:1,pixelRatio:2}),a=window.open();a&&(a.document.write(`\n <html>\n <head><title>Chart Snapshot</title></head>\n <body style="margin:0;display:flex;justify-content:center;align-items:center;min-height:100vh;background:#000;">\n <img src="${t}" style="max-width:100%;max-height:100vh;" />\n </body>\n </html>\n `),a.document.close())}catch(t){console.error("Failed to open chart image in new tab:",t),B.error({message:i("chart.snapshot.error.open"),duration:5e3})}})(t)}};return{symbol:a(()=>e.symbol??""),overlaySubtitle:a(()=>e.overlaySubtitle??""),chartData:D,selectedTimeFrame:a(()=>F.value.timeFrame),selectedTimeRange:a(()=>n.value),selectedChartType:a(()=>F.value.chartType),customTimeRange:a(()=>s.value),timeFrameOptions:a(()=>e.timeFrameOptions&&e.timeFrameOptions.length>0?e.timeFrameOptions:T.value),timeRangeOptions:a(()=>e.timeRangeOptions&&e.timeRangeOptions.length>0?e.timeRangeOptions:L.value),chartTypeOptions:a(()=>e.chartTypeOptions&&e.chartTypeOptions.length>0?e.chartTypeOptions:S.value),snapshotOptions:a(()=>void 0!==e.snapshotOptions?e.snapshotOptions:M.value),isLoading:a(()=>e.isLoading??!1),isExpanded:a(()=>c.value),isMultiChart:a(()=>u.value!==ue.Single),multiChartLayout:a(()=>u.value),chartIds:C,selectedChartId:a(()=>d.value),activeChartLastPrice:O,tickSize:a(()=>e.tickSize),dark:a(()=>e.dark),chartDomId:a(()=>e.chartDomId??"eaera-lightweight-chart-canvas"),overlayTitle:a(()=>e.overlayTitle??""),state:_,getTimeFrameForChart:E,getChartTypeForChart:e=>g.value[e]?.chartType??p,getChartDataForChart:t=>{if(e.chartData&&e.chartData.length>0)return e.chartData;const a=E(t),r=R.value[t];if(r&&r.length>0){const e=be[a],t=r[r.length-1].time,l=Math.floor(Date.now()/1e3)-e;if(Math.abs(t-l)<2*e)return r}const l=we(a,v);return R.value={...R.value,[t]:l},l},getSymbolForChart:e=>b.value[e]??y,getSymbolDescriptionForChart:e=>w.value[e]??f,onResize:(e,t)=>l("resize",e,t),onChangeTimeFrame:e=>{const t=d.value;g.value[t]&&(g.value[t]={...g.value[t],timeFrame:e}),l("changeTimeFrame",e)},onChangeTimeRange:e=>{n.value=e,l("changeTimeRange",e)},onChangeChartType:e=>{const t=d.value;g.value[t]&&(g.value[t]={...g.value[t],chartType:e}),l("changeChartType",e)},onChangeCustomRange:e=>{s.value=e,l("changeCustomRange",e)},onLoadMoreLeft:()=>l("loadMoreLeft"),onSnapshot:async e=>{await $(e)},onToggleExpanded:()=>{c.value=!c.value,l("toggleExpanded")},onChangeMultiChartLayout:e=>{const t=u.value,a=de(t),r=de(e);if(r<a)return void(x.value=e);if(r>a){const e={...g.value},t={...w.value},l={...b.value},o=d.value,i=e[o]??e["chart-0"],n=t[o]??f,s=l[o]??y;for(let c=a;c<r;c++){const a=`chart-${c}`;e[a]||(e[a]={...i}),t[a]||(t[a]=n),l[a]||(l[a]=s)}g.value=e,w.value=t,b.value=l}u.value=e;parseInt(d.value.split("-")[1]??"0",10)>=r&&(d.value="chart-0"),l("changeMultiChartLayout",e)},onSelectChart:e=>{d.value=e},confirmLayoutSwitch:e=>{const t=x.value;if(!t)return;const a=de(t),r={},o={},i={};e.slice(0,a).forEach((e,t)=>{const a=`chart-${t}`;r[a]=g.value[e]??{timeFrame:m,chartType:p},o[a]=w.value[e]??f,i[a]=b.value[e]??y}),g.value=r,w.value=o,b.value=i,d.value="chart-0",u.value=t,x.value=null,l("changeMultiChartLayout",t)},cancelLayoutSwitch:()=>{x.value=null},pendingLayoutSwitch:a(()=>x.value)}},Ce=e=>e,ke={class:"p-2.5"},Te={class:"w-full h-8 flex items-center justify-between"},Le={class:"h-full flex items-center gap-1"},Se={key:0,class:"flex items-center gap-1 text-label-lg text-[var(--er-text-primary)]"},Me={class:"whitespace-nowrap"},Fe={class:"text-[var(--er-text-secondary)] whitespace-nowrap"},De={class:"flex items-center"},Pe={type:"button",class:"flex items-center justify-center h-8 px-3 border-none rounded-lg bg-transparent text-label-lg text-[var(--er-text-primary)] cursor-pointer hover:bg-[var(--er-surface-hover)]"},Oe={class:"flex items-center"},_e={type:"button",class:"flex items-center justify-center w-8 h-8 p-0 border-none rounded-lg bg-transparent text-[var(--er-icon-primary)] cursor-pointer hover:bg-[var(--er-surface-hover)]"},Re={class:"h-full flex items-center gap-1"},Ee={class:"flex items-center"},$e={type:"button",class:"flex items-center justify-center h-8 px-3 border-none rounded-lg bg-transparent text-label-lg text-[var(--er-text-primary)] cursor-pointer hover:bg-[var(--er-surface-hover)]"},ze={class:"flex items-center"},je={type:"button",class:"flex items-center justify-center w-8 h-8 p-0 border-none rounded-lg bg-transparent text-[var(--er-icon-primary)] cursor-pointer hover:bg-[var(--er-surface-hover)]"},Be={key:1,class:"flex items-center"},Ie={type:"button",class:"flex items-center justify-center w-8 h-8 p-0 border-none rounded-lg bg-transparent text-[var(--er-icon-primary)] cursor-pointer hover:bg-[var(--er-surface-hover)]"},Ae={key:0,class:"text-body-xs text-[var(--er-text-secondary)]"},Ne={class:"flex items-center"},He={type:"button",class:"flex items-center justify-center w-8 h-8 p-0 border-none rounded-lg bg-transparent text-[var(--er-icon-primary)] cursor-pointer hover:bg-[var(--er-surface-hover)]"},Ve={class:"flex flex-col gap-2 py-4 px-3 min-w-[150px]"},Ke={class:"flex items-center gap-3"},We={class:"w-4"},Ue=["onClick"],Ye=l({__name:"EaeraLightweightChartHeader",props:{context:{}},setup(e){const t=e,{t:r}=G(),{symbol:l,overlayTitle:x,overlaySubtitle:C,selectedTimeFrame:k,timeFrameOptions:T,chartTypeOptions:L,snapshotOptions:S,isExpanded:M,isMultiChart:F,multiChartLayout:D,onChangeTimeFrame:P,onChangeChartType:O,onSnapshot:_,onToggleExpanded:R,onChangeMultiChartLayout:E}=t.context,$=a(()=>T.value.map(e=>({label:e.label,value:e.value,itemClick:()=>P(e.value)}))),z=a(()=>L.value.map(e=>({label:e.label,value:e.value,itemClick:()=>O(e.value)}))),j=a(()=>S.value.map(e=>({label:e.label,value:e.value,desc:e.desc,itemClick:()=>_(e.value)}))),B=a(()=>[{order:1,options:[{icon:I,id:ue.Single}]},{order:2,options:[{icon:A,id:ue.TwoCols},{icon:N,id:ue.TwoRows}]},{order:3,options:[{icon:H,id:ue.ThreeCols},{icon:V,id:ue.ThreeRows}]},{order:4,options:[{icon:K,id:ue.Four}]}]),q=a(()=>C.value||x.value||""),X=a(()=>{const e=`chart.time-frame.sc.${k.value}`,t=r(e);if("string"==typeof t&&t.trim().length>0&&t!==e)return t;const a=T.value.find(e=>e.value===k.value);return a?.label??k.value}),J=e=>{const t=e.key.toLowerCase();return"escape"===t&&M.value?(e.preventDefault(),void R()):"s"===t?e.ctrlKey&&e.altKey&&!e.shiftKey?(e.preventDefault(),void _("download-image")):e.ctrlKey&&e.shiftKey&&!e.altKey?(e.preventDefault(),void _("copy-image-to-clipboard")):void(!e.altKey||e.ctrlKey||e.shiftKey||(e.preventDefault(),_("open-image-in-new-tab"))):void 0};return o(()=>window.addEventListener("keydown",J)),i(()=>window.removeEventListener("keydown",J)),(e,t)=>{const a=ne,r=ie,o=oe;return n(),s("div",ke,[c("div",Te,[c("div",Le,[u(F)?(n(),s(m,{key:1},[c("div",De,[v(r,{"use-menu":"","dropdown-options":$.value},{menu_item:g(({data:e})=>[c("div",null,d(e.label),1)]),default:g(()=>[c("button",Pe,[v(a,{placement:"right",content:e.$t("chart.tools.tooltip.time-frame")},{default:g(()=>[c("span",null,d(X.value),1)]),_:1},8,["content"])])]),_:1},8,["dropdown-options"])]),v(o,{direction:"vertical"}),c("div",Oe,[v(r,{"use-menu":"","dropdown-options":z.value},{menu_item:g(({data:e})=>[c("div",null,d(e.label),1)]),default:g(()=>[c("button",_e,[v(a,{placement:"right",content:e.$t("chart.tools.tooltip.chart-type-selector")},{default:g(()=>[v(u(W),{size:20,"stroke-width":"1.2","absolute-stroke-width":""})]),_:1},8,["content"])])]),_:1},8,["dropdown-options"])])],64)):(n(),s("div",Se,[c("span",Me,d(u(l)),1),q.value?(n(),s(m,{key:0},[t[1]||(t[1]=c("span",{class:"text-[var(--er-text-secondary)]"},"/",-1)),c("span",Fe,d(q.value),1)],64)):p("",!0)]))]),c("div",Re,[u(F)?p("",!0):(n(),s(m,{key:0},[c("div",Ee,[v(r,{"use-menu":"","dropdown-options":$.value},{menu_item:g(({data:e})=>[c("div",null,d(e.label),1)]),default:g(()=>[c("button",$e,[v(a,{placement:"right",content:e.$t("chart.tools.tooltip.time-frame")},{default:g(()=>[c("span",null,d(X.value),1)]),_:1},8,["content"])])]),_:1},8,["dropdown-options"])]),v(o,{direction:"vertical"}),c("div",ze,[v(r,{"use-menu":"","dropdown-options":z.value},{menu_item:g(({data:e})=>[c("div",null,d(e.label),1)]),default:g(()=>[c("button",je,[v(a,{placement:"right",content:e.$t("chart.tools.tooltip.chart-type-selector")},{default:g(()=>[v(u(W),{size:20,"stroke-width":"1.2","absolute-stroke-width":""})]),_:1},8,["content"])])]),_:1},8,["dropdown-options"])])],64)),u(S).length?(n(),s("div",Be,[v(r,{"use-menu":"","dropdown-options":j.value},{menu_item:g(({data:e})=>[c("div",null,[c("div",null,d(e.label),1),e.desc?(n(),s("div",Ae,d(e.desc),1)):p("",!0)])]),default:g(()=>[c("button",Ie,[v(a,{placement:"right",content:e.$t("chart.tools.tooltip.snapshot")},{default:g(()=>[v(u(U),{size:20,"stroke-width":"1.2","absolute-stroke-width":""})]),_:1},8,["content"])])]),_:1},8,["dropdown-options"])])):p("",!0),c("div",Ne,[v(r,null,{dropdown:g(()=>[c("div",Ve,[(n(!0),s(m,null,y(B.value,(e,t)=>(n(),s("div",{key:t},[c("div",Ke,[c("span",We,d(e.order),1),(n(!0),s(m,null,y(e.options,(e,t)=>(n(),s("div",{key:t,class:f(["cursor-pointer p-[2px] border rounded-xs transition-colors",u(D)===e.id?"border-[var(--er-border-action)] bg-[var(--er-surface-elevated)] text-[var(--er-text-brand)]":"border-[var(--er-border-default)] hover:bg-[var(--er-surface-muted)]"]),onClick:t=>u(E)(e.id)},[(n(),b(w(e.icon),{size:20}))],10,Ue))),128))])]))),128))])]),default:g(()=>[c("button",He,[v(a,{placement:"right",content:e.$t("chart.tools.tooltip.multi-chart")},{default:g(()=>[v(u(Y),{size:20,"stroke-width":"1.2","absolute-stroke-width":""})]),_:1},8,["content"])])]),_:1})]),c("button",{type:"button",class:"flex items-center justify-center w-8 h-8 p-0 border-none rounded-lg bg-transparent text-[var(--er-icon-primary)] cursor-pointer hover:bg-[var(--er-surface-hover)]",onClick:t[0]||(t[0]=(...e)=>u(R)&&u(R)(...e))},[v(a,{placement:"bottom",content:e.$t("chart.tools.tooltip.fullscreen")},{default:g(()=>[v(u(Z),{size:20,"stroke-width":"1.2","absolute-stroke-width":""})]),_:1},8,["content"])])])])])}}}),Ze={class:"border-t border-[var(--er-border-default)] px-3 py-2"},qe={class:"flex justify-between items-center h-6"},Ge={class:"h-full flex items-center gap-2 select-none"},Xe={class:"h-full flex items-center gap-0.5"},Je=["onClick"],Qe={class:"h-full flex items-center select-none"},et={class:"text-label-md text-[var(--er-text-primary)] whitespace-nowrap","aria-live":"polite"},tt=l({__name:"EaeraLightweightChartFooter",props:{context:{}},setup(e){const r=e,{selectedTimeRange:l,timeRangeOptions:p,onChangeTimeRange:g,onChangeTimeFrame:b,onChangeCustomRange:w}=r.context,x=t(null),C=a(()=>p.value.filter(e=>e.value!==he.Custom)),k=(e,t)=>{g(e),b(t)},T=()=>{x.value?.handleOpen()},L=e=>{if(!e||2!==e.length)return;const t={startDate:e[0],endDate:e[1]};w(t),k(he.Custom,me.ThirtyMinutes)},S=e=>{const t=Intl.DateTimeFormat().resolvedOptions().timeZone||"UTC",a=-e.getTimezoneOffset(),r=`UTC${a>=0?"+":"-"}${String(Math.floor(Math.abs(a)/60)).padStart(2,"0")}:${String(Math.abs(a)%60).padStart(2,"0")}`;return`${new Intl.DateTimeFormat("en-US",{timeZone:t,year:"numeric",month:"long",day:"numeric"}).format(e)} ${new Intl.DateTimeFormat("en-US",{timeZone:t,hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!1}).format(e)} ${r}`},M=t("");let F;const D=()=>{M.value=S(new Date)};return o(()=>{D(),F=window.setInterval(D,1e3)}),i(()=>{void 0!==F&&clearInterval(F)}),(e,t)=>{const a=oe;return n(),s("div",Ze,[c("div",qe,[c("div",Ge,[c("div",Xe,[(n(!0),s(m,null,y(C.value,e=>(n(),s("button",{key:e.value,type:"button",class:f(["h-full flex items-center px-1 border-none rounded text-label-md text-[var(--er-text-primary)] cursor-pointer whitespace-nowrap bg-transparent hover:bg-[var(--er-surface-elevated)]",{"bg-[var(--er-surface-elevated)]":u(l)===e.value}]),onClick:t=>(e=>{switch(e){case he.OneDay:k(he.OneDay,me.OneMinute);break;case he.OneWeek:k(he.OneWeek,me.ThirtyMinutes);break;case he.OneMonth:k(he.OneMonth,me.ThirtyMinutes);break;case he.ThreeMonths:k(he.ThreeMonths,me.OneDay);break;case he.SixMonths:k(he.SixMonths,me.OneWeek);break;default:k(e,me.OneWeek)}})(e.value)},d(e.label),11,Je))),128)),v(a,{direction:"vertical",class:"mx-1"}),c("button",{type:"button",class:"flex items-center justify-center w-6 h-6 p-0 border-none rounded bg-transparent text-[var(--er-icon-primary)] cursor-pointer hover:bg-[var(--er-surface-hover)]",onClick:T},[v(u(q),{size:20,"absolute-stroke-width":"","stroke-width":"1.2"})]),v(u(se),{ref_key:"customDateRef",ref:x,"value-format":"YYYY-MM-DD",type:"daterange",class:"hidden",onChange:L},null,512)])]),c("div",Qe,[c("span",et,d(M.value),1)])])])}}}),at=(e,t,a=6)=>{if(!e.length||a<=0)return e;const r=Math.max(1,Math.floor((e=>({[me.OneMinute]:6e4,[me.FiveMinutes]:3e5,[me.FifteenMinutes]:9e5,[me.ThirtyMinutes]:18e5,[me.OneHour]:36e5,[me.FourHours]:144e5,[me.OneDay]:864e5,[me.OneWeek]:6048e5,[me.OneMonth]:2592e6}[e]))(t)/1e3)),l=e[e.length-1]?.time;if("number"!=typeof l||Number.isNaN(l))return e;const o=Array.from({length:a},(e,t)=>({time:l+r*(t+1)}));return[...e,...o]},rt=e=>{const t=lt(e);return t?((e,t)=>new Intl.DateTimeFormat(void 0,{timeZone:"UTC",...t}).format(e))(t,{day:"2-digit",month:"2-digit",year:"numeric",hour:"2-digit",minute:"2-digit",hour12:!1}):""},lt=e=>{if(null==e)return null;if("number"==typeof e)return new Date(1e3*e);if("string"==typeof e){const t=new Date(e);return Number.isNaN(t.getTime())?null:t}return _(e)?new Date(e.year,e.month-1,e.day):null},ot=e=>e?{surfacePrimary:"#191D23",surfacePositive:"#16c784",surfaceNegative:"#ef4444",surfaceElevated:"#323A45",textPrimary:"#F0F1F3",textSecondary:"#B1B9C5",borderPrimary:"#323A45",borderPrimaryInverse:"#D8DCE2",borderAction:"#A259FB",areaTop:"#A259FB4D",areaBottom:"#A259FB0D"}:{surfacePrimary:"white",surfacePositive:"#16c784",surfaceNegative:"#ef4444",surfaceElevated:"#d8dce2",textPrimary:"#0f1115",textSecondary:"#4b5768",borderPrimary:"#d8dce2",borderPrimaryInverse:"#323a45",borderAction:"#A259FB",areaTop:"#A259FB4D",areaBottom:"#A259FB0D"},it=e=>{const t={width:0,height:0};const a=(e=>{const t=ot(e);return{background:{type:R.Solid,color:t.surfacePrimary},textColor:t.textSecondary}})(e),r=(e=>{const t=ot(e);return{vertLines:{color:t.borderPrimary,visible:!0,style:0},horzLines:{color:t.borderPrimary,visible:!0,style:0}}})(e),l=(e=>{const t=ot(e);return{mode:0,vertLine:{color:t.borderPrimaryInverse,width:1,style:3,visible:!0,labelVisible:!0,labelBackgroundColor:t.surfaceElevated},horzLine:{color:t.borderPrimaryInverse,width:1,style:3,visible:!0,labelVisible:!0,labelBackgroundColor:t.surfacePositive}}})(e),o=(e=>{const t=ot(e);return{rightPriceScale:{borderColor:t.borderPrimary,scaleMargins:{top:.3,bottom:.1},textColor:t.textSecondary},timeScale:{borderColor:t.borderPrimary,timeVisible:!0,rightOffsetPixels:48,allowShiftVisibleRangeOnWhitespaceReplacement:!0,textColor:t.textSecondary}}})(e);return{...t,layout:a,grid:r,crosshair:l,localization:{timeFormatter:e=>rt(e)},...o}},nt=e=>{const t=ot(e);return{upColor:t.surfacePositive,downColor:t.surfaceNegative,borderVisible:!1,wickUpColor:t.surfacePositive,wickDownColor:t.surfaceNegative}},st=["id"],ct={class:"absolute top-2 left-2 z-10 flex gap-x-4 gap-y-1 flex-wrap w-full"},ut={key:0,class:"text-label-lg font-semibold max-w-[calc(100%-1rem)]"},dt={class:"text-[var(--er-text-secondary)] whitespace-nowrap"},mt={key:1,class:"flex flex-wrap gap-x-2 gap-y-0.5 text-label-lg font-semibold max-w-[calc(100%-1rem)]"},ht={class:"text-[var(--er-text-secondary)]"},pt={class:"text-[var(--er-text-secondary)]"},vt={class:"text-[var(--er-text-secondary)]"},gt={class:"text-[var(--er-text-secondary)]"},yt=l({__name:"EaeraChartCanvas",props:{chartData:{default:()=>[]},selectedChartType:{default:ce.Candlestick},selectedTimeFrame:{default:me.OneMinute},dark:{type:Boolean,default:!1},tickSize:{default:null},symbol:{default:""},symbolDescription:{default:""},isMultiChart:{type:Boolean,default:!1},chartDomId:{default:void 0},openLabel:{default:"O"},highLabel:{default:"H"},lowLabel:{default:"L"},closeLabel:{default:"C"}},emits:["loadMoreLeft","resize"],setup(e,{expose:l,emit:u}){const m=e,v=u,g="undefined"!=typeof crypto&&crypto.randomUUID?crypto.randomUUID().slice(0,8):Math.random().toString(36).slice(2,10),y=a(()=>m.chartDomId??`eaera-chart-canvas-${g}`),f=x(null),b=x(null),{width:w,height:T}=O(f),L=x(null),S=x(null),M=t(0),F=()=>{M.value+=1},D={openPrice:null,highPrice:null,lowPrice:null,closePrice:null,time:null,state:null,symbolLabel:m.symbol},P=x({...D}),_=a(()=>P.value.state?{color:`var(--er-text-${P.value.state})`}:{}),R=a(()=>m.dark??!1),B=a(()=>{const e=Number(m.tickSize??.01);return!Number.isFinite(e)||e<=0?.01:e}),I=e=>{if(!Number.isFinite(e)||e<=0)return 2;const t=e.toLocaleString("en-US",{useGrouping:!1,maximumFractionDigits:20}),a=(t.includes(".")?t.replace(/0+$/,"").replace(/\.$/,""):t).split(".")[1];return a?a.length:0},A=e=>Number.isFinite(e)?Number(e.toFixed(I(B.value))):e,N=a(()=>{const e=new Map;return m.chartData.forEach(t=>{e.set(t.time,t)}),e}),H=a(()=>{const e=at(m.chartData,m.selectedTimeFrame,30);return m.selectedChartType===ce.Line||m.selectedChartType===ce.Area?e.map(e=>"open"in e?{time:e.time,value:e.close}:{time:e.time}):e}),V=a(()=>m.chartData.map(e=>e.time)),K=()=>{P.value={...D,symbolLabel:m.symbol}},W=()=>{S.value&&L.value&&(S.value.applyOptions({priceFormat:{type:"price",precision:I(B.value),minMove:B.value}}),L.value.priceScale("right").applyOptions({ticksVisible:!1,ensureEdgeTickMarksVisible:!0}))},U=()=>{L.value&&S.value&&(L.value.removeSeries(S.value),S.value=null)},Y=e=>{if(L.value){switch(U(),e){case ce.Candlestick:S.value=L.value.addSeries(E,nt(R.value));break;case ce.Line:S.value=L.value.addSeries(z,(t=R.value,{color:ot(t).borderAction,lineWidth:2,lineStyle:0,crosshairMarkerVisible:!0,crosshairMarkerRadius:4}));break;case ce.Area:S.value=L.value.addSeries($,(e=>{const t=ot(e);return{lineColor:t.borderAction,topColor:t.areaTop,bottomColor:t.areaBottom,lineWidth:2,lineStyle:0,crosshairMarkerVisible:!0,crosshairMarkerRadius:4}})(R.value));break;default:S.value=L.value.addSeries(E,nt(R.value))}var t;W(),F()}},Z=()=>{S.value&&(S.value.setData(H.value),W(),F())};let q=null,G=null;const X=()=>{L.value&&(q&&(L.value.unsubscribeCrosshairMove(q),q=null),G&&(L.value.timeScale().unsubscribeVisibleLogicalRangeChange(G),G=null))},J=()=>{((e,t)=>{L.value&&(L.value.applyOptions({width:e,height:t}),F(),v("resize",e,t))})(Math.max(0,w.value),Math.max(0,T.value))},Q=()=>{b.value&&(L.value=j(b.value,it(R.value)),F(),Y(m.selectedChartType),Z(),L.value&&(X(),q=e=>{const t="number"==typeof e.time?e.time:null;if(null===t)return void K();const a=N.value.get(t);a?P.value={openPrice:A(a.open),highPrice:A(a.high),lowPrice:A(a.low),closePrice:A(a.close),time:t,state:a.close>=a.open?"success":"error",symbolLabel:m.symbol}:K()},G=e=>{e&&e.from<=10&&v("loadMoreLeft")},L.value.subscribeCrosshairMove(q),L.value.timeScale().subscribeVisibleLogicalRangeChange(G)),J())};return r([w,T],J),r(()=>m.selectedChartType,e=>{Y(e),Z()}),r([()=>m.chartData,()=>m.selectedTimeFrame,B],()=>{Z()}),r(R,()=>{L.value&&(L.value.applyOptions(it(R.value)),Y(m.selectedChartType),Z())},{immediate:!0}),r(()=>m.symbol,e=>{P.value.symbolLabel=e}),o(async()=>{await C(),Q()}),i(()=>{X(),U(),L.value&&(L.value.remove(),L.value=null,F()),K()}),l({chartInstance:L,currentSeries:S,chartRenderKey:M,crosshairData:P,chartDataTimes:V,roundPriceByTickSize:A,clearCrosshairData:K,syncSeriesData:Z}),(t,a)=>(n(),s("div",{ref_key:"containerRef",ref:f,class:"relative w-full h-full min-h-0 min-w-0"},[c("div",{id:y.value,ref_key:"chartRef",ref:b,class:"w-full h-full"},null,8,st),c("div",ct,[e.isMultiChart&&e.symbolDescription?(n(),s("div",ut,[c("span",dt,d(e.symbolDescription),1)])):p("",!0),null!==P.value.closePrice?(n(),s("div",mt,[c("div",null,[c("span",ht,d(e.openLabel),1),c("span",{style:k(_.value)},d(P.value.openPrice),5)]),c("div",null,[c("span",pt,d(e.highLabel),1),c("span",{style:k(_.value)},d(P.value.highPrice),5)]),c("div",null,[c("span",vt,d(e.lowLabel),1),c("span",{style:k(_.value)},d(P.value.lowPrice),5)]),c("div",null,[c("span",gt,d(e.closeLabel),1),c("span",{style:k(_.value)},d(P.value.closePrice),5)])])):p("",!0)])],512))}}),ft=l({__name:"EaeraLightweightChartDrawingPlugin",props:{chart:{},series:{},symbol:{},selectedTimeFrame:{},chartDataTimes:{},isDark:{type:Boolean},floatingTarget:{},headerHeight:{},footerHeight:{},config:{}},emits:["stateChange"],setup(e,{emit:t}){const r=e,l=t,o=a(()=>r.selectedTimeFrame),i=a(()=>({position:"absolute",left:"0px",right:"0px",top:`${r.headerHeight}px`,bottom:`${r.footerHeight}px`,height:"auto",zIndex:20})),s=e=>{l("stateChange",e)};return(t,a)=>(n(),b(u(X),{chart:e.chart,series:e.series,symbol:e.symbol,"selected-time-frame":o.value,"chart-data-times":e.chartDataTimes,drawings:e.config.drawings,"is-dark":e.isDark,"create-drawing":e.config.createDrawing,"update-drawing":e.config.updateDrawing,"delete-drawing":e.config.deleteDrawing,"load-drawings":e.config.loadDrawings,"delete-all-drawings":e.config.deleteAllDrawings,"floating-target":e.floatingTarget,"floating-layer-style":i.value,"show-sidebar":e.config.showSidebar??!0,"show-floating-toolbar":e.config.showFloatingToolbar??!0,onStateChange:s},null,8,["chart","series","symbol","selected-time-frame","chart-data-times","drawings","is-dark","create-drawing","update-drawing","delete-drawing","load-drawings","delete-all-drawings","floating-target","floating-layer-style","show-sidebar","show-floating-toolbar"]))}}),bt=l({__name:"EaeraLightweightChartOrderlinePlugin",props:{chart:{},series:{},renderKey:{},isDark:{type:Boolean},config:{}},emits:["stateChange"],setup(e,{expose:a,emit:r}){const l=e,o=r,i=t(null),s=e=>{l.config.onDeleteLine(e)},c=(e,t)=>{l.config.onLinePriceChange(e,t)},d=(e,t)=>{l.config.onLinePricePreview?.(e,t)},m=e=>{l.config.onDragStateChange?.(e)},p=(e,t,a)=>{l.config.onSLTPChange?.(e,t,a)},v=e=>{o("stateChange",e)};return a({openMenu:e=>{i.value?.openMenu?.(e)}}),(t,a)=>(n(),b(u(J),{ref_key:"overlayRef",ref:i,"order-lines":e.config.orderLines,"chart-instance":e.chart,"series-instance":e.series,"order-line-tool":e.config.orderLineTool??null,"render-key":e.renderKey,"market-price":e.config.marketPrice??null,"tick-size":e.config.tickSize??null,dark:e.isDark,onDeleteLine:s,onLinePriceChange:c,onLinePricePreview:d,onDragStateChange:m,onSlTpChange:p,onStateChange:v},null,8,["order-lines","chart-instance","series-instance","order-line-tool","render-key","market-price","tick-size","dark"]))}}),wt=["onClick"],xt=.01,Ct="text-[color:var(--er-text-success)]",kt="text-[color:var(--er-text-danger)]",Tt="border-[color:var(--er-surface-muted)] bg-[color:var(--er-surface-elevated)]",Lt=ee(l({__name:"ChartContextMenu",props:{symbol:{},tickSize:{default:null}},emits:["action"],setup(e,{expose:r,emit:l}){const u=e,w=l,x=t(!1),C=t({x:0,y:0}),M=t(null),F=t("plot"),D=t(null),P=a(()=>({position:"fixed",zIndex:2,top:`${C.value.y}px`,left:`${C.value.x}px`})),O=["fixed","z-[2]","flex","flex-col","min-w-[240px]","py-2","border","rounded-sm","shadow-lg","surface-[var(--er-surface-page)]"],_=["flex","items-center","h-8","px-2","cursor-pointer","select-none","rounded-sm","hover:bg-[var(--er-action-neutral-subtle-hover)]"],R=["px-2","font-[family-name:var(--er-font-brand),system-ui,sans-serif]","text-[14px]","font-normal","leading-5","tracking-[0.018em]","text-[color:var(--er-action-neutral-default)]","whitespace-nowrap"];a(()=>[...O,Tt].join(" "));const E=a(()=>{const e=u.symbol||"GBPUSD",t=null!=M.value?M.value.toFixed(5):"—";return[{label:"Reset chart view",tone:"neutral",action:"reset-view"},..."plot"===F.value?[{label:`Buy Market 0.01 ${e}`,tone:"buy",action:"buy-market"},{label:`Sell Market 0.01 ${e}`,tone:"sell",action:"sell-market"},{label:`Buy Limit 0.01 ${e}`,tone:"buy",action:"buy-limit"},{label:`Sell Limit 0.01 ${e}`,tone:"sell",action:"sell-limit"},{label:`Buy Stop 0.01 ${e}`,tone:"buy",action:"buy-stop"},{label:`Buy Stop Limit 0.01 ${e}`,tone:"buy",action:"buy-stop-limit"},{label:`Sell Stop 0.01 ${e}`,tone:"sell",action:"sell-stop"},{label:`Sell Stop Limit 0.01 ${e}`,tone:"sell",action:"sell-stop-limit"},{label:"Lock vertical cursor line by time",tone:"neutral",action:"lock-cursor"}]:[],{label:`Copy price ${t}`,tone:"neutral",action:"copy-price"},{label:"Paste",tone:"neutral",action:"paste"}]}),$=new Set(["buy-limit","sell-limit","buy-stop","buy-stop-limit","sell-stop","sell-stop-limit"]),z={"buy-limit":{title:"Buy Limit",side:"buy",showStopLimitPrice:!1},"sell-limit":{title:"Sell Limit",side:"sell",showStopLimitPrice:!1},"buy-stop":{title:"Buy Stop",side:"buy",showStopLimitPrice:!1},"buy-stop-limit":{title:"Buy Stop Limit",side:"buy",showStopLimitPrice:!0},"sell-stop":{title:"Sell Stop",side:"sell",showStopLimitPrice:!1},"sell-stop-limit":{title:"Sell Stop Limit",side:"sell",showStopLimitPrice:!0}},j={"buy-market":{side:"buy",orderType:"market"},"sell-market":{side:"sell",orderType:"market"},"buy-limit":{side:"buy",orderType:"buy_limit"},"sell-limit":{side:"sell",orderType:"sell_limit"},"buy-stop":{side:"buy",orderType:"buy_stop"},"buy-stop-limit":{side:"buy",orderType:"buy_stop_limit"},"sell-stop":{side:"sell",orderType:"sell_stop"},"sell-stop-limit":{side:"sell",orderType:"sell_stop_limit"}},B=()=>{x.value=!1,D.value=null},I=()=>{D.value=null,x.value=!1},A=e=>{if(!D.value)return;const t=j[D.value.action];t&&(w("action",D.value.action,{symbol:u.symbol,price:e.price?Number(e.price):M.value,side:t.side,orderType:t.orderType,volume:e.volume?Number(e.volume):xt,stopLimitPrice:e.stopLimitPrice?Number(e.stopLimitPrice):void 0,takeProfit:e.takeProfitEnabled&&e.takeProfit?Number(e.takeProfit):void 0,stopLoss:e.stopLossEnabled&&e.stopLoss?Number(e.stopLoss):void 0,comment:e.comment||void 0}),I())},N=e=>{(x.value||D.value)&&B()},H=e=>{"Escape"===e.key&&(x.value||D.value)&&B()};return o(()=>{document.addEventListener("mousedown",N),document.addEventListener("keydown",H)}),i(()=>{document.removeEventListener("mousedown",N),document.removeEventListener("keydown",H)}),r({open:(e,t,a,r="plot")=>{C.value={x:e,y:t},M.value=a,F.value=r,D.value=null,x.value=!0},close:B}),(t,a)=>(n(),b(T,{to:"body"},[v(L,{name:"context-menu-fade"},{default:g(()=>[D.value?(n(),s("div",{key:0,class:f("fixed z-[2]"),style:k(P.value),onMousedown:a[0]||(a[0]=S(()=>{},["stop"]))},[v(Q,{title:D.value.title,"status-tag-text":D.value.statusTagText,side:D.value.side,symbol:e.symbol,"reference-price":M.value,"tick-size":e.tickSize,"show-stop-limit-price":D.value.showStopLimitPrice,"initial-comment":D.value.initialComment,onConfirm:A,onDiscard:I,onClose:I},null,8,["title","status-tag-text","side","symbol","reference-price","tick-size","show-stop-limit-price","initial-comment"])],36)):x.value?(n(),s("div",{key:1,class:f(O),style:k({top:`${C.value.y}px`,left:`${C.value.x}px`}),onClick:a[1]||(a[1]=S(()=>{},["stop"]))},[(n(!0),s(m,null,y(E.value,(e,t)=>{return n(),s("div",{key:t,class:f((e.tone,[..._].join(" "))),onClick:t=>(e=>{if("buy-market"===e.action||"sell-market"===e.action){const t=j[e.action];return w("action",e.action,{symbol:u.symbol,price:M.value,side:t.side,orderType:t.orderType,volume:xt}),void B()}if($.has(e.action)){const t=z[e.action];return void(D.value={action:e.action,title:t.title,statusTagText:`${t.title} 0.01`,side:t.side,showStopLimitPrice:t.showStopLimitPrice,initialComment:""})}w("action",e.action,{symbol:u.symbol,price:M.value}),B()})(e)},[c("span",{class:f((a=e.tone,"buy"===a?[...R,Ct].join(" "):"sell"===a?[...R,kt].join(" "):R.join(" ")))},d(e.label),3)],10,wt);var a}),128))],4)):p("",!0)]),_:1})]))}}),[["__scopeId","data-v-a1ce2602"]]),St={class:"flex flex-col gap-3 py-2"},Mt={class:"text-body-sm text-[var(--er-text-secondary)]"},Ft=["onClick"],Dt={class:"flex items-center gap-1.5"},Pt={key:0,width:"10",height:"10",viewBox:"0 0 12 12",fill:"none"},Ot={class:"text-label-md font-medium text-[var(--er-text-primary)] truncate"},_t={class:"flex justify-end gap-3"},Rt=l({__name:"SwitchMultiChartDialog",props:{isVisible:{type:Boolean},sourceLayout:{},sourcePanes:{},targetCount:{}},emits:["confirm","cancel"],setup(e,{emit:l}){const o=e,i=l,u=t([]),w={width:"120px",height:"64px"},x=a(()=>{switch(o.sourceLayout){case ue.TwoRows:case ue.ThreeRows:return"grid-cols-1";case ue.TwoCols:return"grid-cols-2";case ue.ThreeCols:return"grid-cols-3";case ue.Four:return"grid-cols-2 grid-rows-2";default:return"grid-cols-1"}}),C=e=>u.value.includes(e),k=()=>{u.value.length===o.targetCount&&i("confirm",[...u.value])},T=()=>{i("cancel")},L=()=>{i("cancel")};return r(()=>o.isVisible,e=>{e&&(u.value=o.sourcePanes.slice(0,o.targetCount).map(e=>e.id))},{immediate:!0}),(t,a)=>{const r=ae,l=te;return n(),b(l,{"dialog-visible":e.isVisible,width:"400px","append-body":"","destroy-on-close":"","close-on-click-modal":!0,"close-on-press-escape":!0,onClose:L},{header:g(()=>[...a[0]||(a[0]=[c("span",{class:"text-title-sm"},"Switch Multi-Chart",-1)])]),default:g(()=>[c("div",St,[c("span",Mt," Select "+d(e.targetCount)+" pane"+d(e.targetCount>1?"s":"")+" to keep* ",1),c("div",{class:f(["grid gap-1 justify-start",x.value])},[(n(!0),s(m,null,y(e.sourcePanes,e=>{return n(),s("div",{key:e.id,class:f(["flex flex-col items-center justify-center rounded-sm border cursor-pointer transition-colors p-2",C(e.id)?"border-[var(--er-border-action)] bg-[var(--er-surface-elevated)]":(t=e.id,!C(t)&&u.value.length>=o.targetCount?"border-[var(--er-border-default)] opacity-40 cursor-not-allowed":"border-[var(--er-border-default)] hover:bg-[var(--er-surface-muted)]")]),style:w,onClick:t=>(e=>{C(e)?u.value=u.value.filter(t=>t!==e):u.value.length>=o.targetCount||(u.value=[...u.value,e])})(e.id)},[c("div",Dt,[c("div",{class:f(["flex items-center justify-center w-4 h-4 rounded-sm border transition-colors shrink-0",C(e.id)?"border-[var(--er-border-action)] bg-[var(--er-border-action)]":"border-[var(--er-border-muted)]"])},[C(e.id)?(n(),s("svg",Pt,[...a[1]||(a[1]=[c("path",{d:"M10 3L4.5 8.5L2 6",stroke:"white","stroke-width":"1.5","stroke-linecap":"round","stroke-linejoin":"round"},null,-1)])])):p("",!0)],2),c("span",Ot,d(e.symbol||`Pane ${e.index+1}`),1)])],10,Ft);var t}),128))],2)])]),footer:g(()=>[c("div",_t,[v(r,{color:"secondary",onClick:T},{default:g(()=>[...a[2]||(a[2]=[M("Cancel",-1)])]),_:1}),v(r,{color:"primary",disabled:u.value.length!==e.targetCount,onClick:k},{default:g(()=>[...a[3]||(a[3]=[M(" Confirm ",-1)])]),_:1},8,["disabled"])])]),_:1},8,["dialog-visible"])}}}),Et={key:1,class:"relative w-full flex-1 min-h-0"},$t=["onClick"],zt=l({__name:"index",props:{symbol:{},chartData:{},selectedTimeFrame:{},selectedTimeRange:{},selectedChartType:{},customTimeRange:{},timeFrameOptions:{},timeRangeOptions:{},chartTypeOptions:{},snapshotOptions:{},isLoading:{type:Boolean},isExpanded:{type:Boolean},multiChartLayout:{},dataBarCount:{},tickSize:{},dark:{type:Boolean},chartDomId:{},overlayTitle:{},overlaySubtitle:{},openLabel:{},highLabel:{},lowLabel:{},closeLabel:{},plugins:{},drawingPlugin:{},orderlinePlugin:{}},emits:["resize","changeTimeFrame","changeTimeRange","changeChartType","changeCustomRange","loadMoreLeft","toggleExpanded","changeMultiChartLayout","stateChange","drawingStateChange","orderlineStateChange","contextMenuAction","activeSymbolChange"],setup(r,{expose:l,emit:o}){const i=r,c=o,d=x(null),g=xe(i,c,{snapshotTargetRef:d}),{isLoading:w,symbol:C,overlaySubtitle:k,chartData:T,selectedTimeFrame:L,selectedChartType:M,tickSize:P,dark:O,isMultiChart:_,multiChartLayout:R,chartIds:E,selectedChartId:$}=g,z=x(null),j=t({}),B=x(null),I=x(null),A=x(null),N=x(null),H=a(()=>O.value??!1),V=a(()=>B.value?.$el?.offsetHeight??0),K=a(()=>I.value?.$el?.offsetHeight??0),W=a(()=>E.value.map((e,t)=>({id:e,index:t,symbol:g.getSymbolForChart(e),description:g.getSymbolDescriptionForChart(e),timeFrame:g.getTimeFrameForChart(e)}))),U=a(()=>z.value?.chartInstance??null),Y=a(()=>z.value?.currentSeries??null),Z=a(()=>z.value?.chartRenderKey??0),q=a(()=>z.value?.chartDataTimes??[]),G=a(()=>i.plugins??[]),X=a(()=>i.drawingPlugin??null),J=a(()=>i.orderlinePlugin??null),Q=a(()=>G.value.includes(pe.Drawing)&&!!X.value),ee=a(()=>G.value.includes(pe.Orderline)&&!!J.value),te=a(()=>Q.value&&(X.value?.showSidebar??!0)),ae=e=>{c("drawingStateChange",e)},re=e=>{c("orderlineStateChange",e)},le=e=>{if(_.value)return;const t=z.value;if(!t)return;let a=t.crosshairData?.closePrice??null,r="plot";const l=t.chartInstance,o=t.currentSeries;if(l&&o){const i=l.chartElement().getBoundingClientRect(),n=e.clientY-i.top,s=o.coordinateToPrice(n);null!=s&&(a=t.roundPriceByTickSize?.(s));const c=l.priceScale("right").width(),u=l.priceScale("left").width(),d=e.clientX-i.left;(d<u||d>i.width-c)&&(r="axis")}A.value?.open(e.clientX,e.clientY,a,r)},oe=(e,t)=>{c("contextMenuAction",e,t)},ie=a(()=>["flex flex-1 flex-col min-h-0 min-w-0 h-full overflow-hidden relative rounded-xs bg-[var(--er-surface-page)]",{"rounded-l-none":te.value&&!_.value}]),ne=a(()=>{switch(R.value){case ue.TwoRows:case ue.ThreeRows:return"flex flex-col";case ue.TwoCols:case ue.ThreeCols:return"flex flex-row";case ue.Four:return"grid grid-cols-2 grid-rows-2";default:return"flex flex-row"}}),se=e=>["min-h-0 min-w-0 rounded-sm overflow-hidden ring-1 transition-all cursor-pointer",R.value===ue.Four?"h-full w-full":"flex-1",$.value===e?"ring-[var(--er-border-action)]":"ring-[var(--er-border-default)]"];return l({state:g.state,selectedTimeFrame:g.selectedTimeFrame,selectedTimeRange:g.selectedTimeRange,selectedChartType:g.selectedChartType,customTimeRange:g.customTimeRange,isExpanded:g.isExpanded,isMultiChart:g.isMultiChart,multiChartLayout:g.multiChartLayout,selectedChartId:g.selectedChartId,activeChartLastPrice:g.activeChartLastPrice,chartInstance:U,currentSeries:Y,chartRenderKey:Z,headerHeight:V,footerHeight:K,takeSnapshot:g.onSnapshot,openMenu:e=>{N.value?.openMenu?.(e)}}),(t,a)=>{const r=e;return n(),s("div",{class:"flex h-full w-full min-h-0 min-w-0 gap-1 overflow-hidden",onContextmenu:S(le,["prevent"])},[!u(_)&&Q.value&&X.value?(n(),b(ft,{key:0,chart:U.value,series:Y.value,symbol:u(C),"selected-time-frame":u(L),"chart-data-times":q.value,"is-dark":H.value,"floating-target":d.value,"header-height":V.value,"footer-height":K.value,config:X.value,onStateChange:ae},null,8,["chart","series","symbol","selected-time-frame","chart-data-times","is-dark","floating-target","header-height","footer-height","config"])):p("",!0),F((n(),s("div",{ref_key:"lightweightChartRef",ref:d,class:f(ie.value)},[!u(_)&&ee.value&&J.value?(n(),b(bt,{key:0,ref_key:"orderlinePluginRef",ref:N,chart:U.value,series:Y.value,"render-key":Z.value,"is-dark":H.value,config:J.value,onStateChange:re},null,8,["chart","series","render-key","is-dark","config"])):p("",!0),v(u(Ye),{ref_key:"headerRef",ref:B,context:u(g)},null,8,["context"]),u(_)?(n(),s("div",{key:2,class:f(["w-full flex-1 min-h-0 gap-2 p-1",ne.value])},[(n(!0),s(m,null,y(u(E),e=>(n(),s("div",{key:e,class:f(se(e)),onClick:t=>u(g).onSelectChart(e)},[v(yt,{ref_for:!0,ref:t=>((e,t)=>{j.value[e]=t??null})(e,t),"chart-data":u(g).getChartDataForChart(e),"selected-chart-type":u(g).getChartTypeForChart(e),"selected-time-frame":u(g).getTimeFrameForChart(e),dark:H.value,"tick-size":u(P),symbol:u(g).getSymbolForChart(e),"symbol-description":u(g).getSymbolDescriptionForChart(e),"is-multi-chart":!0,"open-label":i.openLabel,"high-label":i.highLabel,"low-label":i.lowLabel,"close-label":i.closeLabel,onLoadMoreLeft:u(g).onLoadMoreLeft},null,8,["chart-data","selected-chart-type","selected-time-frame","dark","tick-size","symbol","symbol-description","open-label","high-label","low-label","close-label","onLoadMoreLeft"])],10,$t))),128))],2)):(n(),s("div",Et,[v(yt,{ref_key:"primaryCanvasRef",ref:z,"chart-data":u(T),"selected-chart-type":u(M),"selected-time-frame":u(L),dark:H.value,"tick-size":u(P),symbol:u(C),"symbol-description":u(k),"is-multi-chart":!1,"open-label":i.openLabel,"high-label":i.highLabel,"low-label":i.lowLabel,"close-label":i.closeLabel,onLoadMoreLeft:u(g).onLoadMoreLeft,onResize:u(g).onResize},null,8,["chart-data","selected-chart-type","selected-time-frame","dark","tick-size","symbol","symbol-description","open-label","high-label","low-label","close-label","onLoadMoreLeft","onResize"])])),v(u(tt),{ref_key:"footerRef",ref:I,context:u(g)},null,8,["context"]),D(t.$slots,"chart-overlay")],2)),[[r,u(w)]]),u(_)?p("",!0):(n(),b(Lt,{key:1,ref_key:"contextMenuRef",ref:A,symbol:u(C),onAction:oe},null,8,["symbol"])),u(g).pendingLayoutSwitch.value?(n(),b(Rt,{key:2,"is-visible":!!u(g).pendingLayoutSwitch.value,"source-layout":u(R),"source-panes":W.value,"target-count":u(de)(u(g).pendingLayoutSwitch.value),onConfirm:u(g).confirmLayoutSwitch,onCancel:u(g).cancelLayoutSwitch},null,8,["is-visible","source-layout","source-panes","target-count","onConfirm","onCancel"])):p("",!0)],32)}}});export{ue as C,pe as E,me as T,zt as _,ce as a,he as b,de as g,xe as p,Ce as u};
1
+ import{ElLoadingDirective as e}from"element-plus/es";import{ref as t,computed as a,watch as r,defineComponent as l,onMounted as o,onUnmounted as i,openBlock as n,createElementBlock as s,createElementVNode as c,unref as u,toDisplayString as d,Fragment as m,createCommentVNode as p,createVNode as v,withCtx as g,renderList as y,normalizeClass as f,createBlock as b,resolveDynamicComponent as w,shallowRef as x,nextTick as C,normalizeStyle as k,Teleport as T,Transition as L,withModifiers as S,createTextVNode as M,withDirectives as F,renderSlot as D}from"vue";import{b as P,a as O}from"./vendor-vueuse-core-B96HGhR7.mjs";import{isBusinessDay as _,ColorType as R,CandlestickSeries as E,AreaSeries as $,LineSeries as z,createChart as j}from"lightweight-charts";import{ElNotification as B}from"element-plus";import{Square as I,Columns2 as A,Rows2 as N,Columns3 as H,Rows3 as V,Grid2X2 as K,ChartCandlestick as W,Camera as U,Table as Y,Scan as Z,CalendarDays as q}from"@lucide/vue";import"./vendor-email-misspelled-0hsXkSSK.mjs";import"./vendor-unorm-Degftfa1.mjs";import"./useEaeraInputPhoneNumber-B72aLnQs.mjs";import"@element-plus/icons-vue";import"echarts/core";import"echarts/renderers";import"echarts/charts";import"echarts/components";import"vue-echarts";import"./vendor-currency-symbol-map-C-1fEG2R.mjs";import{useI18n as G}from"vue-i18n";import"./vendor-sortablejs-D3DyHO5Y.mjs";import{_ as X}from"./index-DaBf9nij.mjs";import{_ as J,O as Q}from"./index-Cm-cRnqS.mjs";import{_ as ee}from"./_plugin-vue_export-helper-BCo6x5W8.mjs";import{_ as te}from"./EaeraDialog-uLsXC20k.mjs";import{_ as ae}from"./EaeraButton-BPVKRBOn.mjs";import{t as re,a as le}from"./vendor-html-to-image-DzdJgLib.mjs";import{_ as oe}from"./EaeraDivider-Dggvc36a.mjs";import ie from"../composite/EaeraDropdownV2.mjs";import{_ as ne}from"./EaeraTooltip-BIlULHv4.mjs";import{_ as se}from"./EaeraDatePicker-Bwt5r5gk.mjs";const ce={Candlestick:"candlestick",Line:"line",Area:"area"},ue={Single:"single",TwoRows:"two-rows",TwoCols:"two-cols",ThreeRows:"three-rows",ThreeCols:"three-cols",Four:"four"},de=e=>{switch(e){case ue.Single:return 1;case ue.TwoRows:case ue.TwoCols:return 2;case ue.ThreeRows:case ue.ThreeCols:return 3;case ue.Four:return 4;default:return 1}},me={OneMinute:"1m",FiveMinutes:"5m",FifteenMinutes:"15m",ThirtyMinutes:"30m",OneHour:"1h",FourHours:"4h",OneDay:"1d",OneWeek:"1w",OneMonth:"1mn"},he={OneDay:"1D",OneWeek:"1W",OneMonth:"1M",ThreeMonths:"3M",SixMonths:"6M",OneYear:"1Y",All:"ALL",Custom:"CUSTOM"},pe={Drawing:"drawing",Orderline:"orderline"},ve=[me.OneMinute,me.FiveMinutes,me.FifteenMinutes,me.ThirtyMinutes,me.OneHour,me.FourHours,me.OneDay,me.OneWeek,me.OneMonth],ge=[he.OneDay,he.OneWeek,he.OneMonth,he.ThreeMonths,he.SixMonths,he.OneYear,he.All,he.Custom],ye=[{value:ce.Candlestick,icon:"Candle3"},{value:ce.Line,icon:"LineChart2"},{value:ce.Area,icon:"AreaChart"}],fe=["download-image","copy-image-to-clipboard","open-image-in-new-tab"],be={[me.OneMinute]:60,[me.FiveMinutes]:300,[me.FifteenMinutes]:900,[me.ThirtyMinutes]:1800,[me.OneHour]:3600,[me.FourHours]:14400,[me.OneDay]:86400,[me.OneWeek]:604800,[me.OneMonth]:2592e3},we=(e,t=100,a=1.272)=>{const r=[],l=Math.floor(Date.now()/1e3),o=be[e]??900;let i=a;for(let n=t-1;n>=0;n--){const e=2e-4,t=i,a=t+15e-5*(Math.random()-.48)+(Math.random()-.5)*e,s=Math.max(t,a)+Math.random()*e*.6,c=Math.min(t,a)-Math.random()*e*.6,u=l-n*o;r.push({time:u,open:+t.toFixed(5),high:+s.toFixed(5),low:+c.toFixed(5),close:+a.toFixed(5)}),i=a}return r},xe=(e,l,o={})=>{const{t:i}=G(),n=t(e.selectedTimeRange??he.OneDay),s=t(e.customTimeRange??null),c=t(e.isExpanded??!1),u=P("multi-chart:layout",e.multiChartLayout??ue.Single),d=t("chart-0"),m=e.selectedTimeFrame??me.OneMinute,p=e.selectedChartType??ce.Candlestick,v=e.dataBarCount??100,g=P("multi-chart:configs",{"chart-0":{timeFrame:m,chartType:p}}),y=e.symbol??"",f=e.overlaySubtitle??"",b=P("multi-chart:symbols",{"chart-0":y}),w=P("multi-chart:descriptions",{"chart-0":f}),x=t(null),C=a(()=>{const e=de(u.value);return Array.from({length:e},(e,t)=>`chart-${t}`)});r(C,e=>{const t=u.value,a={...g.value},r={...w.value},l={...b.value};try{const t={...a},o={...r},i={...l},n=t["chart-0"]??{timeFrame:m,chartType:p},s=o["chart-0"]??f,c=i["chart-0"]??y;e.forEach(e=>{const a=t[e];a&&a.timeFrame&&a.chartType||(t[e]={...n}),o[e]||(o[e]=s),i[e]||(i[e]=c)});const u={},d={},v={};e.forEach(e=>{if(!t[e]||!o[e]||!i[e])throw new Error(`Incomplete config for chart pane "${e}"`);u[e]=t[e],d[e]=o[e],v[e]=i[e]}),g.value=u,w.value=d,b.value=v}catch(o){console.error("Failed to expand chart layout:",o),u.value=t,g.value=a,w.value=r,b.value=l,B.error({message:i("chart.multi-chart.error.expansion-failed"),duration:5e3})}},{immediate:!0}),r(()=>e.selectedTimeFrame,e=>{if(e){const t=d.value;g.value[t]&&(g.value[t]={...g.value[t],timeFrame:e})}}),r(()=>e.selectedChartType,e=>{if(e){const t=d.value;g.value[t]&&(g.value[t]={...g.value[t],chartType:e})}}),r(()=>e.selectedTimeRange,e=>{e&&(n.value=e)}),r(()=>e.customTimeRange,e=>{void 0!==e&&(s.value=e??null)}),r(()=>e.isExpanded,e=>{"boolean"==typeof e&&(c.value=e)}),r(()=>e.multiChartLayout,e=>{e&&(u.value=e)}),r(()=>e.symbol,e=>{const t=d.value;if(void 0!==e&&b.value[t]!==e){b.value={...b.value,[t]:e};const{[t]:a,...r}=R.value;R.value=r}}),r(d,t=>{const a=b.value[t];void 0!==a&&a!==e.symbol&&l("activeSymbolChange",a)}),r(()=>e.overlaySubtitle,e=>{const t=d.value,a=e??"";w.value[t]!==a&&(w.value={...w.value,[t]:a})});const k=(e,t)=>{const a=i(e);return"string"==typeof a&&a.trim().length>0?a:t},T=a(()=>ve.map(e=>({label:k(`chart.time-frame.${e}`,e),value:e}))),L=a(()=>ge.map(e=>({label:k(`chart.time-range.${e}`,e),value:e}))),S=a(()=>ye.map(e=>({label:k(`chart.type.${e.value}`,e.value),value:e.value,icon:e.icon,chartIcon:e.icon}))),M=a(()=>fe.map(e=>"download-image"===e?{value:e,label:k("chart.snapshot.download-image","Download image"),desc:k("chart.snapshot.download-image-shortcut","Ctrl + Alt + S")}:"copy-image-to-clipboard"===e?{value:e,label:k("chart.snapshot.copy-image-to-clipboard","Copy image"),desc:k("chart.snapshot.copy-image-to-clipboard-shortcut","Ctrl + Shift + S")}:{value:e,label:k("chart.snapshot.open-in-new-tab","Open in new tab"),desc:k("chart.snapshot.open-in-new-tab-shortcut","Alt + S")})),F=a(()=>g.value[d.value]??{timeFrame:m,chartType:p}),D=a(()=>e.chartData&&e.chartData.length>0?e.chartData:we(F.value.timeFrame,v)),O=a(()=>{const e=D.value;return e.length>0?e[e.length-1].close:null}),_=a(()=>({selectedTimeFrame:F.value.timeFrame,selectedTimeRange:n.value,selectedChartType:F.value.chartType,customTimeRange:s.value,isExpanded:c.value,isLoading:e.isLoading??!1}));r(_,e=>{l("stateChange",e)},{immediate:!0});const R=t({}),E=e=>g.value[e]?.timeFrame??m,$=async e=>{const t=o.snapshotTargetRef?.value;if(t)switch(e){case"download-image":await(async e=>{try{const t=await re(e,{quality:1,pixelRatio:2}),a=document.createElement("a");a.href=t,a.download=`chart-snapshot-${Date.now()}.png`,a.click()}catch(t){console.error("Failed to download chart image:",t),B.error({message:i("chart.snapshot.error.download"),duration:5e3})}})(t);break;case"copy-image-to-clipboard":await(async e=>{try{const t=await le(e,{quality:1,pixelRatio:2});if(!t?.type||"undefined"==typeof ClipboardItem)throw new Error("Failed to generate image blob");const a=new ClipboardItem({[t.type]:t});await navigator.clipboard.write([a])}catch(t){console.error("Failed to copy chart image to clipboard:",t),B.error({message:i("chart.snapshot.error.copy"),duration:5e3})}})(t);break;case"open-image-in-new-tab":await(async e=>{try{const t=await re(e,{quality:1,pixelRatio:2}),a=window.open();a&&(a.document.write(`\n <html>\n <head><title>Chart Snapshot</title></head>\n <body style="margin:0;display:flex;justify-content:center;align-items:center;min-height:100vh;background:#000;">\n <img src="${t}" style="max-width:100%;max-height:100vh;" />\n </body>\n </html>\n `),a.document.close())}catch(t){console.error("Failed to open chart image in new tab:",t),B.error({message:i("chart.snapshot.error.open"),duration:5e3})}})(t)}};return{symbol:a(()=>e.symbol??""),overlaySubtitle:a(()=>e.overlaySubtitle??""),chartData:D,selectedTimeFrame:a(()=>F.value.timeFrame),selectedTimeRange:a(()=>n.value),selectedChartType:a(()=>F.value.chartType),customTimeRange:a(()=>s.value),timeFrameOptions:a(()=>e.timeFrameOptions&&e.timeFrameOptions.length>0?e.timeFrameOptions:T.value),timeRangeOptions:a(()=>e.timeRangeOptions&&e.timeRangeOptions.length>0?e.timeRangeOptions:L.value),chartTypeOptions:a(()=>e.chartTypeOptions&&e.chartTypeOptions.length>0?e.chartTypeOptions:S.value),snapshotOptions:a(()=>void 0!==e.snapshotOptions?e.snapshotOptions:M.value),isLoading:a(()=>e.isLoading??!1),isExpanded:a(()=>c.value),isMultiChart:a(()=>u.value!==ue.Single),multiChartLayout:a(()=>u.value),chartIds:C,selectedChartId:a(()=>d.value),activeChartLastPrice:O,tickSize:a(()=>e.tickSize),dark:a(()=>e.dark),chartDomId:a(()=>e.chartDomId??"eaera-lightweight-chart-canvas"),overlayTitle:a(()=>e.overlayTitle??""),state:_,getTimeFrameForChart:E,getChartTypeForChart:e=>g.value[e]?.chartType??p,getChartDataForChart:t=>{if(e.chartData&&e.chartData.length>0)return e.chartData;const a=E(t),r=R.value[t];if(r&&r.length>0){const e=be[a],t=r[r.length-1].time,l=Math.floor(Date.now()/1e3)-e;if(Math.abs(t-l)<2*e)return r}const l=we(a,v);return R.value={...R.value,[t]:l},l},getSymbolForChart:e=>b.value[e]??y,getSymbolDescriptionForChart:e=>w.value[e]??f,onResize:(e,t)=>l("resize",e,t),onChangeTimeFrame:e=>{const t=d.value;g.value[t]&&(g.value[t]={...g.value[t],timeFrame:e}),l("changeTimeFrame",e)},onChangeTimeRange:e=>{n.value=e,l("changeTimeRange",e)},onChangeChartType:e=>{const t=d.value;g.value[t]&&(g.value[t]={...g.value[t],chartType:e}),l("changeChartType",e)},onChangeCustomRange:e=>{s.value=e,l("changeCustomRange",e)},onLoadMoreLeft:()=>l("loadMoreLeft"),onSnapshot:async e=>{await $(e)},onToggleExpanded:()=>{c.value=!c.value,l("toggleExpanded")},onChangeMultiChartLayout:e=>{const t=u.value,a=de(t),r=de(e);if(r<a)return void(x.value=e);if(r>a){const e={...g.value},t={...w.value},l={...b.value},o=d.value,i=e[o]??e["chart-0"],n=t[o]??f,s=l[o]??y;for(let c=a;c<r;c++){const a=`chart-${c}`;e[a]||(e[a]={...i}),t[a]||(t[a]=n),l[a]||(l[a]=s)}g.value=e,w.value=t,b.value=l}u.value=e;parseInt(d.value.split("-")[1]??"0",10)>=r&&(d.value="chart-0"),l("changeMultiChartLayout",e)},onSelectChart:e=>{d.value=e},confirmLayoutSwitch:e=>{const t=x.value;if(!t)return;const a=de(t),r={},o={},i={};e.slice(0,a).forEach((e,t)=>{const a=`chart-${t}`;r[a]=g.value[e]??{timeFrame:m,chartType:p},o[a]=w.value[e]??f,i[a]=b.value[e]??y}),g.value=r,w.value=o,b.value=i,d.value="chart-0",u.value=t,x.value=null,l("changeMultiChartLayout",t)},cancelLayoutSwitch:()=>{x.value=null},pendingLayoutSwitch:a(()=>x.value)}},Ce=e=>e,ke={class:"p-2.5"},Te={class:"w-full h-8 flex items-center justify-between"},Le={class:"h-full flex items-center gap-1"},Se={key:0,class:"flex items-center gap-1 text-label-lg text-[var(--er-text-primary)]"},Me={class:"whitespace-nowrap"},Fe={class:"text-[var(--er-text-secondary)] whitespace-nowrap"},De={class:"flex items-center"},Pe={type:"button",class:"flex items-center justify-center h-8 px-3 border-none rounded-lg bg-transparent text-label-lg text-[var(--er-text-primary)] cursor-pointer hover:bg-[var(--er-surface-hover)]"},Oe={class:"flex items-center"},_e={type:"button",class:"flex items-center justify-center w-8 h-8 p-0 border-none rounded-lg bg-transparent text-[var(--er-icon-primary)] cursor-pointer hover:bg-[var(--er-surface-hover)]"},Re={class:"h-full flex items-center gap-1"},Ee={class:"flex items-center"},$e={type:"button",class:"flex items-center justify-center h-8 px-3 border-none rounded-lg bg-transparent text-label-lg text-[var(--er-text-primary)] cursor-pointer hover:bg-[var(--er-surface-hover)]"},ze={class:"flex items-center"},je={type:"button",class:"flex items-center justify-center w-8 h-8 p-0 border-none rounded-lg bg-transparent text-[var(--er-icon-primary)] cursor-pointer hover:bg-[var(--er-surface-hover)]"},Be={key:1,class:"flex items-center"},Ie={type:"button",class:"flex items-center justify-center w-8 h-8 p-0 border-none rounded-lg bg-transparent text-[var(--er-icon-primary)] cursor-pointer hover:bg-[var(--er-surface-hover)]"},Ae={key:0,class:"text-body-xs text-[var(--er-text-secondary)]"},Ne={class:"flex items-center"},He={type:"button",class:"flex items-center justify-center w-8 h-8 p-0 border-none rounded-lg bg-transparent text-[var(--er-icon-primary)] cursor-pointer hover:bg-[var(--er-surface-hover)]"},Ve={class:"flex flex-col gap-2 py-4 px-3 min-w-[150px]"},Ke={class:"flex items-center gap-3"},We={class:"w-4"},Ue=["onClick"],Ye=l({__name:"EaeraLightweightChartHeader",props:{context:{}},setup(e){const t=e,{t:r}=G(),{symbol:l,overlayTitle:x,overlaySubtitle:C,selectedTimeFrame:k,timeFrameOptions:T,chartTypeOptions:L,snapshotOptions:S,isExpanded:M,isMultiChart:F,multiChartLayout:D,onChangeTimeFrame:P,onChangeChartType:O,onSnapshot:_,onToggleExpanded:R,onChangeMultiChartLayout:E}=t.context,$=a(()=>T.value.map(e=>({label:e.label,value:e.value,itemClick:()=>P(e.value)}))),z=a(()=>L.value.map(e=>({label:e.label,value:e.value,itemClick:()=>O(e.value)}))),j=a(()=>S.value.map(e=>({label:e.label,value:e.value,desc:e.desc,itemClick:()=>_(e.value)}))),B=a(()=>[{order:1,options:[{icon:I,id:ue.Single}]},{order:2,options:[{icon:A,id:ue.TwoCols},{icon:N,id:ue.TwoRows}]},{order:3,options:[{icon:H,id:ue.ThreeCols},{icon:V,id:ue.ThreeRows}]},{order:4,options:[{icon:K,id:ue.Four}]}]),q=a(()=>C.value||x.value||""),X=a(()=>{const e=`chart.time-frame.sc.${k.value}`,t=r(e);if("string"==typeof t&&t.trim().length>0&&t!==e)return t;const a=T.value.find(e=>e.value===k.value);return a?.label??k.value}),J=e=>{const t=e.key.toLowerCase();return"escape"===t&&M.value?(e.preventDefault(),void R()):"s"===t?e.ctrlKey&&e.altKey&&!e.shiftKey?(e.preventDefault(),void _("download-image")):e.ctrlKey&&e.shiftKey&&!e.altKey?(e.preventDefault(),void _("copy-image-to-clipboard")):void(!e.altKey||e.ctrlKey||e.shiftKey||(e.preventDefault(),_("open-image-in-new-tab"))):void 0};return o(()=>window.addEventListener("keydown",J)),i(()=>window.removeEventListener("keydown",J)),(e,t)=>{const a=ne,r=ie,o=oe;return n(),s("div",ke,[c("div",Te,[c("div",Le,[u(F)?(n(),s(m,{key:1},[c("div",De,[v(r,{"use-menu":"","dropdown-options":$.value},{menu_item:g(({data:e})=>[c("div",null,d(e.label),1)]),default:g(()=>[c("button",Pe,[v(a,{placement:"right",content:e.$t("chart.tools.tooltip.time-frame")},{default:g(()=>[c("span",null,d(X.value),1)]),_:1},8,["content"])])]),_:1},8,["dropdown-options"])]),v(o,{direction:"vertical"}),c("div",Oe,[v(r,{"use-menu":"","dropdown-options":z.value},{menu_item:g(({data:e})=>[c("div",null,d(e.label),1)]),default:g(()=>[c("button",_e,[v(a,{placement:"right",content:e.$t("chart.tools.tooltip.chart-type-selector")},{default:g(()=>[v(u(W),{size:20,"stroke-width":"1.2","absolute-stroke-width":""})]),_:1},8,["content"])])]),_:1},8,["dropdown-options"])])],64)):(n(),s("div",Se,[c("span",Me,d(u(l)),1),q.value?(n(),s(m,{key:0},[t[1]||(t[1]=c("span",{class:"text-[var(--er-text-secondary)]"},"/",-1)),c("span",Fe,d(q.value),1)],64)):p("",!0)]))]),c("div",Re,[u(F)?p("",!0):(n(),s(m,{key:0},[c("div",Ee,[v(r,{"use-menu":"","dropdown-options":$.value},{menu_item:g(({data:e})=>[c("div",null,d(e.label),1)]),default:g(()=>[c("button",$e,[v(a,{placement:"right",content:e.$t("chart.tools.tooltip.time-frame")},{default:g(()=>[c("span",null,d(X.value),1)]),_:1},8,["content"])])]),_:1},8,["dropdown-options"])]),v(o,{direction:"vertical"}),c("div",ze,[v(r,{"use-menu":"","dropdown-options":z.value},{menu_item:g(({data:e})=>[c("div",null,d(e.label),1)]),default:g(()=>[c("button",je,[v(a,{placement:"right",content:e.$t("chart.tools.tooltip.chart-type-selector")},{default:g(()=>[v(u(W),{size:20,"stroke-width":"1.2","absolute-stroke-width":""})]),_:1},8,["content"])])]),_:1},8,["dropdown-options"])])],64)),u(S).length?(n(),s("div",Be,[v(r,{"use-menu":"","dropdown-options":j.value},{menu_item:g(({data:e})=>[c("div",null,[c("div",null,d(e.label),1),e.desc?(n(),s("div",Ae,d(e.desc),1)):p("",!0)])]),default:g(()=>[c("button",Ie,[v(a,{placement:"right",content:e.$t("chart.tools.tooltip.snapshot")},{default:g(()=>[v(u(U),{size:20,"stroke-width":"1.2","absolute-stroke-width":""})]),_:1},8,["content"])])]),_:1},8,["dropdown-options"])])):p("",!0),c("div",Ne,[v(r,null,{dropdown:g(()=>[c("div",Ve,[(n(!0),s(m,null,y(B.value,(e,t)=>(n(),s("div",{key:t},[c("div",Ke,[c("span",We,d(e.order),1),(n(!0),s(m,null,y(e.options,(e,t)=>(n(),s("div",{key:t,class:f(["cursor-pointer p-[2px] border rounded-xs transition-colors",u(D)===e.id?"border-[var(--er-border-action)] bg-[var(--er-surface-elevated)] text-[var(--er-text-brand)]":"border-[var(--er-border-default)] hover:bg-[var(--er-surface-muted)]"]),onClick:t=>u(E)(e.id)},[(n(),b(w(e.icon),{size:20}))],10,Ue))),128))])]))),128))])]),default:g(()=>[c("button",He,[v(a,{placement:"right",content:e.$t("chart.tools.tooltip.multi-chart")},{default:g(()=>[v(u(Y),{size:20,"stroke-width":"1.2","absolute-stroke-width":""})]),_:1},8,["content"])])]),_:1})]),c("button",{type:"button",class:"flex items-center justify-center w-8 h-8 p-0 border-none rounded-lg bg-transparent text-[var(--er-icon-primary)] cursor-pointer hover:bg-[var(--er-surface-hover)]",onClick:t[0]||(t[0]=(...e)=>u(R)&&u(R)(...e))},[v(a,{placement:"bottom",content:e.$t("chart.tools.tooltip.fullscreen")},{default:g(()=>[v(u(Z),{size:20,"stroke-width":"1.2","absolute-stroke-width":""})]),_:1},8,["content"])])])])])}}}),Ze={class:"border-t border-[var(--er-border-default)] px-3 py-2"},qe={class:"flex justify-between items-center h-6"},Ge={class:"h-full flex items-center gap-2 select-none"},Xe={class:"h-full flex items-center gap-0.5"},Je=["onClick"],Qe={class:"h-full flex items-center select-none"},et={class:"text-label-md text-[var(--er-text-primary)] whitespace-nowrap","aria-live":"polite"},tt=l({__name:"EaeraLightweightChartFooter",props:{context:{}},setup(e){const r=e,{selectedTimeRange:l,timeRangeOptions:p,onChangeTimeRange:g,onChangeTimeFrame:b,onChangeCustomRange:w}=r.context,x=t(null),C=a(()=>p.value.filter(e=>e.value!==he.Custom)),k=(e,t)=>{g(e),b(t)},T=()=>{x.value?.handleOpen()},L=e=>{if(!e||2!==e.length)return;const t={startDate:e[0],endDate:e[1]};w(t),k(he.Custom,me.ThirtyMinutes)},S=e=>{const t=Intl.DateTimeFormat().resolvedOptions().timeZone||"UTC",a=-e.getTimezoneOffset(),r=`UTC${a>=0?"+":"-"}${String(Math.floor(Math.abs(a)/60)).padStart(2,"0")}:${String(Math.abs(a)%60).padStart(2,"0")}`;return`${new Intl.DateTimeFormat("en-US",{timeZone:t,year:"numeric",month:"long",day:"numeric"}).format(e)} ${new Intl.DateTimeFormat("en-US",{timeZone:t,hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!1}).format(e)} ${r}`},M=t("");let F;const D=()=>{M.value=S(new Date)};return o(()=>{D(),F=window.setInterval(D,1e3)}),i(()=>{void 0!==F&&clearInterval(F)}),(e,t)=>{const a=oe;return n(),s("div",Ze,[c("div",qe,[c("div",Ge,[c("div",Xe,[(n(!0),s(m,null,y(C.value,e=>(n(),s("button",{key:e.value,type:"button",class:f(["h-full flex items-center px-1 border-none rounded text-label-md text-[var(--er-text-primary)] cursor-pointer whitespace-nowrap bg-transparent hover:bg-[var(--er-surface-elevated)]",{"bg-[var(--er-surface-elevated)]":u(l)===e.value}]),onClick:t=>(e=>{switch(e){case he.OneDay:k(he.OneDay,me.OneMinute);break;case he.OneWeek:k(he.OneWeek,me.ThirtyMinutes);break;case he.OneMonth:k(he.OneMonth,me.ThirtyMinutes);break;case he.ThreeMonths:k(he.ThreeMonths,me.OneDay);break;case he.SixMonths:k(he.SixMonths,me.OneWeek);break;default:k(e,me.OneWeek)}})(e.value)},d(e.label),11,Je))),128)),v(a,{direction:"vertical",class:"mx-1"}),c("button",{type:"button",class:"flex items-center justify-center w-6 h-6 p-0 border-none rounded bg-transparent text-[var(--er-icon-primary)] cursor-pointer hover:bg-[var(--er-surface-hover)]",onClick:T},[v(u(q),{size:20,"absolute-stroke-width":"","stroke-width":"1.2"})]),v(u(se),{ref_key:"customDateRef",ref:x,"value-format":"YYYY-MM-DD",type:"daterange",class:"hidden",onChange:L},null,512)])]),c("div",Qe,[c("span",et,d(M.value),1)])])])}}}),at=(e,t,a=6)=>{if(!e.length||a<=0)return e;const r=Math.max(1,Math.floor((e=>({[me.OneMinute]:6e4,[me.FiveMinutes]:3e5,[me.FifteenMinutes]:9e5,[me.ThirtyMinutes]:18e5,[me.OneHour]:36e5,[me.FourHours]:144e5,[me.OneDay]:864e5,[me.OneWeek]:6048e5,[me.OneMonth]:2592e6}[e]))(t)/1e3)),l=e[e.length-1]?.time;if("number"!=typeof l||Number.isNaN(l))return e;const o=Array.from({length:a},(e,t)=>({time:l+r*(t+1)}));return[...e,...o]},rt=e=>{const t=lt(e);return t?((e,t)=>new Intl.DateTimeFormat(void 0,{timeZone:"UTC",...t}).format(e))(t,{day:"2-digit",month:"2-digit",year:"numeric",hour:"2-digit",minute:"2-digit",hour12:!1}):""},lt=e=>{if(null==e)return null;if("number"==typeof e)return new Date(1e3*e);if("string"==typeof e){const t=new Date(e);return Number.isNaN(t.getTime())?null:t}return _(e)?new Date(e.year,e.month-1,e.day):null},ot=e=>e?{surfacePrimary:"#191D23",surfacePositive:"#16c784",surfaceNegative:"#ef4444",surfaceElevated:"#323A45",textPrimary:"#F0F1F3",textSecondary:"#B1B9C5",borderPrimary:"#323A45",borderPrimaryInverse:"#D8DCE2",borderAction:"#A259FB",areaTop:"#A259FB4D",areaBottom:"#A259FB0D"}:{surfacePrimary:"white",surfacePositive:"#16c784",surfaceNegative:"#ef4444",surfaceElevated:"#d8dce2",textPrimary:"#0f1115",textSecondary:"#4b5768",borderPrimary:"#d8dce2",borderPrimaryInverse:"#323a45",borderAction:"#A259FB",areaTop:"#A259FB4D",areaBottom:"#A259FB0D"},it=e=>{const t={width:0,height:0};const a=(e=>{const t=ot(e);return{background:{type:R.Solid,color:t.surfacePrimary},textColor:t.textSecondary}})(e),r=(e=>{const t=ot(e);return{vertLines:{color:t.borderPrimary,visible:!0,style:0},horzLines:{color:t.borderPrimary,visible:!0,style:0}}})(e),l=(e=>{const t=ot(e);return{mode:0,vertLine:{color:t.borderPrimaryInverse,width:1,style:3,visible:!0,labelVisible:!0,labelBackgroundColor:t.surfaceElevated},horzLine:{color:t.borderPrimaryInverse,width:1,style:3,visible:!0,labelVisible:!0,labelBackgroundColor:t.surfacePositive}}})(e),o=(e=>{const t=ot(e);return{rightPriceScale:{borderColor:t.borderPrimary,scaleMargins:{top:.3,bottom:.1},textColor:t.textSecondary},timeScale:{borderColor:t.borderPrimary,timeVisible:!0,rightOffsetPixels:48,allowShiftVisibleRangeOnWhitespaceReplacement:!0,textColor:t.textSecondary}}})(e);return{...t,layout:a,grid:r,crosshair:l,localization:{timeFormatter:e=>rt(e)},...o}},nt=e=>{const t=ot(e);return{upColor:t.surfacePositive,downColor:t.surfaceNegative,borderVisible:!1,wickUpColor:t.surfacePositive,wickDownColor:t.surfaceNegative}},st=["id"],ct={class:"absolute top-2 left-2 z-10 flex gap-x-4 gap-y-1 flex-wrap w-full"},ut={key:0,class:"text-label-lg font-semibold max-w-[calc(100%-1rem)]"},dt={class:"text-[var(--er-text-secondary)] whitespace-nowrap"},mt={key:1,class:"flex flex-wrap gap-x-2 gap-y-0.5 text-label-lg font-semibold max-w-[calc(100%-1rem)]"},ht={class:"text-[var(--er-text-secondary)]"},pt={class:"text-[var(--er-text-secondary)]"},vt={class:"text-[var(--er-text-secondary)]"},gt={class:"text-[var(--er-text-secondary)]"},yt=l({__name:"EaeraChartCanvas",props:{chartData:{default:()=>[]},selectedChartType:{default:ce.Candlestick},selectedTimeFrame:{default:me.OneMinute},dark:{type:Boolean,default:!1},tickSize:{default:null},symbol:{default:""},symbolDescription:{default:""},isMultiChart:{type:Boolean,default:!1},chartDomId:{default:void 0},openLabel:{default:"O"},highLabel:{default:"H"},lowLabel:{default:"L"},closeLabel:{default:"C"}},emits:["loadMoreLeft","resize"],setup(e,{expose:l,emit:u}){const m=e,v=u,g="undefined"!=typeof crypto&&crypto.randomUUID?crypto.randomUUID().slice(0,8):Math.random().toString(36).slice(2,10),y=a(()=>m.chartDomId??`eaera-chart-canvas-${g}`),f=x(null),b=x(null),{width:w,height:T}=O(f),L=x(null),S=x(null),M=t(0),F=()=>{M.value+=1},D={openPrice:null,highPrice:null,lowPrice:null,closePrice:null,time:null,state:null,symbolLabel:m.symbol},P=x({...D}),_=a(()=>P.value.state?{color:`var(--er-text-${P.value.state})`}:{}),R=a(()=>m.dark??!1),B=a(()=>{const e=Number(m.tickSize??.01);return!Number.isFinite(e)||e<=0?.01:e}),I=e=>{if(!Number.isFinite(e)||e<=0)return 2;const t=e.toLocaleString("en-US",{useGrouping:!1,maximumFractionDigits:20}),a=(t.includes(".")?t.replace(/0+$/,"").replace(/\.$/,""):t).split(".")[1];return a?a.length:0},A=e=>Number.isFinite(e)?Number(e.toFixed(I(B.value))):e,N=a(()=>{const e=new Map;return m.chartData.forEach(t=>{e.set(t.time,t)}),e}),H=a(()=>{const e=at(m.chartData,m.selectedTimeFrame,30);return m.selectedChartType===ce.Line||m.selectedChartType===ce.Area?e.map(e=>"open"in e?{time:e.time,value:e.close}:{time:e.time}):e}),V=a(()=>m.chartData.map(e=>e.time)),K=()=>{P.value={...D,symbolLabel:m.symbol}},W=()=>{S.value&&L.value&&(S.value.applyOptions({priceFormat:{type:"price",precision:I(B.value),minMove:B.value}}),L.value.priceScale("right").applyOptions({ticksVisible:!1,ensureEdgeTickMarksVisible:!0}))},U=()=>{L.value&&S.value&&(L.value.removeSeries(S.value),S.value=null)},Y=e=>{if(L.value){switch(U(),e){case ce.Candlestick:S.value=L.value.addSeries(E,nt(R.value));break;case ce.Line:S.value=L.value.addSeries(z,(t=R.value,{color:ot(t).borderAction,lineWidth:2,lineStyle:0,crosshairMarkerVisible:!0,crosshairMarkerRadius:4}));break;case ce.Area:S.value=L.value.addSeries($,(e=>{const t=ot(e);return{lineColor:t.borderAction,topColor:t.areaTop,bottomColor:t.areaBottom,lineWidth:2,lineStyle:0,crosshairMarkerVisible:!0,crosshairMarkerRadius:4}})(R.value));break;default:S.value=L.value.addSeries(E,nt(R.value))}var t;W(),F()}},Z=()=>{S.value&&(S.value.setData(H.value),W(),F())};let q=null,G=null;const X=()=>{L.value&&(q&&(L.value.unsubscribeCrosshairMove(q),q=null),G&&(L.value.timeScale().unsubscribeVisibleLogicalRangeChange(G),G=null))},J=()=>{((e,t)=>{L.value&&(L.value.applyOptions({width:e,height:t}),F(),v("resize",e,t))})(Math.max(0,w.value),Math.max(0,T.value))},Q=()=>{b.value&&(L.value=j(b.value,it(R.value)),F(),Y(m.selectedChartType),Z(),L.value&&(X(),q=e=>{const t="number"==typeof e.time?e.time:null;if(null===t)return void K();const a=N.value.get(t);a?P.value={openPrice:A(a.open),highPrice:A(a.high),lowPrice:A(a.low),closePrice:A(a.close),time:t,state:a.close>=a.open?"success":"error",symbolLabel:m.symbol}:K()},G=e=>{e&&e.from<=10&&v("loadMoreLeft")},L.value.subscribeCrosshairMove(q),L.value.timeScale().subscribeVisibleLogicalRangeChange(G)),J())};return r([w,T],J),r(()=>m.selectedChartType,e=>{Y(e),Z()}),r([()=>m.chartData,()=>m.selectedTimeFrame,B],()=>{Z()}),r(R,()=>{L.value&&(L.value.applyOptions(it(R.value)),Y(m.selectedChartType),Z())},{immediate:!0}),r(()=>m.symbol,e=>{P.value.symbolLabel=e}),o(async()=>{await C(),Q()}),i(()=>{X(),U(),L.value&&(L.value.remove(),L.value=null,F()),K()}),l({chartInstance:L,currentSeries:S,chartRenderKey:M,crosshairData:P,chartDataTimes:V,roundPriceByTickSize:A,clearCrosshairData:K,syncSeriesData:Z}),(t,a)=>(n(),s("div",{ref_key:"containerRef",ref:f,class:"relative w-full h-full min-h-0 min-w-0"},[c("div",{id:y.value,ref_key:"chartRef",ref:b,class:"w-full h-full"},null,8,st),c("div",ct,[e.isMultiChart&&e.symbolDescription?(n(),s("div",ut,[c("span",dt,d(e.symbolDescription),1)])):p("",!0),null!==P.value.closePrice?(n(),s("div",mt,[c("div",null,[c("span",ht,d(e.openLabel),1),c("span",{style:k(_.value)},d(P.value.openPrice),5)]),c("div",null,[c("span",pt,d(e.highLabel),1),c("span",{style:k(_.value)},d(P.value.highPrice),5)]),c("div",null,[c("span",vt,d(e.lowLabel),1),c("span",{style:k(_.value)},d(P.value.lowPrice),5)]),c("div",null,[c("span",gt,d(e.closeLabel),1),c("span",{style:k(_.value)},d(P.value.closePrice),5)])])):p("",!0)])],512))}}),ft=l({__name:"EaeraLightweightChartDrawingPlugin",props:{chart:{},series:{},symbol:{},selectedTimeFrame:{},chartDataTimes:{},isDark:{type:Boolean},floatingTarget:{},headerHeight:{},footerHeight:{},config:{}},emits:["stateChange"],setup(e,{emit:t}){const r=e,l=t,o=a(()=>r.selectedTimeFrame),i=a(()=>({position:"absolute",left:"0px",right:"0px",top:`${r.headerHeight}px`,bottom:`${r.footerHeight}px`,height:"auto",zIndex:20})),s=e=>{l("stateChange",e)};return(t,a)=>(n(),b(u(X),{chart:e.chart,series:e.series,symbol:e.symbol,"selected-time-frame":o.value,"chart-data-times":e.chartDataTimes,drawings:e.config.drawings,"is-dark":e.isDark,"create-drawing":e.config.createDrawing,"update-drawing":e.config.updateDrawing,"delete-drawing":e.config.deleteDrawing,"load-drawings":e.config.loadDrawings,"delete-all-drawings":e.config.deleteAllDrawings,"floating-target":e.floatingTarget,"floating-layer-style":i.value,"show-sidebar":e.config.showSidebar??!0,"show-floating-toolbar":e.config.showFloatingToolbar??!0,onStateChange:s},null,8,["chart","series","symbol","selected-time-frame","chart-data-times","drawings","is-dark","create-drawing","update-drawing","delete-drawing","load-drawings","delete-all-drawings","floating-target","floating-layer-style","show-sidebar","show-floating-toolbar"]))}}),bt=l({__name:"EaeraLightweightChartOrderlinePlugin",props:{chart:{},series:{},renderKey:{},isDark:{type:Boolean},config:{}},emits:["stateChange"],setup(e,{expose:a,emit:r}){const l=e,o=r,i=t(null),s=e=>{l.config.onDeleteLine(e)},c=(e,t)=>{l.config.onLinePriceChange(e,t)},d=(e,t)=>{l.config.onLinePricePreview?.(e,t)},m=e=>{l.config.onDragStateChange?.(e)},p=(e,t,a)=>{l.config.onSLTPChange?.(e,t,a)},v=e=>{o("stateChange",e)};return a({openMenu:e=>{i.value?.openMenu?.(e)}}),(t,a)=>(n(),b(u(J),{ref_key:"overlayRef",ref:i,"order-lines":e.config.orderLines,"chart-instance":e.chart,"series-instance":e.series,"order-line-tool":e.config.orderLineTool??null,"render-key":e.renderKey,"market-price":e.config.marketPrice??null,"tick-size":e.config.tickSize??null,dark:e.isDark,onDeleteLine:s,onLinePriceChange:c,onLinePricePreview:d,onDragStateChange:m,onSlTpChange:p,onStateChange:v},null,8,["order-lines","chart-instance","series-instance","order-line-tool","render-key","market-price","tick-size","dark"]))}}),wt=["onClick"],xt=.01,Ct="text-[color:var(--er-text-success)]",kt="text-[color:var(--er-text-danger)]",Tt="border-[color:var(--er-surface-muted)] bg-[color:var(--er-surface-elevated)]",Lt=ee(l({__name:"ChartContextMenu",props:{symbol:{},tickSize:{default:null}},emits:["action"],setup(e,{expose:r,emit:l}){const u=e,w=l,x=t(!1),C=t({x:0,y:0}),M=t(null),F=t("plot"),D=t(null),P=a(()=>({position:"fixed",zIndex:2,top:`${C.value.y}px`,left:`${C.value.x}px`})),O=["fixed","z-[2]","flex","flex-col","min-w-[240px]","py-2","border","rounded-sm","shadow-lg","surface-[var(--er-surface-page)]"],_=["flex","items-center","h-8","px-2","cursor-pointer","select-none","rounded-sm","hover:bg-[var(--er-action-neutral-subtle-hover)]"],R=["px-2","font-[family-name:var(--er-font-brand),system-ui,sans-serif]","text-[14px]","font-normal","leading-5","tracking-[0.018em]","text-[color:var(--er-action-neutral-default)]","whitespace-nowrap"];a(()=>[...O,Tt].join(" "));const E=a(()=>{const e=u.symbol||"GBPUSD",t=null!=M.value?M.value.toFixed(5):"—";return[{label:"Reset chart view",tone:"neutral",action:"reset-view"},..."plot"===F.value?[{label:`Buy Market 0.01 ${e}`,tone:"buy",action:"buy-market"},{label:`Sell Market 0.01 ${e}`,tone:"sell",action:"sell-market"},{label:`Buy Limit 0.01 ${e}`,tone:"buy",action:"buy-limit"},{label:`Sell Limit 0.01 ${e}`,tone:"sell",action:"sell-limit"},{label:`Buy Stop 0.01 ${e}`,tone:"buy",action:"buy-stop"},{label:`Buy Stop Limit 0.01 ${e}`,tone:"buy",action:"buy-stop-limit"},{label:`Sell Stop 0.01 ${e}`,tone:"sell",action:"sell-stop"},{label:`Sell Stop Limit 0.01 ${e}`,tone:"sell",action:"sell-stop-limit"},{label:"Lock vertical cursor line by time",tone:"neutral",action:"lock-cursor"}]:[],{label:`Copy price ${t}`,tone:"neutral",action:"copy-price"},{label:"Paste",tone:"neutral",action:"paste"}]}),$=new Set(["buy-limit","sell-limit","buy-stop","buy-stop-limit","sell-stop","sell-stop-limit"]),z={"buy-limit":{title:"Buy Limit",side:"buy",showStopLimitPrice:!1},"sell-limit":{title:"Sell Limit",side:"sell",showStopLimitPrice:!1},"buy-stop":{title:"Buy Stop",side:"buy",showStopLimitPrice:!1},"buy-stop-limit":{title:"Buy Stop Limit",side:"buy",showStopLimitPrice:!0},"sell-stop":{title:"Sell Stop",side:"sell",showStopLimitPrice:!1},"sell-stop-limit":{title:"Sell Stop Limit",side:"sell",showStopLimitPrice:!0}},j={"buy-market":{side:"buy",orderType:"market"},"sell-market":{side:"sell",orderType:"market"},"buy-limit":{side:"buy",orderType:"buy_limit"},"sell-limit":{side:"sell",orderType:"sell_limit"},"buy-stop":{side:"buy",orderType:"buy_stop"},"buy-stop-limit":{side:"buy",orderType:"buy_stop_limit"},"sell-stop":{side:"sell",orderType:"sell_stop"},"sell-stop-limit":{side:"sell",orderType:"sell_stop_limit"}},B=()=>{x.value=!1,D.value=null},I=()=>{D.value=null,x.value=!1},A=e=>{if(!D.value)return;const t=j[D.value.action];t&&(w("action",D.value.action,{symbol:u.symbol,price:e.price?Number(e.price):M.value,side:t.side,orderType:t.orderType,volume:e.volume?Number(e.volume):xt,stopLimitPrice:e.stopLimitPrice?Number(e.stopLimitPrice):void 0,takeProfit:e.takeProfitEnabled&&e.takeProfit?Number(e.takeProfit):void 0,stopLoss:e.stopLossEnabled&&e.stopLoss?Number(e.stopLoss):void 0,comment:e.comment||void 0}),I())},N=e=>{(x.value||D.value)&&B()},H=e=>{"Escape"===e.key&&(x.value||D.value)&&B()};return o(()=>{document.addEventListener("mousedown",N),document.addEventListener("keydown",H)}),i(()=>{document.removeEventListener("mousedown",N),document.removeEventListener("keydown",H)}),r({open:(e,t,a,r="plot")=>{C.value={x:e,y:t},M.value=a,F.value=r,D.value=null,x.value=!0},close:B}),(t,a)=>(n(),b(T,{to:"body"},[v(L,{name:"context-menu-fade"},{default:g(()=>[D.value?(n(),s("div",{key:0,class:f("fixed z-[2]"),style:k(P.value),onMousedown:a[0]||(a[0]=S(()=>{},["stop"]))},[v(Q,{title:D.value.title,"status-tag-text":D.value.statusTagText,side:D.value.side,symbol:e.symbol,"reference-price":M.value,"tick-size":e.tickSize,"show-stop-limit-price":D.value.showStopLimitPrice,"initial-comment":D.value.initialComment,onConfirm:A,onDiscard:I,onClose:I},null,8,["title","status-tag-text","side","symbol","reference-price","tick-size","show-stop-limit-price","initial-comment"])],36)):x.value?(n(),s("div",{key:1,class:f(O),style:k({top:`${C.value.y}px`,left:`${C.value.x}px`}),onClick:a[1]||(a[1]=S(()=>{},["stop"]))},[(n(!0),s(m,null,y(E.value,(e,t)=>{return n(),s("div",{key:t,class:f((e.tone,[..._].join(" "))),onClick:t=>(e=>{if("buy-market"===e.action||"sell-market"===e.action){const t=j[e.action];return w("action",e.action,{symbol:u.symbol,price:M.value,side:t.side,orderType:t.orderType,volume:xt}),void B()}if($.has(e.action)){const t=z[e.action];return void(D.value={action:e.action,title:t.title,statusTagText:`${t.title} 0.01`,side:t.side,showStopLimitPrice:t.showStopLimitPrice,initialComment:""})}w("action",e.action,{symbol:u.symbol,price:M.value}),B()})(e)},[c("span",{class:f((a=e.tone,"buy"===a?[...R,Ct].join(" "):"sell"===a?[...R,kt].join(" "):R.join(" ")))},d(e.label),3)],10,wt);var a}),128))],4)):p("",!0)]),_:1})]))}}),[["__scopeId","data-v-a1ce2602"]]),St={class:"flex flex-col gap-3 py-2"},Mt={class:"text-body-sm text-[var(--er-text-secondary)]"},Ft=["onClick"],Dt={class:"flex items-center gap-1.5"},Pt={key:0,width:"10",height:"10",viewBox:"0 0 12 12",fill:"none"},Ot={class:"text-label-md font-medium text-[var(--er-text-primary)] truncate"},_t={class:"flex justify-end gap-3"},Rt=l({__name:"SwitchMultiChartDialog",props:{isVisible:{type:Boolean},sourceLayout:{},sourcePanes:{},targetCount:{}},emits:["confirm","cancel"],setup(e,{emit:l}){const o=e,i=l,u=t([]),w={width:"120px",height:"64px"},x=a(()=>{switch(o.sourceLayout){case ue.TwoRows:case ue.ThreeRows:return"grid-cols-1";case ue.TwoCols:return"grid-cols-2";case ue.ThreeCols:return"grid-cols-3";case ue.Four:return"grid-cols-2 grid-rows-2";default:return"grid-cols-1"}}),C=e=>u.value.includes(e),k=()=>{u.value.length===o.targetCount&&i("confirm",[...u.value])},T=()=>{i("cancel")},L=()=>{i("cancel")};return r(()=>o.isVisible,e=>{e&&(u.value=o.sourcePanes.slice(0,o.targetCount).map(e=>e.id))},{immediate:!0}),(t,a)=>{const r=ae,l=te;return n(),b(l,{"dialog-visible":e.isVisible,width:"400px","append-body":"","destroy-on-close":"","close-on-click-modal":!0,"close-on-press-escape":!0,onClose:L},{header:g(()=>[...a[0]||(a[0]=[c("span",{class:"text-title-sm"},"Switch Multi-Chart",-1)])]),default:g(()=>[c("div",St,[c("span",Mt," Select "+d(e.targetCount)+" pane"+d(e.targetCount>1?"s":"")+" to keep* ",1),c("div",{class:f(["grid gap-1 justify-start",x.value])},[(n(!0),s(m,null,y(e.sourcePanes,e=>{return n(),s("div",{key:e.id,class:f(["flex flex-col items-center justify-center rounded-sm border cursor-pointer transition-colors p-2",C(e.id)?"border-[var(--er-border-action)] bg-[var(--er-surface-elevated)]":(t=e.id,!C(t)&&u.value.length>=o.targetCount?"border-[var(--er-border-default)] opacity-40 cursor-not-allowed":"border-[var(--er-border-default)] hover:bg-[var(--er-surface-muted)]")]),style:w,onClick:t=>(e=>{C(e)?u.value=u.value.filter(t=>t!==e):u.value.length>=o.targetCount||(u.value=[...u.value,e])})(e.id)},[c("div",Dt,[c("div",{class:f(["flex items-center justify-center w-4 h-4 rounded-sm border transition-colors shrink-0",C(e.id)?"border-[var(--er-border-action)] bg-[var(--er-border-action)]":"border-[var(--er-border-muted)]"])},[C(e.id)?(n(),s("svg",Pt,[...a[1]||(a[1]=[c("path",{d:"M10 3L4.5 8.5L2 6",stroke:"white","stroke-width":"1.5","stroke-linecap":"round","stroke-linejoin":"round"},null,-1)])])):p("",!0)],2),c("span",Ot,d(e.symbol||`Pane ${e.index+1}`),1)])],10,Ft);var t}),128))],2)])]),footer:g(()=>[c("div",_t,[v(r,{color:"contrast",onClick:T},{default:g(()=>[...a[2]||(a[2]=[M("Cancel",-1)])]),_:1}),v(r,{color:"primary",disabled:u.value.length!==e.targetCount,onClick:k},{default:g(()=>[...a[3]||(a[3]=[M(" Confirm ",-1)])]),_:1},8,["disabled"])])]),_:1},8,["dialog-visible"])}}}),Et={key:1,class:"relative w-full flex-1 min-h-0"},$t=["onClick"],zt=l({__name:"index",props:{symbol:{},chartData:{},selectedTimeFrame:{},selectedTimeRange:{},selectedChartType:{},customTimeRange:{},timeFrameOptions:{},timeRangeOptions:{},chartTypeOptions:{},snapshotOptions:{},isLoading:{type:Boolean},isExpanded:{type:Boolean},multiChartLayout:{},dataBarCount:{},tickSize:{},dark:{type:Boolean},chartDomId:{},overlayTitle:{},overlaySubtitle:{},openLabel:{},highLabel:{},lowLabel:{},closeLabel:{},plugins:{},drawingPlugin:{},orderlinePlugin:{}},emits:["resize","changeTimeFrame","changeTimeRange","changeChartType","changeCustomRange","loadMoreLeft","toggleExpanded","changeMultiChartLayout","stateChange","drawingStateChange","orderlineStateChange","contextMenuAction","activeSymbolChange"],setup(r,{expose:l,emit:o}){const i=r,c=o,d=x(null),g=xe(i,c,{snapshotTargetRef:d}),{isLoading:w,symbol:C,overlaySubtitle:k,chartData:T,selectedTimeFrame:L,selectedChartType:M,tickSize:P,dark:O,isMultiChart:_,multiChartLayout:R,chartIds:E,selectedChartId:$}=g,z=x(null),j=t({}),B=x(null),I=x(null),A=x(null),N=x(null),H=a(()=>O.value??!1),V=a(()=>B.value?.$el?.offsetHeight??0),K=a(()=>I.value?.$el?.offsetHeight??0),W=a(()=>E.value.map((e,t)=>({id:e,index:t,symbol:g.getSymbolForChart(e),description:g.getSymbolDescriptionForChart(e),timeFrame:g.getTimeFrameForChart(e)}))),U=a(()=>z.value?.chartInstance??null),Y=a(()=>z.value?.currentSeries??null),Z=a(()=>z.value?.chartRenderKey??0),q=a(()=>z.value?.chartDataTimes??[]),G=a(()=>i.plugins??[]),X=a(()=>i.drawingPlugin??null),J=a(()=>i.orderlinePlugin??null),Q=a(()=>G.value.includes(pe.Drawing)&&!!X.value),ee=a(()=>G.value.includes(pe.Orderline)&&!!J.value),te=a(()=>Q.value&&(X.value?.showSidebar??!0)),ae=e=>{c("drawingStateChange",e)},re=e=>{c("orderlineStateChange",e)},le=e=>{if(_.value)return;const t=z.value;if(!t)return;let a=t.crosshairData?.closePrice??null,r="plot";const l=t.chartInstance,o=t.currentSeries;if(l&&o){const i=l.chartElement().getBoundingClientRect(),n=e.clientY-i.top,s=o.coordinateToPrice(n);null!=s&&(a=t.roundPriceByTickSize?.(s));const c=l.priceScale("right").width(),u=l.priceScale("left").width(),d=e.clientX-i.left;(d<u||d>i.width-c)&&(r="axis")}A.value?.open(e.clientX,e.clientY,a,r)},oe=(e,t)=>{c("contextMenuAction",e,t)},ie=a(()=>["flex flex-1 flex-col min-h-0 min-w-0 h-full overflow-hidden relative rounded-xs bg-[var(--er-surface-page)]",{"rounded-l-none":te.value&&!_.value}]),ne=a(()=>{switch(R.value){case ue.TwoRows:case ue.ThreeRows:return"flex flex-col";case ue.TwoCols:case ue.ThreeCols:return"flex flex-row";case ue.Four:return"grid grid-cols-2 grid-rows-2";default:return"flex flex-row"}}),se=e=>["min-h-0 min-w-0 rounded-sm overflow-hidden ring-1 transition-all cursor-pointer",R.value===ue.Four?"h-full w-full":"flex-1",$.value===e?"ring-[var(--er-border-action)]":"ring-[var(--er-border-default)]"];return l({state:g.state,selectedTimeFrame:g.selectedTimeFrame,selectedTimeRange:g.selectedTimeRange,selectedChartType:g.selectedChartType,customTimeRange:g.customTimeRange,isExpanded:g.isExpanded,isMultiChart:g.isMultiChart,multiChartLayout:g.multiChartLayout,selectedChartId:g.selectedChartId,activeChartLastPrice:g.activeChartLastPrice,chartInstance:U,currentSeries:Y,chartRenderKey:Z,headerHeight:V,footerHeight:K,takeSnapshot:g.onSnapshot,openMenu:e=>{N.value?.openMenu?.(e)}}),(t,a)=>{const r=e;return n(),s("div",{class:"flex h-full w-full min-h-0 min-w-0 gap-1 overflow-hidden",onContextmenu:S(le,["prevent"])},[!u(_)&&Q.value&&X.value?(n(),b(ft,{key:0,chart:U.value,series:Y.value,symbol:u(C),"selected-time-frame":u(L),"chart-data-times":q.value,"is-dark":H.value,"floating-target":d.value,"header-height":V.value,"footer-height":K.value,config:X.value,onStateChange:ae},null,8,["chart","series","symbol","selected-time-frame","chart-data-times","is-dark","floating-target","header-height","footer-height","config"])):p("",!0),F((n(),s("div",{ref_key:"lightweightChartRef",ref:d,class:f(ie.value)},[!u(_)&&ee.value&&J.value?(n(),b(bt,{key:0,ref_key:"orderlinePluginRef",ref:N,chart:U.value,series:Y.value,"render-key":Z.value,"is-dark":H.value,config:J.value,onStateChange:re},null,8,["chart","series","render-key","is-dark","config"])):p("",!0),v(u(Ye),{ref_key:"headerRef",ref:B,context:u(g)},null,8,["context"]),u(_)?(n(),s("div",{key:2,class:f(["w-full flex-1 min-h-0 gap-2 p-1",ne.value])},[(n(!0),s(m,null,y(u(E),e=>(n(),s("div",{key:e,class:f(se(e)),onClick:t=>u(g).onSelectChart(e)},[v(yt,{ref_for:!0,ref:t=>((e,t)=>{j.value[e]=t??null})(e,t),"chart-data":u(g).getChartDataForChart(e),"selected-chart-type":u(g).getChartTypeForChart(e),"selected-time-frame":u(g).getTimeFrameForChart(e),dark:H.value,"tick-size":u(P),symbol:u(g).getSymbolForChart(e),"symbol-description":u(g).getSymbolDescriptionForChart(e),"is-multi-chart":!0,"open-label":i.openLabel,"high-label":i.highLabel,"low-label":i.lowLabel,"close-label":i.closeLabel,onLoadMoreLeft:u(g).onLoadMoreLeft},null,8,["chart-data","selected-chart-type","selected-time-frame","dark","tick-size","symbol","symbol-description","open-label","high-label","low-label","close-label","onLoadMoreLeft"])],10,$t))),128))],2)):(n(),s("div",Et,[v(yt,{ref_key:"primaryCanvasRef",ref:z,"chart-data":u(T),"selected-chart-type":u(M),"selected-time-frame":u(L),dark:H.value,"tick-size":u(P),symbol:u(C),"symbol-description":u(k),"is-multi-chart":!1,"open-label":i.openLabel,"high-label":i.highLabel,"low-label":i.lowLabel,"close-label":i.closeLabel,onLoadMoreLeft:u(g).onLoadMoreLeft,onResize:u(g).onResize},null,8,["chart-data","selected-chart-type","selected-time-frame","dark","tick-size","symbol","symbol-description","open-label","high-label","low-label","close-label","onLoadMoreLeft","onResize"])])),v(u(tt),{ref_key:"footerRef",ref:I,context:u(g)},null,8,["context"]),D(t.$slots,"chart-overlay")],2)),[[r,u(w)]]),u(_)?p("",!0):(n(),b(Lt,{key:1,ref_key:"contextMenuRef",ref:A,symbol:u(C),onAction:oe},null,8,["symbol"])),u(g).pendingLayoutSwitch.value?(n(),b(Rt,{key:2,"is-visible":!!u(g).pendingLayoutSwitch.value,"source-layout":u(R),"source-panes":W.value,"target-count":u(de)(u(g).pendingLayoutSwitch.value),onConfirm:u(g).confirmLayoutSwitch,onCancel:u(g).cancelLayoutSwitch},null,8,["is-visible","source-layout","source-panes","target-count","onConfirm","onCancel"])):p("",!0)],32)}}});export{ue as C,pe as E,me as T,zt as _,ce as a,he as b,de as g,xe as p,Ce as u};
@@ -1 +1 @@
1
- import{ref as e,watch as a,computed as l,provide as s,inject as t,defineComponent as o,shallowRef as i,openBlock as n,createElementBlock as r,createElementVNode as m,createVNode as c,unref as d,createSlots as u,withCtx as p,renderSlot as v,normalizeStyle as b,toDisplayString as _,Fragment as y,renderList as g,normalizeClass as f,createBlock as S,resolveDynamicComponent as w,onMounted as z,nextTick as k,onBeforeUnmount as T,useSlots as L,normalizeProps as N,guardReactiveProps as E}from"vue";import{a as C}from"./vendor-vueuse-core-B96HGhR7.mjs";import{useI18n as V}from"vue-i18n";import"element-plus";import"element-plus/es";import{ChevronUp as x,ChevronDown as O,Search as j}from"@lucide/vue";import"./vendor-email-misspelled-0hsXkSSK.mjs";import{_ as F}from"./EaeraInput-CkbcAxy0.mjs";import"./vendor-unorm-Degftfa1.mjs";import"./useEaeraInputPhoneNumber-B72aLnQs.mjs";import"@element-plus/icons-vue";import P from"../composite/EaeraDropdownV2.mjs";import"echarts/core";import"echarts/renderers";import"echarts/charts";import"echarts/components";import"vue-echarts";import"./vendor-currency-symbol-map-C-1fEG2R.mjs";import"./vendor-sortablejs-D3DyHO5Y.mjs";import{_ as H}from"./EaeraTableV2-ZUpzVKhm.mjs";const M=Symbol("EAERA_TIME_N_SALES_CONTEXT_KEY"),$=(t,o)=>{const{t:i}=V(),n=e(t.searchValue),r=e(t.minTradeSize),m=e(!1);a(()=>t.searchValue,e=>{n.value=e}),a(()=>t.minTradeSize,e=>{r.value=e});const c=(e,a)=>{const l=i(e);return"string"==typeof l&&l.trim().length>0?l:a},d=l(()=>[{key:"date",label:c("time-and-sales.table.date","Date"),minWidth:50},{key:"time",label:c("time-and-sales.table.time","Time"),minWidth:60},{key:"price",label:c("time-and-sales.table.price","Price"),minWidth:70,align:"right"},{key:"size",label:c("time-and-sales.table.size","Size"),minWidth:50,align:"right"}].map(e=>({...e,cellClass:"fs-10",cell:{dataClass:"text-primary"}}))),u=l(()=>({searchValue:n.value,minTradeSize:r.value,showingDropdown:m.value}));a(u,e=>{o("stateChange",e)},{immediate:!0});const p={searchValue:l({get:()=>n.value,set:e=>{n.value=e,o("update:searchValue",e)}}),searchPlaceholder:l(()=>t.searchPlaceholder??""),searchOptions:l(()=>t.searchOptions??[]),selectedSearchOption:l(()=>t.selectedSearchOption??""),loadingSearchOptions:l(()=>t.loadingSearchOptions??!1),minTradeSize:l({get:()=>r.value,set:e=>{r.value=e,o("update:minTradeSize",e)}}),minTradeSizePlaceholder:l(()=>t.minTradeSizePlaceholder||c("time-and-sales.table.size","Size")),rows:l(()=>t.rows??[]),fields:l(()=>t.fields&&t.fields.length>0?t.fields:d.value),tableHeight:l(()=>Number(t.tableHeight)||0),tableMaxHeight:l(()=>`${Math.max((Number(t.tableHeight)||0)-16,0)}px`),loading:l(()=>t.loading??!1),fetchingSymbolLabel:l(()=>t.fetchingSymbolLabel||c("market.search.fetching-symbol","Fetching symbol")),symbolNotFoundLabel:l(()=>t.symbolNotFoundLabel||c("market.search.symbol-not-found","Symbol not found")),emptyLabel:l(()=>t.emptyLabel||c("time-and-sales.table.empty","No data")),showingDropdown:l({get:()=>m.value,set:e=>{m.value=e}}),state:u,onResize:(e,a)=>o("resize",e,a),onSelectSearchOption:e=>o("select-search-option",e),onLoadMore:()=>o("load-more")};return s(M,p),p},D=()=>{const e=t(M);if(!e)throw new Error("useEaeraTimeNSales must be used inside EaeraTimeNSales");return e},R={class:"custom-time-n-sales-search__row"},W={class:"custom-time-n-sales-search__symbol-field"},A={class:"custom-time-n-sales-search__dropdown-anchor"},I={key:0,class:"custom-time-n-sales-search__empty body-sm text-placeholder"},B={key:0},q={key:1},U={key:1,class:"custom-time-n-sales-search__option-list"},K=["onClick"],X={class:"body-md__w"},Y={class:"body-sm"},G={class:"custom-time-n-sales-search__size-field"},J={class:"custom-time-n-sales-search__size-icons"},Q=o({__name:"EaeraTimeNSalesSearch",setup(s){const{searchValue:t,searchPlaceholder:o,searchOptions:z,selectedSearchOption:k,loadingSearchOptions:T,minTradeSize:L,minTradeSizePlaceholder:N,fetchingSymbolLabel:E,symbolNotFoundLabel:V,showingDropdown:H,onSelectSearchOption:M}=D(),$=i(null),Q=e(),{width:Z}=C($),ee=l(()=>`${Math.max(Z.value,200)}px`),ae=e(t.value),le=e(!1),se=l({get:()=>L.value,set:e=>{L.value=e}});a(t,e=>{ae.value=e});const te=e=>{le.value||(t.value=e)},oe=()=>{le.value=!0},ie=e=>{t.value=e.data},ne=e=>{le.value=!1;const a=e.data??ae.value;t.value=a},re=e=>{M(e)},me=e=>{H.value=e},ce=()=>{L.value=(e=>{const a=Number(e);return!Number.isFinite(a)||a<1?"":`${a}`})(L.value)},de=()=>{const e=Number(L.value||"1"),a=Number.isFinite(e)&&e>=1?e:1;L.value=`${a+1}`},ue=()=>{const e=Number(L.value||"1"),a=Number.isFinite(e)&&e>=1?e:1;L.value=`${Math.max(1,a-1)}`},he=l(()=>[{value:"up",icon:x,onClick:de},{value:"down",icon:O,onClick:ue}]);return a(t,e=>{e?Q.value?.openDropdown():Q.value?.closeDropdown()},{immediate:!0}),(e,a)=>(n(),r("div",{ref_key:"searchRef",ref:$,class:"custom-time-n-sales-search"},[m("div",R,[m("div",W,[c(d(F),{modelValue:ae.value,"onUpdate:modelValue":a[0]||(a[0]=e=>ae.value=e),placeholder:d(o),clearable:"",class:"watchlist-input custom-time-n-sales-search__symbol-input",onInput:te,onCompositionstart:oe,onCompositionupdate:ie,onCompositionend:ne},u({_:2},[d(t)?void 0:{name:"suffix",fn:p(()=>[c(d(j),{size:16,class:"icon-primary"})]),key:"0"}]),1032,["modelValue","placeholder"]),m("div",A,[c(d(P),{ref_key:"dropdownRef",ref:Q,trigger:"click",placement:"bottom-start",class:"custom-time-n-sales-search__dropdown",onVisibleChange:me},{dropdown:p(()=>[v(e.$slots,"dropdown",{options:d(z),selected:d(k),minWidth:ee.value,loading:d(T),fetchingSymbolLabel:d(E),symbolNotFoundLabel:d(V),selectOption:re},()=>[m("div",{class:"custom-time-n-sales-search__dropdown-panel",style:b({minWidth:ee.value})},[d(T)||!d(z).length?(n(),r("div",I,[d(T)?(n(),r("div",B,_(d(E)),1)):(n(),r("div",q,_(d(V)),1))])):(n(),r("div",U,[(n(!0),r(y,null,g(d(z),e=>(n(),r("div",{key:e.value,class:f(["custom-time-n-sales-search__option",e.value===d(k)&&"is-selected"]),onClick:a=>re(e.value)},[m("div",X,_(e.label),1),m("div",Y,_(e.description),1)],10,K))),128))]))],4)])]),default:p(()=>[a[2]||(a[2]=m("div",{class:"custom-time-n-sales-search__dropdown-trigger"},null,-1))]),_:3},512)])]),m("div",G,[c(d(F),{modelValue:se.value,"onUpdate:modelValue":a[1]||(a[1]=e=>se.value=e),class:"watchlist-input custom-time-n-sales-search__size-input",placeholder:d(N),onChange:ce,onInput:ce},{suffix:p(()=>[m("div",J,[(n(!0),r(y,null,g(he.value,e=>(n(),S(w(e.icon),{key:e.value,size:12,class:"icon-primary custom-time-n-sales-search__size-icon",onClick:e.onClick},null,8,["onClick"]))),128))])]),_:1},8,["modelValue","placeholder"])])])],512))}}),Z={class:"custom-time-n-sales-table"},ee=o({__name:"EaeraTimeNSalesTable",setup(a){const{rows:l,fields:s,tableMaxHeight:t,loading:o,emptyLabel:u,onLoadMore:v}=D(),b=e(),y=i(null),g=()=>{const e=y.value;e&&((e,a=50)=>{const{scrollTop:l,clientHeight:s,scrollHeight:t}=e;return l+s>=t-a})(e)&&v()},f=()=>{g()};let S=null;const w=()=>{null==S&&(S=requestAnimationFrame(()=>{S=null,g()}))};return z(async()=>{await k(),(()=>{const e=b.value?.$el;if(!e)return;const a=e.querySelector(".el-scrollbar__wrap");a&&(y.value=a,a.addEventListener("scroll",f,{passive:!0}),a.addEventListener("wheel",w,{passive:!0}))})()}),T(()=>{(()=>{const e=y.value;e&&(e.removeEventListener("scroll",f),e.removeEventListener("wheel",w),y.value=null)})(),null!=S&&(cancelAnimationFrame(S),S=null)}),(e,a)=>(n(),r("div",Z,[c(d(H),{ref_key:"tableRef",ref:b,class:"watchlist-table custom-time-n-sales-table__table",items:d(l),fields:d(s),"max-height":d(t),stripe:!1,"hide-footer":"",loading:d(o)},{empty:p(()=>[m("div",null,_(d(u)),1)]),_:1},8,["items","fields","max-height","loading"])]))}}),ae={class:"custom-time-n-sales"},le={class:"custom-time-n-sales__table"},se=o({__name:"index",props:{searchValue:{},searchPlaceholder:{},searchOptions:{},selectedSearchOption:{},loadingSearchOptions:{type:Boolean},minTradeSize:{},minTradeSizePlaceholder:{},rows:{},fields:{},tableHeight:{},loading:{type:Boolean},fetchingSymbolLabel:{},symbolNotFoundLabel:{},emptyLabel:{}},emits:["resize","update:searchValue","select-search-option","update:minTradeSize","load-more","stateChange"],setup(e,{expose:l,emit:s}){const t=L(),o=i(null),{width:b,height:_}=C(o),y=$(e,s);return l({state:y.state}),a([b,_],()=>{o.value&&y.onResize(b.value,_.value)}),(e,a)=>(n(),r("div",ae,[m("div",{ref_key:"searchRef",ref:o,class:"custom-time-n-sales__search"},[c(d(Q),null,u({_:2},[d(t)["search-dropdown"]?{name:"dropdown",fn:p(a=>[v(e.$slots,"search-dropdown",N(E(a)))]),key:"0"}:void 0]),1024)],512),m("div",le,[c(d(ee))])]))}});export{se as _,$ as p,D as u};
1
+ import{ref as e,watch as a,computed as l,provide as s,inject as t,defineComponent as o,shallowRef as i,openBlock as n,createElementBlock as r,createElementVNode as m,createVNode as c,unref as d,createSlots as u,withCtx as p,renderSlot as v,normalizeStyle as b,toDisplayString as _,Fragment as y,renderList as g,normalizeClass as f,createBlock as S,resolveDynamicComponent as w,onMounted as z,nextTick as k,onBeforeUnmount as T,useSlots as L,normalizeProps as N,guardReactiveProps as E}from"vue";import{a as C}from"./vendor-vueuse-core-B96HGhR7.mjs";import{useI18n as V}from"vue-i18n";import"element-plus";import"element-plus/es";import{ChevronUp as x,ChevronDown as O,Search as j}from"@lucide/vue";import"./vendor-email-misspelled-0hsXkSSK.mjs";import{_ as F}from"./EaeraInput-CkbcAxy0.mjs";import"./vendor-unorm-Degftfa1.mjs";import"./useEaeraInputPhoneNumber-B72aLnQs.mjs";import"@element-plus/icons-vue";import P from"../composite/EaeraDropdownV2.mjs";import"echarts/core";import"echarts/renderers";import"echarts/charts";import"echarts/components";import"vue-echarts";import"./vendor-currency-symbol-map-C-1fEG2R.mjs";import"./vendor-sortablejs-D3DyHO5Y.mjs";import{_ as H}from"./EaeraTableV2-CBaM5zp9.mjs";const M=Symbol("EAERA_TIME_N_SALES_CONTEXT_KEY"),$=(t,o)=>{const{t:i}=V(),n=e(t.searchValue),r=e(t.minTradeSize),m=e(!1);a(()=>t.searchValue,e=>{n.value=e}),a(()=>t.minTradeSize,e=>{r.value=e});const c=(e,a)=>{const l=i(e);return"string"==typeof l&&l.trim().length>0?l:a},d=l(()=>[{key:"date",label:c("time-and-sales.table.date","Date"),minWidth:50},{key:"time",label:c("time-and-sales.table.time","Time"),minWidth:60},{key:"price",label:c("time-and-sales.table.price","Price"),minWidth:70,align:"right"},{key:"size",label:c("time-and-sales.table.size","Size"),minWidth:50,align:"right"}].map(e=>({...e,cellClass:"fs-10",cell:{dataClass:"text-primary"}}))),u=l(()=>({searchValue:n.value,minTradeSize:r.value,showingDropdown:m.value}));a(u,e=>{o("stateChange",e)},{immediate:!0});const p={searchValue:l({get:()=>n.value,set:e=>{n.value=e,o("update:searchValue",e)}}),searchPlaceholder:l(()=>t.searchPlaceholder??""),searchOptions:l(()=>t.searchOptions??[]),selectedSearchOption:l(()=>t.selectedSearchOption??""),loadingSearchOptions:l(()=>t.loadingSearchOptions??!1),minTradeSize:l({get:()=>r.value,set:e=>{r.value=e,o("update:minTradeSize",e)}}),minTradeSizePlaceholder:l(()=>t.minTradeSizePlaceholder||c("time-and-sales.table.size","Size")),rows:l(()=>t.rows??[]),fields:l(()=>t.fields&&t.fields.length>0?t.fields:d.value),tableHeight:l(()=>Number(t.tableHeight)||0),tableMaxHeight:l(()=>`${Math.max((Number(t.tableHeight)||0)-16,0)}px`),loading:l(()=>t.loading??!1),fetchingSymbolLabel:l(()=>t.fetchingSymbolLabel||c("market.search.fetching-symbol","Fetching symbol")),symbolNotFoundLabel:l(()=>t.symbolNotFoundLabel||c("market.search.symbol-not-found","Symbol not found")),emptyLabel:l(()=>t.emptyLabel||c("time-and-sales.table.empty","No data")),showingDropdown:l({get:()=>m.value,set:e=>{m.value=e}}),state:u,onResize:(e,a)=>o("resize",e,a),onSelectSearchOption:e=>o("select-search-option",e),onLoadMore:()=>o("load-more")};return s(M,p),p},D=()=>{const e=t(M);if(!e)throw new Error("useEaeraTimeNSales must be used inside EaeraTimeNSales");return e},R={class:"custom-time-n-sales-search__row"},W={class:"custom-time-n-sales-search__symbol-field"},A={class:"custom-time-n-sales-search__dropdown-anchor"},I={key:0,class:"custom-time-n-sales-search__empty body-sm text-placeholder"},B={key:0},q={key:1},U={key:1,class:"custom-time-n-sales-search__option-list"},K=["onClick"],X={class:"body-md__w"},Y={class:"body-sm"},G={class:"custom-time-n-sales-search__size-field"},J={class:"custom-time-n-sales-search__size-icons"},Q=o({__name:"EaeraTimeNSalesSearch",setup(s){const{searchValue:t,searchPlaceholder:o,searchOptions:z,selectedSearchOption:k,loadingSearchOptions:T,minTradeSize:L,minTradeSizePlaceholder:N,fetchingSymbolLabel:E,symbolNotFoundLabel:V,showingDropdown:H,onSelectSearchOption:M}=D(),$=i(null),Q=e(),{width:Z}=C($),ee=l(()=>`${Math.max(Z.value,200)}px`),ae=e(t.value),le=e(!1),se=l({get:()=>L.value,set:e=>{L.value=e}});a(t,e=>{ae.value=e});const te=e=>{le.value||(t.value=e)},oe=()=>{le.value=!0},ie=e=>{t.value=e.data},ne=e=>{le.value=!1;const a=e.data??ae.value;t.value=a},re=e=>{M(e)},me=e=>{H.value=e},ce=()=>{L.value=(e=>{const a=Number(e);return!Number.isFinite(a)||a<1?"":`${a}`})(L.value)},de=()=>{const e=Number(L.value||"1"),a=Number.isFinite(e)&&e>=1?e:1;L.value=`${a+1}`},ue=()=>{const e=Number(L.value||"1"),a=Number.isFinite(e)&&e>=1?e:1;L.value=`${Math.max(1,a-1)}`},he=l(()=>[{value:"up",icon:x,onClick:de},{value:"down",icon:O,onClick:ue}]);return a(t,e=>{e?Q.value?.openDropdown():Q.value?.closeDropdown()},{immediate:!0}),(e,a)=>(n(),r("div",{ref_key:"searchRef",ref:$,class:"custom-time-n-sales-search"},[m("div",R,[m("div",W,[c(d(F),{modelValue:ae.value,"onUpdate:modelValue":a[0]||(a[0]=e=>ae.value=e),placeholder:d(o),clearable:"",class:"watchlist-input custom-time-n-sales-search__symbol-input",onInput:te,onCompositionstart:oe,onCompositionupdate:ie,onCompositionend:ne},u({_:2},[d(t)?void 0:{name:"suffix",fn:p(()=>[c(d(j),{size:16,class:"icon-primary"})]),key:"0"}]),1032,["modelValue","placeholder"]),m("div",A,[c(d(P),{ref_key:"dropdownRef",ref:Q,trigger:"click",placement:"bottom-start",class:"custom-time-n-sales-search__dropdown",onVisibleChange:me},{dropdown:p(()=>[v(e.$slots,"dropdown",{options:d(z),selected:d(k),minWidth:ee.value,loading:d(T),fetchingSymbolLabel:d(E),symbolNotFoundLabel:d(V),selectOption:re},()=>[m("div",{class:"custom-time-n-sales-search__dropdown-panel",style:b({minWidth:ee.value})},[d(T)||!d(z).length?(n(),r("div",I,[d(T)?(n(),r("div",B,_(d(E)),1)):(n(),r("div",q,_(d(V)),1))])):(n(),r("div",U,[(n(!0),r(y,null,g(d(z),e=>(n(),r("div",{key:e.value,class:f(["custom-time-n-sales-search__option",e.value===d(k)&&"is-selected"]),onClick:a=>re(e.value)},[m("div",X,_(e.label),1),m("div",Y,_(e.description),1)],10,K))),128))]))],4)])]),default:p(()=>[a[2]||(a[2]=m("div",{class:"custom-time-n-sales-search__dropdown-trigger"},null,-1))]),_:3},512)])]),m("div",G,[c(d(F),{modelValue:se.value,"onUpdate:modelValue":a[1]||(a[1]=e=>se.value=e),class:"watchlist-input custom-time-n-sales-search__size-input",placeholder:d(N),onChange:ce,onInput:ce},{suffix:p(()=>[m("div",J,[(n(!0),r(y,null,g(he.value,e=>(n(),S(w(e.icon),{key:e.value,size:12,class:"icon-primary custom-time-n-sales-search__size-icon",onClick:e.onClick},null,8,["onClick"]))),128))])]),_:1},8,["modelValue","placeholder"])])])],512))}}),Z={class:"custom-time-n-sales-table"},ee=o({__name:"EaeraTimeNSalesTable",setup(a){const{rows:l,fields:s,tableMaxHeight:t,loading:o,emptyLabel:u,onLoadMore:v}=D(),b=e(),y=i(null),g=()=>{const e=y.value;e&&((e,a=50)=>{const{scrollTop:l,clientHeight:s,scrollHeight:t}=e;return l+s>=t-a})(e)&&v()},f=()=>{g()};let S=null;const w=()=>{null==S&&(S=requestAnimationFrame(()=>{S=null,g()}))};return z(async()=>{await k(),(()=>{const e=b.value?.$el;if(!e)return;const a=e.querySelector(".el-scrollbar__wrap");a&&(y.value=a,a.addEventListener("scroll",f,{passive:!0}),a.addEventListener("wheel",w,{passive:!0}))})()}),T(()=>{(()=>{const e=y.value;e&&(e.removeEventListener("scroll",f),e.removeEventListener("wheel",w),y.value=null)})(),null!=S&&(cancelAnimationFrame(S),S=null)}),(e,a)=>(n(),r("div",Z,[c(d(H),{ref_key:"tableRef",ref:b,class:"watchlist-table custom-time-n-sales-table__table",items:d(l),fields:d(s),"max-height":d(t),stripe:!1,"hide-footer":"",loading:d(o)},{empty:p(()=>[m("div",null,_(d(u)),1)]),_:1},8,["items","fields","max-height","loading"])]))}}),ae={class:"custom-time-n-sales"},le={class:"custom-time-n-sales__table"},se=o({__name:"index",props:{searchValue:{},searchPlaceholder:{},searchOptions:{},selectedSearchOption:{},loadingSearchOptions:{type:Boolean},minTradeSize:{},minTradeSizePlaceholder:{},rows:{},fields:{},tableHeight:{},loading:{type:Boolean},fetchingSymbolLabel:{},symbolNotFoundLabel:{},emptyLabel:{}},emits:["resize","update:searchValue","select-search-option","update:minTradeSize","load-more","stateChange"],setup(e,{expose:l,emit:s}){const t=L(),o=i(null),{width:b,height:_}=C(o),y=$(e,s);return l({state:y.state}),a([b,_],()=>{o.value&&y.onResize(b.value,_.value)}),(e,a)=>(n(),r("div",ae,[m("div",{ref_key:"searchRef",ref:o,class:"custom-time-n-sales__search"},[c(d(Q),null,u({_:2},[d(t)["search-dropdown"]?{name:"dropdown",fn:p(a=>[v(e.$slots,"search-dropdown",N(E(a)))]),key:"0"}:void 0]),1024)],512),m("div",le,[c(d(ee))])]))}});export{se as _,$ as p,D as u};
@@ -1 +1 @@
1
- import{defineComponent as e,ref as l,computed as t,watch as n,openBlock as r,createElementBlock as i,withModifiers as a,createElementVNode as o,toDisplayString as s,createCommentVNode as u,createVNode as d,unref as c,createBlock as v,withCtx as m,createTextVNode as p,Fragment as f,normalizeClass as g,provide as y,inject as b,onMounted as _,onBeforeUnmount as x,normalizeStyle as k,renderList as P}from"vue";import{_ as S}from"./EaeraButton-DGfjUoa6.mjs";import{_ as C}from"./EaeraInput-CkbcAxy0.mjs";import{_ as w}from"./EaeraCheckbox-C_faN0pV.mjs";import{_ as L}from"./EaeraSwitch-BI3E0zPf.mjs";import{_ as E}from"./EaeraInputNumber-COC6rdNn.mjs";import{_ as T}from"./EaeraTag-BgmzVuUW.mjs";import{X as B}from"@lucide/vue";import{_ as N}from"./_plugin-vue_export-helper-BCo6x5W8.mjs";const z={class:"orderline-context-menu__header"},M={class:"orderline-context-menu__title-group"},D={class:"orderline-context-menu__title"},I={key:0,class:"orderline-context-menu__status"},A={class:"orderline-context-menu__status-text"},F={key:0,class:"orderline-context-menu__market"},R={class:"orderline-context-menu__market-left"},$={key:1,class:"orderline-context-menu__prices"},O={class:"orderline-context-menu__price-value"},q={key:1,class:"orderline-context-menu__price-sep"},H={class:"orderline-context-menu__price-value"},V={key:0,class:"orderline-context-menu__symbol-info"},j={class:"orderline-context-menu__symbol"},U={class:"orderline-context-menu__inputs"},Y={class:"orderline-context-menu__field"},K={key:0,class:"orderline-context-menu__field"},W={class:"orderline-context-menu__field"},X={key:1,class:"orderline-context-menu__margin"},G={class:"orderline-context-menu__advanced-toggle"},J={class:"orderline-context-menu__sl-tp"},Q={class:"orderline-context-menu__field"},Z={class:"orderline-context-menu__field-header"},ee={class:"orderline-context-menu__field-label-inline"},le={key:0,class:"orderline-context-menu__field-error"},te={class:"orderline-context-menu__field"},ne={class:"orderline-context-menu__field-header"},re={class:"orderline-context-menu__field-label-inline"},ie={key:0,class:"orderline-context-menu__field-error"},ae={class:"orderline-context-menu__comment"},oe={class:"orderline-context-menu__comment-header"},se={class:"orderline-context-menu__comment-counter"},ue={class:"orderline-context-menu__actions"},de=N(e({__name:"OrderlineContextMenu",props:{title:{},statusTagText:{default:""},side:{default:void 0},bid:{default:null},ask:{default:null},symbol:{default:""},advanced:{type:Boolean,default:!1},showStopLimitPrice:{type:Boolean,default:!1},marginText:{default:""},initialPrice:{default:""},initialStopLimitPrice:{default:""},initialVolume:{default:"0.01"},initialStopLoss:{default:""},initialTakeProfit:{default:""},initialStopLossEnabled:{type:Boolean,default:!1},initialTakeProfitEnabled:{type:Boolean,default:!1},initialComment:{default:""},referencePrice:{default:null},tickSize:{default:null},priceDisabled:{type:Boolean,default:!1},volumeDisabled:{type:Boolean,default:!1}},emits:["confirm","discard","close","update:advanced","update:stop-loss","update:take-profit"],setup(e,{emit:y}){const b=e,_=y,x=l(null!==b.initialPrice&&void 0!==b.initialPrice?String(b.initialPrice):b.referencePrice?String(b.referencePrice):""),k=l(null!==b.initialStopLimitPrice&&void 0!==b.initialStopLimitPrice?String(b.initialStopLimitPrice):""),P=l(null!==b.initialVolume&&void 0!==b.initialVolume?String(b.initialVolume):""),N=l(b.initialStopLossEnabled),de=l(null!==b.initialStopLoss&&void 0!==b.initialStopLoss?String(b.initialStopLoss):""),ce=l(b.initialTakeProfitEnabled),ve=l(null!==b.initialTakeProfit&&void 0!==b.initialTakeProfit?String(b.initialTakeProfit):""),me=l(b.initialComment),pe=t(()=>{const e=Number(de.value);return Number.isFinite(e)?e:void 0}),fe=t(()=>{const e=Number(ve.value);return Number.isFinite(e)?e:void 0}),ge=t(()=>{const e=Number(b.tickSize);return Number.isFinite(e)&&e>0?e:1e-5}),ye=t(()=>{const e=Number(b.referencePrice);return Number.isFinite(e)?e:null}),be=t(()=>N.value&&void 0!==pe.value&&null!==ye.value&&pe.value>=ye.value?"Must be below order price":""),he=t(()=>ce.value&&void 0!==fe.value&&null!==ye.value&&fe.value<=ye.value?"Must be above order price":""),_e=()=>{_("update:stop-loss",{enabled:N.value,price:pe.value})},xe=()=>{_("update:take-profit",{enabled:ce.value,price:fe.value})};n(()=>b.initialPrice,e=>{null!=e&&(x.value=String(e))}),n(()=>b.initialStopLoss,e=>{de.value=null!=e?String(e):""}),n(()=>b.initialTakeProfit,e=>{ve.value=null!=e?String(e):""}),n(()=>b.initialComment,e=>{me.value=e??""});const ke=e=>{x.value=null==e?"":String(e)},Pe=e=>{k.value=null==e?"":String(e)},Se=e=>{P.value=null==e?"":String(e)},Ce=e=>{de.value=null==e?"":String(e),_e()},we=e=>{ve.value=null==e?"":String(e),xe()},Le=e=>{me.value=e??""},Ee=()=>{_("confirm",{price:x.value,stopLimitPrice:k.value,volume:P.value,stopLossEnabled:N.value,stopLoss:de.value,takeProfitEnabled:ce.value,takeProfit:ve.value,comment:me.value}),_("close")},Te=()=>{_("discard"),_("close")};return(l,t)=>{const n=T,y=E,Be=L,Ne=w,ze=C,Me=S;return r(),i("div",{class:"orderline-context-menu",onMousedown:t[4]||(t[4]=a(()=>{},["stop"]))},[o("div",z,[o("div",M,[o("span",D,s(e.title),1),e.statusTagText?(r(),i("div",I,[t[5]||(t[5]=o("span",{class:"orderline-context-menu__status-dot"},null,-1)),o("span",A,s(e.statusTagText),1)])):u("",!0)]),o("button",{type:"button",class:"orderline-context-menu__close","aria-label":"Close",onClick:t[0]||(t[0]=e=>_("close"))},[d(c(B),{size:18})])]),e.side||e.bid||e.ask?(r(),i("div",F,[o("div",R,[e.side?(r(),v(n,{key:0,color:"buy"===e.side?"success":"danger",size:"sm",effect:"light",round:!1},{default:m(()=>[p(s("buy"===e.side?"BUY":"SELL"),1)]),_:1},8,["color"])):u("",!0),e.bid||e.ask?(r(),i("div",$,[e.bid?(r(),i(f,{key:0},[t[6]||(t[6]=o("span",{class:"orderline-context-menu__price-label"},"Bid",-1)),o("span",O,s(e.bid),1)],64)):u("",!0),e.bid&&e.ask?(r(),i("span",q,"/")):u("",!0),e.ask?(r(),i(f,{key:2},[t[7]||(t[7]=o("span",{class:"orderline-context-menu__price-label"},"Ask",-1)),o("span",H,s(e.ask),1)],64)):u("",!0)])):u("",!0)]),e.symbol?(r(),i("div",V,[o("span",j,s(e.symbol),1),t[8]||(t[8]=o("svg",{width:"12",height:"12",viewBox:"0 0 12 12",fill:"none"},[o("circle",{cx:"6",cy:"6",r:"5.25",stroke:"currentColor","stroke-width":"1"}),o("path",{d:"M6 5v3.5M6 3.5v.5",stroke:"currentColor","stroke-width":"1","stroke-linecap":"round"})],-1))])):u("",!0)])):u("",!0),o("div",U,[o("div",Y,[t[9]||(t[9]=o("div",{class:"orderline-context-menu__field-label"},[o("span",null,"Price"),o("span",{class:"orderline-context-menu__required"},"*")],-1)),d(y,{value:x.value,placeholder:"0",controls:!0,size:"sm","other-props":{min:0,step:ge.value,disabled:e.priceDisabled},class:"w-full",onHandleChange:ke},null,8,["value","other-props"])]),e.showStopLimitPrice?(r(),i("div",K,[t[10]||(t[10]=o("div",{class:"orderline-context-menu__field-label"},[o("span",null,"Stop Limit Price"),o("span",{class:"orderline-context-menu__required"},"*")],-1)),d(y,{value:k.value,placeholder:"0",controls:!0,size:"sm","other-props":{min:0,step:ge.value},class:"w-full",onHandleChange:Pe},null,8,["value","other-props"])])):u("",!0),o("div",W,[t[11]||(t[11]=o("div",{class:"orderline-context-menu__field-label"},[o("span",null,"Volume"),o("span",{class:"orderline-context-menu__required"},"*")],-1)),d(y,{value:P.value,placeholder:"0",controls:!0,size:"sm","other-props":{min:0,step:.01,disabled:e.volumeDisabled},class:"w-full",onHandleChange:Se},null,8,["value","other-props"])])]),e.marginText?(r(),i("p",X,s(e.marginText),1)):u("",!0),o("div",G,[o("span",{class:g(["orderline-context-menu__advanced-label",{"orderline-context-menu__advanced-label--active":e.advanced}])}," Advanced ",2),d(Be,{"model-value":e.advanced,size:"sm","onUpdate:modelValue":t[1]||(t[1]=e=>_("update:advanced",e))},null,8,["model-value"])]),e.advanced?(r(),i(f,{key:2},[o("div",J,[o("div",Q,[o("div",Z,[o("div",ee,[d(Ne,{"model-value":N.value,size:"sm",color:"success","onUpdate:modelValue":t[2]||(t[2]=e=>(e=>{if(N.value=e,e&&!de.value&&null!==ye.value){const e=ge.value,l="buy"===b.side?ye.value-20*e:ye.value+20*e;de.value=String(Number(l.toFixed(8)))}_e()})(Boolean(e)))},null,8,["model-value"]),t[12]||(t[12]=o("span",null,"Stop Loss",-1))]),t[13]||(t[13]=o("span",{class:"orderline-context-menu__required"},"*",-1))]),d(y,{value:pe.value,placeholder:"0",controls:!0,size:"sm","other-props":{min:0,step:ge.value,disabled:!N.value},class:"w-full",onHandleChange:Ce},null,8,["value","other-props"]),be.value?(r(),i("span",le,s(be.value),1)):u("",!0)]),o("div",te,[o("div",ne,[o("div",re,[t[14]||(t[14]=o("span",null,"Take Profit",-1)),d(Ne,{"model-value":ce.value,size:"sm",color:"success","onUpdate:modelValue":t[3]||(t[3]=e=>(e=>{if(ce.value=e,e&&!ve.value&&null!==ye.value){const e=ge.value,l="buy"===b.side?ye.value+30*e:ye.value-30*e;ve.value=String(Number(l.toFixed(8)))}xe()})(Boolean(e)))},null,8,["model-value"])]),t[15]||(t[15]=o("span",{class:"orderline-context-menu__required"},"*",-1))]),d(y,{value:fe.value,placeholder:"0",controls:!0,size:"sm","other-props":{min:0,step:ge.value,disabled:!ce.value},class:"w-full",onHandleChange:we},null,8,["value","other-props"]),he.value?(r(),i("span",ie,s(he.value),1)):u("",!0)])]),o("div",ae,[o("div",oe,[t[16]||(t[16]=o("span",null,"Comment",-1)),o("span",se,s(me.value.length)+"/"+s(30),1)]),d(ze,{value:me.value,placeholder:"Add a comment",size:"sm","other-props":{maxlength:30},class:"w-full",onHandleChange:Le},null,8,["value","other-props"])])],64)):u("",!0),o("div",ue,[d(Me,{color:"contrast",plain:"",size:"sm",onClick:Te},{default:m(()=>[...t[17]||(t[17]=[p("Discard",-1)])]),_:1}),d(Me,{color:"primary",size:"sm",onClick:Ee},{default:m(()=>[...t[18]||(t[18]=[p("Confirm",-1)])]),_:1})])],32)}}}),[["__scopeId","data-v-2d8976ac"]]),ce=e=>e?{surfacePrimary:"#191D23",surfacePositive:"#16c784",surfaceNegative:"#ef4444",surfaceElevated:"#323A45",surfaceAction:"#A259FB",textPrimary:"#F0F1F3",textSecondary:"#B1B9C5",borderPrimary:"#323A45",borderPrimaryInverse:"#D8DCE2",borderAction:"#A259FB"}:{surfacePrimary:"white",surfacePositive:"#16c784",surfaceNegative:"#ef4444",surfaceElevated:"#d8dce2",surfaceAction:"#A259FB",textPrimary:"#0f1115",textSecondary:"#4b5768",borderPrimary:"#d8dce2",borderPrimaryInverse:"#323a45",borderAction:"#A259FB"},ve=(e="neutral",l="order",t,n)=>{const r=ce(t),i="position"===l;let a;return a="stop-loss"===n?r.surfaceNegative:"take-profit"===n?r.surfacePositive:i?r.borderAction:"buy"===e?r.surfacePositive:"sell"===e?r.surfaceNegative:r.borderAction,{lineColor:a,lineWidth:2,lineDash:[0,0],badgeBackgroundColor:r.surfacePrimary,badgeBorderColor:a,badgeTextColor:i?r.textPrimary:a,handleColor:a,handleBackgroundColor:i?r.surfacePrimary:"transparent",handleBorderColor:i?r.surfacePrimary:"transparent",deleteColor:i?r.textPrimary:a,deleteBackgroundColor:i?r.borderAction:r.surfacePrimary,deleteBorderColor:a,fontSize:12}},me=Symbol("EAERA_ORDERLINE_OVERLAY_CONTEXT_KEY"),pe=(e,r)=>{const i=l(null),a=l({}),o=t(()=>({draggingLineId:i.value,draftPrices:a.value}));n(o,e=>{r("stateChange",e)},{immediate:!0});const s={orderLines:t(()=>e.orderLines??[]),chartInstance:t(()=>e.chartInstance??null),seriesInstance:t(()=>e.seriesInstance??null),orderLineTool:t(()=>e.orderLineTool??null),renderKey:t(()=>e.renderKey??0),marketPrice:t(()=>e.marketPrice??null),tickSize:t(()=>e.tickSize??null),dark:t(()=>e.dark),state:o,onDeleteLine:e=>{r("deleteLine",e)},onLinePriceChange:(e,l)=>{r("linePriceChange",e,l)},onLinePricePreview:(e,l)=>{r("linePricePreview",e,l)},onDragStateChange:e=>{i.value=e,r("dragStateChange",e)},onDraftPricesChange:e=>{a.value=e},onSLTPChange:(e,l,t)=>{r("slTpChange",e,l,t)}};return y(me,s),s},fe=()=>{const e=b(me);if(!e)throw new Error("useEaeraOrderlineOverlay must be used inside EaeraOrderlineOverlay");return e},ge=["onMousedown","onDblclick"],ye=["onDblclick"],be=e({__name:"index",props:{orderLines:{},chartInstance:{},seriesInstance:{},orderLineTool:{},renderKey:{},marketPrice:{},tickSize:{},dark:{type:Boolean}},emits:["deleteLine","linePriceChange","linePricePreview","dragStateChange","slTpChange","stateChange"],setup(e,{expose:a,emit:d}){const m=pe(e,d),{orderLines:y,chartInstance:b,seriesInstance:S,orderLineTool:C,renderKey:w,marketPrice:L,tickSize:E,dark:T,state:B,onDeleteLine:N,onLinePriceChange:z,onLinePricePreview:M,onDragStateChange:D,onDraftPricesChange:I,onSLTPChange:A}=m,F=l(0),R=l(0),$=new Set,O=l(!1);let q=null,H=null,V=null;const j=l(null),U=l(null),Y=l({}),K=()=>b.value,W=()=>S.value,X=(e,l,t)=>Math.min(Math.max(e,l),t),G=(e,l,t)=>{const n=t.filter(e=>e>0),r={height:`${Math.max(l,1)}px`};if(n.length>=2){const[l,t]=n;return{...r,backgroundImage:`repeating-linear-gradient(to right, ${e} 0, ${e} ${l}px, transparent ${l}px, transparent ${l+t}px)`,backgroundSize:`${l+t}px 100%`}}return{...r,backgroundColor:e}},J=()=>{null!==H&&"undefined"!=typeof window&&(window.cancelAnimationFrame(H),H=null)},Q=()=>{R.value+=1,H=window.requestAnimationFrame(Q)},Z=()=>{"undefined"!=typeof window&&null===H&&0!==y.value.length&&(H=window.requestAnimationFrame(Q))},ee=()=>{q?.disconnect(),$.clear()},le=()=>{if("undefined"==typeof ResizeObserver)return;q||(q=new ResizeObserver(()=>{F.value+=1}));const e=K(),l=e?.chartElement(),t=[l,e&&"function"==typeof e.panes?e.panes()[0]?.getHTMLElement?.()??null:null].filter(e=>null!=e);t.length===$.size&&t.every(e=>$.has(e))||(ee(),t.forEach(e=>{q?.observe(e),$.add(e)}),F.value+=1)},te=e=>{const l=(e=>{const l=Number(e);if(!Number.isFinite(l)||l<=0)return 2;const t=l.toLocaleString("en-US",{useGrouping:!1,maximumFractionDigits:20}),n=(t.includes(".")?t.replace(/0+$/,"").replace(/\.$/,""):t).split(".")[1];return n?n.length:0})(E.value);return Number(e).toFixed(l)},ne=(e,l)=>{if(!Number.isFinite(l))return l;const t=Number(E.value)||1e-5;if("stop-loss"===e.lineRole&&void 0!==e.entryPrice)return"buy"===e.side?Math.min(l,e.entryPrice-t):Math.max(l,e.entryPrice+t);if("take-profit"===e.lineRole&&void 0!==e.entryPrice)return"buy"===e.side?Math.max(l,e.entryPrice+t):Math.min(l,e.entryPrice-t);const n=(e=>{if("number"==typeof e)return Number.isFinite(e)?e:null;if("string"==typeof e&&""!==e.trim()){const l=Number(e);return Number.isFinite(l)?l:null}return null})(L.value);return null===n?l:"buy"===e.side?Math.min(l,n):"sell"===e.side?Math.max(l,n):l},re=t(()=>{const e=w.value,l=F.value,t=R.value;return e<0||l<0||t<0?null:(()=>{const e=K(),l=j.value?.getBoundingClientRect();if(!e||!l)return null;const t=e.chartElement(),n=t.getBoundingClientRect(),r="function"==typeof e.panes?e.panes()[0]?.getHTMLElement?.()??null:null,i=r?.getBoundingClientRect(),a=e.paneSize?.(0),o=e.priceScale("left").width(),s=e.priceScale("right").width(),u=e.timeScale().height(),d=a?.width??Math.max(0,t.clientWidth-o-s),c=a?.height??Math.max(0,t.clientHeight-u);return{top:(i?i.top:n.top)-l.top,left:n.left-l.left+o,width:d,height:i?.height??c}})()}),ie=t(()=>{const e=re.value;return e?{top:`${e.top}px`,left:`${e.left}px`,width:`${e.width}px`,height:`${e.height}px`}:null}),ae=l(null),oe=l(null),se=new Set;let ue=!0;const me=e=>{const l=y.value.find(l=>l.id===e);l&&(be.value={x:0,y:0},oe.value=e,ae.value=(e=>{const{primary:l,quantity:t}=(e=>{const l=e.split("|").map(e=>e.trim());return{primary:l[0]??"",quantity:l[1]??"",price:l[2]??""}})(e.label),n=e.readonly&&"order"===e.type,r=l.replace(/^[+-]/,""),i=e.parentId??e.id,a=y.value.find(e=>e.parentId===i&&"stop-loss"===e.lineRole),o=y.value.find(e=>e.parentId===i&&"take-profit"===e.lineRole),s=y.value.find(e=>e.id===i),u=s?.price??e.entryPrice??e.price;return{title:n?"Market Order":"Order",statusTagText:t?`${l} ${t}`:l,price:e.price,side:"neutral"!==e.side?e.side:void 0,volume:r,advanced:n,entryPrice:u,initialStopLossEnabled:!!a,initialStopLoss:a?.price,initialTakeProfitEnabled:!!o,initialTakeProfit:o?.price}})(l))};n(()=>y.value,e=>{const l=new Set;for(const t of e)l.add(t.id);se.clear(),l.forEach(e=>se.add(e)),ue?ue=!1:oe.value&&!l.has(oe.value)&&(ae.value=null,oe.value=null)},{deep:!0});const fe=t(()=>!!oe.value&&(y.value.find(e=>e.id===oe.value)?.readonly??!1)),be=l({x:0,y:0}),he=l(!1),_e=t(()=>{const e=K(),l=j.value;return e&&l?{width:l.clientWidth,height:l.clientHeight}:null}),xe=t(()=>{if(!ae.value||!_e.value)return null;const{width:e,height:l}=_e.value,t=X(e-382-20+be.value.x,0,e-382);return{position:"absolute",top:`${X(20+be.value.y,0,l-460)}px`,left:`${t}px`}});let ke=0,Pe=0;const Se=e=>{if(!_e.value)return;e.target.closest('input, button, select, textarea, [role="switch"], [role="checkbox"]')||(he.value=!0,ke=e.clientX-be.value.x,Pe=e.clientY-be.value.y,document.body.style.userSelect="none",window.addEventListener("pointermove",Ce),window.addEventListener("pointerup",we))},Ce=e=>{be.value={x:e.clientX-ke,y:e.clientY-Pe}},we=()=>{he.value=!1,document.body.style.userSelect="",window.removeEventListener("pointermove",Ce),window.removeEventListener("pointerup",we)},Le=e=>{const l=y.value.find(l=>l.id===e);return l?l.parentId??l.id:null},Ee=e=>{const l=Le(oe.value??"");if(!l)return;const t=y.value.find(e=>e.parentId===l&&"take-profit"===e.lineRole),n=t?.price??null,r=e.enabled&&void 0!==e.price?e.price:null;A(l,r,n)},Te=e=>{const l=Le(oe.value??"");if(!l)return;const t=y.value.find(e=>e.parentId===l&&"stop-loss"===e.lineRole),n=t?.price??null,r=e.enabled&&void 0!==e.price?e.price:null;A(l,n,r)},Be=e=>{ae.value=null,oe.value=null},Ne=()=>{ae.value=null,oe.value=null},ze=()=>{oe.value&&(N(oe.value),Ne())},Me=t(()=>"boolean"==typeof T.value?T.value:O.value),De=t(()=>{const e=w.value,l=R.value,t=W(),n=K(),r=re.value;return!t||!n||!r||e<0||l<0?[]:y.value.map(e=>{const l=(e=>Y.value[e.id]??e.price)(e),t=((e,l)=>{const t=W();if(!t)return null;const n=t.priceToCoordinate(e);if(null!==n)return n;const r=t.priceScale().getVisibleRange();if(!r)return null;const i=Math.min(r.from,r.to);return e>Math.max(r.from,r.to)?-1:e<i?l+1:null})(l,r.height);if(null===t)return null;const n=((e,l)=>e<0?"top":e>l?"bottom":"middle")(t,r.height),i=X(t,0,r.height),a=ce(Me.value),o={...ve(e.side,e.type,Me.value,e.lineRole),...e.options},[s,u,d]=((e,l)=>{const t=e.split("|").map(e=>e.trim()),n=te(l);return t.length>=3?(t[t.length-1]=n,t):2===t.length?[...t,n]:1===t.length?[t[0],"",n]:["","",n]})(e.label,l),c=a.textPrimary,[v]=[s],m={volume:v,pnl:u,price:d};return{...e,livePrice:l,edgePlacement:n,orderParts:{primary:v,quantity:u,price:d},positionParts:m,containerStyle:{top:`${i}px`},lineStyle:G(o.lineColor,o.lineWidth,o.lineDash),lineColor:o.lineColor,badgeWrapperStyle:{marginLeft:"12px"},badgeStyle:{borderColor:o.badgeBorderColor,backgroundColor:o.badgeBackgroundColor,color:o.badgeTextColor},middleStyle:{backgroundColor:o.badgeBackgroundColor,color:a.textPrimary},volumeStyle:{backgroundColor:"transparent",color:a.textPrimary},separatorStyle:{backgroundColor:a.borderPrimaryInverse},deleteStyle:{backgroundColor:o.deleteBackgroundColor,color:o.deleteColor,borderColor:o.deleteBorderColor},deleteButtonStyle:{color:o.deleteColor,borderColor:o.deleteBorderColor},priceStyle:{color:a.textPrimary},pnlStyle:{color:c},dragStyle:{backgroundColor:o.handleBackgroundColor,color:o.handleColor}}}).filter(e=>null!==e)}),Ie=()=>{const e=U.value;if(!e)return;const l=Y.value[e];if(U.value=null,D(null),document.body.style.userSelect="",window.removeEventListener("mousemove",Ae),window.removeEventListener("mouseup",Ie),"number"==typeof l){z(e,l);const{[e]:t,...n}=Y.value;Y.value=n,I(n)}},Ae=e=>{const l=U.value,t=W(),n=(()=>{const e=K();if(!e)return null;const l="function"==typeof e.panes?e.panes()[0]?.getHTMLElement?.()??null:null;return l?.getBoundingClientRect()??e.chartElement().getBoundingClientRect()})();if(!l||!t||!n)return;const r=e.clientY-n.top,i=t.coordinateToPrice(r);if("number"!=typeof i||Number.isNaN(i))return;const a=y.value.find(e=>e.id===l);if(!a)return;const o=ne(a,i),s=Number(te(o)),u={...Y.value,[l]:s};Y.value=u,I(u),M(l,s),((e,l)=>{const t=C.value?.orderLines.find(l=>l.localId===e);t?.updatePrice(l)})(l,s)},Fe=e=>{O.value=e.matches};return n(()=>w.value,()=>{le()},{immediate:!0}),n(()=>y.value.length,e=>{e>0?Z():J()},{immediate:!0}),_(()=>{le(),Z(),"undefined"!=typeof window&&"function"==typeof window.matchMedia&&(V=window.matchMedia("(prefers-color-scheme: dark)"),O.value=V.matches,V.addEventListener("change",Fe))}),x(()=>{window.removeEventListener("mousemove",Ae),window.removeEventListener("mouseup",Ie),window.removeEventListener("pointermove",Ce),window.removeEventListener("pointerup",we),ee(),J(),V?.removeEventListener("change",Fe),V=null}),a({state:B,openMenu:e=>{be.value={x:0,y:0},oe.value=e.lineId??null,ae.value=e.menuData}}),(e,l)=>(r(),i("div",{ref_key:"overlayRootRef",ref:j,class:"custom-order-line-overlay"},[ie.value?(r(),i("div",{key:0,class:"custom-order-line-overlay__pane",style:k(ie.value)},[(r(!0),i(f,null,P(De.value,e=>(r(),i("div",{key:e.id,class:g(["custom-order-line-item",`custom-order-line-item--edge-${e.edgePlacement}`]),style:k(e.containerStyle)},["middle"===e.edgePlacement?(r(),i("div",{key:0,class:g(["custom-order-line-item__line",{"custom-order-line-item__line--draggable":"order"===e.type&&!e.readonly,"custom-order-line-item__line--clickable":e.readonly}]),style:k(e.lineStyle),onMousedown:l=>{return"order"!==e.type||e.readonly?void 0:(t=e.id,(n=l).preventDefault(),n.stopPropagation(),U.value=t,D(t),document.body.style.userSelect="none",window.addEventListener("mousemove",Ae),void window.addEventListener("mouseup",Ie));var t,n},onDblclick:l=>e.readonly?me(e.id):void 0},null,46,ge)):u("",!0),o("div",{class:g(["custom-order-line-item__label",{"custom-order-line-item__label--clickable":e.readonly}]),style:k({color:e.lineColor}),onDblclick:l=>e.readonly?me(e.id):void 0},[p(s(e.orderParts.primary)+" ",1),l[0]||(l[0]=o("span",{class:"custom-order-line-item__label-sep"},"·",-1)),p(" "+s(e.orderParts.quantity)+" ",1),l[1]||(l[1]=o("span",{class:"custom-order-line-item__label-sep"},"·",-1)),p(" "+s(e.orderParts.price),1)],46,ye)],6))),128))],4)):u("",!0),ae.value&&xe.value?(r(),v(de,{key:1,class:g(["custom-order-line-overlay__menu",{"custom-order-line-overlay__menu--dragging":he.value}]),style:k(xe.value),title:ae.value.title,"status-tag-text":ae.value.statusTagText,"reference-price":ae.value.entryPrice??ae.value.price,"tick-size":c(E),side:ae.value.side,advanced:ae.value.advanced,"initial-volume":ae.value.volume,"initial-stop-loss":ae.value.initialStopLoss,"initial-take-profit":ae.value.initialTakeProfit,"initial-stop-loss-enabled":ae.value.initialStopLossEnabled,"initial-take-profit-enabled":ae.value.initialTakeProfitEnabled,"price-disabled":fe.value,"volume-disabled":fe.value,onPointerdown:Se,onClose:Ne,onConfirm:Be,onDiscard:ze,"onUpdate:stopLoss":Ee,"onUpdate:takeProfit":Te},null,8,["class","style","title","status-tag-text","reference-price","tick-size","side","advanced","initial-volume","initial-stop-loss","initial-take-profit","initial-stop-loss-enabled","initial-take-profit-enabled","price-disabled","volume-disabled"])):u("",!0)],512))}});export{de as O,be as _,pe as p,fe as u};
1
+ import{defineComponent as e,ref as l,computed as t,watch as n,openBlock as r,createElementBlock as i,withModifiers as a,createElementVNode as o,toDisplayString as s,createCommentVNode as u,createVNode as d,unref as c,createBlock as v,withCtx as m,createTextVNode as p,Fragment as f,normalizeClass as g,provide as y,inject as b,onMounted as _,onBeforeUnmount as x,normalizeStyle as k,renderList as P}from"vue";import{_ as S}from"./EaeraButton-BPVKRBOn.mjs";import{_ as C}from"./EaeraInput-CkbcAxy0.mjs";import{_ as w}from"./EaeraCheckbox-C_faN0pV.mjs";import{_ as L}from"./EaeraSwitch-BI3E0zPf.mjs";import{_ as E}from"./EaeraInputNumber-COC6rdNn.mjs";import{_ as T}from"./EaeraTag-BgmzVuUW.mjs";import{X as B}from"@lucide/vue";import{_ as N}from"./_plugin-vue_export-helper-BCo6x5W8.mjs";const z={class:"orderline-context-menu__header"},M={class:"orderline-context-menu__title-group"},D={class:"orderline-context-menu__title"},I={key:0,class:"orderline-context-menu__status"},A={class:"orderline-context-menu__status-text"},F={key:0,class:"orderline-context-menu__market"},R={class:"orderline-context-menu__market-left"},$={key:1,class:"orderline-context-menu__prices"},O={class:"orderline-context-menu__price-value"},q={key:1,class:"orderline-context-menu__price-sep"},H={class:"orderline-context-menu__price-value"},V={key:0,class:"orderline-context-menu__symbol-info"},j={class:"orderline-context-menu__symbol"},U={class:"orderline-context-menu__inputs"},Y={class:"orderline-context-menu__field"},K={key:0,class:"orderline-context-menu__field"},W={class:"orderline-context-menu__field"},X={key:1,class:"orderline-context-menu__margin"},G={class:"orderline-context-menu__advanced-toggle"},J={class:"orderline-context-menu__sl-tp"},Q={class:"orderline-context-menu__field"},Z={class:"orderline-context-menu__field-header"},ee={class:"orderline-context-menu__field-label-inline"},le={key:0,class:"orderline-context-menu__field-error"},te={class:"orderline-context-menu__field"},ne={class:"orderline-context-menu__field-header"},re={class:"orderline-context-menu__field-label-inline"},ie={key:0,class:"orderline-context-menu__field-error"},ae={class:"orderline-context-menu__comment"},oe={class:"orderline-context-menu__comment-header"},se={class:"orderline-context-menu__comment-counter"},ue={class:"orderline-context-menu__actions"},de=N(e({__name:"OrderlineContextMenu",props:{title:{},statusTagText:{default:""},side:{default:void 0},bid:{default:null},ask:{default:null},symbol:{default:""},advanced:{type:Boolean,default:!1},showStopLimitPrice:{type:Boolean,default:!1},marginText:{default:""},initialPrice:{default:""},initialStopLimitPrice:{default:""},initialVolume:{default:"0.01"},initialStopLoss:{default:""},initialTakeProfit:{default:""},initialStopLossEnabled:{type:Boolean,default:!1},initialTakeProfitEnabled:{type:Boolean,default:!1},initialComment:{default:""},referencePrice:{default:null},tickSize:{default:null},priceDisabled:{type:Boolean,default:!1},volumeDisabled:{type:Boolean,default:!1}},emits:["confirm","discard","close","update:advanced","update:stop-loss","update:take-profit"],setup(e,{emit:y}){const b=e,_=y,x=l(null!==b.initialPrice&&void 0!==b.initialPrice?String(b.initialPrice):b.referencePrice?String(b.referencePrice):""),k=l(null!==b.initialStopLimitPrice&&void 0!==b.initialStopLimitPrice?String(b.initialStopLimitPrice):""),P=l(null!==b.initialVolume&&void 0!==b.initialVolume?String(b.initialVolume):""),N=l(b.initialStopLossEnabled),de=l(null!==b.initialStopLoss&&void 0!==b.initialStopLoss?String(b.initialStopLoss):""),ce=l(b.initialTakeProfitEnabled),ve=l(null!==b.initialTakeProfit&&void 0!==b.initialTakeProfit?String(b.initialTakeProfit):""),me=l(b.initialComment),pe=t(()=>{const e=Number(de.value);return Number.isFinite(e)?e:void 0}),fe=t(()=>{const e=Number(ve.value);return Number.isFinite(e)?e:void 0}),ge=t(()=>{const e=Number(b.tickSize);return Number.isFinite(e)&&e>0?e:1e-5}),ye=t(()=>{const e=Number(b.referencePrice);return Number.isFinite(e)?e:null}),be=t(()=>N.value&&void 0!==pe.value&&null!==ye.value&&pe.value>=ye.value?"Must be below order price":""),he=t(()=>ce.value&&void 0!==fe.value&&null!==ye.value&&fe.value<=ye.value?"Must be above order price":""),_e=()=>{_("update:stop-loss",{enabled:N.value,price:pe.value})},xe=()=>{_("update:take-profit",{enabled:ce.value,price:fe.value})};n(()=>b.initialPrice,e=>{null!=e&&(x.value=String(e))}),n(()=>b.initialStopLoss,e=>{de.value=null!=e?String(e):""}),n(()=>b.initialTakeProfit,e=>{ve.value=null!=e?String(e):""}),n(()=>b.initialComment,e=>{me.value=e??""});const ke=e=>{x.value=null==e?"":String(e)},Pe=e=>{k.value=null==e?"":String(e)},Se=e=>{P.value=null==e?"":String(e)},Ce=e=>{de.value=null==e?"":String(e),_e()},we=e=>{ve.value=null==e?"":String(e),xe()},Le=e=>{me.value=e??""},Ee=()=>{_("confirm",{price:x.value,stopLimitPrice:k.value,volume:P.value,stopLossEnabled:N.value,stopLoss:de.value,takeProfitEnabled:ce.value,takeProfit:ve.value,comment:me.value}),_("close")},Te=()=>{_("discard"),_("close")};return(l,t)=>{const n=T,y=E,Be=L,Ne=w,ze=C,Me=S;return r(),i("div",{class:"orderline-context-menu",onMousedown:t[4]||(t[4]=a(()=>{},["stop"]))},[o("div",z,[o("div",M,[o("span",D,s(e.title),1),e.statusTagText?(r(),i("div",I,[t[5]||(t[5]=o("span",{class:"orderline-context-menu__status-dot"},null,-1)),o("span",A,s(e.statusTagText),1)])):u("",!0)]),o("button",{type:"button",class:"orderline-context-menu__close","aria-label":"Close",onClick:t[0]||(t[0]=e=>_("close"))},[d(c(B),{size:18})])]),e.side||e.bid||e.ask?(r(),i("div",F,[o("div",R,[e.side?(r(),v(n,{key:0,color:"buy"===e.side?"success":"danger",size:"sm",effect:"light",round:!1},{default:m(()=>[p(s("buy"===e.side?"BUY":"SELL"),1)]),_:1},8,["color"])):u("",!0),e.bid||e.ask?(r(),i("div",$,[e.bid?(r(),i(f,{key:0},[t[6]||(t[6]=o("span",{class:"orderline-context-menu__price-label"},"Bid",-1)),o("span",O,s(e.bid),1)],64)):u("",!0),e.bid&&e.ask?(r(),i("span",q,"/")):u("",!0),e.ask?(r(),i(f,{key:2},[t[7]||(t[7]=o("span",{class:"orderline-context-menu__price-label"},"Ask",-1)),o("span",H,s(e.ask),1)],64)):u("",!0)])):u("",!0)]),e.symbol?(r(),i("div",V,[o("span",j,s(e.symbol),1),t[8]||(t[8]=o("svg",{width:"12",height:"12",viewBox:"0 0 12 12",fill:"none"},[o("circle",{cx:"6",cy:"6",r:"5.25",stroke:"currentColor","stroke-width":"1"}),o("path",{d:"M6 5v3.5M6 3.5v.5",stroke:"currentColor","stroke-width":"1","stroke-linecap":"round"})],-1))])):u("",!0)])):u("",!0),o("div",U,[o("div",Y,[t[9]||(t[9]=o("div",{class:"orderline-context-menu__field-label"},[o("span",null,"Price"),o("span",{class:"orderline-context-menu__required"},"*")],-1)),d(y,{value:x.value,placeholder:"0",controls:!0,size:"sm","other-props":{min:0,step:ge.value,disabled:e.priceDisabled},class:"w-full",onHandleChange:ke},null,8,["value","other-props"])]),e.showStopLimitPrice?(r(),i("div",K,[t[10]||(t[10]=o("div",{class:"orderline-context-menu__field-label"},[o("span",null,"Stop Limit Price"),o("span",{class:"orderline-context-menu__required"},"*")],-1)),d(y,{value:k.value,placeholder:"0",controls:!0,size:"sm","other-props":{min:0,step:ge.value},class:"w-full",onHandleChange:Pe},null,8,["value","other-props"])])):u("",!0),o("div",W,[t[11]||(t[11]=o("div",{class:"orderline-context-menu__field-label"},[o("span",null,"Volume"),o("span",{class:"orderline-context-menu__required"},"*")],-1)),d(y,{value:P.value,placeholder:"0",controls:!0,size:"sm","other-props":{min:0,step:.01,disabled:e.volumeDisabled},class:"w-full",onHandleChange:Se},null,8,["value","other-props"])])]),e.marginText?(r(),i("p",X,s(e.marginText),1)):u("",!0),o("div",G,[o("span",{class:g(["orderline-context-menu__advanced-label",{"orderline-context-menu__advanced-label--active":e.advanced}])}," Advanced ",2),d(Be,{"model-value":e.advanced,size:"sm","onUpdate:modelValue":t[1]||(t[1]=e=>_("update:advanced",e))},null,8,["model-value"])]),e.advanced?(r(),i(f,{key:2},[o("div",J,[o("div",Q,[o("div",Z,[o("div",ee,[d(Ne,{"model-value":N.value,size:"sm",color:"success","onUpdate:modelValue":t[2]||(t[2]=e=>(e=>{if(N.value=e,e&&!de.value&&null!==ye.value){const e=ge.value,l="buy"===b.side?ye.value-20*e:ye.value+20*e;de.value=String(Number(l.toFixed(8)))}_e()})(Boolean(e)))},null,8,["model-value"]),t[12]||(t[12]=o("span",null,"Stop Loss",-1))]),t[13]||(t[13]=o("span",{class:"orderline-context-menu__required"},"*",-1))]),d(y,{value:pe.value,placeholder:"0",controls:!0,size:"sm","other-props":{min:0,step:ge.value,disabled:!N.value},class:"w-full",onHandleChange:Ce},null,8,["value","other-props"]),be.value?(r(),i("span",le,s(be.value),1)):u("",!0)]),o("div",te,[o("div",ne,[o("div",re,[t[14]||(t[14]=o("span",null,"Take Profit",-1)),d(Ne,{"model-value":ce.value,size:"sm",color:"success","onUpdate:modelValue":t[3]||(t[3]=e=>(e=>{if(ce.value=e,e&&!ve.value&&null!==ye.value){const e=ge.value,l="buy"===b.side?ye.value+30*e:ye.value-30*e;ve.value=String(Number(l.toFixed(8)))}xe()})(Boolean(e)))},null,8,["model-value"])]),t[15]||(t[15]=o("span",{class:"orderline-context-menu__required"},"*",-1))]),d(y,{value:fe.value,placeholder:"0",controls:!0,size:"sm","other-props":{min:0,step:ge.value,disabled:!ce.value},class:"w-full",onHandleChange:we},null,8,["value","other-props"]),he.value?(r(),i("span",ie,s(he.value),1)):u("",!0)])]),o("div",ae,[o("div",oe,[t[16]||(t[16]=o("span",null,"Comment",-1)),o("span",se,s(me.value.length)+"/"+s(30),1)]),d(ze,{value:me.value,placeholder:"Add a comment",size:"sm","other-props":{maxlength:30},class:"w-full",onHandleChange:Le},null,8,["value","other-props"])])],64)):u("",!0),o("div",ue,[d(Me,{color:"contrast",plain:"",size:"sm",onClick:Te},{default:m(()=>[...t[17]||(t[17]=[p("Discard",-1)])]),_:1}),d(Me,{color:"primary",size:"sm",onClick:Ee},{default:m(()=>[...t[18]||(t[18]=[p("Confirm",-1)])]),_:1})])],32)}}}),[["__scopeId","data-v-2d8976ac"]]),ce=e=>e?{surfacePrimary:"#191D23",surfacePositive:"#16c784",surfaceNegative:"#ef4444",surfaceElevated:"#323A45",surfaceAction:"#A259FB",textPrimary:"#F0F1F3",textSecondary:"#B1B9C5",borderPrimary:"#323A45",borderPrimaryInverse:"#D8DCE2",borderAction:"#A259FB"}:{surfacePrimary:"white",surfacePositive:"#16c784",surfaceNegative:"#ef4444",surfaceElevated:"#d8dce2",surfaceAction:"#A259FB",textPrimary:"#0f1115",textSecondary:"#4b5768",borderPrimary:"#d8dce2",borderPrimaryInverse:"#323a45",borderAction:"#A259FB"},ve=(e="neutral",l="order",t,n)=>{const r=ce(t),i="position"===l;let a;return a="stop-loss"===n?r.surfaceNegative:"take-profit"===n?r.surfacePositive:i?r.borderAction:"buy"===e?r.surfacePositive:"sell"===e?r.surfaceNegative:r.borderAction,{lineColor:a,lineWidth:2,lineDash:[0,0],badgeBackgroundColor:r.surfacePrimary,badgeBorderColor:a,badgeTextColor:i?r.textPrimary:a,handleColor:a,handleBackgroundColor:i?r.surfacePrimary:"transparent",handleBorderColor:i?r.surfacePrimary:"transparent",deleteColor:i?r.textPrimary:a,deleteBackgroundColor:i?r.borderAction:r.surfacePrimary,deleteBorderColor:a,fontSize:12}},me=Symbol("EAERA_ORDERLINE_OVERLAY_CONTEXT_KEY"),pe=(e,r)=>{const i=l(null),a=l({}),o=t(()=>({draggingLineId:i.value,draftPrices:a.value}));n(o,e=>{r("stateChange",e)},{immediate:!0});const s={orderLines:t(()=>e.orderLines??[]),chartInstance:t(()=>e.chartInstance??null),seriesInstance:t(()=>e.seriesInstance??null),orderLineTool:t(()=>e.orderLineTool??null),renderKey:t(()=>e.renderKey??0),marketPrice:t(()=>e.marketPrice??null),tickSize:t(()=>e.tickSize??null),dark:t(()=>e.dark),state:o,onDeleteLine:e=>{r("deleteLine",e)},onLinePriceChange:(e,l)=>{r("linePriceChange",e,l)},onLinePricePreview:(e,l)=>{r("linePricePreview",e,l)},onDragStateChange:e=>{i.value=e,r("dragStateChange",e)},onDraftPricesChange:e=>{a.value=e},onSLTPChange:(e,l,t)=>{r("slTpChange",e,l,t)}};return y(me,s),s},fe=()=>{const e=b(me);if(!e)throw new Error("useEaeraOrderlineOverlay must be used inside EaeraOrderlineOverlay");return e},ge=["onMousedown","onDblclick"],ye=["onDblclick"],be=e({__name:"index",props:{orderLines:{},chartInstance:{},seriesInstance:{},orderLineTool:{},renderKey:{},marketPrice:{},tickSize:{},dark:{type:Boolean}},emits:["deleteLine","linePriceChange","linePricePreview","dragStateChange","slTpChange","stateChange"],setup(e,{expose:a,emit:d}){const m=pe(e,d),{orderLines:y,chartInstance:b,seriesInstance:S,orderLineTool:C,renderKey:w,marketPrice:L,tickSize:E,dark:T,state:B,onDeleteLine:N,onLinePriceChange:z,onLinePricePreview:M,onDragStateChange:D,onDraftPricesChange:I,onSLTPChange:A}=m,F=l(0),R=l(0),$=new Set,O=l(!1);let q=null,H=null,V=null;const j=l(null),U=l(null),Y=l({}),K=()=>b.value,W=()=>S.value,X=(e,l,t)=>Math.min(Math.max(e,l),t),G=(e,l,t)=>{const n=t.filter(e=>e>0),r={height:`${Math.max(l,1)}px`};if(n.length>=2){const[l,t]=n;return{...r,backgroundImage:`repeating-linear-gradient(to right, ${e} 0, ${e} ${l}px, transparent ${l}px, transparent ${l+t}px)`,backgroundSize:`${l+t}px 100%`}}return{...r,backgroundColor:e}},J=()=>{null!==H&&"undefined"!=typeof window&&(window.cancelAnimationFrame(H),H=null)},Q=()=>{R.value+=1,H=window.requestAnimationFrame(Q)},Z=()=>{"undefined"!=typeof window&&null===H&&0!==y.value.length&&(H=window.requestAnimationFrame(Q))},ee=()=>{q?.disconnect(),$.clear()},le=()=>{if("undefined"==typeof ResizeObserver)return;q||(q=new ResizeObserver(()=>{F.value+=1}));const e=K(),l=e?.chartElement(),t=[l,e&&"function"==typeof e.panes?e.panes()[0]?.getHTMLElement?.()??null:null].filter(e=>null!=e);t.length===$.size&&t.every(e=>$.has(e))||(ee(),t.forEach(e=>{q?.observe(e),$.add(e)}),F.value+=1)},te=e=>{const l=(e=>{const l=Number(e);if(!Number.isFinite(l)||l<=0)return 2;const t=l.toLocaleString("en-US",{useGrouping:!1,maximumFractionDigits:20}),n=(t.includes(".")?t.replace(/0+$/,"").replace(/\.$/,""):t).split(".")[1];return n?n.length:0})(E.value);return Number(e).toFixed(l)},ne=(e,l)=>{if(!Number.isFinite(l))return l;const t=Number(E.value)||1e-5;if("stop-loss"===e.lineRole&&void 0!==e.entryPrice)return"buy"===e.side?Math.min(l,e.entryPrice-t):Math.max(l,e.entryPrice+t);if("take-profit"===e.lineRole&&void 0!==e.entryPrice)return"buy"===e.side?Math.max(l,e.entryPrice+t):Math.min(l,e.entryPrice-t);const n=(e=>{if("number"==typeof e)return Number.isFinite(e)?e:null;if("string"==typeof e&&""!==e.trim()){const l=Number(e);return Number.isFinite(l)?l:null}return null})(L.value);return null===n?l:"buy"===e.side?Math.min(l,n):"sell"===e.side?Math.max(l,n):l},re=t(()=>{const e=w.value,l=F.value,t=R.value;return e<0||l<0||t<0?null:(()=>{const e=K(),l=j.value?.getBoundingClientRect();if(!e||!l)return null;const t=e.chartElement(),n=t.getBoundingClientRect(),r="function"==typeof e.panes?e.panes()[0]?.getHTMLElement?.()??null:null,i=r?.getBoundingClientRect(),a=e.paneSize?.(0),o=e.priceScale("left").width(),s=e.priceScale("right").width(),u=e.timeScale().height(),d=a?.width??Math.max(0,t.clientWidth-o-s),c=a?.height??Math.max(0,t.clientHeight-u);return{top:(i?i.top:n.top)-l.top,left:n.left-l.left+o,width:d,height:i?.height??c}})()}),ie=t(()=>{const e=re.value;return e?{top:`${e.top}px`,left:`${e.left}px`,width:`${e.width}px`,height:`${e.height}px`}:null}),ae=l(null),oe=l(null),se=new Set;let ue=!0;const me=e=>{const l=y.value.find(l=>l.id===e);l&&(be.value={x:0,y:0},oe.value=e,ae.value=(e=>{const{primary:l,quantity:t}=(e=>{const l=e.split("|").map(e=>e.trim());return{primary:l[0]??"",quantity:l[1]??"",price:l[2]??""}})(e.label),n=e.readonly&&"order"===e.type,r=l.replace(/^[+-]/,""),i=e.parentId??e.id,a=y.value.find(e=>e.parentId===i&&"stop-loss"===e.lineRole),o=y.value.find(e=>e.parentId===i&&"take-profit"===e.lineRole),s=y.value.find(e=>e.id===i),u=s?.price??e.entryPrice??e.price;return{title:n?"Market Order":"Order",statusTagText:t?`${l} ${t}`:l,price:e.price,side:"neutral"!==e.side?e.side:void 0,volume:r,advanced:n,entryPrice:u,initialStopLossEnabled:!!a,initialStopLoss:a?.price,initialTakeProfitEnabled:!!o,initialTakeProfit:o?.price}})(l))};n(()=>y.value,e=>{const l=new Set;for(const t of e)l.add(t.id);se.clear(),l.forEach(e=>se.add(e)),ue?ue=!1:oe.value&&!l.has(oe.value)&&(ae.value=null,oe.value=null)},{deep:!0});const fe=t(()=>!!oe.value&&(y.value.find(e=>e.id===oe.value)?.readonly??!1)),be=l({x:0,y:0}),he=l(!1),_e=t(()=>{const e=K(),l=j.value;return e&&l?{width:l.clientWidth,height:l.clientHeight}:null}),xe=t(()=>{if(!ae.value||!_e.value)return null;const{width:e,height:l}=_e.value,t=X(e-382-20+be.value.x,0,e-382);return{position:"absolute",top:`${X(20+be.value.y,0,l-460)}px`,left:`${t}px`}});let ke=0,Pe=0;const Se=e=>{if(!_e.value)return;e.target.closest('input, button, select, textarea, [role="switch"], [role="checkbox"]')||(he.value=!0,ke=e.clientX-be.value.x,Pe=e.clientY-be.value.y,document.body.style.userSelect="none",window.addEventListener("pointermove",Ce),window.addEventListener("pointerup",we))},Ce=e=>{be.value={x:e.clientX-ke,y:e.clientY-Pe}},we=()=>{he.value=!1,document.body.style.userSelect="",window.removeEventListener("pointermove",Ce),window.removeEventListener("pointerup",we)},Le=e=>{const l=y.value.find(l=>l.id===e);return l?l.parentId??l.id:null},Ee=e=>{const l=Le(oe.value??"");if(!l)return;const t=y.value.find(e=>e.parentId===l&&"take-profit"===e.lineRole),n=t?.price??null,r=e.enabled&&void 0!==e.price?e.price:null;A(l,r,n)},Te=e=>{const l=Le(oe.value??"");if(!l)return;const t=y.value.find(e=>e.parentId===l&&"stop-loss"===e.lineRole),n=t?.price??null,r=e.enabled&&void 0!==e.price?e.price:null;A(l,n,r)},Be=e=>{ae.value=null,oe.value=null},Ne=()=>{ae.value=null,oe.value=null},ze=()=>{oe.value&&(N(oe.value),Ne())},Me=t(()=>"boolean"==typeof T.value?T.value:O.value),De=t(()=>{const e=w.value,l=R.value,t=W(),n=K(),r=re.value;return!t||!n||!r||e<0||l<0?[]:y.value.map(e=>{const l=(e=>Y.value[e.id]??e.price)(e),t=((e,l)=>{const t=W();if(!t)return null;const n=t.priceToCoordinate(e);if(null!==n)return n;const r=t.priceScale().getVisibleRange();if(!r)return null;const i=Math.min(r.from,r.to);return e>Math.max(r.from,r.to)?-1:e<i?l+1:null})(l,r.height);if(null===t)return null;const n=((e,l)=>e<0?"top":e>l?"bottom":"middle")(t,r.height),i=X(t,0,r.height),a=ce(Me.value),o={...ve(e.side,e.type,Me.value,e.lineRole),...e.options},[s,u,d]=((e,l)=>{const t=e.split("|").map(e=>e.trim()),n=te(l);return t.length>=3?(t[t.length-1]=n,t):2===t.length?[...t,n]:1===t.length?[t[0],"",n]:["","",n]})(e.label,l),c=a.textPrimary,[v]=[s],m={volume:v,pnl:u,price:d};return{...e,livePrice:l,edgePlacement:n,orderParts:{primary:v,quantity:u,price:d},positionParts:m,containerStyle:{top:`${i}px`},lineStyle:G(o.lineColor,o.lineWidth,o.lineDash),lineColor:o.lineColor,badgeWrapperStyle:{marginLeft:"12px"},badgeStyle:{borderColor:o.badgeBorderColor,backgroundColor:o.badgeBackgroundColor,color:o.badgeTextColor},middleStyle:{backgroundColor:o.badgeBackgroundColor,color:a.textPrimary},volumeStyle:{backgroundColor:"transparent",color:a.textPrimary},separatorStyle:{backgroundColor:a.borderPrimaryInverse},deleteStyle:{backgroundColor:o.deleteBackgroundColor,color:o.deleteColor,borderColor:o.deleteBorderColor},deleteButtonStyle:{color:o.deleteColor,borderColor:o.deleteBorderColor},priceStyle:{color:a.textPrimary},pnlStyle:{color:c},dragStyle:{backgroundColor:o.handleBackgroundColor,color:o.handleColor}}}).filter(e=>null!==e)}),Ie=()=>{const e=U.value;if(!e)return;const l=Y.value[e];if(U.value=null,D(null),document.body.style.userSelect="",window.removeEventListener("mousemove",Ae),window.removeEventListener("mouseup",Ie),"number"==typeof l){z(e,l);const{[e]:t,...n}=Y.value;Y.value=n,I(n)}},Ae=e=>{const l=U.value,t=W(),n=(()=>{const e=K();if(!e)return null;const l="function"==typeof e.panes?e.panes()[0]?.getHTMLElement?.()??null:null;return l?.getBoundingClientRect()??e.chartElement().getBoundingClientRect()})();if(!l||!t||!n)return;const r=e.clientY-n.top,i=t.coordinateToPrice(r);if("number"!=typeof i||Number.isNaN(i))return;const a=y.value.find(e=>e.id===l);if(!a)return;const o=ne(a,i),s=Number(te(o)),u={...Y.value,[l]:s};Y.value=u,I(u),M(l,s),((e,l)=>{const t=C.value?.orderLines.find(l=>l.localId===e);t?.updatePrice(l)})(l,s)},Fe=e=>{O.value=e.matches};return n(()=>w.value,()=>{le()},{immediate:!0}),n(()=>y.value.length,e=>{e>0?Z():J()},{immediate:!0}),_(()=>{le(),Z(),"undefined"!=typeof window&&"function"==typeof window.matchMedia&&(V=window.matchMedia("(prefers-color-scheme: dark)"),O.value=V.matches,V.addEventListener("change",Fe))}),x(()=>{window.removeEventListener("mousemove",Ae),window.removeEventListener("mouseup",Ie),window.removeEventListener("pointermove",Ce),window.removeEventListener("pointerup",we),ee(),J(),V?.removeEventListener("change",Fe),V=null}),a({state:B,openMenu:e=>{be.value={x:0,y:0},oe.value=e.lineId??null,ae.value=e.menuData}}),(e,l)=>(r(),i("div",{ref_key:"overlayRootRef",ref:j,class:"custom-order-line-overlay"},[ie.value?(r(),i("div",{key:0,class:"custom-order-line-overlay__pane",style:k(ie.value)},[(r(!0),i(f,null,P(De.value,e=>(r(),i("div",{key:e.id,class:g(["custom-order-line-item",`custom-order-line-item--edge-${e.edgePlacement}`]),style:k(e.containerStyle)},["middle"===e.edgePlacement?(r(),i("div",{key:0,class:g(["custom-order-line-item__line",{"custom-order-line-item__line--draggable":"order"===e.type&&!e.readonly,"custom-order-line-item__line--clickable":e.readonly}]),style:k(e.lineStyle),onMousedown:l=>{return"order"!==e.type||e.readonly?void 0:(t=e.id,(n=l).preventDefault(),n.stopPropagation(),U.value=t,D(t),document.body.style.userSelect="none",window.addEventListener("mousemove",Ae),void window.addEventListener("mouseup",Ie));var t,n},onDblclick:l=>e.readonly?me(e.id):void 0},null,46,ge)):u("",!0),o("div",{class:g(["custom-order-line-item__label",{"custom-order-line-item__label--clickable":e.readonly}]),style:k({color:e.lineColor}),onDblclick:l=>e.readonly?me(e.id):void 0},[p(s(e.orderParts.primary)+" ",1),l[0]||(l[0]=o("span",{class:"custom-order-line-item__label-sep"},"·",-1)),p(" "+s(e.orderParts.quantity)+" ",1),l[1]||(l[1]=o("span",{class:"custom-order-line-item__label-sep"},"·",-1)),p(" "+s(e.orderParts.price),1)],46,ye)],6))),128))],4)):u("",!0),ae.value&&xe.value?(r(),v(de,{key:1,class:g(["custom-order-line-overlay__menu",{"custom-order-line-overlay__menu--dragging":he.value}]),style:k(xe.value),title:ae.value.title,"status-tag-text":ae.value.statusTagText,"reference-price":ae.value.entryPrice??ae.value.price,"tick-size":c(E),side:ae.value.side,advanced:ae.value.advanced,"initial-volume":ae.value.volume,"initial-stop-loss":ae.value.initialStopLoss,"initial-take-profit":ae.value.initialTakeProfit,"initial-stop-loss-enabled":ae.value.initialStopLossEnabled,"initial-take-profit-enabled":ae.value.initialTakeProfitEnabled,"price-disabled":fe.value,"volume-disabled":fe.value,onPointerdown:Se,onClose:Ne,onConfirm:Be,onDiscard:ze,"onUpdate:stopLoss":Ee,"onUpdate:takeProfit":Te},null,8,["class","style","title","status-tag-text","reference-price","tick-size","side","advanced","initial-volume","initial-stop-loss","initial-take-profit","initial-stop-loss-enabled","initial-take-profit-enabled","price-disabled","volume-disabled"])):u("",!0)],512))}});export{de as O,be as _,pe as p,fe as u};
@@ -0,0 +1 @@
1
+ import{ref as e,watch as t,computed as a,defineComponent as s,resolveComponent as l,openBlock as i,createBlock as o,unref as r,withCtx as n,createElementVNode as u,toDisplayString as d,createVNode as c,createTextVNode as m,shallowRef as p,createElementBlock as g,Fragment as y,renderList as v,normalizeClass as b,createCommentVNode as _,onMounted as f,onBeforeUnmount as k,onUnmounted as x,withModifiers as D,normalizeStyle as C,Teleport as T,nextTick as P}from"vue";import{a as H}from"./vendor-vueuse-core-B96HGhR7.mjs";import{useI18n as S}from"vue-i18n";import{_ as w}from"./EaeraDatePicker-Bwt5r5gk.mjs";import R from"../composite/EaeraDropdownV2.mjs";import{d as O}from"./vendor-dayjs-D8w0D2To.mjs";import{X as E,CalendarDays as F,Columns2 as L,Download as I,Inbox as N,SquarePen as $}from"@lucide/vue";import{_ as M}from"./EaeraDialog-uLsXC20k.mjs";import{_ as V}from"./EaeraButton-BPVKRBOn.mjs";import{_ as z}from"./EaeraDivider-Dggvc36a.mjs";import{_ as A}from"./EaeraTooltip-BIlULHv4.mjs";import{_ as U}from"./EaeraInput-CkbcAxy0.mjs";import"element-plus";import"element-plus/es";import"./vendor-email-misspelled-0hsXkSSK.mjs";import"./vendor-unorm-Degftfa1.mjs";import"./useEaeraInputPhoneNumber-B72aLnQs.mjs";import"@element-plus/icons-vue";import"echarts/core";import"echarts/renderers";import"echarts/charts";import"echarts/components";import"vue-echarts";import"./vendor-currency-symbol-map-C-1fEG2R.mjs";import{_ as j}from"./EaeraTableV2-CBaM5zp9.mjs";const q={Positions:"positions",Pending:"pending",History:"history"},K={Positions:"positions",Funding:"funding",Orders:"orders",Deals:"deals"},W={All:"all",Today:"today",LastWeek:"last-week",LastMonth:"last-month",Last3Months:"last-3-months",Last6Months:"last-6-months",LastYear:"last-year",Custom:"custom"},Y=12,B=8,G={stopLoss:"",takeProfit:""},X={stopLoss:{value:!1,message:""},takeProfit:{value:!1,message:""}},Z=e=>!Number.isFinite(e)||e<0?0:e,J=e=>[...e].sort((e,t)=>(e.order??0)-(t.order??0)),Q=(e,t)=>e.length===t.length&&e.every((e,a)=>e===t[a]),ee=e=>""===e.key||!!e.alwayShow||!!e.alwaysVisible,te=(e,t,a,s)=>{const l=e.key;if(!l)return Number.MAX_SAFE_INTEGER-1e3+t;const i=a.get(l);return void 0!==i?i:ee(e)?s+t:Number.MAX_SAFE_INTEGER},ae=(s,l)=>{const{t:i}=S(),o=e(s.activeTab??q.Positions),r=e(s.activeHistoryTab??K.Positions),n=e(s.selectedTimeRange??W.LastWeek),u=e(s.customDateRange??null),d=e(s.selectedColumnKeys??[]),c=e(!1),m=e(0),p=e(0),g=e(0),y=e(0),v=e([]),b=e([]);t(()=>s.activeTab,e=>{e&&(o.value=e)}),t(()=>s.activeHistoryTab,e=>{e&&(r.value=e)}),t(()=>s.selectedTimeRange,e=>{e&&(n.value=e)}),t(()=>s.customDateRange,e=>{void 0!==e&&(u.value=e)}),t(()=>s.selectedColumnKeys,e=>{e&&(d.value=[...e])},{immediate:!0});const _=a(()=>[{value:q.Positions,label:i("trading-table.tabs.positions")},{value:q.Pending,label:i("trading-table.tabs.pending")},{value:q.History,label:i("trading-table.tabs.history")}]),f=a(()=>[{value:K.Positions,label:i("trading-table.history.tabs.positions")},{value:K.Funding,label:i("trading-table.history.tabs.funding")},{value:K.Orders,label:i("trading-table.history.tabs.orders")},{value:K.Deals,label:i("trading-table.history.tabs.deals")}]),k=a(()=>Object.values(W).map(e=>({value:e,label:i(`trading-table.history.time-ranges.${e}`)}))),x=a(()=>s.tabs??_.value),D=a(()=>s.historyTabs??f.value),C=a(()=>s.timeRangeOptions??k.value),T=a(()=>J(s.columnOptions??[])),P=a(()=>s.hiddenSummaryTabs??[q.Pending]),H=a(()=>o.value===q.History),w=a(()=>!P.value.includes(o.value)),R=a(()=>s.summaryTargetId??"trading-table-summary"),O=a(()=>{const e=Z(m.value),t=Z(p.value),a=H.value?Z(g.value):0,s=w.value?Z(y.value):0,l=e-t-s-a-Y-B-(a>0?B:0);return{wrapperHeight:e,headerHeight:t,historyTabsHeight:a,footerHeight:s,tableHeight:Math.max(0,l)}}),E=()=>{const e=J(T.value);v.value=e,b.value=((e,t)=>{if(!t.length)return e.map(e=>e.id);const a=new Set(t);return e.map(e=>e.id).filter(e=>a.has(e))})(e,s.selectedColumnKeys??[])},F=()=>{c.value=!1},L={activeTab:a(()=>o.value),activeHistoryTab:a(()=>r.value),selectedTimeRange:a(()=>n.value),customDateRange:a(()=>u.value),tabs:x,historyTabs:D,timeRangeOptions:C,columnOptions:T,selectedColumnKeys:a(()=>d.value),positionsCount:a(()=>s.positionsCount??0),pendingCount:a(()=>s.pendingCount??0),isExporting:a(()=>s.isExporting??!1),summaryTargetId:R,isHistoryTab:H,isSummaryVisible:w,isColumnDialogOpen:a(()=>c.value),draftColumnOptions:a(()=>v.value),draftCheckedColumnKeys:a(()=>b.value),layout:O,positionRows:a(()=>s.positionRows??[]),pendingRows:a(()=>s.pendingRows??[]),historyPositionRows:a(()=>s.historyPositionRows??[]),historyOrderRows:a(()=>s.historyOrderRows??[]),historyDealRows:a(()=>s.historyDealRows??[]),positionFields:a(()=>s.positionFields??[]),pendingFields:a(()=>s.pendingFields??[]),historyPositionFields:a(()=>s.historyPositionFields??[]),historyOrderFields:a(()=>s.historyOrderFields??[]),historyDealFields:a(()=>s.historyDealFields??[]),selectedSymbol:a(()=>s.selectedSymbol??null),editingPositionId:a(()=>s.editingPositionId??null),focusedPositionId:a(()=>s.focusedPositionId??null),editingOrderId:a(()=>s.editingOrderId??null),positionDraft:a(()=>s.positionDraft??G),positionDraftInvalid:a(()=>s.positionDraftInvalid??X),orderDraft:a(()=>s.orderDraft??{price:""}),orderDraftInvalid:a(()=>s.orderDraftInvalid??{price:{value:!1,message:""}}),isSavingPositionDraft:a(()=>s.isSavingPositionDraft??!1),positionsSummary:a(()=>s.positionsSummary??{}),historyPositionsSummary:a(()=>s.historyPositionsSummary??{}),historyOrdersSummary:a(()=>s.historyOrdersSummary??{}),historyDealsSummary:a(()=>s.historyDealsSummary??{}),setActiveTab:e=>{o.value=e,l("changeTab",e)},setActiveHistoryTab:e=>{r.value=e,l("changeHistoryTab",e)},setSelectedTimeRange:e=>{n.value=e,e!==W.Custom&&null!==u.value&&(u.value=null,l("changeCustomDateRange",null)),l("changeTimeRange",e)},setCustomDateRange:e=>{u.value=e,l("changeCustomDateRange",e)},setWrapperHeight:e=>{m.value=Z(e)},setHeaderHeight:e=>{p.value=Z(e)},setHistoryTabsHeight:e=>{g.value=Z(e)},setFooterHeight:e=>{y.value=Z(e)},openColumnDialog:()=>{E(),c.value=!0},closeColumnDialog:F,updateDraftCheckedColumnKeys:e=>{const t=v.value.map(e=>e.id).filter(t=>e.includes(t));Q(b.value,t)||(b.value=t)},reorderDraftColumnOptions:e=>{const t=[...e],a=t.map(e=>e.id).filter(e=>b.value.includes(e));v.value.length===t.length&&!v.value.some((e,a)=>e.id!==t[a]?.id)&&Q(b.value,a)||(v.value=t,b.value=a)},saveColumns:()=>{const e=(()=>{const e=v.value.map(e=>e.id).filter(e=>b.value.includes(e)),t=e.reduce((e,t,a)=>(e[t]=a,e),{});return{orderedKeys:e,columnsRecord:t}})();d.value=e.orderedKeys,l("changeColumns",e),F()},triggerExportHistory:()=>{l("exportHistory")},resolveTableFields:e=>{const t=[...e],a=s.selectedColumnKeys??[];if(!a.length)return t;const l=new Map(a.map((e,t)=>[e,t]));return t.map((e,t)=>({field:e,originalIndex:t})).filter(({field:e})=>!e.key||(!!ee(e)||l.has(e.key))).sort((e,t)=>te(e.field,e.originalIndex,l,a.length)-te(t.field,t.originalIndex,l,a.length)).map(e=>e.field)},selectSymbol:e=>{l("selectSymbol",e)},focusPosition:e=>{l("focusPosition",e)},startEditPosition:e=>{l("startEditPosition",e)},changePositionDraft:e=>{l("changePositionDraft",e)},savePositionDraft:e=>{l("savePositionDraft",e)},closePosition:e=>{l("closePosition",e)},cancelPendingOrder:e=>{l("cancelPendingOrder",e)},startEditOrder:e=>{l("startEditOrder",e)},changeOrderDraft:e=>{l("changeOrderDraft",e)},saveOrderDraft:e=>{l("saveOrderDraft",e)},changeHistoryPositionsSort:e=>{l("changeHistoryPositionsSort",e)},changeHistoryOrdersSort:e=>{l("changeHistoryOrdersSort",e)},changeHistoryDealsSort:e=>{l("changeHistoryDealsSort",e)},loadMoreHistoryPositions:()=>{l("loadMoreHistoryPositions")},loadMoreHistoryOrders:()=>{l("loadMoreHistoryOrders")},loadMoreHistoryDeals:()=>{l("loadMoreHistoryDeals")}},I=a(()=>({activeTab:L.activeTab.value,activeHistoryTab:L.activeHistoryTab.value,selectedTimeRange:L.selectedTimeRange.value,customDateRange:L.customDateRange.value,selectedColumnKeys:L.selectedColumnKeys.value,isColumnDialogOpen:L.isColumnDialogOpen.value,layout:L.layout.value}));return t(I,e=>{l("stateChange",e)},{immediate:!0}),t(L.layout,e=>{l("layoutChange",e)},{immediate:!0}),{...L,state:I}},se=e=>e,le={class:"custom-trading-table__column-dialog-content"},ie={class:"custom-trading-table__column-dialog-top"},oe={class:"custom-trading-table__column-dialog-title-group"},re={class:"custom-trading-table__column-dialog-title text-title-md"},ne={class:"custom-trading-table__column-dialog-subtitle text-body-sm"},ue={class:"custom-trading-table__column-dialog-option-label label-lg"},de={class:"custom-trading-table__column-dialog-actions"},ce={class:"text-label-md"},me=s({__name:"EaeraTradingTableColumnFilterDialog",props:{context:{}},setup(s){const p=s,{t:g}=S(),{isColumnDialogOpen:y,draftColumnOptions:v,draftCheckedColumnKeys:b,closeColumnDialog:_,updateDraftCheckedColumnKeys:f,reorderDraftColumnOptions:k,saveColumns:x}=p.context,D=a({get:()=>y.value,set:e=>{e||_()}}),C=a(()=>v.value.map(e=>({id:e.id,value:e.id,label:e.label,disabled:e.alwaysVisible,order:e.order}))),T=e([]);t(b,e=>{T.value=[...e]},{immediate:!0});const P=e=>{f(e)},H=a(()=>{const e=C.value.length>20?3:2;return{col:e,row:Math.max(1,Math.round(C.value.length/e)),autoFlow:"column"}}),w=e=>{const t=new Map(v.value.map(e=>[e.id,e])),a=e.map((e,a)=>{const s=t.get(e.id);return s?{...s,order:a}:null}).filter(e=>!!e);k(a)};return(e,t)=>{const a=l("eaera-checkbox-list"),s=z,p=V,y=M;return i(),o(y,{modelValue:D.value,"onUpdate:modelValue":t[1]||(t[1]=e=>D.value=e),class:"custom-trading-table__column-dialog","header-class":"hidden","footer-class":"hidden","destroy-on-close":"","show-close":!1,"close-on-click-modal":"","before-close":r(_),"append-body":""},{default:n(()=>[u("div",le,[u("div",ie,[u("div",oe,[u("div",re,d(r(g)("trading-table.columns.title")),1),u("div",ne,d(r(g)("trading-table.columns.desc")),1)]),u("button",{type:"button",class:"custom-trading-table__column-dialog-close",onClick:t[0]||(t[0]=(...e)=>r(_)&&r(_)(...e))},[c(r(E),{size:16})])]),c(a,{"model-value":T.value,options:C.value,draggable:"","allow-dragging-disabled":"",grid:H.value,"is-check-value-by-id":"",onUpdateValueProp:P,onReorderOptions:w},{default:n(({data:e})=>[u("span",ue,d(e.label),1)]),_:1},8,["model-value","options","grid"]),c(s,{class:"custom-trading-table__column-dialog-divider"}),u("div",de,[c(p,{class:"custom-trading-table__column-dialog-action-button",color:"contrast",onClick:r(_)},{default:n(()=>[m(d(r(g)("trading-table.columns.actions.cancel")),1)]),_:1},8,["onClick"]),c(p,{class:"custom-trading-table__column-dialog-action-button",color:"primary",onClick:r(x)},{default:n(()=>[u("span",ce,d(r(g)("trading-table.columns.actions.save")),1)]),_:1},8,["onClick"])])])]),_:1},8,["modelValue","before-close"])}}}),pe={class:"items-stretch flex min-h-10 p-1 rounded-md gap-1 bg-[--er-surface-muted]",role:"tablist","aria-label":"Trading table tabs"},ge=["onClick"],ye={class:"custom-trading-table__tab-label text-label-lg"},ve={class:"custom-trading-table__actions"},be={type:"button",class:"custom-trading-table__action-button"},_e={class:"text-label-md"},he={class:"custom-trading-table__time-range-dropdown"},fe=["onClick"],ke=["disabled"],xe={class:"text-label-md"},De=s({__name:"EaeraTradingTableHeader",props:{context:{}},emits:["heightChange"],setup(s,{emit:l}){const m=s,f=l,{t:k}=S(),{tabs:x,activeTab:D,setActiveTab:C,isHistoryTab:T,selectedTimeRange:P,timeRangeOptions:E,isExporting:N,openColumnDialog:$,setSelectedTimeRange:M,setCustomDateRange:V,triggerExportHistory:z}=m.context,A=p(null),{height:U}=H(A),j=e(null),q=e(null),K=e(["",""]),Y=a(()=>{const e=E.value.find(e=>e.value===P.value);return e?.label??P.value}),B=e=>{K.value=["",""],M(e),j.value?.closeDropdown?.(),e===W.Custom&&q.value?.handleOpen?.()},G=(e,t)=>{const a=O(e),s=a.isValid()?a:O(e,"DD-MM-YYYY");return s.isValid()?`${s.format("YYYY-MM-DD")}T${t?"23:59:59.999":"00:00:00.000"}Z`:null},X=e=>O(e).isAfter(O(),"day");return t(U,e=>{f("heightChange",e)},{immediate:!0}),t(K,e=>{if(!e||2!==e.length)return;const t=G(e[0],!1),a=G(e[1],!0);t&&a&&V({from:t,to:a})}),(e,t)=>{const a=R,l=w;return i(),g("div",{ref_key:"headerRef",ref:A,class:"custom-trading-table__header"},[u("div",pe,[(i(!0),g(y,null,v(r(x),e=>(i(),g("button",{key:e.value,type:"button",class:b(["custom-trading-table__tab-button",{"custom-trading-table__tab-button--active":r(D)===e.value}]),onClick:t=>r(C)(e.value)},[u("span",ye,d(e.label),1)],10,ge))),128))]),u("div",ve,[r(T)?(i(),o(a,{key:0,ref_key:"timeRangeDropdownRef",ref:j,trigger:"click","popper-class":"custom-trading-table__time-range-popper"},{dropdown:n(()=>[u("div",he,[(i(!0),g(y,null,v(r(E),e=>(i(),g("button",{key:e.value,type:"button",class:b(["custom-trading-table__time-range-item text-label-md",{"custom-trading-table__time-range-item--active":r(P)===e.value},{"custom-trading-table__time-range-item--custom-divider":e.value===r(W).Custom}]),onClick:t=>B(e.value)},d(e.label),11,fe))),128))])]),default:n(()=>[u("button",be,[c(r(F),{size:14,class:"custom-trading-table__action-icon"}),u("span",_e,d(Y.value),1)])]),_:1},512)):_("",!0),u("button",{type:"button",class:"custom-trading-table__action-button",onClick:t[0]||(t[0]=(...e)=>r($)&&r($)(...e))},[c(r(L),{size:14,class:"custom-trading-table__action-icon"}),t[3]||(t[3]=u("span",{class:"text-label-md"},"Columns",-1))]),r(T)?(i(),g("button",{key:1,type:"button",class:b(["custom-trading-table__action-button",{"custom-trading-table__action-button--disabled":r(N)}]),disabled:r(N),onClick:t[1]||(t[1]=(...e)=>r(z)&&r(z)(...e))},[c(r(I),{size:14,class:"custom-trading-table__action-icon"}),u("span",xe,d(r(k)("trading-table.export.title")),1)],10,ke)):_("",!0),c(l,{ref_key:"customDateRef",ref:q,modelValue:K.value,"onUpdate:modelValue":t[2]||(t[2]=e=>K.value=e),type:"daterange",style:{display:"none"},"unlink-panels":"","disabled-date":X},null,8,["modelValue"]),c(me,{context:s.context},null,8,["context"])])],512)}}}),Ce=["onClick"],Te=s({__name:"EaeraTradingTableHistoryTabs",props:{context:{}},emits:["heightChange"],setup(e,{emit:a}){const s=e,l=a,{historyTabs:o,activeHistoryTab:n,setActiveHistoryTab:u}=s.context,c=p(null),{height:m}=H(c);return t(m,e=>{l("heightChange",e)},{immediate:!0}),(e,t)=>(i(),g("div",{ref_key:"historyTabsRef",ref:c,class:"custom-trading-table__history-tabs"},[(i(!0),g(y,null,v(r(o),e=>(i(),g("button",{key:e.value,type:"button",class:b(["custom-trading-table__history-tab-button text-label-md",{"custom-trading-table__history-tab-button--active":r(n)===e.value}]),onClick:t=>r(u)(e.value)},d(e.label),11,Ce))),128))],512))}}),Pe=(e,t,a={})=>{if(!t)return e;const{key:s,direction:l}=t,i=a[s]??s;return[...e].sort((e,t)=>{const a=e[i],s=t[i];if(null==a&&null==s)return 0;if(null==a)return"asc"===l?-1:1;if(null==s)return"asc"===l?1:-1;const o=Number(a),r=Number(s);if(!Number.isNaN(o)&&!Number.isNaN(r))return"asc"===l?o-r:r-o;const n=Date.parse(String(a)),u=Date.parse(String(s));if(!Number.isNaN(n)&&!Number.isNaN(u))return"asc"===l?n-u:u-n;const d=String(a).localeCompare(String(s));return"asc"===l?d:-d})},He=e=>{try{const t=e.value?.tableRef,a=t?.$el??null;return a instanceof HTMLElement?a:null}catch{return null}},Se=(e,t)=>{const a=He(e);if(!a)return[];const s=a.querySelector(".el-table__header-wrapper"),l=s?.querySelector("tr");if(!l)return[];return Array.from(l.querySelectorAll("th")).map((e,a)=>{const s=e.getBoundingClientRect().width;return{key:t.at(a)?.key??null,width:s}})},we=(e,t={isPositive:!0,returnNumber:!1})=>{const a=t.isPositive??!0,s=t.returnNumber??!1;let l=a?e.replace(/[^\d.]/g,""):e.replace(/[^\d.-]/g,"");if(!a){const e=l.startsWith("-");l=l.replace(/-/g,""),e&&(l=`-${l}`)}const i=l.startsWith("-")?"-":"",o=i?l.slice(1):l,r=o.indexOf(".");let n=o;-1!==r&&(n=o.slice(0,r+1)+o.slice(r+1).replace(/\./g,"")),l=i+n,l.startsWith(".")&&(l=`0${l}`),l.startsWith("-.")&&(l=l.replace("-.","-0."));const u=l.startsWith("-");let d=u?l.slice(1):l;if(d.startsWith("0")&&!d.startsWith("0.")&&(d=d.replace(/^0+/,"")||"0"),l=u?`-${d}`:d,!s){if(!l)return"";if("-"===l||"0."===l||"-0."===l||/^\d+\.$/.test(l)||/^-\d+\.$/.test(l))return l;const e=Number(l);return Number.isFinite(e)?a&&e<=0?"":l:""}if(!l||"-"===l||"."===l||"-."===l||l.endsWith(".")){const e=Number(l.replace(/\.$/,"")),t=Number.isFinite(e)?e:0;return a&&t<=0?0:t}const c=Number(l);let m=Number.isFinite(c)?c:0;return a&&m<=0&&(m=0),m},Re=(e,t=2,a="--")=>{const s=Number(e);return Number.isFinite(s)?s.toLocaleString("en-US",{minimumFractionDigits:t,maximumFractionDigits:t}):a},Oe={class:"trading-table__wrapper"},Ee={key:0},Fe={key:0},Le={key:0,class:"custom-trading-table__positions-actions"},Ie={key:1},Ne={class:"trading-table__empty-state"},$e={class:"trading-table__empty-text text-body-sm"},Me={class:"custom-trading-table__positions-summary"},Ve={class:"custom-trading-table__positions-summary-left"},ze={class:"custom-trading-table__summary-label text-body-sm"},Ae={class:"text-label-md"},Ue={class:"custom-trading-table__positions-summary-right"},je=s({__name:"EaeraTradingTablePositionsTable",props:{context:{}},setup(s){const l=s,{t:p}=S(),{summaryTargetId:H,layout:w,positionRows:R,positionFields:O,positionsSummary:F,selectedSymbol:L,editingPositionId:I,focusedPositionId:M,positionDraft:q,positionDraftInvalid:K,isSavingPositionDraft:W,resolveTableFields:Y,selectSymbol:B,focusPosition:G,startEditPosition:X,changePositionDraft:Z,savePositionDraft:J,closePosition:Q}=l.context,ee=e(),te=e(null),ae=e(null),se=e([]),le=e(!1),ie=e(null),oe={position_id:"id"},re=a(()=>w.value.tableHeight),ne=a(()=>Y(O.value)),ue=a(()=>Pe(R.value,ie.value,oe)),de=a(()=>{const e=Number(F.value.unrealizedPnl??0),t=F.value.unrealizedPnlDigits??2;return{left:{balance:F.value.balance,equity:F.value.equity,"used-margin":F.value.usedMargin,"free-margin":F.value.freeMargin},right:[{key:"unrealized_pnl",value:Re(e,t,"0.00"),class:`custom-trading-table__positions-summary-value text-label-md ${ye(e)}`},{key:"",value:`(${F.value.currency??"USD"})`,class:"custom-trading-table__positions-summary-currency text-label-md"}].map(e=>({...e,style:{width:`${se.value.find(t=>t.key===e.key)?.width??0}px`}}))}}),ce=a({get:()=>q.value.stopLoss,set:e=>{Z({field:"stopLoss",value:String(e??"")})}}),me=a({get:()=>q.value.takeProfit,set:e=>{Z({field:"takeProfit",value:String(e??"")})}});a(()=>ee.value?.sort??null);const pe=e=>{if(!e)return"--";const t=`trading-table.positions.${e}`,a=p(t);return a===t?e:a},ge=e=>{const t=String(e??"").toUpperCase();return"BUY"===t?"var(--er-text-success)":"SELL"===t?"var(--er-text-error)":"var(--text-primary)"},ye=e=>e>0?"custom-trading-table__positions-summary-value--positive":e<0?"custom-trading-table__positions-summary-value--negative":"custom-trading-table__positions-summary-value--neutral",ve=({key:e,direction:t})=>{ie.value=e&&t?{key:e,direction:t}:null},be=(e,t)=>{const a=we(e,{isPositive:!1});Z({field:t,value:a})},_e=e=>{const t=e.symbol,a=e.id;t&&(null!=a&&G(a),B(t))},he=e=>{const t=I.value===e.row.id,a=e.row.symbol===L.value;return[t?"editing-row":"",a?"selected":"",M.value===e.row.id&&!a?"focused":""].filter(Boolean).join(" ")},fe=async()=>{await P(),await new Promise(requestAnimationFrame),se.value=Se(ee,ne.value)};t(()=>K.value,({stopLoss:e,takeProfit:t})=>{e.value?te.value?.onOpen?.():te.value?.onClose?.(),t.value?ae.value?.onOpen?.():ae.value?.onClose?.()},{deep:!0});let ke=null;f(()=>{le.value=!0,fe();const e=He(ee);e&&(ke=new ResizeObserver(()=>fe()),ke.observe(e))}),k(()=>{ke?.disconnect()});const xe=e=>{"Enter"===e.key&&null!==I.value&&J(I.value)};return f(()=>{document.addEventListener("keyup",xe)}),x(()=>{document.removeEventListener("keyup",xe)}),(e,t)=>{const a=U,s=A,l=z,f=V;return i(),g("div",Oe,[c(r(j),{ref_key:"positionTableRef",ref:ee,class:"trading-table",items:ue.value,fields:ne.value,stripe:!1,"max-height":re.value,"hide-footer":"","allow-sort-reset":"","row-class-name":he,"onUpdate:onSortChanged":ve,onRowClick:_e},{"cell(side)":n(({item:e})=>[u("span",{style:C({color:ge(e.side)})},d(pe(e.side)),5)]),"cell(stop_loss)":n(({item:e})=>[e.id!==r(I)?(i(),g("span",Ee,d(e.stop_loss??"--"),1)):(i(),o(s,{key:1,ref_key:"stopLossTooltipRef",ref:te,"popper-class":[r(K).stopLoss.value&&"error"],content:r(K).stopLoss.message,placement:"top",trigger:"contextmenu"},{default:n(()=>[c(a,{modelValue:ce.value,"onUpdate:modelValue":t[0]||(t[0]=e=>ce.value=e),class:b(["input-position",r(K).stopLoss.value&&"error"]),onInput:t[1]||(t[1]=e=>be(e,"stopLoss"))},null,8,["modelValue","class"])]),_:1},8,["popper-class","content"]))]),"cell(take_profit)":n(({item:e})=>[e.id!==r(I)?(i(),g("span",Fe,d(e.take_profit??"--"),1)):(i(),o(s,{key:1,ref_key:"takeProfitTooltipRef",ref:ae,"popper-class":[r(K).takeProfit.value&&"error"],content:r(K).takeProfit.message,placement:"top",trigger:"contextmenu"},{default:n(()=>[c(a,{modelValue:me.value,"onUpdate:modelValue":t[2]||(t[2]=e=>me.value=e),class:b(["input-position",r(K).takeProfit.value&&"error"]),onInput:t[3]||(t[3]=e=>be(e,"takeProfit"))},null,8,["modelValue","class"])]),_:1},8,["popper-class","content"]))]),"cell(unrealized_pnl)":n(({item:e})=>{return[u("span",{style:C({color:`var(--text-${t=Number(e.unrealized_pnl??0),t>0?"success":t<0?"error":"primary"})`})},d(r(Re)(e.unrealized_pnl,2,"0.00")),5)];var t}),"cell()":n(({item:e})=>[e.id!==r(I)?(i(),g("div",Le,[c(r($),{size:18,class:"custom-trading-table__positions-edit-icon",onClick:D(t=>r(X)(e.id),["stop"])},null,8,["onClick"]),c(l,{direction:"vertical",class:"custom-trading-table__positions-divider"}),c(r(E),{size:18,class:"custom-trading-table__positions-close-icon",onClick:D(t=>r(Q)(e.id),["stop"])},null,8,["onClick"])])):(i(),g("div",Ie,[c(f,{color:"primary",class:"custom-trading-table__positions-save-button text-label-md",loading:r(W),onClick:t=>r(J)(e.id)},{default:n(()=>[m(d(r(p)("trading-table.positions.actions.save")),1)]),_:1},8,["loading","onClick"])]))]),empty:n(()=>[u("div",Ne,[c(r(N),{size:32,class:"trading-table__empty-icon"}),u("span",$e,d(r(p)("trading-table.empty.positions")),1)])]),_:1},8,["items","fields","max-height"]),le.value?(i(),o(T,{key:0,to:`#${r(H)}`},[u("div",Me,[u("div",Ve,[(i(!0),g(y,null,v(de.value.left,(e,t)=>(i(),g("span",{key:t,class:"custom-trading-table__positions-summary-item"},[u("span",ze,d(r(p)(`trading-table.positions.summary.${t}`))+": ",1),u("span",Ae,d(r(Re)(e,2,"0.00")),1)]))),128))]),u("div",Ue,[(i(!0),g(y,null,v(de.value.right,e=>(i(),g("div",{key:e.key,class:b(e.class),style:C(e.style)},d(e.value),7))),128))])])],8,["to"])):_("",!0)])}}}),qe={class:"trading-table__wrapper"},Ke={key:0},We={key:0,class:"custom-trading-table__positions-actions"},Ye={key:1},Be={class:"trading-table__empty-state"},Ge={class:"trading-table__empty-text text-body-sm"},Xe=s({__name:"EaeraTradingTablePendingTable",props:{context:{}},setup(s){const l=s,{t:p}=S(),{pendingRows:y,pendingFields:v,layout:_,editingOrderId:f,orderDraft:k,orderDraftInvalid:x,resolveTableFields:T,selectSymbol:P,cancelPendingOrder:H,startEditOrder:w,changeOrderDraft:R,saveOrderDraft:O}=l.context,F=e(),L=e(null),I={order_id:"id"},M=a(()=>_.value.tableHeight),q=a(()=>T(v.value)),K=a(()=>Pe(y.value,L.value,I));a(()=>F.value?.sort??null);const W=e=>{if(!e)return"--";const t=`trading-table.pending.${e}`,a=p(t);return a===t?e:a},Y=e=>{const t=String(e??"").toUpperCase();return"BUY"===t?"var(--er-text-success)":"SELL"===t?"var(--er-text-error)":"var(--text-primary)"},B=({key:e,direction:t})=>{L.value=e&&t?{key:e,direction:t}:null},G=e=>{const t=e.symbol;t&&P(t)},X=a({get:()=>k.value.price,set:e=>{R({field:"price",value:String(e??"")})}}),Z=e(null);return t(()=>x.value.price,e=>{e.value?Z.value?.onOpen?.():Z.value?.onClose?.()},{deep:!0}),(e,t)=>{const a=U,s=A,l=z,y=V;return i(),g("div",qe,[c(r(j),{ref_key:"pendingTableRef",ref:F,class:"trading-table",items:K.value,fields:q.value,stripe:!1,"max-height":M.value,"hide-footer":"","allow-sort-reset":"","onUpdate:onSortChanged":B,onRowClick:G},{"cell(side)":n(({item:e})=>[u("span",{style:C({color:Y(e.side)})},d(W(e.side)),5)]),"cell(price)":n(({item:e})=>[e.id!==r(f)?(i(),g("span",Ke,d(e.price??"--"),1)):(i(),o(s,{key:1,ref_key:"priceTooltipRef",ref:Z,"popper-class":[r(x).price.value&&"error"],content:r(x).price.message,placement:"top",trigger:"contextmenu"},{default:n(()=>[c(a,{modelValue:X.value,"onUpdate:modelValue":t[0]||(t[0]=e=>X.value=e),class:b(["input-position",r(x).price.value&&"error"]),onInput:t[1]||(t[1]=e=>((e,t)=>{const a=we(e,{isPositive:!1});R({field:t,value:a})})(e,"price"))},null,8,["modelValue","class"])]),_:1},8,["popper-class","content"]))]),"cell()":n(({item:e})=>[e.id!==r(f)?(i(),g("div",We,[c(r($),{size:18,class:"custom-trading-table__positions-edit-icon",onClick:D(t=>r(w)(e.id),["stop"])},null,8,["onClick"]),c(l,{direction:"vertical",class:"custom-trading-table__positions-divider"}),c(r(E),{size:18,color:"var(--icon-error)",class:"custom-trading-table__pending-cancel-icon",onClick:D(t=>r(H)(e.id),["stop"])},null,8,["onClick"])])):(i(),g("div",Ye,[c(y,{color:"primary",class:"custom-trading-table__positions-save-button text-label-md",onClick:t=>r(O)(e.id)},{default:n(()=>[...t[2]||(t[2]=[m(" Save ",-1)])]),_:1},8,["onClick"])]))]),empty:n(()=>[u("div",Be,[c(r(N),{size:32,class:"trading-table__empty-icon"}),u("span",Ge,d(r(p)("trading-table.empty.pending")),1)])]),_:1},8,["items","fields","max-height"])])}}}),Ze={class:"trading-table__empty-state"},Je={class:"trading-table__empty-text text-body-sm"},Qe={class:"custom-trading-table__history-deals-summary"},et={class:"custom-trading-table__history-summary-left"},tt={class:"custom-trading-table__summary-label text-body-sm"},at={class:"custom-trading-table__history-summary-right"},st=s({__name:"EaeraTradingTableHistoryDealsTable",props:{context:{}},setup(s){const l=s,{t:p}=S(),{summaryTargetId:_,layout:x,historyDealRows:D,historyDealFields:H,historyDealsSummary:w,resolveTableFields:R,changeHistoryDealsSort:O,loadMoreHistoryDeals:E}=l.context,F=e(),L=e(null),I=e([]),$=a(()=>x.value.tableHeight),M=a(()=>D.value),V=a(()=>R(H.value)),z=a(()=>{const e=Number(w.value.tradeProfit??0),t=Number(w.value.totalFee??0),a=Number(w.value.totalProfit??0);return{left:{key:"total-profit",value:e,class:q(e)},right:[{key:"fee",value:Re(t,2,"0.00"),class:`custom-trading-table__history-summary-cell text-label-md ${q(t)}`},{key:"profit",value:Re(a,2,"0.00"),class:`custom-trading-table__history-summary-cell text-label-md ${q(a)}`},{key:"",value:`(${w.value.currency??"USD"})`,class:"custom-trading-table__history-summary-currency text-label-md"}].map(e=>({...e,style:{width:`${I.value.find(t=>t.key===e.key)?.width??0}px`}}))}}),A=a(()=>F.value?.sort??null),U=e=>{if(!e)return"--";const t=`trading-table.history.deals.type.${e}`,a=p(t);return a===t?e:a},q=e=>e>0?"custom-trading-table__history-summary-value--positive":e<0?"custom-trading-table__history-summary-value--negative":"custom-trading-table__history-summary-value--neutral",K=()=>{const e=L.value;e&&((e,t=50)=>{const{scrollTop:a,clientHeight:s,scrollHeight:l}=e;return a+s>=l-t})(e)&&E()},W=()=>{K()};let Y=null;const B=()=>{null==Y&&(Y=requestAnimationFrame(()=>{Y=null,K()}))},G=async()=>{await P(),await new Promise(requestAnimationFrame),I.value=Se(F,V.value)};t(A,e=>{e&&O(e.key?{sort_by:e.key,sort_direction:e.direction}:{})},{deep:!0});let X=null;return f(async()=>{G();const e=He(F);e&&(X=new ResizeObserver(()=>G()),X.observe(e)),await P(),(()=>{const e=He(F);if(!e)return;const t=e.querySelector(".el-scrollbar__wrap");t&&(L.value=t,t.addEventListener("scroll",W,{passive:!0}),t.addEventListener("wheel",B,{passive:!0}))})()}),k(()=>{X?.disconnect(),(()=>{const e=L.value;e&&(e.removeEventListener("scroll",W),e.removeEventListener("wheel",B),L.value=null)})()}),(e,t)=>(i(),g("div",{style:C({height:`${$.value}px`})},[c(r(j),{ref_key:"dealHistoryRef",ref:F,class:"trading-table custom-trading-table__history-table",items:M.value,fields:V.value,stripe:!1,"max-height":$.value,"hide-footer":"","allow-sort-reset":""},{"cell(deal_type)":n(({item:e})=>{return[u("span",{style:C({color:(t=e.deal_type,"SELL"===String(t??"").toUpperCase()?"var(--er-text-error)":"var(--er-text-success)")})},d(U(e.deal_type)),5)];var t}),"cell(profit)":n(({item:e})=>[u("span",{class:b(q(Number(e.profit??0)))},d(r(Re)(e.profit,2,"0.00")),3)]),"cell(c)":n(({item:e})=>[m(d(e.currency),1)]),empty:n(()=>[u("div",Ze,[c(r(N),{size:32,class:"trading-table__empty-icon"}),u("span",Je,d(r(p)("trading-table.empty.history-deals")),1)])]),_:1},8,["items","fields","max-height"]),(i(),o(T,{to:`#${r(_)}`},[u("div",Qe,[u("div",et,[u("span",tt,d(r(p)(`trading-table.history.summary.deals.${z.value.left.key}`))+": ",1),u("span",{class:b(["text-label-md",z.value.left.class])},d(r(Re)(z.value.left.value,2,"0.00")),3)]),u("div",at,[(i(!0),g(y,null,v(z.value.right,e=>(i(),g("div",{key:e.key,class:b(e.class),style:C(e.style)},d(e.value),7))),128))])])],8,["to"]))],4))}}),lt={class:"trading-table__empty-state"},it={class:"trading-table__empty-text text-body-sm"},ot={class:"custom-trading-table__history-orders-summary"},rt={key:0,class:"custom-trading-table__history-orders-summary-item"},nt={class:"custom-trading-table__summary-label text-body-sm"},ut={class:"text-label-md"},dt=s({__name:"EaeraTradingTableHistoryOrdersTable",props:{context:{}},setup(s){const l=s,{t:m}=S(),{summaryTargetId:p,layout:b,historyOrderRows:x,historyOrderFields:D,historyOrdersSummary:H,resolveTableFields:w,changeHistoryOrdersSort:R,loadMoreHistoryOrders:O}=l.context,E=e(),F=e(null),L=a(()=>b.value.tableHeight),I=a(()=>x.value),$=a(()=>w(D.value)),M=a(()=>H.value),V=a(()=>E.value?.sort??null),z=e=>{if(!e)return"--";const t=`trading-table.history.orders.side.${e}`,a=m(t);return a===t?e:a},A=()=>{const e=F.value;e&&((e,t=50)=>{const{scrollTop:a,clientHeight:s,scrollHeight:l}=e;return a+s>=l-t})(e)&&O()},U=()=>{A()};let q=null;const K=()=>{null==q&&(q=requestAnimationFrame(()=>{q=null,A()}))};return t(V,e=>{e&&R(e.key?{sort_by:e.key,sort_direction:e.direction}:{})},{deep:!0}),f(async()=>{await P(),(()=>{const e=He(E);if(!e)return;const t=e.querySelector(".el-scrollbar__wrap");t&&(F.value=t,t.addEventListener("scroll",U,{passive:!0}),t.addEventListener("wheel",K,{passive:!0}))})()}),k(()=>{(()=>{const e=F.value;e&&(e.removeEventListener("scroll",U),e.removeEventListener("wheel",K),F.value=null)})()}),(e,t)=>(i(),g("div",{style:C({height:`${L.value}px`})},[c(r(j),{ref_key:"orderHistoryRef",ref:E,class:"trading-table custom-trading-table__history-table",items:I.value,fields:$.value,stripe:!1,"max-height":L.value,"hide-footer":"","allow-sort-reset":""},{"cell(side)":n(({item:e})=>[u("span",{style:C({color:`var(--icon-${"SELL"===String(e.side).toUpperCase()?"error":"success"})`})},d(z(e.side)),5)]),empty:n(()=>[u("div",lt,[c(r(N),{size:32,class:"trading-table__empty-icon"}),u("span",it,d(r(m)("trading-table.empty.history-orders")),1)])]),_:1},8,["items","fields","max-height"]),(i(),o(T,{to:`#${r(p)}`},[u("div",ot,[(i(!0),g(y,null,v(M.value,(e,t)=>(i(),g(y,{key:t},[e?(i(),g("span",rt,[u("span",nt,d(r(m)(`trading-table.history.summary.orders.${t}`))+": ",1),u("span",ut,d(e),1)])):_("",!0)],64))),128))])],8,["to"]))],4))}}),ct={class:"custom-trading-table__type-cell"},mt={class:"custom-trading-table__text-error"},pt={class:"trading-table__empty-state"},gt={class:"trading-table__empty-text text-body-sm"},yt={class:"custom-trading-table__positions-summary"},vt={class:"custom-trading-table__positions-summary-left"},bt={class:"custom-trading-table__summary-label text-body-sm"},_t={class:"text-label-md"},ht={class:"custom-trading-table__positions-summary-currency text-label-md"},ft=s({__name:"EaeraTradingTableHistoryPositionsTable",props:{context:{}},setup(s){const l=s,{t:m}=S(),{summaryTargetId:p,layout:_,historyPositionRows:x,historyPositionFields:D,positionsSummary:H,resolveTableFields:w,changeHistoryPositionsSort:R,loadMoreHistoryPositions:O}=l.context,F=e(),L=e(null),I=a(()=>_.value.tableHeight),$=a(()=>x.value),M=a(()=>w(D.value)),V=a(()=>[{key:"balance",label:m("trading-table.positions.summary.balance"),value:Re(H.value.balance,2,"0.00")},{key:"equity",label:m("trading-table.positions.summary.equity"),value:Re(H.value.equity,2,"0.00")},{key:"used-margin",label:m("trading-table.positions.summary.used-margin"),value:Re(H.value.usedMargin,2,"0.00")},{key:"free-margin",label:m("trading-table.positions.summary.free-margin"),value:Re(H.value.freeMargin,2,"0.00")},{key:"margin-level",label:m("trading-table.positions.summary.margin-level"),value:"--"}]),z=a(()=>F.value?.sort??null),A=e=>{if(!e)return"--";const t=String(e).toUpperCase();return"BUY"===t?"Buy":"SELL"===t?"Sell":e},U=e=>{const t=String(e??"").trim(),a=Number(t.replaceAll(",",""));return Number.isFinite(a)?a>0?"custom-trading-table__text-success":a<0?"custom-trading-table__text-error":"":t.startsWith("+")?"custom-trading-table__text-success":t.startsWith("-")?"custom-trading-table__text-error":""},q=()=>{const e=L.value;e&&((e,t=50)=>{const{scrollTop:a,clientHeight:s,scrollHeight:l}=e;return a+s>=l-t})(e)&&O()},K=()=>{q()};let W=null;const Y=()=>{null==W&&(W=requestAnimationFrame(()=>{W=null,q()}))};return t(z,e=>{e&&R(e.key?{sort_by:e.key,sort_direction:e.direction}:{})},{deep:!0}),f(async()=>{await P(),(()=>{const e=He(F);if(!e)return;const t=e.querySelector(".el-scrollbar__wrap");t&&(L.value=t,t.addEventListener("scroll",K,{passive:!0}),t.addEventListener("wheel",Y,{passive:!0}))})()}),k(()=>{(()=>{const e=L.value;e&&(e.removeEventListener("scroll",K),e.removeEventListener("wheel",Y),L.value=null)})()}),(e,t)=>(i(),g("div",{style:C({height:`${I.value}px`})},[c(r(j),{ref_key:"positionHistoryRef",ref:F,class:"trading-table custom-trading-table__history-table",items:$.value,fields:M.value,stripe:!1,"max-height":I.value,"hide-footer":"","allow-sort-reset":""},{"cell(type)":n(({item:e})=>[u("div",ct,[u("span",{class:b(["custom-trading-table__type-dot","SELL"===e.type?"custom-trading-table__type-dot--sell":"custom-trading-table__type-dot--buy"])},null,2),u("span",{class:b(["SELL"===e.type?"custom-trading-table__text-error":"custom-trading-table__text-success"])},d(A(e.type)),3)])]),"cell(stop_loss)":n(({item:e})=>[u("span",{class:b(["custom-trading-table__price-chip",e.isSlAlert?"custom-trading-table__price-chip--danger":""])},d(e.stop_loss),3)]),"cell(take_profit)":n(({item:e})=>[u("span",{class:b(["custom-trading-table__price-chip",e.isTpHit?"custom-trading-table__price-chip--success":""])},d(e.take_profit),3)]),"cell(commission)":n(({item:e})=>[u("span",mt,d(e.commission),1)]),"cell(profit_loss)":n(({item:e})=>[u("span",{class:b(U(e.profit_loss))},d(e.profit_loss),3)]),"cell()":n(()=>[c(r(E),{size:12,class:"custom-trading-table__pending-cancel-icon"})]),empty:n(()=>[u("div",pt,[c(r(N),{size:32,class:"trading-table__empty-icon"}),u("span",gt,d(r(m)("trading-table.empty.history-positions")),1)])]),_:1},8,["items","fields","max-height"]),(i(),o(T,{to:`#${r(p)}`},[u("div",yt,[u("div",vt,[(i(!0),g(y,null,v(V.value,e=>(i(),g("span",{key:e.key,class:"custom-trading-table__positions-summary-item"},[u("span",bt,d(e.label)+":",1),u("span",_t,d(e.value),1)]))),128)),u("span",ht," ("+d(r(H).currency??"USD")+") ",1)])])],8,["to"]))],4))}}),kt=s({__name:"EaeraTradingTableHistoryContent",props:{context:{}},setup(e){const t=e,{activeHistoryTab:a}=t.context;return(t,s)=>r(a)===r(K).Positions?(i(),o(ft,{key:0,context:e.context},null,8,["context"])):r(a)===r(K).Funding||r(a)===r(K).Orders?(i(),o(dt,{key:1,context:e.context},null,8,["context"])):(i(),o(st,{key:2,context:e.context},null,8,["context"]))}}),xt={class:"custom-trading-table__main"},Dt={class:"custom-trading-table__content"},Ct={class:"custom-trading-table__table-content"},Tt={class:"custom-trading-table__table-area"},Pt=["id"],Ht=s({__name:"index",props:{activeTab:{default:q.Positions},activeHistoryTab:{default:K.Positions},selectedTimeRange:{default:"last-week"},customDateRange:{default:null},tabs:{},historyTabs:{},timeRangeOptions:{},columnOptions:{},selectedColumnKeys:{default:()=>[]},positionsCount:{default:0},pendingCount:{default:0},isExporting:{type:Boolean,default:!1},hiddenSummaryTabs:{default:()=>[q.Pending]},summaryTargetId:{default:"trading-table-summary"},positionRows:{default:()=>[]},pendingRows:{default:()=>[]},historyPositionRows:{default:()=>[]},historyOrderRows:{default:()=>[]},historyDealRows:{default:()=>[]},positionFields:{default:()=>[]},pendingFields:{default:()=>[]},historyPositionFields:{default:()=>[]},historyOrderFields:{default:()=>[]},historyDealFields:{default:()=>[]},selectedSymbol:{default:null},editingPositionId:{default:null},focusedPositionId:{},editingOrderId:{},positionDraft:{default:()=>({stopLoss:"",takeProfit:""})},positionDraftInvalid:{default:()=>({stopLoss:{value:!1,message:""},takeProfit:{value:!1,message:""}})},orderDraft:{},orderDraftInvalid:{},isSavingPositionDraft:{type:Boolean,default:!1},positionsSummary:{default:()=>({})},historyPositionsSummary:{default:()=>({})},historyOrdersSummary:{default:()=>({})},historyDealsSummary:{default:()=>({})}},emits:["changeTab","changeHistoryTab","changeTimeRange","changeCustomDateRange","changeColumns","exportHistory","selectSymbol","focusPosition","startEditPosition","changePositionDraft","savePositionDraft","closePosition","cancelPendingOrder","startEditOrder","changeOrderDraft","saveOrderDraft","changeHistoryPositionsSort","changeHistoryOrdersSort","changeHistoryDealsSort","loadMoreHistoryPositions","loadMoreHistoryOrders","loadMoreHistoryDeals","stateChange","layoutChange"],setup(e,{expose:a,emit:s}){const l=ae(e,s),{activeTab:n,isHistoryTab:d,isSummaryVisible:m,summaryTargetId:y,setWrapperHeight:v,setHeaderHeight:b,setHistoryTabsHeight:f,setFooterHeight:k}=l,x=p(null),D=p(null),{height:T}=H(x),{height:P}=H(D);return t(T,e=>{v(e)},{immediate:!0}),t([P,m],([e,t])=>{k(t?e:0)},{immediate:!0}),t(d,e=>{e||f(0)},{immediate:!0}),a({openColumnDialog:l.openColumnDialog,closeColumnDialog:l.closeColumnDialog}),(e,t)=>(i(),g("div",{ref_key:"tradingTableRef",ref:x,class:"custom-trading-table"},[u("div",xt,[c(r(De),{context:r(l),onHeightChange:r(b)},null,8,["context","onHeightChange"]),u("div",Dt,[r(d)?(i(),o(r(Te),{key:0,context:r(l),onHeightChange:r(f)},null,8,["context","onHeightChange"])):_("",!0),u("div",Ct,[u("div",Tt,[r(n)===r(q).Positions?(i(),o(r(je),{key:0,context:r(l)},null,8,["context"])):r(n)===r(q).Pending?(i(),o(r(Xe),{key:1,context:r(l)},null,8,["context"])):(i(),o(r(kt),{key:2,context:r(l)},null,8,["context"]))]),u("div",{ref_key:"summaryRef",ref:D,class:"custom-trading-table__summary body-sm",style:C(r(m)?{}:{display:"none"})},[u("div",{id:r(y),class:"custom-trading-table__summary-target"},null,8,Pt)],4)])])])],512))}});export{K as E,Ht as _,q as a,W as b,ae as p,se as u};