@synnaxlabs/pluto 0.52.4 → 0.52.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (165) hide show
  1. package/dist/{Animated-6qL1fRZx.js → Animated-BU-7FzeV.js} +84 -83
  2. package/dist/{Animated-vGAs0qOH.cjs → Animated-BhCfNN8N.cjs} +1 -1
  3. package/dist/{Animated-Bn4jMc7c.js → Animated-C1yZ_uus.js} +2 -2
  4. package/dist/Animated-C4AcIYpH.cjs +1 -0
  5. package/dist/{Copy-DuC8dTK7.cjs → Copy-6Mur4EW2.cjs} +1 -1
  6. package/dist/{Copy-CzkBKGca.js → Copy-eucLPEWo.js} +4 -4
  7. package/dist/{Dialog-DNrgykEv.cjs → Dialog-DKMROHkj.cjs} +1 -1
  8. package/dist/{Dialog-Dos5l3K2.js → Dialog-dxzsEWgY.js} +1 -1
  9. package/dist/{Editable-4ZwvICC4.js → Editable-C17ILP50.js} +4 -4
  10. package/dist/{Haul-V5NQI3MY.cjs → Haul-BShXYNxx.cjs} +1 -1
  11. package/dist/{Haul-CxbMtSY4.js → Haul-Dv-7aC_g.js} +1 -1
  12. package/dist/{Items-DYYNNIjr.cjs → Items-806FU8Ig.cjs} +1 -1
  13. package/dist/{Items-CNPUoiob.js → Items-CPIJP3y9.js} +5 -5
  14. package/dist/Menu-C2vz25UP.js +139 -0
  15. package/dist/Menu-ZISpSd-o.cjs +1 -0
  16. package/dist/{Provider-DSMJjyuY.cjs → Provider-B1JpVCIg.cjs} +1 -1
  17. package/dist/{Provider-ZIy-UlnE.js → Provider-CfgP1iWx.js} +2 -2
  18. package/dist/{Tags-6OV0_eBz.cjs → Tags-BE6wPgNv.cjs} +1 -1
  19. package/dist/{Tags-BUDnOqms.js → Tags-BTbNRoip.js} +8 -8
  20. package/dist/{Text-BSTMZRuo.js → Text-BIGgPTpY.js} +894 -894
  21. package/dist/Text-_KoMj9Wf.cjs +1 -0
  22. package/dist/button.cjs +1 -1
  23. package/dist/button.js +1 -1
  24. package/dist/color.cjs +1 -1
  25. package/dist/color.js +1 -1
  26. package/dist/dialog.cjs +1 -1
  27. package/dist/dialog.js +1 -1
  28. package/dist/{external-CmYpRWry.cjs → external-9dcu01v6.cjs} +1 -1
  29. package/dist/{external-ieDANY3X.cjs → external-BY9Nw2gP.cjs} +1 -1
  30. package/dist/{external-CG70NZqY.js → external-BnrrTvLw.js} +6 -6
  31. package/dist/{external-C0rrTDhu.cjs → external-ByPmlfc-.cjs} +1 -1
  32. package/dist/{external--liXQuyF.cjs → external-Bzko45Io.cjs} +1 -1
  33. package/dist/{external-BRxBwBtj.cjs → external-C0FbiHkb.cjs} +33 -33
  34. package/dist/{external-DFvPOUIQ.cjs → external-CROdzUNR.cjs} +1 -1
  35. package/dist/{external-Ci1Iy9ku.js → external-Cd6J4yXU.js} +1 -1
  36. package/dist/{external-Ctnukdzx.js → external-CdFqxvDi.js} +3 -3
  37. package/dist/{external-DAotNquC.js → external-CfHgwpZG.js} +1 -1
  38. package/dist/{external-JwicH0Yv.js → external-Ciq_Ux5w.js} +8 -8
  39. package/dist/{external-Bjd-DyWx.js → external-CsOIr_FG.js} +4551 -4551
  40. package/dist/{external-s6DOSL29.js → external-DCkEHk2F.js} +3 -3
  41. package/dist/{external-Czkrdv2A.js → external-DCvZU09g.js} +10 -10
  42. package/dist/{external-B3ipr7m2.cjs → external-DOHVmFq6.cjs} +1 -1
  43. package/dist/{external-N5bKB8Zx.cjs → external-DUYMFee8.cjs} +1 -1
  44. package/dist/{external-CoCI_tg5.js → external-Dn55rCp_.js} +4 -4
  45. package/dist/{external-B7UnU0MW.js → external-Dvn_KRPF.js} +4 -4
  46. package/dist/{external-DWEpl5aM.cjs → external-RARODBsH.cjs} +1 -1
  47. package/dist/{external-Ba2qQp_c.js → external-UzXlHlr9.js} +1 -1
  48. package/dist/{external-Czv2P05t.cjs → external-VtOg79_6.cjs} +1 -1
  49. package/dist/{external-CvYxFUrc.js → external-auCyrXJv.js} +3 -3
  50. package/dist/{external-ZtJmVgiY.cjs → external-qZkew-g7.cjs} +1 -1
  51. package/dist/header.cjs +1 -1
  52. package/dist/header.js +1 -1
  53. package/dist/{hooks-CWEfATTF.js → hooks-DPk_YYCv.js} +2 -2
  54. package/dist/{hooks-C4ji1BSZ.cjs → hooks-DmaLjPZJ.cjs} +1 -1
  55. package/dist/index.cjs +17 -17
  56. package/dist/index.js +6497 -6487
  57. package/dist/input.cjs +1 -1
  58. package/dist/input.js +1 -1
  59. package/dist/list.cjs +1 -1
  60. package/dist/list.js +1 -1
  61. package/dist/menu.cjs +1 -1
  62. package/dist/menu.js +1 -1
  63. package/dist/pluto.css +1 -1
  64. package/dist/src/access/policy/external.d.ts +0 -1
  65. package/dist/src/access/policy/external.d.ts.map +1 -1
  66. package/dist/src/access/role/external.d.ts +0 -1
  67. package/dist/src/access/role/external.d.ts.map +1 -1
  68. package/dist/src/channel/{CreateCalculatedIcon.d.ts → Icons.d.ts} +2 -1
  69. package/dist/src/channel/Icons.d.ts.map +1 -0
  70. package/dist/src/channel/external.d.ts +1 -1
  71. package/dist/src/channel/external.d.ts.map +1 -1
  72. package/dist/src/device/queries.d.ts +1 -1
  73. package/dist/src/flex/Box.d.ts +4 -4
  74. package/dist/src/hooks/useResize.d.ts +4 -1
  75. package/dist/src/hooks/useResize.d.ts.map +1 -1
  76. package/dist/src/hooks/useResize.spec.d.ts +2 -0
  77. package/dist/src/hooks/useResize.spec.d.ts.map +1 -0
  78. package/dist/src/{user/CreateIcon.d.ts → lineplot/Icons.d.ts} +1 -1
  79. package/dist/src/lineplot/Icons.d.ts.map +1 -0
  80. package/dist/src/lineplot/aether/XAxis.d.ts +4 -4
  81. package/dist/src/lineplot/aether/YAxis.d.ts +4 -4
  82. package/dist/src/lineplot/aether/axis.d.ts +2 -2
  83. package/dist/src/lineplot/external.d.ts +1 -0
  84. package/dist/src/lineplot/external.d.ts.map +1 -1
  85. package/dist/src/lineplot/range/aether/annotation.d.ts +4 -4
  86. package/dist/src/lineplot/tooltip/aether/tooltip.d.ts +8 -8
  87. package/dist/src/{ranger/CreateIcon.d.ts → log/Icons.d.ts} +1 -1
  88. package/dist/src/log/Icons.d.ts.map +1 -0
  89. package/dist/src/log/aether/Log.d.ts +6 -6
  90. package/dist/src/log/external.d.ts +1 -0
  91. package/dist/src/log/external.d.ts.map +1 -1
  92. package/dist/src/menu/ContextMenu.d.ts.map +1 -1
  93. package/dist/src/menu/ContextMenu.spec.d.ts +2 -0
  94. package/dist/src/menu/ContextMenu.spec.d.ts.map +1 -0
  95. package/dist/src/ranger/Icons.d.ts +3 -0
  96. package/dist/src/ranger/Icons.d.ts.map +1 -0
  97. package/dist/src/ranger/external.d.ts +1 -1
  98. package/dist/src/ranger/external.d.ts.map +1 -1
  99. package/dist/src/ranger/queries.d.ts +2 -2
  100. package/dist/src/schematic/Icons.d.ts +3 -0
  101. package/dist/src/schematic/Icons.d.ts.map +1 -0
  102. package/dist/src/schematic/external.d.ts +1 -0
  103. package/dist/src/schematic/external.d.ts.map +1 -1
  104. package/dist/src/schematic/symbol/registry.d.ts +4 -4
  105. package/dist/src/{access/policy/CreateIcon.d.ts → status/base/Icons.d.ts} +1 -1
  106. package/dist/src/status/base/Icons.d.ts.map +1 -0
  107. package/dist/src/status/base/external.d.ts +1 -1
  108. package/dist/src/status/base/external.d.ts.map +1 -1
  109. package/dist/src/status/queries.d.ts +7 -7
  110. package/dist/src/table/Icons.d.ts +3 -0
  111. package/dist/src/table/Icons.d.ts.map +1 -0
  112. package/dist/src/table/cells/Cells.d.ts +4 -4
  113. package/dist/src/table/external.d.ts +1 -0
  114. package/dist/src/table/external.d.ts.map +1 -1
  115. package/dist/src/telem/control/aether/controller.d.ts +1 -1
  116. package/dist/src/telem/control/aether/indicator.d.ts +5 -5
  117. package/dist/src/telem/control/aether/legend.d.ts +2 -2
  118. package/dist/src/telem/control/aether/state.d.ts +1 -1
  119. package/dist/src/text/base/types.d.ts +2 -2
  120. package/dist/src/theming/aether/provider.d.ts +138 -138
  121. package/dist/src/theming/base/theme.d.ts +140 -140
  122. package/dist/src/triggers/triggers.d.ts +21 -21
  123. package/dist/src/user/Icons.d.ts +3 -0
  124. package/dist/src/user/Icons.d.ts.map +1 -0
  125. package/dist/src/user/external.d.ts +1 -1
  126. package/dist/src/user/external.d.ts.map +1 -1
  127. package/dist/src/user/queries.d.ts +1 -1
  128. package/dist/src/viewport/use.d.ts +1 -1
  129. package/dist/src/vis/axis/axis.d.ts +2 -2
  130. package/dist/src/vis/gauge/aether/gauge.d.ts +6 -6
  131. package/dist/src/vis/gauge/use.d.ts +2 -2
  132. package/dist/src/vis/line/aether/line.d.ts +1 -1
  133. package/dist/src/vis/measure/aether/measure.d.ts +8 -8
  134. package/dist/src/vis/rule/aether/aether.d.ts +2 -2
  135. package/dist/src/vis/value/aether/value.d.ts +9 -9
  136. package/dist/src/vis/value/use.d.ts +3 -3
  137. package/dist/src/workspace/Icons.d.ts +5 -0
  138. package/dist/src/workspace/Icons.d.ts.map +1 -0
  139. package/dist/src/workspace/external.d.ts +3 -0
  140. package/dist/src/workspace/external.d.ts.map +1 -0
  141. package/dist/src/workspace/index.d.ts +1 -1
  142. package/dist/src/workspace/index.d.ts.map +1 -1
  143. package/dist/src/workspace/queries.d.ts +1 -1
  144. package/dist/tabs.cjs +1 -1
  145. package/dist/tabs.js +1 -1
  146. package/dist/text.js +2 -2
  147. package/dist/theming.cjs +1 -1
  148. package/dist/theming.js +2 -2
  149. package/dist/tree.cjs +1 -1
  150. package/dist/tree.js +1 -1
  151. package/dist/triggers.cjs +1 -1
  152. package/dist/triggers.js +1 -1
  153. package/package.json +6 -6
  154. package/dist/Animated-xK__WUQp.cjs +0 -1
  155. package/dist/Menu-C0scum-k.cjs +0 -1
  156. package/dist/Menu-CTuOX5DR.js +0 -136
  157. package/dist/Text-C2_VsLzw.cjs +0 -1
  158. package/dist/src/access/policy/CreateIcon.d.ts.map +0 -1
  159. package/dist/src/access/role/CreateIcon.d.ts +0 -3
  160. package/dist/src/access/role/CreateIcon.d.ts.map +0 -1
  161. package/dist/src/channel/CreateCalculatedIcon.d.ts.map +0 -1
  162. package/dist/src/ranger/CreateIcon.d.ts.map +0 -1
  163. package/dist/src/status/base/CreateIcon.d.ts +0 -3
  164. package/dist/src/status/base/CreateIcon.d.ts.map +0 -1
  165. package/dist/src/user/CreateIcon.d.ts.map +0 -1
@@ -1,68 +1,69 @@
1
1
  import { j as D } from "./jsx-runtime-tc70JA_2.js";
2
2
  import { box as r, xy as G, debounce as me, location as t, array as ee, direction as Ee } from "@synnaxlabs/x";
3
3
  import { useCallback as p, useEffect as Y, useRef as w, useState as Ce, useMemo as te } from "react";
4
- import { a as xe, H as Te, c as se } from "./Text-BSTMZRuo.js";
4
+ import { a as xe, H as Te, c as se } from "./Text-BIGgPTpY.js";
5
5
  import { C as m } from "./css-D90kZTM8.js";
6
6
  import { a as ie } from "./Box-Bi280MYh.js";
7
- import { c as k, f as re } from "./Editable-4ZwvICC4.js";
8
- import { u as he } from "./hooks-CWEfATTF.js";
7
+ import { d as k, b as re } from "./Editable-C17ILP50.js";
8
+ import { u as he } from "./hooks-DPk_YYCv.js";
9
9
  import { b as ye } from "./types-CGRCBVD4.js";
