@synnaxlabs/pluto 0.53.2 → 0.54.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (286) hide show
  1. package/dist/aether-BBeeeA1z.cjs +10 -0
  2. package/dist/aether-Bl3vMZO3.js +716 -0
  3. package/dist/aether-DmSenWd4.js +704 -0
  4. package/dist/aether-VeYJQDcf.cjs +11 -0
  5. package/dist/button-DBdzH6Ky.cjs +1 -0
  6. package/dist/button-KtgabnXL.js +251 -0
  7. package/dist/button.cjs +1 -1
  8. package/dist/button.js +2 -4
  9. package/dist/chunk-DeC0fbbY.js +23 -0
  10. package/dist/chunk-FeXHwk1_.cjs +1 -0
  11. package/dist/color-Cspp5cKp.js +7904 -0
  12. package/dist/color-DCCr0Z1b.cjs +29 -0
  13. package/dist/color.cjs +1 -1
  14. package/dist/color.js +2 -4
  15. package/dist/css-Ce-x3HcK.cjs +1 -0
  16. package/dist/css-UEo6g0SR.js +69 -0
  17. package/dist/css.cjs +1 -1
  18. package/dist/css.js +2 -8
  19. package/dist/dialog-BTCrp5Yv.cjs +1 -0
  20. package/dist/dialog-ClQI4sHo.js +331 -0
  21. package/dist/dialog.cjs +1 -1
  22. package/dist/dialog.js +2 -4
  23. package/dist/divider-BYRH8-5K.js +13 -0
  24. package/dist/divider-CEyntx31.cjs +1 -0
  25. package/dist/ether-CZlE80D0.cjs +53 -0
  26. package/dist/ether-KMGPzrZR.js +6222 -0
  27. package/dist/ether.cjs +1 -1
  28. package/dist/ether.js +4 -104
  29. package/dist/event-Btz3eWg1.cjs +1 -0
  30. package/dist/event-Z4V8c501.js +4 -0
  31. package/dist/flex-Bgtu0DK6.js +62 -0
  32. package/dist/flex-D_GoD3ed.cjs +1 -0
  33. package/dist/flex.cjs +1 -1
  34. package/dist/flex.js +2 -4
  35. package/dist/haul-BdMc4rLJ.js +171 -0
  36. package/dist/haul-ZdSHqhp6.cjs +1 -0
  37. package/dist/header-CNx3pAkx.js +64 -0
  38. package/dist/header-lD0sRjCR.cjs +1 -0
  39. package/dist/header.cjs +1 -1
  40. package/dist/header.js +2 -4
  41. package/dist/input-CdL1OPDU.cjs +74 -0
  42. package/dist/input-h-4axMs7.js +47772 -0
  43. package/dist/input.cjs +1 -1
  44. package/dist/input.js +2 -4
  45. package/dist/list-DacuSBB3.cjs +4 -0
  46. package/dist/list-dZDsxTzd.js +1756 -0
  47. package/dist/list.cjs +1 -1
  48. package/dist/list.js +2 -4
  49. package/dist/menu-eeXfR_zT.js +170 -0
  50. package/dist/menu-yADx33I8.cjs +1 -0
  51. package/dist/menu.cjs +1 -1
  52. package/dist/menu.js +2 -4
  53. package/dist/pluto.cjs +52 -0
  54. package/dist/pluto.css +2 -1
  55. package/dist/pluto.js +36474 -0
  56. package/dist/select-B93mFqvf.js +1328 -0
  57. package/dist/select-gt7wGGO4.cjs +1 -0
  58. package/dist/src/access/policy/queries.d.ts +34 -34
  59. package/dist/src/access/policy/queries.d.ts.map +1 -1
  60. package/dist/src/access/queries.d.ts +1 -1
  61. package/dist/src/access/queries.d.ts.map +1 -1
  62. package/dist/src/access/role/queries.d.ts +2 -12
  63. package/dist/src/access/role/queries.d.ts.map +1 -1
  64. package/dist/src/arc/queries.d.ts +1167 -29
  65. package/dist/src/arc/queries.d.ts.map +1 -1
  66. package/dist/src/channel/LinePlot.d.ts +2 -2
  67. package/dist/src/channel/LinePlot.d.ts.map +1 -1
  68. package/dist/src/channel/queries.d.ts +108 -60
  69. package/dist/src/channel/queries.d.ts.map +1 -1
  70. package/dist/src/color/Provider.d.ts +8 -8
  71. package/dist/src/device/queries.d.ts +148 -363
  72. package/dist/src/device/queries.d.ts.map +1 -1
  73. package/dist/src/flux/result.d.ts +5 -5
  74. package/dist/src/flux/result.d.ts.map +1 -1
  75. package/dist/src/flux/update.d.ts +1 -1
  76. package/dist/src/flux/update.d.ts.map +1 -1
  77. package/dist/src/icon/Icon.d.ts.map +1 -1
  78. package/dist/src/icon/registry.d.ts +1 -0
  79. package/dist/src/icon/registry.d.ts.map +1 -1
  80. package/dist/src/label/queries.d.ts +21 -21
  81. package/dist/src/label/queries.d.ts.map +1 -1
  82. package/dist/src/lineplot/aether/XAxis.d.ts +28 -28
  83. package/dist/src/lineplot/aether/YAxis.d.ts +28 -28
  84. package/dist/src/lineplot/aether/axis.d.ts +14 -14
  85. package/dist/src/lineplot/queries.d.ts +2 -2
  86. package/dist/src/lineplot/queries.d.ts.map +1 -1
  87. package/dist/src/lineplot/range/aether/provider.d.ts +126 -102
  88. package/dist/src/lineplot/range/aether/provider.d.ts.map +1 -1
  89. package/dist/src/lineplot/tooltip/aether/tooltip.d.ts +56 -56
  90. package/dist/src/log/aether/Log.d.ts +21 -21
  91. package/dist/src/log/queries.d.ts +2 -2
  92. package/dist/src/log/queries.d.ts.map +1 -1
  93. package/dist/src/memo/index.d.ts +0 -1
  94. package/dist/src/memo/index.d.ts.map +1 -1
  95. package/dist/src/memo/useMemoCompare.d.ts +0 -1
  96. package/dist/src/memo/useMemoCompare.d.ts.map +1 -1
  97. package/dist/src/rack/queries.d.ts.map +1 -1
  98. package/dist/src/ranger/aether/queries.d.ts.map +1 -1
  99. package/dist/src/ranger/queries.d.ts +19 -19
  100. package/dist/src/ranger/queries.d.ts.map +1 -1
  101. package/dist/src/schematic/queries.d.ts +2 -2
  102. package/dist/src/schematic/queries.d.ts.map +1 -1
  103. package/dist/src/schematic/symbol/Forms.d.ts.map +1 -1
  104. package/dist/src/schematic/symbol/Primitives.d.ts +2 -1
  105. package/dist/src/schematic/symbol/Primitives.d.ts.map +1 -1
  106. package/dist/src/schematic/symbol/SelectOrientation.d.ts.map +1 -1
  107. package/dist/src/schematic/symbol/Symbols.d.ts +35 -34
  108. package/dist/src/schematic/symbol/Symbols.d.ts.map +1 -1
  109. package/dist/src/schematic/symbol/queries.d.ts +96 -50
  110. package/dist/src/schematic/symbol/queries.d.ts.map +1 -1
  111. package/dist/src/schematic/symbol/registry.d.ts.map +1 -1
  112. package/dist/src/select/Dialog.d.ts +2 -1
  113. package/dist/src/select/Dialog.d.ts.map +1 -1
  114. package/dist/src/status/Select.d.ts.map +1 -1
  115. package/dist/src/status/SelectMulipleVariants.spec.d.ts +2 -0
  116. package/dist/src/status/SelectMulipleVariants.spec.d.ts.map +1 -0
  117. package/dist/src/status/SelectMultipleVariants.d.ts +9 -0
  118. package/dist/src/status/SelectMultipleVariants.d.ts.map +1 -0
  119. package/dist/src/status/SelectVariant.d.ts +2 -2
  120. package/dist/src/status/SelectVariant.d.ts.map +1 -1
  121. package/dist/src/status/SelectVariant.spec.d.ts +2 -0
  122. package/dist/src/status/SelectVariant.spec.d.ts.map +1 -0
  123. package/dist/src/status/aether/aggregator.d.ts +16 -2
  124. package/dist/src/status/aether/aggregator.d.ts.map +1 -1
  125. package/dist/src/status/aether/errorHandler.d.ts +2 -1
  126. package/dist/src/status/aether/errorHandler.d.ts.map +1 -1
  127. package/dist/src/status/base/Aggregator.d.ts +3 -2
  128. package/dist/src/status/base/Aggregator.d.ts.map +1 -1
  129. package/dist/src/status/external.d.ts +1 -0
  130. package/dist/src/status/external.d.ts.map +1 -1
  131. package/dist/src/status/queries.d.ts +25 -9
  132. package/dist/src/status/queries.d.ts.map +1 -1
  133. package/dist/src/status/variantData.d.ts +4 -0
  134. package/dist/src/status/variantData.d.ts.map +1 -0
  135. package/dist/src/table/cells/Cells.d.ts +17 -17
  136. package/dist/src/table/queries.d.ts +2 -2
  137. package/dist/src/table/queries.d.ts.map +1 -1
  138. package/dist/src/task/queries.d.ts +3 -3
  139. package/dist/src/task/queries.d.ts.map +1 -1
  140. package/dist/src/telem/aether/noop.d.ts.map +1 -1
  141. package/dist/src/telem/aether/static.d.ts +10 -10
  142. package/dist/src/telem/aether/telem.d.ts +1 -1
  143. package/dist/src/telem/aether/telem.d.ts.map +1 -1
  144. package/dist/src/telem/aether/transformers.d.ts +15 -15
  145. package/dist/src/telem/aether/transformers.d.ts.map +1 -1
  146. package/dist/src/telem/client/cache/cache.d.ts +1 -1
  147. package/dist/src/telem/client/cache/cache.d.ts.map +1 -1
  148. package/dist/src/telem/client/client.d.ts +4 -4
  149. package/dist/src/telem/client/client.d.ts.map +1 -1
  150. package/dist/src/telem/client/reader.d.ts +1 -1
  151. package/dist/src/telem/client/reader.d.ts.map +1 -1
  152. package/dist/src/telem/client/streamer.d.ts +1 -1
  153. package/dist/src/telem/client/streamer.d.ts.map +1 -1
  154. package/dist/src/telem/control/Controller.d.ts +1 -1
  155. package/dist/src/telem/control/Controller.d.ts.map +1 -1
  156. package/dist/src/telem/control/aether/chip.d.ts +16 -2
  157. package/dist/src/telem/control/aether/chip.d.ts.map +1 -1
  158. package/dist/src/telem/control/aether/controller.d.ts +16 -16
  159. package/dist/src/telem/control/aether/controller.d.ts.map +1 -1
  160. package/dist/src/telem/control/aether/indicator.d.ts +51 -37
  161. package/dist/src/telem/control/aether/indicator.d.ts.map +1 -1
  162. package/dist/src/telem/control/aether/legend.d.ts +18 -16
  163. package/dist/src/telem/control/aether/legend.d.ts.map +1 -1
  164. package/dist/src/telem/control/aether/state.d.ts +9 -8
  165. package/dist/src/telem/control/aether/state.d.ts.map +1 -1
  166. package/dist/src/theming/aether/provider.d.ts +990 -990
  167. package/dist/src/theming/base/theme.d.ts +330 -330
  168. package/dist/src/user/queries.d.ts +2 -2
  169. package/dist/src/view/queries.d.ts +2 -2
  170. package/dist/src/vis/axis/axis.d.ts +14 -14
  171. package/dist/src/vis/gauge/aether/gauge.d.ts +21 -21
  172. package/dist/src/vis/gauge/use.d.ts +7 -7
  173. package/dist/src/vis/line/aether/line.d.ts +7 -7
  174. package/dist/src/vis/measure/aether/measure.d.ts +56 -56
  175. package/dist/src/vis/rule/aether/aether.d.ts +14 -14
  176. package/dist/src/vis/value/aether/value.d.ts +42 -42
  177. package/dist/src/vis/value/redline.d.ts +5 -5
  178. package/dist/src/vis/value/redline.d.ts.map +1 -1
  179. package/dist/src/vis/value/use.d.ts +14 -14
  180. package/dist/src/workspace/queries.d.ts +6 -4
  181. package/dist/src/workspace/queries.d.ts.map +1 -1
  182. package/dist/tabs-CB7d2_0h.cjs +1 -0
  183. package/dist/tabs-DEXXNOZA.js +253 -0
  184. package/dist/tabs.cjs +1 -1
  185. package/dist/tabs.js +2 -4
  186. package/dist/text-Dd6wYgQM.js +142 -0
  187. package/dist/text-n3Fetdk6.cjs +1 -0
  188. package/dist/text.cjs +1 -1
  189. package/dist/text.js +2 -5
  190. package/dist/theming-Blgv4Cvi.js +591 -0
  191. package/dist/theming-KFfFjsRJ.cjs +1 -0
  192. package/dist/theming.cjs +1 -1
  193. package/dist/theming.js +2 -5
  194. package/dist/tree-B4jJAzS1.js +294 -0
  195. package/dist/tree-CsgSEpgy.cjs +1 -0
  196. package/dist/tree.cjs +1 -1
  197. package/dist/tree.js +2 -4
  198. package/dist/triggers-AqBSAR_T.cjs +1 -0
  199. package/dist/triggers-DDlalLoO.js +4748 -0
  200. package/dist/triggers.cjs +1 -1
  201. package/dist/triggers.js +2 -4
  202. package/dist/types-BGbd8pRh.js +73 -0
  203. package/dist/types-ByXvRm2h.cjs +1 -0
  204. package/dist/video-Bnr-2W9p.cjs +1 -0
  205. package/dist/video-ByMlaeKI.js +15 -0
  206. package/dist/video.cjs +1 -1
  207. package/dist/video.js +2 -4
  208. package/package.json +28 -29
  209. package/dist/Animated-B_N04fe6.cjs +0 -1
  210. package/dist/Animated-BsbNkFLg.cjs +0 -1
  211. package/dist/Animated-CLo1CLgn.js +0 -29
  212. package/dist/Animated-CO--9HPM.js +0 -354
  213. package/dist/Box-Bi280MYh.js +0 -96
  214. package/dist/Box-CNUz5BsV.cjs +0 -1
  215. package/dist/Copy-BgRUUzWz.cjs +0 -1
  216. package/dist/Copy-COWBkO_v.js +0 -337
  217. package/dist/Dialog-Bj7FiHJD.js +0 -59
  218. package/dist/Dialog-DBm6Fap1.cjs +0 -1
  219. package/dist/Editable-C17ILP50.js +0 -202
  220. package/dist/Editable-HUPqTaui.cjs +0 -1
  221. package/dist/Haul-CnZK3e-n.js +0 -132
  222. package/dist/Haul-DlwI4b25.cjs +0 -1
  223. package/dist/Items-CXBBG9Ip.cjs +0 -4
  224. package/dist/Items-DQba1BFQ.js +0 -842
  225. package/dist/Menu-BZ6ZGIv3.cjs +0 -1
  226. package/dist/Menu-CniMpPmC.js +0 -139
  227. package/dist/Provider-cSwm-2e_.cjs +0 -1
  228. package/dist/Provider-jFWpR0CX.js +0 -520
  229. package/dist/Tags-CxzMdPpm.cjs +0 -1
  230. package/dist/Tags-DvfGhiWv.js +0 -925
  231. package/dist/Text-2MISZsc5.js +0 -1712
  232. package/dist/Text-XHBXXDRS.cjs +0 -1
  233. package/dist/Video-Bew5_j16.js +0 -10
  234. package/dist/Video-BryrVNlH.cjs +0 -1
  235. package/dist/css-CloSmhZB.cjs +0 -1
  236. package/dist/css-D90kZTM8.js +0 -63
  237. package/dist/dimensions-CdFEW3oU.cjs +0 -1
  238. package/dist/dimensions-DbMN4145.js +0 -19
  239. package/dist/eraser-BShvqlBE.js +0 -958
  240. package/dist/eraser-rFMFKqsg.cjs +0 -11
  241. package/dist/event-BxvV3arE.cjs +0 -1
  242. package/dist/event-nNH_pXSr.js +0 -36
  243. package/dist/external-4jf1Bv96.cjs +0 -1
  244. package/dist/external-B2YeNEwd.cjs +0 -1
  245. package/dist/external-B9PnwQOL.js +0 -29
  246. package/dist/external-BBbkXXN0.js +0 -47
  247. package/dist/external-BByOkVID.cjs +0 -1
  248. package/dist/external-BrEnYrZV.js +0 -32
  249. package/dist/external-BwbypKCk.cjs +0 -1
  250. package/dist/external-C65vBow6.cjs +0 -1
  251. package/dist/external-CCcIJ20u.cjs +0 -1
  252. package/dist/external-CF4uh-dm.js +0 -51423
  253. package/dist/external-Cn6EfkLd.cjs +0 -1
  254. package/dist/external-CovFw1fv.cjs +0 -1
  255. package/dist/external-D2Zb9O5J.js +0 -93
  256. package/dist/external-D6aLGjMg.js +0 -8969
  257. package/dist/external-DDvmnE2k.js +0 -341
  258. package/dist/external-DTi9a-iK.cjs +0 -1
  259. package/dist/external-DYP1_xpd.js +0 -80
  260. package/dist/external-DxsuBuKe.js +0 -392
  261. package/dist/external-DysGdnTb.js +0 -130
  262. package/dist/external-N2L8ffzi.js +0 -71
  263. package/dist/external-UzXlHlr9.js +0 -24
  264. package/dist/external-_Ht_yCRf.cjs +0 -1
  265. package/dist/external-igNfmRSB.cjs +0 -28
  266. package/dist/external-uUEGzmui.cjs +0 -84
  267. package/dist/fontString-76R2eWDd.js +0 -29
  268. package/dist/fontString-BNnhiwug.cjs +0 -1
  269. package/dist/hooks-Co6IVYNw.cjs +0 -1
  270. package/dist/hooks-QNj6PdUo.js +0 -73
  271. package/dist/index.cjs +0 -60
  272. package/dist/index.js +0 -36886
  273. package/dist/jsx-runtime-nZSsnGb7.cjs +0 -6
  274. package/dist/jsx-runtime-tc70JA_2.js +0 -264
  275. package/dist/provider-Bt-E2O6g.js +0 -810
  276. package/dist/provider-DQkVj3tA.cjs +0 -10
  277. package/dist/src/memo/proxyMemo.d.ts +0 -3
  278. package/dist/src/memo/proxyMemo.d.ts.map +0 -1
  279. package/dist/types-CGRCBVD4.js +0 -82
  280. package/dist/types-DI2vtOGs.cjs +0 -1
  281. package/dist/units-Bu36uC6z.cjs +0 -1
  282. package/dist/units-DMip-eZH.js +0 -14
  283. package/dist/useStaticData-BTwIe0Il.cjs +0 -1
  284. package/dist/useStaticData-p8sk2VCJ.js +0 -1051
  285. package/dist/value-BkUH03tl.cjs +0 -53
  286. package/dist/value-D0vfKEY3.js +0 -6821
