@sheetxl/studio-vanilla 0.4.7 → 0.4.9

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 (92) hide show
  1. package/README.md +3 -3
  2. package/browser/cjs/{DPgVQdCYWI3fGYJ2.cjs → 3GhIDU8JK1oBJrCA.cjs} +2 -2
  3. package/browser/cjs/{D5I2M8yOTfapq6d7.cjs → 5hPVyVAXmITQCRAG.cjs} +2 -2
  4. package/browser/cjs/{C14PMFhYpGUhrvq1.cjs → 7PlrLPQx1lct0mdN.cjs} +1 -1
  5. package/browser/cjs/B4K6KuggSdXj-V8g.cjs +6 -0
  6. package/browser/cjs/B5Qc3gXLEhscRsFm.cjs +12 -0
  7. package/browser/cjs/{Bgl5W-fCpnnnO3_F.cjs → B7eW1GQgFvphlLGY.cjs} +2 -2
  8. package/browser/cjs/{B0pcLInszgzhrjui.cjs → BQPFxJ77OaD_sBIX.cjs} +2 -2
  9. package/browser/cjs/{BC9xtBySc8rix4-F.cjs → Ba3O1f0NYbzEwNAd.cjs} +1 -1
  10. package/browser/cjs/{BC5f5sl2pjp8FYIk.cjs → BoojmbbjqixMVu2H.cjs} +2 -2
  11. package/browser/cjs/{D8WkJStmUKY23vEC.cjs → CSGVl8EBCRhxcFm1.cjs} +1 -1
  12. package/browser/cjs/CalnqtYH48_x2rcI.cjs +301 -0
  13. package/browser/cjs/{Clp5qh0fApIxsE35.cjs → CjDsO4sQWUHbIX1N.cjs} +2 -2
  14. package/browser/cjs/{DE5MhliNUlcqzd9C.cjs → CsCaFaiySArzEfdH.cjs} +3 -3
  15. package/browser/cjs/{C73dxZSAw05vqEtJ.cjs → D6AUUY9awlTRjjqd.cjs} +1 -1
  16. package/browser/cjs/{DDFDUxH5Mew5rcdT.cjs → D8lN5Mv3J4SwSpLP.cjs} +1 -1
  17. package/browser/cjs/{HCih5BN1MZGUuqGG.cjs → D9RQ5oYv7U38wSI7.cjs} +6 -6
  18. package/browser/cjs/{CQAkk0gbl342HFs-.cjs → DCd2rPNFkSHDaRcM.cjs} +1 -1
  19. package/browser/cjs/DGQrcBvjSGwwoZEv.cjs +6 -0
  20. package/browser/cjs/{DNQqhDlfagjGC2sO.cjs → DIXyMJKaeCGuWxjZ.cjs} +2 -2
  21. package/browser/cjs/{BKUcozo2wEv2ay2w.cjs → Dmw7xaaV85s72QZe.cjs} +1 -1
  22. package/browser/cjs/{DGlLxziqSNTW0c6v.cjs → DzCXPcqV1oKbCcLO.cjs} +1 -1
  23. package/browser/cjs/{BBuQH_geF9Xg5HPn.cjs → EoaX6dPoS-Mb-ITO.cjs} +4 -4
  24. package/browser/cjs/Y6OgkWqbIB761o5q.cjs +6 -0
  25. package/browser/cjs/{DUrNYTSMA5KQTG77.cjs → gbABnN2zW1kHo3_I.cjs} +8 -8
  26. package/browser/cjs/index.cjs +2 -2
  27. package/browser/cjs/{DyQffD3gRWH5-nOp.cjs → kfV5Cli9oE9IsCtx.cjs} +2 -2
  28. package/browser/cjs/{00LGtBNvHHqHMD_7.cjs → nURb18uhj9rScsHa.cjs} +2 -2
  29. package/browser/esm/{t16pmig4Yv-yOK3J.mjs → 2NQDbhor1Nuzndgq.mjs} +1 -1
  30. package/browser/esm/{IhAvisOcXUTXM4fs.mjs → 4aC35Q2XPOwifBRR.mjs} +1 -1
  31. package/browser/esm/{fLUOP3GBZp9qFVpK.mjs → 5zFDFBAgT-aPgQQ0.mjs} +1 -1
  32. package/browser/esm/{DQj7TIf3hkBsvgpu.mjs → B3I_TrFN_pAK5Mdh.mjs} +2 -2
  33. package/{cdn/assets/CSnM9G1CZ81wivjo.js → browser/esm/BD9GKsR-k4aEK2tx.mjs} +1 -1
  34. package/browser/esm/{DCLOetlYWQ4f6912.mjs → BQpsMTJvguy6LMIq.mjs} +5 -5
  35. package/browser/esm/{BssMWXVsjFZUIbK_.mjs → BfCWogOnq8R-c3dD.mjs} +2 -2
  36. package/browser/esm/BkGQPKMRPIVUVTLO.mjs +944 -0
  37. package/{cdn/assets/CzeybhBUMRs64-Mp.js → browser/esm/C81J50HcankGTOIj.mjs} +1 -1
  38. package/browser/esm/{CxesFvTfE_FHHeOa.mjs → CO_s27056nua6qzN.mjs} +1 -1
  39. package/browser/esm/{DnEhhjrb_iK5ugui.mjs → CPEjlDUTxckVS1rp.mjs} +2 -2
  40. package/browser/esm/{DE0B_sDQJ2uyFacb.mjs → CY7astxzrfb7uZqy.mjs} +26 -26
  41. package/{cdn/assets/CGL2dNgGZEziA1cG.js → browser/esm/CZVzRhflTpwAAl1o.mjs} +8 -8
  42. package/browser/esm/{BepIgOjpel6ND31E.mjs → CaWZXQsmKl4hTNq5.mjs} +16 -16
  43. package/{cdn/assets/CHsVgElx78EEmCPY.js → browser/esm/CxcLNXXaxyFyUzyb.mjs} +1 -1
  44. package/{cdn/assets/Cjl-eP68w6LXe0zR.js → browser/esm/D0icxW0WVNoeVRLH.mjs} +5 -5
  45. package/browser/esm/{f7jo5w0h4-vNZtjZ.mjs → DFQvqk5r1uf_z0h_.mjs} +10886 -10877
  46. package/{cdn/assets/CNdoHnLQKWWUIXFN.js → browser/esm/DRL5s4S0fIXi1aU7.mjs} +2 -2
  47. package/browser/esm/{B6OcmPVBCjTZiEO8.mjs → DRmeb1VC4YCzKKWd.mjs} +1 -1
  48. package/browser/esm/{D03_7nbUXeSyElQe.mjs → DTwhl4v5YnZrUSgI.mjs} +5 -5
  49. package/browser/esm/{C8PrD3vZULKFp7HL.mjs → DmpPAs6w-XNWGTIN.mjs} +3 -3
  50. package/{cdn/assets/D7ubLFCJK5RzTJOF.js → browser/esm/Dx-GS3XDBkRaMNG-.mjs} +20 -20
  51. package/browser/esm/{CrnqRK0Y_R59nkb0.mjs → V5CA7xqGOB7-Qx4Y.mjs} +6 -6
  52. package/browser/esm/{DJBqN2bozSAMAOUl.mjs → gsfI5CGYr7LCQxRx.mjs} +2 -2
  53. package/browser/esm/index.mjs +2 -2
  54. package/browser/esm/{bMPbHealpRV0cNsU.mjs → tOBqasyBAnd7O4qE.mjs} +5 -5
  55. package/browser/esm/{CdbRlOwSBEqFzw-Q.mjs → tPrnEcHW_czJDZOT.mjs} +8 -8
  56. package/cdn/assets/{t16pmig4Yv-yOK3J.js → 2NQDbhor1Nuzndgq.js} +1 -1
  57. package/cdn/assets/{IhAvisOcXUTXM4fs.js → 4aC35Q2XPOwifBRR.js} +1 -1
  58. package/cdn/assets/{fLUOP3GBZp9qFVpK.js → 5zFDFBAgT-aPgQQ0.js} +1 -1
  59. package/cdn/assets/{B-7gpSVkQWekyOlk.js → B0w_moB3pDJd-a6V.js} +5 -5
  60. package/{browser/esm/CSnM9G1CZ81wivjo.mjs → cdn/assets/BD9GKsR-k4aEK2tx.js} +1 -1
  61. package/{browser/esm/C3vvXeb_u4RQddV1.mjs → cdn/assets/BJVOhUH_XL03H6ZD.js} +8 -8
  62. package/cdn/assets/{BWyjsqZ8W7LRq-2H.js → BWJOkXXB6Tr-jYUS.js} +16 -16
  63. package/cdn/assets/{DPdbTtHJ9qzLqsDN.js → BapFqJyAb3cblvJM.js} +2 -2
  64. package/cdn/assets/{CRv8MUg-_zmoKFIt.js → Bg88bG-JM9EHeyYX.js} +2 -2
  65. package/{browser/esm/CzeybhBUMRs64-Mp.mjs → cdn/assets/C81J50HcankGTOIj.js} +1 -1
  66. package/cdn/assets/{CxesFvTfE_FHHeOa.js → CO_s27056nua6qzN.js} +1 -1
  67. package/cdn/assets/{BFDNPYBEj2T1cP38.js → CXa9u-7w14dyPYxk.js} +3 -3
  68. package/cdn/assets/{ChAbZK53mfolDCTD.js → CkcETdiKdTsZAzma.js} +6 -6
  69. package/{browser/esm/CHsVgElx78EEmCPY.mjs → cdn/assets/CxcLNXXaxyFyUzyb.js} +1 -1
  70. package/cdn/assets/{DucOHAWR0Drvzaz2.js → D0PaU6F-TNaTWj-a.js} +5 -5
  71. package/cdn/assets/{BKMHTFN6LTvRZnlS.js → D4hoypx6_sZbvrC_.js} +2 -2
  72. package/cdn/assets/{BPKaeP61qs19hdJx.js → D5exf1RvCqvUoJ3X.js} +26 -26
  73. package/cdn/assets/{CUqr4I0B5RzMvyfH.js → DKLitAhDj5Ibh2cc.js} +11896 -11887
  74. package/{browser/esm/CNdoHnLQKWWUIXFN.mjs → cdn/assets/DRL5s4S0fIXi1aU7.js} +2 -2
  75. package/cdn/assets/{B6OcmPVBCjTZiEO8.js → DRmeb1VC4YCzKKWd.js} +1 -1
  76. package/{browser/esm/CnL3YzjxBxFK7qfL.mjs → cdn/assets/DYkBvlMlZjOASUJs.js} +5 -5
  77. package/{browser/esm/DfczJdsv--tsazCR.mjs → cdn/assets/ON5--a75QdEU99y_.js} +20 -20
  78. package/cdn/assets/{CB496hBmWELULf2f.js → PIZDjyqIbvmHXs1T.js} +5 -5
  79. package/cdn/assets/{CvfZjHPPpLdHBSRa.js → TOkIJFYhNg78FdJa.js} +2 -2
  80. package/cdn/assets/{D8lNg-ZFq3SVt0qa.js → b9dlFmoFz8tJhV0Z.js} +8 -8
  81. package/cdn/assets/d1PG-QPA1GcQ_RuH.js +944 -0
  82. package/cdn/index.js +24 -24
  83. package/cdn/loader.js +2 -2
  84. package/package.json +3 -3
  85. package/types/index.d.ts +8 -8
  86. package/browser/cjs/BO0CySmcqi-pkV4p.cjs +0 -6
  87. package/browser/cjs/BoG6Gi-uqIbSJdRv.cjs +0 -12
  88. package/browser/cjs/DD6f8EPYnuPb41GO.cjs +0 -6
  89. package/browser/cjs/DsuUTTVqL23hXXxq.cjs +0 -6
  90. package/browser/cjs/Dva96jeug6x2xYZm.cjs +0 -301
  91. package/browser/esm/6w21A0XUkGBQu8-3.mjs +0 -940
  92. package/cdn/assets/CHZP9CrMHXri-Ghe.js +0 -940
