@sheetxl/studio-vanilla 0.6.15 → 0.6.17

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 (188) hide show
  1. package/browser/cjs/{BZqMUjkKTCjgEaXu.cjs → 0o2DOL9TFAi4qoMV.cjs} +1 -1
  2. package/browser/cjs/{djq0XZT_jY2Gy_eq.cjs → 1ZVIBgzGUDyrDB7D.cjs} +1 -1
  3. package/browser/cjs/{_3C9KlxegFx9Icfa.cjs → 3kk64bRHM3mdf7Di.cjs} +1 -1
  4. package/browser/cjs/{D5IETssmSGJBFsSJ.cjs → ABhSPKgHMqitQqWh.cjs} +4 -4
  5. package/browser/cjs/{DdYT2BUYWUBqDr9B.cjs → AI55GG1n3s6v8Znn.cjs} +1 -1
  6. package/browser/cjs/{Eutq-8zvBJ_0X2BC.cjs → B96gAGpJ_C2NLgxd.cjs} +2 -2
  7. package/browser/cjs/{PGMYHMPIEQ5WOc1D.cjs → BC-Ahi4NbL5XXQaA.cjs} +1 -1
  8. package/browser/cjs/{CzUm6lh_QlGh7gaY.cjs → BCvR-BikQs7sfbvt.cjs} +2 -2
  9. package/browser/cjs/{CS9x0Q12bOn9DKPd.cjs → BJIM-XJ8vxZGC580.cjs} +1 -1
  10. package/browser/cjs/{Dc2MbXWvISwqQ5cr.cjs → BKv2q-CzJbChC5uN.cjs} +2 -2
  11. package/browser/cjs/BPOVIcAmUoo-8j_P.cjs +6 -0
  12. package/browser/cjs/{C4dDJfHwkc_2zavW.cjs → BPUlx8CcJrIhZ-Zh.cjs} +2 -2
  13. package/browser/cjs/{TmJem0J2z9AcSsqQ.cjs → BSla6St3XEWT4T9U.cjs} +1 -1
  14. package/browser/cjs/{BR3hc0cPiV3X7ZwT.cjs → BTkxCJ3iqouotDjB.cjs} +1 -1
  15. package/browser/cjs/{BJqkKb_03Zuo7dzj.cjs → BW2L0-0OWiufFI-J.cjs} +2 -2
  16. package/browser/cjs/{DDo1aY8cEywwkyEy.cjs → BWNebhh1Vw6-GrpF.cjs} +1 -1
  17. package/browser/cjs/{C13mkSzeKONOsa7B.cjs → BXbmFzlFUuaBT4za.cjs} +1 -1
  18. package/browser/cjs/{BKj9wr_lJAph-cd7.cjs → Br1smgTrm_5aAU9y.cjs} +1 -1
  19. package/browser/cjs/{BU70-EsQNUEsWbJC.cjs → BrPFmtuMsmvwAcdV.cjs} +1 -1
  20. package/browser/cjs/{bjHhgs5ub7uD7pxr.cjs → BxyTdM32_vlIiTTL.cjs} +19 -19
  21. package/browser/cjs/{6JFRMBQUbdAY2RLz.cjs → C2QUoZsKoj6ZZPQc.cjs} +2 -2
  22. package/browser/cjs/{BBC0T9lBHxsT3PfR.cjs → C3PNV_xXkeq3zCDq.cjs} +2 -2
  23. package/browser/cjs/C5qmD6R64KgJv9hN.cjs +6 -0
  24. package/browser/cjs/{cx1ZTZSmWMXbJgm7.cjs → C82Jc_KowMAXZeoa.cjs} +3 -3
  25. package/browser/cjs/{BrgP7aGtccxJL4b6.cjs → CMey65q82HT9cy0T.cjs} +1 -1
  26. package/browser/cjs/{iQugKqlrPxbBOJBk.cjs → CVY5Wg148D6GG6de.cjs} +1 -1
  27. package/browser/cjs/{DVB6u6CMW0BP0hVE.cjs → CYerm2W99l2KPBvi.cjs} +1 -1
  28. package/browser/cjs/{BLiNHaIixsfHPXY9.cjs → CcI6Xqu71oPJzHn9.cjs} +1 -1
  29. package/browser/cjs/{X6rho6kckZI6ZZ4e.cjs → CeI4xTYeT1HNA6A9.cjs} +1 -1
  30. package/browser/cjs/{B4kmKkshzV8ARntP.cjs → CfF2KLFdaC0zd3_f.cjs} +1 -1
  31. package/browser/cjs/{BV4owIMsloMYJest.cjs → Cj2T53kut5JcFc8i.cjs} +1 -1
  32. package/browser/cjs/{oswoPekUju9VCkL5.cjs → ClKpLpJlPVRRZLb4.cjs} +1 -1
  33. package/browser/cjs/CtXWYme6DXI7F7FG.cjs +330 -0
  34. package/browser/cjs/{HheQRXip96598-Fn.cjs → D2Mnx4iE3-ZZAUYo.cjs} +4 -4
  35. package/browser/cjs/{qOL8BpauFAPxFerB.cjs → D6bRINKIpGC9nLG8.cjs} +1 -1
  36. package/browser/cjs/{DF0PSZgRc6j0En8S.cjs → D7vQli-7dc3EWalX.cjs} +2 -2
  37. package/browser/cjs/{uEcLLG9L8YPfQw1t.cjs → D8EM2LNQOFB-m3Ip.cjs} +1 -1
  38. package/browser/cjs/D8LOBI4VrIuXmSjE.cjs +6 -0
  39. package/browser/cjs/{C6ZB9-gbFjj6T8Ey.cjs → DDgp_o7j_kVyBTVF.cjs} +1 -1
  40. package/browser/cjs/{DRCtGpFYefiRXuy7.cjs → DLSn8PU4jyW3Z0jH.cjs} +1 -1
  41. package/browser/cjs/{D_FPak8QCvQp124t.cjs → DOddeoBKTvWI8vmf.cjs} +1 -1
  42. package/browser/cjs/{BHdrxR562sECFq-q.cjs → DQNpMOd9C5gJIVZD.cjs} +3 -3
  43. package/browser/cjs/{Cf5zyn64HRSdrkJB.cjs → DaCFa4lzSuY7nJsy.cjs} +1 -1
  44. package/browser/cjs/{D-AtfUZfDjosCujd.cjs → De5CenbwjYxQIUjA.cjs} +6 -6
  45. package/browser/cjs/{BzZkMt-HG6XURpiR.cjs → DeVyGmDi0N29f6zL.cjs} +2 -2
  46. package/browser/cjs/{C5j9ouUkt0kv-cEx.cjs → DiVZPGVKsDURRXCt.cjs} +199 -198
  47. package/browser/cjs/{112HmSoFq_28V_W3.cjs → DkiDKHYgj59t5uqh.cjs} +1 -1
  48. package/browser/cjs/{B5QU8E14jFTBMTj8.cjs → DrFxNPf3I5OYxUio.cjs} +2 -2
  49. package/browser/cjs/{C-R1xSAdYyKJn96M.cjs → DuXKNFI7_aZ-mHNx.cjs} +3 -3
  50. package/browser/cjs/{BvBhOx1XIU5QdKAp.cjs → Dx87wfp9EGHpTq0O.cjs} +1 -1
  51. package/browser/cjs/{C2QNVHRrkHEr61ep.cjs → M6LqOp1FBdjHXvQm.cjs} +1 -1
  52. package/browser/cjs/{CzNeJ8ULBsEbv74z.cjs → P5ZgvNthoszJMKsH.cjs} +1 -1
  53. package/browser/cjs/Tasq794NzuZtepKv.cjs +6 -0
  54. package/browser/cjs/{OOK_PNA4C3q1seyP.cjs → ZVYVL7ibG55_UdCu.cjs} +1 -1
  55. package/browser/cjs/{CI5dvIelBaZBBhKM.cjs → ccRxAkfVA6V32SCZ.cjs} +2 -2
  56. package/browser/cjs/{AANQR5Hv59qrl8yK.cjs → eqrSYSsCuaUhZEzI.cjs} +2 -2
  57. package/browser/cjs/{BRmJUpvQ69uWmsZE.cjs → iKm9_XJeihhG_Wrh.cjs} +1 -1
  58. package/browser/cjs/index.cjs +2 -2
  59. package/browser/esm/{CxmaG3EMNZaQkgGN.mjs → 57mD5C7t3WCJ8zSH.mjs} +1 -1
  60. package/browser/esm/{B91e0DiVdfcBcJCS.mjs → 8FOSArzJS3XbCUXA.mjs} +2 -2
  61. package/browser/esm/{B4RHl-gN4n8Xlm1o.mjs → 8yZGMrW8y0foTvMm.mjs} +10 -10
  62. package/browser/esm/{CtYT9gsvZl_MSSFZ.mjs → ARxCXmchHCKQTA_2.mjs} +1 -1
  63. package/browser/esm/{CfRxxXcJeryywvzr.mjs → B4ilNFV7s4BZpdUH.mjs} +4 -4
  64. package/browser/esm/{Cm_rRN0SZD799U31.mjs → B6mQkY6Bx-bQsCot.mjs} +5 -5
  65. package/browser/esm/{B9brRCO5ysQy1VBL.mjs → B9qFGVeAv3IKQu3x.mjs} +1 -1
  66. package/browser/esm/{CIdmRtclzUVDjje2.mjs → BC6rutjksU39v6-v.mjs} +1 -1
  67. package/{cdn/assets/qPFVrTc0N3O8ZO_D.js → browser/esm/BSnix2y_8F5Yc91Q.mjs} +1 -1
  68. package/{cdn/assets/DOUalwHAt9jLJvKl.js → browser/esm/BSrPuoCDC2enKMEG.mjs} +1 -1
  69. package/browser/esm/{1WGuxfFEfEElh_GP.mjs → BSuHiR3AQMNWKqu4.mjs} +2 -2
  70. package/browser/esm/{B64Pboi_a5VUGmCE.mjs → BV46ONI9KNfChnF5.mjs} +1 -1
  71. package/browser/esm/{Bd0krzMVb8bV0p7-.mjs → BVVHZuoC3gAcmV3G.mjs} +2 -2
  72. package/browser/esm/{DXjJZSqo57C-u0id.mjs → Bc26Y20y6sW894f1.mjs} +2 -2
  73. package/browser/esm/{Cp2W_DEPCWRa_oR7.mjs → Bc4BfWVHx4RgvObw.mjs} +1 -1
  74. package/{cdn/assets/DKUFa8dSHIp0CB0P.js → browser/esm/BqxRtWhVUmcs95D4.mjs} +1 -1
  75. package/browser/esm/{lw5FpxPetrQ0Y3AQ.mjs → BrO-VeoZUCjQ-YMp.mjs} +11 -11
  76. package/{cdn/assets/CV2CnM5eGEUwDHmB.js → browser/esm/BrzuM-rfgy9LopLt.mjs} +1 -1
  77. package/browser/esm/{CGZUlPDHVSsQDtFs.mjs → Bvf08wAeAcnRzNYF.mjs} +2 -2
  78. package/browser/esm/{ChpG-Tm7XNVgs11o.mjs → Bw2gc5qF_INEwQOu.mjs} +11 -11
  79. package/browser/esm/{C1QRsvQt7pab9U9j.mjs → ByvmXvYvi-zhAPZm.mjs} +6 -6
  80. package/browser/esm/{C1zEPCyBw0hOBOqP.mjs → C038TzoidxM4Hpwo.mjs} +3 -3
  81. package/browser/esm/{B9J0tIk1bqlPmXPM.mjs → C3dhX372aZTZH5Z3.mjs} +1 -1
  82. package/browser/esm/{Dbnor1Qe5KQV9-mi.mjs → C4T4SOEBiJe4ryFi.mjs} +199 -198
  83. package/browser/esm/{BeTTErxxM1HCOGmE.mjs → CBAdQyYTz2df7E43.mjs} +3 -3
  84. package/{cdn/assets/VThOmSWz6SC-ZrBE.js → browser/esm/CDEtfd-93o1VAQsZ.mjs} +1 -1
  85. package/browser/esm/{BVpMQyw4JDxy8Opo.mjs → CGlxqrkLgtXQ85bw.mjs} +1 -1
  86. package/browser/esm/{BpBlC5_5gupwmUaI.mjs → CJH49C79X6R0WGVT.mjs} +1 -1
  87. package/browser/esm/{Cz6pdJrfou-xsGmx.mjs → CVGLZBIXL7kdIb9k.mjs} +2 -2
  88. package/{cdn/assets/ge1gPJIvnDxXZCEZ.js → browser/esm/CbJB5KK1pqkZHN1C.mjs} +1 -1
  89. package/browser/esm/{DxRjJmHxF0a2wfsw.mjs → CbkE1469bIhbP-Mo.mjs} +3 -3
  90. package/browser/esm/{WwWPtVHwUI80RLc4.mjs → CcqV2CbFSXwesI5H.mjs} +2 -2
  91. package/browser/esm/{Oqf5CP2H-Cn3p8Fx.mjs → CeXaO0R4pf46ZEky.mjs} +1 -1
  92. package/browser/esm/{togQV8fvvl7mm0ZR.mjs → Cg0axuZAT7wXQpcQ.mjs} +2 -2
  93. package/browser/esm/{Cx7Ei6eMwI2RPYdH.mjs → ChLAXKL4PczlEkd3.mjs} +1 -1
  94. package/{cdn/assets/DVNmOUZV88JCV1DQ.js → browser/esm/ClohEdhfwCA9mduM.mjs} +1 -1
  95. package/browser/esm/{3GtN6IXxYOp_nMip.mjs → Coa7aAScVSOgGBrW.mjs} +1 -1
  96. package/browser/esm/{qAxfVEP4AjOClLVI.mjs → D57bFN-ddQ6dYDfA.mjs} +1 -1
  97. package/browser/esm/{71RxOId-S6FdkJL4.mjs → DDfbcnXOzePU0bV6.mjs} +14 -14
  98. package/browser/esm/{DM7FhwlS-0YfBrf7.mjs → DRpeRp1MJfO6sWHM.mjs} +2 -2
  99. package/browser/esm/{CIOUfwbGGMR_ahdI.mjs → DbcdghdySGcQbdhR.mjs} +1 -1
  100. package/browser/esm/{B7RU1pGpky7lyku7.mjs → DbetpqIPEQTvY1xk.mjs} +1 -1
  101. package/{cdn/assets/Df050Ja13SbBM4HD.js → browser/esm/Dd_fu20Ah-3VSPwx.mjs} +1 -1
  102. package/browser/esm/{CP6SX-7tax-7RIn1.mjs → DjZZLpcOa7Wqr2hg.mjs} +1 -1
  103. package/{cdn/assets/8bAudOR-T6B5FC0o.js → browser/esm/DkWoSiS3q8EYoHEf.mjs} +1 -1
  104. package/browser/esm/{D43G7bm5fuCJkTV1.mjs → DzGQup3K-Xr4l2mI.mjs} +1 -1
  105. package/browser/esm/{8mPMWI0-n5iE_fBE.mjs → HXlN7woeZdiZNoM2.mjs} +10847 -10624
  106. package/browser/esm/{DmhgqXFuBEtXjepy.mjs → Kics9A27o-V55MTV.mjs} +2 -2
  107. package/browser/esm/{c9j3PhULiEBno39b.mjs → RztqesxM9jECc1AY.mjs} +2 -2
  108. package/browser/esm/{SEUVwSx7lTfb1RmG.mjs → Su4FBUlBsBOaSSHP.mjs} +1 -1
  109. package/browser/esm/{CCfERPHtWRNQxRWc.mjs → WUh35irBWYv1uH9a.mjs} +1 -1
  110. package/{cdn/assets/3Jq5A87GqMiPCmOV.js → browser/esm/Yq3pDKJNZS_LMUD4.mjs} +1 -1
  111. package/browser/esm/{DnIcYyjHKctKiMo7.mjs → dREPrStBwiZN2OZo.mjs} +4 -4
  112. package/{cdn/assets/alx8cMSND6iOLLqL.js → browser/esm/gmO4OcDZuT3DShkT.mjs} +1 -1
  113. package/browser/esm/index.mjs +2 -2
  114. package/{cdn/assets/Cq-KAp0qsafCVizI.js → browser/esm/kd00ZI-HxidXLJqJ.mjs} +1 -1
  115. package/{cdn/assets/aR0uxxg-pJiXzFWj.js → browser/esm/sCkL4kvsq7N198Zd.mjs} +1 -1
  116. package/browser/esm/{BdYcPq1KjctYUPwp.mjs → ycpOuRgbyXxD_ilm.mjs} +3 -3
  117. package/cdn/assets/{CxmaG3EMNZaQkgGN.js → 57mD5C7t3WCJ8zSH.js} +1 -1
  118. package/cdn/assets/{CtYT9gsvZl_MSSFZ.js → ARxCXmchHCKQTA_2.js} +1 -1
  119. package/cdn/assets/{Ijhbwie0AHwSh9oK.js → B32VKy0gkck8W00P.js} +31 -31
  120. package/cdn/assets/{Cbrt5CxcmpuvqgQD.js → B5m1hfR50731DkQu.js} +8 -8
  121. package/cdn/assets/{B9brRCO5ysQy1VBL.js → B9qFGVeAv3IKQu3x.js} +1 -1
  122. package/cdn/assets/{B_QlR-WfkljoZZGW.js → B9wsXefXA2cG7UxN.js} +4 -4
  123. package/cdn/assets/{i_obahjZilhMhv1e.js → BA8pCS6s6oiwaY2j.js} +3 -3
  124. package/cdn/assets/{DxQlQppj-vwPoq3z.js → BC6NjRe2EE0bAyhL.js} +7 -7
  125. package/cdn/assets/{CIdmRtclzUVDjje2.js → BC6rutjksU39v6-v.js} +1 -1
  126. package/cdn/assets/{CaLV4_Ado8mKbczT.js → BIS74DKVLOVz9_IS.js} +2 -2
  127. package/{browser/esm/qPFVrTc0N3O8ZO_D.mjs → cdn/assets/BSnix2y_8F5Yc91Q.js} +1 -1
  128. package/{browser/esm/DOUalwHAt9jLJvKl.mjs → cdn/assets/BSrPuoCDC2enKMEG.js} +1 -1
  129. package/cdn/assets/{CzrONTzj1Zhg7H49.js → BUY_PcWr413fPtVe.js} +2 -2
  130. package/cdn/assets/{asSG7fnYpX4bmxCQ.js → BYZbDWpjjJ0TqPXC.js} +2 -2
  131. package/cdn/assets/{Cp2W_DEPCWRa_oR7.js → Bc4BfWVHx4RgvObw.js} +1 -1
  132. package/cdn/assets/{DumNKgOH9Bb8OfCR.js → BcnT9BijUGfF3cRT.js} +27 -27
  133. package/cdn/assets/{DX9gyEil_296JCEf.js → BebIByIJneHhebzS.js} +15 -15
  134. package/cdn/assets/{txuCK_4LZZfDYHVZ.js → Bhu4iTJxB9fyRLfS.js} +2 -2
  135. package/cdn/assets/{DrCUPk_5FJ06LQKp.js → Bp9sR1cU97UuKw_T.js} +16 -16
  136. package/{browser/esm/DKUFa8dSHIp0CB0P.mjs → cdn/assets/BqxRtWhVUmcs95D4.js} +1 -1
  137. package/{browser/esm/CV2CnM5eGEUwDHmB.mjs → cdn/assets/BrzuM-rfgy9LopLt.js} +1 -1
  138. package/cdn/assets/{BcNh4CpPrft6_kfp.js → BsANjZzMLr9BCCXp.js} +4 -4
  139. package/cdn/assets/{C7mO7MC87iP9jcd-.js → BwNGduWX_emuRpZx.js} +4 -4
  140. package/cdn/assets/{B490D3has8DtJqQf.js → Bywa95Qy4PUNNT6w.js} +4 -4
  141. package/cdn/assets/{BXK59v1RKmR9scc7.js → Bz9VzLHt6kzkfnXL.js} +2 -2
  142. package/cdn/assets/{B9J0tIk1bqlPmXPM.js → C3dhX372aZTZH5Z3.js} +1 -1
  143. package/cdn/assets/{D6cRDKIuQFiJe8jt.js → CBcmBbObjuEPMo8m.js} +4 -4
  144. package/{browser/esm/VThOmSWz6SC-ZrBE.mjs → cdn/assets/CDEtfd-93o1VAQsZ.js} +1 -1
  145. package/cdn/assets/{BVpMQyw4JDxy8Opo.js → CGlxqrkLgtXQ85bw.js} +1 -1
  146. package/cdn/assets/{BpBlC5_5gupwmUaI.js → CJH49C79X6R0WGVT.js} +1 -1
  147. package/cdn/assets/{CRsnVSBnxT6Aq3sM.js → CTuOB5mrFdrWEET8.js} +11 -11
  148. package/cdn/assets/{CchPIH0VNCpl7l-P.js → CX01wold09Ize7v_.js} +6 -6
  149. package/cdn/assets/{DFTtnJnPa1faFo62.js → CXTlDPv16oBlsGzH.js} +1 -1
  150. package/{browser/esm/ge1gPJIvnDxXZCEZ.mjs → cdn/assets/CbJB5KK1pqkZHN1C.js} +1 -1
  151. package/cdn/assets/{Oqf5CP2H-Cn3p8Fx.js → CeXaO0R4pf46ZEky.js} +1 -1
  152. package/cdn/assets/{Cx7Ei6eMwI2RPYdH.js → ChLAXKL4PczlEkd3.js} +1 -1
  153. package/{browser/esm/DVNmOUZV88JCV1DQ.mjs → cdn/assets/ClohEdhfwCA9mduM.js} +1 -1
  154. package/cdn/assets/{3GtN6IXxYOp_nMip.js → Coa7aAScVSOgGBrW.js} +1 -1
  155. package/cdn/assets/{DBW4v6mqmAouYUmj.js → D-M4rxL73ENvT9f8.js} +3 -3
  156. package/cdn/assets/{qAxfVEP4AjOClLVI.js → D57bFN-ddQ6dYDfA.js} +1 -1
  157. package/cdn/assets/{CWK7Q_RIpDDYsuPQ.js → DJhcbmTLBI4Q_T_7.js} +2 -2
  158. package/cdn/assets/{NgBQl4okwTzwQtl_.js → D_T-8iTzVbjyK1Q8.js} +1 -1
  159. package/cdn/assets/{CIOUfwbGGMR_ahdI.js → DbcdghdySGcQbdhR.js} +1 -1
  160. package/cdn/assets/{B7RU1pGpky7lyku7.js → DbetpqIPEQTvY1xk.js} +1 -1
  161. package/{browser/esm/Df050Ja13SbBM4HD.mjs → cdn/assets/Dd_fu20Ah-3VSPwx.js} +1 -1
  162. package/cdn/assets/{CP6SX-7tax-7RIn1.js → DjZZLpcOa7Wqr2hg.js} +1 -1
  163. package/{browser/esm/8bAudOR-T6B5FC0o.mjs → cdn/assets/DkWoSiS3q8EYoHEf.js} +1 -1
  164. package/cdn/assets/{BLMuOmR3m8mrgxIV.js → DtGY0rv3AlFXF7vX.js} +4 -4
  165. package/cdn/assets/{D43G7bm5fuCJkTV1.js → DzGQup3K-Xr4l2mI.js} +1 -1
  166. package/cdn/assets/{DwCISD3SEMYWstFl.js → EamTDY-fHJOrA7KO.js} +2 -2
  167. package/cdn/assets/{x-Py9V0Ex2u_j9p-.js → HSTLpjd1k1PGtsvO.js} +3 -3
  168. package/cdn/assets/{DMdyvoy4GIoB_umo.js → MW7hG02rIEvMqNA1.js} +3 -3
  169. package/cdn/assets/{ChEoY4P_ElL4ohmo.js → NsZj2r_WA8fbb3Qv.js} +10825 -10602
  170. package/cdn/assets/{sQUx5B9h9FJh8AKF.js → Pmu3vbMIdvyeF609.js} +199 -198
  171. package/cdn/assets/{SEUVwSx7lTfb1RmG.js → Su4FBUlBsBOaSSHP.js} +1 -1
  172. package/cdn/assets/{CCfERPHtWRNQxRWc.js → WUh35irBWYv1uH9a.js} +1 -1
  173. package/{browser/esm/3Jq5A87GqMiPCmOV.mjs → cdn/assets/Yq3pDKJNZS_LMUD4.js} +1 -1
  174. package/cdn/assets/{DcSB8I2WvED32hMN.js → Zwr0kQVX3woV-iEt.js} +3 -3
  175. package/cdn/assets/{DrfEE0n38AzW9BVW.js → _0ZfnVbOnCw2zmgb.js} +10 -10
  176. package/cdn/assets/{JJslNdu8rUjxG2t4.js → _JU04iYdxTDpRjzO.js} +2 -2
  177. package/{browser/esm/alx8cMSND6iOLLqL.mjs → cdn/assets/gmO4OcDZuT3DShkT.js} +1 -1
  178. package/{browser/esm/Cq-KAp0qsafCVizI.mjs → cdn/assets/kd00ZI-HxidXLJqJ.js} +1 -1
  179. package/cdn/assets/{DtXCu2PC4zJTDhai.js → qsyOt8aNWEIgFLpx.js} +2 -2
  180. package/{browser/esm/aR0uxxg-pJiXzFWj.mjs → cdn/assets/sCkL4kvsq7N198Zd.js} +1 -1
  181. package/cdn/index.js +2 -2
  182. package/cdn/loader.js +1 -1
  183. package/package.json +3 -3
  184. package/browser/cjs/BMjXU0UUcWAorSdX.cjs +0 -6
  185. package/browser/cjs/BoYzk_jqUNbOP3Wo.cjs +0 -6
  186. package/browser/cjs/CIoCkVZytWz2x6kB.cjs +0 -330
  187. package/browser/cjs/CMu7LdFipBKv9XgL.cjs +0 -6
  188. package/browser/cjs/CkSqp_NCPcrcFPei.cjs +0 -6
