@sheetxl/studio-vanilla
Version:
SheetXL Studio - Vanilla entry point for integrating SheetXL UI.
7 lines (6 loc) • 1.9 kB
JavaScript
;/**
* @license @sheetxl/studio-vanilla - SheetXL Studio - Vanilla entry point for integrating SheetXL UI. - v0.6.4
*
* (C) 2025-present SheetXL Inc. & Michael T. Ford
* License: The license can be found at https://www.sheetxl.com/license.
*/Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const y=require("./Bd-US8M4eZh5SC26.cjs");exports.fromBufferCSV=async(a,c)=>{const{papaParseConfig:i,setValuesOptions:f,createWorkbookOptions:h}=c??{},o=await Promise.resolve().then(()=>require("./YqW8e8iyC4JhXCYy.cjs")).then(n=>n.p),m=new TextDecoder().decode(a);let p=-1;const t=new y.iy(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("./YqW8e8iyC4JhXCYy.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};