@backtest-kit/ui 7.1.0 → 7.2.0

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 (40) hide show
  1. package/build/modules/frontend/build/assets/{Article-C4UQxwWZ.js → Article-673O2GAo.js} +1 -1
  2. package/build/modules/frontend/build/assets/{Background-CxbWw1Ud.js → Background-GZVl6Dd-.js} +1 -1
  3. package/build/modules/frontend/build/assets/{IconPhoto-CQO1S6y0.js → IconPhoto-Dol-gfi5.js} +1 -1
  4. package/build/modules/frontend/build/assets/{KeyboardArrowLeft-BI2k8xRQ.js → KeyboardArrowLeft-B96q9-RN.js} +1 -1
  5. package/build/modules/frontend/build/assets/{Refresh-UXSQ8IiW.js → Refresh-DKJv3mpD.js} +1 -1
  6. package/build/modules/frontend/build/assets/emitters-8Ddy6nda.js +1 -0
  7. package/build/modules/frontend/build/assets/hasRouteMatch-cVt-5faK.js +1 -0
  8. package/build/modules/frontend/build/assets/html2canvas-B_SfkTNO.js +1 -0
  9. package/build/modules/frontend/build/assets/index-B1bEyjto.js +1 -0
  10. package/build/modules/frontend/build/assets/index-BB1KfPr2.js +1 -0
  11. package/build/modules/frontend/build/assets/index-BY91NQhQ.js +1 -0
  12. package/build/modules/frontend/build/assets/index-Bfrag62a.js +1 -0
  13. package/build/modules/frontend/build/assets/index-CnzKZiFP.js +1 -0
  14. package/build/modules/frontend/build/assets/index-CpO55Vw3.js +1 -0
  15. package/build/modules/frontend/build/assets/index-DDUY7roZ.js +1578 -0
  16. package/build/modules/frontend/build/assets/index-De1PN9nY.js +1 -0
  17. package/build/modules/frontend/build/assets/{index-CmOWmwjE.js → index-DhUPeC3A.js} +1 -1
  18. package/build/modules/frontend/build/assets/index-G-Rr8i6Z.js +1 -0
  19. package/build/modules/frontend/build/assets/index-tA6ppP-9.js +1 -0
  20. package/build/modules/frontend/build/assets/index-vcDgTyUw.js +1 -0
  21. package/build/modules/frontend/build/assets/{index.es-8J0skUK9.js → index.es-CAJnvyqV.js} +1 -1
  22. package/build/modules/frontend/build/assets/markdownit-DjH6sN97.js +1 -0
  23. package/build/modules/frontend/build/index.html +1 -1
  24. package/package.json +4 -4
  25. package/types.d.ts +14 -5
  26. package/build/modules/frontend/build/assets/emitters-CQQC0XnS.js +0 -1
  27. package/build/modules/frontend/build/assets/hasRouteMatch-DSslqyi0.js +0 -1
  28. package/build/modules/frontend/build/assets/html2canvas-C3UwgAQV.js +0 -1
  29. package/build/modules/frontend/build/assets/index-B-QL9HJi.js +0 -1
  30. package/build/modules/frontend/build/assets/index-BEFTWFv3.js +0 -1
  31. package/build/modules/frontend/build/assets/index-CsiJpNoi.js +0 -1
  32. package/build/modules/frontend/build/assets/index-Cvubqa1L.js +0 -17
  33. package/build/modules/frontend/build/assets/index-CxKLVnqz.js +0 -1
  34. package/build/modules/frontend/build/assets/index-DkFY3Vy5.js +0 -1
  35. package/build/modules/frontend/build/assets/index-DxeOxY_I.js +0 -1560
  36. package/build/modules/frontend/build/assets/index-M3LYmcX-.js +0 -1
  37. package/build/modules/frontend/build/assets/index-NxBMVjOv.js +0 -1
  38. package/build/modules/frontend/build/assets/index-T3P0DZX1.js +0 -1
  39. package/build/modules/frontend/build/assets/index-vox4evLO.js +0 -1
  40. package/build/modules/frontend/build/assets/markdownit-VuWBTDGx.js +0 -1