@@ -1,5 +1,5 @@
1
1
  "use strict";/**
2
- * @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.6.15
2
+ * @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.6.17
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,6 +1,6 @@
1
1
  "use strict";/**
2
- * @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.6.15
2
+ * @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.6.17
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.
6
- */Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./CIoCkVZytWz2x6kB.cjs"),I=["Ok","Cancel"],y=e.reactExports.memo(T=>{const{initialHyperlink:o=null,initialDisplay:k=null,onUpdateHyperlink:c,context:s,onOption:d,onValidateOption:r,onDone:i,options:x=I,defaultOption:p=x?.[0],cancelOption:l="Cancel",sx:E,...C}=T,O=e.reactExports.useMemo(()=>(o??s?.()?.getHyperlink())!==null,[]),g=e.reactExports.useMemo(()=>{let t=null,n=null;o&&(typeof o=="string"?n=o:t=o);const f=t??s?.()?.getHyperlink();return{address:n??f?.getAddress()??"",textToDisplay:f?.getDisplayText()??""}},[o,s]),[a,j]=e.reactExports.useState(g.address),[u,b]=e.reactExports.useState(()=>{const t=s?.().toTextUnformatted()??k;return t===g.address?"":t}),[v,m]=e.reactExports.useState(!1),F=e.reactExports.useCallback(t=>{b(t.target.value)},[]),h=e.reactExports.useCallback(async(t,n)=>null,[]),P=e.T(async t=>{t!==l&&c?.(a===""?null:{address:a},u),d?.(t,t===l,t===p),i?.()},[a,u,c,i,d,p,l]),D=e.T(t=>{j(t.target.value),h(t.target.value,null)},[r]),H=e.T(async t=>{let n=await Promise.resolve(r?.(t));try{n!==!1&&(n=await h(a,t))}catch{}return n??!0},[r]);return e.jsxRuntimeExports.jsx(e.k3,{title:(O?"Edit":"Insert")+" Link",options:x,onDone:i,onOption:t=>P(t),onValidateOption:H,defaultOption:p,cancelOption:l,autoFocusSel:".autoFocus",sx:{width:"480px",...E},...C,children:e.jsxRuntimeExports.jsxs(e.Box,{sx:{paddingTop:t=>t.spacing(1),paddingBottom:t=>t.spacing(0),rowGap:t=>t.spacing(1),display:"flex",flexDirection:"column"},children:[e.jsxRuntimeExports.jsx(e.FormControl,{sx:{paddingTop:t=>t.spacing(1.5),minWidth:135,width:"100%"},size:"small",children:e.jsxRuntimeExports.jsx(e.TextField,{label:"Address",placeholder:"Enter a url or cell reference.",onFocus:t=>{v||t.target?.select(),m(!0)},sx:{"& .MuiFormHelperText-root":{marginTop:t=>t.spacing(.5)}},InputLabelProps:{shrink:!0},InputProps:{inputProps:{className:"autoFocus",spellCheck:!1,autoComplete:"off",sx:{paddingTop:t=>t.spacing(1.25),paddingBottom:t=>t.spacing(.75),backgroundImage:`linear-gradient(${e.alpha("#fff",e.getOverlayAlpha(5))}, ${e.alpha("#fff",e.getOverlayAlpha(5))})`}}},value:a,onChange:D,onContextMenu:t=>{t.stopPropagation()}})}),e.jsxRuntimeExports.jsx(e.FormControl,{sx:{paddingTop:t=>t.spacing(1.5),minWidth:135,width:"100%"},size:"small",children:e.jsxRuntimeExports.jsx(e.TextField,{label:"Display Text",placeholder:a?.startsWith("#")?a.substring(1):a,onFocus:()=>{m(!0)},sx:{"& .MuiFormHelperText-root":{marginTop:t=>t.spacing(.5)}},InputLabelProps:{shrink:!0},InputProps:{inputProps:{spellCheck:!1,autoComplete:"off",sx:{paddingTop:t=>t.spacing(1.25),paddingBottom:t=>t.spacing(.75),backgroundImage:`linear-gradient(${e.alpha("#fff",e.getOverlayAlpha(5))}, ${e.alpha("#fff",e.getOverlayAlpha(5))})`}}},value:u,onChange:F,onContextMenu:t=>{t.stopPropagation()}})})]})})});exports.HyperlinkDialog=y,exports.default=y;
6
+ */Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./CtXWYme6DXI7F7FG.cjs"),I=["Ok","Cancel"],y=e.reactExports.memo(T=>{const{initialHyperlink:o=null,initialDisplay:k=null,onUpdateHyperlink:c,context:s,onOption:d,onValidateOption:r,onDone:i,options:x=I,defaultOption:p=x?.[0],cancelOption:l="Cancel",sx:E,...C}=T,O=e.reactExports.useMemo(()=>(o??s?.()?.getHyperlink())!==null,[]),g=e.reactExports.useMemo(()=>{let t=null,n=null;o&&(typeof o=="string"?n=o:t=o);const f=t??s?.()?.getHyperlink();return{address:n??f?.getAddress()??"",textToDisplay:f?.getDisplayText()??""}},[o,s]),[a,j]=e.reactExports.useState(g.address),[u,b]=e.reactExports.useState(()=>{const t=s?.().toTextUnformatted()??k;return t===g.address?"":t}),[v,m]=e.reactExports.useState(!1),F=e.reactExports.useCallback(t=>{b(t.target.value)},[]),h=e.reactExports.useCallback(async(t,n)=>null,[]),P=e.T(async t=>{t!==l&&c?.(a===""?null:{address:a},u),d?.(t,t===l,t===p),i?.()},[a,u,c,i,d,p,l]),D=e.T(t=>{j(t.target.value),h(t.target.value,null)},[r]),H=e.T(async t=>{let n=await Promise.resolve(r?.(t));try{n!==!1&&(n=await h(a,t))}catch{}return n??!0},[r]);return e.jsxRuntimeExports.jsx(e.k3,{title:(O?"Edit":"Insert")+" Link",options:x,onDone:i,onOption:t=>P(t),onValidateOption:H,defaultOption:p,cancelOption:l,autoFocusSel:".autoFocus",sx:{width:"480px",...E},...C,children:e.jsxRuntimeExports.jsxs(e.Box,{sx:{paddingTop:t=>t.spacing(1),paddingBottom:t=>t.spacing(0),rowGap:t=>t.spacing(1),display:"flex",flexDirection:"column"},children:[e.jsxRuntimeExports.jsx(e.FormControl,{sx:{paddingTop:t=>t.spacing(1.5),minWidth:135,width:"100%"},size:"small",children:e.jsxRuntimeExports.jsx(e.TextField,{label:"Address",placeholder:"Enter a url or cell reference.",onFocus:t=>{v||t.target?.select(),m(!0)},sx:{"& .MuiFormHelperText-root":{marginTop:t=>t.spacing(.5)}},InputLabelProps:{shrink:!0},InputProps:{inputProps:{className:"autoFocus",spellCheck:!1,autoComplete:"off",sx:{paddingTop:t=>t.spacing(1.25),paddingBottom:t=>t.spacing(.75),backgroundImage:`linear-gradient(${e.alpha("#fff",e.getOverlayAlpha(5))}, ${e.alpha("#fff",e.getOverlayAlpha(5))})`}}},value:a,onChange:D,onContextMenu:t=>{t.stopPropagation()}})}),e.jsxRuntimeExports.jsx(e.FormControl,{sx:{paddingTop:t=>t.spacing(1.5),minWidth:135,width:"100%"},size:"small",children:e.jsxRuntimeExports.jsx(e.TextField,{label:"Display Text",placeholder:a?.startsWith("#")?a.substring(1):a,onFocus:()=>{m(!0)},sx:{"& .MuiFormHelperText-root":{marginTop:t=>t.spacing(.5)}},InputLabelProps:{shrink:!0},InputProps:{inputProps:{spellCheck:!1,autoComplete:"off",sx:{paddingTop:t=>t.spacing(1.25),paddingBottom:t=>t.spacing(.75),backgroundImage:`linear-gradient(${e.alpha("#fff",e.getOverlayAlpha(5))}, ${e.alpha("#fff",e.getOverlayAlpha(5))})`}}},value:u,onChange:F,onContextMenu:t=>{t.stopPropagation()}})})]})})});exports.HyperlinkDialog=y,exports.default=y;
@@ -1,12 +1,12 @@
1
1
  "use strict";/**
2
- * @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.6.15
2
+ * @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.6.17
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.
6
- */Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const J=require("./CIoCkVZytWz2x6kB.cjs");exports.fromBufferJSON=async(p,l)=>{let u=p;(function(t){if(t.byteLength<4)return!1;const i=new Uint8Array(t),r={gzip:[31,139],zip:[80,75,3,4],bz2:[66,90,104],br:[206,178,207,129]},n=Object.keys(r);for(let f=0;f<n.length;f++){const o=n[f],e=r[o];let a=!0;for(let s=0;s<e.length;s++)if(i[s]!==e[s]){a=!1;break}if(a)return o}return!1})(u)&&(u=await(async function(t,i="gzip"){let r;typeof SharedArrayBuffer<"u"&&t instanceof SharedArrayBuffer?(r=new ArrayBuffer(t.byteLength),new Uint8Array(r).set(new Uint8Array(t))):r=t;const n=new Blob([r]).stream(),f=new DecompressionStream(i),o=n.pipeThrough(f);return(await new Response(o).blob()).arrayBuffer()})(u));let b=new TextDecoder().decode(u);const g=JSON.parse(b),w={...l?.createWorkbookOptions??{},json:g};return new J.wy(w)},exports.toBufferJSON=async(p,l)=>{const u=await p.toJSON(),b=l?.whiteSpace??0;let g;l?.beforeWrite?.(p,u),g=b===0?JSON.stringify(u):(function(i,r=2){const n=[];function f(o){const e=r*o;return n[e]===void 0&&(n[e]=" ".repeat(e)),n[e]}return(function o(e,a,s,m){if(e==null||typeof e!="object")return JSON.stringify(e);const A=f(a),O=f(a+1);if(Array.isArray(e)){const c=e.length;if(c===0)return"[]";if(s!==0)return JSON.stringify(e);let y=`[
6
+ */Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const J=require("./CtXWYme6DXI7F7FG.cjs");exports.fromBufferJSON=async(w,l)=>{let u=w;(function(t){if(t.byteLength<4)return!1;const i=new Uint8Array(t),r={gzip:[31,139],zip:[80,75,3,4],bz2:[66,90,104],br:[206,178,207,129]},n=Object.keys(r);for(let f=0;f<n.length;f++){const o=n[f],e=r[o];let a=!0;for(let s=0;s<e.length;s++)if(i[s]!==e[s]){a=!1;break}if(a)return o}return!1})(u)&&(u=await(async function(t,i="gzip"){let r;typeof SharedArrayBuffer<"u"&&t instanceof SharedArrayBuffer?(r=new ArrayBuffer(t.byteLength),new Uint8Array(r).set(new Uint8Array(t))):r=t;const n=new Blob([r]).stream(),f=new DecompressionStream(i),o=n.pipeThrough(f);return(await new Response(o).blob()).arrayBuffer()})(u));let b=new TextDecoder().decode(u);const g=JSON.parse(b),p={...l?.createWorkbookOptions??{},json:g};return new J.Zy(p)},exports.toBufferJSON=async(w,l)=>{const u=await w.toJSON(),b=l?.whiteSpace??0;let g;l?.beforeWrite?.(w,u),g=b===0?JSON.stringify(u):(function(i,r=2){const n=[];function f(o){const e=r*o;return n[e]===void 0&&(n[e]=" ".repeat(e)),n[e]}return(function o(e,a,s,m){if(e==null||typeof e!="object")return JSON.stringify(e);const A=f(a),O=f(a+1);if(Array.isArray(e)){const c=e.length;if(c===0)return"[]";if(s!==0)return JSON.stringify(e);let y=`[
7
7
  `;for(let h=0;h<c;h++)y+=O+o(e[h],a+1,s+1,!0),h<c-1&&(y+=`,
8
8
  `);return y+=`
9
9
  `+A+"]",y}const B=Object.keys(e),d=B.length;if(d===0)return"{}";if(!(s<2))return JSON.stringify(e);let S=`{
10
10
  `;m||(s=0);for(let c=0;c<d;c++){const y=B[c];S+=O+JSON.stringify(y)+": "+o(e[y],a+1,s,!1),c<d-1&&(S+=`,
11
11
  `)}return S+=`
12
- `+A+"}",S})(i,0,0,!1)})(u,b);let w=new TextEncoder().encode(g).buffer;const t=l?.compress??!0;return t&&(w=await(async function(i,r="gzip"){let n;typeof SharedArrayBuffer<"u"&&i instanceof SharedArrayBuffer?(n=new ArrayBuffer(i.byteLength),new Uint8Array(n).set(new Uint8Array(i))):n=i;const f=new ReadableStream({start(a){a.enqueue(n),a.close()}}),o=new CompressionStream(r),e=f.pipeThrough(o);return(await new Response(e).blob()).arrayBuffer()})(w,typeof t=="string"?t:void 0)),w};
12
+ `+A+"}",S})(i,0,0,!1)})(u,b);let p=new TextEncoder().encode(g).buffer;const t=l?.compress??!0;return t&&(p=await(async function(i,r="gzip"){let n;typeof SharedArrayBuffer<"u"&&i instanceof SharedArrayBuffer?(n=new ArrayBuffer(i.byteLength),new Uint8Array(n).set(new Uint8Array(i))):n=i;const f=new ReadableStream({start(a){a.enqueue(n),a.close()}}),o=new CompressionStream(r),e=f.pipeThrough(o);return(await new Response(e).blob()).arrayBuffer()})(p,typeof t=="string"?t:void 0)),p};
@@ -1,5 +1,5 @@
1
1
  "use strict";/**
2
- * @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.6.15
2
+ * @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.6.17
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
  "use strict";/**
2
- * @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.6.15
2
+ * @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.6.17
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
  "use strict";/**
2
- * @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.6.15
2
+ * @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.6.17
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.
@@ -0,0 +1,6 @@
1
+ "use strict";/**
2
+ * @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.6.17
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 e=require("./CtXWYme6DXI7F7FG.cjs"),D=["Input"],M=e.reactExports.memo(e.reactExports.forwardRef((f,h)=>{const{initialValue:T="",onOption:y,onValidateOption:p,onInputOption:r,onValidateInputOption:i,onDone:s,inputProps:l,inputLabel:O,inputType:E,inputPlaceHolder:j,options:u=D,autoFocusSel:v=".autoFocus",cancelOption:c,defaultOption:d=u?.[0],...w}=f,[F,S]=e.reactExports.useState(!1),[o,P]=e.reactExports.useState(T),[b,C]=e.reactExports.useState(""),[I,k]=e.reactExports.useState(!0),n=e.T(async(t,a)=>{if(!i)return!0;const g=await i?.(t,a);C(g?.message??"");const m=g?.valid??!0;return k(m),m},[i]),x=e.T(async t=>{r?.(o,t)},[o,r,s,y,c,d]),R=e.T(async t=>{t.keyCode===e.eo.Enter&&await n?.(o,null)},[o,x]),V=e.T(t=>{P(t.target.value),n?.(t.target.value,null)},[p]),B=e.T(async t=>{let a=await n(o,t);try{a!==!1&&(a=await n(o,t))}catch{}return a??!0},[o,p]);return e.jsxRuntimeExports.jsx(e.k3,{options:u,onDone:s,onOption:(t,a)=>{a||x(t)},onValidateOption:B,cancelOption:c,defaultOption:d,autoFocusSel:v,ref:h,...w,children:e.jsxRuntimeExports.jsx(e.Box,{sx:{paddingTop:t=>t.spacing(1),paddingBottom:t=>t.spacing(0)},children:e.jsxRuntimeExports.jsx(e.FormControl,{sx:{paddingTop:t=>t.spacing(1.5),minWidth:135,width:"100%"},size:"small",children:e.jsxRuntimeExports.jsx(e.TextField,{onFocus:t=>{F||t.target?.select(),S(!0)},type:E,label:O,helperText:b||" ",sx:{width:"100%","& .MuiFormHelperText-root":{marginTop:t=>t.spacing(.5),color:I?void 0:"error.main"}},InputLabelProps:{shrink:!0},InputProps:{inputProps:{placeholder:j,spellCheck:!1,autoComplete:"off",...l,className:e.z0("autoFocus",l?.className),sx:{paddingTop:t=>t.spacing(1.25),paddingBottom:t=>t.spacing(.75),backgroundImage:`linear-gradient(${e.alpha("#fff",e.getOverlayAlpha(5))}, ${e.alpha("#fff",e.getOverlayAlpha(5))})`}}},value:o,onChange:V,onKeyDown:R,onContextMenu:t=>{t.stopPropagation()}})})})})}));exports.default=M;
@@ -1,5 +1,5 @@
1
1
  "use strict";/**
2
- * @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.6.15
2
+ * @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.6.17
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,6 +1,6 @@
1
1
  "use strict";/**
2
- * @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.6.15
2
+ * @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.6.17
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.
6
- */Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});exports.TypeScriptCompiler=class{constructor(r={}){this.workerWrapper=null}async getWorkerWrapper(){if(this.workerWrapper)return this.workerWrapper;const{createCompilerWorker:r}=await Promise.resolve().then(()=>require("./C5j9ouUkt0kv-cEx.cjs"));return this.workerWrapper=await r(),this.workerWrapper}async compileModule(r){try{return(await this.getWorkerWrapper()).execute(r)}catch(e){throw console.error("Failed to compile using worker:",e),e}}terminate(){this.workerWrapper?.terminate(),this.workerWrapper=null}};
6
+ */Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});exports.TypeScriptCompiler=class{constructor(r={}){this.workerWrapper=null}async getWorkerWrapper(){if(this.workerWrapper)return this.workerWrapper;const{createCompilerWorker:r}=await Promise.resolve().then(()=>require("./DiVZPGVKsDURRXCt.cjs"));return this.workerWrapper=await r(),this.workerWrapper}async compileModule(r){try{return(await this.getWorkerWrapper()).execute(r)}catch(e){throw console.error("Failed to compile using worker:",e),e}}terminate(){this.workerWrapper?.terminate(),this.workerWrapper=null}};
@@ -1,6 +1,6 @@
1
1
  "use strict";/**
2
- * @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.6.15
2
+ * @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.6.17
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.
6
- */Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const y=require("./CIoCkVZytWz2x6kB.cjs");exports.fromBufferCSV=async(a,c)=>{const{papaParseConfig:i,setValuesOptions:f,createWorkbookOptions:h}=c??{},o=await Promise.resolve().then(()=>require("./DVB6u6CMW0BP0hVE.cjs")).then(n=>n.p),w=new TextDecoder().decode(a);let p=-1;const t=new y.wy(h),u=t.getSelectedSheet().getEntireRange().startIncrementalUpdates({orientation:y.w.Orientation.Row}),d=c?.onProgress;let e=0;const r={...i,transform:(n,g)=>{i?.transform&&(n=i.transform(n,g));const s=g;s===0&&p++;let l=n??"";return u.pushAt(p,s,l),e++,e%1e5==0&&d?.(e),n}};return o.parse(w,r).data,u.apply({textParser:!0,...f}),t},exports.toBufferCSV=async(a,c)=>{const{trimLeadingBlankRow:i=!0,trimLeadingBlankColumn:f=!0,excludeHidden:h=!1,sheetKey:o=null,papaParseConfig:w={}}=c||{},p=await Promise.resolve().then(()=>require("./DVB6u6CMW0BP0hVE.cjs")).then(s=>s.p);if(!a)throw new Error("workbook must be specified");let t=null;if(o===null?t=a.getSelectedSheet():typeof o=="number"?t=a.getSheets().getItems()[o]:typeof o=="string"&&(t=a.getSheets().getByName(o)),!t)throw new Error("invalid sheetKey specified");let u=null;const d=[];let e=null,r=t.getUsedRange({excludeHidden:h});if(!r)throw new Error("Nothing to export");if(!i||!f){const s=i?r.getRowStart():0,l=f?r.getColumnStart():0;r=r.getOffsetTo(s,l)}r.forEach((s,l)=>{const m=l.getCoords(),S=l.getCell();u!==m.rowIndex&&(e&&d.push(e),e=[],u=m.rowIndex);const x=S.toTextUnformatted()??"";e.push(x)},{includeEmpty:!0,address:null}),e&&d.push(e);const n={...w},g=p.unparse(d,n);return new TextEncoder().encode(g).buffer};
6
+ */Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const y=require("./CtXWYme6DXI7F7FG.cjs");exports.fromBufferCSV=async(a,c)=>{const{papaParseConfig:i,setValuesOptions:f,createWorkbookOptions:h}=c??{},o=await Promise.resolve().then(()=>require("./CYerm2W99l2KPBvi.cjs")).then(n=>n.p),m=new TextDecoder().decode(a);let p=-1;const t=new y.Zy(h),u=t.getSelectedSheet().getEntireRange().startIncrementalUpdates({orientation:y.w.Orientation.Row}),d=c?.onProgress;let e=0;const r={...i,transform:(n,g)=>{i?.transform&&(n=i.transform(n,g));const s=g;s===0&&p++;let l=n??"";return u.pushAt(p,s,l),e++,e%1e5==0&&d?.(e),n}};return o.parse(m,r).data,u.apply({textParser:!0,...f}),t},exports.toBufferCSV=async(a,c)=>{const{trimLeadingBlankRow:i=!0,trimLeadingBlankColumn:f=!0,excludeHidden:h=!1,sheetKey:o=null,papaParseConfig:m={}}=c||{},p=await Promise.resolve().then(()=>require("./CYerm2W99l2KPBvi.cjs")).then(s=>s.p);if(!a)throw new Error("workbook must be specified");let t=null;if(o===null?t=a.getSelectedSheet():typeof o=="number"?t=a.getSheets().getItems()[o]:typeof o=="string"&&(t=a.getSheets().getByName(o)),!t)throw new Error("invalid sheetKey specified");let u=null;const d=[];let e=null,r=t.getUsedRange({excludeHidden:h});if(!r)throw new Error("Nothing to export");if(!i||!f){const s=i?r.getRowStart():0,l=f?r.getColumnStart():0;r=r.getOffsetTo(s,l)}r.forEach((s,l)=>{const w=l.getCoords(),S=l.getCell();u!==w.rowIndex&&(e&&d.push(e),e=[],u=w.rowIndex);const x=S.toTextUnformatted()??"";e.push(x)},{includeEmpty:!0,address:null}),e&&d.push(e);const n={...m},g=p.unparse(d,n);return new TextEncoder().encode(g).buffer};
@@ -1,5 +1,5 @@
1
1
  "use strict";/**
2
- * @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.6.15
2
+ * @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.6.17
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,6 +1,6 @@
1
1
  "use strict";/**
2
- * @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.6.15
2
+ * @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.6.17
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.
6
- */Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./CIoCkVZytWz2x6kB.cjs");exports.SheetXL=e.SheetXL,exports.default=e.SheetXL;
6
+ */Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./CtXWYme6DXI7F7FG.cjs");exports.SheetXL=e.SheetXL,exports.default=e.SheetXL;
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.6.15
2
+ * @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.6.17
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.6.15
2
+ * @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.6.17
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.
@@ -10,7 +10,7 @@ class o {
10
10
  }
