@backtest-kit/ui 5.6.0 → 5.9.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 (70) hide show
  1. package/build/index.cjs +1172 -188
  2. package/build/index.mjs +1173 -189
  3. package/build/modules/frontend/build/3rdparty/ace_1.4.12/ace.js +21338 -0
  4. package/build/modules/frontend/build/3rdparty/ace_1.4.12/mode-javascript.js +798 -0
  5. package/build/modules/frontend/build/3rdparty/ace_1.4.12/theme-chrome.js +138 -0
  6. package/build/modules/frontend/build/3rdparty/ace_1.4.12/theme-twilight.js +116 -0
  7. package/build/modules/frontend/build/3rdparty/ace_1.4.12/worker-javascript.js +15012 -0
  8. package/build/modules/frontend/build/3rdparty/typeface-roboto_0.0.75/files/roboto-latin-100.woff +0 -0
  9. package/build/modules/frontend/build/3rdparty/typeface-roboto_0.0.75/files/roboto-latin-100.woff2 +0 -0
  10. package/build/modules/frontend/build/3rdparty/typeface-roboto_0.0.75/files/roboto-latin-100italic.woff +0 -0
  11. package/build/modules/frontend/build/3rdparty/typeface-roboto_0.0.75/files/roboto-latin-100italic.woff2 +0 -0
  12. package/build/modules/frontend/build/3rdparty/typeface-roboto_0.0.75/files/roboto-latin-300.woff +0 -0
  13. package/build/modules/frontend/build/3rdparty/typeface-roboto_0.0.75/files/roboto-latin-300.woff2 +0 -0
  14. package/build/modules/frontend/build/3rdparty/typeface-roboto_0.0.75/files/roboto-latin-300italic.woff +0 -0
  15. package/build/modules/frontend/build/3rdparty/typeface-roboto_0.0.75/files/roboto-latin-300italic.woff2 +0 -0
  16. package/build/modules/frontend/build/3rdparty/typeface-roboto_0.0.75/files/roboto-latin-400.woff +0 -0
  17. package/build/modules/frontend/build/3rdparty/typeface-roboto_0.0.75/files/roboto-latin-400.woff2 +0 -0
  18. package/build/modules/frontend/build/3rdparty/typeface-roboto_0.0.75/files/roboto-latin-400italic.woff +0 -0
  19. package/build/modules/frontend/build/3rdparty/typeface-roboto_0.0.75/files/roboto-latin-400italic.woff2 +0 -0
  20. package/build/modules/frontend/build/3rdparty/typeface-roboto_0.0.75/files/roboto-latin-500.woff +0 -0
  21. package/build/modules/frontend/build/3rdparty/typeface-roboto_0.0.75/files/roboto-latin-500.woff2 +0 -0
  22. package/build/modules/frontend/build/3rdparty/typeface-roboto_0.0.75/files/roboto-latin-500italic.woff +0 -0
  23. package/build/modules/frontend/build/3rdparty/typeface-roboto_0.0.75/files/roboto-latin-500italic.woff2 +0 -0
  24. package/build/modules/frontend/build/3rdparty/typeface-roboto_0.0.75/files/roboto-latin-700.woff +0 -0
  25. package/build/modules/frontend/build/3rdparty/typeface-roboto_0.0.75/files/roboto-latin-700.woff2 +0 -0
  26. package/build/modules/frontend/build/3rdparty/typeface-roboto_0.0.75/files/roboto-latin-700italic.woff +0 -0
  27. package/build/modules/frontend/build/3rdparty/typeface-roboto_0.0.75/files/roboto-latin-700italic.woff2 +0 -0
  28. package/build/modules/frontend/build/3rdparty/typeface-roboto_0.0.75/files/roboto-latin-900.woff +0 -0
  29. package/build/modules/frontend/build/3rdparty/typeface-roboto_0.0.75/files/roboto-latin-900.woff2 +0 -0
  30. package/build/modules/frontend/build/3rdparty/typeface-roboto_0.0.75/files/roboto-latin-900italic.woff +0 -0
  31. package/build/modules/frontend/build/3rdparty/typeface-roboto_0.0.75/files/roboto-latin-900italic.woff2 +0 -0
  32. package/build/modules/frontend/build/3rdparty/typeface-roboto_0.0.75/typeface-roboto.css +156 -0
  33. package/build/modules/frontend/build/assets/Article-DwCWbgig.js +1 -0
  34. package/build/modules/frontend/build/assets/{Background-BGXaqCCj.js → Background-BUWczIMa.js} +1 -1
  35. package/build/modules/frontend/build/assets/Container-DgcBaXwp.js +1 -0
  36. package/build/modules/frontend/build/assets/IconPhoto-Dg1OJT1g.js +1 -0
  37. package/build/modules/frontend/build/assets/{KeyboardArrowLeft-Brhl60Pa.js → KeyboardArrowLeft-DqH7VCRG.js} +1 -1
  38. package/build/modules/frontend/build/assets/Refresh-ASwi3YWH.js +1 -0
  39. package/build/modules/frontend/build/assets/emitters-EUI31qkt.js +1 -0
  40. package/build/modules/frontend/build/assets/hasRouteMatch-B_-PodjM.js +1 -0
  41. package/build/modules/frontend/build/assets/html2canvas-D67h2MXz.js +1 -0
  42. package/build/modules/frontend/build/assets/index-BXhzoqHB.js +17 -0
  43. package/build/modules/frontend/build/assets/index-BbMctGny.js +1 -0
  44. package/build/modules/frontend/build/assets/index-BjGW-SeZ.js +1560 -0
  45. package/build/modules/frontend/build/assets/index-CGTWcCfJ.js +1 -0
  46. package/build/modules/frontend/build/assets/index-CQbPy5z-.js +1 -0
  47. package/build/modules/frontend/build/assets/index-CYVGtlJR.js +1 -0
  48. package/build/modules/frontend/build/assets/index-CxqvOyvF.js +1 -0
  49. package/build/modules/frontend/build/assets/index-DoQ6TdNT.js +1 -0
  50. package/build/modules/frontend/build/assets/index-Dxunm9la.js +1 -0
  51. package/build/modules/frontend/build/assets/index-lFLkJBoZ.js +1 -0
  52. package/build/modules/frontend/build/assets/index-nAktdNIS.js +1 -0
  53. package/build/modules/frontend/build/assets/{index.es-BFfvVHkP.js → index.es-_Mw9_y9J.js} +2 -2
  54. package/build/modules/frontend/build/assets/markdownit-DnsUyAuX.js +1 -0
  55. package/build/modules/frontend/build/index.html +8 -2
  56. package/package.json +3 -3
  57. package/types.d.ts +84 -1
  58. package/build/modules/frontend/build/assets/IconPhoto-NqvLnXp7.js +0 -1
  59. package/build/modules/frontend/build/assets/Refresh-BGkaUatF.js +0 -1
  60. package/build/modules/frontend/build/assets/hasRouteMatch-7UKYuS0a.js +0 -1
  61. package/build/modules/frontend/build/assets/html2canvas-D-Nv0RTX.js +0 -1
  62. package/build/modules/frontend/build/assets/index-4xZ56Pw3.js +0 -231
  63. package/build/modules/frontend/build/assets/index-9iaIzgTc.js +0 -1331
  64. package/build/modules/frontend/build/assets/index-BDV9EkEY.js +0 -1
  65. package/build/modules/frontend/build/assets/index-BYCwoppH.js +0 -1
  66. package/build/modules/frontend/build/assets/index-CbQBf22x.js +0 -1
  67. package/build/modules/frontend/build/assets/index-CywcKDZi.js +0 -1
  68. package/build/modules/frontend/build/assets/index-D3HRM1Jy.js +0 -1
  69. package/build/modules/frontend/build/assets/index-DG7b0pa9.js +0 -1
  70. package/build/modules/frontend/build/assets/markdownit-GU6B-6e7.js +0 -1
