@harnessio/ui 0.3.5 → 0.4.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.
@@ -1,28 +1,28 @@
1
- import { useCallback as _, useEffect as h, useMemo as I, useRef as E, useState as w, useLayoutEffect as re } from "react";
1
+ import { useCallback as E, useEffect as h, useMemo as I, useRef as T, useState as L, useLayoutEffect as re } from "react";
2
2
  import { u as oe, g as te } from "./types-lL2O4vS0.js";
3
- import { a as ae, q as ie, b as se, e as ce, g as ue, U as D, f as H, j as U, S as C, r as fe, k as le, p as de, t as me, u as ge } from "./use-debounce-search-2GsFGPkD.js";
4
- import { M as pe, S as $, e as ve, a as q, b as F } from "./_MapCache-C2CWXlpA.js";
3
+ import { a as ae, q as se, b as ie, e as ce, g as ue, U as D, f as H, j as $, S as C, r as fe, k as le, p as de, t as me, u as ge } from "./use-debounce-search-2GsFGPkD.js";
4
+ import { M as pe, S as U, e as ve, a as q, b as B } from "./_MapCache-C2CWXlpA.js";
5
5
  function ye(e) {
6
- return se(e) ? ae(e) : ie(e);
6
+ return ie(e) ? ae(e) : se(e);
7
7
  }