11
11
  async getWorkerWrapper() {
12
12
  if (this.workerWrapper) return this.workerWrapper;
13
- const { createCompilerWorker: r } = await import("./Dbnor1Qe5KQV9-mi.mjs");
13
+ const { createCompilerWorker: r } = await import("./C4T4SOEBiJe4ryFi.mjs");
14
14
  return this.workerWrapper = await r(), this.workerWrapper;
15
15
  }
16
16
  async compileModule(r) {
@@ -1,11 +1,11 @@
1
- import { l as E, j as t, r as o, n as p, w as b, T as M, b as le, o as ae, x as re, D as ce, B as O, p as g, q as m, s as pe, Z as j, t as de, f as Z, d as R, y as ue, V as fe, H as xe, z as ge, g as T, A as Q, E as me, G as he, J as Oe, M as je, c as Ce, I as ye, S as be } from "./8mPMWI0-n5iE_fBE.mjs";
1
+ import { n as E, j as t, r as o, o as p, w as b, T as M, e as le, p as ae, x as re, D as ce, B as O, q as g, s as m, t as pe, Z as j, y as de, h as Z, f as R, z as ue, V as fe, H as xe, A as ge, g as T, E as Q, G as me, J as he, K as Oe, M as je, d as Ce, I as ye, S as be } from "./HXlN7woeZdiZNoM2.mjs";
2
2
  /**
3
- * @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.6.15
3
+ * @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.6.17
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.
7
7
  */
8
- 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"), Te = E(t.jsx("path", { d: "m20 12-1.41-1.41L13 16.17V4h-2v12.17l-5.58-5.59L4 12l8 8z" }), "ArrowDownward"), ve = 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((v) => {
8
+ 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"), Te = E(t.jsx("path", { d: "m20 12-1.41-1.41L13 16.17V4h-2v12.17l-5.58-5.59L4 12l8 8z" }), "ArrowDownward"), ve = 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"), P = o.memo((v) => {
9
9
  const { label: h, value: c, options: l, onSelect: d, tabIndex: C = 0, ...F } = v, [I, y] = o.useState(() => ee(c, l));
10
10
  o.useEffect(() => {
11
11
  y(ee(c, l));
@@ -25,15 +25,15 @@ const Se = { "By Rows": !0, "By Columns": !1 }, ee = (v, h) => {
25
25
  }, Ee = o.memo((v) => {
26
26
  const { replace: h = !1, findText: c, replaceText: l, findOptions: d, replaceOptions: C, title: F, onHide: I, onFindOrReplace: y, ...D } = v, a = o.useRef(null), u = o.useRef(null), V = o.useRef(null), H = o.useRef(null), $ = o.useRef(null), z = o.useRef(null), B = (e, n) => {
27
27
  n && (n.start(e, { center: !1 }), setTimeout(() => n.stop(e), 180));
28
- }, [W, w] = o.useState(!1), [L, se] = o.useState(!1), [f, A] = o.useState(h), [N, P] = o.useState(!1), [G, U] = 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 = M(async (e, n, s, S) => {
28
+ }, [W, w] = o.useState(!1), [L, se] = o.useState(!1), [f, A] = o.useState(h), [N, K] = o.useState(!1), [G, U] = 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 = M(async (e, n, s, S) => {
29
29
  if (!y) return;
30
30
  const x = { ...i };
31
31
  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;
32
32
  const oe = await y({ autoFocus: S, ...x });
33
- P(oe === 0);
33
+ K(oe === 0);
34
34
  }, [i, y]);
35
35
  o.useEffect(() => {
36
- P(!1);
36
+ K(!1);
37
37
  }, [i, L, f]);
38
38
  const q = M((e, n) => {
39
39
  if (e.keyCode === le.Enter) {
@@ -58,7 +58,7 @@ const Se = { "By Rows": !0, "By Columns": !1 }, ee = (v, h) => {
58
58
  }, [W, i]);
59
59
  const [ie, { width: X }] = ae();
60
60
  return t.jsx(re, { ref: J, title: F ?? (f ? "Find & Replace" : "Find"), initialPosition: { y: "35" }, autoFocusSel: ".input", onHide: I, onFocus: () => U(!0), onBlur: () => {
61
- U(!1), P(!1);
61
+ U(!1), K(!1);
62
62
  }, PaperProps: { elevation: G ? 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) => {
63
63
  if (e.key === "h" && e.ctrlKey) A(!0), a.current?.contains(document.activeElement) && u.current?.focus();
64
64
  else if (e.key === "f" && e.ctrlKey) a.current?.focus();
@@ -123,17 +123,17 @@ const Se = { "By Rows": !0, "By Columns": !1 }, ee = (v, h) => {
123
123
  k(!0, !0, !0);
124
124
  }, touchRippleRef: z, label: "Replace All", shortcut: { key: "Enter", modifiers: [j.Ctrl, j.Alt] }, icon: m(t.jsx(he, {})), disabled: !i.findText })] }) })] })] }), t.jsx(Q, { in: L, timeout: _, onExit: () => {
125
125
  a.current?.focus();
126
- }, 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: X >= 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) => {
126
+ }, 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: X >= 413 ? "row" : "column", justifyContent: "space-evenly", alignItems: "center", rowGap: (e) => e.spacing(2) }, tabIndex: -1, children: [t.jsx(P, { label: "Within", value: i.scope, options: Y, onSelect: (e) => {
127
127
  r((n) => {
128
128
  const s = { ...n };
129
129
  return s.scope = e, s;
130
130
  });
131
- } }), t.jsx(K, { label: "Search", value: i.findOptions.orientation !== b.Orientation.Column, options: Se, onSelect: (e) => {
131
+ } }), t.jsx(P, { label: "Search", value: i.findOptions.orientation !== b.Orientation.Column, options: Se, onSelect: (e) => {
132
132
  r((n) => {
133
133
  const s = { ...n };
134
134
  return s.findOptions.orientation = e ? b.Orientation.Row : b.Orientation.Column, s;
135
135
  });
136
- } }), 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) => {
136
+ } }), t.jsx(P, { 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) => {
137
137
  r((n) => {
138
138
  const s = { ...n };
139
139
  return s.findOptions.fields = [e], s;
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.6.15
2
+ * @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.6.17
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,12 +1,12 @@
1
- import { az as y, w as C } from "./8mPMWI0-n5iE_fBE.mjs";
1
+ import { az as y, w as C } from "./HXlN7woeZdiZNoM2.mjs";
2
2
  /**
3
- * @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.6.15
3
+ * @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.6.17
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.
7
7
  */
8
8
  const k = async (a, p) => {
9
- const { trimLeadingBlankRow: i = !0, trimLeadingBlankColumn: f = !0, excludeHidden: m = !1, sheetKey: r = null, papaParseConfig: w = {} } = p || {}, u = await import("./SEUVwSx7lTfb1RmG.mjs").then((s) => s.p);
9
+ const { trimLeadingBlankRow: i = !0, trimLeadingBlankColumn: f = !0, excludeHidden: m = !1, sheetKey: r = null, papaParseConfig: w = {} } = p || {}, u = await import("./Su4FBUlBsBOaSSHP.mjs").then((s) => s.p);
10
10
  if (!a) throw new Error("workbook must be specified");
11
11
  let t = null;
12
12
  if (r === null ? t = a.getSelectedSheet() : typeof r == "number" ? t = a.getSheets().getItems()[r] : typeof r == "string" && (t = a.getSheets().getByName(r)), !t) throw new Error("invalid sheetKey specified");
@@ -27,7 +27,7 @@ const k = async (a, p) => {
27
27
  const o = { ...w }, g = u.unparse(c, o);
28
28
  return new TextEncoder().encode(g).buffer;
29
29
  }, b = async (a, p) => {
30
- const { papaParseConfig: i, setValuesOptions: f, createWorkbookOptions: m } = p ?? {}, r = await import("./SEUVwSx7lTfb1RmG.mjs").then((o) => o.p), w = new TextDecoder().decode(a);
30
+ const { papaParseConfig: i, setValuesOptions: f, createWorkbookOptions: m } = p ?? {}, r = await import("./Su4FBUlBsBOaSSHP.mjs").then((o) => o.p), w = new TextDecoder().decode(a);
31
31
  let u = -1;
32
32
  const t = new y(m), d = t.getSelectedSheet().getEntireRange().startIncrementalUpdates({ orientation: C.Orientation.Row }), c = p?.onProgress;
33
33
  let e = 0;
@@ -1,11 +1,11 @@
1
- import { r as h, e as i, T as j, j as n, k as C, B as O, F as a, C as l, w as r } from "./8mPMWI0-n5iE_fBE.mjs";
1
+ import { r as h, b as i, T as j, j as n, k as C, B as O, F as a, C as l, w as r } from "./HXlN7woeZdiZNoM2.mjs";
2
2
  /**
3
- * @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.6.15
3
+ * @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.6.17
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.
7
7
  */
8
- const S = ({ range: u, options: c, cell: x, onDone: d, ...p }) => {
8
+ const H = ({ range: u, options: c, cell: x, onDone: d, ...p }) => {
9
9
  const [t, s] = h.useState(c ?? i.DefaultRangeOptions), v = j((e) => {
10
10
  let o = null;
11
11
  e === "Sort" && (o = { ...c, options: t }), d?.(o);
@@ -16,6 +16,6 @@ const S = ({ range: u, options: c, cell: x, onDone: d, ...p }) => {
16
16
  }) }), label: "Row Sort", labelPlacement: "end" }), n.jsx(a, { control: n.jsx(l, { checked: t.includeHidden, onChange: () => s((e) => ({ ...e, includeHidden: !e.includeHidden })) }), label: "Include Hidden", labelPlacement: "end" })] }) });
