@sheetxl/sdk 0.2.6 → 0.3.0

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 (102) hide show
  1. package/browser/cjs/{BjgRUxx-XDOpnPL-.cjs → B4JxPW8fzjVHWAQW.cjs} +1 -1
  2. package/browser/cjs/{lXdOsnm-jZHQBBBW.cjs → BDaJLiZuqPE8Dtnh.cjs} +1 -1
  3. package/browser/cjs/{BuGJzOcaTQHrFpAi.cjs → BQubidP9_YM_hBOg.cjs} +2 -2
  4. package/browser/cjs/{DilLEdPuHqLbh5sf.cjs → BV64nByDVDyQCk0v.cjs} +1 -1
  5. package/browser/cjs/{CCT2GkFj7ICxXUES.cjs → Bb14pTwp5cJHMNC3.cjs} +1 -1
  6. package/browser/cjs/{D9VWafL4GO91s-ss.cjs → Bb7h09WCD0R8ATFM.cjs} +1 -1
  7. package/browser/cjs/{CbkB0mQ12rY_vVQA.cjs → BbkKttxZlubHi85H.cjs} +1 -1
  8. package/browser/cjs/{BCpPSYDEqyb04P1R.cjs → BeIXCEcRFT0Dd0tJ.cjs} +1 -1
  9. package/browser/cjs/{DREJZJuBE505tfIa.cjs → BhV4q0JUhtJ1pTSd.cjs} +1 -1
  10. package/browser/cjs/{CFzPZOhjGf04KRj4.cjs → Bh_-BkXZbwHDU-be.cjs} +2 -2
  11. package/browser/cjs/{BLG6_L_HCAO81YQL.cjs → Bkb4ulG1MBGnmCDu.cjs} +1 -1
  12. package/browser/cjs/{Ib1rBKg28o0eoK5d.cjs → BmPep7SOrq0MDlIH.cjs} +1 -1
  13. package/browser/cjs/{dJ-MSsMtF8KRc16n.cjs → C6mlfiSpwGoB2nv1.cjs} +2 -2
  14. package/browser/cjs/{Ci-LITf7FutalLC4.cjs → CJcxsweXAw8BW4Ko.cjs} +2 -2
  15. package/browser/cjs/{BsTj3RQ6ZEGPgKcQ.cjs → CRux2v8CIGLhWMgL.cjs} +6 -6
  16. package/browser/cjs/{qAMXqcWKLU1dQ_3h.cjs → CSBUnZ1-0o8_KiP4.cjs} +1 -1
  17. package/browser/cjs/{Bu47JGsCj17hmXc_.cjs → CW41wIAH82TPU9XF.cjs} +6 -6
  18. package/browser/cjs/{CGZGNjsBxID1puTh.cjs → C_Coalce8J4csiLE.cjs} +1 -1
  19. package/browser/cjs/{BqNVHurf7quGcU6z.cjs → Cb-9bKZeEXba7OaS.cjs} +1 -1
  20. package/browser/cjs/{mv0n6HW37Bg9vbEq.cjs → CcEoCmZJr-dbfUUY.cjs} +1 -1
  21. package/browser/cjs/{CzyTW1VE-AUeXvey.cjs → CkHBE_ZWw3rfwn64.cjs} +4 -4
  22. package/browser/cjs/{BMR7gbu-c18QBWPt.cjs → Cx5p99U--ygOZzp1.cjs} +1 -1
  23. package/browser/cjs/{CTwmDtiXYiM_eVmk.cjs → D5yunVCLLyML4GqZ.cjs} +5 -5
  24. package/browser/cjs/{CorV6bYZuJtzRl_o.cjs → DBy5XU87AO-Lk9KS.cjs} +1 -1
  25. package/browser/cjs/{Dvs5Vm4RFD3Taixm.cjs → DDVXI4QtcLw0-OUn.cjs} +1 -1
  26. package/browser/cjs/{B2O3RNuGifH03sly.cjs → DEo_n8v6D6Q9NhD-.cjs} +1 -1
  27. package/browser/cjs/{C-hZNDAwWuxBFIL6.cjs → DGqjsAiKHZF6m1Mv.cjs} +1 -1
  28. package/browser/cjs/{r9g18mieulrXQm1L.cjs → DkRhvDRXky0WHc5N.cjs} +1 -1
  29. package/browser/cjs/{DmZ4H5WXrLU8_ULc.cjs → Dmpm7Dydw8cVGAXs.cjs} +1 -1
  30. package/browser/cjs/{B-H7eMELHIPn-bzr.cjs → DsmHYqhIq2MfMv8W.cjs} +2 -2
  31. package/browser/cjs/{CkNaOiSUo75nvWtM.cjs → Dwca29zrUqeuyzef.cjs} +3 -3
  32. package/browser/cjs/{DNwyFP0z1WUsz7Mv.cjs → Dzjt1bF9qwsaLhRG.cjs} +1 -1
  33. package/browser/cjs/index.cjs +2 -2
  34. package/browser/cjs/{Dl_4SDyZOgkXMEJC.cjs → oRdOA7RYIdJXPylN.cjs} +1 -1
  35. package/{node/esm/THIuEtMdfBrL-HBu.mjs → browser/esm/1qJFed5oZZClEvR7.mjs} +1 -1
  36. package/browser/esm/{BhfmggeeGS_CFF11.mjs → 88Z2ercj18fTQTFf.mjs} +8 -8
  37. package/browser/esm/{_6Pn6ZxxA5IHC32O.mjs → B7RUvU_1w-518Kei.mjs} +1 -1
  38. package/browser/esm/{ucCvrtg0NIVDPCMF.mjs → BDSXfZn_tGzDfcGH.mjs} +2 -2
  39. package/browser/esm/{D9-gfxTwv_8KGH0J.mjs → BMMN0vqruCIXUVrf.mjs} +1 -1
  40. package/browser/esm/{EW--St9c361BTpnI.mjs → BScNrytUNc1fgw5w.mjs} +1 -1
  41. package/browser/esm/{CmzSf5DNJLoOtMk-.mjs → BgR-7La4idJ3wPvg.mjs} +1 -1
  42. package/browser/esm/{C7BBC6ZgCeDtER3f.mjs → Bk0dF9BepS1SnqTq.mjs} +1 -1
  43. package/browser/esm/{ulV_OiYC8RR24mou.mjs → C-O9Ldr523jKWAcg.mjs} +5 -5
  44. package/browser/esm/{DAF3pLo9IAXpgj0b.mjs → CAXPGzIm8eIzlllY.mjs} +4 -4
  45. package/{node/esm/BwUpLF3TBx5yV5Lj.mjs → browser/esm/CBCrBb7rBes-jtVm.mjs} +1 -1
  46. package/browser/esm/{DgVxyg7Pr4Gn7KI7.mjs → CWF10CFskTkEnVSU.mjs} +1 -1
  47. package/browser/esm/{B4BJ7t94Wpnv9a7S.mjs → C_CDUyeiM2ZP_nX-.mjs} +1 -1
  48. package/{node/esm/ItKMvN0XCstp_nYY.mjs → browser/esm/C_VWE2coFxoERf46.mjs} +1 -1
  49. package/browser/esm/{BU8yIdTQ6we6k-KG.mjs → CoeJd8Phw9PvOQyl.mjs} +1 -1
  50. package/{node/esm/MTsxZkvH_SRJmSFp.mjs → browser/esm/Cp5SC1P2nuJ-qDdf.mjs} +1 -1
  51. package/browser/esm/{DGdd1TuOoJRgFv5y.mjs → D0otc_DB7jVc6Vn0.mjs} +1 -1
  52. package/browser/esm/{D9hXALGej55nUIBr.mjs → D1mftitLg7JAa9DV.mjs} +1 -1
  53. package/browser/esm/{D2bYWgsB0IswGpK7.mjs → D4GBxdi5DQwe2uzk.mjs} +2 -2
  54. package/{node/esm/B7pyjq8tI7V7pcwy.mjs → browser/esm/DDrb3x_MBPP0niIM.mjs} +1 -1
  55. package/browser/esm/{BQSylQaIn2seUkRP.mjs → D_-ygdD3lFdC0BUO.mjs} +3 -3
  56. package/browser/esm/{BOb7v1vx9lJiStYh.mjs → HIMUW53E4Ts1jp-k.mjs} +1 -1
  57. package/browser/esm/{C_xLg294X_US_kYm.mjs → LP_IAgFtTpWfer7J.mjs} +1 -1
  58. package/browser/esm/{Bqmgcdzk45VxX6Iz.mjs → NnxHFBWRP3jJ1DRo.mjs} +6 -6
  59. package/browser/esm/{-P8qNXxTWhuiSr9M.mjs → OuTlu0ksD51dIVpa.mjs} +2 -2
  60. package/browser/esm/{B5coyTQHreqWfXTL.mjs → ghf3-fGK3x5ueGt1.mjs} +2 -2
  61. package/browser/esm/index.mjs +2 -2
  62. package/browser/esm/{AGVzrwoDbttD6w4x.mjs → jGTorAJ66YXmQ9Ds.mjs} +1 -1
  63. package/browser/esm/{CxsDCCCIZ3izAWpc.mjs → kDJ4zkCeYD4_E1VU.mjs} +1 -1
  64. package/browser/esm/{BONMqgKB8XepwVUP.mjs → l5Ft7OrA0rrzmWoU.mjs} +1 -1
  65. package/browser/esm/{Buj1qRrPX5ma7rP2.mjs → m0SaH5wIC-TYoHze.mjs} +3 -3
  66. package/{node/esm/B93nGRWqezVAe82d.mjs → browser/esm/o2zheFXXFXlJOkvu.mjs} +1 -1
  67. package/browser/esm/{U-qXg8d0XjmxJPf5.mjs → o9s0UQKSY9odzCKI.mjs} +1 -1
  68. package/{node/esm/528R85wwImPG1QAx.mjs → browser/esm/pq9zAyYkKum5ZX0e.mjs} +1 -1
  69. package/licenses/dependencies.txt +3 -3
  70. package/node/esm/{BKKWEXTAHQcnW_xk.mjs → -KKVEGKJwq7085C6.mjs} +4 -4
  71. package/{browser/esm/THIuEtMdfBrL-HBu.mjs → node/esm/1qJFed5oZZClEvR7.mjs} +1 -1
  72. package/node/esm/{DVvO7Cmr6-3USkj5.mjs → B8m8WapdyA9KbDsD.mjs} +1 -1
  73. package/node/esm/{Dp9yDBXx_7cwTY-p.mjs → BCqxvE4m8KKRjcrP.mjs} +2 -2
  74. package/node/esm/{BaX81ieKgh6x9n3-.mjs → BDMNqpjBRxXOwET5.mjs} +6 -6
  75. package/node/esm/{BvhUvPTEIyACj5zc.mjs → BLFshUHW9SxLJ2Ot.mjs} +2 -2
  76. package/node/esm/{D9-gfxTwv_8KGH0J.mjs → BMMN0vqruCIXUVrf.mjs} +1 -1
  77. package/node/esm/{EW--St9c361BTpnI.mjs → BScNrytUNc1fgw5w.mjs} +1 -1
  78. package/node/esm/{TjmQUpBzdM6KL24x.mjs → BvqfDWAnnDH6ai2K.mjs} +1 -1
  79. package/node/esm/{BfRPN7DBXGwgEl0p.mjs → C1hvR-aBJLd9aVY_.mjs} +1 -1
  80. package/{browser/esm/BwUpLF3TBx5yV5Lj.mjs → node/esm/CBCrBb7rBes-jtVm.mjs} +1 -1
  81. package/node/esm/{DgVxyg7Pr4Gn7KI7.mjs → CWF10CFskTkEnVSU.mjs} +1 -1
  82. package/node/esm/{B4BJ7t94Wpnv9a7S.mjs → C_CDUyeiM2ZP_nX-.mjs} +1 -1
  83. package/{browser/esm/ItKMvN0XCstp_nYY.mjs → node/esm/C_VWE2coFxoERf46.mjs} +1 -1
  84. package/{browser/esm/MTsxZkvH_SRJmSFp.mjs → node/esm/Cp5SC1P2nuJ-qDdf.mjs} +1 -1
  85. package/node/esm/{DGdd1TuOoJRgFv5y.mjs → D0otc_DB7jVc6Vn0.mjs} +1 -1
  86. package/{browser/esm/B7pyjq8tI7V7pcwy.mjs → node/esm/DDrb3x_MBPP0niIM.mjs} +1 -1
  87. package/node/esm/{DWYkJQ-eVYboYKz5.mjs → DiWBMHR4YdrGY5NO.mjs} +2 -2
  88. package/node/esm/{BQotQDQoybuUcFTS.mjs → DnpjpT7qnATgmY4k.mjs} +4 -4
  89. package/node/esm/{B-S0zOSFMqvUzORJ.mjs → Dx5bFYrr5nvTn-yS.mjs} +1 -1
  90. package/node/esm/{BOb7v1vx9lJiStYh.mjs → HIMUW53E4Ts1jp-k.mjs} +1 -1
  91. package/node/esm/{DosKYfaNY0o9gZ-R.mjs → XOT6SWELJysk4E3n.mjs} +1 -1
  92. package/node/esm/{D3qKeWp3MQKMP2h_.mjs → bz_y9SyUCyY5bTph.mjs} +1 -1
  93. package/node/esm/index.mjs +7 -7
  94. package/node/esm/{CxsDCCCIZ3izAWpc.mjs → kDJ4zkCeYD4_E1VU.mjs} +1 -1
  95. package/node/esm/{BONMqgKB8XepwVUP.mjs → l5Ft7OrA0rrzmWoU.mjs} +1 -1
  96. package/node/esm/{krHJwUyEoybVhk5D.mjs → mViI8YV4YDQ_iM2i.mjs} +3 -3
  97. package/{browser/esm/B93nGRWqezVAe82d.mjs → node/esm/o2zheFXXFXlJOkvu.mjs} +1 -1
  98. package/node/esm/{U-qXg8d0XjmxJPf5.mjs → o9s0UQKSY9odzCKI.mjs} +1 -1
  99. package/{browser/esm/528R85wwImPG1QAx.mjs → node/esm/pq9zAyYkKum5ZX0e.mjs} +1 -1
  100. package/node/esm/{BmfPbR-U7zbLWgfh.mjs → wqkpGjIdok1ol8ml.mjs} +1 -1
  101. package/node/esm/{CITMKf4A3oqmkDlo.mjs → wr3pc9hTlzIGLGZF.mjs} +1 -1
  102. package/package.json +4 -4