@@ -0,0 +1 @@
1
+ import{m as e,bn as t}from"./index-BjGW-SeZ.js";function r(e,t){for(var r=0;r<t.length;r++){const o=t[r];if("string"!=typeof o&&!Array.isArray(o))for(const t in o)if("default"!==t&&!(t in e)){const r=Object.getOwnPropertyDescriptor(o,t);r&&Object.defineProperty(e,t,r.get?r:{enumerable:!0,get:()=>o[t]})}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}var o=t();const n=r({__proto__:null,default:e(o)},[o]);export{n as m};
@@ -7,10 +7,16 @@
7
7
  name="viewport"
8
8
  content="width=device-width, user-scalable=no, initial-scale=1, maximum-scale=1, minimal-ui"
9
9
  />
10
+ <link rel="stylesheet" href="/3rdparty/typeface-roboto_0.0.75/typeface-roboto.css" />
10
11
  <meta name="apple-mobile-web-app-status-bar-style" content="black" />
11
- <meta name="apple-mobile-web-app-title" content="TradeGPT" />
12
+ <meta name="apple-mobile-web-app-title" content="BacktestKit" />
12
13
  <meta name="apple-mobile-web-app-capable" content="yes" />
13
14
  <meta name="mobile-web-app-capable" content="yes" />
15
+ <script src="/3rdparty/ace_1.4.12/ace.js"></script>
16
+ <script src="/3rdparty/ace_1.4.12/mode-javascript.js"></script>
17
+ <script src="/3rdparty/ace_1.4.12/theme-twilight.js"></script>
18
+ <script src="/3rdparty/ace_1.4.12/theme-chrome.js"></script>
19
+ <script src="/3rdparty/ace_1.4.12/worker-javascript.js"></script>
14
20
  <link
15
21
  rel="apple-touch-icon"
16
22
  sizes="512x512"
@@ -140,7 +146,7 @@
140
146
  href="https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap"
141
147
  rel="stylesheet"
142
148
  />
143
- <script type="module" crossorigin src="/assets/index-4xZ56Pw3.js"></script>
149
+ <script type="module" crossorigin src="/assets/index-BjGW-SeZ.js"></script>
144
150
  <link rel="stylesheet" crossorigin href="/assets/index-DrRm3Jka.css">
145
151
  </head>
146
152
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@backtest-kit/ui",
3
- "version": "5.6.0",
3
+ "version": "5.9.0",
4
4
  "description": "Full-stack UI framework for visualizing cryptocurrency trading signals, backtests, and real-time market data. React dashboard with candlestick charts, signal tracking, and risk analysis.",
5
5
  "author": {
6
6
  "name": "Petr Tripolsky",
@@ -92,11 +92,11 @@
92
92
  "ccxt": "4.5.24",
93
93
  "touch": "3.1.1",
94
94
  "worker-testbed": "1.0.12",
95
- "backtest-kit": "5.6.0",
95
+ "backtest-kit": "5.9.0",
96
96
  "markdown-it": "14.1.0"
97
97
  },
98
98
  "peerDependencies": {
99
- "backtest-kit": "^5.6.0",
99
+ "backtest-kit": "^5.9.0",
100
100
  "markdown-it": "^14.1.0",
101
101
  "ccxt": "^4.5.24",
102
102
  "typescript": "^5.0.0"
package/types.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import http from 'http';
2
2
  import * as backtest_kit from 'backtest-kit';
3
- import { CandleInterval, NotificationModel, IStorageSignalRow, ILogEntry } from 'backtest-kit';
3
+ import { CandleInterval, NotificationModel, IStorageSignalRow, ILogEntry, IPublicSignalRow } from 'backtest-kit';
4
4
  import * as functools_kit from 'functools-kit';
5
5
 
6
6
  declare function serve(host?: string, port?: number): () => void;
@@ -54,6 +54,12 @@ declare class ExchangeService {
54
54
  exchangeName: ExchangeName$1;
55
55
  currentTime: number;
56
56
  }) => Promise<backtest_kit.ICandleData[]>;
57
+ getLastCandles: (dto: {
58
+ symbol: string;
59
+ interval: CandleInterval;
60
+ exchangeName: ExchangeName$1;
61
+ limit: number;
62
+ }) => Promise<any>;
57
63
  }