package/dist/triggers.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./external-CCcIJ20u.cjs");exports.Triggers=e.external;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./triggers-AqBSAR_T.cjs`);Object.defineProperty(exports,`Triggers`,{enumerable:!0,get:function(){return e.t}});
package/dist/triggers.js CHANGED
@@ -1,4 +1,2 @@
1
- import { e as g } from "./external-DYP1_xpd.js";
2
- export {
3
- g as Triggers
4
- };
1
+ import { t as e } from "./triggers-DDlalLoO.js";
2
+ export { e as Triggers };
@@ -0,0 +1,73 @@
1
+ import { n as e } from "./chunk-DeC0fbbY.js";
2
+ import { runtime as t } from "@synnaxlabs/x";
3
+ import { z as n } from "zod";
4
+ import { useCallback as r, useState as i } from "react";
5
+ //#region src/state/state.ts
6
+ var a = /* @__PURE__ */ e({
7
+ executeInitialSetter: () => u,
8
+ executeSetter: () => s,
9
+ isInitialSetter: () => d,
10
+ isSetter: () => o,
11
+ skipNull: () => l,
12
+ skipUndefined: () => c,
13
+ usePassthrough: () => f,
14
+ usePersisted: () => m,
15
+ usePurePassthrough: () => p
16
+ }), o = (e) => typeof e == "function", s = (e, t) => o(e) ? e(t) : e, c = (e) => (t) => t == null ? void 0 : e(t), l = (e) => (t) => t == null ? null : e(t), u = (e) => d(e) ? e() : e, d = (e) => typeof e == "function", f = ({ initial: e, value: t, onChange: n }) => {
17
+ let [r, a] = i(t ?? e);
18
+ return t != null && n != null ? [t, n] : [r, a];
19
+ }, p = ({ initial: e, value: t, onChange: n }) => {
20
+ let [r, a] = i(u(t ?? e));
21
+ return t != null && n != null ? [t, n] : [r, a];
22
+ }, m = (e, t) => {
23
+ let [n, a] = i(() => {
24
+ let n = localStorage.getItem(t);
25
+ return n == null ? u(e) : JSON.parse(n);
26
+ });
27
+ return [n, r((e) => {
28
+ a(e), localStorage.setItem(t, JSON.stringify(e));
29
+ }, [a, t])];
30
+ }, h = null, g = () => (h ??= document.createElement("canvas"), h), _ = (e, n, r) => t.RUNTIME === "node" ? {
31
+ width: 0,
32
+ height: 0
33
+ } : (r ??= g().getContext("2d"), r.font = n, v(r.measureText(e))), v = (e) => ({
34
+ width: Math.trunc(Math.abs(e.actualBoundingBoxLeft) + Math.abs(e.actualBoundingBoxRight)),
35
+ height: Math.trunc(Math.abs(e.actualBoundingBoxAscent) + Math.abs(e.actualBoundingBoxDescent))
36
+ }), y = [
37
+ "h1",
38
+ "h2",
39
+ "h3",
40
+ "h4",
41
+ "h5",
42
+ "p",
43
+ "small"
44
+ ], b = n.enum(y), x = (e) => {
45
+ let t = y.indexOf(e);
46
+ return t === -1 || t === y.length - 1 ? e : y[t + 1];
47
+ }, S = n.union([n.number(), n.enum([
48
+ "normal",
49
+ "bold",
50
+ "bolder",
51
+ "lighter"
52
+ ])]), C = n.object({
53
+ size: n.number(),
54
+ weight: n.union([n.number(), n.string()]),
55
+ lineHeight: n.number(),
56
+ textTransform: n.string().optional()
57
+ }), w = {
58
+ tiny: "small",
59
+ small: "small",
60
+ medium: "p",
61
+ large: "h5",
62
+ huge: "h2"
63
+ }, T = {
64
+ h1: "huge",
65
+ h2: "huge",
66
+ h3: "huge",
67
+ h4: "large",
68
+ h5: "small",
69
+ p: "medium",
70
+ small: "small"
71
+ };
72
+ //#endregion
73
+ export { b as a, _ as c, s as d, l as f, p as g, f as h, x as i, v as l, a as m, y as n, C as o, c as p, T as r, S as s, w as t, u };
@@ -0,0 +1 @@
1
+ const e=require(`./chunk-FeXHwk1_.cjs`);let t=require(`@synnaxlabs/x`),n=require(`zod`),r=require(`react`);var i=e.n({executeInitialSetter:()=>l,executeSetter:()=>o,isInitialSetter:()=>u,isSetter:()=>a,skipNull:()=>c,skipUndefined:()=>s,usePassthrough:()=>d,usePersisted:()=>p,usePurePassthrough:()=>f}),a=e=>typeof e==`function`,o=(e,t)=>a(e)?e(t):e,s=e=>t=>t==null?void 0:e(t),c=e=>t=>t==null?null:e(t),l=e=>u(e)?e():e,u=e=>typeof e==`function`,d=({initial:e,value:t,onChange:n})=>{let[i,a]=(0,r.useState)(t??e);return t!=null&&n!=null?[t,n]:[i,a]},f=({initial:e,value:t,onChange:n})=>{let[i,a]=(0,r.useState)(l(t??e));return t!=null&&n!=null?[t,n]:[i,a]},p=(e,t)=>{let[n,i]=(0,r.useState)(()=>{let n=localStorage.getItem(t);return n==null?l(e):JSON.parse(n)});return[n,(0,r.useCallback)(e=>{i(e),localStorage.setItem(t,JSON.stringify(e))},[i,t])]},m=null,h=()=>(m??=document.createElement(`canvas`),m),g=(e,n,r)=>t.runtime.RUNTIME===`node`?{width:0,height:0}:(r??=h().getContext(`2d`),r.font=n,_(r.measureText(e))),_=e=>({width:Math.trunc(Math.abs(e.actualBoundingBoxLeft)+Math.abs(e.actualBoundingBoxRight)),height:Math.trunc(Math.abs(e.actualBoundingBoxAscent)+Math.abs(e.actualBoundingBoxDescent))}),v=[`h1`,`h2`,`h3`,`h4`,`h5`,`p`,`small`],y=n.z.enum(v),b=e=>{let t=v.indexOf(e);return t===-1||t===v.length-1?e:v[t+1]},x=n.z.union([n.z.number(),n.z.enum([`normal`,`bold`,`bolder`,`lighter`])]),S=n.z.object({size:n.z.number(),weight:n.z.union([n.z.number(),n.z.string()]),lineHeight:n.z.number(),textTransform:n.z.string().optional()}),C={tiny:`small`,small:`small`,medium:`p`,large:`h5`,huge:`h2`},w={h1:`huge`,h2:`huge`,h3:`huge`,h4:`large`,h5:`small`,p:`medium`,small:`small`};Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return y}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return g}}),Object.defineProperty(exports,`d`,{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,`f`,{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,`g`,{enumerable:!0,get:function(){return f}}),Object.defineProperty(exports,`h`,{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return b}}),Object.defineProperty(exports,`l`,{enumerable:!0,get:function(){return _}}),Object.defineProperty(exports,`m`,{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return v}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return S}}),Object.defineProperty(exports,`p`,{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return w}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return x}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return C}}),Object.defineProperty(exports,`u`,{enumerable:!0,get:function(){return l}});
@@ -0,0 +1 @@
1
+ const e=require(`./chunk-FeXHwk1_.cjs`),t=require(`./css-Ce-x3HcK.cjs`);let n=require(`react/jsx-runtime`);var r=e.n({Video:()=>i}),i=({href:e,className:r,...i})=>(0,n.jsx)(`video`,{className:t.n(t.n.B(`video`),r),...i,children:(0,n.jsx)(`source`,{id:e,src:e,type:`video/mp4`})});Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return r}});
@@ -0,0 +1,15 @@
1
+ import { n as e } from "./chunk-DeC0fbbY.js";
2
+ import { n as t } from "./css-UEo6g0SR.js";
3
+ import { jsx as n } from "react/jsx-runtime";
4
+ //#region src/video/Video.tsx
5
+ var r = /* @__PURE__ */ e({ Video: () => i }), i = ({ href: e, className: r, ...i }) => /* @__PURE__ */ n("video", {
6
+ className: t(t.B("video"), r),
7
+ ...i,
8
+ children: /* @__PURE__ */ n("source", {
9
+ id: e,
10
+ src: e,
11
+ type: "video/mp4"
12
+ })
13
+ });
14
+ //#endregion
15
+ export { r as t };
package/dist/video.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./Video-BryrVNlH.cjs");exports.Video=e.Video;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./video-Bnr-2W9p.cjs`);Object.defineProperty(exports,`Video`,{enumerable:!0,get:function(){return e.t}});
package/dist/video.js CHANGED
@@ -1,4 +1,2 @@
1
- import { V as r } from "./Video-Bew5_j16.js";
2
- export {
3
- r as Video
4
- };
1
+ import { t as e } from "./video-ByMlaeKI.js";
2
+ export { e as Video };
package/package.json CHANGED
@@ -1,70 +1,69 @@
1
1
  {
2
2
  "name": "@synnaxlabs/pluto",
3
- "version": "0.53.2",
3
+ "version": "0.54.0",
4
4
  "type": "module",
5
5
  "dependencies": {
6
6
  "@fontsource-variable/inter": "^5.2.8",
7
7
  "@fontsource/geist-mono": "^5.2.7",
8
8
  "@fontsource/inter": "^5.2.8",
9
- "@tanstack/react-virtual": "3.13.6",
10
- "@xyflow/react": "^12.10.0",
9
+ "@tanstack/react-virtual": "^3.13.23",
10
+ "@xyflow/react": "^12.10.2",
11
11
  "async-mutex": "^0.5.0",
12
12
  "clsx": "^2.1.1",
13
- "compromise": "^14.14.5",
13
+ "compromise": "^14.15.0",
14
14
  "compromise-dates": "^3.7.1",
15
15
  "d3-scale": "^4.0.2",
16
16
  "fuse.js": "^7.1.0",
17
- "mathjs": "^15.1.0",
17
+ "mathjs": "^15.1.1",
18
18
  "pluralize": "^8.0.0",
19
- "proxy-memoize": "2.0.3",
20
19
  "react": "^19.2.4",
21
20
  "react-color": "^2.19.3",
22
- "react-icons": "^5.5.0",
21
+ "react-icons": "^5.6.0",
23
22
  "zod": "^4.3.6",
24
- "@synnaxlabs/alamos": "^0.53.0",
25
- "@synnaxlabs/client": "^0.53.1",
26
- "@synnaxlabs/freighter": "0.53.0",
27
- "@synnaxlabs/media": "0.53.0",
28
- "@synnaxlabs/x": "^0.53.1"
23
+ "@synnaxlabs/alamos": "^0.54.0",
24
+ "@synnaxlabs/client": "^0.54.0",
25
+ "@synnaxlabs/media": "0.54.0",
26
+ "@synnaxlabs/x": "^0.54.0",
27
+ "@synnaxlabs/freighter": "0.54.0"
29
28
  },
30
29
  "devDependencies": {
31
30
  "@juggle/resize-observer": "^3.4.0",
32
31
  "@testing-library/react": "^16.3.2",
33
32
  "@testing-library/user-event": "^14.6.1",
34
33
  "@types/d3-scale": "^4.0.9",
35
- "@types/node": "^25.1.0",
34
+ "@types/node": "^25.5.0",
36
35
  "@types/offscreencanvas": "^2019.7.3",
37
36
  "@types/pluralize": "^0.0.33",
38
- "@types/react": "^19.2.10",
37
+ "@types/react": "^19.2.14",
39
38
  "@types/react-color": "^3.0.13",
40
39
  "@types/react-dom": "^19.2.3",
41
40
  "@types/webgl2": "^0.0.12",
42
- "@vitejs/plugin-react": "^5.1.2",
43
- "@vitest/coverage-v8": "^3.2.4",
44
- "eslint": "^9.39.2",
41
+ "@vitejs/plugin-react": "^6.0.1",
42
+ "@vitest/coverage-v8": "^4.1.2",
43
+ "eslint": "^10.1.0",
45
44
  "jsdom": "^27.4.0",
46
45
  "madge": "^8.0.0",
47
46
  "react-dom": "^19.2.4",
48
- "stylelint": "^17.1.0",
49
- "typescript": "^5.9.3",
50
- "vite": "^7.3.1",
51
- "vitest": "^3.2.4",
52
- "@synnaxlabs/tsconfig": "^0.0.0",
53
- "@synnaxlabs/vite-plugin": "^0.0.0",
47
+ "stylelint": "^17.6.0",
48
+ "typescript": "^6.0.2",
49
+ "vite": "^8.0.3",
50
+ "vitest": "^4.1.2",
54
51
  "@synnaxlabs/stylelint-config": "^0.0.0",
55
- "@synnaxlabs/eslint-config": "^0.0.0"
52
+ "@synnaxlabs/eslint-config": "^0.0.0",
53
+ "@synnaxlabs/vite-plugin": "^0.0.0",
54
+ "@synnaxlabs/tsconfig": "^0.0.0"
56
55
  },
57
56
  "files": [
58
57
  "dist"
59
58
  ],
60
- "main": "./dist/index.cjs",
61
- "module": "./dist/index.js",
62
- "types": "./dist/index.d.ts",
59
+ "main": "./dist/pluto.cjs",
60
+ "module": "./dist/pluto.js",
61
+ "types": "./dist/src/index.d.ts",
63
62
  "exports": {
64
63
  ".": {
65
64
  "types": "./dist/src/index.d.ts",
66
- "import": "./dist/index.js",
67
- "require": "./dist/index.cjs"
65
+ "import": "./dist/pluto.js",
66
+ "require": "./dist/pluto.cjs"
68
67
  },
69
68
  "./ether": {
70
69
  "types": "./dist/src/ether.d.ts",
@@ -1 +0,0 @@
1
- "use strict";const v=require("./jsx-runtime-nZSsnGb7.cjs"),e=require("@synnaxlabs/x"),d=require("react"),A=require("./Text-XHBXXDRS.cjs"),x=require("./css-CloSmhZB.cjs"),Q=require("./Box-CNUz5BsV.cjs"),_=require("./Editable-HUPqTaui.cjs"),fe=require("./hooks-Co6IVYNw.cjs"),ge=require("./types-DI2vtOGs.cjs");require("./Provider-cSwm-2e_.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 +0,0 @@
1
- "use strict";const a=require("./jsx-runtime-nZSsnGb7.cjs");require("./Animated-B_N04fe6.cjs");require("@synnaxlabs/x");const e=require("./css-CloSmhZB.cjs"),c=require("./Text-XHBXXDRS.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,29 +0,0 @@
1
- import { j as s } from "./jsx-runtime-tc70JA_2.js";
2
- import "./Animated-CO--9HPM.js";
3
- import "@synnaxlabs/x";
4
- import { C as t } from "./css-D90kZTM8.js";
5
- import { C as i } from "./Text-2MISZsc5.js";
6
- const p = ({
7
- className: o,
8
- enabledLoc: e,
9
- disabledLoc: r,
10
- enabled: a,
11
- ...m
12
- }) => /* @__PURE__ */ s.jsx(
13
- i.Up,
14
- {
15
- className: t(
16
- t.B("caret-animated"),
17
- t.loc(a ? e : r),
18
- o
19
- ),
20
- ...m
21
- }
22
- ), j = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
23
- __proto__: null,
24
- Animated: p
25
- }, Symbol.toStringTag, { value: "Module" }));
26
- export {
27
- p as A,
28
- j as a
29
- };
@@ -1,354 +0,0 @@
1
- import { j as D } from "./jsx-runtime-tc70JA_2.js";
2
- import { box as r, xy as G, debounce as me, location as t, array as ee, direction as Ee } from "@synnaxlabs/x";
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-2MISZsc5.js";
5
- import { C as m } from "./css-D90kZTM8.js";
6
- import { a as ie } from "./Box-Bi280MYh.js";
7
- import { d as k, b as re } from "./Editable-C17ILP50.js";
8
- import { u as he } from "./hooks-QNj6PdUo.js";
9
- import { b as ye } from "./types-CGRCBVD4.js";
10
- import "./Provider-jFWpR0CX.js";
11
- const Oe = ({
12
- ref: e,
13
- onClickOutside: o,
14
- exclude: s
15
- }) => {
16
- const f = k(s), n = p(
17
- (c) => {
18
- const i = e.current, l = r.construct(window.document.documentElement), d = G.construct(c), a = f.current;
19
- if (a != null) {
20
- if (typeof a == "function") {
21
- if (a(c)) return;
22
- } else if (a.some((u) => u.current?.contains(c.target))) return;
23
- }
24
- i == null || i.contains(c.target) || r.contains(i, d) || !r.contains(l, d) || o();
25
- },
26
- [o]
27
- );
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
- s
32
- ]), a = p(
33
- (u) => {
34
- l.current != null && l.current.disconnect(), c.current ??= r.ZERO;
35
- const E = me(() => {
36
- const g = r.construct(u);
37
- pe(d, c.current, g) && (c.current = g, e(g, i.current));
38
- }, f);
39
- l.current = new ResizeObserver(E), l.current.observe(u);
40
- },
41
- [d, e, f]
42
- );
43
- return Y(() => (i.current != null && n && a(i.current), () => l.current?.disconnect()), [a, n]), p(
44
- (u) => {
45
- i.current = u, u != null && n && a(u);
46
- },
47
- [a]
48
- );
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
- Y(() => {
52
- if (!s) return;
53
- const n = () => f.current(
54
- r.construct(window.innerWidth, window.innerHeight),
55
- window.document.documentElement
56
- );
57
- return window.addEventListener("resize", n), () => window.removeEventListener("resize", n);
58
- }, [s]);
59
- }, H = m.BE("dialog", "bg"), ke = ({
60
- children: e,
61
- visible: o,
62
- ...s
63
- }) => /* @__PURE__ */ D.jsx(
64
- ie,
65
- {
66
- className: m(H, m.visible(o)),
67
- empty: !0,
68
- align: "center",
69
- ...s,
70
- children: e
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 = ({
73
- initial: e,
74
- prefer: o = [],
75
- disable: s = []
76
- }) => {
77
- const f = ee.toArray(o).map(z), n = ee.toArray(s).map(z), c = [];
78
- if (e != null) {
79
- const i = z(e), l = M(i.targetCorner), d = M(i.dialogCorner);
80
- t.XY_LOCATIONS.forEach((u) => {
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) => {
82
- if (t.xyEquals(E, t.CENTER) || d.x != null && E.x !== d.x || d.y != null && E.y !== d.y) return;
83
- const g = { targetCorner: u, dialogCorner: E };
84
- c.push(g);
85
- });
86
- });
87
- const a = c.filter((u) => !X(u, n));
88
- return a.length == 0 ? c.slice(0, 1) : a;
89
- }
90
- return f.forEach((i) => {
91
- const l = M(i.targetCorner), d = M(i.dialogCorner);
92
- t.XY_LOCATIONS.forEach((a) => {
93
- t.xyEquals(a, t.CENTER) || t.xyMatches(a, l) && t.XY_LOCATIONS.forEach((u) => {
94
- if (t.xyEquals(u, t.CENTER) || !t.xyMatches(u, d)) return;
95
- const E = { targetCorner: a, dialogCorner: u };
96
- !X(E, n) && !c.some(
97
- (g) => t.xyEquals(g.targetCorner, a) && t.xyEquals(g.dialogCorner, u)
98
- ) && c.push(E);
99
- });
100
- });
101
- }), t.XY_LOCATIONS.forEach((i) => {
102
- t.xyEquals(i, t.CENTER) || t.XY_LOCATIONS.forEach((l) => {
103
- if (t.xyEquals(l, t.CENTER)) return;
104
- const d = { targetCorner: i, dialogCorner: l };
105
- !X(d, n) && !c.some(
106
- (a) => t.xyEquals(a.targetCorner, i) && t.xyEquals(a.dialogCorner, l)
107
- ) && c.push(d);
108
- });
109
- }), c;
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);
113
- }), Ne = ({
114
- container: e,
115
- target: o,
116
- dialog: s,
117
- initial: f,
118
- prefer: n,
119
- disable: c,
120
- offset: i
121
- }) => {
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) => {
124
- const h = Le({
125
- ...T,
126
- container: d,
127
- target: a,
128
- dialog: u,
129
- offset: i
130
- });
131
- return h.area > g.area ? h : g;
132
- },
133
- {
134
- area: -1 / 0,
135
- targetCorner: t.CENTER,
136
- dialogCorner: t.CENTER,
137
- adjustedDialog: u
138
- }
139
- );
140
- return {
141
- targetCorner: E.targetCorner,
142
- dialogCorner: E.dialogCorner,
143
- adjustedDialog: E.adjustedDialog
144
- };
145
- }, Le = ({
146
- targetCorner: e,
147
- dialogCorner: o,
148
- container: s,
149
- target: f,
150
- dialog: n,
151
- offset: c
152
- }) => {
153
- let i = r.xyLoc(f, e);
154
- if (c != null) {
155
- const a = G.construct(c);
156
- e.x === o.x && (a.x = 0), e.y === o.y && (a.y = 0), i = G.translate(i, e, a);
157
- }
158
- const l = r.constructWithAlternateRoot(
159
- i.x,
160
- i.y,
161
- r.width(n),
162
- r.height(n),
163
- o,
164
- t.TOP_LEFT
165
- );
166
- let d = r.area(r.intersection(l, s));
167
- return r.area(r.intersection(f, l)) !== 0 && (d = 0), {
168
- targetCorner: e,
169
- dialogCorner: o,
170
- adjustedDialog: l,
171
- area: d
172
- };
173
- }, Ve = m.BM("context", "selected"), We = m.BE("context", "target"), we = m.B("menu-context"), Be = {
174
- targetCorner: t.BOTTOM_LEFT,
175
- dialogCorner: t.BOTTOM_LEFT,
176
- style: {},
177
- modalPosition: "base"
178
- }, [Me, Ze] = se({
179
- defaultValue: {
180
- close: () => {
181
- },
182
- location: t.BOTTOM_LEFT,
183
- open: () => {
184
- },
185
- toggle: () => {
186
- },
187
- variant: "floating",
188
- visible: !1
189
- },
190
- displayName: "Dialog.Context"
191
- }), [_e, Ue] = se({
192
- displayName: "Dialog.InternalContext",
193
- providerName: "Dialog.Frame"
194
- }), Pe = [["Escape"]], Ie = (e, o, s) => {
195
- if (s == null) return !1;
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;
200
- }, oe = [
201
- {
202
- targetCorner: t.BOTTOM_LEFT,
203
- dialogCorner: t.TOP_LEFT
204
- },
205
- {
206
- targetCorner: t.TOP_LEFT,
207
- dialogCorner: t.BOTTOM_LEFT
208
- },
209
- {
210
- targetCorner: t.BOTTOM_RIGHT,
211
- dialogCorner: t.TOP_RIGHT
212
- },
213
- {
214
- targetCorner: t.TOP_RIGHT,
215
- dialogCorner: t.BOTTOM_RIGHT
216
- },
217
- {
218
- targetCorner: t.TOP_RIGHT,
219
- dialogCorner: t.TOP_LEFT
220
- }
221
- ], ve = (e, o) => e / o > 0.8 ? "slammed" : e / o > 0.6 ? "shifted" : "base", Se = ({
222
- children: e,
223
- location: o,
224
- onPointerEnter: s,
225
- className: f,
226
- variant: n = "floating",
227
- maxHeight: c,
228
- zIndex: i,
229
- initialVisible: l = !1,
230
- visible: d,
231
- onVisibleChange: a,
232
- modalPosition: u = "base",
233
- ...E
234
- }) => {
235
- const [g, T] = ye({
236
- initial: l,
237
- value: d,
238
- onChange: a
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(() => {
240
- if (_.current == null || y.current == null || !I.current)
241
- return;
242
- const C = r.construct(_.current);
243
- if (r.areaIsZero(C) && n !== "modal") return T(!1);
244
- let x = r.construct(y.current);
245
- n === "connected" && (x = r.resize(x, "x", r.width(C)));
246
- const R = r.construct(0, 0, window.innerWidth, window.innerHeight);
247
- if (n === "modal") {
248
- const A = ve(
249
- r.height(x),
250
- r.height(R)
251
- );
252
- return $((j) => A === j.modalPosition ? j : { ...j, modalPosition: A });
253
- }
254
- let N = oe;
255
- q.current != null && (N = [q.current, ...oe]);
256
- const { adjustedDialog: O, ...P } = Ne({
257
- target: C,
258
- dialog: x,
259
- container: R,
260
- prefer: N,
261
- initial: o,
262
- offset: 3
263
- });
264
- q.current = P;
265
- const { targetCorner: S, dialogCorner: Q } = P, B = r.round(O);
266
- if (Ie(n, B, Z.current)) return;
267
- Z.current = B;
268
- const L = {};
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);
271
- be(F);
272
- const ue = p(
273
- (C) => {
274
- if (!I.current || y.current == null || _.current == null)
275
- return !0;
276
- if (n !== "modal") {
277
- const N = y.current.getElementsByClassName(m.visible(!0));
278
- let O = N != null && N.length > 0;
279
- return O || (O = _.current.contains(C.target)), document.getElementsByClassName(we).length > 0 && (O = !0), O || C.stopImmediatePropagation(), O;
280
- }
281
- if (!(C.target instanceof HTMLElement)) return !0;
282
- let x = C.target;
283
- return x.className.includes(H) && (x = x.children[0]), x !== y.current;
284
- },
285
- [i, I]
286
- ), de = p(
287
- ({ stage: C }) => {
288
- if (C !== "start" || I.current === !1 || y.current == null)
289
- return;
290
- if (n !== "modal") return h();
291
- const x = y.current, R = Array.from(document.getElementsByClassName(H)), N = R.findIndex((P) => P.contains(x)), O = x.getElementsByClassName(m.visible(!0));
292
- if (N === R.length - 1 && O.length === 0)
293
- return h();
294
- },
295
- [h, n]
296
- );
297
- Oe({ ref: y, exclude: ue, onClickOutside: h }), he({ triggers: Pe, callback: de, loose: !0 });
298
- const fe = te(
299
- () => ({
300
- ref: J,
301
- targetCorner: b,
302
- dialogCorner: v,
303
- style: U,
304
- modalPosition: K
305
- }),
306
- [J, b, v, U, K]
307
- ), ge = te(
308
- () => ({
309
- close: h,
310
- open: V,
311
- toggle: W,
312
- visible: g,
313
- onPointerEnter: s,
314
- variant: n,
315
- location: b
316
- }),
317
- [h, V, W, g, b]
318
- );
319
- return /* @__PURE__ */ D.jsx(Me, { value: ge, children: /* @__PURE__ */ D.jsx(_e, { value: fe, children: /* @__PURE__ */ D.jsx(
320
- ie,
321
- {
322
- ...E,
323
- ref: le,
324
- className: m(
325
- f,
326
- m.BE("dialog", "frame"),
327
- m.visible(g),
328
- m.M(n),
329
- m.loc(b.x),
330
- m.loc(b.y),
331
- m.BEM("dialog", "dialog", v.x),
332
- m.BEM("dialog", "dialog", v.y)
333
- ),
334
- y: !0,
335
- reverse: b.y === "top",
336
- children: e
337
- }
338
- ) }) });
339
- };
340
- Se.displayName = "Dialog.Frame";
341
- export {
342
- ke as B,
343
- we as C,
344
- Se as F,
345
- Ne as a,
346
- Ue as b,
347
- Ve as c,
348
- We as d,
349
- ne as e,
350
- be as f,
351
- Oe as g,
352
- M as p,
353
- Ze as u
354
- };