@@ -1,5 +1,5 @@
1
1
  "use strict";/**
2
- * @license @sheetxl/sdk - SDK - A high-performance, embeddable spreadsheet engine. - v0.2.6
2
+ * @license @sheetxl/sdk - SDK - A high-performance, embeddable spreadsheet engine. - v0.3.0
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/sdk - SDK - A high-performance, embeddable spreadsheet engine. - v0.2.6
2
+ * @license @sheetxl/sdk - SDK - A high-performance, embeddable spreadsheet engine. - v0.3.0
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/sdk - SDK - A high-performance, embeddable spreadsheet engine. - v0.2.6
2
+ * @license @sheetxl/sdk - SDK - A high-performance, embeddable spreadsheet engine. - v0.3.0
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,15 +1,15 @@
1
1
  "use strict";/**
2
- * @license @sheetxl/sdk - SDK - A high-performance, embeddable spreadsheet engine. - v0.2.6
2
+ * @license @sheetxl/sdk - SDK - A high-performance, embeddable spreadsheet engine. - v0.3.0
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
6
  *//**
7
- * @license @sheetxl/scripting - Scripting - Scripting engine for Macros and formulas; includes TypeScript and EsBuild. - v0.2.6
7
+ * @license @sheetxl/scripting - Scripting - Scripting engine for Macros and formulas; includes TypeScript and EsBuild. - v0.3.0
8
8
  *
9
9
  * (C) 2025-present SheetXL Inc. & Michael T. Ford
10
10
  * License: The license can be found at https://www.sheetxl.com/license.
11
11
  *//**
12
- * @license @sheetxl/utils - Utils - Utilities used by most SheetXL components. - v0.2.6
12
+ * @license @sheetxl/utils - Utils - Utilities used by most SheetXL components. - v0.3.0
13
13
  *
14
14
  * (C) 2025-present SheetXL Inc. & Michael T. Ford
15
15
  * License: The license can be found at https://www.sheetxl.com/license.
@@ -20,4 +20,4 @@ Please use Chrome or Edge if external copy and paste is required.`,k=`You do not
20
20
  All copy and paste operations will be limited to the browser tab.`,jt={Safari:`The Safari browser does not support advanced copy and paste.
21
21
  Copy and paste will be limited to within the browser tab.
22
22
 
23
- Please use Chrome or Edge if external copy and paste is required.`,Perms:k,PermsWrite:T()===y.Safari?ut:k,PermsRead:T()===y.Safari?ut:k},N=async()=>new Promise(e=>{document.hasFocus()?e():globalThis.addEventListener?.("focus",()=>{e()},{once:!0}),document.activeElement.focus?.()}),B=async(e,t,r)=>{if(T()===y.Safari)return await r(new Error(jt.Safari));try{const n=async i=>{try{return await i()}catch(l){if(l.message?.includes("Document is not focused"))return!1;throw l}},o=await globalThis?.navigator?.permissions?.query({name:e,allowWithoutGesture:!0,allowWithoutSanitization:!0});let a=!1;if(o.state==="prompt"&&(a=await n(t)),a||o.state!=="granted"||(a=await t()),!a)return await r(new Error(o.state))}catch(n){return n.message==="No valid data on clipboard"||n.name==="DataError"?void 0:await r(n)}},Tt=async e=>{try{return await e.read({unsanitized:[h]})}catch{}return await e.read()};if(!globalThis.ClipboardItem){const e=(r,n)=>new Blob([n],{type:r});class t{constructor(n,o){this._items={},this._types=Object.keys(n);const a={},i=Object.keys(n);for(let l=0;l<i.length;l++){const s=i[l];let c=n[s];a[s]=typeof c=="string"?e(s,c):c}this._items=a,this._presentationStyle=o?.presentationStyle??"unspecified"}get types(){return this._types}getType(n){return Promise.resolve(this._items[n])}supports(n){return!0}}globalThis.ClipboardItem=t}const V=async(e,t=h)=>new Promise(async(r,n)=>{try{const o=await(async(a,i)=>{if(!a)return null;const l=await Tt(a);let s=!1;for(let c=0;!s&&l&&c<l.length;c++)if(s=l[c].types.includes(i),s)return await l[c].getType(i);return s?void 0:null})(e,t);if(o){const a=new FileReader;a.onload=()=>{r(a.result)},a.onerror=()=>{r("")},a.readAsText(o)}else r("")}catch(o){n(o)}}),dt=async(e,t=h)=>{const r=await V(e,t);if(!r)return null;let n=null;try{n=new DOMParser().parseFromString(r,h)}catch{console.warn("Can't parse html from clipboard.")}return n},C="clipboard-uuid",v="web text/uuid",ft=e=>`<div style="display:none" ${C}="${e}"/>`,Wt=(e,t)=>{let r=null;try{const n=new DOMParser().parseFromString(t,h);n.body.firstElementChild.setAttribute(C,e),r=n.getElementsByTagName("body")[0].innerHTML}catch(n){console.warn("Can't embed uuid.",n)}return r},pt=(e,t)=>{if(!t||!e)return!1;try{const r=t.querySelectorAll(`[${C}="${e}"]`);if(r&&r.length===1)return!0;if(t.querySelector("parsererror"))throw new Error("We are unable to parse node");return!1}catch{return!1}};class wt{constructor(t){if(t?.nativeClipboard===void 0||t?.nativeClipboard===!0)try{this._nativeClipboard=globalThis?.navigator.clipboard}catch{t?.nativeClipboard===!0&&console.warn("NativeClipboard option set to true but no native clipboard available.")}else this._nativeClipboard=t?.nativeClipboard===!1?null:t?.nativeClipboard;this._disableCheckOnFocus=t?.disableCheckOnFocus??!1,this._init()}async _checkForChanges(){this._nativeClipboard&&this._state&&!this._disableCheckOnFocus&&await B("clipboard-read",async()=>{await N();const t=await V(this._nativeClipboard,v);if(!this._state||t&&t===this._state.uuid)return!0;const r=await dt(this._nativeClipboard,h);return!this._state||(pt(this._state.uuid,r)||this.clear(),!0)},async t=>{t?.message==="denied"||t.message?.includes("Document is not focused")||T()===y.Safari||console.warn("Unable to detect clipboard changes: ",t)})}_init(){const t=this;this._listeners=new Map,this._listenersCapture=new Map,this._state=null,this._nativeClipboard&&(this._onFocus=()=>{t._checkForChanges()},this._onBlur=()=>{globalThis.addEventListener?.("focus",t._onFocus,{once:!0})},globalThis.addEventListener?.("blur",this._onBlur),this._nativeClipboard.addEventListener("clipboardchange",r=>{t._checkForChanges()}))}async read(){if(!this._nativeClipboard)return this._state?.items??null;const t=this;return await B("clipboard-read",async()=>{if(await N(),this._state?.uuid){const r=await V(this._nativeClipboard,v);if(r&&r===t._state.uuid)return!0;const n=await dt(this._nativeClipboard,h);if(pt(t._state?.uuid,n))return!0}return t._state={items:await Tt(this._nativeClipboard),uuid:null,ref:null},this.dispatchEvent(new Event("clipboardread")),!0},async r=>{this.dispatchEvent(new Event("clipboarderrorread"))}),this._state?.items??[]}async write(t){return this._write({uuid:R(),items:t,ref:null})}async _write(t){if(!this._nativeClipboard)return this._state=t,this.dispatchEvent(new Event("clipboardwrite")),this.dispatchEvent(new Event("clipboardchange")),null;const r=this,n=[],o=t.uuid;let a=t.items??[];const i=()=>{r._state={uuid:o,ref:t.ref,items:n},r.dispatchEvent(new Event("clipboardwrite")),r.dispatchEvent(new Event("clipboardchange"))};await B("clipboard-write",async()=>{await N(),o&&a.length===0&&(a.push(new ClipboardItem({[v]:new Blob([o],{type:v})})),a.push(new ClipboardItem({[h]:new Blob([ft(o)],{type:h})})));for(let l=0;l<Math.min(1,a.length);l++){const s=a[l];let c=s.types.indexOf(h),d=null;if(c!==-1){const f=await s.getType(h);d=await W(f),d&&(d=Wt(o,d))}if(!d&&s.types.includes(b)){const f=await s.getType(b);if(f){let p=null;typeof f=="string"?(console.warn("text as string",f),p=f):p=await W(f),p&&(d=`<div ${C}="${o}">${p}</div>`)}}if(!d&&s.types.includes(L)){const f=await s.getType(L),p=_t(await f.arrayBuffer());d=`<div ${C}="${o}"><img src="${Ot+p}"/></div>`}!d&&o&&(d=ft(o));const w=new Blob([d??""],{type:h}),u={};for(let f=0;f<s.types.length;f++){const p=s.types[f];u[p]=f===c?w:s.getType(p)}d&&c===-1&&(u[h]=w),o&&(u[v]=new Blob([o],{type:v})),n.push(new ClipboardItem(u))}try{n&&n.length!==0?await this._nativeClipboard.write(n):await(async l=>{l&&await l.writeText("")})(this._nativeClipboard)}catch(l){l.message?.includes("Document is not focused")||console.warn("Unable to write to native clipboard: ",l)}return i(),!0},async l=>{this.dispatchEvent(new Event("clipboarderrorwrite")),i()})}async writeReference(t){if(!t)return void this.clear();let r=null;const n={};try{const a=await t.toText?.()??null;a&&(n[b]=new Blob([a??""],{type:b}))}catch(a){r=a}try{const a=await t.toHtml?.()??null;a&&(n[h]=new Blob([a],{type:h}))}catch(a){r=a,console.warn("export to html",a)}try{const a=await t.toImage?.()??null;a&&(n[L]=a)}catch(a){r=a,console.warn("export to png",a)}const o=this._write({uuid:R(),ref:t,items:Object.keys(n).length>0?[new ClipboardItem(n)]:null});if(r)throw r;return o}clear(t=!1){this._state&&(this._state=null,t&&this._write({uuid:null,ref:null,items:null}),this.dispatchEvent(new Event("clipboardwrite")),this.dispatchEvent(new Event("clipboardchange")))}async readReference(){return await this.read(),this._state?.ref??null}readText(){return new Promise(async(t,r)=>{const n=await this.read();let o=null;for(let i=0;!o&&n&&i<n.length;i++)n[i].types.includes(b)&&(o=await n[i].getType(b));if(!o)return void t("");const a=new FileReader;a.onload=()=>{t(a.result)},a.readAsText(o),a.onerror=i=>{r(i)}})}async writeText(t){const r=[new ClipboardItem({[b]:new Blob([t],{type:b})})];return this._write({uuid:R(),items:r,ref:null})}addEventListener(t,r,n={}){const o=n?.capture?this._listenersCapture:this._listeners;let a=o.get(t);a||(a=new Map,o.set(t,a)),a.set(r,typeof n=="boolean"?{}:n)}dispatchEvent(t){if(!t)return;const r=n=>{const o=n.get(t.type);o&&o.forEach((a,i)=>{try{typeof i=="function"?i(t):i.handleEvent&&i.handleEvent(t),a.once&&o.delete(i)}catch(l){console.warn(l)}})};return r(this._listenersCapture),r(this._listeners),!0}removeEventListener(t,r,n){const o=n?.capture?this._listenersCapture:this._listeners,a=o.get(t);a&&(a.delete(r),a.size===0&&o.delete(t))}close(){globalThis.removeEventListener?.("focus",this._onFocus),globalThis.removeEventListener?.("blur",this._onBlur)}}var z;(z=wt||(wt={})).ErrorMessages=jt,z.Global=new z;let ht=null,q=null,M=null;const Vt=Object.freeze({compileTypescript:async function(e){if(!e?.source)return null;if(q&&xt.deepEqual(q,e))return ht;const t=await async function(){if(M)return M;const{TypeScriptCompiler:n}=await Promise.resolve().then(()=>require("./B-H7eMELHIPn-bzr.cjs"));return M=new n,M}(),r=await t.compileModule(e);return ht=r,q=e,r}}),Gt=Object.freeze(Object.defineProperty({__proto__:null,ScriptingUtils:Vt},Symbol.toStringTag,{value:"Module"}));exports.$t=xt,exports.index=Gt;
23
+ Please use Chrome or Edge if external copy and paste is required.`,Perms:k,PermsWrite:T()===y.Safari?ut:k,PermsRead:T()===y.Safari?ut:k},N=async()=>new Promise(e=>{document.hasFocus()?e():globalThis.addEventListener?.("focus",()=>{e()},{once:!0}),document.activeElement.focus?.()}),B=async(e,t,r)=>{if(T()===y.Safari)return await r(new Error(jt.Safari));try{const n=async i=>{try{return await i()}catch(l){if(l.message?.includes("Document is not focused"))return!1;throw l}},o=await globalThis?.navigator?.permissions?.query({name:e,allowWithoutGesture:!0,allowWithoutSanitization:!0});let a=!1;if(o.state==="prompt"&&(a=await n(t)),a||o.state!=="granted"||(a=await t()),!a)return await r(new Error(o.state))}catch(n){return n.message==="No valid data on clipboard"||n.name==="DataError"?void 0:await r(n)}},Tt=async e=>{try{return await e.read({unsanitized:[h]})}catch{}return await e.read()};if(!globalThis.ClipboardItem){const e=(r,n)=>new Blob([n],{type:r});class t{constructor(n,o){this._items={},this._types=Object.keys(n);const a={},i=Object.keys(n);for(let l=0;l<i.length;l++){const s=i[l];let c=n[s];a[s]=typeof c=="string"?e(s,c):c}this._items=a,this._presentationStyle=o?.presentationStyle??"unspecified"}get types(){return this._types}getType(n){return Promise.resolve(this._items[n])}supports(n){return!0}}globalThis.ClipboardItem=t}const V=async(e,t=h)=>new Promise(async(r,n)=>{try{const o=await(async(a,i)=>{if(!a)return null;const l=await Tt(a);let s=!1;for(let c=0;!s&&l&&c<l.length;c++)if(s=l[c].types.includes(i),s)return await l[c].getType(i);return s?void 0:null})(e,t);if(o){const a=new FileReader;a.onload=()=>{r(a.result)},a.onerror=()=>{r("")},a.readAsText(o)}else r("")}catch(o){n(o)}}),dt=async(e,t=h)=>{const r=await V(e,t);if(!r)return null;let n=null;try{n=new DOMParser().parseFromString(r,h)}catch{console.warn("Can't parse html from clipboard.")}return n},C="clipboard-uuid",v="web text/uuid",ft=e=>`<div style="display:none" ${C}="${e}"/>`,Wt=(e,t)=>{let r=null;try{const n=new DOMParser().parseFromString(t,h);n.body.firstElementChild.setAttribute(C,e),r=n.getElementsByTagName("body")[0].innerHTML}catch(n){console.warn("Can't embed uuid.",n)}return r},pt=(e,t)=>{if(!t||!e)return!1;try{const r=t.querySelectorAll(`[${C}="${e}"]`);if(r&&r.length===1)return!0;if(t.querySelector("parsererror"))throw new Error("We are unable to parse node");return!1}catch{return!1}};class wt{constructor(t){if(t?.nativeClipboard===void 0||t?.nativeClipboard===!0)try{this._nativeClipboard=globalThis?.navigator.clipboard}catch{t?.nativeClipboard===!0&&console.warn("NativeClipboard option set to true but no native clipboard available.")}else this._nativeClipboard=t?.nativeClipboard===!1?null:t?.nativeClipboard;this._disableCheckOnFocus=t?.disableCheckOnFocus??!1,this._init()}async _checkForChanges(){this._nativeClipboard&&this._state&&!this._disableCheckOnFocus&&await B("clipboard-read",async()=>{await N();const t=await V(this._nativeClipboard,v);if(!this._state||t&&t===this._state.uuid)return!0;const r=await dt(this._nativeClipboard,h);return!this._state||(pt(this._state.uuid,r)||this.clear(),!0)},async t=>{t?.message==="denied"||t.message?.includes("Document is not focused")||T()===y.Safari||console.warn("Unable to detect clipboard changes: ",t)})}_init(){const t=this;this._listeners=new Map,this._listenersCapture=new Map,this._state=null,this._nativeClipboard&&(this._onFocus=()=>{t._checkForChanges()},this._onBlur=()=>{globalThis.addEventListener?.("focus",t._onFocus,{once:!0})},globalThis.addEventListener?.("blur",this._onBlur),this._nativeClipboard.addEventListener("clipboardchange",r=>{t._checkForChanges()}))}async read(){if(!this._nativeClipboard)return this._state?.items??null;const t=this;return await B("clipboard-read",async()=>{if(await N(),this._state?.uuid){const r=await V(this._nativeClipboard,v);if(r&&r===t._state.uuid)return!0;const n=await dt(this._nativeClipboard,h);if(pt(t._state?.uuid,n))return!0}return t._state={items:await Tt(this._nativeClipboard),uuid:null,ref:null},this.dispatchEvent(new Event("clipboardread")),!0},async r=>{this.dispatchEvent(new Event("clipboarderrorread"))}),this._state?.items??[]}async write(t){return this._write({uuid:R(),items:t,ref:null})}async _write(t){if(!this._nativeClipboard)return this._state=t,this.dispatchEvent(new Event("clipboardwrite")),this.dispatchEvent(new Event("clipboardchange")),null;const r=this,n=[],o=t.uuid;let a=t.items??[];const i=()=>{r._state={uuid:o,ref:t.ref,items:n},r.dispatchEvent(new Event("clipboardwrite")),r.dispatchEvent(new Event("clipboardchange"))};await B("clipboard-write",async()=>{await N(),o&&a.length===0&&(a.push(new ClipboardItem({[v]:new Blob([o],{type:v})})),a.push(new ClipboardItem({[h]:new Blob([ft(o)],{type:h})})));for(let l=0;l<Math.min(1,a.length);l++){const s=a[l];let c=s.types.indexOf(h),d=null;if(c!==-1){const f=await s.getType(h);d=await W(f),d&&(d=Wt(o,d))}if(!d&&s.types.includes(b)){const f=await s.getType(b);if(f){let p=null;typeof f=="string"?(console.warn("text as string",f),p=f):p=await W(f),p&&(d=`<div ${C}="${o}">${p}</div>`)}}if(!d&&s.types.includes(L)){const f=await s.getType(L),p=_t(await f.arrayBuffer());d=`<div ${C}="${o}"><img src="${Ot+p}"/></div>`}!d&&o&&(d=ft(o));const w=new Blob([d??""],{type:h}),u={};for(let f=0;f<s.types.length;f++){const p=s.types[f];u[p]=f===c?w:s.getType(p)}d&&c===-1&&(u[h]=w),o&&(u[v]=new Blob([o],{type:v})),n.push(new ClipboardItem(u))}try{n&&n.length!==0?await this._nativeClipboard.write(n):await(async l=>{l&&await l.writeText("")})(this._nativeClipboard)}catch(l){l.message?.includes("Document is not focused")||console.warn("Unable to write to native clipboard: ",l)}return i(),!0},async l=>{this.dispatchEvent(new Event("clipboarderrorwrite")),i()})}async writeReference(t){if(!t)return void this.clear();let r=null;const n={};try{const a=await t.toText?.()??null;a&&(n[b]=new Blob([a??""],{type:b}))}catch(a){r=a}try{const a=await t.toHtml?.()??null;a&&(n[h]=new Blob([a],{type:h}))}catch(a){r=a,console.warn("export to html",a)}try{const a=await t.toImage?.()??null;a&&(n[L]=a)}catch(a){r=a,console.warn("export to png",a)}const o=this._write({uuid:R(),ref:t,items:Object.keys(n).length>0?[new ClipboardItem(n)]:null});if(r)throw r;return o}clear(t=!1){this._state&&(this._state=null,t&&this._write({uuid:null,ref:null,items:null}),this.dispatchEvent(new Event("clipboardwrite")),this.dispatchEvent(new Event("clipboardchange")))}async readReference(){return await this.read(),this._state?.ref??null}readText(){return new Promise(async(t,r)=>{const n=await this.read();let o=null;for(let i=0;!o&&n&&i<n.length;i++)n[i].types.includes(b)&&(o=await n[i].getType(b));if(!o)return void t("");const a=new FileReader;a.onload=()=>{t(a.result)},a.readAsText(o),a.onerror=i=>{r(i)}})}async writeText(t){const r=[new ClipboardItem({[b]:new Blob([t],{type:b})})];return this._write({uuid:R(),items:r,ref:null})}addEventListener(t,r,n={}){const o=n?.capture?this._listenersCapture:this._listeners;let a=o.get(t);a||(a=new Map,o.set(t,a)),a.set(r,typeof n=="boolean"?{}:n)}dispatchEvent(t){if(!t)return;const r=n=>{const o=n.get(t.type);o&&o.forEach((a,i)=>{try{typeof i=="function"?i(t):i.handleEvent&&i.handleEvent(t),a.once&&o.delete(i)}catch(l){console.warn(l)}})};return r(this._listenersCapture),r(this._listeners),!0}removeEventListener(t,r,n){const o=n?.capture?this._listenersCapture:this._listeners,a=o.get(t);a&&(a.delete(r),a.size===0&&o.delete(t))}close(){globalThis.removeEventListener?.("focus",this._onFocus),globalThis.removeEventListener?.("blur",this._onBlur)}}var z;(z=wt||(wt={})).ErrorMessages=jt,z.Global=new z;let ht=null,q=null,M=null;const Vt=Object.freeze({compileTypescript:async function(e){if(!e?.source)return null;if(q&&xt.deepEqual(q,e))return ht;const t=await async function(){if(M)return M;const{TypeScriptCompiler:n}=await Promise.resolve().then(()=>require("./DsmHYqhIq2MfMv8W.cjs"));return M=new n,M}(),r=await t.compileModule(e);return ht=r,q=e,r}}),Gt=Object.freeze(Object.defineProperty({__proto__:null,ScriptingUtils:Vt},Symbol.toStringTag,{value:"Module"}));exports.$t=xt,exports.index=Gt;
@@ -1,5 +1,5 @@
1
1
  "use strict";/**
2
- * @license @sheetxl/sdk - SDK - A high-performance, embeddable spreadsheet engine. - v0.2.6
2
+ * @license @sheetxl/sdk - SDK - A high-performance, embeddable spreadsheet engine. - v0.3.0
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,15 +1,15 @@
1
1
  "use strict";/**
2
- * @license @sheetxl/sdk - SDK - A high-performance, embeddable spreadsheet engine. - v0.2.6
2
+ * @license @sheetxl/sdk - SDK - A high-performance, embeddable spreadsheet engine. - v0.3.0
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
6
  */Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});/**
7
- * @license @sheetxl/scripting - Scripting - Scripting engine for Macros and formulas; includes TypeScript and EsBuild. - v0.2.6
7
+ * @license @sheetxl/scripting - Scripting - Scripting engine for Macros and formulas; includes TypeScript and EsBuild. - v0.3.0
8
8
  *
9
9
  * (C) 2025-present SheetXL Inc. & Michael T. Ford
10
10
  * License: The license can be found at https://www.sheetxl.com/license.
11
11
  */let c=class{constructor(e){this._worker=null,this._nextId=1,this._pendingRequests=new Map,this._workerFactory=e}start(){if(typeof Worker>"u")throw new Error("Web Workers are not supported in this environment.");return this._worker||(this._worker=this._workerFactory(),this._worker.onmessage=e=>{const{id:n,result:t,error:r}=e.data,o=this._pendingRequests.get(n);if(o)if(this._pendingRequests.delete(n),r){const i=new Error(r.message);i.stack=r.stack,r.cause&&(i.cause=r.cause),o.reject(i)}else o.resolve(t)},this._worker.onerror=e=>{console.error("Worker error:",e),this._pendingRequests.forEach(n=>{n.reject(new Error(`Worker failed: ${e.message}`))}),this._pendingRequests.clear(),this._worker=null}),Promise.resolve()}execute(e){if(!this._worker)throw new Error("Worker is not initialized. Call start() first.");const n=this._nextId++;return new Promise((t,r)=>{this._pendingRequests.set(n,{resolve:t,reject:r}),this._worker.postMessage({id:n,params:e})})}terminate(){this._worker&&(this._worker.terminate(),this._worker=null)}};class u{constructor(n){this._onExecute=n}execute(n){return this._onExecute(n)}start(){return Promise.resolve()}terminate(){}}const s=`/**
12
- * @license @sheetxl/primitives - Primitives - Base types for SheetXL functions. - v0.2.6
12
+ * @license @sheetxl/primitives - Primitives - Base types for SheetXL functions. - v0.3.0
13
13
  *
14
14
  * (C) 2025-present SheetXL Inc. & Michael T. Ford
15
15
  * License: The license can be found at https://www.sheetxl.com/license.
@@ -228,7 +228,7 @@ var v;
228
228
  return n = typeof e == "string" ? tt.get(e) : rt.get(e), n || (n = v.Unknown), new n(t, r);
229
229
  }, v.getBuiltInById = (e) => Te.get(e) || Et;
230
230
  /**
231
- * @license @sheetxl/utils - Utils - Utilities used by most SheetXL components. - v0.2.6
231
+ * @license @sheetxl/utils - Utils - Utilities used by most SheetXL components. - v0.3.0
232
232
  *
233
233
  * (C) 2025-present SheetXL Inc. & Michael T. Ford
234
234
  * License: The license can be found at https://www.sheetxl.com/license.
@@ -1508,4 +1508,4 @@ var or = /* @__PURE__ */ Object.freeze({
1508
1508
  __proto__: null,
1509
1509
  initialize: nr
1510
1510
  });
1511
- `,a=typeof self<"u"&&self.Blob&&new Blob(["URL.revokeObjectURL(import.meta.url);",s],{type:"text/javascript;charset=utf-8"});function d(e){let n;try{if(n=a&&(self.URL||self.webkitURL).createObjectURL(a),!n)throw"";const t=new Worker(n,{type:"module",name:e?.name});return t.addEventListener("error",()=>{(self.URL||self.webkitURL).revokeObjectURL(n)}),t}catch{return new Worker("data:text/javascript;charset=utf-8,"+encodeURIComponent(s),{type:"module",name:e?.name})}}const l=async()=>{const{compileModule:e}=await Promise.resolve().then(()=>require("./BsTj3RQ6ZEGPgKcQ.cjs")),n=new u(t=>e(t));return await n.start(),n};exports.createCompilerWorker=async function(){if(typeof process<"u"&&process.versions?.node&&typeof Worker>"u")return await l();if(typeof Worker<"u"){const e=new c(()=>new d);try{return await e.start(),e}catch(n){console.error("Failed to start TypescriptCompiler worker reverting to fallback:",n)}}return await l()};
1511
+ `,a=typeof self<"u"&&self.Blob&&new Blob(["URL.revokeObjectURL(import.meta.url);",s],{type:"text/javascript;charset=utf-8"});function d(e){let n;try{if(n=a&&(self.URL||self.webkitURL).createObjectURL(a),!n)throw"";const t=new Worker(n,{type:"module",name:e?.name});return t.addEventListener("error",()=>{(self.URL||self.webkitURL).revokeObjectURL(n)}),t}catch{return new Worker("data:text/javascript;charset=utf-8,"+encodeURIComponent(s),{type:"module",name:e?.name})}}const l=async()=>{const{compileModule:e}=await Promise.resolve().then(()=>require("./CRux2v8CIGLhWMgL.cjs")),n=new u(t=>e(t));return await n.start(),n};exports.createCompilerWorker=async function(){if(typeof process<"u"&&process.versions?.node&&typeof Worker>"u")return await l();if(typeof Worker<"u"){const e=new c(()=>new d);try{return await e.start(),e}catch(n){console.error("Failed to start TypescriptCompiler worker reverting to fallback:",n)}}return await l()};
@@ -1,5 +1,5 @@
1
1
  "use strict";/**
2
- * @license @sheetxl/sdk - SDK - A high-performance, embeddable spreadsheet engine. - v0.2.6
2
+ * @license @sheetxl/sdk - SDK - A high-performance, embeddable spreadsheet engine. - v0.3.0
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/sdk - SDK - A high-performance, embeddable spreadsheet engine. - v0.2.6
2
+ * @license @sheetxl/sdk - SDK - A high-performance, embeddable spreadsheet engine. - v0.3.0
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/sdk - SDK - A high-performance, embeddable spreadsheet engine. - v0.2.6
2
+ * @license @sheetxl/sdk - SDK - A high-performance, embeddable spreadsheet engine. - v0.3.0
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/sdk - SDK - A high-performance, embeddable spreadsheet engine. - v0.2.6
2
+ * @license @sheetxl/sdk - SDK - A high-performance, embeddable spreadsheet engine. - v0.3.0
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/sdk - SDK - A high-performance, embeddable spreadsheet engine. - v0.2.6
2
+ * @license @sheetxl/sdk - SDK - A high-performance, embeddable spreadsheet engine. - v0.3.0
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/sdk - SDK - A high-performance, embeddable spreadsheet engine. - v0.2.6
2
+ * @license @sheetxl/sdk - SDK - A high-performance, embeddable spreadsheet engine. - v0.3.0
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/sdk - SDK - A high-performance, embeddable spreadsheet engine. - v0.2.6
2
+ * @license @sheetxl/sdk - SDK - A high-performance, embeddable spreadsheet engine. - v0.3.0
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("./CTwmDtiXYiM_eVmk.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("./D5yunVCLLyML4GqZ.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}};