@sheetxl/studio-vanilla 0.4.9 → 0.4.10

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 (86) hide show
  1. package/README.md +1 -1
  2. package/browser/cjs/{3GhIDU8JK1oBJrCA.cjs → B1UGqZP_7Z0Ewpog.cjs} +2 -2
  3. package/browser/cjs/{BoojmbbjqixMVu2H.cjs → B6m9VXoFseD4zuZ5.cjs} +2 -2
  4. package/browser/cjs/{D8lN5Mv3J4SwSpLP.cjs → BKePSaEpM6Z063z-.cjs} +1 -1
  5. package/browser/cjs/{7PlrLPQx1lct0mdN.cjs → Bqn0ZeP_srNfL9rG.cjs} +1 -1
  6. package/browser/cjs/{CalnqtYH48_x2rcI.cjs → C-izbj62pQuZjOrT.cjs} +62 -59
  7. package/browser/cjs/{nURb18uhj9rScsHa.cjs → C-w-GX8N54TxTjjf.cjs} +2 -2
  8. package/browser/cjs/{CjDsO4sQWUHbIX1N.cjs → C1QGdcqJ-9sdGTQR.cjs} +2 -2
  9. package/browser/cjs/{B4K6KuggSdXj-V8g.cjs → C38aiRglHLxZ8KRY.cjs} +2 -2
  10. package/browser/cjs/{B7eW1GQgFvphlLGY.cjs → C4JMn_hMnlOnDpQO.cjs} +2 -2
  11. package/browser/cjs/{DzCXPcqV1oKbCcLO.cjs → CApEj4LhhPUvQjIG.cjs} +1 -1
  12. package/browser/cjs/{Y6OgkWqbIB761o5q.cjs → CFcJbmmXjWjl6fQH.cjs} +2 -2
  13. package/browser/cjs/{EoaX6dPoS-Mb-ITO.cjs → CKiDbCZ6rGgXK7yN.cjs} +4 -4
  14. package/browser/cjs/CM8btXQsJbnFKXUm.cjs +6 -0
  15. package/browser/cjs/{CSGVl8EBCRhxcFm1.cjs → Cb0K3Wzp7BAa4zni.cjs} +1 -1
  16. package/browser/cjs/{CsCaFaiySArzEfdH.cjs → CiAUhPU7v1BK-8Bb.cjs} +3 -3
  17. package/browser/cjs/{Dmw7xaaV85s72QZe.cjs → CsXS-EN0N5SZHTnQ.cjs} +1 -1
  18. package/browser/cjs/{BQPFxJ77OaD_sBIX.cjs → Cu2eUomoF0HToa4l.cjs} +2 -2
  19. package/browser/cjs/{gbABnN2zW1kHo3_I.cjs → Cy7ii9B_Vqx94pbu.cjs} +8 -8
  20. package/browser/cjs/{B5Qc3gXLEhscRsFm.cjs → CzI4ZcsmzsyPBpWN.cjs} +5 -5
  21. package/browser/cjs/{D6AUUY9awlTRjjqd.cjs → DKHzUx2gKXwboKy1.cjs} +1 -1
  22. package/browser/cjs/{D9RQ5oYv7U38wSI7.cjs → DKc8wAq8dwbDddQn.cjs} +5 -5
  23. package/browser/cjs/{DGQrcBvjSGwwoZEv.cjs → DMyKApbUVRtNYC4e.cjs} +2 -2
  24. package/browser/cjs/{kfV5Cli9oE9IsCtx.cjs → DROR08HMGyg7rizQ.cjs} +2 -2
  25. package/browser/cjs/{Ba3O1f0NYbzEwNAd.cjs → DfGDZlbFVknGyu_X.cjs} +1 -1
  26. package/browser/cjs/{DCd2rPNFkSHDaRcM.cjs → OQdqVM_6m78kE5Aj.cjs} +1 -1
  27. package/browser/cjs/index.cjs +2 -2
  28. package/browser/cjs/{DIXyMJKaeCGuWxjZ.cjs → v4OEtYXaUw_GeiXM.cjs} +1 -1
  29. package/{cdn/assets/CXa9u-7w14dyPYxk.js → browser/esm/4uEr84M4w57AMyDg.mjs} +3 -3
  30. package/{cdn/assets/4aC35Q2XPOwifBRR.js → browser/esm/B8Ja5DlyKAy8xfQD.mjs} +1 -1
  31. package/{cdn/assets/BJVOhUH_XL03H6ZD.js → browser/esm/B9bN60uAvy62vnwt.mjs} +6 -6
  32. package/browser/esm/{CPEjlDUTxckVS1rp.mjs → BAOzSQdzHl43K9Hd.mjs} +6 -6
  33. package/browser/esm/{BD9GKsR-k4aEK2tx.mjs → BQYSD5Nb35y0WeeV.mjs} +1 -1
  34. package/browser/esm/{CaWZXQsmKl4hTNq5.mjs → BVcaNvORp_uKPQgJ.mjs} +3 -3
  35. package/{cdn/assets/2NQDbhor1Nuzndgq.js → browser/esm/BqXO_cQhrMJu7JoQ.mjs} +1 -1
  36. package/browser/esm/{tOBqasyBAnd7O4qE.mjs → C18A_DcIEHNYBDvR.mjs} +9 -9
  37. package/{cdn/assets/D0PaU6F-TNaTWj-a.js → browser/esm/C7FoKZbSzjvuY3UB.mjs} +8 -8
  38. package/{cdn/assets/5zFDFBAgT-aPgQQ0.js → browser/esm/CCIJpHSbFPjTEF8S.mjs} +1 -1
  39. package/browser/esm/{DFQvqk5r1uf_z0h_.mjs → CHNPjJxb0GY_naLa.mjs} +6889 -6858
  40. package/browser/esm/{CO_s27056nua6qzN.mjs → CKHsU9LUNYowimxS.mjs} +1 -1
  41. package/{cdn/assets/TOkIJFYhNg78FdJa.js → browser/esm/C_Zx1tYjI3n7KKZH.mjs} +2 -2
  42. package/{cdn/assets/C81J50HcankGTOIj.js → browser/esm/Cm-m3bZh0V44y0li.mjs} +1 -1
  43. package/browser/esm/{Dx-GS3XDBkRaMNG-.mjs → D1e_ccSgcNXvWHgy.mjs} +16 -16
  44. package/browser/esm/{CY7astxzrfb7uZqy.mjs → D47D26mVYSAdb5C8.mjs} +26 -26
  45. package/browser/esm/{V5CA7xqGOB7-Qx4Y.mjs → D9CdO3PtV12RnK8K.mjs} +59 -59
  46. package/browser/esm/{BkGQPKMRPIVUVTLO.mjs → D9x-Q8y57gePf-tE.mjs} +42 -42
  47. package/{cdn/assets/D4hoypx6_sZbvrC_.js → browser/esm/DHhXutXh7b5LsU1m.mjs} +2 -2
  48. package/browser/esm/{DRL5s4S0fIXi1aU7.mjs → DIGFi66CQPMV3HsL.mjs} +1 -1
  49. package/browser/esm/{D0icxW0WVNoeVRLH.mjs → DamiTeQsSMP2Cwld.mjs} +9 -9
  50. package/browser/esm/{DRmeb1VC4YCzKKWd.mjs → DhD48oFrbrnZ6Zg5.mjs} +1 -1
  51. package/{cdn/assets/b9dlFmoFz8tJhV0Z.js → browser/esm/Ln2ZalJgj1CiJJue.mjs} +6 -6
  52. package/browser/esm/{CxcLNXXaxyFyUzyb.mjs → S9fgUO7h8YgZxoKH.mjs} +1 -1
  53. package/browser/esm/index.mjs +2 -2
  54. package/browser/esm/{DTwhl4v5YnZrUSgI.mjs → qVAHcpq07IhtAaQc.mjs} +5 -5
  55. package/{cdn/assets/Bg88bG-JM9EHeyYX.js → browser/esm/xrzJ8ILZHb118Oyt.mjs} +17 -17
  56. package/cdn/assets/{DKLitAhDj5Ibh2cc.js → 2-xJlw77WsCoyz09.js} +5071 -5040
  57. package/cdn/assets/{CkcETdiKdTsZAzma.js → B-9FcTf3xBEVGdjV.js} +59 -59
  58. package/{browser/esm/BQpsMTJvguy6LMIq.mjs → cdn/assets/B-p1i2SNRMunPXCF.js} +8 -8
  59. package/cdn/assets/{BWJOkXXB6Tr-jYUS.js → B3J6oAmsS7oLNFPd.js} +3 -3
  60. package/{browser/esm/4aC35Q2XPOwifBRR.mjs → cdn/assets/B8Ja5DlyKAy8xfQD.js} +1 -1
  61. package/cdn/assets/{BapFqJyAb3cblvJM.js → BG3YTMAzNKPRGoLs.js} +6 -6
  62. package/cdn/assets/{BD9GKsR-k4aEK2tx.js → BQYSD5Nb35y0WeeV.js} +1 -1
  63. package/{browser/esm/B3I_TrFN_pAK5Mdh.mjs → cdn/assets/BbzUpvQOkxsN-yIH.js} +2 -2
  64. package/{browser/esm/2NQDbhor1Nuzndgq.mjs → cdn/assets/BqXO_cQhrMJu7JoQ.js} +1 -1
  65. package/{browser/esm/DmpPAs6w-XNWGTIN.mjs → cdn/assets/Bt1JSlSpWXDOBfq3.js} +3 -3
  66. package/{browser/esm/5zFDFBAgT-aPgQQ0.mjs → cdn/assets/CCIJpHSbFPjTEF8S.js} +1 -1
  67. package/cdn/assets/{CO_s27056nua6qzN.js → CKHsU9LUNYowimxS.js} +1 -1
  68. package/cdn/assets/{PIZDjyqIbvmHXs1T.js → CWLJZwD2GVXljoWG.js} +9 -9
  69. package/{browser/esm/C81J50HcankGTOIj.mjs → cdn/assets/Cm-m3bZh0V44y0li.js} +1 -1
  70. package/cdn/assets/{D5exf1RvCqvUoJ3X.js → CtQlXGkNWgI-vtGy.js} +26 -26
  71. package/cdn/assets/{DRL5s4S0fIXi1aU7.js → DIGFi66CQPMV3HsL.js} +1 -1
  72. package/cdn/assets/{DYkBvlMlZjOASUJs.js → DK4S0DbayChkfTD6.js} +9 -9
  73. package/{browser/esm/tPrnEcHW_czJDZOT.mjs → cdn/assets/DQvsBz9F1GS_S7r9.js} +6 -6
  74. package/cdn/assets/{ON5--a75QdEU99y_.js → DTOgv_zwXSur-yCq.js} +16 -16
  75. package/cdn/assets/{d1PG-QPA1GcQ_RuH.js → DYZjOnD8WWQkCYuH.js} +42 -42
  76. package/cdn/assets/{DRmeb1VC4YCzKKWd.js → DhD48oFrbrnZ6Zg5.js} +1 -1
  77. package/{browser/esm/BfCWogOnq8R-c3dD.mjs → cdn/assets/DhyAyTCDkMBf392P.js} +2 -2
  78. package/cdn/assets/{B0w_moB3pDJd-a6V.js → P7HeVw5SHROLSWBz.js} +5 -5
  79. package/{browser/esm/CZVzRhflTpwAAl1o.mjs → cdn/assets/S4Z0SN8x6EltjsHT.js} +6 -6
  80. package/cdn/assets/{CxcLNXXaxyFyUzyb.js → S9fgUO7h8YgZxoKH.js} +1 -1
  81. package/{browser/esm/gsfI5CGYr7LCQxRx.mjs → cdn/assets/guYe4C_6pE93QsDV.js} +17 -17
  82. package/cdn/index.js +2 -2
  83. package/cdn/loader.js +1 -1
  84. package/package.json +3 -3
  85. package/types/index.d.ts +9 -9
  86. package/browser/cjs/5hPVyVAXmITQCRAG.cjs +0 -6
