@mashkovd/pelican-vue 0.3.0 → 0.3.1

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.
@@ -1,4 +1,4 @@
1
- import { onScopeDispose as de, defineComponent as F, ref as R, watch as E, openBlock as p, createElementBlock as y, createElementVNode as o, createTextVNode as D, toDisplayString as b, Fragment as U, renderList as K, unref as v, normalizeClass as B, computed as k, createCommentVNode as O, createVNode as P, withDirectives as ge, vShow as he, inject as De, withModifiers as te, renderSlot as q, createBlock as ie, withCtx as re, mergeProps as Ue, normalizeStyle as Ve, shallowRef as Ee, triggerRef as ae, reactive as Pe, provide as ne, toRef as ye, onMounted as Be, normalizeProps as Oe, guardReactiveProps as Ke } from "vue";
1
+ import { onScopeDispose as me, defineComponent as F, ref as R, watch as E, openBlock as p, createElementBlock as y, createElementVNode as i, createTextVNode as D, toDisplayString as b, Fragment as U, renderList as K, unref as v, normalizeClass as B, computed as k, normalizeStyle as ie, createCommentVNode as O, createVNode as P, withDirectives as he, vShow as ye, inject as Ue, withModifiers as te, renderSlot as q, createBlock as re, withCtx as ue, mergeProps as Ve, shallowRef as Ee, triggerRef as ae, reactive as Ce, provide as ne, toRef as Me, onMounted as Be, normalizeProps as Oe, guardReactiveProps as Ke } from "vue";
2
2
  function Ye(e, t) {
3
3
  let a = null;
4
4
  const n = (...c) => {
@@ -8,9 +8,9 @@ function Ye(e, t) {
8
8
  }, s = () => {
9
9
  a && (clearTimeout(a), a = null);
10
10
  };
11
- return de(s), { wrapped: n, cancel: s };
11
+ return me(s), { wrapped: n, cancel: s };
12
12
  }
13
- const Ge = 20, ze = 350, He = 2e3, je = 2e4, We = 30, qe = [
13
+ const ze = 20, Ge = 350, He = 2e3, je = 2e4, We = 30, qe = [
14
14
  "return-desc",
15
15
  "return-asc",
16
16
  "copiers-desc",
@@ -79,30 +79,30 @@ const Ge = 20, ze = 350, He = 2e3, je = 2e4, We = 30, qe = [
79
79
  u !== s.value && (s.value = u);
80
80
  }
81
81
  );
82
- const { wrapped: c } = Ye((u) => n("update:search", u), ze);
82
+ const { wrapped: c } = Ye((u) => n("update:search", u), Ge);
83
83
  function l(u) {
84
84
  const m = u.target.value;
85
85
  s.value = m, c(m);
86
86
  }
87
- function i(u) {
87
+ function o(u) {
88
88
  n("update:sortKey", u.target.value);
89
89
  }
90
90
  return (u, m) => (p(), y("div", Je, [
91
- o("button", {
91
+ i("button", {
92
92
  class: "btn-flat filters-toggle",
93
93
  type: "button",
94
94
  onClick: m[0] || (m[0] = (g) => n("toggle-filters"))
95
95
  }, " Filters "),
96
- o("div", Qe, [
96
+ i("div", Qe, [
97
97
  m[2] || (m[2] = D(" Showing ", -1)),
98
- o("b", null, b(e.filteredTotal.toLocaleString("en-US")), 1),
98
+ i("b", null, b(e.filteredTotal.toLocaleString("en-US")), 1),
99
99
  m[3] || (m[3] = D(" of ", -1)),
100
- o("b", null, b(e.total.toLocaleString("en-US")), 1),
100
+ i("b", null, b(e.total.toLocaleString("en-US")), 1),
101
101
  m[4] || (m[4] = D(" · page ", -1)),
102
- o("b", null, b(e.page), 1),
102
+ i("b", null, b(e.page), 1),
103
103
  D(" / " + b(e.totalPages), 1)
104
104
  ]),
105
- o("input", {
105
+ i("input", {
106
106
  class: "search",
107
107
  type: "search",
108
108
  placeholder: "Search by signal name…",
@@ -110,11 +110,11 @@ const Ge = 20, ze = 350, He = 2e3, je = 2e4, We = 30, qe = [
110
110
  value: s.value,
111
111
  onInput: l
112
112
  }, null, 40, et),
113
- o("div", tt, [
114
- m[5] || (m[5] = o("label", null, "Sort:", -1)),
115
- o("select", {
113
+ i("div", tt, [
114
+ m[5] || (m[5] = i("label", null, "Sort:", -1)),
115
+ i("select", {
116
116
  value: e.sortKey,
117
- onChange: i
117
+ onChange: o
118
118
  }, [
119
119
  (p(!0), y(U, null, K(v(qe), (g) => (p(), y("option", {
120
120
  key: g,
@@ -122,7 +122,7 @@ const Ge = 20, ze = 350, He = 2e3, je = 2e4, We = 30, qe = [
122
122
  }, b(v(Xe)[g]), 9, nt))), 128))
123
123
  ], 40, at)
124
124
  ]),
125
- o("button", {
125
+ i("button", {
126
126
  class: "btn-flat",
127
127
  type: "button",
128
128
  title: "reload",
@@ -144,11 +144,11 @@ const Ge = 20, ze = 350, He = 2e3, je = 2e4, We = 30, qe = [
144
144
  setup(e, { emit: t }) {
145
145
  const a = e, n = t, s = ["Low", "Medium", "High"];
146
146
  function c(l) {
147
- const i = new Set(a.modelValue);
148
- i.has(l) ? i.delete(l) : i.add(l), n("update:modelValue", i);
147
+ const o = new Set(a.modelValue);
148
+ o.has(l) ? o.delete(l) : o.add(l), n("update:modelValue", o);
149
149
  }
150
- return (l, i) => (p(), y("div", ot, [
151
- (p(), y(U, null, K(s, (u) => o("button", {
150
+ return (l, o) => (p(), y("div", ot, [
151
+ (p(), y(U, null, K(s, (u) => i("button", {
152
152
  key: u,
153
153
  type: "button",
154
154
  class: B(["chip", ["risk-" + u.toLowerCase(), { on: e.modelValue.has(u) }]]),
@@ -170,17 +170,17 @@ const Ge = 20, ze = 350, He = 2e3, je = 2e4, We = 30, qe = [
170
170
  },
171
171
  emits: ["update:modelValue"],
172
172
  setup(e, { emit: t }) {
173
- const a = e, n = t, s = k(() => a.anyAt ?? a.min), c = k(() => !!a.inverted), l = k(() => a.modelValue == null ? c.value ? a.max : s.value : a.modelValue), i = k(() => a.modelValue == null ? "any" : a.format ? a.format(a.modelValue) : String(a.modelValue));
173
+ const a = e, n = t, s = k(() => a.anyAt ?? a.min), c = k(() => !!a.inverted), l = k(() => a.modelValue == null ? c.value ? a.max : s.value : a.modelValue), o = k(() => a.modelValue == null ? "any" : a.format ? a.format(a.modelValue) : String(a.modelValue));
174
174
  function u(m) {
175
175
  const g = parseInt(m.target.value, 10);
176
176
  isNaN(g) || (c.value && g >= a.max || !c.value && g <= s.value ? n("update:modelValue", null) : n("update:modelValue", g));
177
177
  }
178
178
  return (m, g) => (p(), y("div", ct, [
179
- o("div", dt, [
180
- o("label", mt, b(e.label), 1),
181
- o("span", ft, b(i.value), 1)
179
+ i("div", dt, [
180
+ i("label", mt, b(e.label), 1),
181
+ i("span", ft, b(o.value), 1)
182
182
  ]),
183
- o("input", {
183
+ i("input", {
184
184
  type: "range",
185
185
  class: "range",
186
186
  min: e.min,
@@ -192,7 +192,7 @@ const Ge = 20, ze = 350, He = 2e3, je = 2e4, We = 30, qe = [
192
192
  }, null, 40, vt)
193
193
  ]));
194
194
  }
195
- }), z = /* @__PURE__ */ N(pt, [["__scopeId", "data-v-10c5fe1c"]]), gt = { class: "pelican-fgroup" }, ht = { class: "title-row" }, yt = { class: "title" }, Mt = { class: "val" }, bt = { class: "dual-track" }, xt = ["min", "max", "value"], wt = ["min", "max", "value"], $t = {
195
+ }), G = /* @__PURE__ */ N(pt, [["__scopeId", "data-v-10c5fe1c"]]), gt = { class: "pelican-fgroup" }, ht = { class: "title-row" }, yt = { class: "title" }, Mt = { class: "val" }, bt = { class: "dual-track" }, xt = ["min", "max", "value"], wt = ["min", "max", "value"], $t = {
196
196
  key: 0,
197
197
  class: "scale"
198
198
  }, kt = /* @__PURE__ */ F({
@@ -211,14 +211,14 @@ const Ge = 20, ze = 350, He = 2e3, je = 2e4, We = 30, qe = [
211
211
  },
212
212
  emits: ["update:modelValueMin", "update:modelValueMax"],
213
213
  setup(e, { emit: t }) {
214
- const a = e, n = t, s = k(() => a.rawMin ?? 0), c = k(() => a.rawMax ?? 100), l = k(() => a.modelValueMin ?? s.value), i = k(() => a.modelValueMax ?? c.value), u = k(
214
+ const a = e, n = t, s = k(() => a.rawMin ?? 0), c = k(() => a.rawMax ?? 100), l = k(() => a.modelValueMin ?? s.value), o = k(() => a.modelValueMax ?? c.value), u = k(
215
215
  () => l.value <= s.value ? a.minLabel ?? "any" : a.formatRaw(a.rawToDomain(l.value))
216
216
  ), m = k(
217
- () => i.value >= c.value ? a.maxLabel ?? "any" : a.formatRaw(a.rawToDomain(i.value))
218
- ), g = k(() => l.value <= s.value && i.value >= c.value ? "any" : `${u.value} – ${m.value}`);
217
+ () => o.value >= c.value ? a.maxLabel ?? "any" : a.formatRaw(a.rawToDomain(o.value))
218
+ ), g = k(() => l.value <= s.value && o.value >= c.value ? "any" : `${u.value} – ${m.value}`);
219
219
  function f(r) {
220
220
  let w = parseInt(r.target.value, 10);
221
- isNaN(w) || (w > i.value && (w = i.value), n("update:modelValueMin", w <= s.value ? null : w));
221
+ isNaN(w) || (w > o.value && (w = o.value), n("update:modelValueMin", w <= s.value ? null : w));
222
222
  }
223
223
  function d(r) {
224
224
  let w = parseInt(r.target.value, 10);
@@ -227,29 +227,31 @@ const Ge = 20, ze = 350, He = 2e3, je = 2e4, We = 30, qe = [
227
227
  return (r, w) => {
228
228
  var I;
229
229
  return p(), y("div", gt, [
230
- o("div", ht, [
231
- o("label", yt, b(e.label), 1),
232
- o("span", Mt, b(g.value), 1)
230
+ i("div", ht, [
231
+ i("label", yt, b(e.label), 1),
232
+ i("span", Mt, b(g.value), 1)
233
233
  ]),
234
- o("div", bt, [
235
- o("input", {
234
+ i("div", bt, [
235
+ i("input", {
236
236
  type: "range",
237
237
  class: "range-dual",
238
238
  min: s.value,
239
239
  max: c.value,
240
240
  value: l.value,
241
+ style: ie({ zIndex: l.value <= s.value || l.value >= o.value ? 5 : 4 }),
241
242
  onInput: f,
242
243
  onChange: f
243
- }, null, 40, xt),
244
- o("input", {
244
+ }, null, 44, xt),
245
+ i("input", {
245
246
  type: "range",
246
247
  class: "range-dual",
247
248
  min: s.value,
248
249
  max: c.value,
249
- value: i.value,
250
+ value: o.value,
251
+ style: ie({ zIndex: l.value <= s.value || l.value >= o.value ? 4 : 5 }),
250
252
  onInput: d,
251
253
  onChange: d
252
- }, null, 40, wt)
254
+ }, null, 44, wt)
253
255
  ]),
254
256
  (I = e.scaleHints) != null && I.length ? (p(), y("div", $t, [
255
257
  (p(!0), y(U, null, K(e.scaleHints, (_) => (p(), y("span", { key: _ }, b(_), 1))), 128))
@@ -257,13 +259,13 @@ const Ge = 20, ze = 350, He = 2e3, je = 2e4, We = 30, qe = [
257
259
  ]);
258
260
  };
259
261
  }
260
- }), Me = /* @__PURE__ */ N(kt, [["__scopeId", "data-v-a0c09424"]]);
261
- function be(e, t = 2) {
262
+ }), be = /* @__PURE__ */ N(kt, [["__scopeId", "data-v-0bf11d26"]]);
263
+ function xe(e, t = 2) {
262
264
  if (e == null || isNaN(Number(e))) return null;
263
265
  const a = Number(e);
264
266
  return { text: `${a.toFixed(t)}%`, positive: a >= 0 };
265
267
  }
266
- function xe(e, t = "en-US") {
268
+ function we(e, t = "en-US") {
267
269
  if (e == null || isNaN(Number(e))) return "—";
268
270
  const a = Number(e), n = a < 0 ? "-" : "", s = Math.abs(a);
269
271
  let c;
@@ -277,13 +279,13 @@ function H(e, t = "en-US") {
277
279
  maximumFractionDigits: 2
278
280
  })}`;
279
281
  }
280
- function we(e, t = "en-US") {
282
+ function $e(e, t = "en-US") {
281
283
  return e == null ? "—" : Number(e).toLocaleString(t);
282
284
  }
283
285
  function It(e) {
284
286
  return e.Fee == null ? e._meta ? "free" : "—" : `${(e.Fee * 100).toFixed(0)}%`;
285
287
  }
286
- function $e(e, t = "en-US") {
288
+ function ke(e, t = "en-US") {
287
289
  if (!e) return "—";
288
290
  const a = new Date(e);
289
291
  return isNaN(a.getTime()) ? "—" : a.toLocaleString(t, {
@@ -303,7 +305,7 @@ function _t(e) {
303
305
  const a = Math.floor(e / 365), n = Math.floor((e - a * 365) / 30);
304
306
  return n ? `${a}y ${n}mo` : `${a}y`;
305
307
  }
306
- function ue(e) {
308
+ function ce(e) {
307
309
  return e >= 1e6 ? "$" + (e / 1e6).toFixed(2) + "M" : e >= 1e3 ? "$" + Math.round(e / 1e3) + "K" : "$" + Math.round(e);
308
310
  }
309
311
  function St(e) {
@@ -317,7 +319,7 @@ function j(e) {
317
319
  const t = new Date(e);
318
320
  return isNaN(t.getTime()) ? null : Math.floor((Date.now() - t.getTime()) / 864e5);
319
321
  }
320
- const le = (e) => e <= 0 ? 0 : Math.round(Math.pow(10, 1 + (e - 1) / 99 * 6)), ke = (e) => e <= 0 ? 0 : Math.max(1, Math.min(100, Math.round(1 + (Math.log10(e) - 1) * 99 / 6))), se = (e) => e <= 0 ? 0 : Math.round(Math.pow(10, (e - 1) / 99 * 4.7)), Pt = { class: "pelican-fgroup" }, Ct = { class: "title-row" }, Tt = { class: "val" }, At = ["value"], Ft = /* @__PURE__ */ F({
322
+ const le = (e) => e <= 0 ? 0 : Math.round(Math.pow(10, 1 + (e - 1) / 99 * 6)), Ie = (e) => e <= 0 ? 0 : Math.max(1, Math.min(100, Math.round(1 + (Math.log10(e) - 1) * 99 / 6))), se = (e) => e <= 0 ? 0 : Math.round(Math.pow(10, (e - 1) / 99 * 4.7)), Pt = { class: "pelican-fgroup" }, Ct = { class: "title-row" }, Tt = { class: "val" }, At = ["value"], Ft = /* @__PURE__ */ F({
321
323
  __name: "InvestAmount",
322
324
  props: {
323
325
  modelValue: {}
@@ -325,27 +327,27 @@ const le = (e) => e <= 0 ? 0 : Math.round(Math.pow(10, 1 + (e - 1) / 99 * 6)), k
325
327
  emits: ["update:modelValue", "apply"],
326
328
  setup(e, { emit: t }) {
327
329
  const a = e, n = t, s = k(
328
- () => a.modelValue == null ? "any" : ue(a.modelValue)
330
+ () => a.modelValue == null ? "any" : ce(a.modelValue)
329
331
  );
330
332
  function c(l) {
331
- const i = l.target.value.trim();
332
- if (!i) {
333
+ const o = l.target.value.trim();
334
+ if (!o) {
333
335
  n("update:modelValue", null), n("apply", null);
334
336
  return;
335
337
  }
336
- const u = parseInt(i, 10);
338
+ const u = parseInt(o, 10);
337
339
  if (isNaN(u) || u <= 0) {
338
340
  n("update:modelValue", null), n("apply", null);
339
341
  return;
340
342
  }
341
- n("update:modelValue", u), n("apply", { min: ke(50), max: ke(u) });
343
+ n("update:modelValue", u), n("apply", { min: Ie(50), max: Ie(u) });
342
344
  }
343
- return (l, i) => (p(), y("div", Pt, [
344
- o("div", Ct, [
345
- i[0] || (i[0] = o("label", { class: "title" }, "Your Investment Amount, $", -1)),
346
- o("span", Tt, b(s.value), 1)
345
+ return (l, o) => (p(), y("div", Pt, [
346
+ i("div", Ct, [
347
+ o[0] || (o[0] = i("label", { class: "title" }, "Your Investment Amount, $", -1)),
348
+ i("span", Tt, b(s.value), 1)
347
349
  ]),
348
- o("input", {
350
+ i("input", {
349
351
  type: "number",
350
352
  min: 50,
351
353
  step: 50,
@@ -365,14 +367,14 @@ const le = (e) => e <= 0 ? 0 : Math.round(Math.pow(10, 1 + (e - 1) / 99 * 6)), k
365
367
  },
366
368
  emits: ["update:filters", "update:investAmount", "reset"],
367
369
  setup(e, { emit: t }) {
368
- const a = e, n = t, s = R(0), c = R(100), l = R(0), i = R(100);
370
+ const a = e, n = t, s = R(0), c = R(100), l = R(0), o = R(100);
369
371
  E(s, (f) => {
370
372
  n("update:filters", { retMin: f <= 0 ? null : se(f) });
371
373
  }), E(c, (f) => {
372
374
  n("update:filters", { retMax: f >= 100 ? null : se(f) });
373
375
  }), E(l, (f) => {
374
376
  n("update:filters", { balanceMin: f <= 0 ? null : le(f) });
375
- }), E(i, (f) => {
377
+ }), E(o, (f) => {
376
378
  n("update:filters", { balanceMax: f >= 100 ? null : le(f) });
377
379
  }), E(
378
380
  () => [a.filters.retMin, a.filters.retMax],
@@ -382,7 +384,7 @@ const le = (e) => e <= 0 ? 0 : Math.round(Math.pow(10, 1 + (e - 1) / 99 * 6)), k
382
384
  ), E(
383
385
  () => [a.filters.balanceMin, a.filters.balanceMax],
384
386
  ([f, d]) => {
385
- f == null && (l.value = 0), d == null && (i.value = 100);
387
+ f == null && (l.value = 0), d == null && (o.value = 100);
386
388
  }
387
389
  );
388
390
  function u(f) {
@@ -392,14 +394,14 @@ const le = (e) => e <= 0 ? 0 : Math.round(Math.pow(10, 1 + (e - 1) / 99 * 6)), k
392
394
  u({ risk: f });
393
395
  }
394
396
  function g(f) {
395
- f == null ? (u({ balanceMin: null, balanceMax: null }), l.value = 0, i.value = 100) : (l.value = f.min, i.value = f.max);
397
+ f == null ? (u({ balanceMin: null, balanceMax: null }), l.value = 0, o.value = 100) : (l.value = f.min, o.value = f.max);
396
398
  }
397
399
  return (f, d) => (p(), y("aside", {
398
400
  class: B(["pelican-filters", { open: e.open }])
399
401
  }, [
400
- o("div", Lt, [
401
- d[13] || (d[13] = o("label", { class: "ftitle" }, "Risk", -1)),
402
- o("button", {
402
+ i("div", Lt, [
403
+ d[13] || (d[13] = i("label", { class: "ftitle" }, "Risk", -1)),
404
+ i("button", {
403
405
  class: "btn-reset",
404
406
  type: "button",
405
407
  onClick: d[0] || (d[0] = (r) => n("reset"))
@@ -414,7 +416,7 @@ const le = (e) => e <= 0 ? 0 : Math.round(Math.pow(10, 1 + (e - 1) / 99 * 6)), k
414
416
  "onUpdate:modelValue": d[1] || (d[1] = (r) => n("update:investAmount", r)),
415
417
  onApply: g
416
418
  }, null, 8, ["model-value"]),
417
- P(Me, {
419
+ P(be, {
418
420
  label: "Return %",
419
421
  "model-value-min": s.value,
420
422
  "model-value-max": c.value,
@@ -425,7 +427,7 @@ const le = (e) => e <= 0 ? 0 : Math.round(Math.pow(10, 1 + (e - 1) / 99 * 6)), k
425
427
  "onUpdate:modelValueMin": d[2] || (d[2] = (r) => s.value = r ?? 0),
426
428
  "onUpdate:modelValueMax": d[3] || (d[3] = (r) => c.value = r ?? 100)
427
429
  }, null, 8, ["model-value-min", "model-value-max", "format-raw", "raw-to-domain"]),
428
- P(z, {
430
+ P(G, {
429
431
  label: "Max Drawdown ≤",
430
432
  "model-value": e.filters.ddMax,
431
433
  min: 0,
@@ -436,18 +438,18 @@ const le = (e) => e <= 0 ? 0 : Math.round(Math.pow(10, 1 + (e - 1) / 99 * 6)), k
436
438
  format: (r) => r + "%",
437
439
  "onUpdate:modelValue": d[4] || (d[4] = (r) => u({ ddMax: r == null || r >= 100 ? null : r }))
438
440
  }, null, 8, ["model-value", "format"]),
439
- P(Me, {
441
+ P(be, {
440
442
  label: "Balance",
441
443
  "model-value-min": l.value,
442
- "model-value-max": i.value,
443
- "format-raw": (r) => v(ue)(r),
444
+ "model-value-max": o.value,
445
+ "format-raw": (r) => v(ce)(r),
444
446
  "raw-to-domain": (r) => v(le)(r),
445
447
  "scale-hints": ["$0", "$10K", "$10M"],
446
448
  "max-label": "$10M+",
447
449
  "onUpdate:modelValueMin": d[5] || (d[5] = (r) => l.value = r ?? 0),
448
- "onUpdate:modelValueMax": d[6] || (d[6] = (r) => i.value = r ?? 100)
450
+ "onUpdate:modelValueMax": d[6] || (d[6] = (r) => o.value = r ?? 100)
449
451
  }, null, 8, ["model-value-min", "model-value-max", "format-raw", "raw-to-domain"]),
450
- P(z, {
452
+ P(G, {
451
453
  label: "Mgmt Fee ≤",
452
454
  "model-value": e.filters.feeMax,
453
455
  min: 0,
@@ -458,16 +460,16 @@ const le = (e) => e <= 0 ? 0 : Math.round(Math.pow(10, 1 + (e - 1) / 99 * 6)), k
458
460
  format: (r) => r + "%",
459
461
  "onUpdate:modelValue": d[7] || (d[7] = (r) => u({ feeMax: r == null || r >= 100 ? null : r }))
460
462
  }, null, 8, ["model-value", "format"]),
461
- P(z, {
463
+ P(G, {
462
464
  label: "Copiers AUM ≥",
463
465
  "model-value": e.filters.aumMin,
464
466
  min: 0,
465
467
  max: 5e6,
466
468
  step: 5e4,
467
- format: (r) => "≥ " + v(ue)(r),
469
+ format: (r) => "≥ " + v(ce)(r),
468
470
  "onUpdate:modelValue": d[8] || (d[8] = (r) => u({ aumMin: r && r > 0 ? r : null }))
469
471
  }, null, 8, ["model-value", "format"]),
470
- P(z, {
472
+ P(G, {
471
473
  label: "Copiers ≥",
472
474
  "model-value": e.filters.copiersMin,
473
475
  min: 0,
@@ -476,7 +478,7 @@ const le = (e) => e <= 0 ? 0 : Math.round(Math.pow(10, 1 + (e - 1) / 99 * 6)), k
476
478
  format: (r) => "≥ " + r,
477
479
  "onUpdate:modelValue": d[9] || (d[9] = (r) => u({ copiersMin: r && r > 0 ? r : null }))
478
480
  }, null, 8, ["model-value", "format"]),
479
- P(z, {
481
+ P(G, {
480
482
  label: "Age ≥ (days)",
481
483
  "model-value": e.filters.ageMin,
482
484
  min: 0,
@@ -485,7 +487,7 @@ const le = (e) => e <= 0 ? 0 : Math.round(Math.pow(10, 1 + (e - 1) / 99 * 6)), k
485
487
  format: (r) => "≥ " + r + "d",
486
488
  "onUpdate:modelValue": d[10] || (d[10] = (r) => u({ ageMin: r && r > 0 ? r : null }))
487
489
  }, null, 8, ["model-value", "format"]),
488
- P(z, {
490
+ P(G, {
489
491
  label: "Trades ≥",
490
492
  "model-value": e.filters.tradesMin,
491
493
  min: 0,
@@ -494,7 +496,7 @@ const le = (e) => e <= 0 ? 0 : Math.round(Math.pow(10, 1 + (e - 1) / 99 * 6)), k
494
496
  format: (r) => "≥ " + r,
495
497
  "onUpdate:modelValue": d[11] || (d[11] = (r) => u({ tradesMin: r && r > 0 ? r : null }))
496
498
  }, null, 8, ["model-value", "format"]),
497
- P(z, {
499
+ P(G, {
498
500
  label: "Win Rate ≥",
499
501
  "model-value": e.filters.winrateMin,
500
502
  min: 0,
@@ -505,7 +507,7 @@ const le = (e) => e <= 0 ? 0 : Math.round(Math.pow(10, 1 + (e - 1) / 99 * 6)), k
505
507
  }, null, 8, ["model-value", "format"])
506
508
  ], 2));
507
509
  }
508
- }), Ut = /* @__PURE__ */ N(Dt, [["__scopeId", "data-v-67cc5448"]]), Ie = [
510
+ }), Ut = /* @__PURE__ */ N(Dt, [["__scopeId", "data-v-67cc5448"]]), _e = [
509
511
  "#f97316",
510
512
  "#3b82f6",
511
513
  "#10b981",
@@ -532,7 +534,7 @@ function Vt(e, t = 140, a = 34) {
532
534
  startX: 1,
533
535
  endX: t - 1
534
536
  };
535
- const n = e.map((S) => Date.parse(S.Timestamp)), s = n[0], c = n[n.length - 1], l = c - s || 1, i = e.map((S) => S.AccountReturn), u = Math.min(0, ...i), g = Math.max(0, ...i) - u || 1, f = (S) => (S - s) / l * (t - 2) + 1, d = (S) => a - 2 - (S - u) / g * (a - 4), r = e.map((S, x) => `${f(n[x]).toFixed(1)},${d(S.AccountReturn).toFixed(1)}`), w = i[i.length - 1], I = d(0), _ = f(s), h = f(c), C = `M ${r.join(" L ")}`, V = `M ${r[0]} ` + r.slice(1).map((S) => `L ${S}`).join(" ") + ` L ${h.toFixed(1)},${I.toFixed(1)} L ${_.toFixed(1)},${I.toFixed(1)} Z`;
537
+ const n = e.map((S) => Date.parse(S.Timestamp)), s = n[0], c = n[n.length - 1], l = c - s || 1, o = e.map((S) => S.AccountReturn), u = Math.min(0, ...o), g = Math.max(0, ...o) - u || 1, f = (S) => (S - s) / l * (t - 2) + 1, d = (S) => a - 2 - (S - u) / g * (a - 4), r = e.map((S, x) => `${f(n[x]).toFixed(1)},${d(S.AccountReturn).toFixed(1)}`), w = o[o.length - 1], I = d(0), _ = f(s), h = f(c), C = `M ${r.join(" L ")}`, V = `M ${r[0]} ` + r.slice(1).map((S) => `L ${S}`).join(" ") + ` L ${h.toFixed(1)},${I.toFixed(1)} L ${_.toFixed(1)},${I.toFixed(1)} Z`;
536
538
  return {
537
539
  hasData: !0,
538
540
  width: t,
@@ -546,32 +548,32 @@ function Vt(e, t = 140, a = 34) {
546
548
  };
547
549
  }
548
550
  function Et(e, t = 520, a = 280) {
549
- const n = e.slice().sort((d, r) => (r.c || 0) - (d.c || 0)), s = n.reduce((d, r) => d + (r.c || 0), 0) || 1, c = t / 2, l = a / 2, i = 90, u = 52, m = i + 10;
551
+ const n = e.slice().sort((d, r) => (r.c || 0) - (d.c || 0)), s = n.reduce((d, r) => d + (r.c || 0), 0) || 1, c = t / 2, l = a / 2, o = 90, u = 52, m = o + 10;
550
552
  let g = -Math.PI / 2;
551
553
  const f = [];
552
554
  return n.forEach((d, r) => {
553
555
  const w = (d.c || 0) / s, I = w * Math.PI * 2, _ = g, h = g + I;
554
556
  g = h;
555
- const C = (_ + h) / 2, V = I > Math.PI ? 1 : 0, S = c + i * Math.cos(_), x = l + i * Math.sin(_), $ = c + i * Math.cos(h), M = l + i * Math.sin(h), T = c + u * Math.cos(_), Y = l + u * Math.sin(_), G = c + u * Math.cos(h), L = l + u * Math.sin(h), A = `M ${S.toFixed(2)} ${x.toFixed(2)} A ${i} ${i} 0 ${V} 1 ${$.toFixed(2)} ${M.toFixed(2)} L ${G.toFixed(2)} ${L.toFixed(2)} A ${u} ${u} 0 ${V} 0 ${T.toFixed(2)} ${Y.toFixed(2)} Z`, Ae = Ie[r % Ie.length];
556
- let me = null, fe = 0, ve = 0, pe = "start";
557
+ const C = (_ + h) / 2, V = I > Math.PI ? 1 : 0, S = c + o * Math.cos(_), x = l + o * Math.sin(_), $ = c + o * Math.cos(h), M = l + o * Math.sin(h), T = c + u * Math.cos(_), Y = l + u * Math.sin(_), z = c + u * Math.cos(h), L = l + u * Math.sin(h), A = `M ${S.toFixed(2)} ${x.toFixed(2)} A ${o} ${o} 0 ${V} 1 ${$.toFixed(2)} ${M.toFixed(2)} L ${z.toFixed(2)} ${L.toFixed(2)} A ${u} ${u} 0 ${V} 0 ${T.toFixed(2)} ${Y.toFixed(2)} Z`, Fe = _e[r % _e.length];
558
+ let fe = null, ve = 0, pe = 0, ge = "start";
557
559
  if (w >= 0.015) {
558
- const Q = Math.cos(C) < 0, Fe = c + i * Math.cos(C), Ne = l + i * Math.sin(C), X = c + m * Math.cos(C), ee = l + m * Math.sin(C), Le = Q ? X - 4 : X + 4;
559
- me = `${Fe.toFixed(1)},${Ne.toFixed(1)} ${X.toFixed(1)},${ee.toFixed(1)} ${Le.toFixed(1)},${ee.toFixed(1)}`, fe = Q ? X - 6 : X + 6, ve = ee + 4, pe = Q ? "end" : "start";
560
+ const Q = Math.cos(C) < 0, Ne = c + o * Math.cos(C), Le = l + o * Math.sin(C), X = c + m * Math.cos(C), ee = l + m * Math.sin(C), De = Q ? X - 4 : X + 4;
561
+ fe = `${Ne.toFixed(1)},${Le.toFixed(1)} ${X.toFixed(1)},${ee.toFixed(1)} ${De.toFixed(1)},${ee.toFixed(1)}`, ve = Q ? X - 6 : X + 6, pe = ee + 4, ge = Q ? "end" : "start";
560
562
  }
561
563
  f.push({
562
564
  marketName: d.n,
563
565
  count: d.c,
564
566
  fraction: w,
565
- color: Ae,
567
+ color: Fe,
566
568
  arcPath: A,
567
- labelLine: me,
568
- labelX: fe,
569
- labelY: ve,
570
- labelAnchor: pe
569
+ labelLine: fe,
570
+ labelX: ve,
571
+ labelY: pe,
572
+ labelAnchor: ge
571
573
  });
572
- }), { width: t, height: a, cx: c, cy: l, outerR: i, innerR: u, slices: f };
574
+ }), { width: t, height: a, cx: c, cy: l, outerR: o, innerR: u, slices: f };
573
575
  }
574
- const Bt = ["width", "height"], Ot = ["width", "height", "viewBox"], Kt = ["x2", "y1", "y2"], Yt = ["d", "fill"], Gt = ["d", "stroke"], zt = /* @__PURE__ */ F({
576
+ const Bt = ["width", "height"], Ot = ["width", "height", "viewBox"], Kt = ["x2", "y1", "y2"], Yt = ["d", "fill"], zt = ["d", "stroke"], Gt = /* @__PURE__ */ F({
575
577
  __name: "Sparkline",
576
578
  props: {
577
579
  history: {},
@@ -590,7 +592,7 @@ const Bt = ["width", "height"], Ot = ["width", "height", "viewBox"], Kt = ["x2",
590
592
  role: "img",
591
593
  "aria-label": "Equity curve"
592
594
  }, [
593
- o("line", {
595
+ i("line", {
594
596
  x1: "0",
595
597
  x2: a.value.width,
596
598
  y1: a.value.zeroY,
@@ -600,12 +602,12 @@ const Bt = ["width", "height"], Ot = ["width", "height", "viewBox"], Kt = ["x2",
600
602
  "stroke-width": "1",
601
603
  "vector-effect": "non-scaling-stroke"
602
604
  }, null, 8, Kt),
603
- o("path", {
605
+ i("path", {
604
606
  d: a.value.areaPath,
605
607
  fill: a.value.positive ? "var(--area-green)" : "var(--area-red)",
606
608
  stroke: "none"
607
609
  }, null, 8, Yt),
608
- o("path", {
610
+ i("path", {
609
611
  d: a.value.linePath,
610
612
  fill: "none",
611
613
  stroke: a.value.positive ? "var(--green)" : "var(--red)",
@@ -613,7 +615,7 @@ const Bt = ["width", "height"], Ot = ["width", "height", "viewBox"], Kt = ["x2",
613
615
  "stroke-linejoin": "round",
614
616
  "stroke-linecap": "round",
615
617
  "vector-effect": "non-scaling-stroke"
616
- }, null, 8, Gt)
618
+ }, null, 8, zt)
617
619
  ], 8, Ot)) : (p(), y("svg", {
618
620
  key: 0,
619
621
  class: "pelican-spark",
@@ -622,7 +624,7 @@ const Bt = ["width", "height"], Ot = ["width", "height", "viewBox"], Kt = ["x2",
622
624
  role: "img",
623
625
  "aria-label": "No equity data"
624
626
  }, [...s[0] || (s[0] = [
625
- o("text", {
627
+ i("text", {
626
628
  x: "2",
627
629
  y: "20",
628
630
  "font-size": "11",
@@ -630,7 +632,7 @@ const Bt = ["width", "height"], Ot = ["width", "height", "viewBox"], Kt = ["x2",
630
632
  }, "no data", -1)
631
633
  ])], 8, Bt));
632
634
  }
633
- }), Ht = /* @__PURE__ */ N(zt, [["__scopeId", "data-v-a9b85847"]]), jt = {
635
+ }), Ht = /* @__PURE__ */ N(Gt, [["__scopeId", "data-v-a9b85847"]]), jt = {
634
636
  key: 0,
635
637
  class: "dim"
636
638
  }, Wt = ["viewBox"], qt = ["d", "fill"], Xt = ["points", "stroke"], Zt = ["x", "y", "text-anchor"], Jt = {
@@ -654,7 +656,7 @@ const Bt = ["width", "height"], Ot = ["width", "height", "viewBox"], Kt = ["x2",
654
656
  role: "img",
655
657
  "aria-label": "Markets donut chart"
656
658
  }, [
657
- o("g", null, [
659
+ i("g", null, [
658
660
  (p(!0), y(U, null, K(n.value.slices, (l) => (p(), y("path", {
659
661
  key: l.marketName + l.fraction,
660
662
  d: l.arcPath,
@@ -663,19 +665,19 @@ const Bt = ["width", "height"], Ot = ["width", "height", "viewBox"], Kt = ["x2",
663
665
  "stroke-width": "1.5"
664
666
  }, null, 8, qt))), 128))
665
667
  ]),
666
- o("g", null, [
667
- (p(!0), y(U, null, K(n.value.slices, (l) => ge((p(), y("polyline", {
668
+ i("g", null, [
669
+ (p(!0), y(U, null, K(n.value.slices, (l) => he((p(), y("polyline", {
668
670
  key: `l-${l.marketName}`,
669
671
  points: l.labelLine ?? "",
670
672
  stroke: l.color,
671
673
  "stroke-width": "1",
672
674
  fill: "none"
673
675
  }, null, 8, Xt)), [
674
- [he, l.labelLine]
676
+ [ye, l.labelLine]
675
677
  ])), 128))
676
678
  ]),
677
- o("g", null, [
678
- (p(!0), y(U, null, K(n.value.slices, (l) => ge((p(), y("text", {
679
+ i("g", null, [
680
+ (p(!0), y(U, null, K(n.value.slices, (l) => he((p(), y("text", {
679
681
  key: `t-${l.marketName}`,
680
682
  x: l.labelX,
681
683
  y: l.labelY,
@@ -685,9 +687,9 @@ const Bt = ["width", "height"], Ot = ["width", "height", "viewBox"], Kt = ["x2",
685
687
  "font-weight": "500"
686
688
  }, [
687
689
  D(b(l.marketName) + " ", 1),
688
- o("tspan", Jt, b(l.count), 1)
690
+ i("tspan", Jt, b(l.count), 1)
689
691
  ], 8, Zt)), [
690
- [he, l.labelLine]
692
+ [ye, l.labelLine]
691
693
  ])), 128))
692
694
  ])
693
695
  ], 8, Wt));
@@ -714,17 +716,17 @@ const Bt = ["width", "height"], Ot = ["width", "height", "viewBox"], Kt = ["x2",
714
716
  () => !t.loading && (t.trades == null || t.trades.length === 0)
715
717
  );
716
718
  return (s, c) => (p(), y("div", ta, [
717
- o("div", aa, b(a.value), 1),
719
+ i("div", aa, b(a.value), 1),
718
720
  e.loading ? (p(), y("div", na, "Loading…")) : n.value ? (p(), y("div", la, "No trades.")) : (p(), y("ul", sa, [
719
- (p(!0), y(U, null, K(e.trades ?? [], (l, i) => (p(), y("li", { key: i }, [
720
- o("span", oa, b(l.MarketName ?? "—"), 1),
721
- o("span", {
721
+ (p(!0), y(U, null, K(e.trades ?? [], (l, o) => (p(), y("li", { key: o }, [
722
+ i("span", oa, b(l.MarketName ?? "—"), 1),
723
+ i("span", {
722
724
  class: B(["dir", l.Direction === "Sell" ? "red" : "green"])
723
725
  }, b(l.Direction ?? ""), 3),
724
- o("span", ia, [
725
- D(b(v($e)(l.OpenTimestamp, e.locale)) + " ", 1),
726
+ i("span", ia, [
727
+ D(b(v(ke)(l.OpenTimestamp, e.locale)) + " ", 1),
726
728
  l.CloseTimestamp ? (p(), y(U, { key: 0 }, [
727
- D(" → " + b(v($e)(l.CloseTimestamp, e.locale)), 1)
729
+ D(" → " + b(v(ke)(l.CloseTimestamp, e.locale)), 1)
728
730
  ], 64)) : O("", !0)
729
731
  ]),
730
732
  l.Pnl != null ? (p(), y("span", {
@@ -735,12 +737,12 @@ const Bt = ["width", "height"], Ot = ["width", "height", "viewBox"], Kt = ["x2",
735
737
  ]))
736
738
  ]));
737
739
  }
738
- }), _e = /* @__PURE__ */ N(ra, [["__scopeId", "data-v-aa7cbcd7"]]);
740
+ }), Se = /* @__PURE__ */ N(ra, [["__scopeId", "data-v-aa7cbcd7"]]);
739
741
  function W(e) {
740
742
  const t = e.Wins ?? 0, a = e.Losses ?? 0, n = t + a;
741
743
  return n ? t / n * 100 : -1;
742
744
  }
743
- const ua = Symbol("pelican.apiBase"), ca = Symbol("pelican.catalogBase"), Ce = Symbol("pelican.locale"), da = ["data-id"], ma = { class: "name" }, fa = { class: "avatar" }, va = { class: "avatar-fallback" }, pa = ["src"], ga = { class: "nm" }, ha = { class: "title" }, ya = {
745
+ const ua = Symbol("pelican.apiBase"), ca = Symbol("pelican.catalogBase"), Te = Symbol("pelican.locale"), da = ["data-id"], ma = { class: "name" }, fa = { class: "avatar" }, va = { class: "avatar-fallback" }, pa = ["src"], ga = { class: "nm" }, ha = { class: "title" }, ya = {
744
746
  key: 0,
745
747
  class: "free-badge"
746
748
  }, Ma = { class: "by" }, ba = {
@@ -767,7 +769,7 @@ const ua = Symbol("pelican.apiBase"), ca = Symbol("pelican.catalogBase"), Ce = S
767
769
  }, Pa = {
768
770
  class: "c-num",
769
771
  "data-label": "Fee"
770
- }, Ca = ["href"], Ta = { class: "grid" }, Aa = { class: "col-stats" }, Fa = { class: "field" }, Na = { class: "value" }, La = { class: "field" }, Da = { class: "value" }, Ua = { class: "field" }, Va = { class: "value" }, Ea = { class: "field" }, Ba = { class: "value" }, Oa = { class: "field" }, Ka = { class: "value" }, Ya = { class: "field" }, Ga = { class: "value" }, za = { class: "field" }, Ha = { class: "value" }, ja = { class: "field" }, Wa = { class: "value" }, qa = { key: 0 }, Xa = {
772
+ }, Ca = ["href"], Ta = { class: "grid" }, Aa = { class: "col-stats" }, Fa = { class: "field" }, Na = { class: "value" }, La = { class: "field" }, Da = { class: "value" }, Ua = { class: "field" }, Va = { class: "value" }, Ea = { class: "field" }, Ba = { class: "value" }, Oa = { class: "field" }, Ka = { class: "value" }, Ya = { class: "field" }, za = { class: "value" }, Ga = { class: "field" }, Ha = { class: "value" }, ja = { class: "field" }, Wa = { class: "value" }, qa = { key: 0 }, Xa = {
771
773
  key: 1,
772
774
  class: "dim"
773
775
  }, Za = { class: "col-donut" }, Ja = { class: "trade-toggles" }, Qa = /* @__PURE__ */ F({
@@ -780,7 +782,7 @@ const ua = Symbol("pelican.apiBase"), ca = Symbol("pelican.catalogBase"), Ce = S
780
782
  },
781
783
  emits: ["toggle", "load-trades", "select"],
782
784
  setup(e, { emit: t }) {
783
- const a = e, n = t, s = De(Ce, "en-US"), c = k(() => be(a.s.Return, 1)), l = k(() => a.s.MaxDD != null ? be(a.s.MaxDD, 2) : null), i = k(() => j(a.s.Inception)), u = k(() => W(a.s)), m = k(() => u.value >= 0 ? 100 - u.value : -1), g = k(
785
+ const a = e, n = t, s = Ue(Te, "en-US"), c = k(() => xe(a.s.Return, 1)), l = k(() => a.s.MaxDD != null ? xe(a.s.MaxDD, 2) : null), o = k(() => j(a.s.Inception)), u = k(() => W(a.s)), m = k(() => u.value >= 0 ? 100 - u.value : -1), g = k(
784
786
  () => {
785
787
  var _, h;
786
788
  return ((_ = a.s.Profile) == null ? void 0 : _.Name) ?? ((h = a.s.Profile) != null && h.Id ? "#" + a.s.Profile.Id : "");
@@ -795,14 +797,14 @@ const ua = Symbol("pelican.apiBase"), ca = Symbol("pelican.catalogBase"), Ce = S
795
797
  return (_, h) => {
796
798
  var C, V, S, x;
797
799
  return p(), y(U, null, [
798
- o("div", {
800
+ i("div", {
799
801
  class: B(["pelican-row", { open: e.expanded }]),
800
802
  "data-id": e.s.Id,
801
803
  onClick: h[3] || (h[3] = ($) => n("toggle"))
802
804
  }, [
803
- o("div", ma, [
804
- o("div", fa, [
805
- o("span", va, b(v(Rt)(e.s.Name)), 1),
805
+ i("div", ma, [
806
+ i("div", fa, [
807
+ i("span", va, b(v(Rt)(e.s.Name)), 1),
806
808
  e.s.ImageUploaded ? (p(), y("img", {
807
809
  key: 0,
808
810
  class: "avatar-img",
@@ -813,42 +815,42 @@ const ua = Symbol("pelican.apiBase"), ca = Symbol("pelican.catalogBase"), Ce = S
813
815
  onError: h[0] || (h[0] = ($) => $.target.remove())
814
816
  }, null, 40, pa)) : O("", !0)
815
817
  ]),
816
- o("div", ga, [
817
- o("div", ha, [
818
+ i("div", ga, [
819
+ i("div", ha, [
818
820
  D(b(e.s.Name || "#" + e.s.Id) + " ", 1),
819
821
  e.s._meta && e.s.Fee == null ? (p(), y("span", ya, "free")) : O("", !0)
820
822
  ]),
821
- o("div", Ma, b(g.value), 1)
823
+ i("div", Ma, b(g.value), 1)
822
824
  ])
823
825
  ]),
824
- o("div", ba, [
826
+ i("div", ba, [
825
827
  P(Ht, {
826
828
  history: e.s.History
827
829
  }, null, 8, ["history"])
828
830
  ]),
829
- o("div", xa, [
831
+ i("div", xa, [
830
832
  c.value ? (p(), y("span", {
831
833
  key: 0,
832
834
  class: B(c.value.positive ? "green" : "red")
833
835
  }, b(c.value.text), 3)) : (p(), y("span", wa, "—"))
834
836
  ]),
835
- o("div", $a, b(v(we)(e.s.NumCopiers, v(s))), 1),
836
- o("div", ka, b(v(xe)(e.s.CopiersAUM, v(s))), 1),
837
- o("div", Ia, [
837
+ i("div", $a, b(v($e)(e.s.NumCopiers, v(s))), 1),
838
+ i("div", ka, b(v(we)(e.s.CopiersAUM, v(s))), 1),
839
+ i("div", Ia, [
838
840
  l.value ? (p(), y("span", {
839
841
  key: 0,
840
842
  class: B(l.value.positive ? "green" : "red")
841
843
  }, b(l.value.text), 3)) : (p(), y("span", _a, "—"))
842
844
  ]),
843
- o("div", Sa, b(v(_t)(i.value)), 1),
844
- o("div", Ra, b(v(xe)(e.s.AccountBalance, v(s))), 1),
845
- o("div", Pa, b(v(It)(e.s)), 1),
846
- o("div", {
845
+ i("div", Sa, b(v(_t)(o.value)), 1),
846
+ i("div", Ra, b(v(we)(e.s.AccountBalance, v(s))), 1),
847
+ i("div", Pa, b(v(It)(e.s)), 1),
848
+ i("div", {
847
849
  class: "c-link",
848
850
  onClick: h[2] || (h[2] = te(() => {
849
851
  }, ["stop"]))
850
852
  }, [
851
- o("a", {
853
+ i("a", {
852
854
  class: "signal-link",
853
855
  href: f.value,
854
856
  target: "_blank",
@@ -865,70 +867,70 @@ const ua = Symbol("pelican.apiBase"), ca = Symbol("pelican.catalogBase"), Ce = S
865
867
  onClick: h[4] || (h[4] = te(() => {
866
868
  }, ["stop"]))
867
869
  }, [
868
- o("div", Ta, [
869
- o("div", Aa, [
870
- o("div", Fa, [
871
- h[5] || (h[5] = o("div", { class: "label" }, "Currency", -1)),
872
- o("div", Na, b(e.s.Currency ?? "USD"), 1)
870
+ i("div", Ta, [
871
+ i("div", Aa, [
872
+ i("div", Fa, [
873
+ h[5] || (h[5] = i("div", { class: "label" }, "Currency", -1)),
874
+ i("div", Na, b(e.s.Currency ?? "USD"), 1)
873
875
  ]),
874
- o("div", La, [
875
- h[6] || (h[6] = o("div", { class: "label" }, "Monthly profit", -1)),
876
- o("div", Da, b(v(H)(e.s.MonthlyProfit, v(s))), 1)
876
+ i("div", La, [
877
+ h[6] || (h[6] = i("div", { class: "label" }, "Monthly profit", -1)),
878
+ i("div", Da, b(v(H)(e.s.MonthlyProfit, v(s))), 1)
877
879
  ]),
878
- o("div", Ua, [
879
- h[7] || (h[7] = o("div", { class: "label" }, "Yearly profit", -1)),
880
- o("div", Va, b(v(H)(e.s.YearlyProfit, v(s))), 1)
880
+ i("div", Ua, [
881
+ h[7] || (h[7] = i("div", { class: "label" }, "Yearly profit", -1)),
882
+ i("div", Va, b(v(H)(e.s.YearlyProfit, v(s))), 1)
881
883
  ]),
882
- o("div", Ea, [
883
- h[8] || (h[8] = o("div", { class: "label" }, "Balance", -1)),
884
- o("div", Ba, b(v(H)(e.s.AccountBalance, v(s))), 1)
884
+ i("div", Ea, [
885
+ h[8] || (h[8] = i("div", { class: "label" }, "Balance", -1)),
886
+ i("div", Ba, b(v(H)(e.s.AccountBalance, v(s))), 1)
885
887
  ]),
886
- o("div", Oa, [
887
- h[9] || (h[9] = o("div", { class: "label" }, "Realized P/L", -1)),
888
- o("div", Ka, b(v(H)(e.s.RealisedPnl, v(s))), 1)
888
+ i("div", Oa, [
889
+ h[9] || (h[9] = i("div", { class: "label" }, "Realized P/L", -1)),
890
+ i("div", Ka, b(v(H)(e.s.RealisedPnl, v(s))), 1)
889
891
  ]),
890
- o("div", Ya, [
891
- h[10] || (h[10] = o("div", { class: "label" }, "Unrealized P/L", -1)),
892
- o("div", Ga, b(v(H)(e.s.UnrealisedPnl, v(s))), 1)
892
+ i("div", Ya, [
893
+ h[10] || (h[10] = i("div", { class: "label" }, "Unrealized P/L", -1)),
894
+ i("div", za, b(v(H)(e.s.UnrealisedPnl, v(s))), 1)
893
895
  ]),
894
- o("div", za, [
895
- h[11] || (h[11] = o("div", { class: "label" }, "Trades total", -1)),
896
- o("div", Ha, b(v(we)(e.s.TradesTotal, v(s))), 1)
896
+ i("div", Ga, [
897
+ h[11] || (h[11] = i("div", { class: "label" }, "Trades total", -1)),
898
+ i("div", Ha, b(v($e)(e.s.TradesTotal, v(s))), 1)
897
899
  ]),
898
- o("div", ja, [
899
- h[12] || (h[12] = o("div", { class: "label" }, "Win rate", -1)),
900
- o("div", Wa, [
900
+ i("div", ja, [
901
+ h[12] || (h[12] = i("div", { class: "label" }, "Win rate", -1)),
902
+ i("div", Wa, [
901
903
  u.value >= 0 ? (p(), y("span", qa, b(u.value.toFixed(1)) + "% / " + b(m.value.toFixed(1)) + "%", 1)) : (p(), y("span", Xa, "—"))
902
904
  ])
903
905
  ])
904
906
  ]),
905
- o("div", Za, [
906
- h[13] || (h[13] = o("div", { class: "hd" }, "Markets", -1)),
907
+ i("div", Za, [
908
+ h[13] || (h[13] = i("div", { class: "hd" }, "Markets", -1)),
907
909
  P(ea, {
908
910
  markets: e.s.Markets
909
911
  }, null, 8, ["markets"])
910
912
  ])
911
913
  ]),
912
- o("div", Ja, [
913
- o("button", {
914
+ i("div", Ja, [
915
+ i("button", {
914
916
  class: B(["pill", { on: d.value }]),
915
917
  type: "button",
916
918
  onClick: w
917
919
  }, b(d.value ? "Hide" : "Open Trades"), 3),
918
- o("button", {
920
+ i("button", {
919
921
  class: B(["pill", { on: r.value }]),
920
922
  type: "button",
921
923
  onClick: I
922
924
  }, b(r.value ? "Hide" : "Trade History"), 3)
923
925
  ]),
924
- d.value ? (p(), ie(_e, {
926
+ d.value ? (p(), re(Se, {
925
927
  key: 0,
926
928
  kind: "open",
927
929
  trades: ((C = e.openTrades) == null ? void 0 : C.trades) ?? null,
928
930
  loading: !!((V = e.openTrades) != null && V.loading),
929
931
  locale: v(s)
930
932
  }, null, 8, ["trades", "loading", "locale"])) : O("", !0),
931
- r.value ? (p(), ie(_e, {
933
+ r.value ? (p(), re(Se, {
932
934
  key: 1,
933
935
  kind: "closed",
934
936
  trades: ((S = e.closedTrades) == null ? void 0 : S.trades) ?? null,
@@ -959,13 +961,13 @@ const ua = Symbol("pelican.apiBase"), ca = Symbol("pelican.catalogBase"), Ce = S
959
961
  n("go", l);
960
962
  }
961
963
  function c(l) {
962
- const i = parseInt(l.target.value, 10);
963
- isNaN(i) || n("go", i);
964
+ const o = parseInt(l.target.value, 10);
965
+ isNaN(o) || n("go", o);
964
966
  }
965
- return (l, i) => a.totalPages > 1 ? (p(), y("nav", tn, [
966
- o("button", {
967
+ return (l, o) => a.totalPages > 1 ? (p(), y("nav", tn, [
968
+ i("button", {
967
969
  disabled: e.page <= 1,
968
- onClick: i[0] || (i[0] = (u) => s("prev"))
970
+ onClick: o[0] || (o[0] = (u) => s("prev"))
969
971
  }, "‹ prev", 8, an),
970
972
  (p(!0), y(U, null, K(e.range, (u, m) => (p(), y(U, { key: m }, [
971
973
  u === "…" ? (p(), y("span", nn, "…")) : (p(), y("button", {
@@ -974,13 +976,13 @@ const ua = Symbol("pelican.apiBase"), ca = Symbol("pelican.catalogBase"), Ce = S
974
976
  onClick: (g) => s(u)
975
977
  }, b(u), 11, ln))
976
978
  ], 64))), 128)),
977
- o("button", {
979
+ i("button", {
978
980
  disabled: e.page >= e.totalPages,
979
- onClick: i[1] || (i[1] = (u) => s("next"))
981
+ onClick: o[1] || (o[1] = (u) => s("next"))
980
982
  }, "next ›", 8, sn),
981
- o("span", on, [
982
- i[2] || (i[2] = D(" go to ", -1)),
983
- o("input", {
983
+ i("span", on, [
984
+ o[2] || (o[2] = D(" go to ", -1)),
985
+ i("input", {
984
986
  type: "number",
985
987
  min: 1,
986
988
  max: e.totalPages,
@@ -1019,22 +1021,22 @@ const ua = Symbol("pelican.apiBase"), ca = Symbol("pelican.catalogBase"), Ce = S
1019
1021
  function c(l) {
1020
1022
  return a.sortKey === `${l}-asc` ? "active-asc" : a.sortKey === `${l}-desc` ? "active-desc" : "";
1021
1023
  }
1022
- return (l, i) => (p(), y("section", dn, [
1023
- o("div", mn, [
1024
- i[1] || (i[1] = o("div", null, "Name", -1)),
1025
- i[2] || (i[2] = o("div", null, "Equity curve", -1)),
1026
- (p(), y(U, null, K(s, (u) => o("div", {
1024
+ return (l, o) => (p(), y("section", dn, [
1025
+ i("div", mn, [
1026
+ o[1] || (o[1] = i("div", null, "Name", -1)),
1027
+ o[2] || (o[2] = i("div", null, "Equity curve", -1)),
1028
+ (p(), y(U, null, K(s, (u) => i("div", {
1027
1029
  key: u.key,
1028
1030
  class: B(["c-num sortable", c(u.key)]),
1029
1031
  onClick: (m) => n("toggle-sort", u.key)
1030
1032
  }, b(u.label), 11, fn)), 64)),
1031
- i[3] || (i[3] = o("div", null, null, -1))
1033
+ o[3] || (o[3] = i("div", null, null, -1))
1032
1034
  ]),
1033
1035
  e.pageItems.length === 0 ? (p(), y("div", vn, [
1034
1036
  q(l.$slots, "empty", {}, () => [
1035
- i[4] || (i[4] = D("No matches.", -1))
1037
+ o[4] || (o[4] = D("No matches.", -1))
1036
1038
  ], !0)
1037
- ])) : (p(!0), y(U, { key: 1 }, K(e.pageItems, (u) => (p(), ie(en, {
1039
+ ])) : (p(!0), y(U, { key: 1 }, K(e.pageItems, (u) => (p(), re(en, {
1038
1040
  key: u.Id,
1039
1041
  s: u,
1040
1042
  expanded: e.expanded.has(u.Id),
@@ -1044,8 +1046,8 @@ const ua = Symbol("pelican.apiBase"), ca = Symbol("pelican.catalogBase"), Ce = S
1044
1046
  onLoadTrades: (m) => n("load-trades", { id: u.Id, kind: m }),
1045
1047
  onSelect: (m) => n("select", u)
1046
1048
  }, {
1047
- "row-actions": re((m) => [
1048
- q(l.$slots, "row-actions", Ue({ ref_for: !0 }, m), void 0, !0)
1049
+ "row-actions": ue((m) => [
1050
+ q(l.$slots, "row-actions", Ve({ ref_for: !0 }, m), void 0, !0)
1049
1051
  ]),
1050
1052
  _: 3
1051
1053
  }, 8, ["s", "expanded", "open-trades", "closed-trades", "onToggle", "onLoadTrades", "onSelect"]))), 128)),
@@ -1053,7 +1055,7 @@ const ua = Symbol("pelican.apiBase"), ca = Symbol("pelican.catalogBase"), Ce = S
1053
1055
  page: e.page,
1054
1056
  "total-pages": e.totalPages,
1055
1057
  range: e.pageRange,
1056
- onGo: i[0] || (i[0] = (u) => n("go", u))
1058
+ onGo: o[0] || (o[0] = (u) => n("go", u))
1057
1059
  }, null, 8, ["page", "total-pages", "range"])
1058
1060
  ]));
1059
1061
  }
@@ -1072,21 +1074,21 @@ const ua = Symbol("pelican.apiBase"), ca = Symbol("pelican.catalogBase"), Ce = S
1072
1074
  () => t.total > 0 ? Math.min(100, t.loaded / t.total * 100) : 0
1073
1075
  );
1074
1076
  return (n, s) => e.active ? (p(), y("div", hn, [
1075
- o("div", yn, [
1076
- o("span", {
1077
- style: Ve({ width: a.value.toFixed(1) + "%" })
1077
+ i("div", yn, [
1078
+ i("span", {
1079
+ style: ie({ width: a.value.toFixed(1) + "%" })
1078
1080
  }, null, 4)
1079
1081
  ]),
1080
- o("div", Mn, [
1082
+ i("div", Mn, [
1081
1083
  s[0] || (s[0] = D(" Building full catalog: ", -1)),
1082
- o("b", null, b(e.loaded.toLocaleString("en-US")), 1),
1084
+ i("b", null, b(e.loaded.toLocaleString("en-US")), 1),
1083
1085
  D(" / " + b(e.total.toLocaleString("en-US")) + " strategies (" + b(a.value.toFixed(0)) + "%) · ", 1),
1084
- s[1] || (s[1] = o("i", null, "upstream rate-limited", -1))
1086
+ s[1] || (s[1] = i("i", null, "upstream rate-limited", -1))
1085
1087
  ]),
1086
- o("div", bn, " All " + b(e.total.toLocaleString("en-US")) + " strategies are visible. Stats fill in as the build progresses; refresh of data every 20 sec. ", 1)
1088
+ i("div", bn, " All " + b(e.total.toLocaleString("en-US")) + " strategies are visible. Stats fill in as the build progresses; refresh of data every 20 sec. ", 1)
1087
1089
  ])) : O("", !0);
1088
1090
  }
1089
- }), wn = /* @__PURE__ */ N(xn, [["__scopeId", "data-v-8767a909"]]), Te = "pelican-theme";
1091
+ }), wn = /* @__PURE__ */ N(xn, [["__scopeId", "data-v-8767a909"]]), Ae = "pelican-theme";
1090
1092
  function $n(e = "auto") {
1091
1093
  const t = kn(), a = R(t ?? e), n = R("dark"), s = typeof window < "u" && window.matchMedia ? window.matchMedia("(prefers-color-scheme: dark)") : null, c = () => {
1092
1094
  const m = a.value;
@@ -1096,24 +1098,24 @@ function $n(e = "auto") {
1096
1098
  };
1097
1099
  s && (s.addEventListener ? s.addEventListener("change", l) : s.addListener(l)), E(a, (m) => {
1098
1100
  try {
1099
- localStorage.setItem(Te, m);
1101
+ localStorage.setItem(Ae, m);
1100
1102
  } catch {
1101
1103
  }
1102
1104
  c();
1103
- }), c(), de(() => {
1105
+ }), c(), me(() => {
1104
1106
  s && (s.removeEventListener ? s.removeEventListener("change", l) : s.removeListener(l));
1105
1107
  });
1106
- function i(m) {
1108
+ function o(m) {
1107
1109
  a.value = m;
1108
1110
  }
1109
1111
  function u() {
1110
1112
  a.value = a.value === "dark" ? "light" : a.value === "light" ? "auto" : "dark";
1111
1113
  }
1112
- return { mode: a, resolved: n, setMode: i, cycle: u };
1114
+ return { mode: a, resolved: n, setMode: o, cycle: u };
1113
1115
  }
1114
1116
  function kn() {
1115
1117
  try {
1116
- const e = localStorage.getItem(Te);
1118
+ const e = localStorage.getItem(Ae);
1117
1119
  return e === "dark" || e === "light" || e === "auto" ? e : null;
1118
1120
  } catch {
1119
1121
  return null;
@@ -1145,7 +1147,7 @@ function J(e, t) {
1145
1147
  return a + n;
1146
1148
  }
1147
1149
  function In({ apiBase: e, catalogBase: t, onError: a }) {
1148
- const n = Ee(/* @__PURE__ */ new Map()), s = R(!1), c = R(!1), l = R(0), i = R(0), u = R(null), m = k(() => Array.from(n.value.values()));
1150
+ const n = Ee(/* @__PURE__ */ new Map()), s = R(!1), c = R(!1), l = R(0), o = R(0), u = R(null), m = k(() => Array.from(n.value.values()));
1149
1151
  let g = !1;
1150
1152
  const f = (M) => {
1151
1153
  a ? a(M) : console.warn("[pelican-vue]", M);
@@ -1156,9 +1158,9 @@ function In({ apiBase: e, catalogBase: t, onError: a }) {
1156
1158
  async function w(M) {
1157
1159
  try {
1158
1160
  const Y = await oe(M ? "/api/strategies-full?partial=1" : "/api/strategies-full", r());
1159
- i.value = Y.length;
1160
- const G = n.value;
1161
- for (const L of Y) G.set(L.Id, { ...G.get(L.Id), ...L });
1161
+ o.value = Y.length;
1162
+ const z = n.value;
1163
+ for (const L of Y) z.set(L.Id, { ...z.get(L.Id), ...L });
1162
1164
  ae(n);
1163
1165
  } catch (T) {
1164
1166
  f(T);
@@ -1167,7 +1169,7 @@ function In({ apiBase: e, catalogBase: t, onError: a }) {
1167
1169
  async function I() {
1168
1170
  try {
1169
1171
  const M = await oe("/api/strategies-full/progress", r());
1170
- return l.value = M.loaded, i.value = M.total || i.value, c.value = M.building, u.value = M.built_at, M;
1172
+ return l.value = M.loaded, o.value = M.total || o.value, c.value = M.building, u.value = M.built_at, M;
1171
1173
  } catch (M) {
1172
1174
  return f(M), null;
1173
1175
  }
@@ -1182,11 +1184,11 @@ function In({ apiBase: e, catalogBase: t, onError: a }) {
1182
1184
  for (; !g; ) {
1183
1185
  const T = await I();
1184
1186
  if (!T) {
1185
- await Re(1500);
1187
+ await Pe(1500);
1186
1188
  continue;
1187
1189
  }
1188
1190
  if (T.ready) break;
1189
- Date.now() - M > je && (await w(!0), M = Date.now()), await Re(He);
1191
+ Date.now() - M > je && (await w(!0), M = Date.now()), await Pe(He);
1190
1192
  }
1191
1193
  g || (await w(!1), s.value = !0);
1192
1194
  }
@@ -1197,11 +1199,11 @@ function In({ apiBase: e, catalogBase: t, onError: a }) {
1197
1199
  if (!(T != null && T._enrichAttempted && T._meta && T._stats)) {
1198
1200
  h.add(M);
1199
1201
  try {
1200
- const [Y, G] = await Promise.all([
1201
- Se(J(e.value, `/api/strategies/${M}`)),
1202
- Se(J(e.value, `/api/strategies/${M}/stats`))
1202
+ const [Y, z] = await Promise.all([
1203
+ Re(J(e.value, `/api/strategies/${M}`)),
1204
+ Re(J(e.value, `/api/strategies/${M}/stats`))
1203
1205
  ]), L = n.value, A = L.get(M) ?? { Id: M };
1204
- _n(A, Y), Sn(A, G), A._enrichAttempted = !0, A.IsEnabled === !1 ? L.delete(M) : L.set(M, A), ae(n);
1206
+ _n(A, Y), Sn(A, z), A._enrichAttempted = !0, A.IsEnabled === !1 ? L.delete(M) : L.set(M, A), ae(n);
1205
1207
  } finally {
1206
1208
  h.delete(M);
1207
1209
  }
@@ -1213,12 +1215,12 @@ function In({ apiBase: e, catalogBase: t, onError: a }) {
1213
1215
  const T = await oe(
1214
1216
  `/api/strategies?filter=${encodeURIComponent(M)}`,
1215
1217
  e.value
1216
- ), Y = n.value, G = [];
1218
+ ), Y = n.value, z = [];
1217
1219
  let L = 0;
1218
1220
  for (const A of T)
1219
- Y.has(A.Id) || (Y.set(A.Id, { ...A, _stats: !1, _meta: !1 }), G.push(A.Id), L++);
1220
- L && (i.value += L, ae(n));
1221
- for (const A of G) C(A);
1221
+ Y.has(A.Id) || (Y.set(A.Id, { ...A, _stats: !1, _meta: !1 }), z.push(A.Id), L++);
1222
+ L && (o.value += L, ae(n));
1223
+ for (const A of z) C(A);
1222
1224
  } catch (T) {
1223
1225
  f(T);
1224
1226
  }
@@ -1230,14 +1232,14 @@ function In({ apiBase: e, catalogBase: t, onError: a }) {
1230
1232
  g = !0;
1231
1233
  }
1232
1234
  async function $() {
1233
- x(), n.value = /* @__PURE__ */ new Map(), s.value = !1, l.value = 0, i.value = 0, u.value = null, S();
1235
+ x(), n.value = /* @__PURE__ */ new Map(), s.value = !1, l.value = 0, o.value = 0, u.value = null, S();
1234
1236
  }
1235
- return de(x), {
1237
+ return me(x), {
1236
1238
  catalog: m,
1237
1239
  ready: s,
1238
1240
  building: c,
1239
1241
  loaded: l,
1240
- total: i,
1242
+ total: o,
1241
1243
  builtAt: u,
1242
1244
  enrichOne: C,
1243
1245
  searchExtra: V,
@@ -1246,7 +1248,7 @@ function In({ apiBase: e, catalogBase: t, onError: a }) {
1246
1248
  stop: x
1247
1249
  };
1248
1250
  }
1249
- async function Se(e) {
1251
+ async function Re(e) {
1250
1252
  try {
1251
1253
  const t = await fetch(e);
1252
1254
  return t.ok ? await t.json() : null;
@@ -1258,15 +1260,15 @@ function _n(e, t) {
1258
1260
  t && (e.Name = t.Name ?? e.Name, e.NumCopiers = t.NumCopiers ?? null, e.Fee = t.Fee ?? null, e.RiskProfile = t.RiskProfile ?? null, e.IsSimulated = t.IsSimulated ?? !1, t.IsEnabled !== void 0 && (e.IsEnabled = t.IsEnabled), t.ImageUploaded !== void 0 && (e.ImageUploaded = t.ImageUploaded), e.Profile = t.Profile ?? e.Profile, e._meta = !0);
1259
1261
  }
1260
1262
  function Sn(e, t) {
1261
- var i, u, m, g, f, d;
1263
+ var o, u, m, g, f, d;
1262
1264
  if (!t) return;
1263
- const a = ((i = t.Profitability) == null ? void 0 : i.Inception) ?? {}, n = ((u = t.Trades) == null ? void 0 : u.Inception) ?? {}, s = a.History ?? [], c = s.length > 60 ? Math.ceil(s.length / 60) : 1, l = s.filter((r, w) => w % c === 0 || w === s.length - 1).map((r) => ({ Timestamp: r.Timestamp, AccountReturn: r.AccountReturn }));
1265
+ const a = ((o = t.Profitability) == null ? void 0 : o.Inception) ?? {}, n = ((u = t.Trades) == null ? void 0 : u.Inception) ?? {}, s = a.History ?? [], c = s.length > 60 ? Math.ceil(s.length / 60) : 1, l = s.filter((r, w) => w % c === 0 || w === s.length - 1).map((r) => ({ Timestamp: r.Timestamp, AccountReturn: r.AccountReturn }));
1264
1266
  e.Inception = t.Inception ?? e.Inception, e.Currency = t.CurrencyCode || "USD", e.Return = a.UnrealisedReturn != null ? a.UnrealisedReturn * 100 : a.RealisedReturn != null ? a.RealisedReturn * 100 : null, e.MaxDD = a.MaxDrawdown != null ? a.MaxDrawdown * 100 : null, e.RealisedPnl = a.RealisedPnl ?? null, e.UnrealisedPnl = a.UnrealisedPnl ?? null, e.History = l, e.TradesTotal = n.Total ?? 0, e.Wins = n.Wins ?? 0, e.Losses = n.Losses ?? 0, e.Markets = Array.isArray(n.Markets) ? n.Markets.slice(0, 12).map((r) => ({ n: r.MarketName, c: r.Count })) : [], e.AccountBalance = ((m = t.Status) == null ? void 0 : m.Balance) ?? null, e.CopiersAUM = ((g = t.CopiersBalance) == null ? void 0 : g.Balance) ?? null, e.MonthlyProfit = ((f = t.CopiersProfit) == null ? void 0 : f.Month) ?? null, e.YearlyProfit = ((d = t.CopiersProfit) == null ? void 0 : d.Year) ?? null, e._stats = !0;
1265
1267
  }
1266
- function Re(e) {
1268
+ function Pe(e) {
1267
1269
  return new Promise((t) => setTimeout(t, e));
1268
1270
  }
1269
- function ce() {
1271
+ function de() {
1270
1272
  return {
1271
1273
  risk: /* @__PURE__ */ new Set(),
1272
1274
  retMin: null,
@@ -1284,13 +1286,13 @@ function ce() {
1284
1286
  };
1285
1287
  }
1286
1288
  function Rn(e, t = {}) {
1287
- const a = ce(), n = Pe({
1289
+ const a = de(), n = Ce({
1288
1290
  ...a,
1289
1291
  ...t,
1290
1292
  risk: new Set(t.risk ?? a.risk)
1291
1293
  }), s = k(() => e.value.filter((l) => Pn(l, n)));
1292
1294
  function c() {
1293
- const l = ce();
1295
+ const l = de();
1294
1296
  n.risk = l.risk, n.retMin = null, n.retMax = null, n.ddMax = null, n.aumMin = null, n.copiersMin = null, n.ageMin = null, n.tradesMin = null, n.winrateMin = null, n.feeMax = null, n.balanceMin = null, n.balanceMax = null, n.search = "";
1295
1297
  }
1296
1298
  return { filters: n, filtered: s, reset: c };
@@ -1336,8 +1338,8 @@ function Tn(e, t = "return-desc") {
1336
1338
  return e.value.slice().sort(c);
1337
1339
  });
1338
1340
  function s(c) {
1339
- const [l, i] = Ze[c];
1340
- a.value = a.value === l ? i : l;
1341
+ const [l, o] = Ze[c];
1342
+ a.value = a.value === l ? o : l;
1341
1343
  }
1342
1344
  return {
1343
1345
  sortKey: a,
@@ -1357,9 +1359,9 @@ function An(e, t) {
1357
1359
  const l = (a.value - 1) * t;
1358
1360
  return e.value.slice(l, l + t);
1359
1361
  }), c = k(() => {
1360
- const l = a.value, i = n.value;
1361
- if (i <= 1) return [];
1362
- const m = [.../* @__PURE__ */ new Set([1, i, l, l - 1, l + 1, l - 2, l + 2, 2, i - 1])].filter((f) => f >= 1 && f <= i).sort((f, d) => f - d), g = [];
1362
+ const l = a.value, o = n.value;
1363
+ if (o <= 1) return [];
1364
+ const m = [.../* @__PURE__ */ new Set([1, o, l, l - 1, l + 1, l - 2, l + 2, 2, o - 1])].filter((f) => f >= 1 && f <= o).sort((f, d) => f - d), g = [];
1363
1365
  for (let f = 0; f < m.length; f++)
1364
1366
  f && m[f] - m[f - 1] > 1 && g.push("…"), g.push(m[f]);
1365
1367
  return g;
@@ -1386,10 +1388,10 @@ function Fn(e) {
1386
1388
  return (l === "open" ? t.value : a.value).get(c) ?? null;
1387
1389
  }
1388
1390
  async function s(c, l) {
1389
- const i = l === "open" ? t : a, u = i.value.get(c);
1391
+ const o = l === "open" ? t : a, u = o.value.get(c);
1390
1392
  if (u && (u.loading || u.trades !== null)) return;
1391
- const m = new Map(i.value);
1392
- m.set(c, { loading: !0, trades: null, error: null }), i.value = m;
1393
+ const m = new Map(o.value);
1394
+ m.set(c, { loading: !0, trades: null, error: null }), o.value = m;
1393
1395
  let g = "";
1394
1396
  if (l === "closed") {
1395
1397
  const I = /* @__PURE__ */ new Date(), _ = new Date(Date.now() - We * 864e5), h = (C) => C.toISOString().replace(/\.\d+Z$/, "Z");
@@ -1404,8 +1406,8 @@ function Fn(e) {
1404
1406
  } catch (I) {
1405
1407
  r = I.code ? I : Z("fetch_failed", I.message), d = [];
1406
1408
  }
1407
- const w = new Map(i.value);
1408
- w.set(c, { loading: !1, trades: d, error: r }), i.value = w;
1409
+ const w = new Map(o.value);
1410
+ w.set(c, { loading: !1, trades: d, error: r }), o.value = w;
1409
1411
  }
1410
1412
  return { open: t, closed: a, load: s, get: n };
1411
1413
  }
@@ -1419,26 +1421,26 @@ const Nn = ["data-theme"], Ln = { class: "brand-row" }, Dn = ["title"], Un = { "
1419
1421
  defaultFilters: {},
1420
1422
  columns: {},
1421
1423
  locale: { default: "en-US" },
1422
- pageSize: { default: Ge }
1424
+ pageSize: { default: ze }
1423
1425
  },
1424
1426
  emits: ["update:theme", "select-strategy", "error"],
1425
1427
  setup(e, { emit: t }) {
1426
1428
  const a = e, n = t;
1427
- ne(ua, a.apiBase), ne(ca, a.catalogBase ?? a.apiBase), ne(Ce, a.locale);
1428
- const s = ye(a, "apiBase"), c = ye(a, "catalogBase"), l = $n(a.theme);
1429
+ ne(ua, a.apiBase), ne(ca, a.catalogBase ?? a.apiBase), ne(Te, a.locale);
1430
+ const s = Me(a, "apiBase"), c = Me(a, "catalogBase"), l = $n(a.theme);
1429
1431
  E(l.mode, (x) => n("update:theme", x)), E(
1430
1432
  () => a.theme,
1431
1433
  (x) => l.setMode(x)
1432
1434
  );
1433
- const i = In({
1435
+ const o = In({
1434
1436
  apiBase: s,
1435
1437
  catalogBase: c,
1436
1438
  onError: (x) => n("error", x)
1437
- }), u = Rn(i.catalog, a.defaultFilters ?? {}), m = Tn(u.filtered, a.defaultSort), g = An(m.sorted, a.pageSize), f = Fn(s), d = Pe(/* @__PURE__ */ new Set()), r = R(!1), w = R(null);
1439
+ }), u = Rn(o.catalog, a.defaultFilters ?? {}), m = Tn(u.filtered, a.defaultSort), g = An(m.sorted, a.pageSize), f = Fn(s), d = Ce(/* @__PURE__ */ new Set()), r = R(!1), w = R(null);
1438
1440
  function I(x) {
1439
1441
  d.has(x) ? d.delete(x) : d.add(x);
1440
- const $ = i.catalog.value.find((M) => M.Id === x);
1441
- $ && ((!$._meta || !$._stats) && !$._enrichAttempted && i.enrichOne(x), n("select-strategy", $));
1442
+ const $ = o.catalog.value.find((M) => M.Id === x);
1443
+ $ && ((!$._meta || !$._stats) && !$._enrichAttempted && o.enrichOne(x), n("select-strategy", $));
1442
1444
  }
1443
1445
  function _(x) {
1444
1446
  m.toggleColumn(x), g.setPage(1);
@@ -1447,7 +1449,7 @@ const Nn = ["data-theme"], Ln = { class: "brand-row" }, Dn = ["title"], Un = { "
1447
1449
  Object.assign(u.filters, x), g.setPage(1);
1448
1450
  }
1449
1451
  function C() {
1450
- const x = ce();
1452
+ const x = de();
1451
1453
  Object.assign(u.filters, x), u.filters.risk = x.risk, w.value = null, g.setPage(1);
1452
1454
  }
1453
1455
  function V({ id: x, kind: $ }) {
@@ -1456,42 +1458,42 @@ const Nn = ["data-theme"], Ln = { class: "brand-row" }, Dn = ["title"], Un = { "
1456
1458
  function S(x) {
1457
1459
  x === "prev" ? g.prev() : x === "next" ? g.next() : g.setPage(x);
1458
1460
  }
1459
- return Be(() => i.start()), (x, $) => (p(), y("div", {
1461
+ return Be(() => o.start()), (x, $) => (p(), y("div", {
1460
1462
  class: "pelican-libsoc",
1461
1463
  "data-theme": v(l).resolved.value
1462
1464
  }, [
1463
- o("header", Ln, [
1465
+ i("header", Ln, [
1464
1466
  q(x.$slots, "brand", {}, () => [
1465
- $[6] || ($[6] = o("div", { class: "default-brand" }, "Libertex Social — Copy Trading", -1))
1467
+ $[6] || ($[6] = i("div", { class: "default-brand" }, "Libertex Social — Copy Trading", -1))
1466
1468
  ], !0),
1467
- o("button", {
1469
+ i("button", {
1468
1470
  class: "theme-toggle",
1469
1471
  type: "button",
1470
1472
  title: v(l).mode.value,
1471
1473
  onClick: $[0] || ($[0] = //@ts-ignore
1472
1474
  (...M) => v(l).cycle && v(l).cycle(...M))
1473
1475
  }, [
1474
- o("span", Un, b(v(l).resolved.value === "dark" ? "🌙" : "☀️"), 1)
1476
+ i("span", Un, b(v(l).resolved.value === "dark" ? "🌙" : "☀️"), 1)
1475
1477
  ], 8, Dn)
1476
1478
  ]),
1477
1479
  P(st, {
1478
1480
  search: v(u).filters.search,
1479
1481
  "sort-key": v(m).sortKey.value,
1480
- total: v(i).total.value,
1482
+ total: v(o).total.value,
1481
1483
  "filtered-total": v(u).filtered.value.length,
1482
1484
  page: v(g).page.value,
1483
1485
  "total-pages": v(g).totalPages.value,
1484
1486
  "onUpdate:search": $[1] || ($[1] = (M) => h({ search: M })),
1485
1487
  "onUpdate:sortKey": $[2] || ($[2] = (M) => v(m).setKey(M)),
1486
- onRefresh: v(i).refresh,
1488
+ onRefresh: v(o).refresh,
1487
1489
  onToggleFilters: $[3] || ($[3] = (M) => r.value = !r.value)
1488
1490
  }, null, 8, ["search", "sort-key", "total", "filtered-total", "page", "total-pages", "onRefresh"]),
1489
1491
  P(wn, {
1490
- loaded: v(i).loaded.value,
1491
- total: v(i).total.value,
1492
- active: v(i).building.value && !v(i).ready.value
1492
+ loaded: v(o).loaded.value,
1493
+ total: v(o).total.value,
1494
+ active: v(o).building.value && !v(o).ready.value
1493
1495
  }, null, 8, ["loaded", "total", "active"]),
1494
- o("main", Vn, [
1496
+ i("main", Vn, [
1495
1497
  P(Ut, {
1496
1498
  filters: v(u).filters,
1497
1499
  "invest-amount": w.value,
@@ -1515,12 +1517,12 @@ const Nn = ["data-theme"], Ln = { class: "brand-row" }, Dn = ["title"], Un = { "
1515
1517
  onSelect: $[5] || ($[5] = (M) => n("select-strategy", M)),
1516
1518
  onGo: S
1517
1519
  }, {
1518
- empty: re(() => [
1520
+ empty: ue(() => [
1519
1521
  q(x.$slots, "empty", {}, () => [
1520
1522
  $[7] || ($[7] = D("No matches.", -1))
1521
1523
  ], !0)
1522
1524
  ]),
1523
- "row-actions": re((M) => [
1525
+ "row-actions": ue((M) => [
1524
1526
  q(x.$slots, "row-actions", Oe(Ke(M)), void 0, !0)
1525
1527
  ]),
1526
1528
  _: 3
@@ -1534,6 +1536,6 @@ export {
1534
1536
  qe as SORT_KEYS,
1535
1537
  Xe as SORT_LABELS,
1536
1538
  Ze as SORT_TOGGLE,
1537
- ce as defaultFilters
1539
+ de as defaultFilters
1538
1540
  };
1539
1541
  //# sourceMappingURL=pelican-libertex-social.mjs.map