@sheetxl/mcp 0.8.0-beta.25 → 1.0.2
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.
- package/assets/{CDiutOsLAzu4c0Ej.js → 1d-8AAcf1UmC2qIz.js} +1 -1
- package/assets/{V4pGXJr6fe-CPg7i.js → 30KXHiLfwl0cbsxL.js} +1 -1
- package/assets/{CCOaNx5_BfWCc9yz.js → 3o7I8loKRGynHrNq.js} +1 -1
- package/assets/{Brlza6Jd2oGGX9vB.js → 648qV0v861jvyZWm.js} +1 -1
- package/assets/{GfAXkT_vctdRX_9f.js → 7khlPnFFCrE8gnT_.js} +12 -12
- package/assets/{CX-KrjVgXM-7o--S.js → 8hUUTZ62hbxY0TOp.js} +2 -2
- package/assets/{DaB9iRVJj3TmKH92.js → B1Vm5y0E-TPSYFya.js} +3 -3
- package/assets/{B6e_DsVO4i91IYEO.js → B6ToyMcYe9lyaeDk.js} +3 -3
- package/assets/{DB2MrmDLZ-OzVRQu.js → B6pS096VwbWaj1Zz.js} +2 -2
- package/assets/{DwmlBb640xWfAMV2.js → B9V6AFTTnbPscv11.js} +2 -2
- package/assets/{DHCl7HWDbT3xqx8W.js → BESu-5sZSIJqkrWN.js} +2 -2
- package/assets/{BSJ_L1gNOejEih6N.js → BHhPtFpb3YfV6_44.js} +32 -32
- package/assets/{u8xtjHo43n-S_O6j.js → BMAAmO8LPIe4VJ77.js} +1 -1
- package/assets/{C9DvPNfuz_0hun6C.js → BMVu89mdcVSqJDDE.js} +1 -1
- package/assets/{DBgHcEP-FcgSHLvx.js → BRB5-fXJFU7Kq2wm.js} +314 -314
- package/assets/{CD2yoEhIT8DyXBou.js → BRI3D42tlMkZdYb2.js} +37 -37
- package/assets/{DgE30NwKzEjZI1W6.js → BVzogMoyaicBEKBk.js} +3 -3
- package/assets/{DXDhH3F4N4OOigqN.js → BWpLQNKC3n8bXJUk.js} +1 -1
- package/assets/{Cmf4eJow6AIuPH_w.js → Baa8cmJsilboM0DW.js} +1 -1
- package/assets/{irrAIfw6CnCOHmPE.js → BcDNXTGASDvptqc-.js} +1 -1
- package/assets/{Djl7cjJyCIS_Qvbd.js → Bme_PT3UqwTbGLWd.js} +1 -1
- package/assets/{DZTVTdrwu05fNZk_.js → BnxajOeIasx1G3OB.js} +1 -1
- package/assets/{cTLYCAhDs2fR2ITC.js → BousX61zAjBfjlsV.js} +1 -1
- package/assets/{DAnTpFc2vx3CmP8e.js → Bp73VL7f5DEt88Cn.js} +26 -26
- package/assets/{DLW76uSURiQM07DD.js → BppAvnmuJbbYBQUy.js} +1 -1
- package/assets/{DvkgborRc2vRq8E-.js → BtoBfR_4n1u37HmC.js} +1 -1
- package/assets/{H40qXR3Gazmnq4Mv.js → BuLAeGM4AvHCge4x.js} +1 -1
- package/assets/{45FAgD1JyG2a1Rti.js → Buxo11Ux7uxzoy_7.js} +2 -2
- package/assets/{u9le-qZ3tbYKK1kU.js → BwTF2TRqzXsf0H1I.js} +2 -2
- package/assets/{m9BgbF-NgPIYW4kc.js → BzCwrG3Zdv-Trzi_.js} +1 -1
- package/assets/{H_6CBe3t27jHlBHk.js → C00qhh0-m0B0JP9Y.js} +140 -140
- package/assets/{C6Vsz4e_ASJdx3LP.js → C5VvbPUAfrVKmXXs.js} +1 -1
- package/assets/{Cu4ok_jTnQif8QtX.js → C85xBYGjAzNmVNwL.js} +1 -1
- package/assets/{Duw8QQGcrPmesb-M.js → C880pTyOMof_fzPO.js} +1 -1
- package/assets/{70weNsvW2LMx5QcW.js → C88UXFOnR1Uc-nw2.js} +1 -1
- package/assets/{CYtkZMCX6dyEqjb9.js → C8G6iJz_vsgbNYq9.js} +4 -4
- package/assets/{DX94YgmfoL_ngS60.js → CAQgJMpje7ORQ5lt.js} +1 -1
- package/assets/CBSyNN4Fk5WsVStK.js +14 -0
- package/assets/{BktUuVP0Jew8_-ff.js → CCeqR45x9p-GG8Pi.js} +1 -1
- package/assets/{xSUMX6J9-MJIGgmG.js → CEDsCeYCSlY7wYe1.js} +2 -2
- package/assets/{CfWSdzSpbErVA_1h.js → CFWHwEc3dKMmNzUp.js} +338 -338
- package/assets/{CGS7apShLtnlmF8D.js → CK9LWUZdZ93t3GkS.js} +1 -1
- package/assets/{V_VVW06vjWkmlbdh.js → CL-BRusnISEAzebz.js} +527 -527
- package/assets/{C-FJab2sVwBbOTiA.js → CLvFlk5-KU2jnQ5r.js} +1 -1
- package/assets/{ClRgSo0axU3lAOwR.js → CUhCIQjymULgXquN.js} +1 -1
- package/assets/{Cb7FKT3S78r6IYHi.js → CboWvqCV0yix3-yP.js} +1 -1
- package/assets/{COZ-bhj463kGINFA.js → Ci4AUhBajQMJs1Ty.js} +1 -1
- package/assets/{eCD6fmcTsgv76IZm.js → CkQT1G_6bvMixZ8e.js} +4 -4
- package/assets/{DFd0JAiw5dkbnULM.js → CkqsYktaMF9p014y.js} +1 -1
- package/assets/{CSMsn9bKgR9kWG0m.js → CkuL4Ed6oRGAhIS9.js} +1 -1
- package/assets/{COXWiXy3DCfmXSm5.js → Cm41HVr6Xyz53jHz.js} +1 -1
- package/assets/{DQlLgxA592HvgKzh.js → CoY2sE2RG-Nd8TMR.js} +1 -1
- package/assets/{DZOzgVEOXfHTE3YC.js → CuRvGO_2tG0PUhCM.js} +1 -1
- package/assets/{ckvxz2tZRlY1UPpg.js → CvqpsTll6ngbdHgx.js} +9731 -9750
- package/assets/{BAowTO-7Utmg0UvM.js → Cvs9i2VUl7wXWZup.js} +3 -3
- package/assets/{CFrOPd_UcD7qclCq.js → Cy2uazuc6KpkbYg-.js} +1 -1
- package/assets/{cU78RT4WJKAp5mU_.js → CybNjXi6cOFKyGuH.js} +1 -1
- package/assets/{BHIi-cAKnh_sAifV.js → CzPMiqbNDm6TDPGJ.js} +1 -1
- package/assets/{D6qQAWN_5p3FAshK.js → CzYXLEVIoCfQ1AMM.js} +157 -157
- package/assets/{D7NjohknztgMLqhT.js → D-BWtxIGXTCMLoio.js} +2 -2
- package/assets/{C-Vt758qtn8QeCrw.js → D0Ly34TqieVSOIbh.js} +1 -1
- package/assets/{Abkx7KJ6_X5avkR4.js → D0M0EWP28g5rQaei.js} +3 -3
- package/assets/{D053O1kZ7JtMwiqh.js → D4NBYfzSZ3cU-3ao.js} +1 -1
- package/assets/{DG9KGapq8eHlcTC7.js → D4NcXlPRmR6NaoGS.js} +1 -1
- package/assets/{DRvzD5Tkcb2OU0G2.js → D4jXxO1LUEQ6erA9.js} +1 -1
- package/assets/{DfaQvLAaU7HHPnSe.js → DAx-VOBmi1xAMhhX.js} +29 -29
- package/assets/{BbfSzxx5EzAvn-_F.js → DBcXAdUaNGrlah12.js} +15 -15
- package/assets/{DQBqVPRLkZFb2P_x.js → DFdAxnoXGn_8ge3l.js} +2 -2
- package/assets/{BtNEVWQWEp_Ie1nT.js → DFjfZCMPfQfwC4cF.js} +581 -581
- package/assets/{Cplall3oc-_3AhCB.js → DG0Dzgf1kAxN3AIk.js} +1 -1
- package/assets/{CcTDxlAqw6HuYmmm.js → DGv-dTePYQ8_yif4.js} +66 -66
- package/assets/{HLtC2gb8SfNmJU5q.js → DIaD0BL0JLTaJTS3.js} +5 -5
- package/assets/{C2kYWrsx5mg4XOES.js → DIimDQiJDW-4lkZT.js} +1 -1
- package/assets/{BzU8BhgrkSoh-XJF.js → DK8DWNMTOmCg6zAI.js} +8 -8
- package/assets/{DlOCT6DI5bhPtQ8j.js → DKox8guOumZMOdq8.js} +29 -29
- package/assets/{BNvsIyBwweYnfUz3.js → DMHiZKWwm6puHV6p.js} +1 -1
- package/assets/{BzLwCwXsh7eXQpeK.js → DMyq3L2ibjMlHuDa.js} +1 -1
- package/assets/{UdhH9UX9jQ4IV11J.js → DOKXQpGyzXCoSLdJ.js} +1 -1
- package/assets/{D8wjcRGgRdU34Ata.js → DOXriXo-7WmTAKbN.js} +1 -1
- package/assets/{CJubVukzHBNJb_Wf.js → DRfsB4kS28fPXv6K.js} +105 -105
- package/assets/{DkS3EQvuEuPDvCws.js → DSmARJ0owmwmr2FA.js} +2 -2
- package/assets/{DYx_I-o0yjx056Dq.js → DUM6h3BEreCilg32.js} +1 -1
- package/assets/{DpGFb3hbAT5Murcv.js → DXp5V2__VY2opctz.js} +1 -1
- package/assets/{TqxFLhPz3zbgi95t.js → D_YBc6vHBL-ajwvB.js} +1 -1
- package/assets/{D5aWcMLJ2wyLm9Ws.js → Dc8BQsPlwN6i6OU7.js} +1 -1
- package/assets/{B_GZxEqqpKtEPbWC.js → DcnNIdrilJHfl_CQ.js} +1 -1
- package/assets/{B0FfnXdiZxExcdjB.js → DdIufax_qSuWVGQK.js} +2 -2
- package/assets/{DkT0-_t9Xgp4l-Mh.js → DeNqXaM_dHSswRuE.js} +1 -1
- package/assets/{O8YGVK4vtz39jQ84.js → DfVHW5vbnRNXHrCi.js} +1 -1
- package/assets/{D8cqT2lbcP5Yp1Or.js → Dfc9_XsqSeh48YeK.js} +11 -11
- package/assets/{DbHVXEt9qwlb8Gou.js → DiXodb_hLvUDIGb6.js} +29 -29
- package/assets/{CVWoX7wNwrZwm5XB.js → Dn531BWCDZ2noJix.js} +2 -2
- package/assets/{B940vbTfpMYACpDE.js → DnAuLAqQLmAf9Gls.js} +2 -2
- package/assets/{BV13tLgNXZ8MDaE_.js → Do8K2GlFXIiMX9TB.js} +1 -1
- package/assets/{DXVfJfT6ftWk5kYi.js → Dt8hWBnnqlpJOazW.js} +138 -138
- package/assets/{DUfrvQDZKh_22F91.js → DuBbSpdXZuAFvxpr.js} +1 -1
- package/assets/{ixHQtoul8ubEJfWS.js → DvAq2cPI7-lfSn0x.js} +1 -1
- package/assets/{CGdayif_qNMtoATI.js → DzCZGtlg3pJO91l9.js} +1 -1
- package/assets/{DcHvH_I64hbnNh9G.js → DzRBnJpz972o277m.js} +1 -1
- package/assets/{LQNEL4KjDxwZNwWq.js → EohzUi0uCnSF2q2D.js} +156 -156
- package/assets/{Bwk-CZuGiTRT2ox_.js → KSagTSkIvZSpUF1c.js} +4 -4
- package/assets/{BD3Bc7ZHxenj4S7Q.js → LOFAyr5OoT3oZGMV.js} +1 -1
- package/assets/{BBccc8pDH-6AJdoT.js → LbZNDu6C9XPMEXCN.js} +5 -5
- package/assets/{DJlQxf99HCszeCCD.js → NwtEz6ZaVT8p8wOh.js} +1 -1
- package/assets/{VkeNTI1TMsA1ZbGz.js → PD_i17-cebq3-_Gn.js} +3 -3
- package/assets/{Bb7ZxgjHwiKgARXs.js → Q-BvS_P_qM8EvP92.js} +1 -1
- package/assets/{BW8ReYzx-CEJ-lAG.js → YRKAYjRpPkjhxGSS.js} +1 -1
- package/assets/{kmiMiNIUc6rS8DG8.js → _-kNP8Q4FxBYPY4u.js} +4 -4
- package/assets/{Ci3R5B7bLke8NZRo.js → aEDyynzUuzMysLwT.js} +6 -6
- package/assets/{DunKnm-bQd0oHn9n.js → cTnKNFayqlXisspN.js} +2 -2
- package/assets/{DZBfVpnngvY9Ra3C.js → eEh1r_BS7Y0FXPqk.js} +1 -1
- package/assets/{BHeXL-Lo390ZSNV0.js → g4vz4gc43eat7Hd2.js} +1 -1
- package/assets/{CAI8p60cuWlgnlko.js → jUzhn1PeDLWXOuJO.js} +14 -14
- package/assets/{DbXqd8hGNQEyS-s0.js → kIzQWtiHNHvh8HLF.js} +1 -1
- package/assets/{BXxUz-sB48Z9nSFi.js → mIM-JksHd3Zl5INF.js} +1 -1
- package/assets/{s56uiNHMGbBV6xgZ.js → mirSoZ8QDsYUMjYu.js} +1 -1
- package/assets/{APcHum0Riw3QhLBQ.js → ooSNLnHLIYTBL5JD.js} +1 -1
- package/assets/{BFKj2ik7h-yM6oCR.js → tp75fiKc1r-jdPPN.js} +1 -1
- package/assets/{DcHo7BC8Ny3hWq0j.js → xltGcIbWkjqNtCty.js} +2 -2
- package/assets/{xMi-tFxI2s6e18L1.js → zbOvcGIPi-MDlJKE.js} +1 -1
- package/index.js +118 -118
- package/lib.js +1 -1
- package/licenses/dependencies.txt +35 -35
- package/package.json +17 -2
- package/screenshot-page/assets/{Da_VIghRFdNrmfZT.js → 37HIsN_8LEsOWyOO.js} +1 -1
- package/screenshot-page/assets/4I9gFq1IdumstDHq.js +2 -0
- package/screenshot-page/assets/6j6xGn4csAcfcFMQ.js +1 -0
- package/screenshot-page/assets/{hB5riGkPy0wXVIig.js → 7N8xCpYVBHFqfoAg.js} +1 -1
- package/screenshot-page/assets/{D8EmNst-H2v0eWcf.js → 97qOXULGlJqaTCIL.js} +1 -1
- package/screenshot-page/assets/B6dFVtErFelDd62E.js +2 -0
- package/screenshot-page/assets/{BCmGLxQEUabeee6Q.js → B6i6Xi9OafEvNRAm.js} +2 -2
- package/screenshot-page/assets/B7uNU6WWjJaco6ho.js +1 -0
- package/screenshot-page/assets/{DqOrgSpuJhQRhMoG.js → BGoGxqwlpgXt8CMd.js} +2 -2
- package/screenshot-page/assets/{0P0DnZolMnjPhiea.js → BXss42mPBQnnt0Rh.js} +1 -1
- package/screenshot-page/assets/{D53hpXNHxIgSWl80.js → BbhwsC3eMdzP2PeH.js} +1 -1
- package/screenshot-page/assets/Beaq1eo3pAjlfcba.js +1 -0
- package/screenshot-page/assets/Bf3eJLndwyxuVR-_.js +1 -0
- package/screenshot-page/assets/{CKdQfdZJGJFgnrr9.js → BqJRJVrx7XkIPgo7.js} +11 -11
- package/screenshot-page/assets/C-qNpEaGV5amWPml.js +13 -0
- package/screenshot-page/assets/{CCYEWK5QyGSnUAfh.js → CB-bJVu0a2zAElNH.js} +1 -1
- package/screenshot-page/assets/CGvyz3VVFiHbYHM0.js +3 -0
- package/screenshot-page/assets/{DTAKTGn53yF_B621.js → CKbXhNyUiI18JA_C.js} +1 -1
- package/screenshot-page/assets/{DkTX5ZjGNQ5SrwJa.js → CVEUOXnI1pTa-GKp.js} +1 -1
- package/screenshot-page/assets/C_RHXqyejSa8gd9x.js +1 -0
- package/screenshot-page/assets/{Bt7fKk5ZupUuo_xD.js → CbTBuiF_Jn72hoj1.js} +2 -2
- package/screenshot-page/assets/{C-2hBFk27roWkIrQ.js → CraI-__UdtaIvbNn.js} +1 -1
- package/screenshot-page/assets/{CMryHLEhCyKGuRSW.js → Cyu6g5rRtEGOHaQS.js} +4 -4
- package/screenshot-page/assets/{CL_hAngRQwm_KGdR.js → D1KqgZwk5MjDhk5i.js} +1 -1
- package/screenshot-page/assets/DGr8M07ioDfKXLHD.js +57 -0
- package/screenshot-page/assets/DMbhlzvflyxF5Clt.js +39 -0
- package/screenshot-page/assets/{D-jd_TJCN7AAn125.js → DQxI7bShZ7TKpL0V.js} +9 -9
- package/screenshot-page/assets/{BpJaTpbR_CQzXj9M.js → DSB_SKy2lKI_VGik.js} +1 -1
- package/screenshot-page/assets/DWkISZdhmV2PBk-k.js +1 -0
- package/screenshot-page/assets/{BVnzv_sY_58zEJyM.js → DfmEx82r_NbillHk.js} +1 -1
- package/screenshot-page/assets/{MqGbtsji4DVGCAMR.js → DsZcJUWTmqcp2aI-.js} +1 -1
- package/screenshot-page/assets/{jteb4n23QwBT9m_4.js → DszZ1A807YzTc0ek.js} +1 -1
- package/screenshot-page/assets/{DJebrQ5mu8uxpX3b.js → DwHci99xcnRTEcv5.js} +2 -2
- package/screenshot-page/assets/Ojp2B5i2-AJeD4mV.js +1 -0
- package/screenshot-page/assets/{CRtk9ixuBWxhPfPU.js → PRYQO22Y2LgMUg77.js} +1 -1
- package/screenshot-page/assets/{CZaKvnrRdlLj1_X8.js → RHcyaEfxJB7O3alo.js} +1 -1
- package/screenshot-page/assets/TA9YjsgX-_8fRRdZ.js +1 -0
- package/screenshot-page/assets/cUY9GpQPVTLSprfW.js +1 -0
- package/screenshot-page/assets/{Bne-AygyF1USkPAy.js → m48xmzGgNgwXSEgQ.js} +1 -1
- package/screenshot-page/assets/mVfCz3bXIjqEVPEo.js +1 -0
- package/screenshot-page/assets/{CFS0h-wE9YlZRk_1.js → putBhJCWgRos_Fmk.js} +1 -1
- package/screenshot-page/assets/{DbnmgPTSEii4OGkB.js → uyInkZWFnMwX-BSC.js} +1 -1
- package/screenshot-page/assets/{D98PlIA4qQ_6ciCu.js → xiJthTXsasYVOHWE.js} +2 -2
- package/screenshot-page/index.html +8 -8
- package/types/scripting.d.ts +1 -1
- package/assets/CehVpkp73IfWGN_b.js +0 -14
- package/screenshot-page/assets/3L7CY5dA_kT2UBjv.js +0 -1
- package/screenshot-page/assets/B6UwT0pG4sQeG7fA.js +0 -3
- package/screenshot-page/assets/BH2IWQ-8AfNbhYZJ.js +0 -39
- package/screenshot-page/assets/BkU12U7IqW7qjopk.js +0 -13
- package/screenshot-page/assets/Bs-IXwX9BKsCxwcJ.js +0 -2
- package/screenshot-page/assets/C7MXfx6zf_uTwcpu.js +0 -1
- package/screenshot-page/assets/CUQsrLir5jYpnRPM.js +0 -1
- package/screenshot-page/assets/CUgX7ETRCJsvqa2x.js +0 -1
- package/screenshot-page/assets/CfD1bn6b-NM38iZV.js +0 -1
- package/screenshot-page/assets/Ck5onwb1w_19WrtG.js +0 -1
- package/screenshot-page/assets/CvBPH5c-gnUG8Jen.js +0 -1
- package/screenshot-page/assets/DmIjTb4kKfUHxWaF.js +0 -57
- package/screenshot-page/assets/Dz_yLNMXKWGx1O6V.js +0 -2
- package/screenshot-page/assets/eR9_DaySoB72PvMo.js +0 -1
- package/screenshot-page/assets/hHvAGynpTvAb97GX.js +0 -1
- package/screenshot-page/assets/x1O923k1mN-CduO_.js +0 -1
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license @sheetxl/mcp - MCP server exposing SheetXL spreadsheet operations as tools and resources. -
|
|
2
|
+
* @license @sheetxl/mcp - MCP server exposing SheetXL spreadsheet operations as tools and resources. - v1.0.2
|
|
3
3
|
*
|
|
4
4
|
* (C) 2026-present SheetXL Inc. & Michael T. Ford
|
|
5
5
|
* License: SheetXL EULA — https://www.sheetxl.com/eula
|
|
6
6
|
*/
|
|
7
|
-
import {
|
|
8
|
-
var u = Symbol("sheetxl.formulaNode.internal"),
|
|
7
|
+
import { $r as e, Bt as t, Fa as n, Rn as r, Wr as s, Yt as o, aa as l, an as a, fr as c, kt as i } from "./CvqpsTll6ngbdHgx.js";
|
|
8
|
+
var u = Symbol("sheetxl.formulaNode.internal"), f = Symbol("sheetxl.formulaNode.value"), p = Symbol("sheetxl.formulaNode.replaced"), g = { canonical: !0 }, v = (e, t) => {
|
|
9
9
|
const n = e.inputs;
|
|
10
10
|
let r = null;
|
|
11
11
|
if (n) {
|
|
@@ -16,32 +16,32 @@ var u = Symbol("sheetxl.formulaNode.internal"), p = Symbol("sheetxl.formulaNode.
|
|
|
16
16
|
r[s] = e ? v(e, t) : e;
|
|
17
17
|
}
|
|
18
18
|
}
|
|
19
|
-
const
|
|
19
|
+
const s = ((e, t) => {
|
|
20
20
|
const n = e.type, r = e.value;
|
|
21
21
|
if (n === a.Named) {
|
|
22
22
|
const n = r;
|
|
23
|
-
let
|
|
24
|
-
return t && (
|
|
25
|
-
name:
|
|
23
|
+
let s = n?.nameId, l = n?.scope ?? null;
|
|
24
|
+
return t && (s = t.resolve(o.NamedFormula, s)?.toString() ?? s, l && (l = t.resolve(o.Sheet, l)?.toString() ?? l)), e.binding?.declaration && e.binding.optional ? {
|
|
25
|
+
name: s,
|
|
26
26
|
scope: l,
|
|
27
27
|
optional: !0
|
|
28
28
|
} : {
|
|
29
|
-
name:
|
|
29
|
+
name: s,
|
|
30
30
|
scope: l
|
|
31
31
|
};
|
|
32
32
|
}
|
|
33
33
|
if (n === a.TableReference) {
|
|
34
34
|
const e = "string" == typeof r ? r : r?.tableId;
|
|
35
|
-
return e ? t ? t.resolve(
|
|
35
|
+
return e ? t ? t.resolve(o.Table, e)?.toString() ?? e : e : "";
|
|
36
36
|
}
|
|
37
37
|
if (!t) return r;
|
|
38
38
|
switch (n) {
|
|
39
|
-
case a.Function: return t.resolve(
|
|
40
|
-
case a.TableColumn: return t.resolve(
|
|
39
|
+
case a.Function: return t.resolve(o.Function, r, g)?.toString() ?? r;
|
|
40
|
+
case a.TableColumn: return t.resolve(o.TableColumn, r)?.toString() ?? r;
|
|
41
41
|
case a.Cell: {
|
|
42
42
|
const e = r;
|
|
43
43
|
if (e?.scope) {
|
|
44
|
-
const n = t.resolve(
|
|
44
|
+
const n = t.resolve(o.Sheet, e.scope)?.toString() ?? e.scope;
|
|
45
45
|
return {
|
|
46
46
|
...e,
|
|
47
47
|
scope: n
|
|
@@ -52,7 +52,7 @@ var u = Symbol("sheetxl.formulaNode.internal"), p = Symbol("sheetxl.formulaNode.
|
|
|
52
52
|
case a.Error: {
|
|
53
53
|
const e = r;
|
|
54
54
|
if (e?.scope) {
|
|
55
|
-
const n = t.resolve(
|
|
55
|
+
const n = t.resolve(o.Sheet, e.scope)?.toString() ?? e.scope;
|
|
56
56
|
return {
|
|
57
57
|
...e,
|
|
58
58
|
scope: n
|
|
@@ -65,11 +65,11 @@ var u = Symbol("sheetxl.formulaNode.internal"), p = Symbol("sheetxl.formulaNode.
|
|
|
65
65
|
})(e, t);
|
|
66
66
|
return {
|
|
67
67
|
type: e.type,
|
|
68
|
-
value:
|
|
68
|
+
value: s,
|
|
69
69
|
inputs: r,
|
|
70
70
|
isReference: e.isReference,
|
|
71
71
|
[u]: e,
|
|
72
|
-
[
|
|
72
|
+
[f]: s
|
|
73
73
|
};
|
|
74
74
|
}, m = (e, t, n) => {
|
|
75
75
|
const r = e.inputs;
|
|
@@ -89,49 +89,49 @@ var u = Symbol("sheetxl.formulaNode.internal"), p = Symbol("sheetxl.formulaNode.
|
|
|
89
89
|
inputs: s
|
|
90
90
|
});
|
|
91
91
|
const l = n(o, t);
|
|
92
|
-
return null == l || l === o ? o : (void 0 === l[u] && void 0 !== o[u] && (l[
|
|
92
|
+
return null == l || l === o ? o : (void 0 === l[u] && void 0 !== o[u] && (l[p] = o[u]), l);
|
|
93
93
|
}, y = [
|
|
94
94
|
":",
|
|
95
95
|
".:.",
|
|
96
96
|
".:",
|
|
97
97
|
":.",
|
|
98
98
|
" "
|
|
99
|
-
], b = (
|
|
100
|
-
const u =
|
|
99
|
+
], b = (e, o) => {
|
|
100
|
+
const u = e.type, f = e.value;
|
|
101
101
|
switch (u) {
|
|
102
|
-
case a.Function: return
|
|
103
|
-
case a.Infix: return
|
|
104
|
-
case a.Prefix: return
|
|
105
|
-
case a.Postfix: return
|
|
102
|
+
case a.Function: return i(String(f), o);
|
|
103
|
+
case a.Infix: return c(f, o[0], o[1], e.isReference ?? y.includes(f));
|
|
104
|
+
case a.Prefix: return s(f, o?.[0], e.isReference ?? "@" === f);
|
|
105
|
+
case a.Postfix: return n(f, o?.[0], e.isReference ?? "#" === f);
|
|
106
106
|
case a.Named: {
|
|
107
|
-
const e =
|
|
107
|
+
const e = l("string" == typeof f ? f : f?.name), t = "object" == typeof f ? f?.scope : null;
|
|
108
108
|
return t && (e.value = {
|
|
109
109
|
...e.value,
|
|
110
110
|
scope: t
|
|
111
|
-
}), "object" == typeof
|
|
111
|
+
}), "object" == typeof f && !0 === f?.optional && (e.value = {
|
|
112
112
|
...e.value,
|
|
113
113
|
optional: !0
|
|
114
114
|
}), e;
|
|
115
115
|
}
|
|
116
|
-
case a.Cell: return
|
|
116
|
+
case a.Cell: return t(f);
|
|
117
117
|
case a.TableReference: return {
|
|
118
118
|
type: a.TableReference,
|
|
119
|
-
value:
|
|
119
|
+
value: f,
|
|
120
120
|
inputs: o ?? null,
|
|
121
121
|
isReference: !0
|
|
122
122
|
};
|
|
123
123
|
case a.TableSpecifier: return {
|
|
124
124
|
type: a.TableSpecifier,
|
|
125
|
-
value:
|
|
126
|
-
image: `[${
|
|
125
|
+
value: f,
|
|
126
|
+
image: `[${f}]`,
|
|
127
127
|
inputs: null,
|
|
128
128
|
isReference: !0
|
|
129
129
|
};
|
|
130
130
|
case a.TableColumn: {
|
|
131
|
-
const e = "string" == typeof
|
|
131
|
+
const e = "string" == typeof f && f.startsWith("[") ? f : `[${r(String(f))}]`;
|
|
132
132
|
return {
|
|
133
133
|
type: a.TableColumn,
|
|
134
|
-
value:
|
|
134
|
+
value: f,
|
|
135
135
|
image: e,
|
|
136
136
|
inputs: null,
|
|
137
137
|
isReference: !0
|
|
@@ -141,15 +141,15 @@ var u = Symbol("sheetxl.formulaNode.internal"), p = Symbol("sheetxl.formulaNode.
|
|
|
141
141
|
case a.Number:
|
|
142
142
|
case a.Boolean: return {
|
|
143
143
|
type: u,
|
|
144
|
-
value:
|
|
144
|
+
value: f,
|
|
145
145
|
inputs: null,
|
|
146
146
|
isLiteral: !0
|
|
147
147
|
};
|
|
148
148
|
default: return {
|
|
149
149
|
type: u,
|
|
150
|
-
value:
|
|
150
|
+
value: f,
|
|
151
151
|
inputs: o ?? null,
|
|
152
|
-
isReference:
|
|
152
|
+
isReference: e.isReference
|
|
153
153
|
};
|
|
154
154
|
}
|
|
155
155
|
}, d = (e) => {
|
|
@@ -164,7 +164,7 @@ var u = Symbol("sheetxl.formulaNode.internal"), p = Symbol("sheetxl.formulaNode.
|
|
|
164
164
|
}
|
|
165
165
|
}
|
|
166
166
|
if (t) {
|
|
167
|
-
const n = e.value !== e[
|
|
167
|
+
const n = e.value !== e[f];
|
|
168
168
|
let s = !1;
|
|
169
169
|
const o = t.inputs;
|
|
170
170
|
if (r && o && r.length === o.length) {
|
|
@@ -181,10 +181,10 @@ var u = Symbol("sheetxl.formulaNode.internal"), p = Symbol("sheetxl.formulaNode.
|
|
|
181
181
|
const l = b(e, r);
|
|
182
182
|
return S(l, t), l;
|
|
183
183
|
}
|
|
184
|
-
const s = b(e, r), o = e[
|
|
184
|
+
const s = b(e, r), o = e[p];
|
|
185
185
|
return o && S(s, o), s;
|
|
186
|
-
}, S = (
|
|
187
|
-
|
|
186
|
+
}, S = (t, n) => {
|
|
187
|
+
e(t, n), t.type !== n.type && void 0 !== t.image && (t.image = void 0);
|
|
188
188
|
};
|
|
189
189
|
function h(e, t) {
|
|
190
190
|
return v(e, t);
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license @sheetxl/mcp - MCP server exposing SheetXL spreadsheet operations as tools and resources. -
|
|
2
|
+
* @license @sheetxl/mcp - MCP server exposing SheetXL spreadsheet operations as tools and resources. - v1.0.2
|
|
3
3
|
*
|
|
4
4
|
* (C) 2026-present SheetXL Inc. & Michael T. Ford
|
|
5
5
|
* License: SheetXL EULA — https://www.sheetxl.com/eula
|
|
6
6
|
*/
|
|
7
|
-
import { t } from "./
|
|
8
|
-
import { w as n } from "./
|
|
7
|
+
import { t } from "./C88UXFOnR1Uc-nw2.js";
|
|
8
|
+
import { w as n } from "./DBcXAdUaNGrlah12.js";
|
|
9
9
|
var r, e = t({
|
|
10
10
|
toConcreteCSS: () => u,
|
|
11
11
|
toConcreteFill: () => s
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license @sheetxl/mcp - MCP server exposing SheetXL spreadsheet operations as tools and resources. -
|
|
2
|
+
* @license @sheetxl/mcp - MCP server exposing SheetXL spreadsheet operations as tools and resources. - v1.0.2
|
|
3
3
|
*
|
|
4
4
|
* (C) 2026-present SheetXL Inc. & Michael T. Ford
|
|
5
5
|
* License: SheetXL EULA — https://www.sheetxl.com/eula
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license @sheetxl/mcp - MCP server exposing SheetXL spreadsheet operations as tools and resources. -
|
|
2
|
+
* @license @sheetxl/mcp - MCP server exposing SheetXL spreadsheet operations as tools and resources. - v1.0.2
|
|
3
3
|
*
|
|
4
4
|
* (C) 2026-present SheetXL Inc. & Michael T. Ford
|
|
5
5
|
* License: SheetXL EULA — https://www.sheetxl.com/eula
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license @sheetxl/mcp - MCP server exposing SheetXL spreadsheet operations as tools and resources. -
|
|
2
|
+
* @license @sheetxl/mcp - MCP server exposing SheetXL spreadsheet operations as tools and resources. - v1.0.2
|
|
3
3
|
*
|
|
4
4
|
* (C) 2026-present SheetXL Inc. & Michael T. Ford
|
|
5
5
|
* License: SheetXL EULA — https://www.sheetxl.com/eula
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license @sheetxl/mcp - MCP server exposing SheetXL spreadsheet operations as tools and resources. -
|
|
2
|
+
* @license @sheetxl/mcp - MCP server exposing SheetXL spreadsheet operations as tools and resources. - v1.0.2
|
|
3
3
|
*
|
|
4
4
|
* (C) 2026-present SheetXL Inc. & Michael T. Ford
|
|
5
5
|
* License: SheetXL EULA — https://www.sheetxl.com/eula
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license @sheetxl/mcp - MCP server exposing SheetXL spreadsheet operations as tools and resources. -
|
|
2
|
+
* @license @sheetxl/mcp - MCP server exposing SheetXL spreadsheet operations as tools and resources. - v1.0.2
|
|
3
3
|
*
|
|
4
4
|
* (C) 2026-present SheetXL Inc. & Michael T. Ford
|
|
5
5
|
* License: SheetXL EULA — https://www.sheetxl.com/eula
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license @sheetxl/mcp - MCP server exposing SheetXL spreadsheet operations as tools and resources. -
|
|
2
|
+
* @license @sheetxl/mcp - MCP server exposing SheetXL spreadsheet operations as tools and resources. - v1.0.2
|
|
3
3
|
*
|
|
4
4
|
* (C) 2026-present SheetXL Inc. & Michael T. Ford
|
|
5
5
|
* License: SheetXL EULA — https://www.sheetxl.com/eula
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license @sheetxl/mcp - MCP server exposing SheetXL spreadsheet operations as tools and resources. -
|
|
2
|
+
* @license @sheetxl/mcp - MCP server exposing SheetXL spreadsheet operations as tools and resources. - v1.0.2
|
|
3
3
|
*
|
|
4
4
|
* (C) 2026-present SheetXL Inc. & Michael T. Ford
|
|
5
5
|
* License: SheetXL EULA — https://www.sheetxl.com/eula
|
|
6
6
|
*/
|
|
7
|
-
import { ht as e, ot as t, p as n, tt as o, u as r } from "./
|
|
8
|
-
import { i as s } from "./
|
|
9
|
-
import { P as i, Qt as a, l as c, v as l } from "./
|
|
10
|
-
import {
|
|
7
|
+
import { ht as e, ot as t, p as n, tt as o, u as r } from "./DvAq2cPI7-lfSn0x.js";
|
|
8
|
+
import { i as s } from "./DSmARJ0owmwmr2FA.js";
|
|
9
|
+
import { P as i, Qt as a, l as c, v as l } from "./DBcXAdUaNGrlah12.js";
|
|
10
|
+
import { H as h, Mn as u, Y as d, ga as m, jn as p, mt as g, qt as _ } from "./CvqpsTll6ngbdHgx.js";
|
|
11
11
|
var b = class extends d {
|
|
12
12
|
constructor(e) {
|
|
13
13
|
super(e), this._optionsMember = e;
|
|
@@ -337,12 +337,12 @@ var b = class extends d {
|
|
|
337
337
|
if (!t || this.isDeleted()) return [];
|
|
338
338
|
const n = e?.description ?? r("op.ungroupDrawings");
|
|
339
339
|
this._protectionCheck(n);
|
|
340
|
-
const o = t.getRange().getWorksheet(), s =
|
|
340
|
+
const o = t.getRange().getWorksheet(), s = u(o.getView().getMovableSelection());
|
|
341
341
|
return await this.doBatch(() => {
|
|
342
342
|
const t = this._free(this._members_(), n);
|
|
343
343
|
this.delete(e);
|
|
344
344
|
const r = this._transactions.getPendingTransaction();
|
|
345
|
-
return r &&
|
|
345
|
+
return r && g(r, o, t, {
|
|
346
346
|
autoSelect: e?.autoSelect ?? !0,
|
|
347
347
|
autoSelectRestore: e?.autoSelectRestore
|
|
348
348
|
}, s), t;
|
|
@@ -412,7 +412,7 @@ var b = class extends d {
|
|
|
412
412
|
}
|
|
413
413
|
async _prepareMember(e) {
|
|
414
414
|
if (!e?.type) throw new o("A member needs a type.");
|
|
415
|
-
return this._protectionCheck(r("op.insertDrawing")), await
|
|
415
|
+
return this._protectionCheck(r("op.insertDrawing")), await h({
|
|
416
416
|
type: e.type,
|
|
417
417
|
json: e.json
|
|
418
418
|
}), e;
|
|
@@ -471,9 +471,9 @@ var b = class extends d {
|
|
|
471
471
|
for (const t of e) if (!i.includes(t)) throw new o(n("error.movable.groupNotSameGroup"));
|
|
472
472
|
const c = i.filter((t) => e.includes(t));
|
|
473
473
|
if (c.length === i.length) throw new o(n("error.movable.groupWholeGroup"));
|
|
474
|
-
const
|
|
475
|
-
if (!
|
|
476
|
-
const d =
|
|
474
|
+
const h = this.getMovable();
|
|
475
|
+
if (!h) throw new o("The group is not placed.");
|
|
476
|
+
const d = h.getRange().getWorksheet(), m = u(d.getView().getMovableSelection()), p = a.unionBounds(c.map((e) => {
|
|
477
477
|
const t = e._getLocalPlacement();
|
|
478
478
|
return l(t.bounds, t.rotation);
|
|
479
479
|
})), _ = this._createOptions.beginPersistResource();
|
|
@@ -505,7 +505,7 @@ var b = class extends d {
|
|
|
505
505
|
for (const t of i) t === r ? s.push(e) : c.includes(t) || s.push(t);
|
|
506
506
|
this._updateState({ members: s });
|
|
507
507
|
for (const e of c) e.getContent().delete();
|
|
508
|
-
return this._rebound(),
|
|
508
|
+
return this._rebound(), g(o, d, [e], {
|
|
509
509
|
autoSelect: t?.autoSelect ?? !0,
|
|
510
510
|
autoSelectRestore: t?.autoSelectRestore
|
|
511
511
|
}, m), o.commit(), this._members._notifyChange(), e;
|
|
@@ -525,7 +525,7 @@ var b = class extends d {
|
|
|
525
525
|
const s = n.filter((t) => t !== e);
|
|
526
526
|
if (this._updateState({ members: s }), 1 === s.length && this.getMovable()) {
|
|
527
527
|
const e = s[0], n = e.isSelected(), [i] = this._free(s, t?.description ?? r("op.deleteDrawing"));
|
|
528
|
-
this.delete(t), n &&
|
|
528
|
+
this.delete(t), n && g(o, i.getRange().getWorksheet(), [i], { autoSelect: !0 }, [e]);
|
|
529
529
|
} else 0 === s.length ? this.delete(t) : this._rebound();
|
|
530
530
|
o.commit(), this._members._notifyChange();
|
|
531
531
|
} catch (e) {
|
|
@@ -559,19 +559,19 @@ var b = class extends d {
|
|
|
559
559
|
getStyles: i.getStyles,
|
|
560
560
|
getRange: i.getRange,
|
|
561
561
|
addWatch: i.addWatch
|
|
562
|
-
}, h =
|
|
562
|
+
}, h = p(s, l, {
|
|
563
563
|
getMovable: () => c,
|
|
564
564
|
amend: (e) => o._amend(e),
|
|
565
565
|
isClosed: () => o._closed
|
|
566
|
-
}),
|
|
567
|
-
let
|
|
566
|
+
}), u = () => o.getMovable(), d = () => o._members_().indexOf(c);
|
|
567
|
+
let m;
|
|
568
568
|
return c = new b({
|
|
569
569
|
content: h,
|
|
570
570
|
json: e,
|
|
571
571
|
transactions: i.transactions,
|
|
572
572
|
beginPersistResource: i.beginPersistResource,
|
|
573
573
|
fromResourceId: n,
|
|
574
|
-
getParent:
|
|
574
|
+
getParent: u,
|
|
575
575
|
onMemberPlacementChange: () => o._rebound(),
|
|
576
576
|
place: (e) => {
|
|
577
577
|
const t = o._drawnPlacement();
|
|
@@ -582,9 +582,9 @@ var b = class extends d {
|
|
|
582
582
|
return t ? a.placeInChild(t, o._childBounds(), e) : null;
|
|
583
583
|
},
|
|
584
584
|
coords: t.EmptyRange,
|
|
585
|
-
getRanges: (e) =>
|
|
586
|
-
getContainerIndex:
|
|
587
|
-
getZIndex:
|
|
585
|
+
getRanges: (e) => u().getRanges(),
|
|
586
|
+
getContainerIndex: d,
|
|
587
|
+
getZIndex: d,
|
|
588
588
|
getBoundsAtCoords: () => ({
|
|
589
589
|
x: 0,
|
|
590
590
|
y: 0,
|
|
@@ -594,20 +594,20 @@ var b = class extends d {
|
|
|
594
594
|
getCoordsAtBounds: () => t.EmptyRange,
|
|
595
595
|
isProtected: () => o.isReadOnly(),
|
|
596
596
|
moveToBackOnContainer: () => o._moveMember(c, 0, r("op.moveToBack")),
|
|
597
|
-
moveBackwardOnContainer: () => o._moveMember(c,
|
|
598
|
-
moveForwardOnContainer: () => o._moveMember(c,
|
|
597
|
+
moveBackwardOnContainer: () => o._moveMember(c, d() - 1, r("op.moveBackwards")),
|
|
598
|
+
moveForwardOnContainer: () => o._moveMember(c, d() + 1, r("op.moveForward")),
|
|
599
599
|
moveToFrontOnContainer: () => o._moveMember(c, o._members_().length - 1, r("op.moveToFront")),
|
|
600
600
|
deleteFromContainer: (e) => o._removeMember(c, e),
|
|
601
601
|
setContainerCallbacks: (e) => {
|
|
602
|
-
e && (
|
|
603
|
-
...
|
|
602
|
+
e && (m = {
|
|
603
|
+
...m,
|
|
604
604
|
...e
|
|
605
|
-
}), c &&
|
|
605
|
+
}), c && m && o._memberCallbacks.set(c, m);
|
|
606
606
|
},
|
|
607
607
|
invalidate: () => {
|
|
608
608
|
o._members._notifyChange();
|
|
609
609
|
}
|
|
610
|
-
}),
|
|
610
|
+
}), m && this._memberCallbacks.set(c, m), c;
|
|
611
611
|
}
|
|
612
612
|
_tellZIndex() {
|
|
613
613
|
const e = this._members_(), t = this._toldOrder;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license @sheetxl/mcp - MCP server exposing SheetXL spreadsheet operations as tools and resources. -
|
|
2
|
+
* @license @sheetxl/mcp - MCP server exposing SheetXL spreadsheet operations as tools and resources. - v1.0.2
|
|
3
3
|
*
|
|
4
4
|
* (C) 2026-present SheetXL Inc. & Michael T. Ford
|
|
5
5
|
* License: SheetXL EULA — https://www.sheetxl.com/eula
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license @sheetxl/mcp - MCP server exposing SheetXL spreadsheet operations as tools and resources. -
|
|
2
|
+
* @license @sheetxl/mcp - MCP server exposing SheetXL spreadsheet operations as tools and resources. - v1.0.2
|
|
3
3
|
*
|
|
4
4
|
* (C) 2026-present SheetXL Inc. & Michael T. Ford
|
|
5
5
|
* License: SheetXL EULA — https://www.sheetxl.com/eula
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license @sheetxl/mcp - MCP server exposing SheetXL spreadsheet operations as tools and resources. -
|
|
2
|
+
* @license @sheetxl/mcp - MCP server exposing SheetXL spreadsheet operations as tools and resources. - v1.0.2
|
|
3
3
|
*
|
|
4
4
|
* (C) 2026-present SheetXL Inc. & Michael T. Ford
|
|
5
5
|
* License: SheetXL EULA — https://www.sheetxl.com/eula
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license @sheetxl/mcp - MCP server exposing SheetXL spreadsheet operations as tools and resources. -
|
|
2
|
+
* @license @sheetxl/mcp - MCP server exposing SheetXL spreadsheet operations as tools and resources. - v1.0.2
|
|
3
3
|
*
|
|
4
4
|
* (C) 2026-present SheetXL Inc. & Michael T. Ford
|
|
5
5
|
* License: SheetXL EULA — https://www.sheetxl.com/eula
|
|
6
6
|
*/
|
|
7
|
-
import { t } from "./
|
|
7
|
+
import { t } from "./DzCZGtlg3pJO91l9.js";
|
|
8
8
|
var c = 2 * Math.PI;
|
|
9
9
|
function n(t, c) {
|
|
10
10
|
const n = Math.cos(c), e = Math.sin(c), s = Math.cos(t.phi), y = Math.sin(t.phi);
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license @sheetxl/mcp - MCP server exposing SheetXL spreadsheet operations as tools and resources. -
|
|
2
|
+
* @license @sheetxl/mcp - MCP server exposing SheetXL spreadsheet operations as tools and resources. - v1.0.2
|
|
3
3
|
*
|
|
4
4
|
* (C) 2026-present SheetXL Inc. & Michael T. Ford
|
|
5
5
|
* License: SheetXL EULA — https://www.sheetxl.com/eula
|
|
6
6
|
*/
|
|
7
|
-
import { n as e, t } from "./
|
|
7
|
+
import { n as e, t } from "./D_YBc6vHBL-ajwvB.js";
|
|
8
8
|
var i = t((t, i) => {
|
|
9
9
|
var n = t, r = function t() {
|
|
10
10
|
var i = "undefined" != typeof self ? self : "undefined" != typeof window ? window : void 0 !== i ? i : {}, n = !i.document && !!i.postMessage, r = i.IS_PAPA_WORKER || !1, s = {}, a = 0, o = {};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license @sheetxl/mcp - MCP server exposing SheetXL spreadsheet operations as tools and resources. -
|
|
2
|
+
* @license @sheetxl/mcp - MCP server exposing SheetXL spreadsheet operations as tools and resources. - v1.0.2
|
|
3
3
|
*
|
|
4
4
|
* (C) 2026-present SheetXL Inc. & Michael T. Ford
|
|
5
5
|
* License: SheetXL EULA — https://www.sheetxl.com/eula
|