10
- import "./Provider-ZIy-UlnE.js";
10
+ import "./Provider-CfgP1iWx.js";
11
11
  const Oe = ({
12
12
  ref: e,
13
- onClickOutside: n,
13
+ onClickOutside: o,
14
14
  exclude: s
15
15
  }) => {
16
- const g = k(s), o = p(
16
+ const f = k(s), n = p(
17
17
  (c) => {
18
- const i = e.current, l = r.construct(window.document.documentElement), d = G.construct(c), a = g.current;
18
+ const i = e.current, l = r.construct(window.document.documentElement), d = G.construct(c), a = f.current;
19
19
  if (a != null) {
20
20
  if (typeof a == "function") {
21
21
  if (a(c)) return;
22
22
  } else if (a.some((u) => u.current?.contains(c.target))) return;
23
23
  }
24
- i == null || i.contains(c.target) || r.contains(i, d) || !r.contains(l, d) || n();
24
+ i == null || i.contains(c.target) || r.contains(i, d) || !r.contains(l, d) || o();
25
25
  },
26
- [n]
26
+ [o]
27
27
  );
28
- Y(() => (document.addEventListener("mousedown", o), () => document.removeEventListener("mousedown", o)), [o]);
29
- }, ne = (e, n = {}) => {
30
- const { triggers: s = [], debounce: g = 0, enabled: o = !0 } = n, c = w(r.ZERO), i = w(null), l = w(null), d = xe(() => s, Te, [
28
+ Y(() => (document.addEventListener("mousedown", n), () => document.removeEventListener("mousedown", n)), [n]);
29
+ }, ne = (e, o = {}) => {
30
+ const { triggers: s = [], debounce: f = 0, enabled: n = !0 } = o, c = w(r.ZERO), i = w(null), l = w(null), d = xe(() => s, Te, [
31
31
  s
32
32
  ]), a = p(
33
33
  (u) => {
34
34
  l.current != null && l.current.disconnect(), c.current ??= r.ZERO;
35
35
  const E = me(() => {
36
- const f = r.construct(u);
37
- pe(d, c.current, f) && (c.current = f, e(f, i.current));
38
- }, g);
36
+ const g = r.construct(u);
37
+ pe(d, c.current, g) && (c.current = g, e(g, i.current));
38
+ }, f);
39
39
  l.current = new ResizeObserver(E), l.current.observe(u);
40
40
  },
41
- [d, e, g]
41
+ [d, e, f]
42
42
  );
43
- return Y(() => (i.current != null && o && a(i.current), () => l.current?.disconnect()), [a, o]), p(
43
+ return Y(() => (i.current != null && n && a(i.current), () => l.current?.disconnect()), [a, n]), p(
44
44
  (u) => {
45
- i.current = u, u != null && o && a(u);
45
+ i.current = u, u != null && n && a(u);
46
46
  },
47
47
  [a]
48
48
  );
49
- }, pe = (e, n, s) => e.length === 0 ? !r.equals(s, n) : !!(e.includes("x") && r.width(n) !== r.width(s) || e.includes("y") && r.height(n) !== r.height(s)), be = (e) => {
50
- const n = k(e);
49
+ }, pe = (e, o, s) => e.length === 0 ? !r.equals(s, o) : !!(e.includes("x") && r.width(o) !== r.width(s) || e.includes("y") && r.height(o) !== r.height(s)), be = (e, o = {}) => {
50
+ const { enabled: s = !0 } = o, f = k(e);
51
51
  Y(() => {
52
- const s = () => n.current(
52
+ if (!s) return;
53
+ const n = () => f.current(
53
54
  r.construct(window.innerWidth, window.innerHeight),
54
55
  window.document.documentElement
55
56
  );
56
- return window.addEventListener("resize", s), () => window.removeEventListener("resize", s);
57
- }, []);
57
+ return window.addEventListener("resize", n), () => window.removeEventListener("resize", n);
58
+ }, [s]);
58
59
  }, H = m.BE("dialog", "bg"), ke = ({
59
60
  children: e,
60
- visible: n,
61
+ visible: o,
61
62
  ...s
62
63
  }) => /* @__PURE__ */ D.jsx(
63
64
  ie,
64
65
  {
65
- className: m(H, m.visible(n)),
66
+ className: m(H, m.visible(o)),
66
67
  empty: !0,
67
68
  align: "center",
68
69
  ...s,
@@ -70,30 +71,30 @@ const Oe = ({
70
71
  }
71
72
  ), M = (e) => e == null ? { x: void 0, y: void 0 } : typeof e != "string" ? e : Ee.isX(e) ? { x: e, y: void 0 } : { x: void 0, y: e }, z = (e) => typeof e == "string" || "x" in e || "y" in e ? { targetCorner: e, dialogCorner: void 0 } : e, Re = ({
72
73
  initial: e,
73
- prefer: n = [],
74
+ prefer: o = [],
74
75
  disable: s = []
75
76
  }) => {
76
- const g = ee.toArray(n).map(z), o = ee.toArray(s).map(z), c = [];
77
+ const f = ee.toArray(o).map(z), n = ee.toArray(s).map(z), c = [];
77
78
  if (e != null) {
78
79
  const i = z(e), l = M(i.targetCorner), d = M(i.dialogCorner);
79
80
  t.XY_LOCATIONS.forEach((u) => {
80
81
  t.xyEquals(u, t.CENTER) || l.x != null && u.x !== l.x || l.y != null && u.y !== l.y || t.XY_LOCATIONS.forEach((E) => {
81
82
  if (t.xyEquals(E, t.CENTER) || d.x != null && E.x !== d.x || d.y != null && E.y !== d.y) return;
82
- const f = { targetCorner: u, dialogCorner: E };
83
- c.push(f);
83
+ const g = { targetCorner: u, dialogCorner: E };
84
+ c.push(g);
84
85
  });
85
86
  });
86
- const a = c.filter((u) => !X(u, o));
87
+ const a = c.filter((u) => !X(u, n));
87
88
  return a.length == 0 ? c.slice(0, 1) : a;
88
89
  }
89
- return g.forEach((i) => {
90
+ return f.forEach((i) => {
90
91
  const l = M(i.targetCorner), d = M(i.dialogCorner);
91
92
  t.XY_LOCATIONS.forEach((a) => {
92
93
  t.xyEquals(a, t.CENTER) || t.xyMatches(a, l) && t.XY_LOCATIONS.forEach((u) => {
93
94
  if (t.xyEquals(u, t.CENTER) || !t.xyMatches(u, d)) return;
94
95
  const E = { targetCorner: a, dialogCorner: u };
95
- !X(E, o) && !c.some(
96
- (f) => t.xyEquals(f.targetCorner, a) && t.xyEquals(f.dialogCorner, u)
96
+ !X(E, n) && !c.some(
97
+ (g) => t.xyEquals(g.targetCorner, a) && t.xyEquals(g.dialogCorner, u)
97
98
  ) && c.push(E);
98
99
  });
99
100
  });
@@ -101,25 +102,25 @@ const Oe = ({
101
102
  t.xyEquals(i, t.CENTER) || t.XY_LOCATIONS.forEach((l) => {
102
103
  if (t.xyEquals(l, t.CENTER)) return;
103
104
  const d = { targetCorner: i, dialogCorner: l };
104
- !X(d, o) && !c.some(
105
+ !X(d, n) && !c.some(
105
106
  (a) => t.xyEquals(a.targetCorner, i) && t.xyEquals(a.dialogCorner, l)
106
107
  ) && c.push(d);
107
108
  });
108
109
  }), c;
109
- }, X = (e, n) => n.some((s) => {
110
- const g = M(s.targetCorner), o = M(s.dialogCorner);
111
- return t.xyEquals(s.dialogCorner, t.CENTER) ? t.xyMatches(e.targetCorner, g) : t.xyMatches(e.targetCorner, g) && t.xyMatches(e.dialogCorner, o);
110
+ }, X = (e, o) => o.some((s) => {
111
+ const f = M(s.targetCorner), n = M(s.dialogCorner);
112
+ return t.xyEquals(s.dialogCorner, t.CENTER) ? t.xyMatches(e.targetCorner, f) : t.xyMatches(e.targetCorner, f) && t.xyMatches(e.dialogCorner, n);
112
113
  }), Ne = ({
113
114
  container: e,
114
- target: n,
115
+ target: o,
115
116
  dialog: s,
116
- initial: g,
117
- prefer: o,
117
+ initial: f,
118
+ prefer: n,
118
119
  disable: c,
119
120
  offset: i
120
121
  }) => {
121
- const l = Re({ initial: g, prefer: o, disable: c }), d = r.construct(e), a = r.construct(n), u = r.construct(s), E = l.reduce(
122
- (f, T) => {
122
+ const l = Re({ initial: f, prefer: n, disable: c }), d = r.construct(e), a = r.construct(o), u = r.construct(s), E = l.reduce(
123
+ (g, T) => {
123
124
  const h = Le({
124
125
  ...T,
125
126
  container: d,
@@ -127,7 +128,7 @@ const Oe = ({
127
128
  dialog: u,
128
129
  offset: i
129
130
  });
130
- return h.area > f.area ? h : f;
131
+ return h.area > g.area ? h : g;
131
132
  },
132
133
  {
133
134
  area: -1 / 0,
@@ -143,29 +144,29 @@ const Oe = ({
143
144
  };
144
145
  }, Le = ({
145
146
  targetCorner: e,
146
- dialogCorner: n,
147
+ dialogCorner: o,
147
148
  container: s,
148
- target: g,
149
- dialog: o,
149
+ target: f,
150
+ dialog: n,
150
151
  offset: c
151
152
  }) => {
152
- let i = r.xyLoc(g, e);
153
+ let i = r.xyLoc(f, e);
153
154
  if (c != null) {
154
155
  const a = G.construct(c);
155
- e.x === n.x && (a.x = 0), e.y === n.y && (a.y = 0), i = G.translate(i, e, a);
156
+ e.x === o.x && (a.x = 0), e.y === o.y && (a.y = 0), i = G.translate(i, e, a);
156
157
  }
157
158
  const l = r.constructWithAlternateRoot(
158
159
  i.x,
159
160
  i.y,
160
- r.width(o),
161
- r.height(o),
162
- n,
161
+ r.width(n),
162
+ r.height(n),
163
+ o,
163
164
  t.TOP_LEFT
164
165
  );
165
166
  let d = r.area(r.intersection(l, s));
166
- return r.area(r.intersection(g, l)) !== 0 && (d = 0), {
167
+ return r.area(r.intersection(f, l)) !== 0 && (d = 0), {
167
168
  targetCorner: e,
168
- dialogCorner: n,
169
+ dialogCorner: o,
169
170
  adjustedDialog: l,
170
171
  area: d
171
172
  };
@@ -190,12 +191,12 @@ const Oe = ({
190
191
  }), [_e, Ue] = se({
191
192
  displayName: "Dialog.InternalContext",
192
193
  providerName: "Dialog.Frame"
193
- }), Pe = [["Escape"]], Ie = (e, n, s) => {
194
+ }), Pe = [["Escape"]], Ie = (e, o, s) => {
194
195
  if (s == null) return !1;
195
- const o = Math.abs(r.left(n) - r.left(s)) <= 1 && Math.abs(r.top(n) - r.top(s)) <= 1;
196
- if (e === "floating") return o;
197
- const c = Math.abs(r.width(n) - r.width(s)) <= 1;
198
- return o && c;
196
+ const n = Math.abs(r.left(o) - r.left(s)) <= 1 && Math.abs(r.top(o) - r.top(s)) <= 1;
197
+ if (e === "floating") return n;
198
+ const c = Math.abs(r.width(o) - r.width(s)) <= 1;
199
+ return n && c;
199
200
  }, oe = [
200
201
  {
201
202
  targetCorner: t.BOTTOM_LEFT,
@@ -217,12 +218,12 @@ const Oe = ({
217
218
  targetCorner: t.TOP_RIGHT,
218
219
  dialogCorner: t.TOP_LEFT
219
220
  }
220
- ], ve = (e, n) => e / n > 0.8 ? "slammed" : e / n > 0.6 ? "shifted" : "base", Se = ({
221
+ ], ve = (e, o) => e / o > 0.8 ? "slammed" : e / o > 0.6 ? "shifted" : "base", Se = ({
221
222
  children: e,
222
- location: n,
223
+ location: o,
223
224
  onPointerEnter: s,
224
- className: g,
225
- variant: o = "floating",
225
+ className: f,
226
+ variant: n = "floating",
226
227
  maxHeight: c,
227
228
  zIndex: i,
228
229
  initialVisible: l = !1,
@@ -231,19 +232,19 @@ const Oe = ({
231
232
  modalPosition: u = "base",
232
233
  ...E
233
234
  }) => {
234
- const [f, T] = ye({
235
+ const [g, T] = ye({
235
236
  initial: l,
236
237
  value: d,
237
238
  onChange: a
238
- }), h = p(() => T(!1), [T]), V = p(() => T(!0), [T]), W = p(() => T((C) => !C), [T]), I = k(f), _ = w(null), q = w(void 0), Z = w(void 0), y = w(null), [{ targetCorner: b, dialogCorner: v, style: U, modalPosition: K }, $] = Ce({ ...Be, modalPosition: u }), F = p(() => {
239
+ }), h = p(() => T(!1), [T]), V = p(() => T(!0), [T]), W = p(() => T((C) => !C), [T]), I = k(g), _ = w(null), q = w(void 0), Z = w(void 0), y = w(null), [{ targetCorner: b, dialogCorner: v, style: U, modalPosition: K }, $] = Ce({ ...Be, modalPosition: u }), F = p(() => {
239
240
  if (_.current == null || y.current == null || !I.current)
240
241
  return;
241
242
  const C = r.construct(_.current);
242
- if (r.areaIsZero(C) && o !== "modal") return T(!1);
243
+ if (r.areaIsZero(C) && n !== "modal") return T(!1);
243
244
  let x = r.construct(y.current);
244
- o === "connected" && (x = r.resize(x, "x", r.width(C)));
245
+ n === "connected" && (x = r.resize(x, "x", r.width(C)));
245
246
  const R = r.construct(0, 0, window.innerWidth, window.innerHeight);
246
- if (o === "modal") {
247
+ if (n === "modal") {
247
248
  const A = ve(
248
249
  r.height(x),
249
250
  r.height(R)
@@ -257,22 +258,22 @@ const Oe = ({
257
258
  dialog: x,
258
259
  container: R,
259
260
  prefer: N,
260
- initial: n,
261
+ initial: o,
261
262
  offset: 3
262
263
  });
263
264
  q.current = P;
264
265
  const { targetCorner: S, dialogCorner: Q } = P, B = r.round(O);
265
- if (Ie(o, B, Z.current)) return;
266
+ if (Ie(n, B, Z.current)) return;
266
267
  Z.current = B;
267
268
  const L = {};
268
- L.left = r.left(B), S.y === "top" && Q.x === S.x ? L.bottom = r.height(R) - r.bottom(B) : L.top = r.top(B), o === "connected" && (L.width = r.width(B)), typeof c == "number" && (L.maxHeight = c), f && (L.zIndex = i), $((A) => ({ ...A, targetCorner: S, dialogCorner: Q, style: L }));
269
- }, [n, o, T]), ae = ne(F, { enabled: f }), J = re(y, ae), ce = ne(F, { enabled: f }), le = re(_, ce);
269
+ L.left = r.left(B), S.y === "top" && Q.x === S.x ? L.bottom = r.height(R) - r.bottom(B) : L.top = r.top(B), n === "connected" && (L.width = r.width(B)), typeof c == "number" && (L.maxHeight = c), g && (L.zIndex = i), $((A) => ({ ...A, targetCorner: S, dialogCorner: Q, style: L }));
270
+ }, [o, n, T]), ae = ne(F, { enabled: g }), J = re(y, ae), ce = ne(F, { enabled: g }), le = re(_, ce);
270
271
  be(F);
271
272
  const ue = p(
272
273
  (C) => {
273
274
  if (!I.current || y.current == null || _.current == null)
274
275
  return !0;
275
- if (o !== "modal") {
276
+ if (n !== "modal") {
276
277
  const N = y.current.getElementsByClassName(m.visible(!0));
277
278
  let O = N != null && N.length > 0;
278
279
  return O || (O = _.current.contains(C.target)), document.getElementsByClassName(we).length > 0 && (O = !0), O || C.stopImmediatePropagation(), O;
@@ -286,12 +287,12 @@ const Oe = ({
286
287
  ({ stage: C }) => {
287
288
  if (C !== "start" || I.current === !1 || y.current == null)
288
289
  return;
289
- if (o !== "modal") return h();
290
+ if (n !== "modal") return h();
290
291
  const x = y.current, R = Array.from(document.getElementsByClassName(H)), N = R.findIndex((P) => P.contains(x)), O = x.getElementsByClassName(m.visible(!0));
291
292
  if (N === R.length - 1 && O.length === 0)
292
293
  return h();
293
294
  },
294
- [h, o]
295
+ [h, n]
295
296
  );
296
297
  Oe({ ref: y, exclude: ue, onClickOutside: h }), he({ triggers: Pe, callback: de, loose: !0 });
297
298
  const fe = te(
@@ -308,12 +309,12 @@ const Oe = ({
308
309
  close: h,
309
310
  open: V,
310
311
  toggle: W,
311
- visible: f,
312
+ visible: g,
312
313
  onPointerEnter: s,
313
- variant: o,
314
+ variant: n,
314
315
  location: b
315
316
  }),
316
- [h, V, W, f, b]
317
+ [h, V, W, g, b]
317
318
  );
318
319
  return /* @__PURE__ */ D.jsx(Me, { value: ge, children: /* @__PURE__ */ D.jsx(_e, { value: fe, children: /* @__PURE__ */ D.jsx(
319
320
  ie,
@@ -321,10 +322,10 @@ const Oe = ({
321
322
  ...E,
322
323
  ref: le,
323
324
  className: m(
324
- g,
325
+ f,
325
326
  m.BE("dialog", "frame"),
326
- m.visible(f),
327
- m.M(o),
327
+ m.visible(g),
328
+ m.M(n),
328
329
  m.loc(b.x),
329
330
  m.loc(b.y),
330
331
  m.BEM("dialog", "dialog", v.x),
@@ -345,9 +346,9 @@ export {
345
346
  Ue as b,
346
347
  Ve as c,
347
348
  We as d,
348
- Oe as e,
349
- ne as f,
350
- be as g,
349
+ ne as e,
350
+ be as f,
351
+ Oe as g,
351
352
  M as p,
352
353
  Ze as u
353
354
  };
@@ -1 +1 @@
1
- "use strict";const a=require("./jsx-runtime-nZSsnGb7.cjs");require("./Animated-xK__WUQp.cjs");require("@synnaxlabs/x");const e=require("./css-CloSmhZB.cjs"),c=require("./Text-C2_VsLzw.cjs"),t=({className:r,enabledLoc:i,disabledLoc:n,enabled:s,...o})=>a.jsxRuntimeExports.jsx(c.Caret.Up,{className:e.CSS(e.CSS.B("caret-animated"),e.CSS.loc(s?i:n),r),...o}),u=Object.freeze(Object.defineProperty({__proto__:null,Animated:t},Symbol.toStringTag,{value:"Module"}));exports.Animated=t;exports.Animated$1=u;
1
+ "use strict";const a=require("./jsx-runtime-nZSsnGb7.cjs");require("./Animated-C4AcIYpH.cjs");require("@synnaxlabs/x");const e=require("./css-CloSmhZB.cjs"),c=require("./Text-_KoMj9Wf.cjs"),t=({className:r,enabledLoc:i,disabledLoc:n,enabled:s,...o})=>a.jsxRuntimeExports.jsx(c.Caret.Up,{className:e.CSS(e.CSS.B("caret-animated"),e.CSS.loc(s?i:n),r),...o}),u=Object.freeze(Object.defineProperty({__proto__:null,Animated:t},Symbol.toStringTag,{value:"Module"}));exports.Animated=t;exports.Animated$1=u;
@@ -1,8 +1,8 @@
1
1
  import { j as s } from "./jsx-runtime-tc70JA_2.js";
2
- import "./Animated-6qL1fRZx.js";
2
+ import "./Animated-BU-7FzeV.js";
3
3
  import "@synnaxlabs/x";
4
4
  import { C as t } from "./css-D90kZTM8.js";
5
- import { C as i } from "./Text-BSTMZRuo.js";
5
+ import { C as i } from "./Text-BIGgPTpY.js";
6
6
  const p = ({
7
7
  className: o,
8
8
  enabledLoc: e,
@@ -0,0 +1 @@
1
+ "use strict";const v=require("./jsx-runtime-nZSsnGb7.cjs"),e=require("@synnaxlabs/x"),d=require("react"),A=require("./Text-_KoMj9Wf.cjs"),x=require("./css-CloSmhZB.cjs"),Q=require("./Box-CNUz5BsV.cjs"),_=require("./Editable-HUPqTaui.cjs"),fe=require("./hooks-DmaLjPZJ.cjs"),ge=require("./types-DI2vtOGs.cjs");require("./Provider-B1JpVCIg.cjs");const ee=({ref:t,onClickOutside:n,exclude:r})=>{const f=_.useSyncedRef(r),o=d.useCallback(c=>{const s=t.current,a=e.box.construct(window.document.documentElement),u=e.xy.construct(c),i=f.current;if(i!=null){if(typeof i=="function"){if(i(c))return}else if(i.some(l=>l.current?.contains(c.target)))return}s==null||s.contains(c.target)||e.box.contains(s,u)||!e.box.contains(a,u)||n()},[n]);d.useEffect(()=>(document.addEventListener("mousedown",o),()=>document.removeEventListener("mousedown",o)),[o])},X=(t,n={})=>{const{triggers:r=[],debounce:f=0,enabled:o=!0}=n,c=d.useRef(e.box.ZERO),s=d.useRef(null),a=d.useRef(null),u=A.useMemoCompare(()=>r,A.compareArrayDeps,[r]),i=d.useCallback(l=>{a.current!=null&&a.current.disconnect(),c.current??=e.box.ZERO;const C=e.debounce(()=>{const g=e.box.construct(l);xe(u,c.current,g)&&(c.current=g,t(g,s.current))},f);a.current=new ResizeObserver(C),a.current.observe(l)},[u,t,f]);return d.useEffect(()=>(s.current!=null&&o&&i(s.current),()=>a.current?.disconnect()),[i,o]),d.useCallback(l=>{s.current=l,l!=null&&o&&i(l)},[i])},xe=(t,n,r)=>t.length===0?!e.box.equals(r,n):!!(t.includes("x")&&e.box.width(n)!==e.box.width(r)||t.includes("y")&&e.box.height(n)!==e.box.height(r)),te=(t,n={})=>{const{enabled:r=!0}=n,f=_.useSyncedRef(t);d.useEffect(()=>{if(!r)return;const o=()=>f.current(e.box.construct(window.innerWidth,window.innerHeight),window.document.documentElement);return window.addEventListener("resize",o),()=>window.removeEventListener("resize",o)},[r])},G=x.CSS.BE("dialog","bg"),Ce=({children:t,visible:n,...r})=>v.jsxRuntimeExports.jsx(Q.Box$1,{className:x.CSS(G,x.CSS.visible(n)),empty:!0,align:"center",...r,children:t}),N=t=>t==null?{x:void 0,y:void 0}:typeof t!="string"?t:e.direction.isX(t)?{x:t,y:void 0}:{x:void 0,y:t},F=t=>typeof t=="string"||"x"in t||"y"in t?{targetCorner:t,dialogCorner:void 0}:t,Ee=({initial:t,prefer:n=[],disable:r=[]})=>{const f=e.array.toArray(n).map(F),o=e.array.toArray(r).map(F),c=[];if(t!=null){const s=F(t),a=N(s.targetCorner),u=N(s.dialogCorner);e.location.XY_LOCATIONS.forEach(l=>{e.location.xyEquals(l,e.location.CENTER)||a.x!=null&&l.x!==a.x||a.y!=null&&l.y!==a.y||e.location.XY_LOCATIONS.forEach(C=>{if(e.location.xyEquals(C,e.location.CENTER)||u.x!=null&&C.x!==u.x||u.y!=null&&C.y!==u.y)return;const g={targetCorner:l,dialogCorner:C};c.push(g)})});const i=c.filter(l=>!z(l,o));return i.length==0?c.slice(0,1):i}return f.forEach(s=>{const a=N(s.targetCorner),u=N(s.dialogCorner);e.location.XY_LOCATIONS.forEach(i=>{e.location.xyEquals(i,e.location.CENTER)||e.location.xyMatches(i,a)&&e.location.XY_LOCATIONS.forEach(l=>{if(e.location.xyEquals(l,e.location.CENTER)||!e.location.xyMatches(l,u))return;const C={targetCorner:i,dialogCorner:l};!z(C,o)&&!c.some(g=>e.location.xyEquals(g.targetCorner,i)&&e.location.xyEquals(g.dialogCorner,l))&&c.push(C)})})}),e.location.XY_LOCATIONS.forEach(s=>{e.location.xyEquals(s,e.location.CENTER)||e.location.XY_LOCATIONS.forEach(a=>{if(e.location.xyEquals(a,e.location.CENTER))return;const u={targetCorner:s,dialogCorner:a};!z(u,o)&&!c.some(i=>e.location.xyEquals(i.targetCorner,s)&&e.location.xyEquals(i.dialogCorner,a))&&c.push(u)})}),c},z=(t,n)=>n.some(r=>{const f=N(r.targetCorner),o=N(r.dialogCorner);return e.location.xyEquals(r.dialogCorner,e.location.CENTER)?e.location.xyMatches(t.targetCorner,f):e.location.xyMatches(t.targetCorner,f)&&e.location.xyMatches(t.dialogCorner,o)}),oe=({container:t,target:n,dialog:r,initial:f,prefer:o,disable:c,offset:s})=>{const a=Ee({initial:f,prefer:o,disable:c}),u=e.box.construct(t),i=e.box.construct(n),l=e.box.construct(r),C=a.reduce((g,m)=>{const T=be({...m,container:u,target:i,dialog:l,offset:s});return T.area>g.area?T:g},{area:-1/0,targetCorner:e.location.CENTER,dialogCorner:e.location.CENTER,adjustedDialog:l});return{targetCorner:C.targetCorner,dialogCorner:C.dialogCorner,adjustedDialog:C.adjustedDialog}},be=({targetCorner:t,dialogCorner:n,container:r,target:f,dialog:o,offset:c})=>{let s=e.box.xyLoc(f,t);if(c!=null){const i=e.xy.construct(c);t.x===n.x&&(i.x=0),t.y===n.y&&(i.y=0),s=e.xy.translate(s,t,i)}const a=e.box.constructWithAlternateRoot(s.x,s.y,e.box.width(o),e.box.height(o),n,e.location.TOP_LEFT);let u=e.box.area(e.box.intersection(a,r));return e.box.area(e.box.intersection(f,a))!==0&&(u=0),{targetCorner:t,dialogCorner:n,adjustedDialog:a,area:u}},me=x.CSS.BM("context","selected"),Te=x.CSS.BE("context","target"),ne=x.CSS.B("menu-context"),ye={targetCorner:e.location.BOTTOM_LEFT,dialogCorner:e.location.BOTTOM_LEFT,style:{},modalPosition:"base"},[he,Re]=A.create({defaultValue:{close:()=>{},location:e.location.BOTTOM_LEFT,open:()=>{},toggle:()=>{},variant:"floating",visible:!1},displayName:"Dialog.Context"}),[Se,Oe]=A.create({displayName:"Dialog.InternalContext",providerName:"Dialog.Frame"}),pe=[["Escape"]],Ne=(t,n,r)=>{if(r==null)return!1;const o=Math.abs(e.box.left(n)-e.box.left(r))<=1&&Math.abs(e.box.top(n)-e.box.top(r))<=1;if(t==="floating")return o;const c=Math.abs(e.box.width(n)-e.box.width(r))<=1;return o&&c},J=[{targetCorner:e.location.BOTTOM_LEFT,dialogCorner:e.location.TOP_LEFT},{targetCorner:e.location.TOP_LEFT,dialogCorner:e.location.BOTTOM_LEFT},{targetCorner:e.location.BOTTOM_RIGHT,dialogCorner:e.location.TOP_RIGHT},{targetCorner:e.location.TOP_RIGHT,dialogCorner:e.location.BOTTOM_RIGHT},{targetCorner:e.location.TOP_RIGHT,dialogCorner:e.location.TOP_LEFT}],Le=(t,n)=>t/n>.8?"slammed":t/n>.6?"shifted":"base",re=({children:t,location:n,onPointerEnter:r,className:f,variant:o="floating",maxHeight:c,zIndex:s,initialVisible:a=!1,visible:u,onVisibleChange:i,modalPosition:l="base",...C})=>{const[g,m]=ge.usePassthrough({initial:a,value:u,onChange:i}),T=d.useCallback(()=>m(!1),[m]),H=d.useCallback(()=>m(!0),[m]),Y=d.useCallback(()=>m(E=>!E),[m]),M=_.useSyncedRef(g),w=d.useRef(null),D=d.useRef(void 0),V=d.useRef(void 0),y=d.useRef(null),[{targetCorner:R,dialogCorner:q,style:W,modalPosition:Z},U]=d.useState({...ye,modalPosition:l}),k=d.useCallback(()=>{if(w.current==null||y.current==null||!M.current)return;const E=e.box.construct(w.current);if(e.box.areaIsZero(E)&&o!=="modal")return m(!1);let b=e.box.construct(y.current);o==="connected"&&(b=e.box.resize(b,"x",e.box.width(E)));const S=e.box.construct(0,0,window.innerWidth,window.innerHeight);if(o==="modal"){const I=Le(e.box.height(b),e.box.height(S));return U(j=>I===j.modalPosition?j:{...j,modalPosition:I})}let O=J;D.current!=null&&(O=[D.current,...J]);const{adjustedDialog:h,...B}=oe({target:E,dialog:b,container:S,prefer:O,initial:n,offset:3});D.current=B;const{targetCorner:P,dialogCorner:K}=B,L=e.box.round(h);if(Ne(o,L,V.current))return;V.current=L;const p={};p.left=e.box.left(L),P.y==="top"&&K.x===P.x?p.bottom=e.box.height(S)-e.box.bottom(L):p.top=e.box.top(L),o==="connected"&&(p.width=e.box.width(L)),typeof c=="number"&&(p.maxHeight=c),g&&(p.zIndex=s),U(I=>({...I,targetCorner:P,dialogCorner:K,style:p}))},[n,o,m]),se=X(k,{enabled:g}),$=_.useCombinedRefs(y,se),ie=X(k,{enabled:g}),ce=_.useCombinedRefs(w,ie);te(k);const ae=d.useCallback(E=>{if(!M.current||y.current==null||w.current==null)return!0;if(o!=="modal"){const O=y.current.getElementsByClassName(x.CSS.visible(!0));let h=O!=null&&O.length>0;return h||(h=w.current.contains(E.target)),document.getElementsByClassName(ne).length>0&&(h=!0),h||E.stopImmediatePropagation(),h}if(!(E.target instanceof HTMLElement))return!0;let b=E.target;return b.className.includes(G)&&(b=b.children[0]),b!==y.current},[s,M]),le=d.useCallback(({stage:E})=>{if(E!=="start"||M.current===!1||y.current==null)return;if(o!=="modal")return T();const b=y.current,S=Array.from(document.getElementsByClassName(G)),O=S.findIndex(B=>B.contains(b)),h=b.getElementsByClassName(x.CSS.visible(!0));if(O===S.length-1&&h.length===0)return T()},[T,o]);ee({ref:y,exclude:ae,onClickOutside:T}),fe.use({triggers:pe,callback:le,loose:!0});const ue=d.useMemo(()=>({ref:$,targetCorner:R,dialogCorner:q,style:W,modalPosition:Z}),[$,R,q,W,Z]),de=d.useMemo(()=>({close:T,open:H,toggle:Y,visible:g,onPointerEnter:r,variant:o,location:R}),[T,H,Y,g,R]);return v.jsxRuntimeExports.jsx(he,{value:de,children:v.jsxRuntimeExports.jsx(Se,{value:ue,children:v.jsxRuntimeExports.jsx(Q.Box$1,{...C,ref:ce,className:x.CSS(f,x.CSS.BE("dialog","frame"),x.CSS.visible(g),x.CSS.M(o),x.CSS.loc(R.x),x.CSS.loc(R.y),x.CSS.BEM("dialog","dialog",q.x),x.CSS.BEM("dialog","dialog",q.y)),y:!0,reverse:R.y==="top",children:t})})})};re.displayName="Dialog.Frame";exports.Background=Ce;exports.CONTEXT_MENU_CLASS=ne;exports.CONTEXT_SELECTED=me;exports.CONTEXT_TARGET=Te;exports.Frame=re;exports.parseLocationOptions=N;exports.position=oe;exports.useClickOutside=ee;exports.useContext=Re;exports.useInternalContext=Oe;exports.useResize=X;exports.useWindowResize=te;
@@ -1 +1 @@
1
- "use strict";const m=require("./jsx-runtime-nZSsnGb7.cjs"),t=require("@synnaxlabs/x"),l=require("react"),u=require("./css-CloSmhZB.cjs"),A=require("./Text-C2_VsLzw.cjs"),I=require("./Editable-HUPqTaui.cjs"),V=require("./types-DI2vtOGs.cjs"),ne=require("./Provider-DSMJjyuY.cjs");require("./provider-DQkVj3tA.cjs");const se=require("react-dom"),re=require("./hooks-C4ji1BSZ.cjs"),[le,$]=A.create({defaultValue:{delay:t.TimeSpan.milliseconds(750),startAccelerating:()=>{}},displayName:"Tooltip.Context"}),ce=({delay:e=t.TimeSpan.milliseconds(700),accelerate:o=!0,acceleratedDelay:s=t.TimeSpan.minutes(60),accelerationDelay:r=t.TimeSpan.seconds(0),children:a})=>{const[c,n]=l.useState(!1),d=l.useRef(null),C=l.useCallback(()=>{c||!o||(n(!0),d.current=setTimeout(()=>{n(!1)},new t.TimeSpan(r).milliseconds))},[c,r]),E=l.useMemo(()=>c?s:e,[c,s,e]),S=l.useMemo(()=>({delay:E,startAccelerating:C}),[E,C]);return m.jsxRuntimeExports.jsx(le,{value:S,children:a})},ie=e=>({key:o,...s})=>l.createElement(e,{...s,key:o}),G=e=>typeof e=="function",ue=150,W=["top","bottom"],J=["left","right"],K=[...J,...W],Y=[...K,"center"],ae={[t.location.xyToString(t.location.TOP_RIGHT)]:(e,o)=>t.xy.translate(e,"x",-t.box.width(o)),[t.location.xyToString(t.location.TOP_LEFT)]:(e,o)=>t.xy.translate(e,"x",t.box.width(o)),[t.location.xyToString(t.location.BOTTOM_RIGHT)]:(e,o)=>t.xy.translate(e,"x",-t.box.width(o)),[t.location.xyToString(t.location.BOTTOM_LEFT)]:(e,o)=>t.xy.translate(e,"x",t.box.width(o))},X=(e,o,s)=>{for(const r of s)if(Math.abs(t.box.loc(o,r)-t.box.loc(e,r))>ue)return r;return s[0]},Q=(e,o,s)=>{const r=t.location.location.safeParse(e),a=n=>{let d;return n==="center"?d=K:t.location.isX(n)?d=["center",...W]:d=["center",...J],t.location.construct(X(o,s,d))};if(r.success)return t.location.constructXY(r.data,a(r.data));if(e!=null){const n={...e};return n.x==null&&n.y!=null?n.x=a(t.location.construct(n.y)):n.y==null&&n.x!=null?n.y=a(t.location.construct(n.x)):n.x==null&&n.y==null&&(n.x=X(o,s,Y),n.y=a(t.location.construct(n.x))),t.location.constructXY(n)}const c=X(o,s,Y);return t.location.constructXY(c,a(c))},de=(e,o)=>{let s=e;for(;s!=null;){if(s.id===o)return s;s=s.parentElement}return e},z=({delay:e,children:o,location:s,hide:r=!1})=>{const{startAccelerating:a,delay:c}=$(),n=new t.TimeSpan(e??c),[d,C,E]=I.useCombinedStateAndRef(null),[S,R]=l.useState(""),b=l.useRef(null),N=l.useId(),T=l.useRef(null),L=l.useRef(null),f=l.useCallback(i=>{i==null&&E.current==null||L.current!=null||(i!=null?(C(i),L.current=setTimeout(()=>{R(u.CSS.M("loaded")),L.current=null},1)):(R(""),L.current=setTimeout(()=>{C(null),L.current=null},500)))},[]),y=l.useCallback((i,Z)=>{if(!Z||r)return T.current?.(),f(null);a();const x=t.box.construct(de(i.target,N));t.box.contains(x,t.xy.construct(i))||(T.current?.(),f(null));const h=t.box.construct(document.documentElement),v=Q(s,x,h);let g=t.box.xyLoc(x,v);const D=ae[t.location.xyToString(v)];D!=null&&(g=D(g,x));const M=t.box.construct(document.body);f({location:v,position:t.xy.translate(g,t.xy.scale(t.box.topLeft(M),-1)),triggerDims:t.box.dims(x)}),T.current?.();const j=k=>{const q=t.xy.construct(k);t.box.contains(x,q)||(f(null),document.removeEventListener("mousemove",j),T.current=null,b.current!=null&&clearTimeout(b.current))};document.addEventListener("mousemove",j),T.current=()=>document.removeEventListener("mousemove",j),document.addEventListener("mousedown",()=>{f(null),T.current?.()},{once:!0})},[a,s,r,N,n.milliseconds]);r&&d!=null&&f(null);const B=l.useCallback(i=>{b.current=setTimeout(()=>y(i,!0),n.milliseconds)},[y,n.milliseconds]),_=l.useCallback(i=>{b.current!=null&&clearTimeout(b.current),y(i,!1)},[y]),[P,w]=o,F=document.body;return m.jsxRuntimeExports.jsxs(m.jsxRuntimeExports.Fragment,{children:[d!=null&&se.createPortal(m.jsxRuntimeExports.jsx("div",{className:u.CSS(u.CSS.B("tooltip"),u.CSS.loc(d.location.x),u.CSS.loc(d.location.y),S),style:{[u.CSS.var("pos-x")]:u.CSS.px(d.position.x),[u.CSS.var("pos-y")]:u.CSS.px(d.position.y)},children:G(P)?P(d):ee(P)},N),F),l.cloneElement(w,{onMouseEnter:i=>{B(i),w.props.onMouseEnter?.(i)},onMouseLeave:i=>{_(i),w.props.onMouseLeave?.(i)},onMouseDown:l.useCallback(i=>{_(i),w.props.onMouseDown?.(i)},[y])})]})},ee=e=>typeof e=="string"||typeof e=="number"||!l.isValidElement(e)?m.jsxRuntimeExports.jsx(I.Text,{level:"small",color:11,children:e}):e,te=e=>{const o=({tooltipDelay:s,tooltip:r,tooltipLocation:a,...c})=>{const n=m.jsxRuntimeExports.jsx(e,{...c});return r==null?n:m.jsxRuntimeExports.jsxs(z,{delay:s,location:a,children:[r,n]})};return o.displayName=`Tooltip.Wrap(${e.displayName??e.name})`,o},O="btn",me=(e,o)=>{if(e===!0)return o;if(e!=null&&e!==!1)return e},xe=({size:e,variant:o="outlined",className:s,disabled:r,preventClick:a,level:c,trigger:n,triggerIndicator:d,onClickDelay:C=0,onClick:E,color:S,status:R,style:b,onMouseDown:N,textColor:T,textVariant:L,tabIndex:f,contrast:y,children:B,defaultEl:_="button",el:P,ghost:w,propagateClick:F=!1,href:i,...Z})=>{const x=t.TimeSpan.fromMilliseconds(C),h=r===!0||R==="loading"||R==="disabled";o==="preview"&&(a=!0),(r||a&&f==null)&&(f=-1);const v=p=>{if(F||p.stopPropagation(),!(h||o==="preview"||a===!0)&&x.isZero)return E?.(p)},g=l.useRef(null),D=p=>{f==-1&&p.preventDefault(),N?.(p),!(h||o==="preview"||x.isZero)&&(document.addEventListener("mouseup",()=>g.current!=null&&clearTimeout(g.current)),g.current=setTimeout(()=>{E?.(p),g.current=null},x.milliseconds))};re.use({triggers:n,callback:l.useCallback(({stage:p})=>{p!=="end"||h||o==="preview"||v(new MouseEvent("click"))},[v,h])});let M=b;const j=t.color.colorZ.safeParse(S),k=j.success&&(o==="filled"||o==="outlined");if(k){const p=ne.use();M={...M,[u.CSS.var("btn-color")]:t.color.rgbString(j.data),[u.CSS.var("btn-text-color")]:t.color.rgbCSS(t.color.pickByContrast(j.data,p.colors.text,p.colors.textInverted))}}x.isZero||(M={...M,[u.CSS.var("btn-delay")]:`${x.seconds.toString()}s`}),e==null&&c!=null?e=V.LEVEL_COMPONENT_SIZES[c]:e!=null&&c==null?c=V.COMPONENT_SIZE_LEVELS[e]:_!=="div"&&(e??="medium"),c??="p";const q=R==="loading",H=I.isSquare(B),U=me(d,n);return m.jsxRuntimeExports.jsxs(I.Text,{el:P,defaultEl:_,direction:"x",className:u.CSS(u.CSS.B(O),y!=null&&u.CSS.BM(O,`contrast-${y}`),a===!0&&u.CSS.BM(O,"prevent-click"),o!=="preview"&&u.CSS.disabled(h),u.CSS.BM(O,o),k&&u.CSS.BM(O,"custom-color"),w&&u.CSS.BM(O,"ghost"),s),size:e,tabIndex:f,onClick:v,onMouseDown:D,style:M,color:T,gap:e==="small"||e==="tiny"?"small":void 0,bordered:o!=="text",level:c,variant:L,square:H,overflow:"nowrap",status:R,href:i,...t.record.purgeUndefined(Z),children:[(!q||!H)&&B,q&&m.jsxRuntimeExports.jsx(A.Loading,{}),U!=null&&m.jsxRuntimeExports.jsx(A.Text,{className:u.CSS.B("trigger-indicator"),"aria-label":"trigger-indicator",trigger:U,color:9,gap:"tiny",level:V.downLevel(c)})]})},oe=te(xe),Se=t.TimeSpan.seconds(2).milliseconds,fe=({text:e,onCopy:o,onCopyError:s,copiedDuration:r=Se,tooltip:a="Copy",children:c,...n})=>{const[d,C]=l.useState(!1),E=l.useCallback(()=>{(async()=>{try{const S=typeof e=="function"?e():e;await navigator.clipboard.writeText(S),C(!0),o?.(),setTimeout(()=>C(!1),t.TimeSpan.fromMilliseconds(r).milliseconds)}catch(S){s?.(S instanceof Error?S:new Error(String(S)))}})()},[e,o,s,r]);return m.jsxRuntimeExports.jsxs(oe,{tooltip:d?"Copied!":a,onClick:E,...n,children:[d?m.jsxRuntimeExports.jsx(A.Check,{}):m.jsxRuntimeExports.jsx(A.Copy,{})," ",c]})};exports.Button=oe;exports.Config=ce;exports.Copy=fe;exports.Dialog=z;exports.chooseLocation=Q;exports.formatTip=ee;exports.isRenderProp=G;exports.renderProp=ie;exports.useConfig=$;exports.wrap=te;
1
+ "use strict";const m=require("./jsx-runtime-nZSsnGb7.cjs"),t=require("@synnaxlabs/x"),l=require("react"),u=require("./css-CloSmhZB.cjs"),A=require("./Text-_KoMj9Wf.cjs"),I=require("./Editable-HUPqTaui.cjs"),V=require("./types-DI2vtOGs.cjs"),ne=require("./Provider-B1JpVCIg.cjs");require("./provider-DQkVj3tA.cjs");const se=require("react-dom"),re=require("./hooks-DmaLjPZJ.cjs"),[le,$]=A.create({defaultValue:{delay:t.TimeSpan.milliseconds(750),startAccelerating:()=>{}},displayName:"Tooltip.Context"}),ce=({delay:e=t.TimeSpan.milliseconds(700),accelerate:o=!0,acceleratedDelay:s=t.TimeSpan.minutes(60),accelerationDelay:r=t.TimeSpan.seconds(0),children:a})=>{const[c,n]=l.useState(!1),d=l.useRef(null),C=l.useCallback(()=>{c||!o||(n(!0),d.current=setTimeout(()=>{n(!1)},new t.TimeSpan(r).milliseconds))},[c,r]),E=l.useMemo(()=>c?s:e,[c,s,e]),S=l.useMemo(()=>({delay:E,startAccelerating:C}),[E,C]);return m.jsxRuntimeExports.jsx(le,{value:S,children:a})},ie=e=>({key:o,...s})=>l.createElement(e,{...s,key:o}),G=e=>typeof e=="function",ue=150,W=["top","bottom"],J=["left","right"],K=[...J,...W],Y=[...K,"center"],ae={[t.location.xyToString(t.location.TOP_RIGHT)]:(e,o)=>t.xy.translate(e,"x",-t.box.width(o)),[t.location.xyToString(t.location.TOP_LEFT)]:(e,o)=>t.xy.translate(e,"x",t.box.width(o)),[t.location.xyToString(t.location.BOTTOM_RIGHT)]:(e,o)=>t.xy.translate(e,"x",-t.box.width(o)),[t.location.xyToString(t.location.BOTTOM_LEFT)]:(e,o)=>t.xy.translate(e,"x",t.box.width(o))},X=(e,o,s)=>{for(const r of s)if(Math.abs(t.box.loc(o,r)-t.box.loc(e,r))>ue)return r;return s[0]},Q=(e,o,s)=>{const r=t.location.location.safeParse(e),a=n=>{let d;return n==="center"?d=K:t.location.isX(n)?d=["center",...W]:d=["center",...J],t.location.construct(X(o,s,d))};if(r.success)return t.location.constructXY(r.data,a(r.data));if(e!=null){const n={...e};return n.x==null&&n.y!=null?n.x=a(t.location.construct(n.y)):n.y==null&&n.x!=null?n.y=a(t.location.construct(n.x)):n.x==null&&n.y==null&&(n.x=X(o,s,Y),n.y=a(t.location.construct(n.x))),t.location.constructXY(n)}const c=X(o,s,Y);return t.location.constructXY(c,a(c))},de=(e,o)=>{let s=e;for(;s!=null;){if(s.id===o)return s;s=s.parentElement}return e},z=({delay:e,children:o,location:s,hide:r=!1})=>{const{startAccelerating:a,delay:c}=$(),n=new t.TimeSpan(e??c),[d,C,E]=I.useCombinedStateAndRef(null),[S,R]=l.useState(""),b=l.useRef(null),N=l.useId(),T=l.useRef(null),L=l.useRef(null),f=l.useCallback(i=>{i==null&&E.current==null||L.current!=null||(i!=null?(C(i),L.current=setTimeout(()=>{R(u.CSS.M("loaded")),L.current=null},1)):(R(""),L.current=setTimeout(()=>{C(null),L.current=null},500)))},[]),y=l.useCallback((i,Z)=>{if(!Z||r)return T.current?.(),f(null);a();const x=t.box.construct(de(i.target,N));t.box.contains(x,t.xy.construct(i))||(T.current?.(),f(null));const h=t.box.construct(document.documentElement),v=Q(s,x,h);let g=t.box.xyLoc(x,v);const D=ae[t.location.xyToString(v)];D!=null&&(g=D(g,x));const M=t.box.construct(document.body);f({location:v,position:t.xy.translate(g,t.xy.scale(t.box.topLeft(M),-1)),triggerDims:t.box.dims(x)}),T.current?.();const j=k=>{const q=t.xy.construct(k);t.box.contains(x,q)||(f(null),document.removeEventListener("mousemove",j),T.current=null,b.current!=null&&clearTimeout(b.current))};document.addEventListener("mousemove",j),T.current=()=>document.removeEventListener("mousemove",j),document.addEventListener("mousedown",()=>{f(null),T.current?.()},{once:!0})},[a,s,r,N,n.milliseconds]);r&&d!=null&&f(null);const B=l.useCallback(i=>{b.current=setTimeout(()=>y(i,!0),n.milliseconds)},[y,n.milliseconds]),_=l.useCallback(i=>{b.current!=null&&clearTimeout(b.current),y(i,!1)},[y]),[P,w]=o,F=document.body;return m.jsxRuntimeExports.jsxs(m.jsxRuntimeExports.Fragment,{children:[d!=null&&se.createPortal(m.jsxRuntimeExports.jsx("div",{className:u.CSS(u.CSS.B("tooltip"),u.CSS.loc(d.location.x),u.CSS.loc(d.location.y),S),style:{[u.CSS.var("pos-x")]:u.CSS.px(d.position.x),[u.CSS.var("pos-y")]:u.CSS.px(d.position.y)},children:G(P)?P(d):ee(P)},N),F),l.cloneElement(w,{onMouseEnter:i=>{B(i),w.props.onMouseEnter?.(i)},onMouseLeave:i=>{_(i),w.props.onMouseLeave?.(i)},onMouseDown:l.useCallback(i=>{_(i),w.props.onMouseDown?.(i)},[y])})]})},ee=e=>typeof e=="string"||typeof e=="number"||!l.isValidElement(e)?m.jsxRuntimeExports.jsx(I.Text,{level:"small",color:11,children:e}):e,te=e=>{const o=({tooltipDelay:s,tooltip:r,tooltipLocation:a,...c})=>{const n=m.jsxRuntimeExports.jsx(e,{...c});return r==null?n:m.jsxRuntimeExports.jsxs(z,{delay:s,location:a,children:[r,n]})};return o.displayName=`Tooltip.Wrap(${e.displayName??e.name})`,o},O="btn",me=(e,o)=>{if(e===!0)return o;if(e!=null&&e!==!1)return e},xe=({size:e,variant:o="outlined",className:s,disabled:r,preventClick:a,level:c,trigger:n,triggerIndicator:d,onClickDelay:C=0,onClick:E,color:S,status:R,style:b,onMouseDown:N,textColor:T,textVariant:L,tabIndex:f,contrast:y,children:B,defaultEl:_="button",el:P,ghost:w,propagateClick:F=!1,href:i,...Z})=>{const x=t.TimeSpan.fromMilliseconds(C),h=r===!0||R==="loading"||R==="disabled";o==="preview"&&(a=!0),(r||a&&f==null)&&(f=-1);const v=p=>{if(F||p.stopPropagation(),!(h||o==="preview"||a===!0)&&x.isZero)return E?.(p)},g=l.useRef(null),D=p=>{f==-1&&p.preventDefault(),N?.(p),!(h||o==="preview"||x.isZero)&&(document.addEventListener("mouseup",()=>g.current!=null&&clearTimeout(g.current)),g.current=setTimeout(()=>{E?.(p),g.current=null},x.milliseconds))};re.use({triggers:n,callback:l.useCallback(({stage:p})=>{p!=="end"||h||o==="preview"||v(new MouseEvent("click"))},[v,h])});let M=b;const j=t.color.colorZ.safeParse(S),k=j.success&&(o==="filled"||o==="outlined");if(k){const p=ne.use();M={...M,[u.CSS.var("btn-color")]:t.color.rgbString(j.data),[u.CSS.var("btn-text-color")]:t.color.rgbCSS(t.color.pickByContrast(j.data,p.colors.text,p.colors.textInverted))}}x.isZero||(M={...M,[u.CSS.var("btn-delay")]:`${x.seconds.toString()}s`}),e==null&&c!=null?e=V.LEVEL_COMPONENT_SIZES[c]:e!=null&&c==null?c=V.COMPONENT_SIZE_LEVELS[e]:_!=="div"&&(e??="medium"),c??="p";const q=R==="loading",H=I.isSquare(B),U=me(d,n);return m.jsxRuntimeExports.jsxs(I.Text,{el:P,defaultEl:_,direction:"x",className:u.CSS(u.CSS.B(O),y!=null&&u.CSS.BM(O,`contrast-${y}`),a===!0&&u.CSS.BM(O,"prevent-click"),o!=="preview"&&u.CSS.disabled(h),u.CSS.BM(O,o),k&&u.CSS.BM(O,"custom-color"),w&&u.CSS.BM(O,"ghost"),s),size:e,tabIndex:f,onClick:v,onMouseDown:D,style:M,color:T,gap:e==="small"||e==="tiny"?"small":void 0,bordered:o!=="text",level:c,variant:L,square:H,overflow:"nowrap",status:R,href:i,...t.record.purgeUndefined(Z),children:[(!q||!H)&&B,q&&m.jsxRuntimeExports.jsx(A.Loading,{}),U!=null&&m.jsxRuntimeExports.jsx(A.Text,{className:u.CSS.B("trigger-indicator"),"aria-label":"trigger-indicator",trigger:U,color:9,gap:"tiny",level:V.downLevel(c)})]})},oe=te(xe),Se=t.TimeSpan.seconds(2).milliseconds,fe=({text:e,onCopy:o,onCopyError:s,copiedDuration:r=Se,tooltip:a="Copy",children:c,...n})=>{const[d,C]=l.useState(!1),E=l.useCallback(()=>{(async()=>{try{const S=typeof e=="function"?e():e;await navigator.clipboard.writeText(S),C(!0),o?.(),setTimeout(()=>C(!1),t.TimeSpan.fromMilliseconds(r).milliseconds)}catch(S){s?.(S instanceof Error?S:new Error(String(S)))}})()},[e,o,s,r]);return m.jsxRuntimeExports.jsxs(oe,{tooltip:d?"Copied!":a,onClick:E,...n,children:[d?m.jsxRuntimeExports.jsx(A.Check,{}):m.jsxRuntimeExports.jsx(A.Copy,{})," ",c]})};exports.Button=oe;exports.Config=ce;exports.Copy=fe;exports.Dialog=z;exports.chooseLocation=Q;exports.formatTip=ee;exports.isRenderProp=G;exports.renderProp=ie;exports.useConfig=$;exports.wrap=te;
@@ -2,13 +2,13 @@ import { j as m } from "./jsx-runtime-tc70JA_2.js";
2
2
  import { TimeSpan as g, location as a, xy as M, box as d, color as V, record as te } from "@synnaxlabs/x";
3
3
  import { useState as Y, useRef as I, useCallback as v, useMemo as W, createElement as ne, useId as oe, cloneElement as se, isValidElement as re } from "react";
4
4
  import { C as c } from "./css-D90kZTM8.js";
5
- import { c as le, L as ce, T as ie, F as ue, G as ae } from "./Text-BSTMZRuo.js";
6
- import { d as de, T as K, i as me } from "./Editable-4ZwvICC4.js";
5
+ import { c as le, L as ce, T as ie, F as ue, G as ae } from "./Text-BIGgPTpY.js";
6
+ import { f as de, T as K, i as me } from "./Editable-C17ILP50.js";
7
7
  import { a as fe, C as pe, d as Te } from "./types-CGRCBVD4.js";
8
- import { a as xe } from "./Provider-ZIy-UlnE.js";
8
+ import { a as xe } from "./Provider-CfgP1iWx.js";
9
9
  import "./provider-Bt-E2O6g.js";
10
10
  import { createPortal as Ee } from "react-dom";
11
- import { u as ye } from "./hooks-CWEfATTF.js";
11
+ import { u as ye } from "./hooks-DPk_YYCv.js";
12
12
  const [ge, Se] = le({
13
13
  defaultValue: { delay: g.milliseconds(750), startAccelerating: () => {
14
14
  } },
@@ -1 +1 @@
1
- "use strict";const u=require("./jsx-runtime-nZSsnGb7.cjs"),n=require("./Animated-xK__WUQp.cjs"),j=require("react-dom");require("@synnaxlabs/x");const e=require("./css-CloSmhZB.cjs"),q=require("./Box-CNUz5BsV.cjs"),b=(i="root")=>document.getElementById(i)??document.body,f=({style:i,background:d=0,className:g,bordered:S=!0,rounded:m=1,passthrough:l=!1,children:x,...C})=>{const{ref:y,targetCorner:a,dialogCorner:s,style:c,modalPosition:B}=n.useInternalContext("Dialog.Dialog"),{visible:r,variant:t}=n.useContext();if(!r&&!l)return null;const E=r&&(Object.keys(c).length>0||t==="modal");let o=u.jsxRuntimeExports.jsx(q.Box$1,{pack:!0,ref:y,y:!0,background:d,className:e.CSS(e.CSS.BE("dialog","dialog"),e.CSS.loc(a.x),e.CSS.loc(a.y),e.CSS.BEM("dialog","dialog",s.x),e.CSS.BEM("dialog","dialog",s.y),e.CSS.visible(E),l&&e.CSS.BM("dialog","passthrough"),e.CSS.M(t),t==="modal"&&e.CSS.BM("dialog","modal","position",B.toString()),g),rounded:m,role:"dialog",empty:!0,bordered:S,align:"stretch",style:{...c,...i},...C,children:x});return t==="modal"&&(o=u.jsxRuntimeExports.jsx(n.Background,{empty:!0,align:"center",visible:r,children:o})),l?o:j.createPortal(o,b())};exports.Dialog=f;
1
+ "use strict";const u=require("./jsx-runtime-nZSsnGb7.cjs"),n=require("./Animated-C4AcIYpH.cjs"),j=require("react-dom");require("@synnaxlabs/x");const e=require("./css-CloSmhZB.cjs"),q=require("./Box-CNUz5BsV.cjs"),b=(i="root")=>document.getElementById(i)??document.body,f=({style:i,background:d=0,className:g,bordered:S=!0,rounded:m=1,passthrough:l=!1,children:x,...C})=>{const{ref:y,targetCorner:a,dialogCorner:s,style:c,modalPosition:B}=n.useInternalContext("Dialog.Dialog"),{visible:r,variant:t}=n.useContext();if(!r&&!l)return null;const E=r&&(Object.keys(c).length>0||t==="modal");let o=u.jsxRuntimeExports.jsx(q.Box$1,{pack:!0,ref:y,y:!0,background:d,className:e.CSS(e.CSS.BE("dialog","dialog"),e.CSS.loc(a.x),e.CSS.loc(a.y),e.CSS.BEM("dialog","dialog",s.x),e.CSS.BEM("dialog","dialog",s.y),e.CSS.visible(E),l&&e.CSS.BM("dialog","passthrough"),e.CSS.M(t),t==="modal"&&e.CSS.BM("dialog","modal","position",B.toString()),g),rounded:m,role:"dialog",empty:!0,bordered:S,align:"stretch",style:{...c,...i},...C,children:x});return t==="modal"&&(o=u.jsxRuntimeExports.jsx(n.Background,{empty:!0,align:"center",visible:r,children:o})),l?o:j.createPortal(o,b())};exports.Dialog=f;
@@ -1,5 +1,5 @@
1
1
  import { j as m } from "./jsx-runtime-tc70JA_2.js";
2
- import { b, u as C, B as E } from "./Animated-6qL1fRZx.js";
2
+ import { b, u as C, B as E } from "./Animated-BU-7FzeV.js";
3
3
  import { createPortal as j } from "react-dom";
4
4
  import "@synnaxlabs/x";
5
5
  import { C as o } from "./css-D90kZTM8.js";
@@ -190,11 +190,11 @@ export {
190
190
  pe as M,
191
191
  L as T,
192
192
  de as a,
193
- ae as b,
194
- q as c,
195
- fe as d,
193
+ W as b,
194
+ ae as c,
195
+ q as d,
196
196
  ee as e,
197
- W as f,
197
+ fe as f,
198
198
  Ee as g,
199
199
  Y as i,
200
200
  R as t,
@@ -1 +1 @@
1
- "use strict";const P=require("./jsx-runtime-nZSsnGb7.cjs"),x=require("@synnaxlabs/x"),t=require("react"),f=require("zod"),j=require("./Text-C2_VsLzw.cjs"),T=f.z.object({key:f.z.string().or(f.z.number()),type:f.z.string(),elementID:f.z.string().optional(),data:x.record.unknownZ.optional()}),h=f.z.object({source:T,items:f.z.array(T)}),O={key:"",type:""},g={source:O,items:[]},_="file",q={key:"file",type:_},M=new Set(["all","copyLink"]),H=(e,r)=>M.has(e.dataTransfer.effectAllowed)&&r.items.length===0,[Z,y]=j.create({defaultValue:null,displayName:"Haul.Context"}),b={...g,onSuccessfulDrop:()=>{}},C=t.memo(({children:e,useState:r=t.useState,onDropOutside:s})=>{const c=y(),[i,n]=r(g),u=t.useRef(b),l=t.useRef(new Set),d=t.useCallback((o,a,k)=>{u.current={source:o,items:a,onSuccessfulDrop:k},n({source:o,items:a})},[n,s]),p=t.useCallback(({target:o,dropped:a})=>{const k=u.current.items;u.current.onSuccessfulDrop?.({target:o,dropped:a,hauled:k}),u.current=b,n(g)},[n]),D=t.useCallback(o=>{let a=null;l.current.forEach(k=>{a==null&&(a=k(u.current,o))}),a!=null&&p(a),u.current=b,n(g)},[n]),m=t.useCallback(o=>(l.current.add(o),()=>l.current.delete(o)),[]),E=t.useMemo(()=>c??{state:i,start:d,end:D,drop:p,bind:m},[i,d,D,p,c]);return P.jsxRuntimeExports.jsx(Z,{value:E,children:e})});C.displayName="HaulProvider";const F=()=>{const e=t.useRef(g),r=y();return r==null||(e.current=r.state),e},I=()=>{const e=y();return e==null?g:e.state},z=({type:e,key:r})=>{const s=r??t.useId(),c=t.useMemo(()=>({key:s,type:e}),[s,e]),i=y();if(i==null)return{startDrag:()=>{},onDragEnd:()=>{}};const{start:n,end:u}=i;return{startDrag:t.useCallback((l,d)=>n(c,l,d),[n,c]),onDragEnd:l=>u(x.xy.construct({x:l.screenX,y:l.screenY}))}},R=({type:e,key:r,canDrop:s,onDrop:c,onDragOver:i})=>{const n=F(),u=y();if(u==null)return{onDragOver:()=>{},onDrop:()=>{}};const{drop:l}=u,d=r??t.useId(),p=t.useMemo(()=>({key:d,type:e}),[d,e]),D=t.useRef({x:-1,y:-1}),m=t.useCallback(o=>{o.preventDefault();const a=x.xy.construct({x:o.screenX,y:o.screenY});x.xy.equals(a,D.current)||(D.current=a,s(n.current)&&i?.({event:o,...n.current}))},[n,s]),E=t.useCallback(o=>{s(n.current)&&(o.preventDefault(),l({target:p,dropped:c({...n.current,event:o})}))},[n,c,s,l,p]);return{onDragOver:m,onDrop:E}},A=({type:e,key:r,...s})=>{const c=r??t.useId(),i=t.useMemo(()=>({key:c,type:e}),[c,e]),n=z(i),u=R({...s,...i});return{...n,...u}},v=e=>({items:r})=>r.some(s=>s.type===e),S=(e,r)=>r.filter(s=>s.type===e),L=(e,r,s)=>t.useCallback(c=>r({...c,items:S(e,c.items)}),s),w=Object.freeze(Object.defineProperty({__proto__:null,FILE:q,FILE_TYPE:_,Provider:C,ZERO_DRAGGING_STATE:g,ZERO_ITEM:O,canDropOfType:v,draggingStateZ:h,filterByType:S,isFileDrag:H,itemZ:T,useContext:y,useDrag:z,useDragAndDrop:A,useDraggingRef:F,useDraggingState:I,useDrop:R,useFilterByTypeCallback:L},Symbol.toStringTag,{value:"Module"}));exports.FILE_TYPE=_;exports.Haul=w;exports.Provider=C;exports.canDropOfType=v;exports.filterByType=S;exports.useDragAndDrop=A;exports.useDraggingState=I;exports.useDrop=R;exports.useFilterByTypeCallback=L;
1
+ "use strict";const P=require("./jsx-runtime-nZSsnGb7.cjs"),x=require("@synnaxlabs/x"),t=require("react"),f=require("zod"),j=require("./Text-_KoMj9Wf.cjs"),T=f.z.object({key:f.z.string().or(f.z.number()),type:f.z.string(),elementID:f.z.string().optional(),data:x.record.unknownZ.optional()}),h=f.z.object({source:T,items:f.z.array(T)}),O={key:"",type:""},g={source:O,items:[]},_="file",q={key:"file",type:_},M=new Set(["all","copyLink"]),H=(e,r)=>M.has(e.dataTransfer.effectAllowed)&&r.items.length===0,[Z,y]=j.create({defaultValue:null,displayName:"Haul.Context"}),b={...g,onSuccessfulDrop:()=>{}},C=t.memo(({children:e,useState:r=t.useState,onDropOutside:s})=>{const c=y(),[i,n]=r(g),u=t.useRef(b),l=t.useRef(new Set),d=t.useCallback((o,a,k)=>{u.current={source:o,items:a,onSuccessfulDrop:k},n({source:o,items:a})},[n,s]),p=t.useCallback(({target:o,dropped:a})=>{const k=u.current.items;u.current.onSuccessfulDrop?.({target:o,dropped:a,hauled:k}),u.current=b,n(g)},[n]),D=t.useCallback(o=>{let a=null;l.current.forEach(k=>{a==null&&(a=k(u.current,o))}),a!=null&&p(a),u.current=b,n(g)},[n]),m=t.useCallback(o=>(l.current.add(o),()=>l.current.delete(o)),[]),E=t.useMemo(()=>c??{state:i,start:d,end:D,drop:p,bind:m},[i,d,D,p,c]);return P.jsxRuntimeExports.jsx(Z,{value:E,children:e})});C.displayName="HaulProvider";const F=()=>{const e=t.useRef(g),r=y();return r==null||(e.current=r.state),e},I=()=>{const e=y();return e==null?g:e.state},z=({type:e,key:r})=>{const s=r??t.useId(),c=t.useMemo(()=>({key:s,type:e}),[s,e]),i=y();if(i==null)return{startDrag:()=>{},onDragEnd:()=>{}};const{start:n,end:u}=i;return{startDrag:t.useCallback((l,d)=>n(c,l,d),[n,c]),onDragEnd:l=>u(x.xy.construct({x:l.screenX,y:l.screenY}))}},R=({type:e,key:r,canDrop:s,onDrop:c,onDragOver:i})=>{const n=F(),u=y();if(u==null)return{onDragOver:()=>{},onDrop:()=>{}};const{drop:l}=u,d=r??t.useId(),p=t.useMemo(()=>({key:d,type:e}),[d,e]),D=t.useRef({x:-1,y:-1}),m=t.useCallback(o=>{o.preventDefault();const a=x.xy.construct({x:o.screenX,y:o.screenY});x.xy.equals(a,D.current)||(D.current=a,s(n.current)&&i?.({event:o,...n.current}))},[n,s]),E=t.useCallback(o=>{s(n.current)&&(o.preventDefault(),l({target:p,dropped:c({...n.current,event:o})}))},[n,c,s,l,p]);return{onDragOver:m,onDrop:E}},A=({type:e,key:r,...s})=>{const c=r??t.useId(),i=t.useMemo(()=>({key:c,type:e}),[c,e]),n=z(i),u=R({...s,...i});return{...n,...u}},v=e=>({items:r})=>r.some(s=>s.type===e),S=(e,r)=>r.filter(s=>s.type===e),L=(e,r,s)=>t.useCallback(c=>r({...c,items:S(e,c.items)}),s),w=Object.freeze(Object.defineProperty({__proto__:null,FILE:q,FILE_TYPE:_,Provider:C,ZERO_DRAGGING_STATE:g,ZERO_ITEM:O,canDropOfType:v,draggingStateZ:h,filterByType:S,isFileDrag:H,itemZ:T,useContext:y,useDrag:z,useDragAndDrop:A,useDraggingRef:F,useDraggingState:I,useDrop:R,useFilterByTypeCallback:L},Symbol.toStringTag,{value:"Module"}));exports.FILE_TYPE=_;exports.Haul=w;exports.Provider=C;exports.canDropOfType=v;exports.filterByType=S;exports.useDragAndDrop=A;exports.useDraggingState=I;exports.useDrop=R;exports.useFilterByTypeCallback=L;
@@ -2,7 +2,7 @@ import { j as L } from "./jsx-runtime-tc70JA_2.js";
2
2
  import { record as P, xy as T } from "@synnaxlabs/x";
3
3
  import h, { memo as H, useRef as x, useCallback as i, useMemo as _, useId as O } from "react";
4
4
  import { z as d } from "zod";
5
- import { c as Z } from "./Text-BSTMZRuo.js";
5
+ import { c as Z } from "./Text-BIGgPTpY.js";
6
6
  const b = d.object({
7
7
  key: d.string().or(d.number()),
8
8
  type: d.string(),
@@ -1,4 +1,4 @@
1
- "use strict";const E=require("./jsx-runtime-nZSsnGb7.cjs"),P=require("./Copy-DuC8dTK7.cjs"),U=require("@synnaxlabs/x"),b=require("./css-CloSmhZB.cjs"),D=require("./Animated-xK__WUQp.cjs"),d=require("react"),_=require("./Box-CNUz5BsV.cjs"),$=require("react-dom"),N=require("./Text-C2_VsLzw.cjs"),R=require("./Editable-HUPqTaui.cjs");require("./types-DI2vtOGs.cjs");require("./Provider-DSMJjyuY.cjs");function H(n){const l=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(n){for(const e in n)if(e!=="default"){const s=Object.getOwnPropertyDescriptor(n,e);Object.defineProperty(l,e,s.get?s:{enumerable:!0,get:()=>n[e]})}}return l.default=n,Object.freeze(l)}const y=H(d);function M(n,l,e){let s=e.initialDeps??[],t;function i(){var o,r,c,u;let a;e.key&&((o=e.debug)!=null&&o.call(e))&&(a=Date.now());const h=n();if(!(h.length!==s.length||h.some((m,g)=>s[g]!==m)))return t;s=h;let p;if(e.key&&((r=e.debug)!=null&&r.call(e))&&(p=Date.now()),t=l(...h),e.key&&((c=e.debug)!=null&&c.call(e))){const m=Math.round((Date.now()-a)*100)/100,g=Math.round((Date.now()-p)*100)/100,v=g/16,S=(x,C)=>{for(x=String(x);x.length<C;)x=" "+x;return x};console.info(`%c⏱ ${S(g,5)} /${S(m,5)} ms`,`
1
+ "use strict";const E=require("./jsx-runtime-nZSsnGb7.cjs"),P=require("./Copy-6Mur4EW2.cjs"),U=require("@synnaxlabs/x"),b=require("./css-CloSmhZB.cjs"),D=require("./Animated-C4AcIYpH.cjs"),d=require("react"),_=require("./Box-CNUz5BsV.cjs"),$=require("react-dom"),N=require("./Text-_KoMj9Wf.cjs"),R=require("./Editable-HUPqTaui.cjs");require("./types-DI2vtOGs.cjs");require("./Provider-B1JpVCIg.cjs");function H(n){const l=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(n){for(const e in n)if(e!=="default"){const s=Object.getOwnPropertyDescriptor(n,e);Object.defineProperty(l,e,s.get?s:{enumerable:!0,get:()=>n[e]})}}return l.default=n,Object.freeze(l)}const y=H(d);function M(n,l,e){let s=e.initialDeps??[],t;function i(){var o,r,c,u;let a;e.key&&((o=e.debug)!=null&&o.call(e))&&(a=Date.now());const h=n();if(!(h.length!==s.length||h.some((m,g)=>s[g]!==m)))return t;s=h;let p;if(e.key&&((r=e.debug)!=null&&r.call(e))&&(p=Date.now()),t=l(...h),e.key&&((c=e.debug)!=null&&c.call(e))){const m=Math.round((Date.now()-a)*100)/100,g=Math.round((Date.now()-p)*100)/100,v=g/16,S=(x,C)=>{for(x=String(x);x.length<C;)x=" "+x;return x};console.info(`%c⏱ ${S(g,5)} /${S(m,5)} ms`,`
2
2
  font-size: .6rem;
3
3
  font-weight: bold;
4
4
  color: hsl(${Math.max(0,Math.min(120-120*v,120))}deg 100% 31%);`,e?.key)}return(u=e?.onChange)==null||u.call(e,t),t}return i.updateDeps=o=>{s=o},i}function T(n,l){if(n===void 0)throw new Error("Unexpected undefined");return n}const K=(n,l)=>Math.abs(n-l)<1,G=(n,l,e)=>{let s;return function(...t){n.clearTimeout(s),s=n.setTimeout(()=>l.apply(this,t),e)}},X=n=>n,Y=n=>{const l=Math.max(n.startIndex-n.overscan,0),e=Math.min(n.endIndex+n.overscan,n.count-1),s=[];for(let t=l;t<=e;t++)s.push(t);return s},J=(n,l)=>{const e=n.scrollElement;if(!e)return;const s=n.targetWindow;if(!s)return;const t=o=>{const{width:r,height:c}=o;l({width:Math.round(r),height:Math.round(c)})};if(t(e.getBoundingClientRect()),!s.ResizeObserver)return()=>{};const i=new s.ResizeObserver(o=>{const r=()=>{const c=o[0];if(c?.borderBoxSize){const u=c.borderBoxSize[0];if(u){t({width:u.inlineSize,height:u.blockSize});return}}t(e.getBoundingClientRect())};n.options.useAnimationFrameWithResizeObserver?requestAnimationFrame(r):r()});return i.observe(e,{box:"border-box"}),()=>{i.unobserve(e)}},j={passive:!0},F=typeof window>"u"?!0:"onscrollend"in window,Q=(n,l)=>{const e=n.scrollElement;if(!e)return;const s=n.targetWindow;if(!s)return;let t=0;const i=n.options.useScrollendEvent&&F?()=>{}:G(s,()=>{l(t,!1)},n.options.isScrollingResetDelay),o=a=>()=>{const{horizontal:h,isRtl:f}=n.options;t=h?e.scrollLeft*(f&&-1||1):e.scrollTop,i(),l(t,a)},r=o(!0),c=o(!1);c(),e.addEventListener("scroll",r,j);const u=n.options.useScrollendEvent&&F;return u&&e.addEventListener("scrollend",c,j),()=>{e.removeEventListener("scroll",r),u&&e.removeEventListener("scrollend",c)}},Z=(n,l,e)=>{if(l?.borderBoxSize){const s=l.borderBoxSize[0];if(s)return Math.round(s[e.options.horizontal?"inlineSize":"blockSize"])}return Math.round(n.getBoundingClientRect()[e.options.horizontal?"width":"height"])},ee=(n,{adjustments:l=0,behavior:e},s)=>{var t,i;const o=n+l;(i=(t=s.scrollElement)==null?void 0:t.scrollTo)==null||i.call(t,{[s.options.horizontal?"left":"top"]:o,behavior:e})};class te{constructor(l){this.unsubs=[],this.scrollElement=null,this.targetWindow=null,this.isScrolling=!1,this.scrollToIndexTimeoutId=null,this.measurementsCache=[],this.itemSizeCache=new Map,this.pendingMeasuredCacheIndexes=[],this.scrollRect=null,this.scrollOffset=null,this.scrollDirection=null,this.scrollAdjustments=0,this.elementsCache=new Map,this.observer=(()=>{let e=null;const s=()=>e||(!this.targetWindow||!this.targetWindow.ResizeObserver?null:e=new this.targetWindow.ResizeObserver(t=>{t.forEach(i=>{const o=()=>{this._measureElement(i.target,i)};this.options.useAnimationFrameWithResizeObserver?requestAnimationFrame(o):o()})}));return{disconnect:()=>{var t;(t=s())==null||t.disconnect(),e=null},observe:t=>{var i;return(i=s())==null?void 0:i.observe(t,{box:"border-box"})},unobserve:t=>{var i;return(i=s())==null?void 0:i.unobserve(t)}}})(),this.range=null,this.setOptions=e=>{Object.entries(e).forEach(([s,t])=>{typeof t>"u"&&delete e[s]}),this.options={debug:!1,initialOffset:0,overscan:1,paddingStart:0,paddingEnd:0,scrollPaddingStart:0,scrollPaddingEnd:0,horizontal:!1,getItemKey:X,rangeExtractor:Y,onChange:()=>{},measureElement:Z,initialRect:{width:0,height:0},scrollMargin:0,gap:0,indexAttribute:"data-index",initialMeasurementsCache:[],lanes:1,isScrollingResetDelay:150,enabled:!0,isRtl:!1,useScrollendEvent:!1,useAnimationFrameWithResizeObserver:!1,...e}},this.notify=e=>{var s,t;(t=(s=this.options).onChange)==null||t.call(s,this,e)},this.maybeNotify=M(()=>(this.calculateRange(),[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]),e=>{this.notify(e)},{key:process.env.NODE_ENV!=="production"&&"maybeNotify",debug:()=>this.options.debug,initialDeps:[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]}),this.cleanup=()=>{this.unsubs.filter(Boolean).forEach(e=>e()),this.unsubs=[],this.observer.disconnect(),this.scrollElement=null,this.targetWindow=null},this._didMount=()=>()=>{this.cleanup()},this._willUpdate=()=>{var e;const s=this.options.enabled?this.options.getScrollElement():null;if(this.scrollElement!==s){if(this.cleanup(),!s){this.maybeNotify();return}this.scrollElement=s,this.scrollElement&&"ownerDocument"in this.scrollElement?this.targetWindow=this.scrollElement.ownerDocument.defaultView:this.targetWindow=((e=this.scrollElement)==null?void 0:e.window)??null,this.elementsCache.forEach(t=>{this.observer.observe(t)}),this._scrollToOffset(this.getScrollOffset(),{adjustments:void 0,behavior:void 0}),this.unsubs.push(this.options.observeElementRect(this,t=>{this.scrollRect=t,this.maybeNotify()})),this.unsubs.push(this.options.observeElementOffset(this,(t,i)=>{this.scrollAdjustments=0,this.scrollDirection=i?this.getScrollOffset()<t?"forward":"backward":null,this.scrollOffset=t,this.isScrolling=i,this.maybeNotify()}))}},this.getSize=()=>this.options.enabled?(this.scrollRect=this.scrollRect??this.options.initialRect,this.scrollRect[this.options.horizontal?"width":"height"]):(this.scrollRect=null,0),this.getScrollOffset=()=>this.options.enabled?(this.scrollOffset=this.scrollOffset??(typeof this.options.initialOffset=="function"?this.options.initialOffset():this.options.initialOffset),this.scrollOffset):(this.scrollOffset=null,0),this.getFurthestMeasurement=(e,s)=>{const t=new Map,i=new Map;for(let o=s-1;o>=0;o--){const r=e[o];if(t.has(r.lane))continue;const c=i.get(r.lane);if(c==null||r.end>c.end?i.set(r.lane,r):r.end<c.end&&t.set(r.lane,!0),t.size===this.options.lanes)break}return i.size===this.options.lanes?Array.from(i.values()).sort((o,r)=>o.end===r.end?o.index-r.index:o.end-r.end)[0]:void 0},this.getMeasurementOptions=M(()=>[this.options.count,this.options.paddingStart,this.options.scrollMargin,this.options.getItemKey,this.options.enabled],(e,s,t,i,o)=>(this.pendingMeasuredCacheIndexes=[],{count:e,paddingStart:s,scrollMargin:t,getItemKey:i,enabled:o}),{key:!1}),this.getMeasurements=M(()=>[this.getMeasurementOptions(),this.itemSizeCache],({count:e,paddingStart:s,scrollMargin:t,getItemKey:i,enabled:o},r)=>{if(!o)return this.measurementsCache=[],this.itemSizeCache.clear(),[];this.measurementsCache.length===0&&(this.measurementsCache=this.options.initialMeasurementsCache,this.measurementsCache.forEach(a=>{this.itemSizeCache.set(a.key,a.size)}));const c=this.pendingMeasuredCacheIndexes.length>0?Math.min(...this.pendingMeasuredCacheIndexes):0;this.pendingMeasuredCacheIndexes=[];const u=this.measurementsCache.slice(0,c);for(let a=c;a<e;a++){const h=i(a),f=this.options.lanes===1?u[a-1]:this.getFurthestMeasurement(u,a),p=f?f.end+this.options.gap:s+t,m=r.get(h),g=typeof m=="number"?m:this.options.estimateSize(a),v=p+g,S=f?f.lane:a%this.options.lanes;u[a]={index:a,start:p,size:g,end:v,key:h,lane:S}}return this.measurementsCache=u,u},{key:process.env.NODE_ENV!=="production"&&"getMeasurements",debug:()=>this.options.debug}),this.calculateRange=M(()=>[this.getMeasurements(),this.getSize(),this.getScrollOffset(),this.options.lanes],(e,s,t,i)=>this.range=e.length>0&&s>0?se({measurements:e,outerSize:s,scrollOffset:t,lanes:i}):null,{key:process.env.NODE_ENV!=="production"&&"calculateRange",debug:()=>this.options.debug}),this.getVirtualIndexes=M(()=>{let e=null,s=null;const t=this.calculateRange();return t&&(e=t.startIndex,s=t.endIndex),this.maybeNotify.updateDeps([this.isScrolling,e,s]),[this.options.rangeExtractor,this.options.overscan,this.options.count,e,s]},(e,s,t,i,o)=>i===null||o===null?[]:e({startIndex:i,endIndex:o,overscan:s,count:t}),{key:process.env.NODE_ENV!=="production"&&"getVirtualIndexes",debug:()=>this.options.debug}),this.indexFromElement=e=>{const s=this.options.indexAttribute,t=e.getAttribute(s);return t?parseInt(t,10):(console.warn(`Missing attribute name '${s}={index}' on measured element.`),-1)},this._measureElement=(e,s)=>{const t=this.indexFromElement(e),i=this.measurementsCache[t];if(!i)return;const o=i.key,r=this.elementsCache.get(o);r!==e&&(r&&this.observer.unobserve(r),this.observer.observe(e),this.elementsCache.set(o,e)),e.isConnected&&this.resizeItem(t,this.options.measureElement(e,s,this))},this.resizeItem=(e,s)=>{const t=this.measurementsCache[e];if(!t)return;const i=this.itemSizeCache.get(t.key)??t.size,o=s-i;o!==0&&((this.shouldAdjustScrollPositionOnItemSizeChange!==void 0?this.shouldAdjustScrollPositionOnItemSizeChange(t,o,this):t.start<this.getScrollOffset()+this.scrollAdjustments)&&(process.env.NODE_ENV!=="production"&&this.options.debug&&console.info("correction",o),this._scrollToOffset(this.getScrollOffset(),{adjustments:this.scrollAdjustments+=o,behavior:void 0})),this.pendingMeasuredCacheIndexes.push(t.index),this.itemSizeCache=new Map(this.itemSizeCache.set(t.key,s)),this.notify(!1))},this.measureElement=e=>{if(!e){this.elementsCache.forEach((s,t)=>{s.isConnected||(this.observer.unobserve(s),this.elementsCache.delete(t))});return}this._measureElement(e,void 0)},this.getVirtualItems=M(()=>[this.getVirtualIndexes(),this.getMeasurements()],(e,s)=>{const t=[];for(let i=0,o=e.length;i<o;i++){const r=e[i],c=s[r];t.push(c)}return t},{key:process.env.NODE_ENV!=="production"&&"getVirtualItems",debug:()=>this.options.debug}),this.getVirtualItemForOffset=e=>{const s=this.getMeasurements();if(s.length!==0)return T(s[A(0,s.length-1,t=>T(s[t]).start,e)])},this.getOffsetForAlignment=(e,s,t=0)=>{const i=this.getSize(),o=this.getScrollOffset();s==="auto"&&(s=e>=o+i?"end":"start"),s==="center"?e+=(t-i)/2:s==="end"&&(e-=i);const r=this.options.horizontal?"scrollWidth":"scrollHeight",u=(this.scrollElement?"document"in this.scrollElement?this.scrollElement.document.documentElement[r]:this.scrollElement[r]:0)-i;return Math.max(Math.min(u,e),0)},this.getOffsetForIndex=(e,s="auto")=>{e=Math.max(0,Math.min(e,this.options.count-1));const t=this.measurementsCache[e];if(!t)return;const i=this.getSize(),o=this.getScrollOffset();if(s==="auto")if(t.end>=o+i-this.options.scrollPaddingEnd)s="end";else if(t.start<=o+this.options.scrollPaddingStart)s="start";else return[o,s];const r=s==="end"?t.end+this.options.scrollPaddingEnd:t.start-this.options.scrollPaddingStart;return[this.getOffsetForAlignment(r,s,t.size),s]},this.isDynamicMode=()=>this.elementsCache.size>0,this.cancelScrollToIndex=()=>{this.scrollToIndexTimeoutId!==null&&this.targetWindow&&(this.targetWindow.clearTimeout(this.scrollToIndexTimeoutId),this.scrollToIndexTimeoutId=null)},this.scrollToOffset=(e,{align:s="start",behavior:t}={})=>{this.cancelScrollToIndex(),t==="smooth"&&this.isDynamicMode()&&console.warn("The `smooth` scroll behavior is not fully supported with dynamic size."),this._scrollToOffset(this.getOffsetForAlignment(e,s),{adjustments:void 0,behavior:t})},this.scrollToIndex=(e,{align:s="auto",behavior:t}={})=>{e=Math.max(0,Math.min(e,this.options.count-1)),this.cancelScrollToIndex(),t==="smooth"&&this.isDynamicMode()&&console.warn("The `smooth` scroll behavior is not fully supported with dynamic size.");const i=this.getOffsetForIndex(e,s);if(!i)return;const[o,r]=i;this._scrollToOffset(o,{adjustments:void 0,behavior:t}),t!=="smooth"&&this.isDynamicMode()&&this.targetWindow&&(this.scrollToIndexTimeoutId=this.targetWindow.setTimeout(()=>{if(this.scrollToIndexTimeoutId=null,this.elementsCache.has(this.options.getItemKey(e))){const[u]=T(this.getOffsetForIndex(e,r));K(u,this.getScrollOffset())||this.scrollToIndex(e,{align:r,behavior:t})}else this.scrollToIndex(e,{align:r,behavior:t})}))},this.scrollBy=(e,{behavior:s}={})=>{this.cancelScrollToIndex(),s==="smooth"&&this.isDynamicMode()&&console.warn("The `smooth` scroll behavior is not fully supported with dynamic size."),this._scrollToOffset(this.getScrollOffset()+e,{adjustments:void 0,behavior:s})},this.getTotalSize=()=>{var e;const s=this.getMeasurements();let t;if(s.length===0)t=this.options.paddingStart;else if(this.options.lanes===1)t=((e=s[s.length-1])==null?void 0:e.end)??0;else{const i=Array(this.options.lanes).fill(null);let o=s.length-1;for(;o>=0&&i.some(r=>r===null);){const r=s[o];i[r.lane]===null&&(i[r.lane]=r.end),o--}t=Math.max(...i.filter(r=>r!==null))}return Math.max(t-this.options.scrollMargin+this.options.paddingEnd,0)},this._scrollToOffset=(e,{adjustments:s,behavior:t})=>{this.options.scrollToFn(e,{behavior:t,adjustments:s},this)},this.measure=()=>{this.itemSizeCache=new Map,this.notify(!1)},this.setOptions(l)}}const A=(n,l,e,s)=>{for(;n<=l;){const t=(n+l)/2|0,i=e(t);if(i<s)n=t+1;else if(i>s)l=t-1;else return t}return n>0?n-1:0};function se({measurements:n,outerSize:l,scrollOffset:e,lanes:s}){const t=n.length-1,i=c=>n[c].start;if(n.length<=s)return{startIndex:0,endIndex:t};let o=A(0,t,i,e),r=o;if(s===1)for(;r<t&&n[r].end<e+l;)r++;else if(s>1){const c=Array(s).fill(0);for(;r<t&&c.some(a=>a<e+l);){const a=n[r];c[a.lane]=a.end,r++}const u=Array(s).fill(e+l);for(;o>=0&&u.some(a=>a>=e);){const a=n[o];u[a.lane]=a.start,o--}o=Math.max(0,o-o%s),r=Math.min(t,r+(s-1-r%s))}return{startIndex:o,endIndex:r}}const k=typeof document<"u"?y.useLayoutEffect:y.useEffect;function ne(n){const l=y.useReducer(()=>({}),{})[1],e={...n,onChange:(t,i)=>{var o;i?$.flushSync(l):l(),(o=n.onChange)==null||o.call(n,t,i)}},[s]=y.useState(()=>new te(e));return s.setOptions(e),k(()=>s._didMount(),[]),k(()=>s._willUpdate()),s}function ie(n){return ne({observeElementRect:J,observeElementOffset:Q,scrollToFn:ee,...n})}const oe=(n,l)=>(e=>Array.isArray(e)?l(e):n(e)),[V,re]=N.create({displayName:"List.DataContext",providerName:"List.Frame"}),[L,z]=N.create({displayName:"List.UtilContext",providerName:"List.Frame"}),le=()=>z("List.useUtilContext"),ce=()=>{const{scrollToIndex:n}=z("List.useScroller");return d.useMemo(()=>({scrollToIndex:n}),[n])},ae=n=>{const{getItem:l,subscribe:e}=z("List.useItem");return d.useSyncExternalStore(d.useCallback(s=>e==null?()=>{}:e(s,n),[n,e]),d.useCallback(()=>l?.(n),[l,n]),()=>{})},B=()=>{const{data:n,getItems:l,getTotalSize:e,itemHeight:s,sentinelRef:t}=re("List.useData"),{ref:i,getItem:o,scrollToIndex:r,subscribe:c}=z("List.useData");return d.useMemo(()=>({data:n,getItems:l,getTotalSize:e,ref:i,getItem:o,scrollToIndex:r,subscribe:c,itemHeight:s,sentinelRef:t}),[n,l,e,i,o,r,c,s,t])},W=(n,l,e)=>{const s=R.useSyncedRef(e),{visible:t}=D.useContext(),i=d.useRef(!1);return d.useCallback(o=>{n.current=o,!(n.current==null||i.current)&&(i.current=!0,s.current?.())},[s,t,l])},ue=100,he=(n,l)=>{const e=R.useSyncedRef(n),s=d.useRef(!1),t=d.useRef(null),i=d.useRef(null),o=d.useRef(null),r=R.usePrevious(l);r!==void 0&&l!==r&&(s.current=!1);const c=d.useCallback(()=>{t.current?.disconnect(),t.current=null;const h=i.current,f=o.current;h==null||f==null||(t.current=new IntersectionObserver(p=>{p[0].isIntersecting&&!s.current&&(s.current=!0,e.current?.())},{root:h,rootMargin:`0px 0px ${ue}px 0px`,threshold:0}),t.current.observe(f))},[e]),u=d.useCallback(h=>{i.current=h,c()},[c]),a=d.useCallback(h=>{o.current=h,c()},[c]);return{containerRef:u,sentinelRef:a}},de=({data:n,getItem:l,subscribe:e,children:s,onFetchMore:t,overscan:i=10,itemHeight:o=36})=>{const r=d.useRef(null),c=n.length>0,u=W(r,c,t),a=ie({count:n.length,getScrollElement:()=>r.current,estimateSize:()=>o,overscan:i,onChange:d.useCallback(m=>{const g=m.getVirtualItems();g.length>0&&g[g.length-1].index===n.length-1&&t?.()},[n.length,t])}),h=a.getVirtualItems(),f=d.useMemo(()=>({ref:u,getItem:l,data:n,subscribe:e,getTotalSize:()=>a.getTotalSize(),getItems:()=>h.map(({index:m,start:g})=>({key:n[m],index:m,translate:g})),itemHeight:o}),[u,a,n,l,o,h]),p=d.useMemo(()=>({ref:u,getItem:l,scrollToIndex:m=>a.scrollToIndex(m),subscribe:e}),[u,a,l,e]);return E.jsxRuntimeExports.jsx(V,{value:f,children:E.jsxRuntimeExports.jsx(L,{value:p,children:s})})},fe=({data:n,getItem:l,subscribe:e,children:s,onFetchMore:t,itemHeight:i})=>{const o=d.useRef(null),r=n.length>0,c=d.useCallback((v,S)=>{const x=o.current?.children[0];if(x==null)return;const C=S==="top"?1:-1;let I;const w=v+C;U.bounds.contains({lower:0,upper:x.children.length},w)?I=v+C:I=v;const O=x.children[I];O?.scrollIntoView({block:"nearest",inline:"nearest",behavior:"smooth"})},[]),u=W(o,r,t),{containerRef:a,sentinelRef:h}=he(t,n.length),f=R.useCombinedRefs(u,a),p=d.useMemo(()=>n.map((v,S)=>({key:v,index:S})),[n]),m=d.useMemo(()=>({ref:f,getItem:l,data:n,subscribe:e,getTotalSize:()=>{},getItems:()=>p,itemHeight:i,sentinelRef:h}),[f,n,l,e,i,h,p]),g=d.useMemo(()=>({ref:f,getItem:l,scrollToIndex:c,subscribe:e}),[f,l,e,c]);return E.jsxRuntimeExports.jsx(V,{value:m,children:E.jsxRuntimeExports.jsx(L,{value:g,children:s})})},q=({virtual:n=!1,...l})=>n?E.jsxRuntimeExports.jsx(de,{...l}):E.jsxRuntimeExports.jsx(fe,{...l}),me=d.memo(q),ge=({itemKey:n,className:l,index:e,el:s,draggingOver:t=!1,rightAligned:i=!1,highlightHovered:o=!1,selected:r=!1,translate:c,onSelect:u,onClick:a,hovered:h,style:f,...p})=>E.jsxRuntimeExports.jsx(P.Button,{el:s,defaultEl:"div",id:n.toString(),variant:"text",onClick:m=>{u?.(n),a?.(m)},className:b.CSS(l,D.CONTEXT_TARGET,r&&D.CONTEXT_SELECTED,h&&b.CSS.M("hovered"),i&&b.CSS.M("right-aligned"),o&&b.CSS.M("highlight-hover"),t&&b.CSS.M("dragging-over"),b.CSS.BE("list","item"),b.CSS.selected(r)),style:{position:c!=null?"absolute":"relative",transform:`translateY(${c}px)`,...f},square:!1,...p}),pe=({className:n,children:l,emptyContent:e,displayItems:s,style:t,direction:i,x:o,y:r,...c})=>{const{ref:u,getItems:a,getTotalSize:h,data:f,itemHeight:p,sentinelRef:m}=B(),g=a();let v=e;const S=f.length>0;S&&(v=E.jsxRuntimeExports.jsxs("div",{className:b.CSS.BE("list","virtualizer"),style:{minHeight:h()},children:[g.map(({key:I,index:w,translate:O})=>l({key:I,index:w,itemKey:I,translate:O})),m!=null&&E.jsxRuntimeExports.jsx("div",{ref:m,className:b.CSS.BE("list","sentinel"),"aria-hidden":"true"})]}));let x;p!=null&&s!=null&&isFinite(s)&&S&&(x=Math.min(s,g.length)*p+1);const C=_.parseDirection(i,o,r);return E.jsxRuntimeExports.jsx(_.Box$1,{gap:0,ref:u,className:b.CSS(n,b.CSS.BE("list","items"),!S&&b.CSS.BEM("list","items","empty")),style:{height:x,...t},full:C,direction:C,...c,children:v})},xe=d.memo(pe);exports.BaseFrame=q;exports.Frame=me;exports.Item=ge;exports.Items=xe;exports.createGetItem=oe;exports.useData=B;exports.useItem=ae;exports.useScroller=ce;exports.useUtilContext=le;
@@ -1,16 +1,16 @@
1
1
  import { j as E } from "./jsx-runtime-tc70JA_2.js";
2
- import { B as P } from "./Copy-CzkBKGca.js";
2
+ import { B as P } from "./Copy-eucLPEWo.js";
3
3
  import { bounds as U } from "@synnaxlabs/x";
4
4
  import { C as b } from "./css-D90kZTM8.js";
5
- import { u as $, d as H, c as q } from "./Animated-6qL1fRZx.js";
5
+ import { u as $, d as H, c as q } from "./Animated-BU-7FzeV.js";
6
6
  import * as w from "react";
7
7
  import { memo as A, useRef as C, useCallback as S, useMemo as M, useSyncExternalStore as K } from "react";
8
8
  import { p as X, a as G } from "./Box-Bi280MYh.js";
9
9
  import { flushSync as Y } from "react-dom";
10
- import { c as V } from "./Text-BSTMZRuo.js";
11
- import { f as J, c as j, g as Q } from "./Editable-4ZwvICC4.js";
10
+ import { c as V } from "./Text-BIGgPTpY.js";
11
+ import { b as J, d as j, g as Q } from "./Editable-C17ILP50.js";
12
12
  import "./types-CGRCBVD4.js";
13
- import "./Provider-ZIy-UlnE.js";
13
+ import "./Provider-CfgP1iWx.js";
14
14
  function O(n, l, e) {
15
15
  let s = e.initialDeps ?? [], t;
16
16
  function i() {