@@ -1,11 +1,11 @@
1
1
  import { jsx as f, jsxs as ie, Fragment as Kt } from "react/jsx-runtime";
2
2
  import * as we from "react";
3
3
  import L, { memo as Me, forwardRef as le, useRef as se, useMemo as te, useState as re, useEffect as G, useLayoutEffect as dt, useCallback as ne, Component as Gt, createElement as he, createContext as yn, isValidElement as Zt, useContext as wn, cloneElement as vn } from "react";
4
- import { g as xt, e as yt, u as et, f as En, h as Cn, j as Sn, l as Dn, m as Tn, s as je, n as wt, o as vt, p as Tt, q as Mn, r as On, t as Xt, v as Ln, x as Wn, w as ae, U as Qt, D as Mt, W as pt, X as Nn, y as xe, z as Yt, A as An, B as me, V as Jt, C as Rn, E as mt, H as en, K as In, L as Pn, S as Fn, N as jn, O as Hn, Q as zn, Z as _n, _ as qn, c as Bn, $ as $n, a0 as ht, a1 as Vn, a2 as Un, a3 as Kn, a4 as Gn, a5 as Zn, a6 as Xn, J as Qn, a7 as ee, a8 as We, a9 as Ot, aa as Yn, ab as Jn, ac as eo, ad as to, ae as no, af as oo, ag as nt, ah as Ne, ai as ro, aj as ao, ak as io, al as so, am as Lt, an as Wt, ao as lo, ap as co, aq as uo, ar as po, as as Be } from "./DKLitAhDj5Ibh2cc.js";
4
+ import { g as xt, c as yt, u as et, d as En, e as Cn, f as Sn, h as Dn, j as Tn, s as je, l as wt, m as vt, n as Tt, o as Mn, p as On, q as Xt, r as Ln, _ as Wn, w as ae, K as Qt, A as Mt, X as pt, Q as Nn, x as xe, y as Jt, z as An, B as me, C as Yt, D as Rn, H as mt, J as en, L as In, N as Pn, S as Fn, O as jn, R as Hn, U as zn, W as _n, Z as qn, b as Bn, $ as $n, a0 as ht, a1 as Vn, a2 as Un, a3 as Kn, a4 as Gn, a5 as Zn, a6 as Xn, Y as Qn, a7 as ee, a8 as We, a9 as Ot, aa as Jn, ab as Yn, ac as eo, ad as to, ae as no, af as oo, ag as nt, ah as Ne, ai as ro, aj as ao, ak as io, al as so, am as Lt, an as Wt, ao as lo, ap as co, aq as uo, ar as po, as as Be } from "./2-xJlw77WsCoyz09.js";
5
5
  import { createPortal as mo } from "react-dom";
6
6
  import { CommonUtils as ot, UndoManager as ho, Workbook as Nt, PartialError as fo } from "@sheetxl/sdk";