@@ -1,6 +1,6 @@
1
1
  import { Workbook as J } from "@sheetxl/sdk";
2
2
  /**
3
- * @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.4.7
3
+ * @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.4.9
4
4
  *
5
5
  * (C) 2025-present SheetXL Inc. & Michael T. Ford
6
6
  * License: The license can be found at https://www.sheetxl.com/license.
@@ -75,7 +75,7 @@ const k = async (w, l) => {
75
75
  return (await new Response(o).blob()).arrayBuffer();
76
76
  }(u));
77
77
  let b = new TextDecoder().decode(u);
78
- const g = JSON.parse(b), p = { ...l?.constructorOptions ?? {}, json: g };
78
+ const g = JSON.parse(b), p = { ...l?.createWorkbookOptions ?? {}, json: g };
79
79
  return new J(p);
80
80
  };
81
81
  export {
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.4.7
2
+ * @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.4.9
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,17 +1,17 @@
1
1
  import { jsx as a, jsxs as s } from "react/jsx-runtime";
2
2
  import { memo as O, useState as r, useRef as M, useReducer as A, useMemo as E } from "react";
3
- import { aL as W, V, aM as k, aN as Q, v as x, aA as q, aB as G, B as n, aO as J, aP as K, ak as f, aQ as U, aR as X, ag as y, ah as b, ai as w, aS as S } from "./f7jo5w0h4-vNZtjZ.mjs";
3
+ import { aL as Q, Q as W, aM as k, aN as V, w as x, aA as q, aB as G, B as n, aO as J, aP as K, ak as f, aQ as U, aR as X, ag as y, ah as b, ai as w, aS as S } from "./DKLitAhDj5Ibh2cc.js";
4
4
  /**
5
- * @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.4.7
5
+ * @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.4.9
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 te = O((C) => {
11
- const { title: v, onHide: N, autoFocusSel: R = ".range-input input", context: T, notifier: l = W, command: c, commands: d, ...D } = C, [F, g] = r(!1), [m, p] = r(!1), h = M(null), [Y, B] = A((e) => e + 1, 0), [H, { width: Z }] = V();
11
+ const { title: N, onHide: R, autoFocusSel: v = ".range-input input", context: T, notifier: l = Q, command: c, commands: d, ...D } = C, [F, g] = r(!1), [m, p] = r(!1), h = M(null), [Y, B] = A((e) => e + 1, 0), [H, { width: Z }] = W();
12
12
  k(c);
13
13
  const o = T ?? c.context(), t = o.table(), [P, I] = r(() => t ? o.getNames().getRanges(t.getRange()) : null), j = E(() => t?.getName() ?? "", [t]);
14
- Q(o.table(), { onAnchorCoordsChange(e) {
14
+ V(o.table(), { onAnchorCoordsChange(e) {
15
15
  I(o.getNames().getRanges(e.getRange()));
16
16
  }, onProtectedChange(e) {
17
17
  B();
@@ -22,7 +22,7 @@ const te = O((C) => {
22
22
  o?.table().resize(e.at(0));
23
23
  }, [o]);
24
24
  let u = null;
25
- return o.table() || (u = a("div", { style: { position: "absolute", top: "0", left: "0", width: "100%", height: "100%", opacity: 1, display: "flex", alignItems: "center", justifyItems: "center", justifyContent: "center", boxSizing: "border-box" }, children: a("div", { children: "No table selected" }) })), a(q, { title: v ?? "Table Details", initialPosition: { y: "35" }, autoFocusSel: R, refWindow: h, onHide: N, onFocus: () => g(!0), onBlur: (e) => {
25
+ return o.table() || (u = a("div", { style: { position: "absolute", top: "0", left: "0", width: "100%", height: "100%", opacity: 1, display: "flex", alignItems: "center", justifyItems: "center", justifyContent: "center", boxSizing: "border-box" }, children: a("div", { children: "No table selected" }) })), a(q, { ref: h, title: N ?? "Table Details", initialPosition: { y: "35" }, autoFocusSel: v, onHide: R, onFocus: () => g(!0), onBlur: (e) => {
26
26
  h?.current?.contains(e.relatedTarget) || g(!1);
27
27
  }, PaperProps: { elevation: F ? 3 : 1 }, ...D, children: s(G, { dividers: !0, ref: H, sx: { display: "flex", flexDirection: "column", position: "relative", paddingLeft: (e) => e.spacing(1.5), paddingRight: (e) => e.spacing(1.5) }, children: [s(n, { sx: { display: "flex", flexDirection: "column", transition: "opacity 60ms", opacity: o.table() ? 1 : 0 }, children: [a(n, { sx: { display: "flex", flexDirection: "row", gap: (e) => e.spacing(1) }, children: a(n, { sx: { display: "flex", flexDirection: "column", maxWidth: "100%", boxSizing: "border-box", paddingLeft: (e) => e.spacing(2), paddingRight: (e) => e.spacing(2) }, children: s(n, { sx: { display: "flex", flexDirection: "column", alignItems: "center" }, children: [a(J, { formName: "name", defaultInput: j, value: t?.getName() ?? "No table", onChangeInput: L, onValidate: (e) => {
28
28
  t && t.getName().toLowerCase() === e.toLowerCase() || o?.getNames().validateName(e);
@@ -1,10 +1,10 @@
1
1
  import { jsx as i, jsxs as p } from "react/jsx-runtime";
2
2
  import { memo as oe, useRef as C, useState as b, useEffect as L, useLayoutEffect as pe, useMemo as de } from "react";
3
3
  import { ICell as c, IRange as R } from "@sheetxl/sdk";
4
- import { t as D, v as H, av as ue, V as fe, aA as ge, aB as me, B as O, aC as m, ah as x, aD as xe, a8 as y, aE as he, T as _, a as k, aF as Oe, aG as Ce, aH as ye, aI as be, ay as w, aJ as ve, aK as Te, ak as Re, az as ke, F as we, aw as Ee, ax as Fe } from "./f7jo5w0h4-vNZtjZ.mjs";
5
- import { C as ee } from "./6w21A0XUkGBQu8-3.mjs";
4
+ import { v as D, w as H, av as ue, Q as fe, aA as ge, aB as me, B as O, aC as m, ah as x, aD as xe, a8 as y, aE as he, T as _, a as k, aF as Oe, aG as Ce, aH as ye, aI as be, ay as w, aJ as ve, aK as Te, ak as Re, az as ke, F as we, aw as Ee, ax as Fe } from "./DKLitAhDj5Ibh2cc.js";
5
+ import { C as ee } from "./d1PG-QPA1GcQ_RuH.js";
6
6
  /**
7
- * @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.4.7
7
+ * @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.4.9
8
8
  *
9
9
  * (C) 2025-present SheetXL Inc. & Michael T. Ford
10
10
  * License: The license can be found at https://www.sheetxl.com/license.
@@ -29,17 +29,17 @@ const Ae = { "By Rows": !0, "By Columns": !1 }, ie = (E, h) => {
29
29
  }, ze = oe((E) => {
30
30
  const { replace: h = !1, findText: r, replaceText: a, findOptions: d, replaceOptions: v, title: A, onHide: K, onFindOrReplace: T, ...P } = E, s = C(null), u = C(null), $ = C(null), W = C(null), j = C(null), N = C(null), G = (e, t) => {
31
31
  t && (t.start(e, { center: !1 }), setTimeout(() => t.stop(e), 180));
32
- }, [J, I] = b(!1), [V, le] = b(!1), [f, B] = b(h), [U, M] = b(!1), [X, q] = b(!1), [o, l] = b({ findText: null, replaceText: null, replace: h, replaceOptions: {}, findOptions: { matchCase: !1, matchEntireCell: !1, useRegex: !1, orientation: R.Orientation.Row, fields: [c.Content.Formulas] }, scope: te.Sheet }), F = H(async (e, t, n, S) => {
32
+ }, [J, I] = b(!1), [B, le] = b(!1), [f, M] = b(h), [Q, V] = b(!1), [U, X] = b(!1), [o, l] = b({ findText: null, replaceText: null, replace: h, replaceOptions: {}, findOptions: { matchCase: !1, matchEntireCell: !1, useRegex: !1, orientation: R.Orientation.Row, fields: [c.Content.Formulas] }, scope: te.Sheet }), F = H(async (e, t, n, S) => {
33
33
  if (!T) return;
34
34
  const g = { ...o };
35
35
  g.replaceOptions = { ...g.replaceOptions }, g.findOptions = { ...g.findOptions }, g.replaceOptions.maxCount = n ? void 0 : 1, g.replace = t, t && o.findOptions.fields?.[0] === c.Content.Values && (g.findOptions.fields = [c.Content.Formulas]), g.findOptions.reverse = !e;
36
36
  const ce = await T({ autoFocus: S, ...g });
37
- M(ce === 0);
37
+ V(ce === 0);
38
38
  }, [o, T]);
39
39
  L(() => {
40
- M(!1);
41
- }, [o, V, f]);
42
- const Q = H((e, t) => {
40
+ V(!1);
41
+ }, [o, B, f]);
42
+ const q = H((e, t) => {
43
43
  if (e.keyCode === ue.Enter) {
44
44
  if (!o.findText) return;
45
45
  let n = !0, S = !1;
@@ -51,8 +51,8 @@ const Ae = { "By Rows": !0, "By Columns": !1 }, ie = (E, h) => {
51
51
  const t = { ...e };
52
52
  t.findText = r && r.length > 0 ? r : e.findText ?? "", I(!0), a !== void 0 && (t.replaceText = a), d && (t.findOptions = { ...t.findOptions, ...d }), t.replaceText || (t.replaceText = ""), t.replaceOptions && (t.replaceOptions = { ...t.replaceOptions }), v && (t.replaceOptions = { ...t.replaceOptions, ...v }), o.findOptions.fields?.[0] || (o.findOptions.fields = [c.Content.Formulas]);
53
53
  const n = !(!v && a === void 0);
54
- return n && B(n), t;
55
- }), X || Y.current?.focus();
54
+ return n && M(n), t;
55
+ }), U || Y.current?.focus();
56
56
  }, [r, a, d, v]), L(() => {
57
57
  f ? (o.findOptions.fields[0], c.Content.Values) : I(!0);
58
58
  }, [f]), L(() => {
@@ -61,10 +61,10 @@ const Ae = { "By Rows": !0, "By Columns": !1 }, ie = (E, h) => {
61
61
  }, { once: !0 });
62
62
  }, [J, o]);
63
63
  const [re, { width: Z }] = fe();
64
- return i(ge, { title: A ?? (f ? "Find & Replace" : "Find"), initialPosition: { y: "35" }, autoFocusSel: ".input", refWindow: Y, onHide: K, onFocus: () => q(!0), onBlur: () => {
65
- q(!1), M(!1);
66
- }, PaperProps: { elevation: X ? 3 : 1 }, ...P, children: p(me, { dividers: !0, ref: re, sx: { display: "flex", flexDirection: "column", paddingLeft: (e) => e.spacing(1.5), paddingRight: (e) => e.spacing(1.5) }, onKeyDown: (e) => {
67
- if (e.key === "h" && e.ctrlKey) B(!0), s.current?.contains(document.activeElement) && u.current?.focus();
64
+ return i(ge, { ref: Y, title: A ?? (f ? "Find & Replace" : "Find"), initialPosition: { y: "35" }, autoFocusSel: ".input", onHide: K, onFocus: () => X(!0), onBlur: () => {
65
+ X(!1), V(!1);
66
+ }, PaperProps: { elevation: U ? 3 : 1 }, ...P, children: p(me, { dividers: !0, ref: re, sx: { display: "flex", flexDirection: "column", paddingLeft: (e) => e.spacing(1.5), paddingRight: (e) => e.spacing(1.5) }, onKeyDown: (e) => {
67
+ if (e.key === "h" && e.ctrlKey) M(!0), s.current?.contains(document.activeElement) && u.current?.focus();
68
68
  else if (e.key === "f" && e.ctrlKey) s.current?.focus();
69
69
  else if (e.key === "c" && e.altKey) l((t) => {
70
70
  const n = { ...t };
@@ -82,10 +82,10 @@ const Ae = { "By Rows": !0, "By Columns": !1 }, ie = (E, h) => {
82
82
  });
83
83
  }
84
84
  e.preventDefault();
85
- }, children: [p(O, { sx: { display: "flex", flexDirection: "row", gap: (e) => e.spacing(1) }, children: [p(O, { sx: { display: "flex", flexDirection: "row", alignItems: "start", gap: (e) => e.spacing(0.25), paddingTop: "3px" }, children: [i(m, { selected: V, onSelectToggle: (e) => {
85
+ }, children: [p(O, { sx: { display: "flex", flexDirection: "row", gap: (e) => e.spacing(1) }, children: [p(O, { sx: { display: "flex", flexDirection: "row", alignItems: "start", gap: (e) => e.spacing(0.25), paddingTop: "3px" }, children: [i(m, { selected: B, onSelectToggle: (e) => {
86
86
  le(e);
87
87
  }, preventFocus: !0, label: "Toggle Additional Options", icon: x(i(xe, {})) }), i(m, { selected: f, onSelectToggle: (e) => {
88
- B(e);
88
+ M(e);
89
89
  }, preventFocus: !0, label: "Toggle Replace", icon: x(i(he, {})), shortcut: { key: f ? "F" : "H", modifiers: [y.Ctrl] } })] }), p(O, { sx: { display: "flex", flexDirection: "column", maxWidth: "100%", boxSizing: "border-box" }, children: [p(O, { sx: { display: "flex", flexDirection: "row", alignItems: "center" }, children: [i(_, { label: "Find", InputLabelProps: { shrink: !0 }, InputProps: { sx: { paddingRight: (e) => e.spacing(1), minWidth: Z > 460 ? "20em" : void 0, backgroundImage: `linear-gradient(${k("#fff", w(5))}, ${k("#fff", w(5))})` }, inputProps: { draggable: !1, ref: s, className: "input", autoFocus: !0, spellCheck: !1, autoComplete: "off", sx: { paddingTop: (e) => e.spacing(1.25), paddingBottom: (e) => e.spacing(0.75) } }, endAdornment: i(Oe, { sx: { transform: "scale(0.75) translateX(16px)" }, position: "end", children: p(O, { sx: { display: "flex", alignItems: "center", flexDirection: "row", gap: "1px" }, children: [i(m, { selected: o.findOptions.matchCase, onSelectToggle: (e) => {
90
90
  l((t) => {
91
91
  const n = { ...t };
@@ -101,12 +101,12 @@ const Ae = { "By Rows": !0, "By Columns": !1 }, ie = (E, h) => {
101
101
  const n = { ...t };
102
102
  return n.findOptions.useRegex = e, n;
103
103
  });
104
- }, label: "Use Regular Expression", shortcut: { key: "R", modifiers: [y.Alt] }, icon: x(i(be, {})) })] }) }) }, sx: { flex: "1 1 100%", marginRight: (e) => e.spacing(1), "& .MuiOutlinedInput-notchedOutline": { borderColor: (e) => U ? `${e.palette.error.main} !important` : void 0 }, "& .MuiInputLabel-outlined": { color: (e) => U ? `${e.palette.error.main} !important` : void 0 } }, value: o.findText ?? "", onChange: (e) => {
104
+ }, label: "Use Regular Expression", shortcut: { key: "R", modifiers: [y.Alt] }, icon: x(i(be, {})) })] }) }) }, sx: { flex: "1 1 100%", marginRight: (e) => e.spacing(1), "& .MuiOutlinedInput-notchedOutline": { borderColor: (e) => Q ? `${e.palette.error.main} !important` : void 0 }, "& .MuiInputLabel-outlined": { color: (e) => Q ? `${e.palette.error.main} !important` : void 0 } }, value: o.findText ?? "", onChange: (e) => {
105
105
  l((t) => {
106
106
  const n = { ...t };
107
107
  return n.findText = e.target.value, n;
108
108
  });
109
- }, onKeyDown: (e) => Q(e, !1), onContextMenu: (e) => {
109
+ }, onKeyDown: (e) => q(e, !1), onContextMenu: (e) => {
110
110
  e.stopPropagation();
111
111
  } }), i(m, { selected: o.findOptions.reverse, onSelectToggle: (e) => {
112
112
  F(!1, !1);
@@ -119,13 +119,13 @@ const Ae = { "By Rows": !0, "By Columns": !1 }, ie = (E, h) => {
119
119
  const n = { ...t };
120
120
  return n.replaceText = e.target.value, n;
121
121
  });
122
- }, onKeyDown: (e) => Q(e, !0), onContextMenu: (e) => {
122
+ }, onKeyDown: (e) => q(e, !0), onContextMenu: (e) => {
123
123
  e.stopPropagation();
124
124
  } }), i(m, { onSelectToggle: (e) => {
125
125
  F(!0, !0);
126
126
  }, touchRippleRef: j, label: "Replace", shortcut: { key: "Enter" }, icon: x(i(ve, {})), disabled: !o.findText }), i(m, { onSelectToggle: (e) => {
127
127
  F(!0, !0, !0);
128
- }, touchRippleRef: N, label: "Replace All", shortcut: { key: "Enter", modifiers: [y.Ctrl, y.Alt] }, icon: x(i(Te, {})), disabled: !o.findText })] }) })] })] }), i(ee, { in: V, timeout: ne, onExit: () => {
128
+ }, touchRippleRef: N, label: "Replace All", shortcut: { key: "Enter", modifiers: [y.Ctrl, y.Alt] }, icon: x(i(Te, {})), disabled: !o.findText })] }) })] })] }), i(ee, { in: B, timeout: ne, onExit: () => {
129
129
  s.current?.focus();
130
130
  }, children: p(O, { sx: { minHeight: "10px", flex: "1 1 100%", display: "flex", flexDirection: "column", gap: (e) => e.spacing(0.5), marginTop: (e) => e.spacing(1) }, children: [i(Re, { orientation: "horizontal", sx: { marginBottom: (e) => e.spacing(1.5) } }), p(O, { sx: { display: "flex", flexDirection: Z >= 413 ? "row" : "column", justifyContent: "space-evenly", alignItems: "center", rowGap: (e) => e.spacing(2) }, tabIndex: -1, children: [i(z, { label: "Within", value: o.scope, options: te, onSelect: (e) => {
131
131
  l((t) => {
@@ -1,20 +1,20 @@
1
1
  import { jsx as o, jsxs as A } from "react/jsx-runtime";
2
2
  import { memo as E, useMemo as b, useState as g, useCallback as O } from "react";
3
- import { v as f, b as S, B as U, F as P, T as D, a as l, ay as p } from "./CUqr4I0B5RzMvyfH.js";
3
+ import { w as f, b as S, B as U, F as P, T as D, a as l, ay as p } from "./DKLitAhDj5Ibh2cc.js";
4
4
  /**
5
- * @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.4.7
5
+ * @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.4.9
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 V = ["Ok", "Cancel"], J = E((F) => {
11
- const { initialHyperlink: n = null, initialDisplay: v = null, onUpdateHyperlink: m, context: s, onOption: x, onValidateOption: r, onDone: d, options: h = V, defaultOption: c = h?.[0], cancelOption: i = "Cancel", sx: H, ...I } = F, w = b(() => (n ?? s?.()?.getHyperlink()) !== null, []), y = b(() => {
11
+ const { initialHyperlink: n = null, initialDisplay: w = null, onUpdateHyperlink: m, context: s, onOption: x, onValidateOption: r, onDone: d, options: h = V, defaultOption: c = h?.[0], cancelOption: i = "Cancel", sx: H, ...I } = F, v = b(() => (n ?? s?.()?.getHyperlink()) !== null, []), y = b(() => {
12
12
  let a = null, t = null;
13
13
  n && (typeof n == "string" ? t = n : a = n);
14
14
  const C = a ?? s?.()?.getHyperlink();
15
15
  return { address: t ?? C?.getAddress() ?? "", textToDisplay: C?.getDisplayText() ?? "" };
16
16
  }, [n, s]), [e, M] = g(y.address), [u, B] = g(() => {
17
- const a = s?.().toTextUnformatted() ?? v;
17
+ const a = s?.().toTextUnformatted() ?? w;
18
18
  return a === y.address ? "" : a;
19
19
  }), [$, k] = g(!1), L = O((a) => {
20
20
  B(a.target.value);
@@ -30,7 +30,7 @@ const V = ["Ok", "Cancel"], J = E((F) => {
30
30
  }
31
31
  return t ?? !0;
32
32
  }, [r]);
33
- return o(S, { title: (w ? "Edit" : "Insert") + " Link", options: h, onDone: d, onOption: (a) => W(a), onValidateOption: z, defaultOption: c, cancelOption: i, autoFocusSel: ".autoFocus", sx: { width: "480px", ...H }, ...I, children: A(U, { sx: { paddingTop: (a) => a.spacing(1), paddingBottom: (a) => a.spacing(0), rowGap: (a) => a.spacing(1), display: "flex", flexDirection: "column" }, children: [o(P, { sx: { paddingTop: (a) => a.spacing(1.5), minWidth: 135, width: "100%" }, size: "small", children: o(D, { label: "Address", placeholder: "Enter a url or cell reference.", onFocus: (a) => {
33
+ return o(S, { title: (v ? "Edit" : "Insert") + " Link", options: h, onDone: d, onOption: (a) => W(a), onValidateOption: z, defaultOption: c, cancelOption: i, autoFocusSel: ".autoFocus", sx: { width: "480px", ...H }, ...I, children: A(U, { sx: { paddingTop: (a) => a.spacing(1), paddingBottom: (a) => a.spacing(0), rowGap: (a) => a.spacing(1), display: "flex", flexDirection: "column" }, children: [o(P, { sx: { paddingTop: (a) => a.spacing(1.5), minWidth: 135, width: "100%" }, size: "small", children: o(D, { label: "Address", placeholder: "Enter a url or cell reference.", onFocus: (a) => {
34
34
  $ || a.target?.select(), k(!0);
35
35
  }, sx: { "& .MuiFormHelperText-root": { marginTop: (a) => a.spacing(0.5) } }, InputLabelProps: { shrink: !0 }, InputProps: { inputProps: { className: "autoFocus", spellCheck: !1, autoComplete: "off", sx: { paddingTop: (a) => a.spacing(1.25), paddingBottom: (a) => a.spacing(0.75), backgroundImage: `linear-gradient(${l("#fff", p(5))}, ${l("#fff", p(5))})` } } }, value: e, onChange: j, onContextMenu: (a) => {
36
36
  a.stopPropagation();
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.4.7
2
+ * @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.4.9
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("./CUqr4I0B5RzMvyfH.js").then((e) => e.b6)]);
16
+ const o = await Promise.all([import("react"), import("react/jsx-runtime"), import("react-dom"), import("react-dom/client"), import("./DKLitAhDj5Ibh2cc.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,15 +1,15 @@
1
1
  import { jsx as i } from "react/jsx-runtime";
2
2
  import { memo as E, useMemo as M, useState as x, useCallback as j } from "react";
3
- import { v as r, b as S, B as V, F as $, T as z, a as h, ay as C } from "./CUqr4I0B5RzMvyfH.js";
3
+ import { w as r, b as S, B as V, F as $, T as z, a as h, ay as C } from "./DKLitAhDj5Ibh2cc.js";
4
4
  /**
5
- * @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.4.7
5
+ * @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.4.9
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 G = ["Ok", "Cancel"], U = E((O) => {
11
- const { initialComments: y = null, onUpdateComments: m, context: F, onOption: u, onValidateOption: l, onDone: p, options: d = G, defaultOption: c = d?.[0], cancelOption: s = "Cancel", sx: T, ...b } = O, g = M(() => {
12
- const n = y ?? F?.()?.getComments();
11
+ const { initialComments: w = null, onUpdateComments: m, context: y, onOption: u, onValidateOption: l, onDone: p, options: d = G, defaultOption: c = d?.[0], cancelOption: s = "Cancel", sx: F, ...T } = O, g = M(() => {
12
+ const n = w ?? y?.()?.getComments();
13
13
  let t = "";
14
14
  if (n && n.content && n.content.runs) {
15
15
  const a = n.content.runs;
@@ -19,7 +19,7 @@ const G = ["Ok", "Cancel"], U = E((O) => {
19
19
  }
20
20
  }
21
21
  return t;
22
- }, []), [e, k] = x(g), [v, w] = x(!1), f = j(async (n, t) => null, []), P = r(async (n) => {
22
+ }, []), [e, b] = x(g), [k, P] = x(!1), f = j(async (n, t) => null, []), v = r(async (n) => {
23
23
  const t = e === "" ? [] : e.split(`
24
24
  `);
25
25
  if (n !== s) {
@@ -29,7 +29,7 @@ const G = ["Ok", "Cancel"], U = E((O) => {
29
29
  }
30
30
  u?.(n, n === s, n === c), p?.();
31
31
  }, [e, m, p, u, c, s]), D = r((n) => {
32
- k(n.target.value), f(n.target.value, null);
32
+ b(n.target.value), f(n.target.value, null);
33
33
  }, [l]), I = r(async (n) => {
34
34
  let t = await Promise.resolve(l?.(n));
35
35
  try {
@@ -38,8 +38,8 @@ const G = ["Ok", "Cancel"], U = E((O) => {
38
38
  }
39
39
  return t ?? !0;
40
40
  }, [l, e]);
41
- return i(S, { title: (g ? "Edit" : "Insert") + " Comments", options: d, onDone: p, onOption: (n) => P(n), onValidateOption: I, defaultOption: c, cancelOption: s, autoFocusSel: ".autoFocus", sx: { width: "480px", ...T }, ...b, children: i(V, { sx: { paddingTop: (n) => n.spacing(1), paddingBottom: (n) => n.spacing(0), rowGap: (n) => n.spacing(1), display: "flex", flexDirection: "column" }, children: i($, { sx: { paddingTop: (n) => n.spacing(1.5), minWidth: 135, width: "100%" }, size: "small", children: i(z, { label: "Comments", placeholder: "Enter a comment.", onFocus: (n) => {
42
- v || n.target?.select(), w(!0);
41
+ return i(S, { title: (g ? "Edit" : "Insert") + " Comments", options: d, onDone: p, onOption: (n) => v(n), onValidateOption: I, defaultOption: c, cancelOption: s, autoFocusSel: ".autoFocus", sx: { width: "480px", ...F }, ...T, children: i(V, { sx: { paddingTop: (n) => n.spacing(1), paddingBottom: (n) => n.spacing(0), rowGap: (n) => n.spacing(1), display: "flex", flexDirection: "column" }, children: i($, { sx: { paddingTop: (n) => n.spacing(1.5), minWidth: 135, width: "100%" }, size: "small", children: i(z, { label: "Comments", placeholder: "Enter a comment.", onFocus: (n) => {
42
+ k || n.target?.select(), P(!0);
43
43
  }, sx: { "& .MuiFormHelperText-root": { marginTop: (n) => n.spacing(0.5) } }, InputLabelProps: { shrink: !0 }, InputProps: { inputProps: { className: "autoFocus", spellCheck: !1, autoComplete: "off", sx: { paddingTop: (n) => n.spacing(1.25), paddingBottom: (n) => n.spacing(0.75), backgroundImage: `linear-gradient(${h("#fff", C(5))}, ${h("#fff", C(5))})` } } }, value: e, onChange: D, onContextMenu: (n) => {
44
44
  n.stopPropagation();
45
45
  } }) }) }) });