@@ -1 +0,0 @@
1
- import{b as a,f as e,aP as t,B as o,R as r,aC as n,T as i,ah as s,O as c,F as l,aD as d,P as h,aE as p,aR as u,aS as w,as as b,$ as f,i as x,at as g,a2 as y,az as v,y as m,z as S,aT as k,aQ as L,D as j,G as z}from"./index-DxeOxY_I.js";import{A as R}from"./Article-C4UQxwWZ.js";import{C as A,R as C}from"./Refresh-UXSQ8IiW.js";import{K as H}from"./KeyboardArrowLeft-BI2k8xRQ.js";const D=a(e("path",{d:"M20 8h-2.81c-.45-.78-1.07-1.45-1.82-1.96L17 4.41 15.59 3l-2.17 2.17C12.96 5.06 12.49 5 12 5c-.49 0-.96.06-1.41.17L8.41 3 7 4.41l1.62 1.63C7.88 6.55 7.26 7.22 6.81 8H4v2h2.09c-.05.33-.09.66-.09 1v1H4v2h2v1c0 .34.04.67.09 1H4v2h2.81c1.04 1.79 2.97 3 5.19 3s4.15-1.21 5.19-3H20v-2h-2.09c.05-.33.09-.66.09-1v-1h2v-2h-2v-1c0-.34-.04-.67-.09-1H20V8zm-6 8h-4v-2h4v2zm0-4h-4v-2h4v2z"}),"BugReport"),E=a=>{const t={color:"white",fontSize:28};switch(a.type){case"debug":return e(D,{sx:t});case"info":return e(u,{sx:t});case"warn":return e(p,{sx:t});default:return e(R,{sx:t})}},B=t.virtualize(({data:a,sx:t})=>{const p=(a=>{switch(a.type){case"debug":default:return"#9E9E9E";case"info":return"#2196F3";case"warn":return"#FF9800";case"log":return"#4CAF50"}})(a);return e(h,{variant:"outlined",sx:{display:"flex",alignItems:"stretch",justifyContent:"stretch",...t},children:e(o,{sx:{flex:1,position:"relative",overflow:"clip",height:"100%",width:"100%",borderRadius:"12px"},children:[e(r,{direction:"row",spacing:2,sx:{p:2},children:[e(n,{sx:{width:56,height:56,background:p},children:E(a)}),e(r,{flex:1,spacing:1,children:[e(r,{direction:"row",justifyContent:"space-between",alignItems:"flex-start",children:[e(i,{variant:"h6",sx:{fontWeight:600,wordBreak:"break-all"},children:a.topic}),e(i,{variant:"body2",color:"text.secondary",sx:{whiteSpace:"nowrap",ml:2},children:s(a.createdAt).format("HH:mm DD/MM/YYYY")})]}),e(r,{direction:"row",spacing:1,flexWrap:"wrap",children:e(c,{size:"small",label:a.type.toUpperCase(),sx:{background:p,color:"white",fontWeight:500}})}),a.args.length>0&&e(l,{children:[e(d,{sx:{my:1}}),e(o,{component:"pre",sx:{m:0,fontSize:"0.75rem",whiteSpace:"pre-wrap",wordBreak:"break-all",color:"text.secondary"},children:JSON.stringify(1===a.args.length?a.args[0]:a.args,null,2)})]})]})]}),e(o,{sx:{position:"absolute",top:0,left:0,bottom:0,width:6,zIndex:1,background:p}})]})})}),F=[{action:"download-action",label:"Download",icon:()=>e(z,{icon:j,color:"#4caf50"})},{divider:!0},{action:"update-now",label:"Refresh manually",icon:()=>e(z,{icon:C,color:"#4caf50"})}],M=[{type:S.Link,action:"back-action",label:e(H,{sx:{display:"block"}})},{type:S.Link,action:"back-action",label:"Main"},{type:S.Link,action:"back-action",label:"Logs"},{type:S.Button,icon:k,action:"search-action",label:"Search"}],O=new f,Y=()=>{const[a,o]=w(""),{data:r,hasMore:n,loading:i,onSkip:s}=b({handler:async(e,t)=>{const o=await x.logViewService.getList(),r=g(e,t);for(const n of o)if(new RegExp(a.current,"i").test(n.topic)&&r([n]).done)break;return r().rows},onLoadStart:()=>x.layoutService.setAppbarLoader(!0),onLoadEnd:()=>x.layoutService.setAppbarLoader(!1),reloadSubject:O}),c=y(r),{execute:l}=v(async()=>{const a=new Blob([JSON.stringify(c.current,null,2)],{type:"application/json"}),e=URL.createObjectURL(a);x.layoutService.downloadFile(e,`logs_${Date.now()}.json`)},{onLoadStart:()=>x.layoutService.setAppbarLoader(!0),onLoadEnd:()=>x.layoutService.setAppbarLoader(!1)});return e(A,{children:[e(m,{items:M,actions:F,onAction:async a=>{"back-action"===a&&x.routerService.push("/"),"download-action"===a&&l(),"update-now"===a&&(o(""),await O.next()),"search-action"===a&&(async()=>{const a=await x.layoutService.prompt("Search keyword");if(a)return o(a),void O.next();o(""),O.next()})()}}),e(t,{sx:{height:"calc(100vh - 155px)"},withScrollbar:!0,minHeight:72,loading:i,onDataRequest:s,bufferSize:L,hasMore:n,children:r.map(a=>e(B,{data:a,sx:{mb:1}},a.id))})]})};export{Y as LogPage,Y as default};
@@ -1 +0,0 @@
1
- import{b as e,f as a,r as t,ba as i,bb as o,a1 as r,i as s,bc as n,bd as c,be as l,I as d,ax as p,aT as h,bf as b,w as u,ab as m,bg as f,L as y,T as g,aV as x,a5 as v,W as w,bh as L,a6 as S,bi as k,aP as A,E as j,a3 as C,$ as z,y as N,z as E,b0 as T,B as H,G as R,a$ as V}from"./index-DxeOxY_I.js";import{h as I}from"./hasRouteMatch-DSslqyi0.js";import{B as M}from"./Background-CxbWw1Ud.js";import{A as B}from"./Article-C4UQxwWZ.js";import{C as D,R as F}from"./Refresh-UXSQ8IiW.js";import{K}from"./KeyboardArrowLeft-BI2k8xRQ.js";const P=e(a("path",{d:"M21 19V5c0-1.1-.9-2-2-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2zM8.5 13.5l2.5 3.01L14.5 12l4.5 6H5l3.5-4.5z"}),"Image"),W=e(a("path",{d:"M6 2c-1.1 0-1.99.9-1.99 2L4 20c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8l-6-6H6zm7 7V3.5L18.5 9H13z"}),"InsertDriveFile"),$="65px",G=e=>e.mimeType.startsWith("image/")?a(P,{sx:{color:"#f57c00",fontSize:20}}):"application/json"===e.mimeType?a(j,{sx:{color:"#7b1fa2",fontSize:20}}):e.mimeType.startsWith("text/")?a(B,{sx:{color:"#1976d2",fontSize:20}}):a(W,{sx:{color:"#546e7a",fontSize:20}}),O=u()(e=>({root:{position:"relative",height:"100%",width:"100%",background:"#eee",overflow:"clip"},header:{position:"absolute",top:0,left:0,width:"100%",display:"flex",alignItems:"center",justifyContent:"space-between",paddingLeft:"8px",paddingRight:"4px",height:$},input:{height:$,paddingRight:e.spacing(2),paddingLeft:e.spacing(1),width:"100%"},container:{position:"absolute",top:$,left:0,right:0,bottom:0,height:`calc(100% - ${$})`,width:"100%",background:"white",overflow:"clip",display:"flex",alignItems:"stretch",justifyContent:"stretch"},content:{display:"flex",flex:1},loader:{height:"100%",width:"100%"},accent:{background:m("#00c3ff",.05)}})),X=({outlinePaper:e,className:u,style:m,sx:j,nodes:C,initialSearch:z=""})=>{const{classes:N,cx:E}=O(),[T,H]=t.useState(z),R=i(T),[V,{flush:I}]=o(T,2500),[M,{loading:B}]=r(async()=>await(async(e,a)=>{const t=e.trim().toLowerCase(),i=[];let o=0;for(const r of s.explorerHelperService.deepFlat(a))if("file"!==r.type||t&&!r.path.toLowerCase().includes(t)||i.push(r),++o%1e4==0&&await f(0),i.length>25e3)break;return i})(V,C),{onLoadStart:()=>s.layoutService.setAppbarLoader(!0),onLoadEnd:()=>s.layoutService.setAppbarLoader(!1),deps:[V,C]}),{execute:D}=n(async e=>{await s.layoutService.pickDumpContent(e)},{onLoadStart:()=>s.layoutService.setAppbarLoader(!0),onLoadEnd:()=>s.layoutService.setAppbarLoader(!1)});return a(b,{outlinePaper:e,className:E(N.root,u),style:m,sx:j,children:[a("div",{className:N.header,children:a(c,{disabled:B,className:N.input,endAdornment:a(l,{position:"end",children:a(d,{disabled:B||!T,onClick:()=>{R.once(async()=>{await f(500),I()}),H("")},edge:"end",children:a(T?p:h,{})})}),placeholder:"Search",value:T,onBlur:()=>I(),onChange:({target:e})=>H(e.value),onKeyDown:({key:e,currentTarget:a})=>"Enter"===e&&a.blur()})}),a("div",{className:N.container,children:a("div",{className:N.content,children:M?M.length?a(A,{withScrollbar:!0,children:M.map((e,t)=>a(v,{className:E({[N.accent]:t%2==1}),component:w,onClick:()=>(async e=>{await D(e)})(e.id),children:[a(L,{children:G(e)}),a(S,{primary:e.label,secondary:e.path}),a(k,{content:e.path,label:"Copy path"})]},e.id))}):a(x,{sx:{height:"100%",width:"100%"},children:a(g,{variant:"h6",sx:{opacity:.5},children:"Not found"})}):a(y,{className:N.loader})})})]})},q=[{type:E.Link,action:"back-action",label:a(K,{sx:{display:"block"}})},{type:E.Link,action:"back-action",label:"Main"},{type:E.Link,action:"back-action",label:"Dump Explorer"}],J=[{action:"update-now",label:"Refresh",icon:()=>a(R,{icon:F,color:"#4caf50"})}],Q=new z,U=({params:e})=>{const[t,{loading:i,execute:o}]=r(async()=>await s.explorerViewService.getFolderTree(),{onLoadStart:()=>s.layoutService.setAppbarLoader(!0),onLoadEnd:()=>s.layoutService.setAppbarLoader(!1)});C(()=>Q.subscribe(o));return a(D,{children:[a(N,{items:q,actions:J,onAction:e=>{"back-action"===e&&s.routerService.push("/"),"update-now"===e&&(s.explorerViewService.clear(),Q.next())}}),a(T,{withScrollbar:!0,hideOverflowX:!0,sx:{height:"calc(100vh - 150px)"},children:a(H,{pr:2,pl:2,children:i||!t?a(x,{children:a(g,{variant:"h6",sx:{opacity:.5},children:"Loading..."})}):a(X,{nodes:t,initialSearch:e.search})})}),a(M,{})]})},Y=[{id:"search",element:U,isActive:e=>I(["/dump/:search"],e)},{id:"main",element:U,isActive:e=>I(["/dump"],e)}],Z=({search:e=""})=>a(V,{history:s.routerService,onLoadStart:()=>s.layoutService.setAppbarLoader(!0),onLoadEnd:()=>s.layoutService.setAppbarLoader(!1),routes:Y,params:{search:e}});export{Z as DumpPage,Z as default};
@@ -1 +0,0 @@
1
- import{b as a,f as e,T as t,Q as o,bj as n,N as i,P as l,w as r,a1 as c,i as s,a3 as d,y as p,z as h,E as m,G as y,H as w,K as u,L as x,A as f,b0 as b,x as g,a$ as v}from"./index-DxeOxY_I.js";import{h as S}from"./hasRouteMatch-DSslqyi0.js";import{r as L}from"./emitters-CQQC0XnS.js";import{I as k}from"./IconPhoto-CQO1S6y0.js";import{C as D,R}from"./Refresh-UXSQ8IiW.js";import{K as j}from"./KeyboardArrowLeft-BI2k8xRQ.js";const A=a(e("path",{d:"M20 2H8c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm0 14H8V4h12v12zM4 6H2v14c0 1.1.9 2 2 2h14v-2H4V6zm12 6V9c0-.55-.45-1-1-1h-2v5h2c.55 0 1-.45 1-1zm-2-3h1v3h-1V9zm4 2h1v-1h-1V9h1V8h-2v5h1zm-8 0h1c.55 0 1-.45 1-1V9c0-.55-.45-1-1-1H9v5h1v-2zm0-2h1v1h-1V9z"}),"PictureAsPdfOutlined"),N=r()(a=>({root:{position:"relative",background:"#0001",overflow:"clip"},header:{position:"absolute",top:0,left:0,height:"48px",width:"calc(100% - 16px)",display:"flex",alignItems:"center",justifyContent:"space-between",marginLeft:"8px",marginRight:"8px"},container:{marginTop:"48px",width:"100%",background:"#fff",display:"flex",alignItems:"center",justifyContent:"center"},content:{display:"flex",width:"100%",padding:a.spacing(1),paddingBottom:a.spacing(2),gap:10,flexDirection:"column"},avatar:{display:"flex",alignItems:"center",justifyContent:"center",minHeight:"128px",minWidth:"128px"}})),V=[{type:i.Text,name:"totalPnl",title:"Total PNL",compute:a=>null!==a.totalPnl?`${a.totalPnl.toFixed(2)}%`:"N/A",readonly:!0},{type:i.Text,columns:"6",name:"winRate",title:"Win Rate",compute:a=>null!==a.winRate?`${a.winRate.toFixed(2)}%`:"N/A",readonly:!0},{type:i.Text,columns:"6",name:"profitFactor",title:"Profit Factor",compute:a=>null!==a.profitFactor?a.profitFactor.toFixed(2):"N/A",readonly:!0},{type:i.Text,columns:"6",name:"maxDrawdown",title:"Max Drawdown",compute:a=>null!==a.maxDrawdown?`${a.maxDrawdown.toFixed(2)}%`:"N/A",readonly:!0},{type:i.Text,columns:"6",name:"expectancy",title:"Expectancy",compute:a=>null!==a.expectancy?`${a.expectancy.toFixed(2)}%`:"N/A",readonly:!0},{type:i.Text,fieldBottomMargin:"0",name:"totalTrades",title:"Trades",readonly:!0}],F=({row:a})=>{const{classes:i}=N();return e(l,{className:i.root,children:[e("div",{className:i.header,children:e(t,{variant:"h6",sx:{opacity:.8},children:`${o.bullet} ${a.symbol}`})}),e("div",{className:i.container,children:e("div",{className:i.content,children:[e("div",{className:i.avatar,children:e(k,{symbol:a.symbol,sx:{width:128,height:128}})}),e(n,{handler:()=>a,fields:V,sx:{mb:2}})]})})]})},H=[{type:h.Link,action:"back-action",label:e(j,{sx:{display:"block"}})},{type:h.Link,action:"back-action",label:"Dashboard"},{type:h.Link,action:"back-action",label:"Heatmap"},{type:h.Button,action:"download-pdf",label:"Download PDF",icon:A}],T=[{action:"download-json",label:"Download JSON",icon:()=>e(y,{icon:m,color:"#4caf50"})},{action:"download-markdown",label:"Download Markdown",icon:()=>e(y,{icon:w,color:"#4caf50"})},{action:"download-pdf",label:"Download PDF",icon:()=>e(y,{icon:u,color:"#4caf50"})},{divider:!0},{action:"update-now",label:"Refresh",icon:()=>e(y,{icon:R,color:"#4caf50"})}],P=[{id:"main",element:()=>{const[a,{loading:t,execute:o}]=c(async()=>(a=>{if(!a.length)return[{type:i.Typography,typoVariant:"h6",placeholder:"No data",sx:{textAlign:"center",opacity:.5,mt:4}}];const t=a.map(a=>({type:i.Group,desktopColumns:"4",tabletColumns:"6",phoneColumns:"12",fieldRightMargin:"1",fieldBottomMargin:"1",child:{type:i.Component,element:()=>e(F,{row:a})}}));return t.length>2?t:[{type:i.Center,sx:a=>({[a.breakpoints.up("lg")]:{height:"calc(100dvh - 165px)","& > *":{transform:"translateY(-56px)"}}}),fields:t}]})((await s.heatViewService.getStrategyHeatData()).symbols),{onLoadStart:()=>s.layoutService.setAppbarLoader(!0),onLoadEnd:()=>s.layoutService.setAppbarLoader(!1)});d(()=>L.subscribe(o));return e(D,{children:[e(p,{items:H,actions:T,onAction:async a=>{"back-action"===a&&s.routerService.push("/"),"update-now"===a&&await L.next(),"download-markdown"===a&&await(async()=>{const a=await s.heatViewService.getStrategyHeatReport(),e=new Blob([a],{type:"text/plain"}),t=URL.createObjectURL(e);s.layoutService.downloadFile(t,`heat_${Date.now()}.md`)})(),"download-pdf"===a&&await(async()=>{const a=await s.heatViewService.getStrategyHeatReport();await g(a)})(),"download-json"===a&&await(async()=>{const a=await s.heatViewService.getStrategyHeatData(),e=JSON.stringify(a,null,2),t=new Blob([e],{type:"text/plain"}),o=URL.createObjectURL(t);s.layoutService.downloadFile(o,`heat_${Date.now()}.md`)})()}}),!a||t?e(x,{sx:{height:"calc(100dvh - 165px)"}}):e(b,{withScrollbar:!0,sx:{height:"calc(100dvh - 165px)"},hideOverflowX:!0,children:e(f,{fields:a})})]})},isActive:a=>S(["/heat"],a)}],z=({id:a})=>e(v,{history:s.routerService,onLoadStart:()=>s.layoutService.setAppbarLoader(!0),onLoadEnd:()=>s.layoutService.setAppbarLoader(!1),routes:P,params:{id:a}});export{z as HeatPage,z as default};