7
7
  /**
8
- * @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.4.9
8
+ * @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.4.10
9
9
  *
10
10
  * (C) 2025-present SheetXL Inc. & Michael T. Ford
11
11
  * License: The license can be found at https://www.sheetxl.com/license.
@@ -31,23 +31,23 @@ const ko = je("div", { name: "MuiCollapse", slot: "Root", overridesResolver: (e,
31
31
  }), F = x((E, B) => {
32
32
  const $ = M();
33
33
  I.current && Q && (I.current.style.position = "");
34
- const { duration: Y, easing: pe } = Tt({ style: h, timeout: d, easing: s }, { mode: "enter" });
34
+ const { duration: J, easing: pe } = Tt({ style: h, timeout: d, easing: s }, { mode: "enter" });
35
35
  if (d === "auto") {
36
36
  const ve = j.transitions.getAutoHeightDuration($);
37
37
  E.style.transitionDuration = `${ve}ms`, q.current = ve;
38
- } else E.style.transitionDuration = typeof Y == "string" ? Y : `${Y}ms`;
38
+ } else E.style.transitionDuration = typeof J == "string" ? J : `${J}ms`;
39
39
  E.style[de] = `${$}px`, E.style.transitionTimingFunction = pe, k && k(E, B);
40
40
  }), H = x((E, B) => {
41
41
  E.style[de] = "auto", p && p(E, B);
42
42
  }), z = x((E) => {
43
43
  E.style[de] = `${M()}px`, w && w(E);
44
44
  }), ge = x(b), A = x((E) => {
45
- const B = M(), { duration: $, easing: Y } = Tt({ style: h, timeout: d, easing: s }, { mode: "exit" });
45
+ const B = M(), { duration: $, easing: J } = Tt({ style: h, timeout: d, easing: s }, { mode: "exit" });
46
46
  if (d === "auto") {
47
47
  const pe = j.transitions.getAutoHeightDuration(B);
48
48
  E.style.transitionDuration = `${pe}ms`, q.current = pe;
49
49
  } else E.style.transitionDuration = typeof $ == "string" ? $ : `${$}ms`;
50
- E.style[de] = K, E.style.transitionTimingFunction = Y, g && g(E);
50
+ E.style[de] = K, E.style.transitionTimingFunction = J, g && g(E);
51
51
  });
52
52
  return f(S, { in: c, onEnter: T, onEntered: H, onEntering: F, onExit: z, onExited: ge, onExiting: A, addEndListener: (E) => {
53
53
  d === "auto" && _.start(q.current || 0, E), t && t(P.current, E);
@@ -227,7 +227,7 @@ function It(e) {
227
227
  kt.bind({ g: 1 }), kt.bind({ k: 1 });
228
228
  var Pt = function() {
229
229
  return "";
230
- }, an = L.createContext({ enqueueSnackbar: Pt, closeSnackbar: Pt }), at = "@media (max-width:599.95px)", Ye = "@media (min-width:600px)", Ft = function(e) {
230
+ }, an = L.createContext({ enqueueSnackbar: Pt, closeSnackbar: Pt }), at = "@media (max-width:599.95px)", Je = "@media (min-width:600px)", Ft = function(e) {
231
231
  return e.charAt(0).toUpperCase() + e.slice(1);
232
232
  }, Et = function(e) {
233
233
  return "" + Ft(e.vertical) + Ft(e.horizontal);
@@ -320,7 +320,7 @@ function bt(e, o) {
320
320
  };
321
321
  }, [e, o]);
322
322
  }
323
- function Je(e) {
323
+ function Ye(e) {
324
324
  var o = e.timeout, r = e.style, t = r === void 0 ? {} : r, n = e.mode;
325
325
  return { duration: typeof o == "object" ? o[n] || 0 : o, easing: t.transitionTimingFunction, delay: t.transitionDelay };
326
326
  }
@@ -399,10 +399,10 @@ var cn = le(function(e, o) {
399
399
  }, [a, h]), he(Ct, Object.assign({ appear: !0, nodeRef: b, onEnter: function(d, S) {
400
400
  Ue(n, d), sn(d), c && c(d, S);
401
401
  }, onEntered: u, onEntering: function(d) {
402
- var S = Je({ timeout: s, mode: "enter", style: W({}, i, { transitionTimingFunction: i?.transitionTimingFunction || "cubic-bezier(0.0, 0, 0.2, 1)" }) });
402
+ var S = Ye({ timeout: s, mode: "enter", style: W({}, i, { transitionTimingFunction: i?.transitionTimingFunction || "cubic-bezier(0.0, 0, 0.2, 1)" }) });
403
403
  d.style.webkitTransition = Te("-webkit-transform", S), d.style.transition = Te("transform", S), d.style.webkitTransform = "none", d.style.transform = "none";
404
404
  }, onExit: function(d) {
405
- var S = Je({ timeout: s, mode: "exit", style: W({}, i, { transitionTimingFunction: i?.transitionTimingFunction || "cubic-bezier(0.4, 0, 0.6, 1)" }) });
405
+ var S = Ye({ timeout: s, mode: "exit", style: W({}, i, { transitionTimingFunction: i?.transitionTimingFunction || "cubic-bezier(0.4, 0, 0.6, 1)" }) });
406
406
  d.style.webkitTransition = Te("-webkit-transform", S), d.style.transition = Te("transform", S), Ue(n, d), p && p(d);
407
407
  }, onExited: function(d) {
408
408
  d.style.webkitTransition = "", d.style.transition = "", k && k(d);
@@ -443,13 +443,13 @@ var un = "notistack-CollapseWrapper", Po = function(e) {
443
443
  }, onEntered: function(c) {
444
444
  c.style.height = "auto";
445
445
  }, onEntering: function(c) {
446
- var u = s(), p = Je({ timeout: 175, mode: "enter" }), k = p.duration, w = p.easing;
446
+ var u = s(), p = Ye({ timeout: 175, mode: "enter" }), k = p.duration, w = p.easing;
447
447
  c.style.transitionDuration = typeof k == "string" ? k : k + "ms", c.style.height = u + "px", c.style.transitionTimingFunction = w || "";
448
448
  }, onExit: function(c) {
449
449
  c.style.height = s() + "px";
450
450
  }, onExited: n, onExiting: function(c) {
451
451
  sn(c);
452
- var u = Je({ timeout: 175, mode: "exit" }), p = u.duration, k = u.easing;
452
+ var u = Ye({ timeout: 175, mode: "exit" }), p = u.duration, k = u.easing;
453
453
  c.style.transitionDuration = typeof p == "string" ? p : p + "ms", c.style.height = it, c.style.transitionTimingFunction = k || "";
454
454
  }, nodeRef: i, timeout: 175 }, function(c, u) {
455
455
  return he("div", Object.assign({ ref: l, className: fe(_t.root, c === "entered" && _t.entered), style: W({ pointerEvents: "all", overflow: "hidden", minHeight: it, transition: Te("height") }, c === "entered" && { overflow: "visible" }, {}, c === "exited" && !t && { visibility: "hidden" }) }, u), he("div", { ref: a, className: un, style: { display: "flex", width: "100%" } }, r));
@@ -507,7 +507,7 @@ var st, pn = le(function(e, o) {
507
507
  } }), r);
508
508
  });
509
509
  pn.displayName = "Snackbar";
510
- var zo = ze({ root: (st = { display: "flex", flexWrap: "wrap", flexGrow: 1 }, st[Ye] = { flexGrow: "initial", minWidth: "288px" }, st) }), St = le(function(e, o) {
510
+ var zo = ze({ root: (st = { display: "flex", flexWrap: "wrap", flexGrow: 1 }, st[Je] = { flexGrow: "initial", minWidth: "288px" }, st) }), St = le(function(e, o) {
511
511
  var r = e.className, t = He(e, ["className"]);
512
512
  return L.createElement("div", Object.assign({ ref: o, className: fe(zo.root, r) }, t));
513
513
  });
@@ -550,7 +550,7 @@ var Ie, lt, Ge, Ze, ct, _o = Me(mn), qo = ze({ wrappedRoot: { width: "100%", pos
550
550
  return L.createElement(dn, { in: t, onExited: j.onExited }, L.createElement(pn, { open: w, id: v.id, disableWindowBlurListener: d, autoHideDuration: v.autoHideDuration, className: fe(qo.wrappedRoot, k.root, k[Fo(v.anchorOrigin)]), SnackbarProps: b, onClose: a }, L.createElement(g, Object.assign({}, N, { appear: !0, in: w, onExit: j.onExit, onExited: i, onEnter: j.onEnter, onEntered: Fe([j.onEntered, function() {
551
551
  e.snack.requestClose && a(null, "instructed", e.snack.id);
552
552
  }], v.id) }), D || L.createElement(p, Object.assign({}, v)))));
553
- }, Pe = 20, ut = 6, $o = 2, Vt = "." + un, Xe = ze({ root: (Ie = { boxSizing: "border-box", display: "flex", maxHeight: "100%", position: "fixed", zIndex: 1400, height: "auto", width: "auto", transition: Te(["top", "right", "bottom", "left", "max-width"], { duration: 300, easing: "ease" }), pointerEvents: "none" }, Ie[Vt] = { padding: ut + "px 0px", transition: "padding 300ms ease 0ms" }, Ie.maxWidth = "calc(100% - " + 2 * Pe + "px)", Ie[at] = { width: "100%", maxWidth: "calc(100% - 32px)" }, Ie), rootDense: (lt = {}, lt[Vt] = { padding: $o + "px 0px" }, lt), top: { top: Pe - ut + "px", flexDirection: "column" }, bottom: { bottom: Pe - ut + "px", flexDirection: "column-reverse" }, left: (Ge = { left: Pe + "px" }, Ge[Ye] = { alignItems: "flex-start" }, Ge[at] = { left: "16px" }, Ge), right: (Ze = { right: Pe + "px" }, Ze[Ye] = { alignItems: "flex-end" }, Ze[at] = { right: "16px" }, Ze), center: (ct = { left: "50%", transform: "translateX(-50%)" }, ct[Ye] = { alignItems: "center" }, ct) }), Vo = Me(function(e) {
553
+ }, Pe = 20, ut = 6, $o = 2, Vt = "." + un, Xe = ze({ root: (Ie = { boxSizing: "border-box", display: "flex", maxHeight: "100%", position: "fixed", zIndex: 1400, height: "auto", width: "auto", transition: Te(["top", "right", "bottom", "left", "max-width"], { duration: 300, easing: "ease" }), pointerEvents: "none" }, Ie[Vt] = { padding: ut + "px 0px", transition: "padding 300ms ease 0ms" }, Ie.maxWidth = "calc(100% - " + 2 * Pe + "px)", Ie[at] = { width: "100%", maxWidth: "calc(100% - 32px)" }, Ie), rootDense: (lt = {}, lt[Vt] = { padding: $o + "px 0px" }, lt), top: { top: Pe - ut + "px", flexDirection: "column" }, bottom: { bottom: Pe - ut + "px", flexDirection: "column-reverse" }, left: (Ge = { left: Pe + "px" }, Ge[Je] = { alignItems: "flex-start" }, Ge[at] = { left: "16px" }, Ge), right: (Ze = { right: Pe + "px" }, Ze[Je] = { alignItems: "flex-end" }, Ze[at] = { right: "16px" }, Ze), center: (ct = { left: "50%", transform: "translateX(-50%)" }, ct[Je] = { alignItems: "center" }, ct) }), Vo = Me(function(e) {
554
554
  var o = e.classes, r = o === void 0 ? {} : o, t = e.anchorOrigin, n = e.dense, a = e.children, i = fe("notistack-SnackbarContainer", Xe[t.vertical], Xe[t.horizontal], Xe.root, r.containerRoot, r["containerAnchorOrigin" + Et(t)], n && Xe.rootDense);
555
555
  return L.createElement("div", { className: i }, a);
556
556
  }), Ut = function(e) {
@@ -722,20 +722,20 @@ const bn = Me(le((e, o) => {
722
722
  const F = { ...M, onKeyDown: (H) => {
723
723
  u?.dispatchToFocusedCommand(H), H.isDefaultPrevented() || H.isPropagationStopped() || M?.onKeyDown?.(H);
724
724
  } };
725
- return v(x, { sort: () => import("./B0w_moB3pDJd-a6V.js"), numberFormat: () => import("./BapFqJyAb3cblvJM.js"), hyperlink: () => import("./PIZDjyqIbvmHXs1T.js"), comments: () => import("./b9dlFmoFz8tJhV0Z.js"), find: () => import("./ON5--a75QdEU99y_.js"), tableDetails: () => import("./DYkBvlMlZjOASUJs.js"), tableNew: () => import("./BJVOhUH_XL03H6ZD.js"), namedDetails: () => import("./D0PaU6F-TNaTWj-a.js") }[x], F, T);
725
+ return v(x, { sort: () => import("./P7HeVw5SHROLSWBz.js"), numberFormat: () => import("./BG3YTMAzNKPRGoLs.js"), hyperlink: () => import("./CWLJZwD2GVXljoWG.js"), comments: () => import("./DQvsBz9F1GS_S7r9.js"), find: () => import("./DTOgv_zwXSur-yCq.js"), tableDetails: () => import("./DK4S0DbayChkfTD6.js"), tableNew: () => import("./S4Z0SN8x6EltjsHT.js"), namedDetails: () => import("./B-p1i2SNRMunPXCF.js") }[x], F, T);
726
726
  }, showOptions: N, showInputOptions: D, showError: (x) => {
727
727
  let M, T = Be.Error, F = "Unknown Error";
728
728
  typeof x == "string" ? F = x : x instanceof Error && (M = x, x.message && (F = x.message)), x instanceof fo && (T = Be.Info), V(F, { type: T, enqueueProps: { error: M } });
729
729
  } };
730
730
  }, []), I = ne(() => {
731
731
  }, []), q = ((V) => {
732
- const { workbook: x, setWorkbook: M, importExportDisabled: T, workbookTitle: F = "export", setWorkbookTitle: H, notifier: z, requestWorkbookTitle: ge, themeOptions: A, undoManager: E, commands: B, onExecute: $ } = V, Y = ae(A?.onModeChange, [A?.onModeChange]), pe = ae(A?.onEnabledDarkGridChange, [A?.onEnabledDarkGridChange]), ve = ae(A?.onEnabledDarkImagesChange, [A?.onEnabledDarkImagesChange]), Ee = ae(async (R = null, oe = null) => {
732
+ const { workbook: x, setWorkbook: M, importExportDisabled: T, workbookTitle: F = "export", setWorkbookTitle: H, notifier: z, requestWorkbookTitle: ge, themeOptions: A, undoManager: E, commands: B, onExecute: $ } = V, J = ae(A?.onModeChange, [A?.onModeChange]), pe = ae(A?.onEnabledDarkGridChange, [A?.onEnabledDarkGridChange]), ve = ae(A?.onEnabledDarkImagesChange, [A?.onEnabledDarkImagesChange]), Ee = ae(async (R = null, oe = null) => {
733
733
  const O = [];
734
734
  let m, C = null, X = null;
735
735
  if (typeof R == "string" ? X = R : C = R, m = C ? R : await Qn.openFileDialog(X ?? xe.getAllReadFormatTypeAsString().join(",")), !m) return null;
736
- const J = { source: m, createWorkbookOptions: oe, onWarning: (tt) => {
736
+ const Y = { source: m, createWorkbookOptions: oe, onWarning: (tt) => {
737
737
  O.push(tt);
738
- } }, Le = await xe.read(J, z);
738
+ } }, Le = await xe.read(Y, z);
739
739
  return O.length > 0 && (z?.showMessage?.("Some elements were not able to be imported. See console for details."), console.warn(`Import warnings:
740
740
  ` + O.join(`
741
741
  `))), Le;
@@ -751,13 +751,13 @@ const bn = Me(le((e, o) => {
751
751
  T || (xe.getWriteFormats().forEach((O) => {
752
752
  const m = O.isDefault, C = { label: m ? "Save Workbook" : `Save Workbook as ${O.description}`, scopedLabels: { workbook: "Save", saveWorkbook: `as ${O.description}` }, tags: O.tags, description: `Save the workbook to the desktop${m ? "" : ` as ${O.description}`}.` };
753
753
  m && (C.shortcut = { key: "S", modifiers: [We.Ctrl] }, R.push(new ee("saveWorkbookAs", U, { label: "Save Workbook As…", scopedLabels: { workbook: "Save as…", saveWorkbook: "as…" }, shortcut: [{ key: "S", modifiers: [We.Shift, We.Ctrl] }, { key: "F12" }], description: "Save the workbook to the desktop with the provided name." }, () => {
754
- _e(x, null, O).catch((J) => {
755
- z?.showError?.(J);
754
+ _e(x, null, O).catch((Y) => {
755
+ z?.showError?.(Y);
756
756
  });
757
757
  })));
758
758
  const X = m ? "saveWorkbook" : `saveWorkbookAs${O.key}`;
759
- R.push(new ee(X, U, C, (J) => {
760
- _e(x, J ?? F, O).catch((Le) => {
759
+ R.push(new ee(X, U, C, (Y) => {
760
+ _e(x, Y ?? F, O).catch((Le) => {
761
761
  z?.showError?.(Le);
762
762
  });
763
763
  }));
@@ -766,14 +766,14 @@ const bn = Me(le((e, o) => {
766
766
  try {
767
767
  const C = await Ee(O, m);
768
768
  if (!C) return;
769
- const X = C.title, J = C.workbook, Le = J.getSelectedSheet();
769
+ const X = C.title, Y = C.workbook, Le = Y.getSelectedSheet();
770
770
  if (C.formatType.mimeType === "text/csv") {
771
771
  const tt = x.findValidSheetName(X);
772
772
  await x.doBatch(async () => {
773
773
  const Dt = Le.getUsedRange();
774
774
  Dt ? await x.getSheets().add({ name: tt, autoSelect: !0 }).getRange({ colStart: 0, rowStart: 0, colEnd: 0, rowEnd: 0 }).copyFrom(Dt) : z?.showMessage("The file appears to be blank.");
775
775
  }, `Import CSV '${X}'`);
776
- } else x?.close(), H?.(X), M(J);
776
+ } else x?.close(), H?.(X), M(Y);
777
777
  } catch (C) {
778
778
  z?.showError?.(C);
779
779
  }
@@ -799,27 +799,27 @@ const bn = Me(le((e, o) => {
799
799
  })];
800
800
  }, [x, F, z, T, A, B, E]), Z = te(() => {
801
801
  let R = null;
802
- return R = B ? B.createChildGroup(U, "standaloneWorkbook", !1) : new Yt(U, "standaloneWorkbook"), R.addCommands(ke, !0), R;
802
+ return R = B ? B.createChildGroup(U, "standaloneWorkbook", !1) : new Jt(U, "standaloneWorkbook"), R.addCommands(ke, !0), R;
803
803
  }, [B, ke]);
804
- Yn({ manager: E, commands: Z, notifier: z });
804
+ Jn({ manager: E, commands: Z, notifier: z });
805
805
  const { themeMode: Oe } = Qt();
806
806
  G(() => {
807
807
  if (!A || !Z) return;
808
808
  const R = A.mode === "dark" || !A.mode && Oe === "dark";
809
809
  Z.getCommand("themeMode").update({ state: A.mode ?? null, label: R ? "Dark Mode" : "Light Mode", scopedLabels: { appearance: R ? "Dark Mode" : "Light Mode" } }).updateCallback(() => {
810
- Y(R ? pt.Light : pt.Dark);
810
+ J(R ? pt.Light : pt.Dark);
811
811
  }), Z.getCommand("defaultThemeMode").update({ state: !A.mode }).updateCallback(() => {
812
- Y(null);
812
+ J(null);
813
813
  }), Z.getCommand("enableDarkGrid").update({ state: A.enableDarkGrid }).updateCallback(() => {
814
814
  pe(!A.enableDarkGrid);
815
815
  }), Z.getCommand("enableDarkImages").update({ state: A.enableDarkImages }).updateCallback(() => {
816
816
  ve(!A.enableDarkImages);
817
817
  });
818
818
  }, [Oe, A, ke]);
819
- const { showModal: qe } = Jn();
819
+ const { showModal: qe } = Yn();
820
820
  return G(() => {
821
821
  const R = () => new Promise((oe, O) => {
822
- const m = L.lazy(() => import("./D5exf1RvCqvUoJ3X.js")), C = qe(m, { title: "Shortcut Keys Reference", commands: Z, onDone: () => {
822
+ const m = L.lazy(() => import("./CtQlXGkNWgI-vtGy.js")), C = qe(m, { title: "Shortcut Keys Reference", commands: Z, onDone: () => {
823
823
  C.hide();
824
824
  }, TransitionProps: { onExited: () => {
825
825
  oe(!0);
@@ -848,7 +848,7 @@ const bn = Me(le((e, o) => {
848
848
  }, [y]);
849
849
  const [K, Q] = re(null);
850
850
  G(() => {
851
- y.starting.size !== 0 || y.running.size !== 0 ? Q(f(Jt, { icon: f(eo, { sx: { transform: "scale(0.7)", marginLeft: "-6px" } }), panel: !0, label: y.label, onMount: d, onUnmount: S, sx: { position: "absolute", left: "0", top: "0", width: "100%", height: "100%", zIndex: "9999" } })) : Q(null);
851
+ y.starting.size !== 0 || y.running.size !== 0 ? Q(f(Yt, { icon: f(eo, { sx: { transform: "scale(0.7)", marginLeft: "-6px" } }), panel: !0, label: y.label, onMount: d, onUnmount: S, sx: { position: "absolute", left: "0", top: "0", width: "100%", height: "100%", zIndex: "9999" } })) : Q(null);
852
852
  }, [y.starting, y.running]);
853
853
  const de = te(() => f(to, { commands: q, disableHover: !0, sx: { padding: "0" }, buttonProps: { sx: { maxHeight: "22px" } } }), [q]), P = { notifier: _, commands: q };
854
854
  return r && (P.statusBarProps = { childrenEnd: de }), ie(Kt, { children: [K, s ? L.cloneElement(s, P) : null] });
@@ -871,7 +871,7 @@ const xn = Me(le((e, o) => {
871
871
  (async () => {
872
872
  try {
873
873
  let m, C = await Promise.resolve(H);
874
- C && C.source && (C = await xe.read(C)), C.workbook ? (Y(C.title), m = C.workbook) : m = C, _?.(m), F({ workbook: m });
874
+ C && C.source && (C = await xe.read(C)), C.workbook ? (J(C.title), m = C.workbook) : m = C, _?.(m), F({ workbook: m });
875
875
  } catch (m) {
876
876
  _?.(null), F({ error: m });
877
877
  }
@@ -891,16 +891,16 @@ const xn = Me(le((e, o) => {
891
891
  }, [x, T, A]);
892
892
  const B = ae((m) => {
893
893
  m ? x.setRepeatableOperation({ description: m.label(), repeat: async () => m.execute() }) : x.setRepeatableOperation(null);
894
- }, [x]), [$, Y] = re(d ?? v?.title ?? "");
894
+ }, [x]), [$, J] = re(d ?? v?.title ?? "");
895
895
  G(() => {
896
- Y(d ?? v?.title ?? "");
896
+ J(d ?? v?.title ?? "");
897
897
  }, [d ?? v?.title]), G(() => {
898
898
  I?.($);
899
899
  }, [$]);
900
900
  const [pe, ve] = re(null), Ee = te(() => {
901
901
  const m = () => ({ contains: (C) => !0, focus() {
902
902
  } });
903
- return h ? h.createChildGroup(m, "application", !1) : new Yt(m, "application");
903
+ return h ? h.createChildGroup(m, "application", !1) : new Jt(m, "application");
904
904
  }, [h]), _e = ae((m) => {
905
905
  ve(m.source.getViewportElement()), E(m), Ee.activate("sheet"), a?.(m);
906
906
  }, [Ee]);
@@ -910,7 +910,7 @@ const xn = Me(le((e, o) => {
910
910
  const U = se(null), ke = ne((m) => {
911
911
  let C = null;
912
912
  return v?.hidden || (C = f(An, { ...v, style: { maxWidth: "100%", ...v?.style }, workbook: j.current, ref: U, title: $, placeHolder: q, onTitleChange: (X) => {
913
- Y(X);
913
+ J(X);
914
914
  } })), f(kn, { ...m, logo: w, mainElement: C, showFileMenu: !b, showAppearanceMenu: !!(P?.onEnabledDarkGridChange || P?.onEnabledDarkImagesChange || P?.onModeChange) });
915
915
  }, [w, $, v, P, b, Ee]);
916
916
  G(() => {
@@ -921,24 +921,24 @@ const xn = Me(le((e, o) => {
921
921
  }, []);
922
922
  const Z = te(() => {
923
923
  const m = { transparentBackground: !0 };
924
- return f(me, { sx: t, style: { position: "absolute", top: 0, left: 0, right: 0, bottom: 0, display: "flex", alignItems: "center", justifyContent: "center", ...n }, children: N?.(m) ?? f(Jt, { ...m }) });
924
+ return f(me, { sx: t, style: { position: "absolute", top: 0, left: 0, right: 0, bottom: 0, display: "flex", alignItems: "center", justifyContent: "center", ...n }, children: N?.(m) ?? f(Yt, { ...m }) });
925
925
  }, [t, n, N]), Oe = ne(({ error: m }) => (i?.(m), f(s, { sx: t, style: n, error: m ?? "Unable to display empty workbook." })), [t, n, i]), qe = te(() => ({ ...t, "& .SnackbarContainer-root": { position: "absolute !important" }, "& .notistack-Snackbar": { minWidth: "unset" }, "& .notistack-MuiContent *": { fontFamily: (m) => m.typography.fontFamily }, "& #notistack-snackbar": { maxWidth: "560px", whiteSpace: "pre-wrap" }, "*": { userSelect: "none" } }), [t]), R = en([j, o]), oe = te(() => {
926
926
  if (!T) return Z;
927
927
  if (T.error || !T.workbook) return Oe({ error: T.error });
928
928
  let m = null, C = null, X = !1;
929
- return P && (m = V ? P.dark : P.light, C = V && P.enableDarkGrid ? P.dark : P.light, X = P.enableDarkImages), f(Rn, { sx: qe, style: n, tabIndex: 0, autoFocus: !0, workbook: T.workbook, ref: R, renderToolbar: ke, onElementLoad: _e, onRepeatCommandChange: B, onKeyDown: (J) => {
930
- c?.(J);
931
- }, renderLoadingPanel: N, gridTheme: C, headersTheme: m, enableDarkImages: X, className: mt(r, "sheetxl-workbook"), onContextMenu: (J) => J.preventDefault(), ...D }, "WorkbookElement");
929
+ return P && (m = V ? P.dark : P.light, C = V && P.enableDarkGrid ? P.dark : P.light, X = P.enableDarkImages), f(Rn, { sx: qe, style: n, tabIndex: 0, autoFocus: !0, workbook: T.workbook, ref: R, renderToolbar: ke, onElementLoad: _e, onRepeatCommandChange: B, onKeyDown: (Y) => {
930
+ c?.(Y);
931
+ }, renderLoadingPanel: N, gridTheme: C, headersTheme: m, enableDarkImages: X, className: mt(r, "sheetxl-workbook"), onContextMenu: (Y) => Y.preventDefault(), ...D }, "WorkbookElement");
932
932
  }, [T, $, x, Z, N, P, D, ke, qe]);
933
933
  let O = f(No, { fallbackRender: Oe, children: f(Uo, { maxSnack: 3, domRoot: pe, anchorOrigin: { vertical: "bottom", horizontal: "right" }, autoHideDuration: 3500, onClose: (m, C, X) => {
934
934
  j.current?.focus();
935
- }, Components: { error: fn }, iconVariant: { success: f(Fn, { style: { marginRight: "8px" }, children: f("path", { d: "M20,12A8,8 0 0,1 12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4C12.76,4 13.5,4.11 14.2, 4.31L15.77,2.74C14.61,2.26 13.34,2 12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0, 0 22,12M7.91,10.08L6.5,11.5L11,16L21,6L19.59,4.58L11,13.17L7.91,10.08Z" }) }), error: f(Pn, { style: { marginRight: "8px" } }) }, children: f(In, { children: f(bn, { workbook: T?.workbook, setWorkbook: z, importExportDisabled: b, titlePlaceHolder: q, titleWorkbook: $, setWorkbookTitle: Y, refWorkbookTitle: U, commands: Ee, undoManager: x, themeOptions: P, children: oe }) }) }) });
935
+ }, Components: { error: fn }, iconVariant: { success: f(Fn, { style: { marginRight: "8px" }, children: f("path", { d: "M20,12A8,8 0 0,1 12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4C12.76,4 13.5,4.11 14.2, 4.31L15.77,2.74C14.61,2.26 13.34,2 12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0, 0 22,12M7.91,10.08L6.5,11.5L11,16L21,6L19.59,4.58L11,13.17L7.91,10.08Z" }) }), error: f(Pn, { style: { marginRight: "8px" } }) }, children: f(In, { children: f(bn, { workbook: T?.workbook, setWorkbook: z, importExportDisabled: b, titlePlaceHolder: q, titleWorkbook: $, setWorkbookTitle: J, refWorkbookTitle: U, commands: Ee, undoManager: x, themeOptions: P, children: oe }) }) }) });
936
936
  return P && (O = ie(jn, { theme: V ? P.dark : P.light, children: [P.cssBaseline ? f(Oo, {}) : null, O] })), O;
937
937
  }));
938
938
  xn.displayName = "EagerStudio";
939
939
  const Go = Object.freeze(Object.defineProperty({ __proto__: null, default: xn }, Symbol.toStringTag, { value: "Module" })), er = Object.freeze(Object.defineProperty({ __proto__: null, E: Go, c: fe }, Symbol.toStringTag, { value: "Module" }));
940
940
  export {
941
941
  ft as C,
942
- er as D,
942
+ er as a,
943
943
  fe as h
944
944
  };
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.4.9
2
+ * @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.4.10
3
3
  *
4
4
  * (C) 2025-present SheetXL Inc. & Michael T. Ford
5
5
  * License: The license can be found at https://www.sheetxl.com/license.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.4.9
2
+ * @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.4.10
3
3
  *
4
4
  * (C) 2025-present SheetXL Inc. & Michael T. Ford
5
5
  * License: The license can be found at https://www.sheetxl.com/license.
@@ -13,7 +13,7 @@ const i = { reactUrl: "https://esm.sh/react@19.1.0", reactJsxTransform: "https:/
13
13
  e.type = "importmap", e.textContent = JSON.stringify({ imports: { react: n, "react/jsx-runtime": a, "react-dom": s, "react-dom/client": c } }), document.head.appendChild(e), console.log("SheetXL: Import map injected:", e.textContent);
14
14
  }
15
15
  await new Promise((e) => setTimeout(e, 0));
16
- const o = await Promise.all([import("react"), import("react/jsx-runtime"), import("react-dom"), import("react-dom/client"), import("./DFQvqk5r1uf_z0h_.mjs").then((e) => e.b7)]);
16
+ const o = await Promise.all([import("react"), import("react/jsx-runtime"), import("react-dom"), import("react-dom/client"), import("./2-xJlw77WsCoyz09.js").then((e) => e.b6)]);
17
17
  return console.log("SheetXL: Dependencies resolved:", o), { React: o[0], ReactJSXTransform: o[1], ReactDOM: o[2], ReactDOMClient: o[3], StudioMUI: o[4] };
18
18
  })(), r));
19
19
  export {
@@ -1,19 +1,19 @@
1
1
  import { jsx as n, jsxs as m } from "react/jsx-runtime";
2
2
  import { useState as C } from "react";
3
3
  import { Sort as a, IRange as r } from "@sheetxl/sdk";
4
- import { w as O, b as S, B as b, at as s, au as l } from "./DKLitAhDj5Ibh2cc.js";
4
+ import { w as O, v as S, B as g, at as s, au as l } from "./2-xJlw77WsCoyz09.js";
5
5
  /**
6
- * @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.4.9
6
+ * @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.4.10
7
7
  *
8
8
  * (C) 2025-present SheetXL Inc. & Michael T. Ford
9
9
  * License: The license can be found at https://www.sheetxl.com/license.
10
10
  */