58
64
 
59
65
  declare class NotificationMockService {
@@ -76,6 +82,7 @@ declare class ExchangeMockService {
76
82
  private readonly exchangeService;
77
83
  getSignalCandles: (signalId: string, interval: CandleInterval) => Promise<backtest_kit.ICandleData[]>;
78
84
  getLiveCandles: (signalId: string, interval: CandleInterval) => Promise<backtest_kit.ICandleData[]>;
85
+ getLastCandles: (symbol: string, interval: CandleInterval) => Promise<any>;
79
86
  }
80
87
 
81
88
  declare class LogMockService {
@@ -87,6 +94,8 @@ declare class LogMockService {
87
94
 
88
95
  declare class StatusMockService {
89
96
  private readonly loggerService;
97
+ private readonly signalMockService;
98
+ getStatusInfo: () => Promise<any>;
90
99
  getStatusList: () => Promise<any>;
91
100
  getStatusMap: () => Promise<any>;
92
101
  getStatusOne: (id: string) => Promise<{
@@ -109,6 +118,8 @@ declare class StatusMockService {
109
118
  partialExecuted: any;
110
119
  minuteEstimatedTime: any;
111
120
  pendingAt: any;
121
+ timestamp: any;
122
+ updatedAt: number;
112
123
  positionLevels: any;
113
124
  positionEntries: any;
114
125
  positionPartials: any;
@@ -117,6 +128,8 @@ declare class StatusMockService {
117
128
 
118
129
  declare class MarkdownMockService {
119
130
  private readonly loggerService;
131
+ getStrategyData: (symbol: string, strategyName: string, exchangeName: string, frameName: string) => Promise<unknown>;
132
+ getStrategyReport: (symbol: string, strategyName: string, exchangeName: string, frameName: string) => Promise<string>;
120
133
  getBacktestData: (symbol: string, strategyName: string, exchangeName: string, frameName: string) => Promise<unknown>;
121
134
  getBacktestReport: (symbol: string, strategyName: string, exchangeName: string, frameName: string) => Promise<string>;
122
135
  getLiveData: (symbol: string, strategyName: string, exchangeName: string) => Promise<unknown>;
@@ -141,6 +154,40 @@ declare class MarkdownMockService {
141
154
  getWalkerReport: (symbol: string, walkerName: string) => Promise<string>;
142
155
  }
143
156
 
157
+ interface ExplorerFile {
158
+ id: string;
159
+ path: string;
160
+ label: string;
161
+ type: "file";
162
+ mimeType: string;
163
+ }
164
+ interface ExplorerDirectory {
165
+ id: string;
166
+ path: string;
167
+ label: string;
168
+ type: "directory";
169
+ nodes: ExplorerNode[];
170
+ }
171
+ type ExplorerNode = ExplorerFile | ExplorerDirectory;
172
+
173
+ declare class ExplorerMockService {
174
+ private readonly loggerService;
175
+ getNode: (nodePath: string) => Promise<string>;
176
+ getTree: () => Promise<ExplorerNode[]>;
177
+ }
178
+
179
+ declare class SignalMockService {
180
+ private readonly loggerService;
181
+ getLastUpdateTimestamp: (signalId: string) => Promise<number>;
182
+ getPendingSignal: (symbol: string) => Promise<IPublicSignalRow>;
183
+ }
184
+
185
+ declare class HeatMockService {
186
+ private readonly loggerService;
187
+ getStrategyHeatData: () => Promise<any>;
188
+ getStrategyHeatReport: () => Promise<string>;
189
+ }
190
+
144
191
  declare class NotificationViewService {
145
192
  private readonly loggerService;
146
193
  private readonly notificationMockService;
@@ -153,6 +200,7 @@ declare class NotificationViewService {
153
200
  declare class StatusViewService {
154
201
  private readonly loggerService;
155
202
  private readonly statusMockService;
203
+ private readonly signalViewService;
156
204
  getStatusList: () => Promise<any>;
157
205
  getStatusMap: () => Promise<any>;
158
206
  getStatusOne: (id: string) => Promise<{
@@ -175,10 +223,13 @@ declare class StatusViewService {
175
223
  partialExecuted: any;
176
224
  minuteEstimatedTime: any;
177
225
  pendingAt: any;
226
+ timestamp: any;
227
+ updatedAt: number;
178
228
  positionLevels: any;
179
229
  positionEntries: any;
180
230
  positionPartials: any;
181
231
  }>;
232
+ getStatusInfo: () => Promise<any>;
182
233
  }
183
234
 
184
235
  declare class StorageViewService {
@@ -195,8 +246,10 @@ declare class ExchangeViewService {
195
246
  private readonly storageViewService;
196
247
  private readonly exchangeService;
197
248
  private readonly exchangeMockService;
249
+ private readonly signalViewService;
198
250
  getSignalCandles: (signalId: string, interval: CandleInterval) => Promise<backtest_kit.ICandleData[]>;
199
251
  getLiveCandles: (signalId: string, interval: CandleInterval) => Promise<backtest_kit.ICandleData[]>;
252
+ getLastCandles: (symbol: string, interval: CandleInterval) => Promise<any>;
200
253
  }
201
254
 
202
255
  declare class LogViewService {
@@ -211,6 +264,8 @@ declare class LogViewService {
211
264
  declare class MarkdownViewService {
212
265
  private readonly loggerService;
213
266
  private readonly markdownMockService;
267
+ getStrategyData: (symbol: string, strategyName: string, exchangeName: string, frameName: string, backtest?: boolean) => Promise<unknown>;
268
+ getStrategyReport: (symbol: string, strategyName: string, exchangeName: string, frameName: string, backtest?: boolean) => Promise<string>;
214
269
  getBacktestData: (symbol: string, strategyName: string, exchangeName: string, frameName: string) => Promise<unknown>;
215
270
  getBacktestReport: (symbol: string, strategyName: string, exchangeName: string, frameName: string) => Promise<string>;
216
271
  getLiveData: (symbol: string, strategyName: string, exchangeName: string) => Promise<unknown>;
@@ -235,6 +290,28 @@ declare class MarkdownViewService {
235
290
  getWalkerReport: (symbol: string, walkerName: string) => Promise<string>;
236
291
  }
237
292
 
293
+ declare class ExplorerViewService {
294
+ private readonly loggerService;
295
+ private readonly explorerMockService;
296
+ private getDir;
297
+ getNode: (nodePath: string) => Promise<string>;
298
+ getTree: () => Promise<ExplorerNode[]>;
299
+ }
300
+
301
+ declare class SignalViewService {
302
+ private readonly loggerService;
303
+ private readonly signalMockService;
304
+ getLastUpdateTimestamp: (signalId: string) => Promise<number>;
305
+ getPendingSignal: (symbol: string) => Promise<backtest_kit.IPublicSignalRow>;
306
+ }
307
+
308
+ declare class HeatViewService {
309
+ private readonly loggerService;
310
+ private readonly heatMockService;
311
+ getStrategyHeatData: () => Promise<any>;
312
+ getStrategyHeatReport: () => Promise<string>;
313
+ }
314
+
238
315
  declare class SymbolConnectionService {
239
316
  private readonly loggerService;
240
317
  getSymbolList: (() => Promise<{
@@ -314,12 +391,18 @@ declare const ioc: {
314
391
  logViewService: LogViewService;
315
392
  statusViewService: StatusViewService;
316
393
  markdownViewService: MarkdownViewService;
394
+ explorerViewService: ExplorerViewService;
395
+ signalViewService: SignalViewService;
396
+ heatViewService: HeatViewService;
317
397
  notificationMockService: NotificationMockService;
318
398
  storageMockService: StorageMockService;
319
399
  exchangeMockService: ExchangeMockService;
320
400
  logMockService: LogMockService;
321
401
  statusMockService: StatusMockService;
322
402
  markdownMockService: MarkdownMockService;
403
+ explorerMockService: ExplorerMockService;
404
+ signalMockService: SignalMockService;
405
+ heatMockService: HeatMockService;
323
406
  liveMetaService: LiveMetaService;
324
407
  symbolMetaService: SymbolMetaService;
325
408
  backtestMetaService: BacktestMetaService;
@@ -1 +0,0 @@
1
- import{f as e,i as t,B as r,J as s}from"./index-4xZ56Pw3.js";const a=({className:a,symbol:i,style:o,sx:n})=>e(s,{children:async()=>{try{const s=(await t.symbolGlobalService.getSymbolMap())[i],l=null==s?void 0:s.icon,c=(null==s?void 0:s.color)||"#ccc";return e(r,{className:a,sx:{position:"relative",width:24,height:24,borderRadius:"50%",display:"flex",alignItems:"center",justifyContent:"center",background:l?"transparent":c,...n},style:o,children:l?e("img",{loading:"lazy",crossOrigin:"anonymous",src:l,alt:i,style:{width:"100%",height:"100%",borderRadius:"50%",objectFit:"contain"},onError:e=>{const t=e.target,r=t.parentElement;r&&(r.style.background=c,t.style.display="none")}}):e(r,{sx:{width:"60%",height:"60%",borderRadius:"50%",backgroundColor:"rgba(255, 255, 255, 0.2)"}})})}catch(s){return e(r,{className:a,sx:{position:"relative",width:24,height:24,borderRadius:"50%",display:"flex",alignItems:"center",justifyContent:"center",background:"#ccc",...n},style:o,children:e(r,{sx:{width:"60%",height:"60%",borderRadius:"50%",backgroundColor:"rgba(255, 255, 255, 0.2)"}})})}}});export{a as I};
@@ -1 +0,0 @@
1
- import{aS as e,aT as t,r as a,aU as s,f as i,aV as n,aW as o,aX as r,aY as d,aZ as m,a_ as u,a$ as p,b0 as x,c}from"./index-4xZ56Pw3.js";const h=e(),l=["className","component","disableGutters","fixed","maxWidth","classes"],b=m(),f=h("div",{name:"MuiContainer",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:a}=e;return[t.root,t[`maxWidth${o(String(a.maxWidth))}`],a.fixed&&t.fixed,a.disableGutters&&t.disableGutters]}}),g=e=>r({props:e,name:"MuiContainer",defaultTheme:b});const W=function(e={}){const{createStyledComponent:r=f,useThemeProps:m=g,componentName:p="MuiContainer"}=e,x=r(({theme:e,ownerState:a})=>t({width:"100%",marginLeft:"auto",boxSizing:"border-box",marginRight:"auto",display:"block"},!a.disableGutters&&{paddingLeft:e.spacing(2),paddingRight:e.spacing(2),[e.breakpoints.up("sm")]:{paddingLeft:e.spacing(3),paddingRight:e.spacing(3)}}),({theme:e,ownerState:t})=>t.fixed&&Object.keys(e.breakpoints.values).reduce((t,a)=>{const s=a,i=e.breakpoints.values[s];return 0!==i&&(t[e.breakpoints.up(s)]={maxWidth:`${i}${e.breakpoints.unit}`}),t},{}),({theme:e,ownerState:a})=>t({},"xs"===a.maxWidth&&{[e.breakpoints.up("xs")]:{maxWidth:Math.max(e.breakpoints.values.xs,444)}},a.maxWidth&&"xs"!==a.maxWidth&&{[e.breakpoints.up(a.maxWidth)]:{maxWidth:`${e.breakpoints.values[a.maxWidth]}${e.breakpoints.unit}`}}));return a.forwardRef(function(e,a){const r=m(e),{className:c,component:h="div",disableGutters:b=!1,fixed:f=!1,maxWidth:g="lg"}=r,W=s(r,l),S=t({},r,{component:h,disableGutters:b,fixed:f,maxWidth:g}),k=((e,t)=>{const{classes:a,fixed:s,disableGutters:i,maxWidth:n}=e,r={root:["root",n&&`maxWidth${o(String(n))}`,s&&"fixed",i&&"disableGutters"]};return d(r,e=>u(t,e),a)})(S,p);return i(x,t({as:h,ownerState:S,className:n(k.root,c),ref:a},W))})}({createStyledComponent:x("div",{name:"MuiContainer",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:a}=e;return[t.root,t[`maxWidth${o(String(a.maxWidth))}`],a.fixed&&t.fixed,a.disableGutters&&t.disableGutters]}}),useThemeProps:e=>p({props:e,name:"MuiContainer"})}),S=c(i("path",{d:"M17.65 6.35C16.2 4.9 14.21 4 12 4c-4.42 0-7.99 3.58-7.99 8s3.57 8 7.99 8c3.73 0 6.84-2.55 7.73-6h-2.08c-.82 2.33-3.04 4-5.65 4-3.31 0-6-2.69-6-6s2.69-6 6-6c1.66 0 3.14.69 4.22 1.78L13 11h7V4l-2.35 2.35z"}),"Refresh");export{W as C,S as R};
@@ -1 +0,0 @@
1
- import{i as a,aQ as e,aR as t}from"./index-4xZ56Pw3.js";const i=(i,o=a.routerService.location.pathname)=>!!e(t.filter(({path:a})=>i.includes(a)),o);export{i as h};
@@ -1 +0,0 @@
1
- import{aD as e}from"./index-4xZ56Pw3.js";import{r}from"./index-9iaIzgTc.js";function t(e,r){for(var t=0;t<r.length;t++){const o=r[t];if("string"!=typeof o&&!Array.isArray(o))for(const r in o)if("default"!==r&&!(r in e)){const t=Object.getOwnPropertyDescriptor(o,r);t&&Object.defineProperty(e,r,t.get?t:{enumerable:!0,get:()=>o[r]})}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}var o=r();const n=t({__proto__:null,default:e(o)},[o]);export{n as h};