8
- function B(e) {
8
+ function F(e) {
9
9
  return ce(e, ye, ue);
10
10
  }
11
11
  var he = "__lodash_hash_undefined__";
12
- function Te(e) {
12
+ function _e(e) {
13
13
  return this.__data__.set(e, he), this;
14
14
  }
15
- function _e(e) {
15
+ function Ee(e) {
16
16
  return this.__data__.has(e);
17
17
  }
18
- function L(e) {
18
+ function w(e) {
19
19
  var n = -1, r = e == null ? 0 : e.length;
20
20
  for (this.__data__ = new pe(); ++n < r; )
21
21
  this.add(e[n]);
22
22
  }
23
- L.prototype.add = L.prototype.push = Te;
24
- L.prototype.has = _e;
25
- function Ee(e, n) {
23
+ w.prototype.add = w.prototype.push = _e;
24
+ w.prototype.has = Ee;
25
+ function Te(e, n) {
26
26
  for (var r = -1, t = e == null ? 0 : e.length; ++r < t; )
27
27
  if (n(e[r], r, e))
28
28
  return !0;
@@ -33,14 +33,14 @@ function be(e, n) {
33
33
  }
34
34
  var Ae = 1, Se = 2;
35
35
  function Y(e, n, r, t, a, o) {
36
- var c = r & Ae, i = e.length, s = n.length;
37
- if (i != s && !(c && s > i))
36
+ var c = r & Ae, s = e.length, i = n.length;
37
+ if (s != i && !(c && i > s))
38
38
  return !1;
39
39
  var f = o.get(e), u = o.get(n);
40
40
  if (f && u)
41
41
  return f == n && u == e;
42
- var d = -1, l = !0, p = r & Se ? new L() : void 0;
43
- for (o.set(e, n), o.set(n, e); ++d < i; ) {
42
+ var d = -1, l = !0, p = r & Se ? new w() : void 0;
43
+ for (o.set(e, n), o.set(n, e); ++d < s; ) {
44
44
  var g = e[d], v = n[d];
45
45
  if (t)
46
46
  var y = c ? t(v, g, d, n, e, o) : t(g, v, d, e, n, o);
@@ -51,9 +51,9 @@ function Y(e, n, r, t, a, o) {
51
51
  break;
52
52
  }
53
53
  if (p) {
54
- if (!Ee(n, function(m, T) {
55
- if (!be(p, T) && (g === m || a(g, m, r, t, o)))
56
- return p.push(T);
54
+ if (!Te(n, function(m, _) {
55
+ if (!be(p, _) && (g === m || a(g, m, r, t, o)))
56
+ return p.push(_);
57
57
  })) {
58
58
  l = !1;
59
59
  break;
@@ -71,41 +71,41 @@ function Ie(e) {
71
71
  r[++n] = [a, t];
72
72
  }), r;
73
73
  }
74
- function Le(e) {
74
+ function we(e) {
75
75
  var n = -1, r = Array(e.size);
76
76
  return e.forEach(function(t) {
77
77
  r[++n] = t;
78
78
  }), r;
79
79
  }
80
- var we = 1, Ce = 2, ke = "[object Boolean]", Re = "[object Date]", Oe = "[object Error]", Pe = "[object Map]", Me = "[object Number]", xe = "[object RegExp]", Ne = "[object Set]", De = "[object String]", He = "[object Symbol]", Ue = "[object ArrayBuffer]", $e = "[object DataView]", V = $ ? $.prototype : void 0, k = V ? V.valueOf : void 0;
80
+ var Le = 1, Ce = 2, ke = "[object Boolean]", Oe = "[object Date]", Re = "[object Error]", Pe = "[object Map]", Me = "[object Number]", xe = "[object RegExp]", Ne = "[object Set]", De = "[object String]", He = "[object Symbol]", $e = "[object ArrayBuffer]", Ue = "[object DataView]", G = U ? U.prototype : void 0, k = G ? G.valueOf : void 0;
81
81
  function qe(e, n, r, t, a, o, c) {
82
82
  switch (r) {
83
- case $e:
83
+ case Ue:
84
84
  if (e.byteLength != n.byteLength || e.byteOffset != n.byteOffset)
85
85
  return !1;
86
86
  e = e.buffer, n = n.buffer;
87
- case Ue:
87
+ case $e:
88
88
  return !(e.byteLength != n.byteLength || !o(new D(e), new D(n)));
89
89
  case ke:
90
- case Re:
90
+ case Oe:
91
91
  case Me:
92
92
  return ve(+e, +n);
93
- case Oe:
93
+ case Re:
94
94
  return e.name == n.name && e.message == n.message;
95
95
  case xe:
96
96
  case De:
97
97
  return e == n + "";
98
98
  case Pe:
99
- var i = Ie;
99
+ var s = Ie;
100
100
  case Ne:
101
- var s = t & we;
102
- if (i || (i = Le), e.size != n.size && !s)
101
+ var i = t & Le;
102
+ if (s || (s = we), e.size != n.size && !i)
103
103
  return !1;
104
104
  var f = c.get(e);
105
105
  if (f)
106
106
  return f == n;
107
107
  t |= Ce, c.set(e, n);
108
- var u = Y(i(e), i(n), t, a, o, c);
108
+ var u = Y(s(e), s(n), t, a, o, c);
109
109
  return c.delete(e), u;
110
110
  case He:
111
111
  if (k)
@@ -113,14 +113,14 @@ function qe(e, n, r, t, a, o, c) {
113
113
  }
114
114
  return !1;
115
115
  }
116
- var Fe = 1, Be = Object.prototype, Ve = Be.hasOwnProperty;
117
- function Ge(e, n, r, t, a, o) {
118
- var c = r & Fe, i = B(e), s = i.length, f = B(n), u = f.length;
119
- if (s != u && !c)
116
+ var Be = 1, Fe = Object.prototype, Ge = Fe.hasOwnProperty;
117
+ function Ve(e, n, r, t, a, o) {
118
+ var c = r & Be, s = F(e), i = s.length, f = F(n), u = f.length;
119
+ if (i != u && !c)
120
120
  return !1;
121
- for (var d = s; d--; ) {
122
- var l = i[d];
123
- if (!(c ? l in n : Ve.call(n, l)))
121
+ for (var d = i; d--; ) {
122
+ var l = s[d];
123
+ if (!(c ? l in n : Ge.call(n, l)))
124
124
  return !1;
125
125
  }
126
126
  var p = o.get(e), g = o.get(n);
@@ -128,12 +128,12 @@ function Ge(e, n, r, t, a, o) {
128
128
  return p == n && g == e;
129
129
  var v = !0;
130
130
  o.set(e, n), o.set(n, e);
131
- for (var y = c; ++d < s; ) {
132
- l = i[d];
133
- var m = e[l], T = n[l];
131
+ for (var y = c; ++d < i; ) {
132
+ l = s[d];
133
+ var m = e[l], _ = n[l];
134
134
  if (t)
135
- var N = c ? t(T, m, l, n, e, o) : t(m, T, l, e, n, o);
136
- if (!(N === void 0 ? m === T || a(m, T, r, t, o) : N)) {
135
+ var N = c ? t(_, m, l, n, e, o) : t(m, _, l, e, n, o);
136
+ if (!(N === void 0 ? m === _ || a(m, _, r, t, o) : N)) {
137
137
  v = !1;
138
138
  break;
139
139
  }
@@ -145,29 +145,29 @@ function Ge(e, n, r, t, a, o) {
145
145
  }
146
146
  return o.delete(e), o.delete(n), v;
147
147
  }
148
- var Qe = 1, G = "[object Arguments]", Q = "[object Array]", S = "[object Object]", We = Object.prototype, W = We.hasOwnProperty;
148
+ var We = 1, V = "[object Arguments]", W = "[object Array]", S = "[object Object]", Qe = Object.prototype, Q = Qe.hasOwnProperty;
149
149
  function Ye(e, n, r, t, a, o) {
150
- var c = q(e), i = q(n), s = c ? Q : H(e), f = i ? Q : H(n);
151
- s = s == G ? S : s, f = f == G ? S : f;
152
- var u = s == S, d = f == S, l = s == f;
153
- if (l && U(e)) {
154
- if (!U(n))
150
+ var c = q(e), s = q(n), i = c ? W : H(e), f = s ? W : H(n);
151
+ i = i == V ? S : i, f = f == V ? S : f;
152
+ var u = i == S, d = f == S, l = i == f;
153
+ if (l && $(e)) {
154
+ if (!$(n))
155
155
  return !1;
156
156
  c = !0, u = !1;
157
157
  }
158
158
  if (l && !u)
159
- return o || (o = new C()), c || fe(e) ? Y(e, n, r, t, a, o) : qe(e, n, s, r, t, a, o);
160
- if (!(r & Qe)) {
161
- var p = u && W.call(e, "__wrapped__"), g = d && W.call(n, "__wrapped__");
159
+ return o || (o = new C()), c || fe(e) ? Y(e, n, r, t, a, o) : qe(e, n, i, r, t, a, o);
160
+ if (!(r & We)) {
161
+ var p = u && Q.call(e, "__wrapped__"), g = d && Q.call(n, "__wrapped__");
162
162
  if (p || g) {
163
163
  var v = p ? e.value() : e, y = g ? n.value() : n;
164
164
  return o || (o = new C()), a(v, y, r, t, o);
165
165
  }
166
166
  }
167
- return l ? (o || (o = new C()), Ge(e, n, r, t, a, o)) : !1;
167
+ return l ? (o || (o = new C()), Ve(e, n, r, t, a, o)) : !1;
168
168
  }
169
169
  function K(e, n, r, t, a) {
170
- return e === n ? !0 : e == null || n == null || !F(e) && !F(n) ? e !== e && n !== n : Ye(e, n, r, t, K, a);
170
+ return e === n ? !0 : e == null || n == null || !B(e) && !B(n) ? e !== e && n !== n : Ye(e, n, r, t, K, a);
171
171
  }
172
172
  function Ke(e, n, r) {
173
173
  r = typeof r == "function" ? r : void 0;
@@ -175,12 +175,12 @@ function Ke(e, n, r) {
175
175
  return t === void 0 ? K(e, n, void 0, r) : !!t;
176
176
  }
177
177
  function Je() {
178
- const { useSearchParams: e } = oe(), [n, r] = e(), t = n.get("query"), a = _(
178
+ const { useSearchParams: e } = oe(), [n, r] = e(), t = n.get("query"), a = E(
179
179
  (o) => {
180
180
  r((c) => {
181
- var s;
182
- const i = (s = o == null ? void 0 : o.target) == null ? void 0 : s.value;
183
- return le(i) ? c.delete("query") : c.set("query", i), c;
181
+ var i;
182
+ const s = (i = o == null ? void 0 : o.target) == null ? void 0 : i.value;
183
+ return le(s) ? c.delete("query") : c.set("query", s), c;
184
184
  });
185
185
  },
186
186
  [r]
@@ -197,7 +197,7 @@ function Xe(e, n) {
197
197
  });
198
198
  }
199
199
  function J(e) {
200
- const n = E();
200
+ const n = T();
201
201
  return Xe(e, n.current) || (n.current = e), n.current;
202
202
  }
203
203
  function Ze(e, n) {
@@ -234,14 +234,14 @@ function nn({
234
234
  rootMargin: a = "100px",
235
235
  threshold: o = 0.1
236
236
  }) {
237
- const c = E(null), i = E(e);
237
+ const c = T(null), s = T(e);
238
238
  h(() => {
239
- i.current = e;
239
+ s.current = e;
240
240
  }, [e]);
241
- const s = _(
241
+ const i = E(
242
242
  (f) => {
243
243
  const [u] = f;
244
- u != null && u.isIntersecting && n && !r && i.current();
244
+ u != null && u.isIntersecting && n && !r && s.current();
245
245
  },
246
246
  [n, r]
247
247
  );
@@ -249,24 +249,24 @@ function nn({
249
249
  const f = c.current;
250
250
  if (!f || !t || !n)
251
251
  return;
252
- const u = new IntersectionObserver(s, {
252
+ const u = new IntersectionObserver(i, {
253
253
  rootMargin: a,
254
254
  threshold: o
255
255
  });
256
256
  return u.observe(f), () => {
257
257
  u.disconnect();
258
258
  };
259
- }, [t, n, s, a, o]), { sentinelRef: c };
259
+ }, [t, n, i, a, o]), { sentinelRef: c };
260
260
  }
261
261
  const rn = () => {
262
- const e = E(!1);
262
+ const e = T(!1);
263
263
  return h(() => (e.current = !0, () => {
264
264
  e.current = !1;
265
265
  }), []), e;
266
266
  };
267
- var Z = /* @__PURE__ */ ((e) => (e.SPACE_ID = "spaceId", e.SIDEBAR_WIDTH = "sidebarWidth", e.CURRENT_USER = "currentUser", e.DIFF_VIEW_STYLE = "DIFF_VIEW_STYLE", e.PULL_REQUEST_CREATION_OPTION = "PULL_REQUEST_CREATION_OPTION", e.PULL_REQUEST_ACTIVITY_FILTER = "PULL_REQUEST_ACTIVITY_FILTER", e.PULL_REQUEST_ACTIVITY_ORDER = "PULL_REQUEST_ACTIVITY_ORDER", e))(Z || {});
267
+ var Z = /* @__PURE__ */ ((e) => (e.SPACE_ID = "spaceId", e.SIDEBAR_WIDTH = "sidebarWidth", e.CURRENT_USER = "currentUser", e.DIFF_VIEW_STYLE = "DIFF_VIEW_STYLE", e.PULL_REQUEST_CREATION_OPTION = "PULL_REQUEST_CREATION_OPTION", e.PULL_REQUEST_ACTIVITY_ORDER = "PULL_REQUEST_ACTIVITY_ORDER", e))(Z || {});
268
268
  function z(e, n) {
269
- const [r, t] = w(() => {
269
+ const [r, t] = L(() => {
270
270
  try {
271
271
  const o = localStorage.getItem(e);
272
272
  return o ? JSON.parse(o) : n;
@@ -317,30 +317,30 @@ function sn({
317
317
  const t = I(
318
318
  () => r ?? n.map((u) => u.value),
319
319
  [r, n]
320
- ), [a, o] = z(e, t), c = I(() => new Set(n.map((u) => u.value)), [n]), i = I(
320
+ ), [a, o] = z(e, t), c = I(() => new Set(n.map((u) => u.value)), [n]), s = I(
321
321
  () => a.filter((u) => c.has(u)),
322
322
  [a, c]
323
323
  );
324
324
  h(() => {
325
- (i.length !== a.length || i.some((d, l) => d !== a[l])) && o(i);
326
- }, [i, a, o]);
327
- const s = _(
325
+ (s.length !== a.length || s.some((d, l) => d !== a[l])) && o(s);
326
+ }, [s, a, o]);
327
+ const i = E(
328
328
  (u, d) => {
329
329
  if (d) {
330
- const l = i.includes(u) ? i : [...i, u];
330
+ const l = s.includes(u) ? s : [...s, u];
331
331
  o(l);
332
332
  } else {
333
- const l = i.filter((p) => p !== u);
333
+ const l = s.filter((p) => p !== u);
334
334
  o(l);
335
335
  }
336
336
  },
337
- [i, o]
338
- ), f = _(() => {
337
+ [s, o]
338
+ ), f = E(() => {
339
339
  o(t);
340
340
  }, [o, t]);
341
341
  return {
342
- visibleColumns: i,
343
- toggleColumn: s,
342
+ visibleColumns: s,
343
+ toggleColumn: i,
344
344
  resetColumns: f
345
345
  };
346
346
  }
@@ -349,7 +349,7 @@ function cn() {
349
349
  return typeof document.hidden < "u" ? (e = "hidden", n = "visibilitychange") : typeof document.msHidden < "u" ? (e = "msHidden", n = "msvisibilitychange") : typeof document.webkitHidden < "u" && (e = "webkitHidden", n = "webkitvisibilitychange"), { hidden: e, visibilityChange: n };
350
350
  }
351
351
  function ee() {
352
- const [e, n] = w(!0);
352
+ const [e, n] = L(!0);
353
353
  return h(() => {
354
354
  const { hidden: r, visibilityChange: t } = cn();
355
355
  function a() {
@@ -370,32 +370,32 @@ function ln(e, {
370
370
  inactiveTabPollingInterval: t = fn,
371
371
  pollOnInactiveTab: a = !1
372
372
  }) {
373
- const o = E(e), [c, i] = w(!1), s = ee(), f = s ? r : t;
373
+ const o = T(e), [c, s] = L(!1), i = ee(), f = i ? r : t;
374
374
  return re(() => {
375
375
  o.current = e;
376
376
  }, [e]), h(() => {
377
- if (n && !(!s && !a) && !c) {
377
+ if (n && !(!i && !a) && !c) {
378
378
  const u = setTimeout(async () => {
379
379
  var d;
380
- i(!0);
380
+ s(!0);
381
381
  try {
382
382
  await ((d = o.current) == null ? void 0 : d.call(o));
383
383
  } finally {
384
- i(!1);
384
+ s(!1);
385
385
  }
386
386
  }, f);
387
387
  return () => clearTimeout(u);
388
388
  }
389
- }, [f, c, a, n, s]), c;
389
+ }, [f, c, a, n, i]), c;
390
390
  }
391
391
  function dn(e) {
392
392
  const n = e.match(/lch\(\s*([\d.]+)\s+([\d.]+)\s+([\d.]+)\s*\)/i);
393
393
  if (!n) return;
394
- const r = parseFloat(n[1]), t = parseFloat(n[2]), o = parseFloat(n[3]) * Math.PI / 180, c = Math.cos(o) * t, i = Math.sin(o) * t;
395
- let s = (r + 16) / 116, f = c / 500 + s, u = s - i / 200;
394
+ const r = parseFloat(n[1]), t = parseFloat(n[2]), o = parseFloat(n[3]) * Math.PI / 180, c = Math.cos(o) * t, s = Math.sin(o) * t;
395
+ let i = (r + 16) / 116, f = c / 500 + i, u = i - s / 200;
396
396
  const d = (m) => m ** 3 > 8856e-6 ? m ** 3 : (m - 16 / 116) / 7.787;
397
- f = d(f) * 0.95047, s = d(s) * 1, u = d(u) * 1.08883;
398
- let l = 3.2406 * f - 1.5372 * s - 0.4986 * u, p = -0.9689 * f + 1.8758 * s + 0.0415 * u, g = 0.0557 * f - 0.204 * s + 1.057 * u;
397
+ f = d(f) * 0.95047, i = d(i) * 1, u = d(u) * 1.08883;
398
+ let l = 3.2406 * f - 1.5372 * i - 0.4986 * u, p = -0.9689 * f + 1.8758 * i + 0.0415 * u, g = 0.0557 * f - 0.204 * i + 1.057 * u;
399
399
  const v = (m) => m <= 31308e-7 ? 12.92 * m : 1.055 * Math.pow(m, 1 / 2.4) - 0.055;
400
400
  l = v(l), p = v(p), g = v(g);
401
401
  const y = (m) => Math.round(Math.min(1, Math.max(0, m)) * 255).toString(16).padStart(2, "0");
@@ -407,18 +407,18 @@ function mn(e) {
407
407
  const [r, t, a] = n.slice(0, 3).map(Number);
408
408
  return "#" + [r, t, a].map((o) => o.toString(16).padStart(2, "0")).join("");
409
409
  }
410
- const R = [];
410
+ const O = [];
411
411
  function gn(e) {
412
- if (!R.some((r) => r.themeName === e)) {
412
+ if (!O.some((r) => r.themeName === e)) {
413
413
  const r = document.createElement("div");
414
414
  document.body.appendChild(r);
415
415
  const t = P(vn, r);
416
- document.body.removeChild(r), t.base = e.indexOf("light") > -1 ? "vs" : "vs-dark", R.push({
416
+ document.body.removeChild(r), t.base = e.indexOf("light") > -1 ? "vs" : "vs-dark", O.push({
417
417
  themeName: e,
418
418
  themeData: t
419
419
  });
420
420
  }
421
- return R;
421
+ return O;
422
422
  }
423
423
  function P(e, n) {
424
424
  if (Array.isArray(e))
@@ -502,44 +502,44 @@ const vn = {
502
502
  }
503
503
  };
504
504
  function yn(e, n = "html") {
505
- const [r, t] = w(void 0);
505
+ const [r, t] = L(void 0);
506
506
  return h(() => {
507
507
  if (!e) return;
508
508
  let a = 0;
509
509
  const o = 5, c = 100;
510
- let i;
511
- const s = () => {
510
+ let s;
511
+ const i = () => {
512
512
  a++;
513
513
  const u = document.querySelector(n);
514
514
  return u ? u.className.includes(e) ? (t({
515
515
  defaultTheme: e,
516
516
  themes: gn(e)
517
- }), i && clearInterval(i), !0) : (a >= o && i && clearInterval(i), !1) : !1;
517
+ }), s && clearInterval(s), !0) : (a >= o && s && clearInterval(s), !1) : !1;
518
518
  };
519
- return s() || (i = window.setInterval(s, c)), () => {
520
- i && clearInterval(i);
519
+ return i() || (s = window.setInterval(i, c)), () => {
520
+ s && clearInterval(s);
521
521
  };
522
522
  }, [n, e]), r;
523
523
  }
524
524
  const M = "data-theme-loader", x = "cn-on-demand-theme", ne = `link[${M}="${x}"]`;
525
- function O() {
525
+ function R() {
526
526
  document.querySelectorAll(ne).forEach((e) => e.remove());
527
527
  }
528
528
  function hn(e, n) {
529
- return { loadTheme: _(
529
+ return { loadTheme: E(
530
530
  (t) => {
531
531
  const a = te(t), o = document.querySelectorAll(ne);
532
532
  if (!a)
533
- return O(), Promise.resolve();
533
+ return R(), Promise.resolve();
534
534
  const c = n[a];
535
535
  if (!c) return Promise.resolve();
536
- const i = `${e}/${c}`;
537
- return Array.from(o).some((s) => s.getAttribute("href") === i) ? Promise.resolve() : new Promise((s) => {
536
+ const s = `${e}/${c}`;
537
+ return Array.from(o).some((i) => i.getAttribute("href") === s) ? Promise.resolve() : new Promise((i) => {
538
538
  const f = document.createElement("link");
539
- f.rel = "stylesheet", f.href = i, f.onload = () => {
540
- O(), f.setAttribute(M, x), s();
539
+ f.rel = "stylesheet", f.href = s, f.onload = () => {
540
+ R(), f.setAttribute(M, x), i();
541
541
  }, f.onerror = () => {
542
- O(), f.setAttribute(M, x), s();
542
+ R(), f.setAttribute(M, x), i();
543
543
  }, document.head.appendChild(f);
544
544
  });
545
545
  },
@@ -587,4 +587,4 @@ export {
587
587
  hn as o,
588
588
  Je as u
589
589
  };
590
- //# sourceMappingURL=index-D9zYGNBh.js.map
590
+ //# sourceMappingURL=index-BcVsw9k3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-BcVsw9k3.js","sources":["../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/keys.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_getAllKeys.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_setCacheAdd.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_setCacheHas.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_SetCache.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_arraySome.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_cacheHas.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_equalArrays.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_mapToArray.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_setToArray.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_equalByTag.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_equalObjects.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseIsEqualDeep.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseIsEqual.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/isEqualWith.js","../src/hooks/use-common-filter.tsx","../src/hooks/use-deep-compare-effect.ts","../src/hooks/use-event-listener.tsx","../src/hooks/use-infinite-scroll.ts","../src/hooks/use-is-mounted.ts","../src/hooks/use-local-storage.ts","../src/hooks/use-memory-cleanup.ts","../src/hooks/use-column-filter.tsx","../src/hooks/use-tab-visible.tsx","../src/hooks/use-polling.tsx","../src/utils/color-utils.ts","../src/utils/monaco-theme-utils.ts","../src/hooks/use-monaco-theme.ts","../src/hooks/use-theme-css-loader.ts"],"sourcesContent":["import arrayLikeKeys from './_arrayLikeKeys.js';\nimport baseKeys from './_baseKeys.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nexport default keys;\n","import baseGetAllKeys from './_baseGetAllKeys.js';\nimport getSymbols from './_getSymbols.js';\nimport keys from './keys.js';\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nexport default getAllKeys;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nexport default setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nexport default setCacheHas;\n","import MapCache from './_MapCache.js';\nimport setCacheAdd from './_setCacheAdd.js';\nimport setCacheHas from './_setCacheHas.js';\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nexport default SetCache;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nexport default arraySome;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nexport default cacheHas;\n","import SetCache from './_SetCache.js';\nimport arraySome from './_arraySome.js';\nimport cacheHas from './_cacheHas.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nexport default equalArrays;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nexport default mapToArray;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nexport default setToArray;\n","import Symbol from './_Symbol.js';\nimport Uint8Array from './_Uint8Array.js';\nimport eq from './eq.js';\nimport equalArrays from './_equalArrays.js';\nimport mapToArray from './_mapToArray.js';\nimport setToArray from './_setToArray.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nexport default equalByTag;\n","import getAllKeys from './_getAllKeys.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nexport default equalObjects;\n","import Stack from './_Stack.js';\nimport equalArrays from './_equalArrays.js';\nimport equalByTag from './_equalByTag.js';\nimport equalObjects from './_equalObjects.js';\nimport getTag from './_getTag.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nexport default baseIsEqualDeep;\n","import baseIsEqualDeep from './_baseIsEqualDeep.js';\nimport isObjectLike from './isObjectLike.js';\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nexport default baseIsEqual;\n","import baseIsEqual from './_baseIsEqual.js';\n\n/**\n * This method is like `_.isEqual` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with up to\n * six arguments: (objValue, othValue [, index|key, object, other, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, othValue) {\n * if (isGreeting(objValue) && isGreeting(othValue)) {\n * return true;\n * }\n * }\n *\n * var array = ['hello', 'goodbye'];\n * var other = ['hi', 'goodbye'];\n *\n * _.isEqualWith(array, other, customizer);\n * // => true\n */\nfunction isEqualWith(value, other, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n var result = customizer ? customizer(value, other) : undefined;\n return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;\n}\n\nexport default isEqualWith;\n","import { useCallback } from 'react'\n\nimport { useRouterContext } from '@/context'\nimport { isEmpty } from 'lodash-es'\n\nfunction useCommonFilter() {\n const { useSearchParams } = useRouterContext()\n const [searchParams, setSearchParams] = useSearchParams()\n\n const searchQuery = searchParams.get('query')\n\n const handleSearch = useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n setSearchParams(params => {\n const latestSearchQuery = event?.target?.value\n if (!isEmpty(latestSearchQuery)) {\n params.set('query', latestSearchQuery)\n } else params.delete('query')\n\n return params\n })\n },\n [setSearchParams]\n )\n\n return {\n query: searchQuery || undefined,\n handleSearch\n }\n}\n\nexport { useCommonFilter }\n","/**\n * Based on https://github.com/contiamo/restful-react/blob/7aa3d75694f919d0317981a128b139abe163e08e/src/util/useDeepCompareEffect.ts\n */\n\nimport React, { useEffect, useMemo, useRef } from 'react'\n\nimport { isEqualWith } from 'lodash-es'\n\n/**\n * Custom version of isEqual to handle function comparison\n */\nfunction isEqual(a: unknown, b: unknown): boolean {\n return isEqualWith(a, b, (x: unknown, y: unknown): boolean | undefined => {\n // Deal with the function comparison case\n if (typeof x === 'function' && typeof y === 'function') {\n return x.toString() === y.toString()\n }\n\n // Fallback on the method\n return undefined\n })\n}\n\nfunction useDeepCompareMemoize(value: React.DependencyList): React.DependencyList | undefined {\n const ref = useRef<React.DependencyList>()\n\n if (!isEqual(value, ref.current)) {\n ref.current = value\n }\n\n return ref.current\n}\n\n/**\n * Accepts a function that contains imperative, possibly effectful code.\n *\n * This is the deepCompare version of the `React.useEffect` hooks (that is shallowed compare)\n *\n * @param effect Imperative function that can return a cleanup function\n * @param deps If present, effect will only activate if the values in the list change.\n *\n * @see https://gist.github.com/kentcdodds/fb8540a05c43faf636dd68647747b074#gistcomment-2830503\n */\nexport function useDeepCompareEffect(effect: React.EffectCallback, deps: React.DependencyList): void {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n useEffect(effect, useDeepCompareMemoize(deps))\n}\n\n/**\n * Accepts a function that contains imperative, possibly effectful code.\n *\n * This is the deepCompare version of the `React.useMemo` hooks (that is shallowed compare)\n *\n * @param effect Imperative function that can return a useMemo value\n * @param deps If present, effect will only activate if the values in the list change.\n *\n * @see https://gist.github.com/kentcdodds/fb8540a05c43faf636dd68647747b074#gistcomment-2830503\n */\nexport function useDeepCompareMemo<T>(effect: () => T, deps: React.DependencyList): T {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n return useMemo(effect, useDeepCompareMemoize(deps))\n}\n","import { useEffect } from 'react'\n\nexport function useEventListener<K extends keyof HTMLElementEventMap>(\n type: K,\n listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => unknown,\n element: HTMLElement = window as unknown as HTMLElement,\n options?: boolean | AddEventListenerOptions,\n parametersCheck = () => true\n) {\n useEffect(() => {\n if (parametersCheck() && element) {\n element.addEventListener(type, listener, options)\n return () => {\n element.removeEventListener(type, listener)\n }\n }\n }, [element, type, listener, options, parametersCheck])\n}\n\nexport function useCustomEventListener<T>(\n name: string,\n listener: (event: Omit<CustomEvent, 'detail'> & { detail: T }) => void,\n parametersCheck = () => true\n) {\n useEventListener(\n name as keyof HTMLElementEventMap,\n listener as (event: Event) => void,\n window as unknown as HTMLElement,\n false,\n parametersCheck\n )\n}\n\nexport function dispatchCustomEvent<T>(name: string, detail: T) {\n window.dispatchEvent(new CustomEvent(name, { detail }))\n}\n","import { useCallback, useEffect, useRef } from 'react'\n\nexport interface UseInfiniteScrollOptions {\n /** Callback when sentinel becomes visible */\n onLoadMore: () => void | Promise<void>\n /** Whether more items are available */\n hasMore: boolean\n /** Prevents duplicate calls while loading */\n isLoading?: boolean\n /** Enable/disable the hook */\n enabled?: boolean\n /** Root margin for early triggering (default: \"100px\") */\n rootMargin?: string\n /** Intersection threshold 0-1 (default: 0.1) */\n threshold?: number\n}\n\nexport interface UseInfiniteScrollReturn {\n /** Ref to attach to sentinel element at end of list */\n sentinelRef: React.RefObject<HTMLDivElement>\n}\n\n/**\n * Hook for infinite scroll functionality using IntersectionObserver.\n * Triggers a callback when the sentinel element becomes visible in the viewport.\n *\n * @param options - Configuration options for infinite scroll behavior\n * @returns Object containing the sentinel ref to attach to a trigger element\n *\n * @example\n * ```tsx\n * function MyList() {\n * const { data, fetchNextPage, hasNextPage, isFetching } = useInfiniteQuery(...)\n *\n * const { sentinelRef } = useInfiniteScroll({\n * onLoadMore: fetchNextPage,\n * hasMore: hasNextPage ?? false,\n * isLoading: isFetching,\n * rootMargin: '200px'\n * })\n *\n * return (\n * <ScrollArea>\n * {data.pages.flat().map(item => <ListItem key={item.id} {...item} />)}\n * <div ref={sentinelRef} />\n * </ScrollArea>\n * )\n * }\n * ```\n */\nexport function useInfiniteScroll({\n onLoadMore,\n hasMore,\n isLoading = false,\n enabled = true,\n rootMargin = '100px',\n threshold = 0.1\n}: UseInfiniteScrollOptions): UseInfiniteScrollReturn {\n const sentinelRef = useRef<HTMLDivElement>(null)\n const loadMoreRef = useRef(onLoadMore)\n\n // Keep callback ref updated to avoid stale closures\n useEffect(() => {\n loadMoreRef.current = onLoadMore\n }, [onLoadMore])\n\n const handleIntersection = useCallback(\n (entries: IntersectionObserverEntry[]) => {\n const [entry] = entries\n if (entry?.isIntersecting && hasMore && !isLoading) {\n loadMoreRef.current()\n }\n },\n [hasMore, isLoading]\n )\n\n useEffect(() => {\n const sentinel = sentinelRef.current\n\n if (!sentinel || !enabled || !hasMore) {\n return\n }\n\n const observer = new IntersectionObserver(handleIntersection, {\n rootMargin,\n threshold\n })\n\n observer.observe(sentinel)\n\n return () => {\n observer.disconnect()\n }\n }, [enabled, hasMore, handleIntersection, rootMargin, threshold])\n\n return { sentinelRef }\n}\n","import { useEffect, useRef } from 'react'\n\nexport const useIsMounted = () => {\n const isMounted = useRef(false)\n\n useEffect(() => {\n isMounted.current = true\n return () => {\n isMounted.current = false\n }\n }, [])\n\n return isMounted\n}\n","import { useState } from 'react'\n\nexport enum UserPreference {\n SPACE_ID = 'spaceId',\n SIDEBAR_WIDTH = 'sidebarWidth',\n CURRENT_USER = 'currentUser',\n DIFF_VIEW_STYLE = 'DIFF_VIEW_STYLE',\n PULL_REQUEST_CREATION_OPTION = 'PULL_REQUEST_CREATION_OPTION',\n PULL_REQUEST_ACTIVITY_ORDER = 'PULL_REQUEST_ACTIVITY_ORDER'\n}\n\nexport function useLocalStorage<T>(key: UserPreference | string, initialValue: T) {\n // Initialize state from localStorage or fallback to initialValue\n const [storedValue, setStoredValue] = useState<T>(() => {\n try {\n const item = localStorage.getItem(key)\n return item ? JSON.parse(item) : initialValue\n } catch (error) {\n console.error('Error reading from localStorage:', error)\n return initialValue\n }\n })\n\n // Update both state and localStorage\n const setValue = (value: T) => {\n try {\n setStoredValue(value)\n localStorage.setItem(key, JSON.stringify(value))\n } catch (error) {\n console.error('Error writing to localStorage:', error)\n }\n }\n\n return [storedValue, setValue] as const\n}\n","import { useEffect } from 'react'\n\n// Note: This is a Chrome-only API\ninterface MemoryInfo {\n usedJSHeapSize: number\n totalJSHeapSize: number\n jsHeapSizeLimit: number\n}\n\ninterface ExtendedPerformance extends Performance {\n memory?: MemoryInfo\n}\n\ndeclare global {\n interface Window {\n performance: ExtendedPerformance\n }\n}\n\nconst BYTES_TO_MB = 1024 * 1024\n\n/**\n * Checks if the browser supports performance.memory API\n */\nconst hasMemoryAPI = (): boolean => {\n try {\n return !!(window.performance && window.performance.memory)\n } catch {\n return false\n }\n}\n\n/**\n * Gets the current memory usage in MB if available\n */\nconst getMemoryUsage = (): number | null => {\n try {\n if (!hasMemoryAPI()) return null\n\n const memoryInfo = window.performance.memory\n if (!memoryInfo) return null\n\n return Math.round(memoryInfo.usedJSHeapSize / BYTES_TO_MB)\n } catch {\n return null\n }\n}\n\n/**\n * Hook to monitor memory usage and run cleanup when threshold is exceeded\n * Note: Memory monitoring only works in Chromium-based browsers\n * @param cleanupFn Function to run when memory threshold is exceeded\n * @param threshold Memory threshold in MB\n * @param interval Check interval in ms\n */\nexport const useMemoryCleanup = (cleanupFn: () => void, threshold = 1200, interval = 30000) => {\n useEffect(() => {\n if (!hasMemoryAPI()) {\n console.debug('Memory API not available - memory cleanup disabled')\n return\n }\n\n const checkMemory = () => {\n const usedMemory = getMemoryUsage()\n\n if (usedMemory !== null && usedMemory > threshold) {\n console.debug(`Memory usage (${usedMemory}MB) exceeded threshold (${threshold}MB). Running cleanup...`)\n cleanupFn()\n }\n }\n\n const intervalId = setInterval(checkMemory, interval)\n return () => clearInterval(intervalId)\n }, [cleanupFn, threshold, interval])\n}\n","import { useCallback, useEffect, useMemo } from 'react'\n\nimport { CheckboxOptions } from '@/components'\n\nimport { useLocalStorage } from './use-local-storage'\n\ninterface UseColumnFilterProps {\n /**\n * Unique key for localStorage persistence\n */\n storageKey: string\n /**\n * Available columns configuration\n */\n columns: CheckboxOptions[]\n /**\n * Default visible columns (used when no localStorage value exists)\n */\n defaultVisibleColumns?: string[]\n}\n\ninterface UseColumnFilterReturn {\n /**\n * Currently visible column identifiers\n */\n visibleColumns: string[]\n /**\n * Toggle visibility of a specific column\n */\n toggleColumn: (columnName: string, checked: boolean) => void\n /**\n * Reset to default visible columns\n */\n resetColumns: () => void\n}\n\n/**\n * Hook that manages column visibility state with localStorage persistence\n * and returns a pre-configured DataTableColumnFilterDropdown component.\n *\n * @example\n * ```tsx\n * const columns = [\n * { label: 'Name', value: 'name' },\n * { label: 'Email', value: 'email' },\n * { label: 'Status', value: 'status' }\n * ]\n *\n * const { visibleColumns, toggleColumn, resetColumns } = useColumnFilter({\n * storageKey: 'users-table-columns',\n * columns,\n * defaultVisibleColumns: ['name', 'email']\n * })\n *\n * return (\n * <div>\n * <DataTable.ColumnFilter\n * columns={columns}\n * visibleColumns={visibleColumns}\n * onCheckedChange={toggleColumn}\n * onReset={resetColumns}\n * />\n * <DataTable columns={columns} visibleColumns={visibleColumns} />\n * </div>\n * )\n * ```\n */\nexport function useColumnFilter({\n storageKey,\n columns,\n defaultVisibleColumns\n}: UseColumnFilterProps): UseColumnFilterReturn {\n // Initialize default visible columns (all columns if not specified)\n const defaultColumns = useMemo(\n () => defaultVisibleColumns ?? columns.map(col => col.value),\n [defaultVisibleColumns, columns]\n )\n\n // Persist visible columns in localStorage\n const [storedVisibleColumns, setVisibleColumns] = useLocalStorage<string[]>(storageKey, defaultColumns)\n\n // Filter out any columns that don't exist in the current columns array\n const validColumnValues = useMemo(() => new Set(columns.map(col => col.value)), [columns])\n const visibleColumns = useMemo(\n () => storedVisibleColumns.filter(col => validColumnValues.has(col)),\n [storedVisibleColumns, validColumnValues]\n )\n\n // Sync cleaned column list back to localStorage if it changed\n useEffect(() => {\n const hasChanged =\n visibleColumns.length !== storedVisibleColumns.length ||\n visibleColumns.some((col, idx) => col !== storedVisibleColumns[idx])\n if (hasChanged) {\n setVisibleColumns(visibleColumns)\n }\n }, [visibleColumns, storedVisibleColumns, setVisibleColumns])\n\n // Toggle column visibility\n const toggleColumn = useCallback(\n (columnName: string, checked: boolean) => {\n if (checked) {\n // Add column if not already present\n const newColumns = visibleColumns.includes(columnName) ? visibleColumns : [...visibleColumns, columnName]\n setVisibleColumns(newColumns)\n } else {\n // Remove column\n const newColumns = visibleColumns.filter(col => col !== columnName)\n setVisibleColumns(newColumns)\n }\n },\n [visibleColumns, setVisibleColumns]\n )\n\n // Reset to default columns\n const resetColumns = useCallback(() => {\n setVisibleColumns(defaultColumns)\n }, [setVisibleColumns, defaultColumns])\n\n return {\n visibleColumns,\n toggleColumn,\n resetColumns\n }\n}\n","import { useEffect, useState } from 'react'\n\nfunction getVisiblePropEvent(): { hidden?: string; visibilityChange?: string } {\n // Set the name of the hidden property and the change event for visibility\n let hidden: string | undefined = undefined\n let visibilityChange: string | undefined = undefined\n if (typeof document.hidden !== 'undefined') {\n // Opera 12.10 and Firefox 18 and later support\n hidden = 'hidden'\n visibilityChange = 'visibilitychange'\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } else if (typeof (document as any).msHidden !== 'undefined') {\n hidden = 'msHidden'\n visibilityChange = 'msvisibilitychange'\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } else if (typeof (document as any).webkitHidden !== 'undefined') {\n hidden = 'webkitHidden'\n visibilityChange = 'webkitvisibilitychange'\n }\n return { hidden, visibilityChange }\n}\n\n/**\n * Hook to detect if the current browser tab is visible or hidden.\n * Uses the Page Visibility API to track tab visibility changes.\n *\n * @returns boolean - true if tab is visible, false if hidden\n *\n * @example\n * ```tsx\n * function MyComponent() {\n * const isTabVisible = useTabVisible()\n *\n * useEffect(() => {\n * if (isTabVisible) {\n * // Resume operations when tab becomes visible\n * } else {\n * // Pause operations when tab is hidden\n * }\n * }, [isTabVisible])\n * }\n * ```\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Page_Visibility_API\n */\nexport function useTabVisible(): boolean {\n const [visible, setVisibility] = useState<boolean>(true)\n\n useEffect(() => {\n const { hidden, visibilityChange } = getVisiblePropEvent()\n\n function handleVisibilityChange(): void {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (hidden && (document as any)[hidden]) {\n setVisibility(false)\n } else {\n setVisibility(true)\n }\n }\n\n if (\n typeof document.addEventListener === 'undefined' ||\n typeof hidden === 'undefined' ||\n typeof visibilityChange === 'undefined'\n ) {\n console.warn('The Page Visibility API is not supported')\n } else {\n // Handle page visibility change\n document.addEventListener(visibilityChange, handleVisibilityChange, false)\n return () => {\n document.removeEventListener(visibilityChange, handleVisibilityChange, false)\n }\n }\n }, [])\n\n return visible\n}\n","import { useEffect, useLayoutEffect, useRef, useState } from 'react'\n\nimport { useTabVisible } from './use-tab-visible'\n\nconst DEFAULT_POLLING_INTERVAL_IN_MS = 30_000\nconst INACTIVE_TAB_POLLING_INTERVAL_IN_MS = 60_000\n\nexport interface UsePollingOptions {\n /**\n * Polling interval in milliseconds when tab is active\n * @default 30000 (30 seconds)\n */\n pollingInterval?: number\n /**\n * Start polling based on a condition\n * @example Poll only on first page\n * @default false\n */\n startPolling?: boolean\n /**\n * Polling interval in milliseconds when tab is inactive\n * @default 60000 (60 seconds)\n */\n inactiveTabPollingInterval?: number\n /**\n * Enable polling even on inactive tabs with inactiveTabPollingInterval\n * Use with caution - needs a stop condition from userland\n * @default false\n */\n pollOnInactiveTab?: boolean\n}\n\n/**\n * Hook for polling with smart tab visibility handling.\n * Automatically adjusts polling interval based on tab visibility and ensures\n * only one request is in flight at a time.\n *\n * @param callback - Promise-returning function to be called at each polling interval (e.g., refetch)\n * @param options - Polling configuration options\n * @returns boolean - true if currently polling, false otherwise\n *\n * @example\n * ```tsx\n * function MyComponent() {\n * const { refetch } = useQuery(...)\n *\n * const isPolling = usePolling(refetch, {\n * startPolling: true,\n * pollingInterval: 10000, // 10 seconds\n * pollOnInactiveTab: false\n * })\n *\n * return <div>{isPolling ? 'Polling...' : 'Idle'}</div>\n * }\n * ```\n *\n * @remarks\n * - Remembers last call and re-polls only after it's resolved\n * - Automatically pauses polling when tab is inactive (unless pollOnInactiveTab is true)\n * - Uses longer interval for inactive tabs to reduce resource usage\n */\nexport function usePolling(\n callback: () => Promise<void> | undefined,\n {\n startPolling = false,\n pollingInterval = DEFAULT_POLLING_INTERVAL_IN_MS,\n inactiveTabPollingInterval = INACTIVE_TAB_POLLING_INTERVAL_IN_MS,\n pollOnInactiveTab = false\n }: UsePollingOptions\n): boolean {\n const savedCallback = useRef(callback)\n const [isPolling, setIsPolling] = useState(false)\n const tabVisible = useTabVisible()\n const interval = tabVisible ? pollingInterval : inactiveTabPollingInterval\n\n // Remember the latest callback if it changes.\n useLayoutEffect(() => {\n savedCallback.current = callback\n }, [callback])\n\n useEffect(() => {\n // Poll only if polling condition from component is met\n if (!startPolling) return\n // Poll only if tab is visible OR pollOnInactiveTab is true\n if (!tabVisible && !pollOnInactiveTab) return\n\n // Poll only when the current request is resolved\n if (!isPolling) {\n const timerId = setTimeout(async () => {\n setIsPolling(true)\n try {\n await savedCallback.current?.()\n } finally {\n setIsPolling(false)\n }\n }, interval)\n\n return () => clearTimeout(timerId)\n }\n }, [interval, isPolling, pollOnInactiveTab, startPolling, tabVisible])\n\n return isPolling\n}\n","export function lchToHex(lch: string): string | undefined {\n const match = lch.match(/lch\\(\\s*([\\d.]+)\\s+([\\d.]+)\\s+([\\d.]+)\\s*\\)/i)\n if (!match) return undefined\n\n const L = parseFloat(match[1])\n const C = parseFloat(match[2])\n const Hdeg = parseFloat(match[3])\n\n // LCH → LAB\n const H = (Hdeg * Math.PI) / 180\n const a = Math.cos(H) * C\n const b = Math.sin(H) * C\n\n // LAB → XYZ (D65)\n let y = (L + 16) / 116\n let x = a / 500 + y\n let z = y - b / 200\n\n const labToXyz = (n: number) => (n ** 3 > 0.008856 ? n ** 3 : (n - 16 / 116) / 7.787)\n\n x = labToXyz(x) * 0.95047\n y = labToXyz(y) * 1.0\n z = labToXyz(z) * 1.08883\n\n // XYZ → linear RGB\n let r = 3.2406 * x - 1.5372 * y - 0.4986 * z\n let g = -0.9689 * x + 1.8758 * y + 0.0415 * z\n let bVal = 0.0557 * x - 0.204 * y + 1.057 * z\n\n // Gamma correction\n const gamma = (c: number) => (c <= 0.0031308 ? 12.92 * c : 1.055 * Math.pow(c, 1 / 2.4) - 0.055)\n\n r = gamma(r)\n g = gamma(g)\n bVal = gamma(bVal)\n\n // Clamp + convert to hex\n const toHex = (c: number) =>\n Math.round(Math.min(1, Math.max(0, c)) * 255)\n .toString(16)\n .padStart(2, '0')\n\n return `#${toHex(r)}${toHex(g)}${toHex(bVal)}`\n}\n\nexport function rgbToHex(colorRgb: string): string | undefined {\n const match = colorRgb.match(/\\d+/g)\n if (!match || match.length < 3) return undefined\n\n const [r, g, b] = match.slice(0, 3).map(Number)\n\n return `#` + [r, g, b].map(x => x.toString(16).padStart(2, '0')).join('')\n}\n","import { editor } from 'monaco-editor'\n\nimport { ThemeDefinition } from '@harnessio/yaml-editor'\n\nimport { lchToHex, rgbToHex } from './color-utils'\n\n/** cache for monaco themes, we crate theme only once */\nconst monacoThemeCache: ThemeDefinition[] = []\n\n/**\n * IMPORTANT:\n * it is important to call function with current theme\n * as the variables names are same for all themes,\n * only the values are different depend on the theme\n */\nexport function getMonacoThemes(currentTheme: string) {\n const exist = monacoThemeCache.some(theme => {\n return theme.themeName === currentTheme\n })\n\n if (!exist) {\n const el = document.createElement('div')\n document.body.appendChild(el)\n const themeData = replaceVarsWithHex(themeWithVariables, el)\n document.body.removeChild(el)\n\n themeData.base = currentTheme.indexOf('light') > -1 ? 'vs' : 'vs-dark'\n\n monacoThemeCache.push({\n themeName: currentTheme,\n themeData\n })\n }\n\n return monacoThemeCache\n}\n\nfunction replaceVarsWithHex<T>(obj: T, el: HTMLElement): T {\n if (Array.isArray(obj)) {\n return obj.map(item => replaceVarsWithHex(item, el)) as unknown as T\n } else if (obj && typeof obj === 'object') {\n const result: Partial<T> = {}\n for (const key in obj) {\n result[key] = replaceVarsWithHex((obj as any)[key], el)\n }\n return result as T\n } else if (typeof obj === 'string' && obj.trim().startsWith('var(')) {\n return cssVarToHex(obj, el) as unknown as T\n } else {\n return obj\n }\n}\n\nfunction cssVarToHex(varName: string, el: HTMLElement) {\n el.style.color = `${varName}`\n const colorRgbOrLch = getComputedStyle(el).color\n\n const rgb = lchToHex(colorRgbOrLch)\n if (rgb) {\n return rgb\n }\n\n return rgbToHex(colorRgbOrLch)\n}\n\nexport const themeWithVariables = {\n base: 'vs' as editor.BuiltinTheme,\n inherit: false,\n rules: [\n { token: '', foreground: 'var(--cn-comp-monaco-foreground)', background: 'var(--cn-comp-monaco-background)' },\n\n { token: 'invalid', foreground: 'var(--cn-comp-monaco-invalid-text)' },\n { token: 'emphasis', fontStyle: 'italic' },\n { token: 'strong', fontStyle: 'bold' },\n\n { token: 'variable', foreground: 'var(--cn-comp-monaco-key)' },\n { token: 'variable.predefined', foreground: 'var(--cn-comp-monaco-constant)' },\n { token: 'constant', foreground: 'var(--cn-comp-monaco-constant)' },\n\n { token: 'comment', foreground: 'var(--cn-comp-monaco-comment)' },\n\n { token: 'number', foreground: 'var(--cn-comp-monaco-number)' },\n { token: 'number.hex', foreground: 'var(--cn-comp-monaco-number)' },\n\n { token: 'regexp', foreground: 'var(--cn-comp-monaco-constant)' },\n { token: 'annotation', foreground: 'var(--cn-comp-monaco-constant)' },\n { token: 'type', foreground: 'var(--cn-comp-monaco-tag)' },\n\n { token: 'delimiter', foreground: 'var(--cn-comp-monaco-delimiter)' },\n { token: 'delimiter.html', foreground: 'var(--cn-comp-monaco-delimiter)' },\n { token: 'delimiter.xml', foreground: 'var(--cn-comp-monaco-delimiter)' },\n\n { token: 'tag', foreground: 'var(--cn-comp-monaco-anchor)' },\n { token: 'tag.id.pug', foreground: 'var(--cn-comp-monaco-tag)' },\n { token: 'tag.class.pug', foreground: 'var(--cn-comp-monaco-tag)' },\n { token: 'meta.scss', foreground: 'var(--cn-comp-monaco-key)' },\n { token: 'metatag', foreground: 'var(--cn-comp-monaco-key)' },\n { token: 'metatag.content.html', foreground: 'var(--cn-comp-monaco-key)' },\n { token: 'metatag.html', foreground: 'var(--cn-comp-monaco-key)' },\n { token: 'metatag.xml', foreground: 'var(--cn-comp-monaco-key)' },\n { token: 'metatag.php', fontStyle: 'bold' },\n\n { token: 'key', foreground: 'var(--cn-comp-monaco-key)' },\n { token: 'string.key.json', foreground: 'var(--cn-comp-monaco-key)' },\n { token: 'string.value.json', foreground: 'var(--cn-comp-monaco-string)' },\n\n { token: 'attribute.name', foreground: 'var(--cn-comp-monaco-key)' },\n { token: 'attribute.value', foreground: 'var(--cn-comp-monaco-string)' },\n { token: 'attribute.value.number', foreground: 'var(--cn-comp-monaco-number)' },\n { token: 'attribute.value.unit', foreground: 'var(--cn-comp-monaco-number)' },\n { token: 'attribute.value.html', foreground: 'var(--cn-comp-monaco-string)' },\n { token: 'attribute.value.xml', foreground: 'var(--cn-comp-monaco-string)' },\n\n { token: 'string', foreground: 'var(--cn-comp-monaco-string)' },\n { token: 'string.html', foreground: 'var(--cn-comp-monaco-string)' },\n { token: 'string.sql', foreground: 'var(--cn-comp-monaco-string)' },\n { token: 'string.yaml', foreground: 'var(--cn-comp-monaco-string)' },\n\n { token: 'keyword', foreground: 'var(--cn-comp-monaco-boolean)' },\n { token: 'keyword.json', foreground: 'var(--cn-comp-monaco-boolean)' },\n { token: 'keyword.flow', foreground: 'var(--cn-comp-monaco-boolean)' },\n { token: 'keyword.flow.scss', foreground: 'var(--cn-comp-monaco-boolean)' },\n\n { token: 'operator.scss', foreground: 'var(--cn-comp-monaco-delimiter)' },\n { token: 'operator.sql', foreground: 'var(--cn-comp-monaco-delimiter)' },\n { token: 'operator.swift', foreground: 'var(--cn-comp-monaco-delimiter)' },\n { token: 'predefined.sql', foreground: 'var(--cn-comp-monaco-constant)' }\n ],\n\n colors: {\n 'editor.background': 'var(--cn-comp-monaco-background)',\n 'editor.foreground': 'var(--cn-comp-monaco-foreground)',\n 'editor.selectionBackground': 'var(--cn-comp-monaco-selection)',\n 'editor.lineHighlightBackground': 'var(--cn-comp-monaco-line-highlight)',\n 'editorCursor.foreground': 'var(--cn-comp-monaco-cursor)',\n 'editorWhitespace.foreground': 'var(--cn-comp-monaco-whitespace)',\n 'editorLineNumber.foreground': 'var(--cn-comp-monaco-line-number)',\n 'editorLineNumber.activeForeground': 'var(--cn-comp-monaco-foreground)',\n 'editorIndentGuide.background': 'var(--cn-comp-monaco-indent-guide)',\n 'editorIndentGuide.activeBackground': 'var(--cn-comp-monaco-indent-guide-active)',\n 'editorError.background': 'var(--cn-comp-monaco-invalid-bg)',\n 'editorError.foreground': 'var(--cn-comp-monaco-invalid-text)'\n }\n}\n","import { useEffect, useState } from 'react'\n\nimport { getMonacoThemes } from '@utils/monaco-theme-utils'\n\nimport { YamlEditorProps } from '@harnessio/yaml-editor'\n\ntype ThemeConfig = YamlEditorProps<unknown>['themeConfig']\n\nexport function useMonacoTheme(theme?: string, rootSelector = 'html'): ThemeConfig {\n const [themeConfig, setThemeConfig] = useState<ThemeConfig>(undefined)\n\n useEffect(() => {\n if (!theme) return\n\n let attempts = 0\n const maxAttempts = 5\n const intervalMs = 100\n let intervalId: number | undefined\n\n const tryApplyTheme = () => {\n attempts++\n\n const rootEl = document.querySelector(rootSelector)\n if (!rootEl) return false\n\n const htmlClass = rootEl.className\n const hasThemeClass = htmlClass.includes(theme)\n\n if (hasThemeClass) {\n setThemeConfig({\n defaultTheme: theme,\n themes: getMonacoThemes(theme)\n })\n\n if (intervalId) {\n clearInterval(intervalId)\n }\n\n return true\n }\n\n if (attempts >= maxAttempts) {\n if (intervalId) {\n clearInterval(intervalId)\n }\n }\n\n return false\n }\n\n // Execute immediately\n const appliedImmediately = tryApplyTheme()\n\n // Poll if not execute immediately\n if (!appliedImmediately) {\n intervalId = window.setInterval(tryApplyTheme, intervalMs)\n }\n\n return () => {\n if (intervalId) {\n clearInterval(intervalId)\n }\n }\n }, [rootSelector, theme])\n\n return themeConfig\n}\n","import { useCallback } from 'react'\n\nimport { getThemeCSSName, type FullTheme } from '@/context/theme/types'\n\nexport type ThemeManifest = Record<string, string>\n\nconst THEME_ATTR = 'data-theme-loader'\nconst THEME_ATTR_VALUE = 'cn-on-demand-theme'\nconst SELECTOR = `link[${THEME_ATTR}=\"${THEME_ATTR_VALUE}\"]`\n\nfunction removeAllThemeLinks(): void {\n document.querySelectorAll(SELECTOR).forEach(el => el.remove())\n}\n\nexport function useThemeCSSLoader(themesBasePath: string, manifest: ThemeManifest) {\n const loadTheme = useCallback(\n (theme: FullTheme): Promise<void> => {\n const cssName = getThemeCSSName(theme)\n const existingLinks = document.querySelectorAll(SELECTOR) as NodeListOf<HTMLLinkElement>\n\n /**\n * dark-std-std, light-std-std themes are already bundled, so no need to load them\n */\n if (!cssName) {\n removeAllThemeLinks()\n return Promise.resolve()\n }\n\n const filename = manifest[cssName]\n if (!filename) return Promise.resolve()\n\n const href = `${themesBasePath}/${filename}`\n\n if (Array.from(existingLinks).some(link => link.getAttribute('href') === href)) {\n return Promise.resolve()\n }\n\n return new Promise<void>(resolve => {\n const link = document.createElement('link')\n link.rel = 'stylesheet'\n link.href = href\n\n link.onload = () => {\n removeAllThemeLinks()\n link.setAttribute(THEME_ATTR, THEME_ATTR_VALUE)\n resolve()\n }\n\n link.onerror = () => {\n removeAllThemeLinks()\n link.setAttribute(THEME_ATTR, THEME_ATTR_VALUE)\n resolve()\n }\n\n document.head.appendChild(link)\n })\n },\n [themesBasePath, manifest]\n )\n\n return { loadTheme }\n}\n"],"names":["keys","object","isArrayLike","arrayLikeKeys","baseKeys","getAllKeys","baseGetAllKeys","getSymbols","HASH_UNDEFINED","setCacheAdd","value","setCacheHas","SetCache","values","index","length","MapCache","arraySome","array","predicate","cacheHas","cache","key","COMPARE_PARTIAL_FLAG","COMPARE_UNORDERED_FLAG","equalArrays","other","bitmask","customizer","equalFunc","stack","isPartial","arrLength","othLength","arrStacked","othStacked","result","seen","arrValue","othValue","compared","othIndex","mapToArray","map","setToArray","set","boolTag","dateTag","errorTag","mapTag","numberTag","regexpTag","setTag","stringTag","symbolTag","arrayBufferTag","dataViewTag","symbolProto","Symbol","symbolValueOf","equalByTag","tag","Uint8Array","eq","convert","stacked","objectProto","hasOwnProperty","equalObjects","objProps","objLength","othProps","objStacked","skipCtor","objValue","objCtor","othCtor","argsTag","arrayTag","objectTag","baseIsEqualDeep","objIsArr","isArray","othIsArr","objTag","getTag","othTag","objIsObj","othIsObj","isSameTag","isBuffer","Stack","isTypedArray","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","baseIsEqual","isObjectLike","isEqualWith","useCommonFilter","useSearchParams","useRouterContext","searchParams","setSearchParams","searchQuery","handleSearch","useCallback","event","params","latestSearchQuery","_a","isEmpty","isEqual","a","b","x","y","useDeepCompareMemoize","ref","useRef","useDeepCompareEffect","effect","deps","useEffect","useDeepCompareMemo","useMemo","useEventListener","type","listener","element","options","parametersCheck","useCustomEventListener","name","dispatchCustomEvent","detail","useInfiniteScroll","onLoadMore","hasMore","isLoading","enabled","rootMargin","threshold","sentinelRef","loadMoreRef","handleIntersection","entries","entry","sentinel","observer","useIsMounted","isMounted","UserPreference","useLocalStorage","initialValue","storedValue","setStoredValue","useState","item","error","BYTES_TO_MB","hasMemoryAPI","getMemoryUsage","memoryInfo","useMemoryCleanup","cleanupFn","interval","intervalId","usedMemory","useColumnFilter","storageKey","columns","defaultVisibleColumns","defaultColumns","col","storedVisibleColumns","setVisibleColumns","validColumnValues","visibleColumns","idx","toggleColumn","columnName","checked","newColumns","resetColumns","getVisiblePropEvent","hidden","visibilityChange","useTabVisible","visible","setVisibility","handleVisibilityChange","DEFAULT_POLLING_INTERVAL_IN_MS","INACTIVE_TAB_POLLING_INTERVAL_IN_MS","usePolling","callback","startPolling","pollingInterval","inactiveTabPollingInterval","pollOnInactiveTab","savedCallback","isPolling","setIsPolling","tabVisible","useLayoutEffect","timerId","lchToHex","lch","match","L","C","H","z","labToXyz","n","r","g","bVal","gamma","c","toHex","rgbToHex","colorRgb","monacoThemeCache","getMonacoThemes","currentTheme","theme","el","themeData","replaceVarsWithHex","themeWithVariables","obj","cssVarToHex","varName","colorRgbOrLch","rgb","useMonacoTheme","rootSelector","themeConfig","setThemeConfig","attempts","maxAttempts","intervalMs","tryApplyTheme","rootEl","THEME_ATTR","THEME_ATTR_VALUE","SELECTOR","removeAllThemeLinks","useThemeCSSLoader","themesBasePath","manifest","cssName","getThemeCSSName","existingLinks","filename","href","link","resolve"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14]}