17
17
  };
18
18
  export {
19
- S as SortDialog,
20
- S as default
19
+ H as SortDialog,
20
+ H as default
21
21
  };
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.6.15
2
+ * @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.6.17
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.6.15
2
+ * @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.6.17
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.6.15
2
+ * @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.6.17
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.6.15
2
+ * @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.6.17
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,6 +1,6 @@
1
- import { az as J } from "./8mPMWI0-n5iE_fBE.mjs";
1
+ import { az as J } from "./HXlN7woeZdiZNoM2.mjs";
2
2
  /**
3
- * @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.6.15
3
+ * @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.6.17
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.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.6.15
2
+ * @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.6.17
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,6 +1,6 @@
1
- import { ao as $s, aj as D, aa as ft, ap as Ye, aq as Ws, ar as Xt, as as jn, at as Gs, au as Ks, av as Xe, aw as zs, am as se, ax as Ue, ay as Fe } from "./8mPMWI0-n5iE_fBE.mjs";
1
+ import { ao as $s, aj as D, aa as ft, ap as Ye, aq as Ws, ar as Xt, as as jn, at as Gs, au as Ks, av as Xe, aw as zs, am as se, ax as Ue, ay as Fe } from "./HXlN7woeZdiZNoM2.mjs";
2
2
  /**
3
- * @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.6.15
3
+ * @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.6.17
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.
@@ -1,6 +1,6 @@
1
- import { r as a, T, j as n, k, B as D, R as N, F as S, C as w } from "./8mPMWI0-n5iE_fBE.mjs";
1
+ import { r as a, T, j as n, k, B as D, R as N, F as S, C as w } from "./HXlN7woeZdiZNoM2.mjs";
2
2
  /**
3
- * @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.6.15
3
+ * @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.6.17
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.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.6.15
2
+ * @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.6.17
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.6.15
2
+ * @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.6.17
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,24 +1,24 @@
1
- import { r as o, T as e, b as z, j as i, k as E, B as K, c as R, f as W, d as O, aI as q, g as y } from "./8mPMWI0-n5iE_fBE.mjs";
1
+ import { r as e, T as o, e as z, j as i, k as E, B as K, d as R, h as W, f as O, aI as q, g as y } from "./HXlN7woeZdiZNoM2.mjs";
2
2
  /**
3
- * @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.6.15
3
+ * @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.6.17
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.
7
7
  */
