@sheetxl/studio-vanilla 0.4.21 → 0.4.22

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 (184) hide show
  1. package/browser/cjs/-AkvO2DXLOxJTxam.cjs +6 -0
  2. package/browser/cjs/3CSmmG7E8ziDB1mP.cjs +6 -0
  3. package/browser/cjs/7nEG2wj_Ohie6CwI.cjs +6 -0
  4. package/browser/cjs/{n6CXzSocLW_BCO8w.cjs → B0aLqzqegePPgpc2.cjs} +6 -6
  5. package/browser/cjs/B9GyERAqyIxdqS4D.cjs +145 -0
  6. package/browser/cjs/BO8oGaHWFtHyxmQ1.cjs +6 -0
  7. package/browser/cjs/BPODmSH7Z1MR1rHr.cjs +15 -0
  8. package/browser/cjs/BS0bGW4PmNinQUvL.cjs +42 -0
  9. package/browser/cjs/BY3tZiH_cfwBkpN8.cjs +6 -0
  10. package/browser/cjs/BYRBdz-9UGZ0b_AO.cjs +7 -0
  11. package/browser/cjs/BZvC7PqILOVRl2ij.cjs +6 -0
  12. package/browser/cjs/Bc6lVP0c3mEzf_yK.cjs +6 -0
  13. package/browser/cjs/Bdm_fGdkK4-pZ0tW.cjs +6 -0
  14. package/browser/cjs/Bi2-QXq5KvbsAXoB.cjs +6 -0
  15. package/browser/cjs/Bk2cFYnTKxP7WbLy.cjs +6 -0
  16. package/browser/cjs/BlojFx4yQfY8ahEJ.cjs +12 -0
  17. package/browser/cjs/BvEv8i6SisfC24C1.cjs +7 -0
  18. package/browser/cjs/Bzntg1YSzOszdwLy.cjs +6 -0
  19. package/browser/cjs/C9oIS5xxO9B7vS3W.cjs +6 -0
  20. package/browser/cjs/C9xTKWx1tr6NZFC8.cjs +6 -0
  21. package/browser/cjs/CCu9cK1DUD4oa3Nj.cjs +6 -0
  22. package/browser/cjs/CIeiC9TKv80O2_fQ.cjs +6 -0
  23. package/browser/cjs/COuRf_8YbqEsDQOC.cjs +6 -0
  24. package/browser/cjs/CQRZm8lGq26oKY31.cjs +6 -0
  25. package/browser/cjs/CYmpgLiDS0ZlbG11.cjs +6 -0
  26. package/browser/cjs/CZltonq1gEczLRHi.cjs +32 -0
  27. package/browser/cjs/Cf1j7hiCbQ8xo4_U.cjs +7 -0
  28. package/browser/cjs/CknjEH7DZBnqyPfk.cjs +6 -0
  29. package/browser/cjs/ClEc15AqSTFOf5zG.cjs +6 -0
  30. package/browser/cjs/CrUZUIz00uPDq4EA.cjs +6 -0
  31. package/browser/cjs/Cv1BFY5pqPtJd8qO.cjs +6 -0
  32. package/browser/cjs/CvvHAxM5SO6mwsyq.cjs +161 -0
  33. package/browser/cjs/Cvwrl86aXHFXJVZZ.cjs +6 -0
  34. package/browser/cjs/CwgzE59YUQ1eOTBi.cjs +6 -0
  35. package/browser/cjs/D3qzZXPgfAtKIAP9.cjs +11 -0
  36. package/browser/cjs/D7q2GFLhv9QRTZJe.cjs +6 -0
  37. package/browser/cjs/DB2WR3LaeOhkCAXY.cjs +6 -0
  38. package/browser/cjs/DFJ4dyRxiUF1XPPZ.cjs +15 -0
  39. package/browser/cjs/DJMpu6kYQUW3FWjs.cjs +6 -0
  40. package/browser/cjs/DL7DCFUaFkr2LYhZ.cjs +6 -0
  41. package/browser/cjs/DMMZr350oW-Zan7x.cjs +124 -0
  42. package/browser/cjs/DMfk3didwdGQLc0i.cjs +1501 -0
  43. package/browser/cjs/DaEdjRWwuNebE2hn.cjs +6 -0
  44. package/browser/cjs/Dd7vDdIeQaFScMRQ.cjs +6 -0
  45. package/browser/cjs/Df9S9eEGYxA_EcEr.cjs +6 -0
  46. package/browser/cjs/DgSAPPq-D_vlo9jE.cjs +6 -0
  47. package/browser/cjs/DmtZLv1wnSxRzPiR.cjs +6 -0
  48. package/browser/cjs/DqlFSswn_reXyFz8.cjs +6 -0
  49. package/browser/cjs/Dws_eDddoJKDPps_.cjs +6 -0
  50. package/browser/cjs/HyVntu9KkvdKrJEt.cjs +16 -0
  51. package/browser/cjs/Iek_K8QW1doYx_eo.cjs +6 -0
  52. package/browser/cjs/QJFc55OPrJyuRvDO.cjs +19 -0
  53. package/browser/cjs/QxU4KIgsHZuVigdy.cjs +329 -0
  54. package/browser/cjs/cOAjfOdF1cb-xgQG.cjs +6 -0
  55. package/browser/cjs/index.cjs +2 -80
  56. package/browser/cjs/kQ8wVygFJMcxlUv-.cjs +6 -0
  57. package/browser/cjs/tVbeAmLkaH_1Jy7R.cjs +6 -0
  58. package/browser/cjs/wNoDw92hvq2txBki.cjs +11 -0
  59. package/browser/esm/2d2eGHpsnUoCOFMT.mjs +47 -0
  60. package/browser/esm/AVmCEk8Fmiw2k_yK.mjs +425 -0
  61. package/browser/esm/B0A2aLiKDPGGU4k-.mjs +44515 -0
  62. package/browser/esm/BBov1fpR61VyhE3Z.mjs +10 -0
  63. package/browser/esm/BJD32_Zv5gkabGc0.mjs +10 -0
  64. package/browser/esm/BJqIPJDvrhWpZc4S.mjs +10 -0
  65. package/browser/esm/BKYjPTKdwG8Dn1_Z.mjs +21 -0
  66. package/browser/esm/BQfnqD12mz41DOr_.mjs +10 -0
  67. package/browser/esm/BSdVpOzJ8SL3EBhP.mjs +10 -0
  68. package/browser/esm/BVuoKgnuqrUwY6Fv.mjs +44 -0
  69. package/browser/esm/Ba4SdTfCAvYS7a3O.mjs +29 -0
  70. package/browser/esm/BajFlIH_X_nvDNfp.mjs +2344 -0
  71. package/browser/esm/Bb0W3ByMVowTViNK.mjs +10 -0
  72. package/browser/esm/BmyjN5txj3iMw_DE.mjs +10 -0
  73. package/browser/esm/BpFA0UU_TF4JO3dh.mjs +10 -0
  74. package/browser/esm/Btr2FDDtI_fht0WU.mjs +1466 -0
  75. package/browser/esm/Bzg-D_R4sXN-wyMx.mjs +10 -0
  76. package/browser/esm/C2xOGr0pDSHSMKoW.mjs +1366 -0
  77. package/browser/esm/CAal3t8F-VfdmgAH.mjs +10 -0
  78. package/browser/esm/CBPeZuyUIf9scEwn.mjs +2081 -0
  79. package/browser/esm/CCjuiVOyesh1IQpA.mjs +3936 -0
  80. package/browser/esm/CDnNRZ7jINT_Dr0K.mjs +46 -0
  81. package/browser/esm/CQaM4Ka20cP71fl0.mjs +10 -0
  82. package/browser/esm/CVlIOg6F8qrZdlQ1.mjs +10 -0
  83. package/browser/esm/Cbq2K4YGny5wwFEf.mjs +10 -0
  84. package/browser/esm/CfeqmUm-TkCE2XpK.mjs +260 -0
  85. package/browser/esm/Ckb6l6osoWh90VXn.mjs +10 -0
  86. package/browser/esm/CkccSfJEU471_Sui.mjs +1702 -0
  87. package/browser/esm/Cl0mB61JgZYfTh4S.mjs +24 -0
  88. package/browser/esm/Cm7pnWH_xgLwX_lZ.mjs +10 -0
  89. package/browser/esm/Co_HyodT3prcEvNJ.mjs +10 -0
  90. package/browser/esm/CsBIABPdnqpcZcvJ.mjs +10 -0
  91. package/browser/esm/CslKfn0zxkGKrM4-.mjs +48 -0
  92. package/browser/esm/Cx0a1WWRvJgDg4qb.mjs +21 -0
  93. package/browser/esm/D-QFKqWRP5dKwynV.mjs +10 -0
  94. package/browser/esm/DWgbhx4Y4WzyAP3Z.mjs +1575 -0
  95. package/browser/esm/DgFIjoPrM5dmrLHT.mjs +392 -0
  96. package/browser/esm/Dk_OZhcDLapTaNma.mjs +10 -0
  97. package/browser/esm/Dp--KMDeqecbq_Wc.mjs +10 -0
  98. package/browser/esm/Dva_qJrZGvFYbRxZ.mjs +21 -0
  99. package/browser/esm/DxJfUV0HFQT8g6H_.mjs +39 -0
  100. package/browser/esm/Dxqx7qwqE6wbYSpB.mjs +147 -0
  101. package/browser/esm/ObudKUELIfmbm87W.mjs +10 -0
  102. package/browser/esm/SGprYj0-SzDtrM3y.mjs +56 -0
  103. package/browser/esm/SmC3rmOCw-Ynredz.mjs +1672 -0
  104. package/browser/esm/T263hpnj_sMd1bmD.mjs +84 -0
  105. package/browser/esm/Ys1OCodY6sXUkZ6-.mjs +424 -0
  106. package/browser/esm/aqvSzH4m6bf7ODc6.mjs +10 -0
  107. package/browser/esm/d49_A3euUkzKZure.mjs +633 -0
  108. package/browser/esm/d8r4AqRUASAMCbBC.mjs +1352 -0
  109. package/browser/esm/fgXzhDR19HBK6PEW.mjs +20 -0
  110. package/browser/esm/g2unVUs-HBGBvXMs.mjs +12 -0
  111. package/browser/esm/gzl_ozUgkS0mr_32.mjs +13391 -0
  112. package/browser/esm/index.mjs +4 -176
  113. package/browser/esm/kbK4ZGVl1tl5F-UA.mjs +41 -0
  114. package/browser/esm/oAfM3SU0EgMxfDc0.mjs +3802 -0
  115. package/browser/esm/{NBuS53B7u8hItiXf.mjs → oUl7lbkOPMCi30tO.mjs} +937 -933
  116. package/browser/esm/tAl8qMu6C0Vlq5p-.mjs +5585 -0
  117. package/cdn/assets/1we1udiYEDagZ5XN.js +241 -0
  118. package/cdn/assets/8d4z_mUqWF_BnOt4.js +6481 -0
  119. package/cdn/assets/B-ol51_1jHaCVeGO.js +3802 -0
  120. package/cdn/assets/B2I5EC8Y3LkhqzOe.js +50 -0
  121. package/cdn/assets/B44RkeFF8g1ncaGw.js +49 -0
  122. package/cdn/assets/BBov1fpR61VyhE3Z.js +10 -0
  123. package/cdn/assets/BCEDMsB3yP73FGo4.js +260 -0
  124. package/cdn/assets/BERonPR_jlfR0j1B.js +46 -0
  125. package/cdn/assets/BJD32_Zv5gkabGc0.js +10 -0
  126. package/cdn/assets/BJqIPJDvrhWpZc4S.js +10 -0
  127. package/cdn/assets/BKYjPTKdwG8Dn1_Z.js +21 -0
  128. package/cdn/assets/BPQvYX3Tn3_XfM55.js +2346 -0
  129. package/cdn/assets/BQfnqD12mz41DOr_.js +10 -0
  130. package/cdn/assets/BSdVpOzJ8SL3EBhP.js +10 -0
  131. package/cdn/assets/BWHiFslK55rPiaTT.js +21 -0
  132. package/cdn/assets/BWhbbP9qvpjw1m3d.js +21 -0
  133. package/cdn/assets/B_gWDLoUXJ58kUTF.js +5585 -0
  134. package/cdn/assets/Bb0W3ByMVowTViNK.js +10 -0
  135. package/cdn/assets/Bk7mWQ4jJ591qT5U.js +1702 -0
  136. package/cdn/assets/BmyjN5txj3iMw_DE.js +10 -0
  137. package/cdn/assets/BnEb6t4xIVuW37yn.js +29 -0
  138. package/cdn/assets/BpFA0UU_TF4JO3dh.js +10 -0
  139. package/cdn/assets/Bzg-D_R4sXN-wyMx.js +10 -0
  140. package/cdn/assets/C2xOGr0pDSHSMKoW.js +1366 -0
  141. package/cdn/assets/CAal3t8F-VfdmgAH.js +10 -0
  142. package/cdn/assets/CGImeT9zAECbU9zM.js +43 -0
  143. package/cdn/assets/CIdfxx6BkkxIdU4J.js +36 -0
  144. package/cdn/assets/CQaM4Ka20cP71fl0.js +10 -0
  145. package/cdn/assets/CVgQlKevn28IBavQ.js +44342 -0
  146. package/cdn/assets/CVlIOg6F8qrZdlQ1.js +10 -0
  147. package/cdn/assets/Cbq2K4YGny5wwFEf.js +10 -0
  148. package/cdn/assets/CcE9nC_34k_5iKdO.js +425 -0
  149. package/cdn/assets/CcP-5SrDsnDeT6SQ.js +2083 -0
  150. package/cdn/assets/Ckb6l6osoWh90VXn.js +10 -0
  151. package/cdn/assets/Cl0mB61JgZYfTh4S.js +24 -0
  152. package/cdn/assets/Cm7pnWH_xgLwX_lZ.js +10 -0
  153. package/cdn/assets/Co_HyodT3prcEvNJ.js +10 -0
  154. package/cdn/assets/CsBIABPdnqpcZcvJ.js +10 -0
  155. package/cdn/assets/Ct1wZ_TFb7_zG9uz.js +22 -0
  156. package/cdn/assets/D-QFKqWRP5dKwynV.js +10 -0
  157. package/cdn/assets/D8hsneNA-W9ryUa9.js +27 -0
  158. package/cdn/assets/DBzbchpZyNJVqFwJ.js +1575 -0
  159. package/cdn/assets/DIBJnPf-ZLpoUAyv.js +90 -0
  160. package/cdn/assets/DKaNurhCUtSDI3-Y.js +3936 -0
  161. package/cdn/assets/DQmcuM6zJj_UBR4j.js +58 -0
  162. package/cdn/assets/DXWy4_H6I-dyOLr6.js +46 -0
  163. package/cdn/assets/DXlz010r4VFvz1TS.js +23 -0
  164. package/cdn/assets/Dk_OZhcDLapTaNma.js +10 -0
  165. package/cdn/assets/Dp--KMDeqecbq_Wc.js +10 -0
  166. package/cdn/assets/DqRiTlxxpGv8z6hB.js +392 -0
  167. package/cdn/assets/Dt6M8k8ljeGubAJ5.js +1466 -0
  168. package/cdn/assets/Dzb_e1lRgdeWlKbP.js +27 -0
  169. package/cdn/assets/ObudKUELIfmbm87W.js +10 -0
  170. package/cdn/assets/QtHcsa9O7bxZgew4.js +12 -0
  171. package/cdn/assets/SmC3rmOCw-Ynredz.js +1672 -0
  172. package/cdn/assets/UBuQw1PVtmH3a9bE.js +84 -0
  173. package/cdn/assets/Ys1OCodY6sXUkZ6-.js +424 -0
  174. package/cdn/assets/aqvSzH4m6bf7ODc6.js +10 -0
  175. package/cdn/assets/d49_A3euUkzKZure.js +633 -0
  176. package/cdn/assets/d8r4AqRUASAMCbBC.js +1352 -0
  177. package/cdn/assets/g2unVUs-HBGBvXMs.js +12 -0
  178. package/cdn/assets/gzl_ozUgkS0mr_32.js +13391 -0
  179. package/cdn/assets/o1yNcQczZA65rwUv.js +41 -0
  180. package/cdn/assets/u_xPkr1quUnZRgrA.js +149 -0
  181. package/cdn/index.js +2 -2
  182. package/cdn/loader.js +1 -1
  183. package/package.json +3 -3
  184. package/cdn/assets/CY8njwo06MWkoPz2.js +0 -21