11
- const D = ({ range: p, options: c, cell: u, onDone: d, ...h }) => {
12
- const [t, o] = C(c ?? a.DefaultRangeOptions), v = O((e) => {
11
+ const D = ({ range: p, options: c, cell: u, onDone: d, ...v }) => {
12
+ const [t, o] = C(c ?? a.DefaultRangeOptions), h = O((e) => {
13
13
  let i = null;
14
14
  e === "Sort" && (i = { ...c, options: t }), d?.(i);
15
15
  }, [t, d, c]);
16
- return n(S, { title: "Sort", options: ["Sort", "Cancel"], onDone: v, ...h, children: m(b, { sx: { display: "flex", flexDirection: "column" }, children: [n(s, { control: n(l, { checked: !t.reverse, onChange: () => o((e) => ({ ...e, reverse: !e.reverse })) }), label: "Is Ascending", labelPlacement: "end" }), n(s, { control: n(l, { checked: t.hasHeader, onChange: () => o((e) => ({ ...e, hasHeader: !e.hasHeader })) }), label: "Has Header", labelPlacement: "end" }), n(s, { control: n(l, { checked: t.collatorOptions?.sensitivity === a.CaseSensitiveOptions.sensitivity, onChange: () => o((e) => ({ ...e, collatorOptions: t.collatorOptions?.sensitivity === a.CaseSensitiveOptions.sensitivity ? a.CaseInsensitiveOptions : a.CaseSensitiveOptions })) }), label: "Case Sensitive", labelPlacement: "end" }), n(s, { control: n(l, { checked: t.orientation === r.Orientation.Row, onChange: () => o((e) => {
16
+ return n(S, { title: "Sort", options: ["Sort", "Cancel"], onDone: h, ...v, children: m(g, { sx: { display: "flex", flexDirection: "column" }, children: [n(s, { control: n(l, { checked: !t.reverse, onChange: () => o((e) => ({ ...e, reverse: !e.reverse })) }), label: "Is Ascending", labelPlacement: "end" }), n(s, { control: n(l, { checked: t.hasHeader, onChange: () => o((e) => ({ ...e, hasHeader: !e.hasHeader })) }), label: "Has Header", labelPlacement: "end" }), n(s, { control: n(l, { checked: t.collatorOptions?.sensitivity === a.CaseSensitiveOptions.sensitivity, onChange: () => o((e) => ({ ...e, collatorOptions: t.collatorOptions?.sensitivity === a.CaseSensitiveOptions.sensitivity ? a.CaseInsensitiveOptions : a.CaseSensitiveOptions })) }), label: "Case Sensitive", labelPlacement: "end" }), n(s, { control: n(l, { checked: t.orientation === r.Orientation.Row, onChange: () => o((e) => {
17
17
  const i = e.orientation === r.Orientation.Row ? r.Orientation.Column : r.Orientation.Row;
18
18
  return { ...p.getDefaultSortCriteria(i, u).options, includeHidden: e.includeHidden, reverse: e.reverse, orientation: i };
19
19
  }) }), label: "Row Sort", labelPlacement: "end" }), n(s, { control: n(l, { checked: t.includeHidden, onChange: () => o((e) => ({ ...e, includeHidden: !e.includeHidden })) }), label: "Include Hidden", labelPlacement: "end" })] }) });
@@ -1,20 +1,20 @@
1
1
  import { jsx as o, jsxs as D } from "react/jsx-runtime";
2
2
  import { memo as N, useState as i, useCallback as T } from "react";
3
- import { w as k, b as j, B as v, aP as y, at as B, au as F } from "./DFQvqk5r1uf_z0h_.mjs";
3
+ import { w as k, v, B as j, aP as y, at as B, au as F } from "./2-xJlw77WsCoyz09.js";
4
4
  /**
5
- * @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.4.9
5
+ * @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.4.10
6
6
  *
7
7
  * (C) 2025-present SheetXL Inc. & Michael T. Ford
8
8
  * License: The license can be found at https://www.sheetxl.com/license.
9
9
  */
10
10
  const H = ["Ok", "Cancel"], A = N((u) => {
11
- const { tableOptions: e, context: p, onOption: c, onValidateOption: I, onDone: r, options: d = H, defaultOption: t = d?.[0], cancelOption: s = "Cancel", sx: m, ...b } = u, [h, x] = i(!1), [n, O] = i(() => e?.hasHeader ?? !1), [l, f] = i(() => e?.ranges ?? null), C = k((a) => {
11
+ const { tableOptions: e, context: p, onOption: c, onValidateOption: I, onDone: r, options: d = H, defaultOption: t = d?.[0], cancelOption: s = "Cancel", sx: m, ...h } = u, [x, O] = i(!1), [n, b] = i(() => e?.hasHeader ?? !1), [l, f] = i(() => e?.ranges ?? null), C = k((a) => {
12
12
  const g = { ...e, hasHeader: n, ranges: l };
13
13
  c?.(a, a === s, a === t), r?.({ option: a, tableOptions: g });
14
14
  }, [r, c, t, s, n, l, e]), w = T(async (a, g) => null, []);
15
- return o(j, { title: "Insert Table", options: d, onDone: C, onValidateOption: w, defaultOption: t, cancelOption: s, autoFocusSel: ".range-input input", sx: { width: "360px", ...m }, ...b, children: D(v, { sx: { paddingTop: (a) => a.spacing(1), paddingBottom: (a) => a.spacing(0), rowGap: (a) => a.spacing(1), display: "flex", flexDirection: "column" }, children: [o(y, { formName: "range", value: l, onChangeInput: (a) => f(a), resolvedAddress: p.getNames().getRanges.bind(p.getNames()), onFocus: (a) => {
16
- h || a.target?.select(), x(!0);
17
- } }), o(B, { control: o(F, { checked: n, onChange: () => O(!n) }), label: "Table has headers", labelPlacement: "end" })] }) });
15
+ return o(v, { title: "Insert Table", options: d, onDone: C, onValidateOption: w, defaultOption: t, cancelOption: s, autoFocusSel: ".range-input input", sx: { width: "360px", ...m }, ...h, children: D(j, { sx: { paddingTop: (a) => a.spacing(1), paddingBottom: (a) => a.spacing(0), rowGap: (a) => a.spacing(1), display: "flex", flexDirection: "column" }, children: [o(y, { formName: "range", value: l, onChangeInput: (a) => f(a), resolvedAddress: p.getNames().getRanges.bind(p.getNames()), onFocus: (a) => {
16
+ x || a.target?.select(), O(!0);
17
+ } }), o(B, { control: o(F, { checked: n, onChange: () => b(!n) }), label: "Table has headers", labelPlacement: "end" })] }) });
18
18
  });
19
19
  export {
20
20
  A as TableNewDialog,
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.4.9
2
+ * @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.4.10
3
3
  *
4
4
  * (C) 2025-present SheetXL Inc. & Michael T. Ford
5
5
  * License: The license can be found at https://www.sheetxl.com/license.
@@ -1,41 +1,41 @@
1
1
  import { jsx as i } from "react/jsx-runtime";
2
2
  import { memo as z, forwardRef as E, useState as s } from "react";
3
- import { k as t, i as G, b as K, B as R, F as W, T as Y, a as x, G as q, Y as y } from "./DFQvqk5r1uf_z0h_.mjs";
3
+ import { k as n, i as G, v as K, B as R, F as W, T as q, a as x, G as A, t as y } from "./2-xJlw77WsCoyz09.js";
4
4
  /**
5
- * @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.4.9
5
+ * @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.4.10
6
6
  *
7
7
  * (C) 2025-present SheetXL Inc. & Michael T. Ford
8
8
  * License: The license can be found at https://www.sheetxl.com/license.
9
9
  */
10
- const A = ["Input"], X = z(E((w, T) => {
11
- const { initialValue: F = "", onOption: I, onValidateOption: r, onInputOption: l, onValidateInputOption: p, onDone: u, inputProps: c, inputLabel: P, inputType: b, inputPlaceHolder: k, options: d = A, autoFocusSel: v = ".autoFocus", cancelOption: g, defaultOption: m = d?.[0], ...C } = w, [V, B] = s(!1), [o, D] = s(F), [S, H] = s(""), [L, M] = s(!0), e = t(async (a, n) => {
10
+ const J = ["Input"], Y = z(E((w, T) => {
11
+ const { initialValue: F = "", onOption: v, onValidateOption: r, onInputOption: l, onValidateInputOption: p, onDone: u, inputProps: c, inputLabel: I, inputType: P, inputPlaceHolder: k, options: d = J, autoFocusSel: C = ".autoFocus", cancelOption: g, defaultOption: m = d?.[0], ...b } = w, [V, B] = s(!1), [o, D] = s(F), [S, H] = s(""), [L, M] = s(!0), e = n(async (a, t) => {
12
12
  if (!p) return !0;
13
- const h = await p?.(a, n);
13
+ const h = await p?.(a, t);
14
14
  H(h?.message ?? "");
15
15
  const O = h?.valid ?? !0;
16
16
  return M(O), O;
17
- }, [p]), f = t(async (a) => {
17
+ }, [p]), f = n(async (a) => {
18
18
  l?.(o, a);
19
- }, [o, l, u, I, g, m]), N = t(async (a) => {
19
+ }, [o, l, u, v, g, m]), N = n(async (a) => {
20
20
  a.keyCode === G.Enter && await e?.(o, null);
21
- }, [o, f]), $ = t((a) => {
21
+ }, [o, f]), $ = n((a) => {
22
22
  D(a.target.value), e?.(a.target.value, null);
23
- }, [r]), j = t(async (a) => {
24
- let n = await e(o, a);
23
+ }, [r]), j = n(async (a) => {
24
+ let t = await e(o, a);
25
25
  try {
26
- n !== !1 && (n = await e(o, a));
26
+ t !== !1 && (t = await e(o, a));
27
27
  } catch {
28
28
  }
29
- return n ?? !0;
29
+ return t ?? !0;
30
30
  }, [o, r]);
31
- return i(K, { options: d, onDone: u, onOption: (a, n) => {
32
- n || f(a);
33
- }, onValidateOption: j, cancelOption: g, defaultOption: m, autoFocusSel: v, ref: T, ...C, children: i(R, { sx: { paddingTop: (a) => a.spacing(1), paddingBottom: (a) => a.spacing(0) }, children: i(W, { sx: { paddingTop: (a) => a.spacing(1.5), minWidth: 135, width: "100%" }, size: "small", children: i(Y, { onFocus: (a) => {
31
+ return i(K, { options: d, onDone: u, onOption: (a, t) => {
32
+ t || f(a);
33
+ }, onValidateOption: j, cancelOption: g, defaultOption: m, autoFocusSel: C, ref: T, ...b, children: i(R, { sx: { paddingTop: (a) => a.spacing(1), paddingBottom: (a) => a.spacing(0) }, children: i(W, { sx: { paddingTop: (a) => a.spacing(1.5), minWidth: 135, width: "100%" }, size: "small", children: i(q, { onFocus: (a) => {
34
34
  V || a.target?.select(), B(!0);
35
- }, type: b, label: P, helperText: S || " ", sx: { width: "100%", "& .MuiFormHelperText-root": { marginTop: (a) => a.spacing(0.5), color: L ? void 0 : "error.main" } }, InputLabelProps: { shrink: !0 }, InputProps: { inputProps: { placeholder: k, spellCheck: !1, autoComplete: "off", ...c, className: q("autoFocus", c?.className), sx: { paddingTop: (a) => a.spacing(1.25), paddingBottom: (a) => a.spacing(0.75), backgroundImage: `linear-gradient(${x("#fff", y(5))}, ${x("#fff", y(5))})` } } }, value: o, onChange: $, onKeyDown: N, onContextMenu: (a) => {
35
+ }, type: P, label: I, helperText: S || " ", sx: { width: "100%", "& .MuiFormHelperText-root": { marginTop: (a) => a.spacing(0.5), color: L ? void 0 : "error.main" } }, InputLabelProps: { shrink: !0 }, InputProps: { inputProps: { placeholder: k, spellCheck: !1, autoComplete: "off", ...c, className: A("autoFocus", c?.className), sx: { paddingTop: (a) => a.spacing(1.25), paddingBottom: (a) => a.spacing(0.75), backgroundImage: `linear-gradient(${x("#fff", y(5))}, ${x("#fff", y(5))})` } } }, value: o, onChange: $, onKeyDown: N, onContextMenu: (a) => {
36
36
  a.stopPropagation();
37
37
  } }) }) }) });
38
38
  }));
39
39
  export {
40
- X as default
40
+ Y as default
41
41
  };
package/cdn/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.4.9
2
+ * @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.4.10
3
3
  *
4
4
  * (C) 2025-present SheetXL Inc. & Michael T. Ford
5
5
  * License: The license can be found at https://www.sheetxl.com/license.
@@ -115,7 +115,7 @@ let c;
115
115
  const C = async (e) => c || (c = await (async (n, t) => {
116
116
  try {
117
117
  if (t?.selector && k(t?.selector, t?.loading), !n) {
118
- const { resolveDependencies: r } = await import("./assets/TOkIJFYhNg78FdJa.js");
118
+ const { resolveDependencies: r } = await import("./assets/DhyAyTCDkMBf392P.js");
119
119
  n = await r(t?.dependencies);
120
120
  }
121
121
  t?.licenseKey && await n.StudioMUI.LicenseManager.setLicenseKey(t.licenseKey), t?.selector && h(t?.selector);
package/cdn/loader.js CHANGED
@@ -1,5 +1,5 @@
1
1
  (function(e){typeof define=="function"&&define.amd?define(e):e()})(function(){"use strict";/**
2
- * @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.4.9
2
+ * @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.4.10
3
3
  *
4
4
  * (C) 2025-present SheetXL Inc. & Michael T. Ford
5
5
  * License: The license can be found at https://www.sheetxl.com/license.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@sheetxl/studio-vanilla",
3
3
  "description": "SheetXL Studio - Vanilla entry point for integrating SheetXL UI.",
4
- "version": "0.4.9",
4
+ "version": "0.4.10",
5
5
  "license": "SEE LICENSE IN <LICENSE>",
6
6
  "type": "module",
7
7
  "main": "./browser/esm/index.mjs",
@@ -41,12 +41,12 @@
41
41
  "@mui/styled-engine": "^6.5.0",
42
42
  "@mui/system": "^6.5.0",
43
43
  "@mui/utils": "^6.4.9",
44
- "@sheetxl/studio-mui": "^0.4.9",
44
+ "@sheetxl/studio-mui": "^0.4.10",
45
45
  "csstype": "^3.1.3",
46
46
  "http-server": "^14.1.1"
47
47
  },
48
48
  "peerDependencies": {
49
- "@sheetxl/sdk": "^0.4.9",
49
+ "@sheetxl/sdk": "^0.4.10",
50
50
  "react": "^19.1.0",
51
51
  "react-dom": "^19.1.0"
52
52
  }
package/types/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { IWorkbookElement as IWorkbookElement_2 } from '@sheetxl/studio-mui';
2
1
  import { sheetxlStudioMui } from '@sheetxl/studio-mui';
2
+ import { StudioElement as StudioElement_2 } from '@sheetxl/studio-mui';
3
3
  import { StudioProps as StudioProps_2 } from '@sheetxl/studio-mui';
4
4
 
5
5
  /**
@@ -75,7 +75,7 @@ export declare interface ISheetXL {
75
75
  * @param props Optional properties to pass to the SheetXL React component.
76
76
  * @returns A promise that resolves to a function that, when called, will detach the SheetXL React component from the DOM element.
77
77
  */
78
- attachStudio(selector: string | InitializationOptions, props?: StudioProps): Promise<IWorkbookElement & Attached<StudioProps>>;
78
+ attachStudio(selector: string | InitializationOptions, props?: StudioProps): Promise<StudioElement & Attached<StudioProps>>;
79
79
  /**
80
80
  * Initializes the SheetXL runtime with the provided options.
81
81
  *
@@ -88,13 +88,6 @@ export declare interface ISheetXL {
88
88
  initialize(options: InitializationOptions): Promise<void>;
89
89
  }
90
90
 
91
- /**
92
- * Reference to IWorkbookElement.
93
- *
94
- * @link [IWorkbookElement](../interfaces/_sheetxl_studio-mui.IWorkbookElement.html)
95
- */
96
- export declare type IWorkbookElement = IWorkbookElement_2;
97
-
98
91
  /**
99
92
  * Configuration for panels that appear during loading or error states.
100
93
  */
@@ -128,6 +121,13 @@ export declare interface PanelConfig {
128
121
  declare const SheetXL: ISheetXL;
129
122
  export default SheetXL;
130
123
 
124
+ /**
125
+ * Reference to IWorkbookElement.
126
+ *
127
+ * @link [IWorkbookElement](../interfaces/_sheetxl_studio-mui.IWorkbookElement.html)
128
+ */
129
+ export declare type StudioElement = StudioElement_2;
130
+
131
131
  /**
132
132
  * Reference to StudioMUI module.
133
133
  *
@@ -1,6 +0,0 @@
1
- "use strict";/**
2
- * @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.4.9
3
- *
4
- * (C) 2025-present SheetXL Inc. & Michael T. Ford
5
- * License: The license can be found at https://www.sheetxl.com/license.
6
- */Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const p=require("react/jsx-runtime"),a=require("react"),n=require("./CalnqtYH48_x2rcI.cjs"),L=["Input"],N=a.memo(a.forwardRef((y,O)=>{const{initialValue:b="",onOption:k,onValidateOption:l,onInputOption:s,onValidateInputOption:r,onDone:u,inputProps:c,inputLabel:T,inputType:w,inputPlaceHolder:F,options:d=L,autoFocusSel:S=".autoFocus",cancelOption:g,defaultOption:f=d?.[0],...P}=y,[v,C]=a.useState(!1),[e,I]=a.useState(b),[j,V]=a.useState(""),[q,B]=a.useState(!0),i=n.kn(async(t,o)=>{if(!r)return!0;const h=await r?.(t,o);V(h?.message??"");const x=h?.valid??!0;return B(x),x},[r]),m=n.kn(async t=>{s?.(e,t)},[e,s,u,k,g,f]),D=n.kn(async t=>{t.keyCode===n.ir.Enter&&await i?.(e,null)},[e,m]),M=n.kn(t=>{I(t.target.value),i?.(t.target.value,null)},[l]),H=n.kn(async t=>{let o=await i(e,t);try{o!==!1&&(o=await i(e,t))}catch{}return o??!0},[e,l]);return p.jsx(n.b4,{options:d,onDone:u,onOption:(t,o)=>{o||m(t)},onValidateOption:H,cancelOption:g,defaultOption:f,autoFocusSel:S,ref:O,...P,children:p.jsx(n.Box,{sx:{paddingTop:t=>t.spacing(1),paddingBottom:t=>t.spacing(0)},children:p.jsx(n.FormControl,{sx:{paddingTop:t=>t.spacing(1.5),minWidth:135,width:"100%"},size:"small",children:p.jsx(n.TextField,{onFocus:t=>{v||t.target?.select(),C(!0)},type:w,label:T,helperText:j||" ",sx:{width:"100%","& .MuiFormHelperText-root":{marginTop:t=>t.spacing(.5),color:q?void 0:"error.main"}},InputLabelProps:{shrink:!0},InputProps:{inputProps:{placeholder:F,spellCheck:!1,autoComplete:"off",...c,className:n.Go("autoFocus",c?.className),sx:{paddingTop:t=>t.spacing(1.25),paddingBottom:t=>t.spacing(.75),backgroundImage:`linear-gradient(${n.alpha("#fff",n.Yb(5))}, ${n.alpha("#fff",n.Yb(5))})`}}},value:e,onChange:M,onKeyDown:D,onContextMenu:t=>{t.stopPropagation()}})})})})}));exports.default=N;