8
- const A = ["Input"], J = o.memo(o.forwardRef((w, T) => {
9
- const { initialValue: I = "", onOption: F, onValidateOption: l, onInputOption: r, onValidateInputOption: p, onDone: u, inputProps: c, inputLabel: P, inputType: S, inputPlaceHolder: b, options: d = A, autoFocusSel: j = ".autoFocus", cancelOption: g, defaultOption: f = d?.[0], ...k } = w, [v, C] = o.useState(!1), [t, V] = o.useState(I), [B, D] = o.useState(""), [H, L] = o.useState(!0), s = e(async (a, n) => {
8
+ const A = ["Input"], J = e.memo(e.forwardRef((w, T) => {
9
+ const { initialValue: I = "", onOption: F, onValidateOption: l, onInputOption: r, onValidateInputOption: p, onDone: u, inputProps: c, inputLabel: P, inputType: S, inputPlaceHolder: j, options: d = A, autoFocusSel: k = ".autoFocus", cancelOption: g, defaultOption: f = d?.[0], ...v } = w, [C, b] = e.useState(!1), [t, V] = e.useState(I), [B, D] = e.useState(""), [H, L] = e.useState(!0), s = o(async (a, n) => {
10
10
  if (!p) return !0;
11
11
  const h = await p?.(a, n);
12
12
  D(h?.message ?? "");
13
13
  const x = h?.valid ?? !0;
14
14
  return L(x), x;
15
- }, [p]), m = e(async (a) => {
15
+ }, [p]), m = o(async (a) => {
16
16
  r?.(t, a);
17
- }, [t, r, u, F, g, f]), M = e(async (a) => {
17
+ }, [t, r, u, F, g, f]), M = o(async (a) => {
18
18
  a.keyCode === z.Enter && await s?.(t, null);
19
- }, [t, m]), N = e((a) => {
19
+ }, [t, m]), N = o((a) => {
20
20
  V(a.target.value), s?.(a.target.value, null);
21
- }, [l]), $ = e(async (a) => {
21
+ }, [l]), $ = o(async (a) => {
22
22
  let n = await s(t, a);
23
23
  try {
24
24
  n !== !1 && (n = await s(t, a));
@@ -28,9 +28,9 @@ const A = ["Input"], J = o.memo(o.forwardRef((w, T) => {
28
28
  }, [t, l]);
29
29
  return i.jsx(E, { options: d, onDone: u, onOption: (a, n) => {
30
30
  n || m(a);
31
- }, onValidateOption: $, cancelOption: g, defaultOption: f, autoFocusSel: j, ref: T, ...k, children: i.jsx(K, { sx: { paddingTop: (a) => a.spacing(1), paddingBottom: (a) => a.spacing(0) }, children: i.jsx(R, { sx: { paddingTop: (a) => a.spacing(1.5), minWidth: 135, width: "100%" }, size: "small", children: i.jsx(W, { onFocus: (a) => {
32
- v || a.target?.select(), C(!0);
33
- }, type: S, label: P, helperText: B || " ", sx: { width: "100%", "& .MuiFormHelperText-root": { marginTop: (a) => a.spacing(0.5), color: H ? void 0 : "error.main" } }, InputLabelProps: { shrink: !0 }, InputProps: { inputProps: { placeholder: b, 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(${O("#fff", y(5))}, ${O("#fff", y(5))})` } } }, value: t, onChange: N, onKeyDown: M, onContextMenu: (a) => {
31
+ }, onValidateOption: $, cancelOption: g, defaultOption: f, autoFocusSel: k, ref: T, ...v, children: i.jsx(K, { sx: { paddingTop: (a) => a.spacing(1), paddingBottom: (a) => a.spacing(0) }, children: i.jsx(R, { sx: { paddingTop: (a) => a.spacing(1.5), minWidth: 135, width: "100%" }, size: "small", children: i.jsx(W, { onFocus: (a) => {
32
+ C || a.target?.select(), b(!0);
33
+ }, type: S, label: P, helperText: B || " ", sx: { width: "100%", "& .MuiFormHelperText-root": { marginTop: (a) => a.spacing(0.5), color: H ? void 0 : "error.main" } }, InputLabelProps: { shrink: !0 }, InputProps: { inputProps: { placeholder: j, 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(${O("#fff", y(5))}, ${O("#fff", y(5))})` } } }, value: t, onChange: N, onKeyDown: M, onContextMenu: (a) => {
34
34
  a.stopPropagation();
35
35
  } }) }) }) });
36
36
  }));
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.6.15
2
+ * @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.6.17
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,6 +1,6 @@
1
- import { r as ee } from "./8mPMWI0-n5iE_fBE.mjs";
1
+ import { r as ee } from "./HXlN7woeZdiZNoM2.mjs";
2
2
  /**
3
- * @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.6.15
3
+ * @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.6.17
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.
@@ -1,12 +1,12 @@
1
- import { r as n, K as L, o as O, N as E, O as M, T as u, j as a, x as W, D as A, B as o, Q as q, R as J, J as h, U as K, W as Q, X as f, q as y, Y as b, $ as j } from "./8mPMWI0-n5iE_fBE.mjs";
1
+ import { r as n, L as z, p as O, N as E, O as M, T as u, j as a, x as W, D as A, B as o, Q as K, R as Q, K as h, U, W as V, X as f, s as y, Y as b, $ as j } from "./HXlN7woeZdiZNoM2.mjs";
2
2
  /**
3
- * @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.6.15
3
+ * @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.6.17
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.
7
7
  */
8
- const Y = n.memo((w) => {
9
- const { title: S, onHide: C, autoFocusSel: N = ".range-input input", context: R, notifier: l = L, command: r, commands: c, ...T } = w, [v, d] = n.useState(!1), [g, m] = n.useState(!1), x = n.useRef(null), [U, D] = n.useReducer((e) => e + 1, 0), [F, { width: V }] = O();
8
+ const k = n.memo((w) => {
9
+ const { title: S, onHide: C, autoFocusSel: N = ".range-input input", context: R, notifier: l = z, command: r, commands: c, ...T } = w, [v, d] = n.useState(!1), [g, m] = n.useState(!1), x = n.useRef(null), [X, D] = n.useReducer((e) => e + 1, 0), [F, { width: Y }] = O();
10
10
  E(r);
11
11
  const s = R ?? r.context(), t = s.table(), [B, H] = n.useState(() => t ? s.getNames().getRanges(t.getRange()) : null), I = n.useMemo(() => t?.getName() ?? "", [t]);
12
12
  M(s.table(), { onAnchorCoordsChange(e) {
@@ -16,19 +16,19 @@ const Y = n.memo((w) => {
16
16
  } });
17
17
  const P = u((e) => {
18
18
  s?.table().setName(e);
19
- }, [s]), z = u((e) => {
19
+ }, [s]), L = u((e) => {
20
20
  s?.table().resize(e.at(0));
21
21
  }, [s]);
22
22
  let p = null;
23
23
  return s.table() || (p = a.jsx("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.jsx("div", { children: "No table selected" }) })), a.jsx(W, { ref: x, title: S ?? "Table Details", initialPosition: { y: "35" }, autoFocusSel: N, onHide: C, onFocus: () => d(!0), onBlur: (e) => {
24
24
  x?.current?.contains(e.relatedTarget) || d(!1);
25
- }, PaperProps: { elevation: v ? 3 : 1 }, ...T, children: a.jsxs(A, { dividers: !0, ref: F, sx: { display: "flex", flexDirection: "column", position: "relative", paddingLeft: (e) => e.spacing(1.5), paddingRight: (e) => e.spacing(1.5) }, children: [a.jsxs(o, { sx: { display: "flex", flexDirection: "column", transition: "opacity 60ms", opacity: s.table() ? 1 : 0 }, children: [a.jsx(o, { sx: { display: "flex", flexDirection: "row", gap: (e) => e.spacing(1) }, children: a.jsx(o, { sx: { display: "flex", flexDirection: "column", maxWidth: "100%", boxSizing: "border-box", paddingLeft: (e) => e.spacing(2), paddingRight: (e) => e.spacing(2) }, children: a.jsxs(o, { sx: { display: "flex", flexDirection: "column", alignItems: "center" }, children: [a.jsx(q, { formName: "name", defaultInput: I, value: t?.getName() ?? "No table", onChangeInput: P, onValidate: (e) => {
25
+ }, PaperProps: { elevation: v ? 3 : 1 }, ...T, children: a.jsxs(A, { dividers: !0, ref: F, sx: { display: "flex", flexDirection: "column", position: "relative", paddingLeft: (e) => e.spacing(1.5), paddingRight: (e) => e.spacing(1.5) }, children: [a.jsxs(o, { sx: { display: "flex", flexDirection: "column", transition: "opacity 60ms", opacity: s.table() ? 1 : 0 }, children: [a.jsx(o, { sx: { display: "flex", flexDirection: "row", gap: (e) => e.spacing(1) }, children: a.jsx(o, { sx: { display: "flex", flexDirection: "column", maxWidth: "100%", boxSizing: "border-box", paddingLeft: (e) => e.spacing(2), paddingRight: (e) => e.spacing(2) }, children: a.jsxs(o, { sx: { display: "flex", flexDirection: "column", alignItems: "center" }, children: [a.jsx(K, { formName: "name", defaultInput: I, value: t?.getName() ?? "No table", onChangeInput: P, onValidate: (e) => {
26
26
  t && t.getName().toLowerCase() === e.toLowerCase() || s?.getNames().validateName(e);
27
27
  }, disabled: t?.isProtected() ?? !0, onFocus: (e) => {
28
28
  g || e.target?.select(), m(!0);
29
- } }), a.jsx(J, { formName: "range", value: B, onChangeInput: z, resolvedAddress: s.getNames().getRanges.bind(s.getNames()), disabled: t?.isProtected() ?? !0, onFocus: (e) => {
29
+ } }), a.jsx(Q, { formName: "range", value: B, onChangeInput: L, resolvedAddress: s.getNames().getRanges.bind(s.getNames()), disabled: t?.isProtected() ?? !0, onFocus: (e) => {
30
30
  g || e.target?.select(), m(!0);
31
- } })] }) }) }), a.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: [a.jsx(h, { orientation: "horizontal", sx: { marginTop: (e) => e.spacing(1.5), marginBottom: (e) => e.spacing(0.75) } }), a.jsx(K, { disabled: t?.isProtected(), styleOptions: t?.getStyleOptions() ?? null, onStyleOptionsChange: (e) => {
31
+ } })] }) }) }), a.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: [a.jsx(h, { orientation: "horizontal", sx: { marginTop: (e) => e.spacing(1.5), marginBottom: (e) => e.spacing(0.75) } }), a.jsx(U, { disabled: t?.isProtected(), styleOptions: t?.getStyleOptions() ?? null, onStyleOptionsChange: (e) => {
32
32
  t.updateStyleOptions(e);
33
33
  }, showHeaderRow: t?.getShowHeaders(), onShowHeaderRowChange: (e) => {
34
34
  try {
@@ -48,9 +48,9 @@ const Y = n.memo((w) => {
48
48
  } catch (i) {
49
49
  l.showError(i);
50
50
  }
51
- } }), a.jsx(o, { sx: { display: "flex", alignItems: "center", justifyContent: "center", flexDirection: "column", marginTop: (e) => e.spacing(2), marginBottom: (e) => e.spacing(1) }, children: a.jsx(Q, { table: t, styles: s.styles(), bodyStyle: s.bodyStyle(), cellHeight: 30, isLive: !0 }) }), a.jsx(h, { orientation: "horizontal" }), a.jsxs(o, { sx: { display: "flex", flexDirection: "column", justifyContent: "center" }, children: [a.jsx(f, { variant: b.Menuitem, command: c.getCommand("convertTableToRange"), commandState: t, icon: y(a.jsx(j, {})) }), a.jsx(f, { variant: b.Menuitem, commandState: t, command: c.getCommand("deleteTable"), icon: y(a.jsx(j, {})) })] })] })] }), p] }) });
51
+ } }), a.jsx(o, { sx: { display: "flex", alignItems: "center", justifyContent: "center", flexDirection: "column", marginTop: (e) => e.spacing(2), marginBottom: (e) => e.spacing(1) }, children: a.jsx(V, { table: t, styles: s.styles(), bodyStyle: s.bodyStyle(), cellHeight: 30, isLive: !0 }) }), a.jsx(h, { orientation: "horizontal" }), a.jsxs(o, { sx: { display: "flex", flexDirection: "column", justifyContent: "center" }, children: [a.jsx(f, { variant: b.Menuitem, command: c.getCommand("convertTableToRange"), commandState: t, icon: y(a.jsx(j, {})) }), a.jsx(f, { variant: b.Menuitem, commandState: t, command: c.getCommand("deleteTable"), icon: y(a.jsx(j, {})) })] })] })] }), p] }) });
52
52
  });
53
53
  export {
54
- Y as TableDetailsWindow,
55
- Y as default
54
+ k as TableDetailsWindow,
55
+ k as default
56
56
  };
@@ -1,6 +1,6 @@
1
- import { L as Ot, am as Lt, aA as ye, aB as be, aC as Mt, aD as wt, aa as te, aE as xe, aF as we, az as ve, aG as Se, ar as ee, w as Ce, aH as ke, aj as Ae } from "./8mPMWI0-n5iE_fBE.mjs";
1
+ import { c as Ot, am as Lt, aA as ye, aB as be, aC as Mt, aD as wt, aa as te, aE as xe, aF as we, az as ve, aG as Se, ar as ee, w as Ce, aH as ke, aj as Ae } from "./HXlN7woeZdiZNoM2.mjs";
2
2
  /**
3
- * @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.6.15
3
+ * @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.6.17
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.
@@ -1059,14 +1059,14 @@ const Ge = (i, t, s) => {
1059
1059
  ct ? n?.onText(d) : l || s?.onText(d);
1060
1060
  } };
1061
1061
  }, es = Object.freeze(Object.defineProperty({ __proto__: null, fromBufferXLSX: async (i, t) => {
1062
- const { password: s, onWarning: o, createWorkbookOptions: n = {}, ...a } = t ?? {}, l = import("./B7RU1pGpky7lyku7.mjs"), g = import("./DxRjJmHxF0a2wfsw.mjs");
1062
+ const { password: s, onWarning: o, createWorkbookOptions: n = {}, ...a } = t ?? {}, l = import("./DbetpqIPEQTvY1xk.mjs"), g = import("./CbkE1469bIhbP-Mo.mjs");
1063
1063
  let S = null;
1064
1064
  try {
1065
1065
  S = new DOMParser();
1066
1066
  } catch {
1067
1067
  }
1068
1068
  let b = null;
1069
- S || (b = import("./B9J0tIk1bqlPmXPM.mjs").then((u) => u.i));
1069
+ S || (b = import("./C3dhX372aZTZH5Z3.mjs").then((u) => u.i));
1070
1070
  let x = null, C = null, w = null;
1071
1071
  try {
1072
1072
  const u = await Promise.all([l, g, b]);
@@ -1310,7 +1310,7 @@ const Ge = (i, t, s) => {
1310
1310
  }, _), st = he(p, gt), it = await (async (k, B = 8388608) => {
1311
1311
  await (async () => {
1312
1312
  if (typeof ReadableStream > "u") if (typeof window > "u") {
1313
- const { ReadableStream: rt } = await import("./D43G7bm5fuCJkTV1.mjs");
1313
+ const { ReadableStream: rt } = await import("./DzGQup3K-Xr4l2mI.mjs");
1314
1314
  globalThis.ReadableStream = rt;
1315
1315
  } else console.warn("Browser does not support ReadableStream; consider loading a polyfill.");
1316
1316
  })();
@@ -1409,7 +1409,7 @@ const Ge = (i, t, s) => {
1409
1409
  throw u instanceof ke && (A = "Unable to open XLSX. There are too many rows or columns."), new Error(A, { cause: u });
1410
1410
  }
1411
1411
  }, toBufferXLSX: async (i, t) => {
1412
- const s = await import("./B7RU1pGpky7lyku7.mjs"), o = await i.toJSON(!0), n = s.utils.book_new();
1412
+ const s = await import("./DbetpqIPEQTvY1xk.mjs"), o = await i.toJSON(!0), n = s.utils.book_new();
1413
1413
  for (let a = 0; a < o.sheets.length; a++) {
1414
1414
  const l = o.sheets[a], g = s.utils.json_to_sheet([{}]);
1415
1415
  s.utils.book_append_sheet(n, g, l.name);
@@ -1,6 +1,6 @@
1
- import { r as C, a0 as $t, a1 as Kt, a2 as qt, j as L, a3 as ht, a4 as Xt, a5 as Y, a6 as Yt, a7 as Jt, a8 as Zt, a9 as Qt, d as X, x as eo, D as to, b as ft, aa as oo, B as ce, f as no, y as ro, ab as io, ac as lo, g as de, F as so, C as ao, h as co, m as pt, ad as me, ae as uo, af as ho, ag as N, ah as U, ai as fo } from "./8mPMWI0-n5iE_fBE.mjs";
1
+ import { r as C, a0 as $t, a1 as Kt, a2 as qt, j as L, a3 as ht, a4 as Xt, a5 as Y, a6 as Yt, a7 as Jt, a8 as Zt, a9 as Qt, f as X, x as eo, D as to, e as ft, aa as oo, B as ce, h as no, z as ro, ab as io, ac as lo, g as de, F as so, C as ao, l as co, m as pt, ad as me, ae as uo, af as ho, ag as N, ah as U, ai as fo } from "./HXlN7woeZdiZNoM2.mjs";
2
2
  /**
3
- * @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.6.15
3
+ * @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.6.17
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.
@@ -2050,7 +2050,7 @@ function Do(o) {
2050
2050
  return _;
2051
2051
  }, [n, e]), [s, c] = C.useState(null);
2052
2052
  C.useEffect(() => {
2053
- import("./DOUalwHAt9jLJvKl.mjs").then((u) => {
2053
+ import("./BSrPuoCDC2enKMEG.mjs").then((u) => {
2054
2054
  c(new u.default(a, { threshold: 0, ignoreLocation: !0, keys: ["label", "description"] }));
2055
2055
  });
2056
2056
  }, [a]);
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.6.15
2
+ * @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.6.17
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.