@@ -0,0 +1,41 @@
1
+ import { a as s } from "./CIdfxx6BkkxIdU4J.js";
2
+ import { r as n } from "./Dzb_e1lRgdeWlKbP.js";
3
+ import { g as e, h as z, L as E, B as K, i as R, o as W, j as O, aF as q, l as y } from "./CVgQlKevn28IBavQ.js";
4
+ /**
5
+ * @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.4.22
6
+ *
7
+ * (C) 2025-present SheetXL Inc. & Michael T. Ford
8
+ * License: The license can be found at https://www.sheetxl.com/license.
9
+ */
10
+ const A = ["Input"], U = n.memo(n.forwardRef((w, F) => {
11
+ const { initialValue: T = "", onOption: I, onValidateOption: r, onInputOption: l, onValidateInputOption: p, onDone: u, inputProps: c, inputLabel: P, inputType: S, inputPlaceHolder: j, options: d = A, autoFocusSel: v = ".autoFocus", cancelOption: g, defaultOption: m = d?.[0], ...C } = w, [b, k] = n.useState(!1), [a, V] = n.useState(T), [B, D] = n.useState(""), [L, H] = n.useState(!0), i = e(async (t, o) => {
12
+ if (!p) return !0;
13
+ const h = await p?.(t, o);
14
+ D(h?.message ?? "");
15
+ const x = h?.valid ?? !0;
16
+ return H(x), x;
17
+ }, [p]), f = e(async (t) => {
18
+ l?.(a, t);
19
+ }, [a, l, u, I, g, m]), M = e(async (t) => {
20
+ t.keyCode === z.Enter && await i?.(a, null);
21
+ }, [a, f]), N = e((t) => {
22
+ V(t.target.value), i?.(t.target.value, null);
23
+ }, [r]), $ = e(async (t) => {
24
+ let o = await i(a, t);
25
+ try {
26
+ o !== !1 && (o = await i(a, t));
27
+ } catch {
28
+ }
29
+ return o ?? !0;
30
+ }, [a, r]);
31
+ return s.jsx(E, { options: d, onDone: u, onOption: (t, o) => {
32
+ o || f(t);
33
+ }, onValidateOption: $, cancelOption: g, defaultOption: m, autoFocusSel: v, ref: F, ...C, children: s.jsx(K, { sx: { paddingTop: (t) => t.spacing(1), paddingBottom: (t) => t.spacing(0) }, children: s.jsx(R, { sx: { paddingTop: (t) => t.spacing(1.5), minWidth: 135, width: "100%" }, size: "small", children: s.jsx(W, { onFocus: (t) => {
34
+ b || t.target?.select(), k(!0);
35
+ }, type: S, label: P, helperText: B || " ", sx: { width: "100%", "& .MuiFormHelperText-root": { marginTop: (t) => t.spacing(0.5), color: L ? void 0 : "error.main" } }, InputLabelProps: { shrink: !0 }, InputProps: { inputProps: { placeholder: j, spellCheck: !1, autoComplete: "off", ...c, className: q("autoFocus", c?.className), sx: { paddingTop: (t) => t.spacing(1.25), paddingBottom: (t) => t.spacing(0.75), backgroundImage: `linear-gradient(${O("#fff", y(5))}, ${O("#fff", y(5))})` } } }, value: a, onChange: N, onKeyDown: M, onContextMenu: (t) => {
36
+ t.stopPropagation();
37
+ } }) }) }) });
38
+ }));
39
+ export {
40
+ U as default
41
+ };
@@ -0,0 +1,149 @@
1
+ import { a as t } from "./CIdfxx6BkkxIdU4J.js";
2
+ import { r as o } from "./Dzb_e1lRgdeWlKbP.js";
3
+ import { x as E, y as p, w as b, g as V, h as le, z as ae, A as re, D as ce, B as O, E as g, G as m, J as pe, O as j, Q as de, o as X, j as R, R as ue, U as fe, V as xe, _ as ge, l as v, a0 as _, a1 as me, a2 as he, a3 as Oe, q as je, i as Ce, I as ye, S as be } from "./CVgQlKevn28IBavQ.js";
4
+ /**
5
+ * @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.4.22
6
+ *
7
+ * (C) 2025-present SheetXL Inc. & Michael T. Ford
8
+ * License: The license can be found at https://www.sheetxl.com/license.
9
+ */
10
+ const Re = E(t.jsx("path", { d: "M20 11H7.83l5.59-5.59L12 4l-8 8 8 8 1.41-1.41L7.83 13H20z" }), "ArrowBack"), ve = E(t.jsx("path", { d: "m20 12-1.41-1.41L13 16.17V4h-2v12.17l-5.58-5.59L4 12l8 8z" }), "ArrowDownward"), Te = E(t.jsx("path", { d: "m12 4-1.41 1.41L16.17 11H4v2h12.17l-5.58 5.59L12 20l8-8z" }), "ArrowForward"), ke = E(t.jsx("path", { d: "m4 12 1.41 1.41L11 7.83V20h2V7.83l5.58 5.59L20 12l-8-8z" }), "ArrowUpward"), K = o.memo((T) => {
11
+ const { label: h, value: c, options: l, onSelect: d, tabIndex: C = 0, ...F } = T, [I, y] = o.useState(() => ee(c, l));
12
+ o.useEffect(() => {
13
+ y(ee(c, l));
14
+ }, [c, l]);
15
+ const D = V((u) => {
16
+ y(u.target.value), d?.(l[u.target.value]);
17
+ }, [d, l]), a = o.useMemo(() => Object.keys(l).map((u) => t.jsx(je, { value: u, children: u }, u)), [l]);
18
+ return t.jsxs(Ce, { sx: { minWidth: 135 }, size: "small", children: [t.jsx(ye, { children: h }), t.jsx(be, { inputProps: { tabIndex: C }, value: I, label: h, onChange: D, sx: { backgroundImage: `linear-gradient(${R("#fff", v(5))}, ${R("#fff", v(5))})` }, ...F, children: a })] });
19
+ }), Y = { Workbook: "workbook", Sheet: "sheet" }, Z = { enter: 140, exit: 140 }, ne = { Formulas: p.Content.Formulas, Values: p.Content.Values, Notes: p.Content.Notes, Comments: p.Content.Comments }, te = { ...ne };
20
+ delete te.Values;
21
+ const Se = { "By Rows": !0, "By Columns": !1 }, ee = (T, h) => {
22
+ const c = Object.keys(h);
23
+ for (let l = 0; l < c.length; l++) {
24
+ const d = c[l];
25
+ if (h[d] === T) return d;
26
+ }
27
+ }, Ie = o.memo((T) => {
28
+ const { replace: h = !1, findText: c, replaceText: l, findOptions: d, replaceOptions: C, title: F, onHide: I, onFindOrReplace: y, ...D } = T, a = o.useRef(null), u = o.useRef(null), M = o.useRef(null), $ = o.useRef(null), z = o.useRef(null), B = o.useRef(null), H = (e, n) => {
29
+ n && (n.start(e, { center: !1 }), setTimeout(() => n.stop(e), 180));
30
+ }, [W, w] = o.useState(!1), [L, se] = o.useState(!1), [f, A] = o.useState(h), [N, P] = o.useState(!1), [U, G] = o.useState(!1), [i, r] = o.useState({ findText: null, replaceText: null, replace: h, replaceOptions: {}, findOptions: { matchCase: !1, matchEntireCell: !1, useRegex: !1, orientation: b.Orientation.Row, fields: [p.Content.Formulas] }, scope: Y.Sheet }), k = V(async (e, n, s, S) => {
31
+ if (!y) return;
32
+ const x = { ...i };
33
+ x.replaceOptions = { ...x.replaceOptions }, x.findOptions = { ...x.findOptions }, x.replaceOptions.maxCount = s ? void 0 : 1, x.replace = n, n && i.findOptions.fields?.[0] === p.Content.Values && (x.findOptions.fields = [p.Content.Formulas]), x.findOptions.reverse = !e;
34
+ const oe = await y({ autoFocus: S, ...x });
35
+ P(oe === 0);
36
+ }, [i, y]);
37
+ o.useEffect(() => {
38
+ P(!1);
39
+ }, [i, L, f]);
40
+ const q = V((e, n) => {
41
+ if (e.keyCode === le.Enter) {
42
+ if (!i.findText) return;
43
+ let s = !0, S = !1;
44
+ e.shiftKey && (s = !1), n ? (e.ctrlKey && e.altKey && (S = !0), H(e, S ? B.current : z.current)) : H(e, s ? $.current : M.current), k(s, n, S, !1);
45
+ }
46
+ }, [i]), J = o.useRef(null);
47
+ o.useLayoutEffect(() => {
48
+ r((e) => {
49
+ const n = { ...e };
50
+ n.findText = c && c.length > 0 ? c : e.findText ?? "", w(!0), l !== void 0 && (n.replaceText = l), d && (n.findOptions = { ...n.findOptions, ...d }), n.replaceText || (n.replaceText = ""), n.replaceOptions && (n.replaceOptions = { ...n.replaceOptions }), C && (n.replaceOptions = { ...n.replaceOptions, ...C }), i.findOptions.fields?.[0] || (i.findOptions.fields = [p.Content.Formulas]);
51
+ const s = !(!C && l === void 0);
52
+ return s && A(s), n;
53
+ }), U || J.current?.focus();
54
+ }, [c, l, d, C]), o.useEffect(() => {
55
+ f ? (i.findOptions.fields[0], p.Content.Values) : w(!0);
56
+ }, [f]), o.useEffect(() => {
57
+ if (W && a.current && i.findText === a.current.value) return a.current === document.activeElement || a.current.contains(document.activeElement) ? (a.current?.select(), void w(!1)) : void a.current.addEventListener("focus", () => {
58
+ a.current?.select(), w(!1);
59
+ }, { once: !0 });
60
+ }, [W, i]);
61
+ const [ie, { width: Q }] = ae();
62
+ return t.jsx(re, { ref: J, title: F ?? (f ? "Find & Replace" : "Find"), initialPosition: { y: "35" }, autoFocusSel: ".input", onHide: I, onFocus: () => G(!0), onBlur: () => {
63
+ G(!1), P(!1);
64
+ }, PaperProps: { elevation: U ? 3 : 1 }, ...D, children: t.jsxs(ce, { dividers: !0, ref: ie, sx: { display: "flex", flexDirection: "column", paddingLeft: (e) => e.spacing(1.5), paddingRight: (e) => e.spacing(1.5) }, onKeyDown: (e) => {
65
+ if (e.key === "h" && e.ctrlKey) A(!0), a.current?.contains(document.activeElement) && u.current?.focus();
66
+ else if (e.key === "f" && e.ctrlKey) a.current?.focus();
67
+ else if (e.key === "c" && e.altKey) r((n) => {
68
+ const s = { ...n };
69
+ return s.findOptions.matchCase = !n.findOptions.matchCase, s;
70
+ });
71
+ else if (e.key === "e" && e.altKey) r((n) => {
72
+ const s = { ...n };
73
+ return s.findOptions.matchEntireCell = !n.findOptions.matchEntireCell, s;
74
+ });
75
+ else {
76
+ if (e.key !== "r" || !e.altKey) return;
77
+ r((n) => {
78
+ const s = { ...n };
79
+ return s.findOptions.useRegex = !n.findOptions.useRegex, s;
80
+ });
81
+ }
82
+ e.preventDefault();
83
+ }, children: [t.jsxs(O, { sx: { display: "flex", flexDirection: "row", gap: (e) => e.spacing(1) }, children: [t.jsxs(O, { sx: { display: "flex", flexDirection: "row", alignItems: "start", gap: (e) => e.spacing(0.25), paddingTop: "3px" }, children: [t.jsx(g, { selected: L, onSelectToggle: (e) => {
84
+ se(e);
85
+ }, preventFocus: !0, label: "Toggle Additional Options", icon: m(t.jsx(pe, {})) }), t.jsx(g, { selected: f, onSelectToggle: (e) => {
86
+ A(e);
87
+ }, preventFocus: !0, label: "Toggle Replace", icon: m(t.jsx(de, {})), shortcut: { key: f ? "F" : "H", modifiers: [j.Ctrl] } })] }), t.jsxs(O, { sx: { display: "flex", flexDirection: "column", maxWidth: "100%", boxSizing: "border-box" }, children: [t.jsxs(O, { sx: { display: "flex", flexDirection: "row", alignItems: "center" }, children: [t.jsx(X, { label: "Find", InputLabelProps: { shrink: !0 }, InputProps: { sx: { paddingRight: (e) => e.spacing(1), minWidth: Q > 460 ? "20em" : void 0, backgroundImage: `linear-gradient(${R("#fff", v(5))}, ${R("#fff", v(5))})` }, inputProps: { draggable: !1, ref: a, className: "input", autoFocus: !0, spellCheck: !1, autoComplete: "off", sx: { paddingTop: (e) => e.spacing(1.25), paddingBottom: (e) => e.spacing(0.75) } }, endAdornment: t.jsx(ue, { sx: { transform: "scale(0.75) translateX(16px)" }, position: "end", children: t.jsxs(O, { sx: { display: "flex", alignItems: "center", flexDirection: "row", gap: "1px" }, children: [t.jsx(g, { selected: i.findOptions.matchCase, onSelectToggle: (e) => {
88
+ r((n) => {
89
+ const s = { ...n };
90
+ return s.findOptions.matchCase = e, s;
91
+ });
92
+ }, label: "Match Case", shortcut: { key: "C", modifiers: [j.Alt] }, icon: m(t.jsx(fe, {})) }), t.jsx(g, { selected: i.findOptions.matchEntireCell, onSelectToggle: (e) => {
93
+ r((n) => {
94
+ const s = { ...n };
95
+ return s.findOptions.matchEntireCell = e, s;
96
+ });
97
+ }, label: "Match Entire Cell", shortcut: { key: "E", modifiers: [j.Alt] }, icon: m(t.jsx(xe, {})) }), t.jsx(g, { selected: i.findOptions.useRegex, onSelectToggle: (e) => {
98
+ r((n) => {
99
+ const s = { ...n };
100
+ return s.findOptions.useRegex = e, s;
101
+ });
102
+ }, label: "Use Regular Expression", shortcut: { key: "R", modifiers: [j.Alt] }, icon: m(t.jsx(ge, {})) })] }) }) }, sx: { flex: "1 1 100%", marginRight: (e) => e.spacing(1), "& .MuiOutlinedInput-notchedOutline": { borderColor: (e) => N ? `${e.palette.error.main} !important` : void 0 }, "& .MuiInputLabel-outlined": { color: (e) => N ? `${e.palette.error.main} !important` : void 0 } }, value: i.findText ?? "", onChange: (e) => {
103
+ r((n) => {
104
+ const s = { ...n };
105
+ return s.findText = e.target.value, s;
106
+ });
107
+ }, onKeyDown: (e) => q(e, !1), onContextMenu: (e) => {
108
+ e.stopPropagation();
109
+ } }), t.jsx(g, { selected: i.findOptions.reverse, onSelectToggle: (e) => {
110
+ k(!1, !1);
111
+ }, touchRippleRef: M, label: "", shortcut: { key: "Enter", modifiers: [j.Shift] }, icon: m(i.findOptions.orientation !== b.Orientation.Column ? t.jsx(Re, {}) : t.jsx(ke, {})), disabled: !i.findText }), t.jsx(g, { selected: !i.findOptions.reverse, onSelectToggle: (e) => {
112
+ k(!0, !1);
113
+ }, touchRippleRef: $, label: "Next Match", shortcut: { key: "Enter" }, icon: m(i.findOptions.orientation !== b.Orientation.Column ? t.jsx(Te, {}) : t.jsx(ve, {})), disabled: !i.findText })] }), t.jsx(_, { in: f, timeout: Z, onExit: () => {
114
+ a.current?.focus();
115
+ }, children: t.jsxs(O, { sx: { display: "flex", flexDirection: "row", alignItems: "center", marginTop: (e) => e.spacing(2) }, children: [t.jsx(X, { label: "Replace", InputLabelProps: { shrink: !0 }, InputProps: { sx: { paddingRight: (e) => e.spacing(1), backgroundImage: `linear-gradient(${R("#fff", v(5))}, ${R("#fff", v(5))})` }, inputProps: { ref: u, className: "input", spellCheck: !1, autoComplete: "off", sx: { paddingTop: (e) => e.spacing(1.25), paddingBottom: (e) => e.spacing(0.75) } } }, sx: { flex: "1 1 100%", marginRight: (e) => e.spacing(1) }, value: i.replaceText ?? "", onChange: (e) => {
116
+ r((n) => {
117
+ const s = { ...n };
118
+ return s.replaceText = e.target.value, s;
119
+ });
120
+ }, onKeyDown: (e) => q(e, !0), onContextMenu: (e) => {
121
+ e.stopPropagation();
122
+ } }), t.jsx(g, { onSelectToggle: (e) => {
123
+ k(!0, !0);
124
+ }, touchRippleRef: z, label: "Replace", shortcut: { key: "Enter" }, icon: m(t.jsx(me, {})), disabled: !i.findText }), t.jsx(g, { onSelectToggle: (e) => {
125
+ k(!0, !0, !0);
126
+ }, touchRippleRef: B, label: "Replace All", shortcut: { key: "Enter", modifiers: [j.Ctrl, j.Alt] }, icon: m(t.jsx(he, {})), disabled: !i.findText })] }) })] })] }), t.jsx(_, { in: L, timeout: Z, onExit: () => {
127
+ a.current?.focus();
128
+ }, children: t.jsxs(O, { sx: { minHeight: "10px", flex: "1 1 100%", display: "flex", flexDirection: "column", gap: (e) => e.spacing(0.5), marginTop: (e) => e.spacing(1) }, children: [t.jsx(Oe, { orientation: "horizontal", sx: { marginBottom: (e) => e.spacing(1.5) } }), t.jsxs(O, { sx: { display: "flex", flexDirection: Q >= 413 ? "row" : "column", justifyContent: "space-evenly", alignItems: "center", rowGap: (e) => e.spacing(2) }, tabIndex: -1, children: [t.jsx(K, { label: "Within", value: i.scope, options: Y, onSelect: (e) => {
129
+ r((n) => {
130
+ const s = { ...n };
131
+ return s.scope = e, s;
132
+ });
133
+ } }), t.jsx(K, { label: "Search", value: i.findOptions.orientation !== b.Orientation.Column, options: Se, onSelect: (e) => {
134
+ r((n) => {
135
+ const s = { ...n };
136
+ return s.findOptions.orientation = e ? b.Orientation.Row : b.Orientation.Column, s;
137
+ });
138
+ } }), t.jsx(K, { label: "Look in", value: f && i.findOptions.fields?.[0] === p.Content.Values ? p.Content.Formulas : i.findOptions.fields?.[0], options: f ? te : ne, onSelect: (e) => {
139
+ r((n) => {
140
+ const s = { ...n };
141
+ return s.findOptions.fields = [e], s;
142
+ });
143
+ } })] })] }) })] }) });
144
+ });
145
+ export {
146
+ Ie as FindReplaceWindow,
147
+ Y as ScopeOptions,
148
+ Ie as default
149
+ };
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.21
2
+ * @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.4.22
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.
@@ -114,7 +114,7 @@ const S = /* @__PURE__ */ new Map(), k = (e, o = {}) => {
114
114
  let d;
115
115
  const C = async (e) => {
116
116
  if (d) return d;
117
- const { resolveDependencies: o } = await import("./assets/CY8njwo06MWkoPz2.js"), s = await o(typeof e == "object" ? e?.dependencies : void 0);
117
+ const { resolveDependencies: o } = await import("./assets/BWHiFslK55rPiaTT.js"), s = await o(typeof e == "object" ? e?.dependencies : void 0);
118
118
  return d = await (async (a, n) => {
119
119
  typeof n == "string" && (n = { selector: n });
120
120
  try {
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.21
2
+ * @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.4.22
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.21",
4
+ "version": "0.4.22",
5
5
  "license": "SEE LICENSE IN <LICENSE>",
6
6
  "type": "module",
7
7
  "main": "./browser/esm/index.mjs",
@@ -41,8 +41,8 @@
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.21",
45
- "@sheetxl/sdk": "^0.4.21",
44
+ "@sheetxl/studio-mui": "^0.4.22",
45
+ "@sheetxl/sdk": "^0.4.22",
46
46
  "react": "^19.1.0",
47
47
  "react-dom": "^19.1.0",
48
48
  "csstype": "^3.1.3",
@@ -1,21 +0,0 @@
1
- /**
2
- * @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.4.21
3
- *
4
- * (C) 2025-present SheetXL Inc. & Michael T. Ford
5
- * License: The license can be found at https://www.sheetxl.com/license.
6
- */
7
- let a = null;
8
- const i = { reactUrl: "https://esm.sh/react@19.1.0", reactJsxTransform: "https://esm.sh/react@19.1.0/jsx-runtime", reactDomUrl: "https://esm.sh/react-dom@19.1.0", reactDomUrlClient: "https://esm.sh/react-dom@19.1.0/client" }, n = (t) => (t = { ...t, ...i }, a || (a = (async () => {
9
- const c = t.reactUrl, o = t.reactDomUrl, s = t.reactDomUrlClient, m = t.reactJsxTransform;
10
- if (document.querySelector('script[type="importmap"]')) console.warn("SheetXL: Import map already exists. Skipping injection.");
11
- else {
12
- const r = document.createElement("script");
13
- r.type = "importmap", r.textContent = JSON.stringify({ imports: { react: c, "react/jsx-runtime": m, "react-dom": o, "react-dom/client": s } }), document.head.appendChild(r);
14
- }
15
- await new Promise((r) => setTimeout(r, 0));
16
- const e = await Promise.all([import("react"), import("react/jsx-runtime"), import("react-dom"), import("react-dom/client"), import("@sheetxl/studio-mui")]);
17
- return { React: e[0], ReactJSXTransform: e[1], ReactDOM: e[2], ReactDOMClient: e[3], StudioMUI: e[4] };
18
- })(), a));
19
- export {
20
- n as resolveDependencies
21
- };