tabulark 0.0.4 → 0.2.1
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/CHANGELOG.md +81 -0
- package/README.md +316 -128
- package/THIRD_PARTY_NOTICES.md +37 -0
- package/dist/adapters.d.ts +62 -0
- package/dist/arrow.d.ts +3 -0
- package/dist/arrow.js +2 -0
- package/dist/arrow.js.map +7 -0
- package/dist/client.d.ts +145 -0
- package/dist/errors.d.ts +25 -0
- package/dist/excel.d.ts +3 -0
- package/dist/excel.js +2 -0
- package/dist/excel.js.map +7 -0
- package/dist/experimental.d.ts +13 -0
- package/dist/experimental.js +2 -0
- package/dist/experimental.js.map +7 -0
- package/dist/http.d.ts +65 -0
- package/dist/http.js +2 -0
- package/dist/http.js.map +7 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +7 -0
- package/dist/model.d.ts +392 -0
- package/dist/official-adapter-manifest.d.ts +31 -0
- package/dist/parquet.d.ts +3 -0
- package/dist/parquet.js +2 -0
- package/dist/parquet.js.map +7 -0
- package/dist/protocol.d.ts +54 -0
- package/dist/range-cache.d.ts +47 -0
- package/dist/range-source.d.ts +64 -0
- package/dist/rpc-client.d.ts +31 -0
- package/dist/source.d.ts +13 -0
- package/dist/view/accessible-grid.d.ts +36 -0
- package/dist/view/canvas-painter.d.ts +91 -0
- package/dist/view/canvas-table-view-public.d.ts +64 -0
- package/dist/view/canvas-table-view.d.ts +40 -0
- package/dist/view/controller.d.ts +34 -0
- package/dist/view/layout.d.ts +34 -0
- package/dist/view/selection.d.ts +7 -0
- package/dist/view/types.d.ts +184 -0
- package/dist/wasm/arrow/tabulark_arrow.d.ts +153 -0
- package/dist/wasm/arrow/tabulark_arrow.js +883 -0
- package/dist/wasm/arrow/tabulark_arrow_bg.wasm +0 -0
- package/dist/wasm/arrow/tabulark_arrow_bg.wasm.d.ts +30 -0
- package/dist/wasm/delimited/tabulark_delimited.d.ts +157 -0
- package/dist/wasm/delimited/tabulark_delimited.js +952 -0
- package/dist/wasm/delimited/tabulark_delimited_bg.wasm +0 -0
- package/dist/wasm/delimited/tabulark_delimited_bg.wasm.d.ts +31 -0
- package/dist/wasm/excel/tabulark_excel.d.ts +146 -0
- package/dist/wasm/excel/tabulark_excel.js +876 -0
- package/dist/wasm/excel/tabulark_excel_bg.wasm +0 -0
- package/dist/wasm/excel/tabulark_excel_bg.wasm.d.ts +30 -0
- package/dist/wasm/parquet/tabulark_parquet.d.ts +146 -0
- package/dist/wasm/parquet/tabulark_parquet.js +872 -0
- package/dist/wasm/parquet/tabulark_parquet_bg.wasm +0 -0
- package/dist/wasm/parquet/tabulark_parquet_bg.wasm.d.ts +30 -0
- package/dist/worker/blob-source-accessor.d.ts +10 -0
- package/dist/worker/source-accessor.d.ts +76 -0
- package/dist/worker/wasm-adapter.d.ts +58 -0
- package/dist/worker/worker-errors.d.ts +9 -0
- package/dist/worker-range-source.d.ts +1 -0
- package/dist/worker-range-source.js +2 -0
- package/dist/worker-range-source.js.map +7 -0
- package/dist/worker.d.ts +1 -0
- package/dist/worker.js +2 -0
- package/dist/worker.js.map +7 -0
- package/package.json +62 -12
- package/js/index.d.ts +0 -18
- package/js/index.js +0 -26
package/dist/index.js
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
var m=class t extends Error{code;retryable;details;constructor(e,n,r={}){super(n,{cause:r.cause}),this.name="TabularkError",this.code=e,this.retryable=r.retryable??!1,this.details=e==="RESOURCE_LIMIT"?xr(r.details):r.details}static fromSerialized(e){return new t(e.code,e.message,{retryable:e.retryable,details:e.details})}};function xr(t){let e=Cr(t)?t:{},n=typeof e.resource=="string"&&e.resource.length>0?e.resource:typeof e.resourceCategory=="string"&&e.resourceCategory.length>0?e.resourceCategory:vr(e);if(fe(e.requiredBytes)&&fe(e.availableBytes))return Object.freeze({...e,resource:n});if(fe(e.required)&&fe(e.available))return Object.freeze({...e,resource:n});let r=Re(e,["maxDecodedBytes","maxOutputBytes","maxMetadataBytes","maxBlockBytes","maxDisplayCellBytes","maxDisplayBytes","maxSourceBytes","maxFieldBytes","maxBatchBytes","maxOperationBytes","maxZipEntryBytes","maxZipUncompressedBytes","maxCfbStreamBytes"]);if(r!==void 0){let a=Re(e,["decodedBytes","outputBytes","metadataBytes","blockBytes","displayCellBytes","displayBytes","sourceBytes","fieldBytes","batchBytes","operationBytes"])??r+1;return Object.freeze({...e,resource:n,requiredBytes:a,availableBytes:r})}let i=Re(e,["limit","maxCells","maxRangeCells","maxSources","maxActiveRanges","maxRangeWaiters","maxColumns","maxFields","maxNestingDepth","maxWorksheetRows","maxWorksheetColumns","maxStyles","maxMergedRegions"])??0,o=Re(e,["cells","cellCount","visibleCellCount","sources","activeRanges","rangeWaiters","columns","fields","nestingDepth","worksheetRows","worksheetColumns","styles","mergedRegions"])??i+1;return Object.freeze({...e,resource:n,required:o,available:i})}function vr(t){let e=Object.keys(t).join(" ").toLowerCase();return e.includes("source")?e.includes("byte")?"source-staging":"source-slots":e.includes("metadata")?"metadata":e.includes("decoded")||e.includes("decompress")?"decompression":e.includes("display")?"display-values":e.includes("field")?"field":e.includes("batch")?"batch":e.includes("range")||e.includes("cell")?"range-cells":e.includes("column")?"columns":e.includes("nest")?"descriptor-nesting":e.includes("worksheet")?"worksheet-dimensions":"adapter-resource"}function Re(t,e){for(let n of e)if(fe(t[n]))return t[n]}function fe(t){return typeof t=="number"&&Number.isFinite(t)&&t>=0}function Cr(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function v(){return new m("CANCELLED","The operation was cancelled")}function C(t){return new m("HANDLE_CLOSED",`${t} is closed`)}function c(t,e){return new m("INVALID_ARGUMENT",t,{details:e})}var Nt={manifestVersion:1,adapters:[{id:"tabulark:delimited",entrypoint:".",exportName:"delimitedAdapter",wasm:{packageName:"tabulark-delimited-wasm",crateArtifact:"tabulark_delimited",outputName:"tabulark_delimited",outputDirectory:"dist/wasm/delimited",modulePath:"./wasm/delimited/tabulark_delimited.js",runtimeExport:"WasmRuntime"},options:{allowedKeys:["dialect","header","mode","delimiter","sourceName"]},resources:{sourceAccess:"streaming",supportsPresentation:!1,runtimeWeight:1}},{id:"tabulark:arrow-ipc",entrypoint:"./arrow",exportName:"arrowIpcAdapter",wasm:{packageName:"tabulark-arrow-wasm",crateArtifact:"tabulark_arrow",outputName:"tabulark_arrow",outputDirectory:"dist/wasm/arrow",modulePath:"./wasm/arrow/tabulark_arrow.js",runtimeExport:"WasmRuntime"},options:{allowedKeys:["container","sourceName"]},resources:{sourceAccess:"range",supportsPresentation:!1,runtimeWeight:1}},{id:"tabulark:parquet",entrypoint:"./parquet",exportName:"parquetAdapter",wasm:{packageName:"tabulark-parquet-wasm",crateArtifact:"tabulark_parquet",outputName:"tabulark_parquet",outputDirectory:"dist/wasm/parquet",modulePath:"./wasm/parquet/tabulark_parquet.js",runtimeExport:"WasmRuntime"},options:{allowedKeys:["sourceName"]},resources:{sourceAccess:"range",supportsPresentation:!1,runtimeWeight:2}},{id:"tabulark:excel",entrypoint:"./excel",exportName:"excelAdapter",wasm:{packageName:"tabulark-excel-wasm",crateArtifact:"tabulark_excel",outputName:"tabulark_excel",outputDirectory:"dist/wasm/excel",modulePath:"./wasm/excel/tabulark_excel.js",runtimeExport:"WasmRuntime"},options:{allowedKeys:["format","sourceName"]},resources:{sourceAccess:"range",supportsPresentation:!0,runtimeWeight:2}}]};var Lt=Tr(Nt),Ko=Object.freeze(Lt.map(t=>t.id)),Sr=Object.freeze(Lt.map(t=>Object.freeze({...t,wasm:Object.freeze({...t.wasm}),options:Object.freeze({allowedKeys:Object.freeze([...t.options.allowedKeys])}),resources:Object.freeze({...t.resources})}))),Dt=new Map(Sr.map(t=>[t.id,t]));function _t(t){return typeof t=="string"&&Dt.has(t)}function G(t){let e=Dt.get(t);if(!e)throw new TypeError(`Unknown official adapter: ${t}`);return e}function Tr(t){if(!me(t)||t.manifestVersion!==1||!Array.isArray(t.adapters))throw new TypeError("The official adapter manifest has an unsupported shape or version");if(t.adapters.length===0)throw new TypeError("The official adapter manifest must contain at least one adapter");let e=new Set,n=new Set,r=new Set;return t.adapters.map((i,o)=>{if(!me(i))throw new TypeError(`Official adapter manifest entry ${o} must be an object`);let{id:a,entrypoint:s,exportName:l,wasm:u,options:d,resources:f}=i;if(!Or(a)||e.has(a))throw new TypeError(`Official adapter manifest entry ${o} has an invalid or duplicate id`);if(s!=="."&&s!=="./arrow"&&s!=="./parquet"&&s!=="./excel"||n.has(s)||typeof l!="string"||l.length===0)throw new TypeError(`Official adapter manifest entry ${o} has an invalid entrypoint or export`);if(!me(u)||typeof u.packageName!="string"||typeof u.crateArtifact!="string"||typeof u.outputName!="string"||typeof u.outputDirectory!="string"||!u.outputDirectory.startsWith("dist/wasm/")||u.outputDirectory.includes("..")||r.has(u.outputDirectory)||typeof u.modulePath!="string"||!u.modulePath.startsWith("./wasm/")||u.modulePath.includes("..")||u.modulePath.includes("?")||u.modulePath.includes("#")||u.runtimeExport!=="WasmRuntime"||u.modulePath!==`./${u.outputDirectory.replace(/^dist\//u,"")}/${u.outputName}.js`)throw new TypeError(`Official adapter manifest entry ${o} has an invalid WASM artifact`);if(!me(d)||!Array.isArray(d.allowedKeys)||d.allowedKeys.some(h=>typeof h!="string")||new Set(d.allowedKeys).size!==d.allowedKeys.length)throw new TypeError(`Official adapter manifest entry ${o} has invalid option keys`);if(!me(f)||f.sourceAccess!=="streaming"&&f.sourceAccess!=="range"&&f.sourceAccess!=="staged"||typeof f.supportsPresentation!="boolean"||!Number.isSafeInteger(f.runtimeWeight)||f.runtimeWeight<=0)throw new TypeError(`Official adapter manifest entry ${o} has an invalid resource policy`);return e.add(a),n.add(s),r.add(u.outputDirectory),i})}function Or(t){return t==="tabulark:delimited"||t==="tabulark:arrow-ipc"||t==="tabulark:parquet"||t==="tabulark:excel"}function me(t){return typeof t=="object"&&t!==null}var Ht=Symbol.for("tabulark.official-adapter.v2");function Ar(t){let e=Object.freeze({id:t});return Object.freeze({id:t,kind:"official",[Ht]:e})}var Ir=Ar("tabulark:delimited");function tt(t){if(!jt(t)||!Object.isFrozen(t)||!_t(t.id)||t.kind!=="official")return;let e=t[Ht];if(!(!jt(e)||e.id!==t.id))return G(t.id),Object.freeze({id:t.id})}function jt(t){return typeof t=="object"&&t!==null}function g(t){return typeof t=="object"&&t!==null}var qt=256*1024*1024,st=128*1024*1024,P=25e4,kr=1e4,X=64,Mr=64*1024*1024,Pr=96*1024*1024,zr=32*1024*1024,Ut=8*1024*1024,xe=new TextDecoder,Wt=new WeakMap,Br=2,Nr=2,Lr=8;function Kt(t){en(t,"memoryBudgetBytes");let e=Math.floor(t/8),n=Math.floor(t/32),r=Math.max(1,Math.floor(t/2)),i=Math.max(1,Math.floor(t/8)),o=Math.max(1,Math.floor(t*3/4)),a=Math.max(1,e),s=Math.max(1,t-o-a);return Object.freeze({memoryBudgetBytes:t,workerBudgetBytes:o,mainThreadSourceBytes:a,mainThreadRetainedBytes:s,sourceRangeCacheBytes:Math.max(1,Math.floor(o/8)),adapterRuntimePoolBytes:r,operationBudgetBytes:i,indexBudgetBytes:Math.min(Mr,e),adapterTileCacheBudgetBytes:Math.min(Pr,i),mainThreadRangeCacheBytes:Math.min(zr,e),maxFieldBytes:Math.min(Ut,n),maxBatchBytes:Math.min(Ut,n),maxArrayBufferBytes:Math.min(st,Math.floor(t/2)),maxSources:Br,maxActiveRanges:Nr,maxRangeWaiters:Lr})}var ee=class{tableId;revision;schemaVersion;range;columns;complete;#e;#t;constructor(e){if(e.layoutVersion!==1)throw c(`Batch layout ${String(e.layoutVersion)} is incompatible with layout ${1}`);this.tableId=e.tableId,this.revision=e.revision,this.schemaVersion=e.schemaVersion,this.range=Object.freeze({...e.range}),this.#e=Object.freeze(e.buffers.map(Kr)),this.#t=Object.freeze(e.columns.map(n=>Fr(n))),this.complete=e.complete,_r(this.range,this.#e,this.#t),this.columns=Object.freeze(this.#t.map((n,r)=>new ot(n,this.#e,this.range.rowCount,this.range.columnStart+r)))}toRows(e={}){let n=Te(e.maxCells);Oe(this.range.rowCount,this.columns.length,n);let r=Array.from({length:this.range.rowCount},()=>Array(this.columns.length));for(let i=0;i<this.columns.length;i+=1)for(let o=0;o<this.range.rowCount;o+=1)r[o][i]=this.columns[i].getValue(o);return r}toDisplayRows(e={}){let n=Te(e.maxCells);Oe(this.range.rowCount,this.columns.length,n);let r=Array.from({length:this.range.rowCount},()=>Array(this.columns.length));for(let i=0;i<this.columns.length;i+=1)for(let o=0;o<this.range.rowCount;o+=1)r[o][i]=this.columns[i].getDisplayValue(o);return r}},ot=class{columnId;columnIndex;rowCount;#e;#t;constructor(e,n,r,i){this.columnId=e.columnId,this.columnIndex=i,this.rowCount=r,this.#e=e,this.#t=n,Object.freeze(this)}getValue(e){return Vt(e,this.rowCount),K(this.#e.native,e,this.#t,0)}getDisplayValue(e){return Vt(e,this.rowCount),Dr(this.#e.display,e,this.#t,this.columnId)}toValues(e={}){let n=Te(e.maxCells);return Oe(this.rowCount,1,n),Array.from({length:this.rowCount},(r,i)=>this.getValue(i))}toDisplayValues(e={}){let n=Te(e.maxCells);return Oe(this.rowCount,1,n),Array.from({length:this.rowCount},(r,i)=>this.getDisplayValue(i))}};function Vt(t,e){if(!Number.isSafeInteger(t)||t<0||t>=e)throw c(`Batch row offset must be an integer from 0 through ${Math.max(0,e-1)}`)}function Dr(t,e,n,r){let i=(t.offset??0)+e;if(!Zt(t.validity,i,n))return null;let o=B(t.offsets,n,"display offsets"),a=B(t.data,n,"display data"),s=be(o,i,4),l=be(o,i+1,4);if(l<s||l>a.byteLength)throw c(`Column ${r} has invalid display offsets`);return xe.decode(a.subarray(s,l))}function Ie(t){for(let[n,r]of Object.entries(t))Ae(r,n);if(t.rowCount>Number.MAX_SAFE_INTEGER-t.rowStart||t.columnCount>Number.MAX_SAFE_INTEGER-t.columnStart)throw new m("INVALID_RANGE","Range end must be a safe integer");let e=t.rowCount*t.columnCount;if(t.rowCount>P||t.columnCount>P||!Number.isSafeInteger(e)||e>P){let n=Number.isSafeInteger(e)?Math.max(e,t.rowCount,t.columnCount):Number.MAX_SAFE_INTEGER;throw new m("RESOURCE_LIMIT",`A range may contain at most ${P} cells`,{details:{resource:"range-cells",required:n,available:P,cells:Number.isSafeInteger(e)?e:Number.MAX_SAFE_INTEGER,limit:P}})}return Object.freeze({...t})}function Xt(t){return Object.freeze({...t,extent:Object.freeze({rows:Object.freeze({...t.extent.rows}),columns:Object.freeze({...t.extent.columns})}),schema:Object.freeze({version:t.schema.version,columns:Object.freeze(t.schema.columns.map(e=>Object.freeze({...e,dataType:Jt(e.dataType),...e.metadata?{metadata:Object.freeze({...e.metadata})}:{}})))}),capabilities:Object.freeze({...t.capabilities})})}function U(t,e=0){if(e>=X)throw c(`Arrow data type nesting may not exceed ${X}`);if(!te(t)||typeof t.type!="string")throw c("Column dataType must be a recursive Arrow data type descriptor");let n={"u-int8":"uint8","u-int16":"uint16","u-int32":"uint32","u-int64":"uint64"}[t.type]??t.type;if(new Set(["unknown","null","boolean","int8","int16","int32","int64","uint8","uint16","uint32","uint64","float16","float32","float64","date32","date64","binary","large-binary","binary-view","utf8","large-utf8","utf8-view"]).has(n))return Object.freeze({type:n});if(n==="timestamp")return Object.freeze({type:n,unit:Gt(t.unit),...typeof t.timezone=="string"?{timezone:t.timezone}:{}});if(n==="time32"||n==="time64"||n==="duration")return Object.freeze({type:n,unit:Gt(t.unit)});if(n==="interval")return Object.freeze({type:n,unit:Gr(t.unit)});if(n==="fixed-size-binary")return Object.freeze({type:n,byteWidth:rt(t.byteWidth??t.byte_width,"byteWidth")});if(n==="decimal32"||n==="decimal64"||n==="decimal128"||n==="decimal256")return Object.freeze({type:n,precision:rt(t.precision,"precision"),scale:at(t.scale,"scale")});if(n==="list"||n==="large-list"||n==="list-view"||n==="large-list-view")return Object.freeze({type:n,field:q(t.field,e+1)});if(n==="fixed-size-list")return Object.freeze({type:n,field:q(t.field,e+1),listSize:rt(t.listSize??t.list_size,"listSize")});if(n==="struct"){if(!Array.isArray(t.fields))throw c("Struct fields must be an array");return Object.freeze({type:n,fields:Object.freeze(t.fields.map(i=>q(i,e+1)))})}if(n==="union"){if(!Array.isArray(t.fields)||t.mode!=="sparse"&&t.mode!=="dense")throw c("Union dataType requires a mode and fields");return Object.freeze({type:n,mode:t.mode,fields:Object.freeze(t.fields.map(i=>{if(!te(i))throw c("Union field entries must be objects");return Object.freeze({typeId:at(i.typeId,"typeId"),field:q(i.field,e+1)})}))})}if(n==="dictionary")return Object.freeze({type:n,indexType:U(t.indexType,e+1),valueType:U(t.valueType,e+1),...t.ordered===!0?{ordered:!0}:{}});if(n==="map")return Object.freeze({type:n,entries:q(t.entries,e+1),keysSorted:t.keysSorted===!0||t.keys_sorted===!0});if(n==="run-end-encoded")return Object.freeze({type:n,runEnds:q(t.runEnds??t.run_ends,e+1),values:q(t.values,e+1)});if(n==="extension"){if(typeof t.name!="string"||t.name.length===0)throw c("Arrow extension name must be a non-empty string");return Object.freeze({type:n,name:t.name,...typeof t.metadata=="string"?{metadata:t.metadata}:{},storageType:U(t.storageType,e+1)})}throw c(`Unknown Arrow data type: ${n}`)}function q(t,e){if(!te(t))throw c("Arrow field must be an object");let n=te(t.metadata)?Object.freeze(Object.fromEntries(Object.entries(t.metadata).map(([r,i])=>[r,String(i)]))):void 0;return Object.freeze({name:typeof t.name=="string"?t.name:"",nullable:t.nullable!==!1,dataType:U(t.dataType,e),...n?{metadata:n}:{}})}function _r(t,e,n){if(Ie(t),n.length!==t.columnCount)throw c(`Batch has ${n.length} columns; expected ${t.columnCount}`);for(let[r,i]of n.entries())if(jr(i.display,t.rowCount,e,i.columnId),ve(i.native,e,0,`columns[${r}].native`),i.native.length<t.rowCount)throw c(`Column ${i.columnId} is shorter than the returned range`)}function jr(t,e,n,r){let i=t.offset??0;Ae(i,"display offset");let o=B(t.offsets,n,"display offsets");if(o.byteLength<(i+e+1)*4)throw c(`Column ${r} has incomplete display offsets`);let a=B(t.data,n,"display data");if(t.validity&&B(t.validity,n,"display validity").byteLength<Math.ceil((i+e)/8))throw c(`Column ${r} has an incomplete display validity bitmap`);let s=0;for(let l=i;l<=i+e;l+=1){let u=be(o,l,4);if(u<s||u>a.byteLength)throw c(`Column ${r} has invalid display offsets`);s=u}}function ve(t,e,n,r){if(n>=X)throw c(`Native column nesting may not exceed ${X}`);Ae(t.length,`${r}.length`),Ae(t.offset??0,`${r}.offset`),U(t.dataType,n);let i=[t.validity,t.values,t.offsets,t.sizes,t.data,t.typeIds,t.unionOffsets,...t.variadicBuffers??[]];for(let o of i)o&&B(o,e,r);for(let[o,a]of(t.children??[]).entries())ve(a,e,n+1,`${r}.children[${o}]`);t.dictionary&&ve(t.dictionary,e,n+1,`${r}.dictionary`),t.runEnds&&ve(t.runEnds,e,n+1,`${r}.runEnds`)}function K(t,e,n,r){if(r>=X)throw c(`Native value nesting may not exceed ${X}`);if(e<0||e>=t.length)throw c("Native value index is outside its descriptor");let i=(t.offset??0)+e;if(!Zt(t.validity,i,n))return null;let o=lt(t.dataType);switch(o.type){case"null":return null;case"unknown":{let a=nt(t,n,i,4);return xe.decode(a)}case"boolean":{let a=A(t.values,n,"boolean values"),s=(t.values?.bitOffset??0)+i;return(a[s>>>3]&1<<(s&7))!==0}case"int8":return T(t,n,i,1,"signed");case"uint8":return T(t,n,i,1,"unsigned");case"int16":return T(t,n,i,2,"signed");case"uint16":return T(t,n,i,2,"unsigned");case"int32":return T(t,n,i,4,"signed");case"uint32":return T(t,n,i,4,"unsigned");case"int64":return H(t,n,i,!0);case"uint64":return H(t,n,i,!1);case"float16":return qr(T(t,n,i,2,"unsigned"));case"float32":return $t(t,n,i,4);case"float64":return $t(t,n,i,8);case"utf8":case"large-utf8":{let a=nt(t,n,i,o.type==="large-utf8"?8:4);return xe.decode(a)}case"binary":case"large-binary":return nt(t,n,i,o.type==="large-binary"?8:4).slice();case"utf8-view":return xe.decode(Ft(t,n,i));case"binary-view":return Ft(t,n,i).slice();case"fixed-size-binary":{let a=A(t.data??t.values,n,"fixed-size binary data"),s=i*o.byteWidth;return ye(a,s,s+o.byteWidth,"fixed-size binary data").slice()}case"decimal32":case"decimal64":case"decimal128":case"decimal256":{let a={decimal32:4,decimal64:8,decimal128:16,decimal256:32}[o.type];return Object.freeze({kind:"decimal",unscaled:Vr(A(t.values,n,"decimal values"),i*a,a),precision:o.precision,scale:o.scale})}case"date32":return Object.freeze({kind:"date32",value:T(t,n,i,4,"signed")});case"date64":return Object.freeze({kind:"date64",value:H(t,n,i,!0),unit:"millisecond"});case"time32":return Object.freeze({kind:"time32",value:T(t,n,i,4,"signed"),unit:o.unit});case"time64":return Object.freeze({kind:"time64",value:H(t,n,i,!0),unit:o.unit});case"timestamp":return Object.freeze({kind:"timestamp",value:H(t,n,i,!0),unit:o.unit,...o.timezone===void 0?{}:{timezone:o.timezone}});case"duration":return Object.freeze({kind:"duration",value:H(t,n,i,!0),unit:o.unit});case"interval":return Ur(t,n,i,o.unit);case"list":case"large-list":case"list-view":case"large-list-view":case"map":return Hr(t,n,i,o,r);case"fixed-size-list":{let a=Ee(t,0,"fixed-size list"),s=i*o.listSize;return Object.freeze(Array.from({length:o.listSize},(l,u)=>K(a,s+u-(a.offset??0),n,r+1)))}case"struct":{let a={};for(let s=0;s<o.fields.length;s+=1){let l=Ee(t,s,"struct");a[o.fields[s].name]=K(l,i-(l.offset??0),n,r+1)}return Object.freeze(a)}case"union":{let a=A(t.typeIds,n,"union type ids");if(i>=a.byteLength)throw c("Union type id is out of bounds");let s=Y(a).getInt8(i),l=o.fields.findIndex(f=>f.typeId===s);if(l<0)throw c(`Union type id ${s} has no child`);let u=Ee(t,l,"union"),d=o.mode==="dense"?Ce(A(t.unionOffsets??t.offsets,n,"union offsets"),i,4):i;return Object.freeze({kind:"union",typeId:s,value:K(u,d-(u.offset??0),n,r+1)})}case"dictionary":{let a=t.children?.[0]??t,s=t.dictionary??t.children?.[1];if(!s||!a)throw c("Dictionary descriptor has no dictionary values");let l=Yt(a,n,i,o.indexType);if(l<0||l>=s.length)throw c("Dictionary index is out of bounds");return K(s,l,n,r+1)}case"run-end-encoded":{let a=t.runEnds??t.children?.[0],s=t.children?.[t.runEnds?0:1];if(!a||!s)throw c("Run-end encoded descriptor is incomplete");let l=i+1,u=0;for(;u<a.length&&Wr(a,n,u)<l;)u+=1;if(u>=s.length)throw c("Run-end encoded value is out of bounds");return K(s,u,n,r+1)}case"extension":throw c("Nested extension data type could not be unwrapped")}}function Hr(t,e,n,r,i){let o=r.type==="large-list"||r.type==="large-list-view"?8:4,a=A(t.offsets,e,"list offsets"),s=Ce(a,n,o),l=r.type==="list-view"||r.type==="large-list-view"?s+Ce(A(t.sizes,e,"list sizes"),n,o):Ce(a,n+1,o);if(s<0||l<s)throw c("List offsets are invalid");let u=Ee(t,0,r.type),d=Object.freeze(Array.from({length:l-s},(f,h)=>K(u,s+h-(u.offset??0),e,i+1)));return r.type!=="map"?d:Object.freeze(d.map(f=>{if(!te(f))throw c("Map entries must decode from a struct");let h=f,b=r.entries.dataType,p=b.type==="struct"?b.fields:[],R=p[0]?.name??"key",y=p[1]?.name??"value";return Object.freeze({key:h[R]??null,value:h[y]??null})}))}function Ur(t,e,n,r){let i=A(t.values,e,"interval values"),o=Y(i);if(r==="year-month")return W(o,n*4,4,"year-month interval"),Object.freeze({kind:"interval",unit:r,months:o.getInt32(n*4,!0)});if(r==="day-time"){let s=n*8;return W(o,s,8,"day-time interval"),Object.freeze({kind:"interval",unit:r,days:o.getInt32(s,!0),milliseconds:o.getInt32(s+4,!0)})}let a=n*16;return W(o,a,16,"month-day-nano interval"),Object.freeze({kind:"interval",unit:r,months:o.getInt32(a,!0),days:o.getInt32(a+4,!0),nanoseconds:o.getBigInt64(a+8,!0)})}function nt(t,e,n,r){let i=A(t.offsets,e,"variable offsets"),o=A(t.data??t.values,e,"variable data"),a=be(i,n,r),s=be(i,n+1,r);return ye(o,a,s,"variable data")}function Ft(t,e,n){let r=A(t.values,e,"view values"),i=Y(r),o=n*16;W(i,o,16,"view value");let a=i.getInt32(o,!0);if(a<0)throw c("View length must be non-negative");if(a<=12)return ye(r,o+4,o+4+a,"inline view");let s=i.getInt32(o+8,!0),l=i.getInt32(o+12,!0),u=t.variadicBuffers?.[s];if(!u||l<0)throw c("View references an invalid variadic buffer");return ye(B(u,e,"view data"),l,l+a,"view data")}function T(t,e,n,r,i){let o=A(t.values,e,"numeric values"),a=Y(o),s=n*r;return W(a,s,r,"numeric value"),r===1?i==="signed"?a.getInt8(s):a.getUint8(s):r===2?i==="signed"?a.getInt16(s,!0):a.getUint16(s,!0):i==="signed"?a.getInt32(s,!0):a.getUint32(s,!0)}function $t(t,e,n,r){let i=A(t.values,e,"floating-point values"),o=Y(i),a=n*r;return W(o,a,r,"floating-point value"),r===4?o.getFloat32(a,!0):o.getFloat64(a,!0)}function H(t,e,n,r){let i=A(t.values,e,"64-bit values"),o=Y(i),a=n*8;return W(o,a,8,"64-bit value"),r?o.getBigInt64(a,!0):o.getBigUint64(a,!0)}function Yt(t,e,n,r){let i=lt(r).type,o;if(i==="int8")o=T(t,e,n,1,"signed");else if(i==="uint8")o=T(t,e,n,1,"unsigned");else if(i==="int16")o=T(t,e,n,2,"signed");else if(i==="uint16")o=T(t,e,n,2,"unsigned");else if(i==="int32")o=T(t,e,n,4,"signed");else if(i==="uint32")o=T(t,e,n,4,"unsigned");else if(i==="int64")o=H(t,e,n,!0);else if(i==="uint64")o=H(t,e,n,!1);else throw c("Dictionary index type must be an integer");let a=typeof o=="bigint"?Number(o):o;if(!Number.isSafeInteger(a))throw c("Dictionary index exceeds the JavaScript safe integer range");return a}function Wr(t,e,n){let r=lt(t.dataType);return Yt({...t,dataType:{type:"dictionary",indexType:r,valueType:{type:"null"}}},e,n,r)}function Vr(t,e,n){let r=ye(t,e,e+n,"signed integer"),i=0n;for(let a=r.byteLength-1;a>=0;a-=1)i=i<<8n|BigInt(r[a]);let o=1n<<BigInt(n*8-1);return(i&o)===0n?i:i-(1n<<BigInt(n*8))}function be(t,e,n){let r=Qt(t,e,n,!1);if(r<0)throw c("Offset must be non-negative");return r}function Ce(t,e,n){return Qt(t,e,n,!0)}function Y(t){let e=t.buffer,n=Wt.get(e);n===void 0&&(n=new Map,Wt.set(e,n));let r=n.get(t.byteOffset);r===void 0&&(r=new Map,n.set(t.byteOffset,r));let i=r.get(t.byteLength);return i===void 0&&(i=new DataView(t.buffer,t.byteOffset,t.byteLength),r.set(t.byteLength,i)),i}function Qt(t,e,n,r){let i=Y(t),o=e*n;W(i,o,n,"offset");let a=n===4?r?i.getInt32(o,!0):i.getUint32(o,!0):r?i.getBigInt64(o,!0):i.getBigUint64(o,!0),s=typeof a=="bigint"?Number(a):a;if(!Number.isSafeInteger(s))throw c("Offset exceeds the JavaScript safe integer range");return s}function Zt(t,e,n){if(!t)return!0;let r=B(t,n,"validity bitmap"),i=(t.bitOffset??0)+e;if(i<0||i>>>3>=r.byteLength)throw c("Validity bitmap index is out of bounds");return(r[i>>>3]&1<<(i&7))!==0}function A(t,e,n){if(!t)throw c(`${n} are missing`);return B(t,e,n)}function B(t,e,n){if(!te(t)||!Number.isSafeInteger(t.buffer)||t.buffer<0)throw c(`${n} references an invalid buffer`);let r=e[t.buffer];if(!r)throw c(`${n} references a missing buffer`);let i=t.byteOffset??0,o=t.byteLength??r.byteLength-i;if(!Number.isSafeInteger(i)||i<0||!Number.isSafeInteger(o)||o<0||i+o>r.byteLength)throw c(`${n} region is outside its buffer`);return r.subarray(i,i+o)}function Ee(t,e,n){let r=t.children?.[e];if(!r)throw c(`${n} descriptor has no child ${e}`);return r}function ye(t,e,n,r){if(!Number.isSafeInteger(e)||!Number.isSafeInteger(n)||e<0||n<e||n>t.byteLength)throw c(`${r} slice is out of bounds`);return t.subarray(e,n)}function W(t,e,n,r){if(e<0||e+n>t.byteLength)throw c(`${r} is out of bounds`)}function lt(t){let e=t;for(let n=0;e.type==="extension";n+=1){if(n>=X)throw c("Extension nesting is too deep");e=e.storageType}return e}function Fr(t){return Object.freeze({columnId:t.columnId,native:Se(t.native),display:Object.freeze({...t.display,data:he(t.display.data),offsets:he(t.display.offsets),...t.display.validity?{validity:he(t.display.validity)}:{}})})}function Se(t){let e=n=>n?he(n):void 0;return Object.freeze({...t,dataType:Jt(t.dataType),...e(t.validity)?{validity:e(t.validity)}:{},...e(t.values)?{values:e(t.values)}:{},...e(t.offsets)?{offsets:e(t.offsets)}:{},...e(t.sizes)?{sizes:e(t.sizes)}:{},...e(t.data)?{data:e(t.data)}:{},...e(t.typeIds)?{typeIds:e(t.typeIds)}:{},...e(t.unionOffsets)?{unionOffsets:e(t.unionOffsets)}:{},...t.variadicBuffers?{variadicBuffers:Object.freeze(t.variadicBuffers.map(he))}:{},...t.children?{children:Object.freeze(t.children.map(Se))}:{},...t.dictionary?{dictionary:Se(t.dictionary)}:{},...t.runEnds?{runEnds:Se(t.runEnds)}:{}})}function he(t){return Object.freeze({...t})}function Jt(t){return $r(t,0)}function $r(t,e){return U(t,e)}function Gt(t){if(t==="second"||t==="millisecond"||t==="microsecond"||t==="nanosecond")return t;throw c("Arrow time unit is invalid")}function Gr(t){if(t==="year-month"||t==="day-time"||t==="month-day-nano")return t;throw c("Arrow interval unit is invalid")}function qr(t){let e=(t&32768)===0?1:-1,n=t>>>10&31,r=t&1023;return n===0?e*2**-14*(r/1024):n===31?r===0?e*(1/0):Number.NaN:e*2**(n-15)*(1+r/1024)}function Te(t){let e=t??kr;return en(e,"maxCells"),e}function Oe(t,e,n){let r=t*e;if(!Number.isSafeInteger(r)||r>n)throw new m("RESOURCE_LIMIT",`Decoding ${r} cells exceeds the toRows limit of ${n}`,{details:{resource:"row-materialization-cells",required:r,available:n,cellCount:r,maxCells:n}})}function at(t,e){if(!Number.isSafeInteger(t))throw c(`${e} must be a safe integer`);return t}function rt(t,e){let n=at(t,e);if(n<=0)throw c(`${e} must be positive`);return n}function Kr(t){return t instanceof ArrayBuffer?new Uint8Array(t):new Uint8Array(t.buffer,t.byteOffset,t.byteLength)}function te(t){return typeof t=="object"&&t!==null}function Ae(t,e){if(!Number.isSafeInteger(t)||t<0)throw c(`${e} must be a non-negative safe integer`,{name:e,value:t})}function en(t,e){if(!Number.isSafeInteger(t)||t<=0)throw c(`${e} must be a positive safe integer`,{name:e,value:t})}var ke=class{#e;#t;#n;#r=new Map;#a;#i=0;constructor(e,n={}){if(!Number.isSafeInteger(e)||e<0)throw new RangeError("maxBytes must be a non-negative safe integer");let r=n.maxEntries??Number.MAX_SAFE_INTEGER;if(!Number.isSafeInteger(r)||r<0)throw new RangeError("maxEntries must be a non-negative safe integer");let i=n.minimumEntryBytes??0;if(!Number.isSafeInteger(i)||i<0)throw new RangeError("minimumEntryBytes must be a non-negative safe integer");this.#e=e,this.#t=r,this.#n=i,this.#a=n.onRemove}get maxBytes(){return this.#e}get maxEntries(){return this.#t}get(e){let n=this.#r.get(e);if(n)return this.#r.delete(e),this.#r.set(e,n),n.value}set(e,n,r,i=this.#e){if(!Number.isSafeInteger(r)||r<0)throw new RangeError("byteLength must be a non-negative safe integer");if(!Number.isSafeInteger(i)||i<0)throw new RangeError("maxBytes must be a non-negative safe integer");let o=Math.min(this.#e,i),a=Math.max(r,this.#n);if(a>o||this.#t===0)return;let s=this.#r.get(e);for(s&&this.#o(e,s);this.#r.size>=this.#t||this.#i+a>o;){let l=this.#r.keys().next().value;if(l===void 0)break;let u=this.#r.get(l);this.#o(l,u)}this.#r.set(e,{value:n,byteLength:a}),this.#i+=a}trimTo(e){if(!Number.isSafeInteger(e)||e<0)throw new RangeError("maxBytes must be a non-negative safe integer");let n=Math.min(this.#e,e);for(;this.#i>n;){let r=this.#r.keys().next().value;if(r===void 0)break;let i=this.#r.get(r);this.#o(r,i)}}deleteWhere(e){for(let[n,r]of this.#r)e(n,r.value)&&this.#o(n,r)}clear(){for(let[e,n]of this.#r)this.#a?.(e,n.value,n.byteLength);this.#r.clear(),this.#i=0}#o(e,n){this.#r.delete(e),this.#i-=n.byteLength,this.#a?.(e,n.value,n.byteLength)}};function tn(t,e,n,r,i){return JSON.stringify([t,e,n,r,i.rowStart,i.rowCount,i.columnStart,i.columnCount])}function nn(t,e){return t.startsWith(`[${JSON.stringify(e)},`)}function rn(t,e,n){return t.startsWith(`[${JSON.stringify(e)},${JSON.stringify(n)},`)}function on(t,e,n){try{let r=JSON.parse(t);return Array.isArray(r)&&r.length===8&&r[2]===e&&r[3]===n}catch{return!1}}function an(t){let e=t.buffers.map((r,i)=>{if(!(r instanceof ArrayBuffer))throw new TypeError(`Transferred batch buffer ${i} must own an ArrayBuffer backing`);return r}),n=t.columns.map(r=>Xr(r));return Object.freeze({layoutVersion:t.layoutVersion,tableId:t.tableId,revision:t.revision,schemaVersion:t.schemaVersion,range:Object.freeze({...t.range}),buffers:Object.freeze(e),columns:Object.freeze(n),complete:t.complete})}function sn(t){return t.buffers.reduce((e,n)=>e+n.byteLength,0)}function Xr(t){let e=new WeakSet,n=r=>{if(!(typeof r!="object"||r===null||e.has(r))&&!(r instanceof ArrayBuffer||ArrayBuffer.isView(r))){e.add(r);for(let i of Object.values(r))n(i);Object.freeze(r)}};return n(t),t}var Yr=2e3,Qr=new Set(["hello","dataset","tables","table","metadata","presentation","presentationRange","batch","acknowledged"]),Zr=new Set(["progress","metadata","warning","closed","runtimeError"]),Pe=class{#e;#t=new Map;#n;#r;#a;#i=1;#o=!1;constructor(e,n,r=()=>{},i=()=>{}){this.#e=e,this.#n=n,this.#r=r,this.#a=i,e.addEventListener("message",this.#u),e.addEventListener("error",this.#y),e.addEventListener("messageerror",this.#y)}postMessage(e,n=[]){if(!this.#o)try{this.#e.postMessage(e,n)}catch{}}async request(e,n,r,i={}){if(this.#o)throw C("Engine");if(i.signal?.aborted)throw v();let o=`r${this.#i++}`;return new Promise((a,s)=>{let l=[],u=()=>{for(let d of l.splice(0))d()};if(i.signal){let d=()=>{let f=this.#t.get(o);f&&(this.#t.delete(o),f.cleanup(),this.#c(o),s(v()))};i.signal.addEventListener("abort",d,{once:!0}),l.push(()=>i.signal?.removeEventListener("abort",d))}if(i.timeoutMs!==void 0){let d=Math.max(1,i.timeoutMs),f=globalThis.setTimeout(()=>{this.#t.has(o)&&this.#s(new m("RUNTIME_FAILURE",`The Tabulark Worker did not respond to ${e} within ${d}ms`))},d);l.push(()=>globalThis.clearTimeout(f))}this.#t.set(o,{resolve:d=>a(d),reject:s,expectedKind:r,cleanup:u,...i.onTelemetry===void 0?{}:{onTelemetry:i.onTelemetry}});try{this.#e.postMessage({protocolVersion:4,requestId:o,op:e,payload:n,...i.measure===!0?{measure:!0}:{}},i.transfer??[])}catch(d){this.#t.delete(o),u(),s(new m("RUNTIME_FAILURE","Could not send a request to the Worker",{cause:d}))}})}async shutdown(e=Yr,n={}){if(!this.#o)try{await this.request("shutdown",{},"acknowledged",{timeoutMs:e,...n})}catch{}finally{this.terminate()}}terminate(e=new m("RUNTIME_FAILURE","The Tabulark Worker was terminated"),n=!1){this.#f(e)&&n&&this.#d(e)}#u=e=>{let n=e.data;if(Jr(n)){try{this.#a(n)}catch(i){this.#s(new m("RUNTIME_FAILURE","The Worker source broker failed",{cause:i}))}return}if(ei(n)){try{this.#n(n)}catch(i){this.#s(new m("PROTOCOL_INCOMPATIBLE","The Worker emitted an invalid runtime event",{cause:i}))}return}if(ii(n)||ri(n)&&!un(n)){this.#s(new m("PROTOCOL_INCOMPATIBLE","The Worker returned a malformed or incompatible protocol message"));return}if(!un(n))return;let r=this.#t.get(n.requestId);if(r){if(this.#t.delete(n.requestId),r.cleanup(),n.status==="failure"){ln(r,n.telemetry),r.reject(m.fromSerialized(n.error));return}if(n.result.kind!==r.expectedKind){let i=new m("PROTOCOL_INCOMPATIBLE",`Expected a ${r.expectedKind} response, received ${n.result.kind}`);r.reject(i),this.#s(i);return}ln(r,n.result.telemetry),r.resolve(n.result.data)}};#y=e=>{if(this.#o)return;let n="The Tabulark Worker stopped unexpectedly";typeof ErrorEvent<"u"&&e instanceof ErrorEvent&&e.message?n=e.message:e.type==="messageerror"&&(n="The Tabulark Worker could not deserialize a message"),this.#s(new m("RUNTIME_FAILURE",n))};#c(e){if(!this.#o)try{this.#e.postMessage({protocolVersion:4,requestId:`r${this.#i++}`,op:"cancel",payload:{targetRequestId:e}})}catch{}}#h(e){for(let n of this.#t.values())n.cleanup(),n.reject(e);this.#t.clear()}#s(e){this.#f(e)&&this.#d(e)}#f(e){if(this.#o)return!1;this.#o=!0,this.#e.removeEventListener("message",this.#u),this.#e.removeEventListener("error",this.#y),this.#e.removeEventListener("messageerror",this.#y);try{this.#e.terminate()}catch{}return this.#h(e),!0}#d(e){try{this.#r(e)}catch{}}};function Jr(t){return g(t)&&(t.type==="source-read"||t.type==="source-read-cancel"||t.type==="source-close")}function ln(t,e){if(t.onTelemetry)if(typeof e=="object"&&e!==null&&!Array.isArray(e)&&Number.isSafeInteger(e.bytesRead)&&Number.isSafeInteger(e.peakReservationBytes)){let n=e.bytesRead,r=e.peakReservationBytes;t.onTelemetry({bytesRead:n>=0?n:0,peakReservationBytes:r>=0?r:0,sourceReads:dn(e,"sourceReads"),sourceCacheHitBytes:dn(e,"sourceCacheHitBytes")})}else t.onTelemetry(void 0)}function dn(t,e){let n=t[e];return Number.isSafeInteger(n)&&n>=0?n:0}function un(t){return!g(t)||t.protocolVersion!==4||typeof t.requestId!="string"||t.requestId.length===0?!1:t.status==="success"?g(t.result)&&typeof t.result.kind=="string"&&Qr.has(t.result.kind):t.status==="failure"?ti(t.error):!1}function ei(t){return!g(t)||t.protocolVersion!==4||typeof t.event!="string"||!Zr.has(t.event)||!("payload"in t)||!Me(t.requestId)||!Me(t.datasetHandle)||!Me(t.tableHandle)||!Me(t.tableId)||!ni(t.revision)||t.tableHandle!==void 0&&t.datasetHandle===void 0?!1:t.event==="runtimeError"?t.datasetHandle!==void 0||t.tableHandle===void 0&&t.tableId===void 0:t.datasetHandle!==void 0}function ti(t){return g(t)&&typeof t.code=="string"&&typeof t.message=="string"&&typeof t.retryable=="boolean"}function Me(t){return t===void 0||typeof t=="string"&&t.length>0}function ni(t){return t===void 0||Number.isSafeInteger(t)&&t>=0}function ri(t){return g(t)&&("requestId"in t||"status"in t||"result"in t||"error"in t)}function ii(t){return g(t)&&"event"in t}function cn(t){if(typeof t!="object"||t===null)return!1;try{let e=t;return e.kind==="range"&&typeof e.open=="function"}catch{return!1}}function fn(t){if(typeof t!="object"||t===null)throw new RangeError("reader snapshot must be an object");let e=t;if(typeof e.id!="string"||e.id.length===0||e.id.length>256||e.strength!=="strong"&&e.strength!=="weak")throw new RangeError("reader snapshot is invalid");return Object.freeze({id:e.id,strength:e.strength})}function mn(t){if(typeof t!="object"||t===null)return!1;try{let e=t;return!z(e.size)||e.size>4294967295||!oi(e.snapshot)||typeof e.read!="function"||typeof e.close!="function"?!1:e.maxConcurrency===void 0||z(e.maxConcurrency)&&e.maxConcurrency>=1&&e.maxConcurrency<=4}catch{return!1}}function hn(t){if(t instanceof ArrayBuffer)return t.slice(0);if(!ArrayBuffer.isView(t))throw new RangeError("reader returned a non-buffer value");let e=new Uint8Array(t.buffer,t.byteOffset,t.byteLength),n=new Uint8Array(e.byteLength);return n.set(e),n.buffer}function z(t){return typeof t=="number"&&Number.isSafeInteger(t)&&t>=0}function oi(t){if(typeof t!="object"||t===null)return!1;let e=t;return typeof e.id=="string"&&e.id.length>0&&e.id.length<=256&&(e.strength==="strong"||e.strength==="weak")}var re=2*1024*1024*1024;function bn(t){return t==="auto"||t==="large"}var dt=8*1024*1024,ge=2e3,si=32,li=16,di=256,Cn=1e3,ui=512,ci=128,yn=4*1024,fi=512,gn=Symbol.for("tabulark.internal.range-source-reservation-store.v1");function mi(t,e){return hi().set(t,Object.freeze(e)),t}function hi(){let t=globalThis,e=t[gn];if(e instanceof WeakMap)return e;let n=new WeakMap;return Object.defineProperty(t,gn,{configurable:!1,enumerable:!1,writable:!1,value:n}),n}var ft=class{#e;#t=[];#n=0;#r=!1;constructor(e){this.#e=Math.max(1,Number.isSafeInteger(e)?e:1)}acquire(e,n){return!Number.isSafeInteger(e)||e<0?Promise.reject(new m("RANGE_UNSUPPORTED","The source range length is invalid")):e>this.#e?Promise.reject(new m("RESOURCE_LIMIT","The source exceeds its staging budget",{details:{resource:"source-staging",requiredBytes:e,availableBytes:this.#e}})):this.#r?Promise.reject(C("Source staging")):n.aborted?Promise.reject(v()):this.#n+e<=this.#e?Promise.resolve(this.#a(e)):new Promise((r,i)=>{let o={bytes:e,signal:n,resolve:r,reject:i,onAbort:()=>{}},a=()=>{let s=this.#t.indexOf(o);s>=0&&this.#t.splice(s,1),n.removeEventListener("abort",a),i(v())};o.onAbort=a,n.addEventListener("abort",a,{once:!0}),this.#t.push(o),this.#i()})}close(){if(!this.#r){this.#r=!0;for(let e of this.#t.splice(0))e.signal.removeEventListener("abort",e.onAbort),e.reject(C("Source staging"))}}#a(e){this.#n+=e;let n=!1;return Object.freeze({release:()=>{n||(n=!0,this.#n=Math.max(0,this.#n-e),this.#i())}})}#i(){if(!this.#r)for(;;){let e=-1;for(let r=0;r<this.#t.length;r+=1){let i=this.#t[r];if(i.signal.aborted){this.#t.splice(r,1),i.signal.removeEventListener("abort",i.onAbort),i.reject(v()),r-=1;continue}if(this.#n+i.bytes<=this.#e){e=r;break}}if(e<0)return;let n=this.#t.splice(e,1)[0];n.signal.removeEventListener("abort",n.onAbort),n.resolve(this.#a(n.bytes))}}},mt=class{#e;#t=[];#n=0;#r=!1;constructor(e){this.#e=Math.min(4,Math.max(1,Number.isSafeInteger(e)?e:1))}acquire(e){return this.#r?Promise.reject(C("Range source reader")):e.aborted?Promise.reject(v()):this.#n<this.#e?(this.#n+=1,Promise.resolve(this.#a())):new Promise((n,r)=>{let i={signal:e,resolve:n,reject:r,onAbort:()=>{}},o=()=>{let a=this.#t.indexOf(i);a>=0&&this.#t.splice(a,1),e.removeEventListener("abort",o),r(v())};i.onAbort=o,e.addEventListener("abort",o,{once:!0}),this.#t.push(i)})}close(){if(!this.#r){this.#r=!0;for(let e of this.#t.splice(0))e.signal.removeEventListener("abort",e.onAbort),e.reject(C("Range source reader"))}}#a(){let e=!1;return()=>{e||(e=!0,this.#n=Math.max(0,this.#n-1),this.#i())}}#i(){if(!this.#r)for(;this.#n<this.#e&&this.#t.length>0;){let e=this.#t.shift();if(e.signal.removeEventListener("abort",e.onAbort),e.signal.aborted){e.reject(v());continue}this.#n+=1,e.resolve(this.#a())}}},ht=class t{#e;#t;#n=new Map;#r;#a;#i;#o;#u=0;#y=new Map;#c=new Map;#h=new Set;#s=1;#f=new Map;#d=new Map;#g=new Set;#w=[];#b=0;#l=!1;#O;constructor(e,n,r){this.#e=e,this.#r=n,this.#o=new ft(n.mainThreadSourceBytes),this.#t=new ke(Math.min(n.mainThreadRangeCacheBytes,n.mainThreadRetainedBytes),{maxEntries:Math.min(fi,Math.max(1,Math.floor(Math.min(n.mainThreadRangeCacheBytes,n.mainThreadRetainedBytes)/yn))),minimumEntryBytes:yn}),this.#a=n.maxArrayBufferBytes,this.#i=new Map(r.map(i=>[i.id,i]))}subscribePerformance(e){if(this.#l)throw C("Engine");if(typeof e!="function")throw c("performance listener must be a function");this.#g.add(e);for(let n of this.#w.splice(0))ae(e,n);return()=>this.#g.delete(e)}#p(e,n,r={}){if(this.#g.size===0&&n===void 0)return;let i=n===void 0?0:Math.max(0,N()-n),o=Object.freeze({stage:Di(e),durationMs:i,bytesRead:ze(r.bytesRead),cacheHit:r.cacheHit===!0,peakReservationBytes:ze(r.peakReservationBytes),sourceReads:ze(r.sourceReads),sourceCacheHitBytes:ze(r.sourceCacheHitBytes)});if(this.#g.size===0){this.#w.length>=ci&&this.#w.shift(),this.#w.push(o);return}for(let a of this.#g)ae(a,o)}static async create(e){let n=bi(e);if(typeof Worker>"u"||typeof Blob>"u"||typeof URL>"u")throw new m("UNSUPPORTED_RUNTIME","Tabulark createEngine() requires a browser with module Worker and Blob support");let r,i=new Worker(n.workerUrl,{type:"module",name:n.workerName}),o=new Pe(i,a=>{r!==void 0&&r.#E(a)},a=>{r!==void 0&&r.#j(a)},a=>{r!==void 0&&r.#A(a)});r=new t(o,n.limits,n.adapters);try{let a=await o.request("hello",{clientName:"tabulark-js",adapters:n.adapters.map(({id:l})=>Object.freeze({id:l})),memoryBudgetBytes:n.memoryBudgetBytes},"hello"),s=g(a)&&Array.isArray(a.adapters)?a.adapters:void 0;if(!g(a)||a.protocolVersion!==4||a.adapterApiVersion!==3||a.batchLayoutVersion!==1||!s||s.length!==n.adapters.length||n.adapters.some(l=>!s.includes(l.id)))throw new m("PROTOCOL_INCOMPATIBLE","The Worker did not accept the current Tabulark protocol version");return r}catch(a){throw o.terminate(),a}}async open(e,n){this.#m();let r=this.#g.size>0?N():void 0,i=0,o=0,a=0,s=0,l=u=>{u&&(i=ie(i,u.bytesRead),o=Math.max(o,u.peakReservationBytes),a=ie(a,u.sourceReads),s=ie(s,u.sourceCacheHitBytes))};try{let u=cn(e),d=yi(n,this.#i,u?void 0:Ui(e),u),f,h=e,b,p=[];if(u){if(n.sourceMode!==void 0||n.transferInput!==void 0)throw c("sourceMode and transferInput do not apply to RangeSource inputs");let y=new AbortController;this.#h.add(y);let x=Ki(n.signal,y.signal),w;try{let Q=mi({signal:x,maxSourceBytes:4294967295,maxStagingBytes:ct(this.#r)},{reserveStaging:async(ce,$)=>(await this.#o.acquire(ce,$)).release,reserveRetained:ce=>this.#S(ce)});w=await Gi(e,Q,x)}catch(Q){throw this.#l?C("Engine"):n.signal?.aborted||y.signal.aborted?v():Wi(Q)}finally{this.#h.delete(y)}if(this.#l)throw await I(w),C("Engine");if(n.signal?.aborted||y.signal.aborted)throw await I(w),v();let S=w,M;try{M=g(S)?S.size:void 0}catch{throw await I(S),new m("RUNTIME_FAILURE","The range source returned an invalid reader")}if(typeof M=="number"&&M>4294967295)throw await I(S),new m("RESOURCE_LIMIT","The range source exceeds the addressable byte limit",{details:{resource:"source-address-space",requiredBytes:Number.isSafeInteger(M)?M:Number.MAX_SAFE_INTEGER,availableBytes:4294967295}});if(!mn(S))throw await I(S),new m("RUNTIME_FAILURE","The range source returned an invalid reader");try{fn(w.snapshot)}catch{throw await I(S),new m("RUNTIME_FAILURE","The range source returned an invalid snapshot")}let E;try{f=w.size,E=w.maxConcurrency}catch{throw await I(S),new m("RUNTIME_FAILURE","The range source returned an invalid reader")}if(!z(f))throw await I(S),new m("RUNTIME_FAILURE","The range source returned an invalid reader");if(E!==void 0&&(!Number.isSafeInteger(E)||E<1||E>4))throw await I(S),new m("RUNTIME_FAILURE","The range source returned an invalid reader");if(f>4294967295)throw await I(S),new m("RESOURCE_LIMIT","The range source exceeds the addressable byte limit",{details:{resource:"source-address-space",requiredBytes:f,availableBytes:4294967295}});let k=this.#z();b={handle:k,size:f,maxConcurrency:E??1,reader:w,pending:new Map,concurrency:new mt(E??1),closed:!1},this.#y.set(k,b),h=Object.freeze({kind:"range",handle:k,size:f,...E===void 0?{}:{maxConcurrency:E}})}else if(e instanceof ArrayBuffer){if(d.sourceMode==="large")throw c("sourceMode large requires a local Blob or File source");if(f=e.byteLength,e.byteLength>this.#a)throw new m("RESOURCE_LIMIT",`ArrayBuffer sources larger than ${this.#a} bytes must be supplied as a Blob`,{details:{resource:"source-staging",requiredBytes:e.byteLength,availableBytes:this.#a}});n.transferInput===!0&&p.push(e)}else if(e instanceof Blob){if(f=e.size,n.transferInput===!0)throw c("transferInput may only be true for an ArrayBuffer source");let y=f;if(d.sourceMode==="large"&&(!Number.isSafeInteger(y)||y<0||y>re)||(d.adapter.id==="tabulark:arrow-ipc"||d.adapter.id==="tabulark:excel")&&Number.isSafeInteger(y)&&y>re)throw pn(y)}else throw c("source must be a Blob, File, or ArrayBuffer");let R;try{let y=await this.#e.request("openSource",{source:h,adapterId:d.adapter.id,options:d.options,...d.isRangeSource?{}:{sourceMode:d.sourceMode}},"dataset",{...n.signal?{signal:n.signal}:{},transfer:p,...r===void 0?{}:{measure:!0,onTelemetry:l}});if(!g(y)||typeof y.datasetHandle!="string"||y.datasetHandle.length===0)throw this.#_("Worker returned an invalid dataset handle");R={datasetHandle:y.datasetHandle},b!==void 0&&(b=this.#y.get(b.handle),b!==void 0&&this.#c.set(R.datasetHandle,b.handle))}catch(y){throw b!==void 0&&await this.#x(b.handle),y}try{let y=await this.#e.request("listTables",{datasetHandle:R.datasetHandle},"tables",{...n.signal?{signal:n.signal}:{},...r===void 0?{}:{measure:!0,onTelemetry:l}});if(n.signal?.aborted)throw v();let x=xi(y),w=new bt(this,R.datasetHandle,x,Ni(d.adapter.id,d.options,x,d.sourceMode,this.#k(d.adapter.id),d.isRangeSource));if(this.#f.set(R.datasetHandle,w),this.#V(w),w.closed)throw w.terminalError??C("Dataset session");return w}catch(y){let x=this.#F(R.datasetHandle),w=this.#f.get(R.datasetHandle);throw w&&(w.closeLocally(),this.#f.delete(R.datasetHandle)),await this.#G(R.datasetHandle),b!==void 0&&await this.#x(b.handle),x??y}}finally{this.#p("open",r,{bytesRead:i,peakReservationBytes:o,sourceReads:a,sourceCacheHitBytes:s})}}async close(){if(this.#l){await this.#O;return}let e=this.#g.size>0?N():void 0,n=0,r=i=>{i&&(n=Math.max(n,i.peakReservationBytes))};this.#l=!0,this.#o.close();for(let i of this.#h)i.abort();for(let i of this.#f.values())i.closeLocally();this.#f.clear(),this.#P(),this.#t.clear(),this.#X(),await this.#v();try{await this.#e.shutdown(ge,e===void 0?{}:{measure:!0,onTelemetry:r})}finally{this.#p("close",e,{peakReservationBytes:n}),this.#g.clear()}}dispose(){return this.close()}async openTable(e,n){this.#m(),e.assertOpen();let r=this.#g.size>0?N():void 0,i=0,o=s=>{s&&(i=Math.max(i,s.peakReservationBytes))};if(!e.tables.some(s=>s.id===n)){let s=c(`Unknown table: ${n}`);throw this.#p("open-table",r,{peakReservationBytes:i}),s}let a;try{let s=await this.#e.request("openTable",{datasetHandle:e.handle,tableId:n},"table",r===void 0?{}:{measure:!0,onTelemetry:o});if(!g(s)||typeof s.tableHandle!="string"||s.tableHandle.length===0)throw this.#_("Worker returned an invalid table handle");a=s.tableHandle;let l=await this.#e.request("getMetadata",{tableHandle:a},"metadata",r===void 0?{}:{measure:!0,onTelemetry:o}),u=pt(l);this.#m(),e.assertOpen();let d=new yt(this,e,a,u);return e.addTableHandle(d),this.#p("open-table",r,{peakReservationBytes:i}),d}catch(s){throw a!==void 0&&await this.#$(a),this.#p("open-table",r,{peakReservationBytes:i}),s}}async readRange(e,n,r){this.#m(),e.assertOpen();let i=this.#g.size>0?N():void 0,o=0,a=!1,s=0,l=0,u=0,d;try{let f=Ie(n);if(r.signal?.aborted)throw v();let h=e.metadata,b=tn(e.datasetHandle,h.tableId,h.revision,h.schema.version,f),p=this.#t.get(b);if(p)return a=!0,new ee(p);d=this.#n.get(b),d||(d=this.#D(e,f,b,h.revision,h.schema.version,i!==void 0));let R=await this.#T(d,r.signal);return o=d.bytesRead,s=d.peakReservationBytes,l=d.sourceReads,u=d.sourceCacheHitBytes,this.#m(),e.assertOpen(),new ee(R)}finally{d&&(o=d.bytesRead,s=d.peakReservationBytes,l=d.sourceReads,u=d.sourceCacheHitBytes),this.#p("read-range",i,{bytesRead:o,cacheHit:a,peakReservationBytes:s,sourceReads:l,sourceCacheHitBytes:u})}}#D(e,n,r,i,o,a){let s=new AbortController,l={key:r,datasetHandle:e.datasetHandle,tableId:e.metadata.tableId,controller:s,callers:new Set,promise:void 0,settled:!1,bytesRead:0,peakReservationBytes:0,sourceReads:0,sourceCacheHitBytes:0},u=d=>{d&&(l.bytesRead=ie(l.bytesRead,d.bytesRead),l.peakReservationBytes=Math.max(l.peakReservationBytes,d.peakReservationBytes),l.sourceReads=ie(l.sourceReads,d.sourceReads),l.sourceCacheHitBytes=ie(l.sourceCacheHitBytes,d.sourceCacheHitBytes))};return l.promise=this.#e.request("readRange",{tableHandle:e.handle,range:n},"batch",{signal:s.signal,...a?{measure:!0,onTelemetry:u}:{}}).then(d=>{let f=this.#R(d,e.metadata.tableId,i,o,n);return f.complete&&f.revision===i&&f.schemaVersion===o&&e.metadata.revision===i&&e.metadata.schema.version===o&&!e.datasetClosed&&this.#t.set(r,f,sn(f),this.#B()),f}).finally(()=>{l.settled=!0,this.#n.get(r)===l&&this.#n.delete(r)}),this.#n.set(r,l),l}async#T(e,n){if(n?.aborted)throw!e.settled&&e.callers.size===0&&(this.#n.get(e.key)===e&&this.#n.delete(e.key),e.controller.abort()),v();let r=Symbol("range-caller");e.callers.add(r);let i;try{if(!n)return await e.promise;let o=new Promise((a,s)=>{i=()=>s(v()),n.addEventListener("abort",i,{once:!0}),n.aborted&&i()});return await Promise.race([e.promise,o])}finally{i&&n?.removeEventListener("abort",i),e.callers.delete(r),!e.settled&&e.callers.size===0&&(this.#n.get(e.key)===e&&this.#n.delete(e.key),e.controller.abort())}}#R(e,n,r,i,o){if(!g(e)||e.tableId!==n||!Number.isSafeInteger(e.revision)||e.revision<r||!Number.isSafeInteger(e.schemaVersion)||e.schemaVersion<i||!$i(e.range,o))throw this.#_("Worker returned a stale or out-of-range batch");try{let a=an(e);return new ee(a),a}catch{throw this.#_("Worker returned an invalid batch backing")}}async getPresentation(e){this.#m(),e.assertOpen();let n=this.#g.size>0?N():void 0,r=0,i=o=>{o&&(r=Math.max(r,o.peakReservationBytes))};try{let o=await this.#e.request("getPresentation",{tableHandle:e.handle},"presentation",n===void 0?{}:{measure:!0,onTelemetry:i});return this.#m(),e.assertOpen(),vi(o,e.metadata)}finally{this.#p("presentation",n,{peakReservationBytes:r})}}async readPresentationRange(e,n,r){this.#m(),e.assertOpen();let i=this.#g.size>0?N():void 0,o=0,a=s=>{s&&(o=Math.max(o,s.peakReservationBytes))};try{let s=Ie(n);if(r.signal?.aborted)throw v();let l=await this.#e.request("readPresentationRange",{tableHandle:e.handle,range:s},"presentationRange",{...r.signal?{signal:r.signal}:{},...i===void 0?{}:{measure:!0,onTelemetry:a}});return this.#m(),e.assertOpen(),Ci(l,e.metadata,s)}finally{this.#p("presentation-range",i,{peakReservationBytes:o})}}async closeTable(e){if(e.closed)return;let n=this.#g.size>0?N():void 0,r=0,i=o=>{o&&(r=Math.max(r,o.peakReservationBytes))};if(e.closeLocally(),this.#l){this.#p("close-table",n,{peakReservationBytes:r});return}try{await this.#W("closeTable",{tableHandle:e.handle},n===void 0?{}:{measure:!0,onTelemetry:i})}finally{this.#p("close-table",n,{peakReservationBytes:r})}}clearDatasetCache(e){this.#t.deleteWhere(n=>nn(n,e));for(let n of[...this.#n.values()])n.datasetHandle!==e||n.settled||(this.#n.get(n.key)===n&&this.#n.delete(n.key),n.controller.abort())}updateTableCacheVersion(e,n,r,i){this.#t.deleteWhere(o=>rn(o,e,n)&&!on(o,r,i))}#P(){for(let e of this.#n.values())e.settled||e.controller.abort();this.#n.clear()}async closeSession(e){if(e.closed)return;let n=this.#g.size>0?N():void 0,r=0,i=o=>{o&&(r=Math.max(r,o.peakReservationBytes))};if(e.closeLocally(),this.#l){this.#f.delete(e.handle),await this.#C(e.handle),this.#p("close-session",n,{peakReservationBytes:r});return}try{await this.#W("closeSource",{datasetHandle:e.handle},n===void 0?{}:{measure:!0,onTelemetry:i})}finally{this.#f.delete(e.handle),this.#N(e.handle),await this.#C(e.handle),this.#p("close-session",n,{peakReservationBytes:r})}}#m(){if(this.#l)throw C("Engine")}#k(e){if(e!=="tabulark:excel")return this.#a;let n=[...this.#i.values()].reduce((o,a)=>o+G(a.id).resources.runtimeWeight,0),r=G(e).resources.runtimeWeight,i=Math.max(1,Math.floor(this.#r.adapterRuntimePoolBytes*r/Math.max(1,n)));return Math.min(this.#a,i)}#z(){return`s${(this.#s++).toString(36)}`}#S(e){if(!Number.isSafeInteger(e)||e<0)throw new m("RESOURCE_LIMIT","The source retained-byte request is invalid",{details:{resource:"source-retained",requiredBytes:Number.MAX_SAFE_INTEGER,availableBytes:this.#B()}});if(this.#l)throw C("Engine");let n=this.#r.mainThreadRetainedBytes-this.#u;if(e>n)throw new m("RESOURCE_LIMIT","The source exceeds the retained-byte budget",{details:{resource:"source-retained",requiredBytes:e,availableBytes:n}});this.#t.trimTo(n-e),this.#u+=e;let r=!1;return()=>{r||(r=!0,this.#u=Math.max(0,this.#u-e))}}#B(){return Math.max(0,this.#r.mainThreadRetainedBytes-this.#u)}#A(e){if(!g(e)||typeof e.type!="string")return;if(e.type==="source-close"){typeof e.sourceHandle=="string"&&this.#x(e.sourceHandle);return}if(e.type==="source-read-cancel"){if(typeof e.sourceHandle!="string"||typeof e.requestId!="string")return;this.#y.get(e.sourceHandle)?.pending.get(e.requestId)?.abort();return}if(e.type!=="source-read")return;let n=e.sourceHandle,r=e.requestId,i=e.offset,o=e.length;if(typeof n!="string"||typeof r!="string"||r.length===0||r.length>256||!z(i)||!z(o)){this.#e.terminate(new m("PROTOCOL_INCOMPATIBLE","The Worker sent an invalid source read request"),!0);return}let a=this.#y.get(n);if(a===void 0||a.closed){this.#M(r,n,i,o,"HANDLE_CLOSED");return}if(a.pending.has(r)){this.#e.terminate(new m("PROTOCOL_INCOMPATIBLE","The Worker reused a source request identifier"),!0);return}if(i>a.size||o>a.size-i){this.#M(r,n,i,o,"RANGE_UNSUPPORTED");return}if(o>ct(this.#r)){this.#M(r,n,i,o,"RESOURCE_LIMIT",!1,{resource:"source-staging",requiredBytes:o,availableBytes:ct(this.#r)});return}let s=new AbortController;a.pending.set(r,s),this.#I(a,r,n,i,o,s)}#I(e,n,r,i,o,a){(async()=>{let s,l;try{if(s=await e.concurrency.acquire(a.signal),l=await this.#o.acquire(o,a.signal),e.closed||e.pending.get(n)!==a||a.signal.aborted)return;let u=await Promise.resolve().then(()=>e.reader.read({offset:i,length:o},{signal:a.signal}));if(e.closed||e.pending.get(n)!==a||a.signal.aborted)return;let d=qi(u,o);this.#e.postMessage({type:"source-read-result",requestId:n,sourceHandle:r,offset:i,length:o,buffer:d},[d])}catch(u){if(!e.closed&&e.pending.get(n)===a){let d=Xi(u);this.#M(n,r,i,o,d.code,d.retryable),d.code==="SOURCE_CHANGED"&&this.#x(r)}}finally{l?.release(),s?.(),e.pending.get(n)===a&&e.pending.delete(n)}})()}#M(e,n,r,i,o,a=!1,s){typeof e!="string"||typeof n!="string"||this.#e.postMessage({type:"source-read-failure",requestId:e,sourceHandle:n,...z(r)?{offset:r}:{},...z(i)?{length:i}:{},error:{code:je(o),message:Yi(o),retryable:a,...s===void 0?{}:{details:s}}})}async#C(e){let n=this.#c.get(e);n!==void 0&&(this.#c.delete(e),await this.#x(n))}async#x(e){let n=this.#y.get(e);if(!(n===void 0||n.closed)){n.closed=!0,this.#y.delete(e);for(let r of n.pending.values())r.abort();n.pending.clear(),n.concurrency.close(),await I(n.reader)}}async#v(){if(this.#O!==void 0){await this.#O;return}this.#O=(async()=>{for(let e of this.#h)e.abort();this.#c.clear(),await Promise.all([...this.#y.keys()].map(e=>this.#x(e)))})(),await this.#O}#E(e){let n=e.datasetHandle;if(!n&&e.event==="runtimeError"){this.#j(Le(e.payload));return}if(!n)return;let r=this.#f.get(n);if(!r){this.#q(n,e);return}r.handleEvent(e),e.event==="runtimeError"&&!e.tableHandle&&r.closed&&this.#C(n),e.event==="closed"&&!e.tableHandle&&r.closed&&(this.#f.delete(n),this.#N(n),this.#C(n))}#V(e){let n=this.#d.get(e.handle);if(n){this.#N(e.handle);for(let r of n)e.handleEvent(r)}}#F(e){let n=this.#d.get(e)?.find(r=>r.event==="runtimeError");return n?Le(n.payload):void 0}async#$(e){if(!this.#l)try{await this.#e.request("closeTable",{tableHandle:e},"acknowledged",{timeoutMs:ge})}catch(n){this.#l||this.#e.terminate(ut(n,"Could not release an opened table"),!0)}}async#G(e){if(this.#N(e),!this.#l)try{await this.#e.request("closeSource",{datasetHandle:e},"acknowledged",{timeoutMs:ge})}catch(n){this.#l||this.#e.terminate(ut(n,"Could not release an opened dataset"),!0)}finally{this.#N(e),await this.#C(e)}}async#W(e,n,r={}){try{await this.#e.request(e,n,"acknowledged",{timeoutMs:ge,...r})}catch(i){throw this.#l||this.#e.terminate(ut(i,`Could not complete ${e}`),!0),i}}#_(e){let n=new m("PROTOCOL_INCOMPATIBLE",e);return this.#e.terminate(n,!0),n}#q(e,n){if(n.event!=="runtimeError"&&n.event!=="closed")return;let r=this.#d.get(e);if(!r){for(;this.#d.size>=si;)this.#K();r=[],this.#d.set(e,r)}for(r.length>=li&&(r.shift(),this.#b-=1);this.#b>=di;)this.#U();r.push(n),this.#b+=1}#U(){let e=this.#d.entries().next().value;if(!e){this.#b=0;return}let[n,r]=e;r.shift(),this.#b-=1,r.length===0&&this.#d.delete(n)}#K(){let e=this.#d.keys().next().value;e!==void 0&&this.#N(e)}#N(e){let n=this.#d.get(e);n&&(this.#b-=n.length,this.#d.delete(e))}#X(){this.#d.clear(),this.#b=0}#j(e){if(!this.#l){this.#l=!0,this.#o.close();for(let n of this.#h)n.abort();this.#P(),this.#t.clear(),this.#X(),this.#v();for(let n of this.#f.values())n.failLocally(e);this.#f.clear()}}},bt=class{#e;handle;tables;#t=new Set;#n=new Set;#r=[];#a;#i=new Set;#o;#u;#y;closed=!1;terminalError;constructor(e,n,r,i){this.#e=e,this.handle=n,this.tables=Object.freeze(r.map(o=>Object.freeze({...o}))),this.#a=i??Li(this.tables)}openTable(e){return this.#e.openTable(this,e)}subscribe(e){return this.assertOpen(),this.#t.add(e),()=>this.#t.delete(e)}getDiagnostics(){return Object.freeze([...this.#r])}subscribeDiagnostics(e){if(this.assertOpen(),typeof e!="function")throw c("diagnostic listener must be a function");return this.#n.add(e),()=>this.#n.delete(e)}getCapabilities(){let e=[...this.#i],n=e.length>0?e.every(i=>i.getCapabilities().typedValues):this.#o??this.#a.typedValues,r=this.tables.length>1||e.some(i=>i.getCapabilities().multiTable)||this.#u===!0||this.#a.multiTable;return Object.freeze({...this.#a,progressive:this.#y??this.#a.progressive,typedValues:n,multiTable:r})}close(){return this.#e.closeSession(this)}assertOpen(){if(this.closed)throw C("Dataset session")}addTableHandle(e){this.#i.add(e)}removeTableHandle(e){this.#i.delete(e)}closeLocally(){if(!this.closed){this.#e.clearDatasetCache(this.handle),this.closed=!0;for(let e of this.#i)e.closeLocally();this.#i.clear(),this.#c({type:"closed"})}}failLocally(e){if(!this.closed){this.#e.clearDatasetCache(this.handle),this.closed=!0,this.terminalError=e,this.#h(gt(e)),this.#c({type:"runtimeError",error:e});for(let n of[...this.#i])n.failLocally(e);this.#i.clear(),this.#c({type:"closed"})}}handleEvent(e){if(!(this.closed&&e.event!=="closed")){switch(e.event){case"progress":this.#c({type:"progress",progress:Pi(e.payload,e.tableId,e.revision)});break;case"metadata":{let n=pt(e.payload);if(this.#o=(this.#o===void 0||this.#o)&&n.capabilities.typedValues,this.#a.adapterId==="tabulark:arrow-ipc"&&(this.#y=n.capabilities.randomAccess==="indexed-prefix"),this.#u=this.#u===!0||n.capabilities.multiTable,this.#c({type:"metadata",metadata:n}),!e.tableHandle)for(let r of this.#i)r.metadata.tableId===n.tableId&&r.updateMetadata(n);break}case"warning":{let n=En(e.payload),r=e.tableHandle===void 0?void 0:[...this.#i].find(i=>i.handle===e.tableHandle);this.#h(Sn(n,e.tableId??r?.metadata.tableId,e.revision??r?.metadata.revision)),this.#c({type:"warning",warning:n});for(let i of this.#i)if(i.matchesWarning(n)&&!e.tableHandle){let o=e.tableId!==void 0&&i.metadata.tableId===e.tableId;i.emitWarning(n,o,e.tableId,e.revision)}break}case"runtimeError":{let n=Le(e.payload);if(e.tableHandle){let r=[...this.#i].find(i=>i.handle===e.tableHandle);this.#h(gt(n,e.tableId??r?.metadata.tableId,e.revision??r?.metadata.revision)),this.#c({type:"runtimeError",error:n})}else this.failLocally(n);break}case"closed":e.tableHandle||this.closeLocally();break}if(e.tableHandle)for(let n of this.#i)n.handle===e.tableHandle&&n.handleEvent(e)}}#c(e){for(let n of this.#t)ae(n,e)}#h(e){this.#r.length>=Cn&&this.#r.shift(),this.#r.push(e);for(let n of this.#n)ae(n,e)}},yt=class{#e;#t;handle;#n;#r=new Set;#a=new Set;#i=[];closed=!1;constructor(e,n,r,i){this.#e=e,this.#t=n,this.handle=r,this.#n=i;for(let o of n.getDiagnostics())o.tableId===i.tableId&&this.#i.push(o)}get metadata(){return this.#n}get datasetHandle(){return this.#t.handle}get datasetClosed(){return this.#t.closed}readRange(e,n={}){return this.#e.readRange(this,e,n)}getPresentation(){return this.#e.getPresentation(this)}readPresentationRange(e,n={}){return this.#e.readPresentationRange(this,e,n)}subscribe(e){return this.assertOpen(),this.#r.add(e),()=>this.#r.delete(e)}getDiagnostics(){return Object.freeze([...this.#i])}subscribeDiagnostics(e){if(this.assertOpen(),typeof e!="function")throw c("diagnostic listener must be a function");return this.#a.add(e),()=>this.#a.delete(e)}getCapabilities(){let e=this.#n.capabilities,n=Object.fromEntries(Object.entries(e).filter(([r,i])=>!_i(r)&&ji(i)).map(([r,i])=>[r,Hi(i)]));return Object.freeze({...n,randomAccess:e.randomAccess,typedValues:e.typedValues,search:e.search,sort:e.sort,filter:e.filter,multiTable:e.multiTable})}close(){return this.#e.closeTable(this)}assertOpen(){if(this.closed)throw C("Table handle")}closeLocally(){this.closed||(this.closed=!0,this.#t.removeTableHandle(this),this.#o({type:"closed"}))}failLocally(e){this.closed||(this.closed=!0,this.#t.removeTableHandle(this),this.#u(gt(e,this.metadata.tableId,this.metadata.revision)),this.#o({type:"runtimeError",error:e}),this.#o({type:"closed"}))}updateMetadata(e){this.closed||(this.#e.updateTableCacheVersion(this.#t.handle,e.tableId,e.revision,e.schema.version),this.#n=e,this.#o({type:"metadata",metadata:e}))}matchesWarning(e){return e.handle===this.handle||e.handle===this.#t.handle}emitWarning(e,n=!0,r=this.metadata.tableId,i=this.metadata.revision){this.closed||(n&&this.#u(Sn(e,r,i)),this.#o({type:"warning",warning:e}))}handleEvent(e){if(!(this.closed&&e.event!=="closed"))switch(e.event){case"metadata":this.updateMetadata(pt(e.payload));break;case"warning":this.emitWarning(En(e.payload),!0,e.tableId??this.metadata.tableId,e.revision??this.metadata.revision);break;case"runtimeError":this.failLocally(Le(e.payload));break;case"closed":this.closeLocally();break;case"progress":break}}#o(e){for(let n of this.#r)ae(n,e)}#u(e){this.#i.length>=Cn&&this.#i.shift(),this.#i.push(e);for(let n of this.#a)ae(n,e)}};function bi(t){if(!t||typeof t!="object")throw c("createEngine options are required");if("wasmModuleUrl"in t||"workerUrl"in t)throw c("wasmModuleUrl and workerUrl were removed; register an official adapter instead");if(!Array.isArray(t.adapters)||t.adapters.length===0)throw c("adapters must contain at least one official adapter descriptor");let e=[],n=new Set;for(let[i,o]of t.adapters.entries()){let a=tt(o);if(!a)throw c(`adapters[${i}] is not an official frozen adapter descriptor`);if(n.has(a.id))throw c(`Adapter ${a.id} is registered more than once`);n.add(a.id),e.push(Object.freeze({...a}))}let r=t.memoryBudgetBytes??qt;if(!Number.isSafeInteger(r)||r<=0)throw c("memoryBudgetBytes must be a positive safe integer");if(r<dt)throw c(`memoryBudgetBytes must be at least ${dt} bytes`,{minimum:dt,memoryBudgetBytes:r});return{memoryBudgetBytes:r,limits:Kt(r),adapters:Object.freeze(e),workerUrl:new URL("./worker.js",import.meta.url).href,workerName:t.workerName??"tabulark"}}function yi(t,e,n,r=!1){if(!t||typeof t!="object")throw c("open options are required");if(t.transferInput!==void 0&&typeof t.transferInput!="boolean")throw c("transferInput must be a boolean");let i=t.sourceMode===void 0?"auto":t.sourceMode;if(!bn(i))throw c("sourceMode must be auto or large");if(r&&(t.sourceMode!==void 0||t.transferInput!==void 0))throw c("sourceMode and transferInput do not apply to RangeSource inputs");let o=tt(t.adapter);if(!o)throw c("adapter must be an official frozen adapter descriptor");let a=e.get(o.id);if(!a)throw c(`Adapter ${o.id} was not registered with this engine`);let s=t.adapterOptions;if(s!==void 0&&(!g(s)||Array.isArray(s)))throw c("adapterOptions must be an object");let l;switch(o.id){case"tabulark:delimited":l=gi(s,n);break;case"tabulark:arrow-ipc":l=pi(s,n);break;case"tabulark:parquet":l=wi(s,n);break;case"tabulark:excel":l=Ri(s,n);break}return{adapter:a,options:l,sourceMode:i,isRangeSource:r}}function pn(t){let e=typeof t=="number"&&Number.isFinite(t)&&t>=0?Math.min(Math.floor(t),Number.MAX_SAFE_INTEGER):Number.MAX_SAFE_INTEGER;return new m("RESOURCE_LIMIT",`Large source mode supports Blob inputs up to ${re} bytes`,{details:{resource:"source-staging",requiredBytes:e,availableBytes:re}})}function gi(t,e){let n=t??{};_e("tabulark:delimited",n);let r=n.dialect??"csv",i=n.header??"first-row",o=n.mode??"lenient";if(r!=="csv"&&r!=="tsv")throw c("dialect must be csv or tsv");if(i!=="first-row"&&i!=="none")throw c("header must be first-row or none");if(o!=="lenient"&&o!=="strict")throw c("mode must be lenient or strict");let a=n.delimiter??(r==="csv"?",":" ");if(!Mi(a))throw c("delimiter must be one non-NUL ASCII byte other than CR, LF, or quote");let s=De(n.sourceName??e);return Object.freeze({dialect:r,header:i,mode:o,delimiter:a,...s===void 0?{}:{sourceName:s}})}function pi(t,e){let n=t??{};_e("tabulark:arrow-ipc",n);let r=n.container??"auto";if(r!=="auto"&&r!=="file"&&r!=="stream")throw c("container must be auto, file, or stream");let i=De(n.sourceName??e);return Object.freeze({container:r,...i===void 0?{}:{sourceName:i}})}function wi(t,e){let n=t??{};_e("tabulark:parquet",n);let r=De(n.sourceName??e);return Object.freeze(r===void 0?{}:{sourceName:r})}function Ri(t,e){let n=t??{};_e("tabulark:excel",n);let r=n.format??"auto";if(r!=="auto"&&r!=="xls"&&r!=="xlsx")throw c("format must be auto, xls, or xlsx");let i=De(n.sourceName??e);return Object.freeze({format:r,...i===void 0?{}:{sourceName:i}})}function De(t){if(t!==void 0){if(typeof t!="string"||t.length===0||t.length>1024)throw c("sourceName must contain between 1 and 1024 characters");return t}}function _e(t,e){let n=new Set(G(t).options.allowedKeys);for(let r of Object.keys(e))if(!n.has(r))throw c(`Unknown adapter option: ${r}`)}function xi(t){if(!Array.isArray(t))throw new m("PROTOCOL_INCOMPATIBLE","Worker returned invalid table descriptors");return t.map((e,n)=>{if(!g(e)||typeof e.id!="string"||typeof e.name!="string")throw new m("PROTOCOL_INCOMPATIBLE",`Worker returned an invalid table descriptor at index ${n}`);return{id:e.id,name:e.name}})}function pt(t){if(!g(t)||typeof t.tableId!="string"||typeof t.name!="string")throw new m("PROTOCOL_INCOMPATIBLE","Worker returned invalid table metadata");let e=g(t.extent)?t.extent:{},n=g(t.schema)?t.schema:{},r=g(t.capabilities)?t.capabilities:{},i=Array.isArray(n.columns)?n.columns.map((o,a)=>ki(o,a)):[];return Xt({tableId:t.tableId,name:t.name,revision:D(t.revision,0),extent:{rows:xn(e.rows,"at-least",0),columns:xn(e.columns,"exact",i.length)},schema:{version:D(n.version,0),columns:i},capabilities:{...r,randomAccess:r.randomAccess==="full"?"full":"indexed-prefix",typedValues:r.typedValues===!0,search:r.search===!0,sort:r.sort===!0,filter:r.filter===!0,multiTable:r.multiTable===!0}})}function vi(t,e){if(t==null)return null;if(!g(t)||t.kind!=="spreadsheet-v1")throw new m("PROTOCOL_INCOMPATIBLE","Worker returned an invalid table presentation");if(t.tableId!==e.tableId)throw new m("PROTOCOL_INCOMPATIBLE","Presentation tableId does not match its table");let n=t.visibility==="hidden"||t.visibility==="very-hidden"?t.visibility:"visible";return Object.freeze({kind:"spreadsheet-v1",tableId:e.tableId,revision:D(t.revision,e.revision),visibility:n,frozenRows:D(t.frozenRows,0),frozenColumns:D(t.frozenColumns,0),rows:Be(t.rows,"rows"),columns:Be(t.columns,"columns"),styles:Si(t.styles)})}function Ci(t,e,n){if(t==null)return null;if(!g(t)||t.kind!=="spreadsheet-v1"||t.tableId!==e.tableId)throw new m("PROTOCOL_INCOMPATIBLE","Worker returned an invalid presentation range");let r=g(t.range)?t.range:{};for(let a of["rowStart","rowCount","columnStart","columnCount"])if(r[a]!==n[a])throw new m("PROTOCOL_INCOMPATIBLE","Presentation range must be aligned with its requested range");if(!Array.isArray(t.styleIds)||t.styleIds.length!==n.rowCount)throw new m("PROTOCOL_INCOMPATIBLE","Presentation style rows do not match the range");let i=Object.freeze(t.styleIds.map((a,s)=>{if(!Array.isArray(a)||a.length!==n.columnCount)throw new m("PROTOCOL_INCOMPATIBLE",`Presentation style row ${s} does not match the range`);return Object.freeze(a.map(l=>l===null||Number.isSafeInteger(l)&&l>=0?l:Ei()))})),o=Array.isArray(t.mergedCells)?Object.freeze(t.mergedCells.map((a,s)=>Ti(a,s))):Object.freeze([]);return Object.freeze({kind:"spreadsheet-v1",tableId:e.tableId,revision:D(t.revision,e.revision),range:Object.freeze({...n}),styleIds:i,mergedCells:o,rows:Be(t.rows,"rows"),columns:Be(t.columns,"columns")})}function Ei(){throw new m("PROTOCOL_INCOMPATIBLE","Presentation style IDs must be non-negative integers or null")}function Be(t,e){if(t===void 0)return Object.freeze([]);if(!Array.isArray(t))throw new m("PROTOCOL_INCOMPATIBLE",`Presentation ${e} must be an array`);let n=new Set;return Object.freeze(t.map((r,i)=>{if(!g(r)||!Number.isSafeInteger(r.index)||r.index<0)throw new m("PROTOCOL_INCOMPATIBLE",`Presentation ${e}[${i}] has an invalid index`);let o=r.index;if(n.has(o))throw new m("PROTOCOL_INCOMPATIBLE",`Presentation ${e} contains duplicate index ${o}`);if(n.add(o),r.size!==void 0&&(typeof r.size!="number"||!Number.isFinite(r.size)||r.size<0))throw new m("PROTOCOL_INCOMPATIBLE",`Presentation ${e}[${i}] has an invalid size`);if(r.hidden!==void 0&&typeof r.hidden!="boolean")throw new m("PROTOCOL_INCOMPATIBLE",`Presentation ${e}[${i}] has an invalid hidden flag`);return Object.freeze({index:o,...r.size===void 0?{}:{size:r.size},...r.hidden===void 0?{}:{hidden:r.hidden}})}))}function Si(t){if(t===void 0)return Object.freeze([]);if(!Array.isArray(t))throw new m("PROTOCOL_INCOMPATIBLE","Presentation styles must be an array");return Object.freeze(t.map((e,n)=>{if(!g(e))throw new m("PROTOCOL_INCOMPATIBLE",`Presentation style ${n} must be an object`);return Object.freeze({...typeof e.numberFormat=="string"?{numberFormat:e.numberFormat}:{},...wn(e.font)?{font:wn(e.font)}:{},...V(e.foregroundColor)?{foregroundColor:V(e.foregroundColor)}:{},...V(e.backgroundColor)?{backgroundColor:V(e.backgroundColor)}:{},...V(e.fillColor)?{fillColor:V(e.fillColor)}:{},...Rn(e.borders)?{borders:Rn(e.borders)}:{},...Ai(e.horizontalAlignment)?{horizontalAlignment:e.horizontalAlignment}:{},...Ii(e.verticalAlignment)?{verticalAlignment:e.verticalAlignment}:{},...typeof e.wrapText=="boolean"?{wrapText:e.wrapText}:{}})}))}function V(t){if(!(!g(t)||typeof t.css!="string"||t.css.length===0||t.css.length>128))return Object.freeze({css:t.css})}function wn(t){if(!g(t))return;let e=V(t.color),n=typeof t.size=="number"&&Number.isFinite(t.size)&&t.size>0?t.size:void 0,r={...typeof t.family=="string"&&t.family.length>0?{family:t.family}:{},...n===void 0?{}:{size:n},...typeof t.bold=="boolean"?{bold:t.bold}:{},...typeof t.italic=="boolean"?{italic:t.italic}:{},...typeof t.underline=="boolean"?{underline:t.underline}:{},...e===void 0?{}:{color:e}};return Object.keys(r).length===0?void 0:Object.freeze(r)}function Rn(t){if(!g(t))return;let e=["top","right","bottom","left"],n={};for(let r of e){let i=t[r];if(!g(i))continue;let o=Oi(i.style)?i.style:void 0,a=V(i.color);(o!==void 0||a!==void 0)&&(n[r]=Object.freeze({...o===void 0?{}:{style:o},...a===void 0?{}:{color:a}}))}return Object.keys(n).length===0?void 0:Object.freeze(n)}function Ti(t,e){if(!g(t))throw new m("PROTOCOL_INCOMPATIBLE",`Merged cell ${e} must be an object`);let n=["rowStart","rowEnd","columnStart","columnEnd"];for(let i of n)if(!Number.isSafeInteger(t[i])||t[i]<0)throw new m("PROTOCOL_INCOMPATIBLE",`Merged cell ${e} has an invalid ${i}`);let r={rowStart:t.rowStart,rowEnd:t.rowEnd,columnStart:t.columnStart,columnEnd:t.columnEnd};if(r.rowEnd<=r.rowStart||r.columnEnd<=r.columnStart)throw new m("PROTOCOL_INCOMPATIBLE",`Merged cell ${e} must be non-empty`);return Object.freeze(r)}function Oi(t){return t==="none"||t==="thin"||t==="medium"||t==="thick"||t==="dashed"||t==="dotted"||t==="double"}function Ai(t){return t==="general"||t==="left"||t==="center"||t==="right"||t==="justify"}function Ii(t){return t==="top"||t==="center"||t==="bottom"||t==="justify"}function ki(t,e){let n=g(t)?t:{};return{id:typeof n.id=="string"?n.id:`c${e}`,name:typeof n.name=="string"?n.name:`column_${e+1}`,index:D(n.index,e),dataType:U(n.dataType??{type:"unknown"}),nullable:n.nullable!==!1,...g(n.metadata)?{metadata:Object.freeze(Object.fromEntries(Object.entries(n.metadata).map(([r,i])=>[r,String(i)])))}:{}}}function xn(t,e,n){if(g(t)){if(t.kind==="unknown")return{kind:"unknown"};if((t.kind==="exact"||t.kind==="at-least")&&Number.isSafeInteger(t.value)&&t.value>=0)return{kind:t.kind,value:t.value}}return{kind:e,value:n}}function Mi(t){if(typeof t!="string"||t.length!==1)return!1;let e=t.charCodeAt(0);return e<=127&&e!==0&&e!==13&&e!==10&&e!==34}function Pi(t,e,n){let r=g(t)?t:{};return{sourceHandle:typeof r.sourceHandle=="string"?r.sourceHandle:"",...typeof r.tableId=="string"&&r.tableId.length>0?{tableId:r.tableId}:typeof e=="string"&&e.length>0?{tableId:e}:{},...Number.isSafeInteger(r.revision)&&r.revision>=0?{revision:r.revision}:Number.isSafeInteger(n)&&n>=0?{revision:n}:{},bytesScanned:D(r.bytesScanned,0),rowsDiscovered:D(r.rowsDiscovered,0),done:r.done===!0}}function En(t){let e=g(t)?t:{},n=Number.isSafeInteger(e.byteOffset)?e.byteOffset:void 0,r=Number.isSafeInteger(e.sourceOffset)&&e.sourceOffset>=0?e.sourceOffset:void 0,i=Number.isSafeInteger(e.row)&&e.row>=0?e.row:void 0,o=Number.isSafeInteger(e.column)&&e.column>=0?e.column:void 0,a=Ne(e.tableId),s=An(e.resource),l=L(e.requiredBytes),u=L(e.availableBytes);return{handle:typeof e.handle=="string"?e.handle:"",kind:typeof e.kind=="string"?e.kind:"warning",message:typeof e.message=="string"?e.message:"Source warning",...a===void 0?{}:{tableId:a},...s===void 0?{}:{resource:s},...l===void 0?{}:{requiredBytes:l},...u===void 0?{}:{availableBytes:u},...n===void 0?{}:{byteOffset:n},...r===void 0?{}:{sourceOffset:r},...i===void 0?{}:{row:i},...o===void 0?{}:{column:o}}}function Sn(t,e,n){let r=t.sourceOffset??t.byteOffset,i=typeof r=="number"&&Number.isSafeInteger(r)&&r>=0?r:void 0,o=t.row,a=typeof o=="number"&&Number.isSafeInteger(o)&&o>=0?o:void 0,s=t.column,l=typeof s=="number"&&Number.isSafeInteger(s)&&s>=0?s:void 0,u=typeof n=="number"&&Number.isSafeInteger(n)&&n>=0?n:void 0,d=Tn(t.kind,"SOURCE_WARNING"),f=Ne(e??t.tableId),h=An(t.resource),b=L(t.requiredBytes),p=L(t.availableBytes);return Object.freeze({code:d,severity:"warning",message:On(t.message,wt(d,"warning"),d),recoverable:!0,...h===void 0?{}:{resource:h},...b===void 0?{}:{requiredBytes:b},...p===void 0?{}:{availableBytes:p},...i===void 0?{}:{sourceOffset:i},...f===void 0?{}:{tableId:f},...u===void 0?{}:{revision:u},...a===void 0?{}:{row:a},...l===void 0?{}:{column:l}})}function gt(t,e,n){let r=g(t.details)?t.details:{},i=L(r.sourceOffset)??L(r.byteOffset),o=L(r.row),a=L(r.column),s=typeof r.tableId=="string"&&r.tableId.length>0?r.tableId:void 0,l=L(r.revision),u=typeof n=="number"&&Number.isSafeInteger(n)&&n>=0?n:l,d=Tn(t.code,"RUNTIME_FAILURE"),f=Ne(e),h=Ne(s);return Object.freeze({code:d,severity:"error",message:zi(t,d),recoverable:t.retryable,...f!==void 0?{tableId:f}:h===void 0?{}:{tableId:h},...i===void 0?{}:{sourceOffset:i},...u===void 0?{}:{revision:u},...o===void 0?{}:{row:o},...a===void 0?{}:{column:a}})}function zi(t,e){return On(t.message,wt(e,"error"),e)}function Tn(t,e){if(typeof t!="string"||t.length===0)return e;let n=t.replace(/[^A-Za-z0-9_.:-]/gu,"_").slice(0,96);return n==="PROTOCOL_INCOMPATIBLE"?"RUNTIME_FAILURE":n.length>0&&Bi.has(n)?n:e}var Bi=new Set(["SOURCE_WARNING","RUNTIME_FAILURE","ragged-row","quote-in-unquoted-field","unexpected-data-after-closing-quote","unterminated-quote","skipped-sheet","missing-formula-cache","presentation-resource-limit","RESOURCE_LIMIT","CANCELLED","HANDLE_CLOSED","RANGE_NOT_INDEXED","PARSE_FAILED","UNSUPPORTED_FEATURE","INVALID_RANGE","INVALID_ARGUMENT","UNSUPPORTED_RUNTIME","SOURCE_UNAVAILABLE","SOURCE_CHANGED","RANGE_UNSUPPORTED"]);function On(t,e,n){let r=wt(n,"warning");return r.length<=ui?r:e}function wt(t,e){switch(t){case"ragged-row":return"Rows contain inconsistent field counts";case"quote-in-unquoted-field":return"A quoted value appeared in an unquoted field";case"unexpected-data-after-closing-quote":return"Unexpected data followed a closing quote";case"unterminated-quote":return"A quoted field was not terminated";case"skipped-sheet":return"A workbook sheet was skipped";case"missing-formula-cache":return"A formula has no cached result";case"presentation-resource-limit":return"Spreadsheet presentation exceeded its resource budget";case"RESOURCE_LIMIT":return"A configured resource limit was reached";case"CANCELLED":return"The operation was cancelled";case"HANDLE_CLOSED":return"The handle is closed";case"RANGE_NOT_INDEXED":return"The requested range is not indexed yet";case"PARSE_FAILED":return"The source could not be parsed";case"UNSUPPORTED_FEATURE":return"The source uses an unsupported feature";case"INVALID_RANGE":return"The requested range is invalid";case"INVALID_ARGUMENT":return"An operation argument is invalid";case"UNSUPPORTED_RUNTIME":return"The current runtime is unsupported";case"SOURCE_UNAVAILABLE":return"The source is unavailable";case"SOURCE_CHANGED":return"The source changed while it was open";case"RANGE_UNSUPPORTED":return"The source does not support the requested byte range";case"RUNTIME_FAILURE":return"The runtime reported a failure";default:return e==="warning"?"Source warning":"The operation failed"}}function Ne(t){if(!(typeof t!="string"||t.length===0||t.length>128))return/^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$/u.test(t)?t:void 0}function An(t){if(!(typeof t!="string"||t.length===0||t.length>96))return/^[A-Za-z0-9][A-Za-z0-9_.:-]{0,95}$/u.test(t)?t:void 0}function Ni(t,e,n,r="auto",i=st,o=!1){let a=G(t),s=t==="tabulark:delimited"||t==="tabulark:arrow-ipc"&&e.container==="stream",l=t==="tabulark:arrow-ipc"&&e.container==="stream"?"streaming":a.resources.sourceAccess,u=o?4294967295:r==="large"?re:t==="tabulark:excel"?i:t==="tabulark:arrow-ipc"?4294967295:Number.MAX_SAFE_INTEGER;return Object.freeze({adapterId:t,sourceAccess:l,progressive:s,maxSourceBytes:u,multiTable:n.length>1||t==="tabulark:excel",presentation:a.resources.supportsPresentation,typedValues:t==="tabulark:arrow-ipc"||t==="tabulark:parquet"})}function Li(t){return Object.freeze({adapterId:"tabulark:delimited",sourceAccess:"streaming",progressive:!0,maxSourceBytes:Number.MAX_SAFE_INTEGER,multiTable:t.length>1,presentation:!1,typedValues:!1})}function N(){let t=typeof performance<"u"&&typeof performance.now=="function"?performance.now():Date.now();return Number.isFinite(t)?t:0}function vn(t){return typeof t=="number"&&Number.isFinite(t)&&t>=0?t:0}function ze(t){return Number.isSafeInteger(t)&&t>=0?t:0}function ie(t,e){let n=vn(t)+vn(e);return Number.isSafeInteger(n)?n:Number.MAX_SAFE_INTEGER}function L(t){return Number.isSafeInteger(t)&&t>=0?t:void 0}function Di(t){let e=t.replace(/[^A-Za-z0-9_.:-]/gu,"_").slice(0,64);return e.length>0?e:"operation"}function _i(t){return/(?:protocol|abi|layout|worker|wire|buffer|transport|runtime|module|wasm|memory|source|path|url|resource|reservation|offset|handle|request|response)/iu.test(t)}function ji(t){return t===null||typeof t=="boolean"||typeof t=="string"?!0:typeof t=="number"?Number.isFinite(t):Array.isArray(t)&&t.length<=64&&t.every(e=>e===null||typeof e=="boolean"||typeof e=="string"||typeof e=="number"&&Number.isFinite(e))}function Hi(t){return Array.isArray(t)?Object.freeze([...t]):t}function Ui(t){if(typeof File<"u"&&t instanceof File&&t.name.length>0)return t.name}function Le(t){return g(t)&&typeof t.code=="string"&&typeof t.message=="string"?m.fromSerialized({code:t.code,message:t.message,retryable:t.retryable===!0,...t.details===void 0?{}:{details:t.details}}):new m("RUNTIME_FAILURE","The Worker reported a runtime failure")}function ut(t,e){return t instanceof m?t:new m("RUNTIME_FAILURE",e,{cause:t})}function Wi(t){let e=In(t);if(e!==void 0){let n=je(e.code);return n==="CANCELLED"?v():n==="HANDLE_CLOSED"?C("Range source reader"):n==="SOURCE_CHANGED"?new m("SOURCE_CHANGED","The source changed while it was opening",{retryable:e.retryable}):n==="RANGE_UNSUPPORTED"?new m("RANGE_UNSUPPORTED","The source does not support the requested range",{retryable:e.retryable}):n==="RESOURCE_LIMIT"?new m("RESOURCE_LIMIT","The source exceeds its configured limit",{details:Vi(e.details)}):n==="RUNTIME_FAILURE"?new m("RUNTIME_FAILURE","The source provider returned invalid bytes",{retryable:e.retryable}):new m("SOURCE_UNAVAILABLE","The source could not be opened",{retryable:e.retryable})}return Fi(t)?v():new m("SOURCE_UNAVAILABLE","The source could not be opened",{retryable:!0})}function In(t){if(g(t))try{let e=t.code,n=t.retryable;return typeof e!="string"||typeof n!="boolean"?void 0:{code:e,retryable:n,details:t.details}}catch{return}}function Vi(t){if(!g(t))return{resource:"source-staging",requiredBytes:0,availableBytes:0};let e=typeof t.resource=="string"&&/^[A-Za-z0-9_.:-]{1,64}$/u.test(t.resource)?t.resource:"source-staging",n=z(t.requiredBytes)?t.requiredBytes:0,r=z(t.availableBytes)?t.availableBytes:0;return{resource:e,requiredBytes:n,availableBytes:r}}function Fi(t){return typeof t=="object"&&t!==null&&(t.name==="AbortError"||t.code===20)}function D(t,e){return Number.isSafeInteger(t)&&t>=0?t:e}function $i(t,e){if(!g(t))return!1;let n=t.rowStart,r=t.rowCount,i=t.columnStart,o=t.columnCount;return Number.isSafeInteger(n)&&n===e.rowStart&&Number.isSafeInteger(r)&&r>=0&&r<=e.rowCount&&Number.isSafeInteger(i)&&i===e.columnStart&&Number.isSafeInteger(o)&&o>=0&&o<=e.columnCount}function ae(t,e){try{t(e)}catch(n){typeof reportError=="function"&&reportError(n)}}function ct(t){return t.mainThreadSourceBytes}async function I(t){if(typeof t!="object"||t===null)return;let e;try{e=t.close}catch{return}if(typeof e!="function")return;let n;try{n=Promise.resolve(e.call(t))}catch{return}let r,i=new Promise(o=>{r=setTimeout(o,ge)});await Promise.race([n.then(()=>{},()=>{}),i]),r!==void 0&&clearTimeout(r)}function Gi(t,e,n){let r=!1,i=n.aborted?Promise.reject(v()):Promise.resolve().then(()=>t.open(e));return new Promise((o,a)=>{let s=()=>{n.removeEventListener("abort",l)},l=()=>{r||(r=!0,s(),a(v()))};n.aborted?l():n.addEventListener("abort",l,{once:!0}),i.then(u=>{if(r){I(u);return}r=!0,s(),o(u)},u=>{r||(r=!0,s(),a(u))})})}function qi(t,e){if((t instanceof ArrayBuffer||ArrayBuffer.isView(t)?t.byteLength:void 0)!==e)throw new m("RUNTIME_FAILURE","The source provider returned an invalid byte length");return t instanceof ArrayBuffer?t:t.buffer instanceof ArrayBuffer&&t.byteOffset===0&&t.byteLength===t.buffer.byteLength?t.buffer:hn(t)}function Ki(t,e){if(t===void 0)return e;if(t===e)return t;let n=AbortSignal.any;if(typeof n=="function")return n([t,e]);let r=new AbortController,i=()=>r.abort();return t.aborted||e.aborted?r.abort():(t.addEventListener("abort",i,{once:!0}),e.addEventListener("abort",i,{once:!0})),r.signal}function Xi(t){let e=In(t);return e!==void 0?{code:je(e.code),retryable:e.retryable}:typeof t=="object"&&t!==null&&t.name==="AbortError"?{code:"CANCELLED",retryable:!1}:{code:"SOURCE_UNAVAILABLE",retryable:!0}}function je(t){return t==="SOURCE_CHANGED"||t==="RANGE_UNSUPPORTED"||t==="SOURCE_UNAVAILABLE"||t==="RESOURCE_LIMIT"||t==="CANCELLED"||t==="HANDLE_CLOSED"||t==="RUNTIME_FAILURE"?t:"SOURCE_UNAVAILABLE"}function Yi(t){switch(je(t)){case"SOURCE_CHANGED":return"The source changed while it was open";case"RANGE_UNSUPPORTED":return"The source range is unsupported";case"CANCELLED":return"The source read was cancelled";case"HANDLE_CLOSED":return"The source is closed";case"RUNTIME_FAILURE":return"The source provider returned invalid bytes";case"RESOURCE_LIMIT":return"The source exceeds its configured limit";default:return"The source provider is unavailable"}}function Qi(t){return ht.create(t)}function Mn(t,e=t){F(t,"anchor"),F(e,"focus");let n=Object.freeze({...t}),r=Object.freeze({...e});return Object.freeze({anchor:n,focus:r,range:Zi(n,r)})}function Zi(t,e){return Object.freeze({rowStart:Math.min(t.rowIndex,e.rowIndex),rowEnd:Math.max(t.rowIndex,e.rowIndex)+1,columnStart:Math.min(t.columnIndex,e.columnIndex),columnEnd:Math.max(t.columnIndex,e.columnIndex)+1})}function Pn(t,e){return e.rowIndex>=t.rowStart&&e.rowIndex<t.rowEnd&&e.columnIndex>=t.columnStart&&e.columnIndex<t.columnEnd}function O(t,e,n){return e<=0||n<=0?null:Object.freeze({rowIndex:kn(t.rowIndex,0,e-1),columnIndex:kn(t.columnIndex,0,n-1)})}function zn(t,e,n,r,i){let o=O(t,n,r);if(o===null)return null;let a=Math.max(1,Math.floor(i));switch(e){case"left":return O({rowIndex:o.rowIndex,columnIndex:o.columnIndex-1},n,r);case"right":return O({rowIndex:o.rowIndex,columnIndex:o.columnIndex+1},n,r);case"up":return O({rowIndex:o.rowIndex-1,columnIndex:o.columnIndex},n,r);case"down":return O({rowIndex:o.rowIndex+1,columnIndex:o.columnIndex},n,r);case"page-up":return O({rowIndex:o.rowIndex-a,columnIndex:o.columnIndex},n,r);case"page-down":return O({rowIndex:o.rowIndex+a,columnIndex:o.columnIndex},n,r);case"row-start":return Object.freeze({rowIndex:o.rowIndex,columnIndex:0});case"row-end":return Object.freeze({rowIndex:o.rowIndex,columnIndex:r-1});case"table-start":return Object.freeze({rowIndex:0,columnIndex:0});case"table-end":return Object.freeze({rowIndex:n-1,columnIndex:r-1})}}function F(t,e){if(!Number.isSafeInteger(t.rowIndex)||t.rowIndex<0)throw c(`${e}.rowIndex must be a non-negative safe integer`);if(!Number.isSafeInteger(t.columnIndex)||t.columnIndex<0)throw c(`${e}.columnIndex must be a non-negative safe integer`)}function kn(t,e,n){return Number.isFinite(t)?Math.min(n,Math.max(e,Math.trunc(t))):e}var Bn=1,Ue=class{element;statusElement;#e;#t=!1;constructor(e,n="Data table"){this.#e=`tabulark-grid-${Bn}`,Bn+=1,this.element=e.createElement("div"),this.element.className="tabulark-a11y-grid",this.element.dataset.tabularkA11yGrid="",this.element.id=this.#e,this.element.setAttribute("role","grid"),this.element.setAttribute("aria-label",n),this.element.tabIndex=0,Nn(this.element),this.statusElement=e.createElement("div"),this.statusElement.className="tabulark-status",this.statusElement.dataset.tabularkStatus="",this.statusElement.setAttribute("role","status"),this.statusElement.setAttribute("aria-live","polite"),this.statusElement.setAttribute("aria-atomic","true"),Nn(this.statusElement)}update(e){if(this.#t)return;this.element.setAttribute("aria-label",e.label),this.element.setAttribute("aria-colcount",String(e.columnCount)),He(this.element,"aria-rowcount",e.exactRowCount===void 0?void 0:String(e.exactRowCount+1)),this.element.setAttribute("aria-busy",String(e.busy));let n=this.element.ownerDocument.createDocumentFragment();n.append(this.#n(e.columns));let r;for(let i of e.rows){let o=this.element.ownerDocument.createElement("div");o.setAttribute("role","row"),o.setAttribute("aria-rowindex",String(i.index+2));for(let a of i.cells){let s=this.element.ownerDocument.createElement("div");s.setAttribute("role","gridcell"),s.setAttribute("aria-colindex",String(a.columnIndex+1)),s.setAttribute("aria-selected",String(a.selected)),He(s,"aria-rowspan",a.rowSpan===void 0||a.rowSpan<=1?void 0:String(a.rowSpan)),He(s,"aria-colspan",a.columnSpan===void 0||a.columnSpan<=1?void 0:String(a.columnSpan)),s.textContent=a.value===void 0?"Loading":a.value===null?"Empty":a.value,a.active&&(r=this.#r(a.rowIndex,a.columnIndex),s.id=r),o.append(s)}n.append(o)}this.element.replaceChildren(n),He(this.element,"aria-activedescendant",r),e.status!==void 0&&e.status!==this.statusElement.textContent&&(this.statusElement.textContent=e.status)}focus(e){this.element.focus(e)}destroy(){this.#t||(this.#t=!0,this.element.remove(),this.statusElement.remove())}#n(e){let n=this.element.ownerDocument.createElement("div");n.setAttribute("role","row"),n.setAttribute("aria-rowindex","1");for(let r of e){let i=this.element.ownerDocument.createElement("div");i.setAttribute("role","columnheader"),i.setAttribute("aria-colindex",String(r.index+1)),i.textContent=r.name,n.append(i)}return n}#r(e,n){return`${this.#e}-r${e}-c${n}`}};function Nn(t){Object.assign(t.style,{border:"0",clip:"rect(0 0 0 0)",clipPath:"inset(50%)",height:"1px",margin:"-1px",overflow:"hidden",padding:"0",pointerEvents:"none",position:"absolute",whiteSpace:"nowrap",width:"1px"})}function He(t,e,n){n===void 0?t.removeAttribute(e):t.setAttribute(e,n)}var Fe=Object.freeze({background:"#ffffff",foreground:"#172033",mutedForeground:"#667085",headerBackground:"#f2f4f7",headerForeground:"#344054",alternateRowBackground:"#f9fafb",gridLine:"#d0d5dd",selectionBackground:"rgba(21, 112, 239, 0.14)",selectionBorder:"#1570ef",activeCellBorder:"#175cd3",loadingBackground:"#e4e7ec",font:'13px ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif',headerFont:'600 13px ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif'});function Ln(t=Fe){return Object.freeze({...t,background:"Canvas",foreground:"CanvasText",mutedForeground:"GrayText",headerBackground:"Canvas",headerForeground:"CanvasText",alternateRowBackground:"Canvas",gridLine:"CanvasText",selectionBackground:"Highlight",selectionBorder:"Highlight",activeCellBorder:"CanvasText",loadingBackground:"GrayText"})}var Ve=class{canvas;#e;#t;#n;#r;#a=0;#i=0;#o=1;constructor(e,n={}){let r=e.getContext("2d",{alpha:!1});if(r===null)throw new Error("Tabulark Canvas rendering requires a 2D rendering context");this.canvas=e,this.#e=r,this.#t=Object.freeze({...Fe,...n.theme}),this.#n=so(n.maxDevicePixelRatio,Number.POSITIVE_INFINITY),this.#r=n.forcedColors??!1}setTheme(e,n={}){this.#t=Object.freeze({...e}),this.#r=n.forcedColors??!1}paint(e){this.#u(e.width,e.height);let n=this.#e,r=this.#t;n.save(),n.setTransform(this.#o,0,0,this.#o,0,0),n.clearRect(0,0,e.width,e.height),n.fillStyle=r.background,n.fillRect(0,0,e.width,e.height),this.#y(e),this.#w(e),this.#b(e),this.#h(e),this.#l(e),n.restore()}#u(e,n){let i=this.canvas.ownerDocument.defaultView?.devicePixelRatio??1,o=Math.max(1,Math.min(i,this.#n)),a=Math.max(0,Math.floor(e)),s=Math.max(0,Math.floor(n)),l=Math.max(1,Math.round(a*o)),u=Math.max(1,Math.round(s*o));a===this.#a&&s===this.#i&&o===this.#o&&this.canvas.width===l&&this.canvas.height===u||(this.#a=a,this.#i=s,this.#o=o,this.canvas.width=l,this.canvas.height=u,this.canvas.style.width=`${a}px`,this.canvas.style.height=`${s}px`)}#y(e){let n=this.#e,r=this.#t,i=new Map(e.columns.map(a=>[a.index,a]));n.font=r.font,n.textBaseline="middle";let o=[...e.rows.filter(a=>a.frozen!==!0),...e.rows.filter(a=>a.frozen===!0)];for(let a of o){if(a.y+a.height<=e.headerHeight||a.y>=e.height)continue;n.fillStyle=a.index%2===0?r.background:r.alternateRowBackground,n.fillRect(0,a.y,e.width,a.height),n.fillStyle=r.mutedForeground,n.textAlign="right",n.fillText(String(a.index+1),e.rowGutterWidth-10,a.y+a.height/2);let s=[...a.cells.filter(l=>i.get(l.columnIndex)?.frozen!==!0),...a.cells.filter(l=>i.get(l.columnIndex)?.frozen===!0)];for(let l of s){let u=i.get(l.columnIndex);u===void 0||u.x+u.width<=e.rowGutterWidth||l.coveredByMerge===!0||this.#c(l.value,u.x,a.y,u.width,a.height,l.style)}}}#c(e,n,r,i,o,a){let s=this.#e,l=this.#t,u=10;if(!(i<=u*2)){if(s.save(),s.beginPath(),s.rect(n+1,r+1,Math.max(0,i-2),Math.max(0,o-2)),s.clip(),this.#s(n,r,i,o,a),this.#f(a),s.textAlign=eo(a),s.textBaseline=to(a),e===void 0){s.fillStyle=l.loadingBackground;let d=Math.max(12,Math.min(i-u*2,i*.42));s.fillRect(n+u,r+o/2-3,d,6)}else{s.fillStyle=e===null?l.mutedForeground:this.#d(a,l.foreground);let d=e===null?"\u2205":e,f=no(s.textAlign,n,i,u),h=ro(s.textBaseline,r,o,4);if(s.fillText(d,f,h,Math.max(0,i-u*2)),a?.font?.underline===!0){let b=Math.min(s.measureText(d).width,i-u*2),p=io(s.textAlign,f,b);s.strokeStyle=String(s.fillStyle),s.lineWidth=1,s.beginPath(),s.moveTo(p,Math.min(r+o-4,h+3)),s.lineTo(p+b,Math.min(r+o-4,h+3)),s.stroke()}}this.#g(n,r,i,o,a),s.restore()}}#h(e){for(let n of e.mergedCells??[])n.width<=0||n.height<=0||n.x+n.width<=e.rowGutterWidth||n.y+n.height<=e.headerHeight||n.x>=e.width||n.y>=e.height||(this.#e.fillStyle=n.region.rowStart%2===0?this.#t.background:this.#t.alternateRowBackground,this.#e.fillRect(n.x,n.y,n.width,n.height),n.continuation===!0?(this.#s(n.x,n.y,n.width,n.height,n.style),this.#g(n.x,n.y,n.width,n.height,n.style)):this.#c(n.value,n.x,n.y,n.width,n.height,n.style),this.#e.strokeStyle=this.#t.gridLine,this.#e.lineWidth=1/this.#o,this.#e.strokeRect(n.x+.5/this.#o,n.y+.5/this.#o,Math.max(0,n.width-1/this.#o),Math.max(0,n.height-1/this.#o)))}#s(e,n,r,i,o){if(this.#r||o===void 0)return;let a=We(o.fillColor??o.backgroundColor);a!==void 0&&(this.#e.fillStyle=a,this.#e.fillRect(e+1,n+1,Math.max(0,r-2),Math.max(0,i-2)))}#f(e){if(e?.font===void 0){this.#e.font=this.#t.font;return}let n=e.font,r=Ji(n.size)??13,i=n.family&&n.family.trim().length>0?n.family:'ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif';this.#e.font=`${n.italic===!0?"italic ":""}${n.bold===!0?"700 ":"400 "}${r}px ${i}`}#d(e,n){return this.#r?n:We(e?.font?.color)??We(e?.foregroundColor)??n}#g(e,n,r,i,o){if(o?.borders===void 0)return;let a=this.#e,s=o.borders,l=(u,d,f,h,b)=>{let p=s[u];if(p===void 0||p.style==="none")return;a.save();let R=oo(p.style);if(a.lineWidth=R,a.strokeStyle=this.#r?this.#t.gridLine:We(p.color)??this.#t.gridLine,a.setLineDash(ao(p.style)),a.beginPath(),a.moveTo(d,f),a.lineTo(h,b),a.stroke(),p.style==="double"){let y=Math.max(2,R+1),x=f===b;a.beginPath(),a.moveTo(x?d:d+y,x?f+y:f),a.lineTo(x?h:h+y,x?b+y:b),a.stroke()}a.restore()};l("top",e+.5,n+.5,e+r-.5,n+.5),l("right",e+r-.5,n+.5,e+r-.5,n+i-.5),l("bottom",e+.5,n+i-.5,e+r-.5,n+i-.5),l("left",e+.5,n+.5,e+.5,n+i-.5)}#w(e){let n=this.#e,r=this.#t;n.fillStyle=r.headerBackground,n.fillRect(0,0,e.width,e.headerHeight),n.font=r.headerFont,n.fillStyle=r.headerForeground,n.textBaseline="middle",n.textAlign="left";let i=[...e.columns.filter(o=>o.frozen!==!0),...e.columns.filter(o=>o.frozen===!0)];for(let o of i)o.x+o.width<=e.rowGutterWidth||o.x>=e.width||(n.save(),n.beginPath(),n.rect(o.x+1,0,Math.max(0,o.width-2),e.headerHeight),n.clip(),n.fillText(o.name,o.x+10,e.headerHeight/2),n.restore());n.textAlign="center",n.fillText("#",e.rowGutterWidth/2,e.headerHeight/2,e.rowGutterWidth)}#b(e){let n=this.#e,r=this.#t;n.strokeStyle=r.gridLine,n.lineWidth=1/this.#o,n.beginPath();let i=.5/this.#o;n.moveTo(e.rowGutterWidth+i,0),n.lineTo(e.rowGutterWidth+i,e.height),n.moveTo(0,e.headerHeight+i),n.lineTo(e.width,e.headerHeight+i);for(let o of e.columns){let a=o.x+o.width+i;a>e.rowGutterWidth&&a<e.width&&(n.moveTo(a,0),n.lineTo(a,e.height))}for(let o of e.rows){let a=o.y+o.height+i;a>e.headerHeight&&a<e.height&&(n.moveTo(0,a),n.lineTo(e.width,a))}n.stroke()}#l(e){let n=e.selection,r=this.#e,i=this.#t;if(n!==void 0){let u=e.columns.filter(f=>f.index>=n.columnStart&&f.index<n.columnEnd),d=e.rows.filter(f=>f.index>=n.rowStart&&f.index<n.rowEnd);if(u.length>0&&d.length>0){let f=u[0],h=u.at(-1),b=d[0],p=d.at(-1),R=Math.max(e.rowGutterWidth,f.x),y=Math.max(e.headerHeight,b.y),x=Math.min(e.width,h.x+h.width),w=Math.min(e.height,p.y+p.height);x>R&&w>y&&(r.save(),r.fillStyle=i.selectionBackground,this.#r&&(r.globalAlpha=.28),r.fillRect(R,y,x-R,w-y),r.restore(),r.strokeStyle=i.selectionBorder,r.lineWidth=this.#r?2:1,r.setLineDash(this.#r?[4,2]:[]),r.strokeRect(R+r.lineWidth/2,y+r.lineWidth/2,Math.max(0,x-R-r.lineWidth),Math.max(0,w-y-r.lineWidth)),r.setLineDash([]))}}let o=e.activeCell===void 0?[]:e.mergedCells?.filter(u=>e.activeCell.rowIndex>=u.region.rowStart&&e.activeCell.rowIndex<u.region.rowEnd&&e.activeCell.columnIndex>=u.region.columnStart&&e.activeCell.columnIndex<u.region.columnEnd)??[],a=e.activeCell===void 0?void 0:e.columns.find(u=>u.index===e.activeCell.columnIndex),s=e.activeCell===void 0?void 0:e.rows.find(u=>u.index===e.activeCell.rowIndex),l=o.length>0?o:a!==void 0&&s!==void 0?[{x:a.x,y:s.y,width:a.width,height:s.height}]:[];for(let u of l){let d=Math.max(e.rowGutterWidth,u.x),f=Math.max(e.headerHeight,u.y),h=Math.min(e.width,u.x+u.width),b=Math.min(e.height,u.y+u.height);r.strokeStyle=i.activeCellBorder,r.lineWidth=this.#r?3:2,r.setLineDash([]),r.strokeRect(d+r.lineWidth/2,f+r.lineWidth/2,Math.max(0,h-d-r.lineWidth),Math.max(0,b-f-r.lineWidth))}}};function We(t){let e=t?.css?.trim();if(!e)return;let n=globalThis.CSS?.supports;return typeof n!="function"||n("color",e)?e:void 0}function Ji(t){return t!==void 0&&Number.isFinite(t)&&t>0?t:void 0}function eo(t){switch(t?.horizontalAlignment){case"center":return"center";case"right":return"right";default:return"left"}}function to(t){switch(t?.verticalAlignment){case"top":return"top";case"bottom":return"bottom";default:return"middle"}}function no(t,e,n,r){return t==="center"?e+n/2:t==="right"||t==="end"?e+n-r:e+r}function ro(t,e,n,r){return t==="top"||t==="hanging"?e+r:t==="bottom"||t==="ideographic"?e+n-r:e+n/2}function io(t,e,n){return t==="center"?e-n/2:t==="right"||t==="end"?e-n:e}function oo(t){switch(t){case"medium":return 2;case"thick":return 3;case"double":return 1;default:return 1}}function ao(t){return t==="dashed"?[4,2]:t==="dotted"?[1,2]:[]}function so(t,e){return t!==void 0&&Number.isFinite(t)&&t>0?t:e}function xt(t,e,n,r={}){let i=se(r.rowHeight??28,"rowHeight"),o=le(r.headerHeight??36,"headerHeight"),a=le(r.rowHeaderWidth??64,"rowHeaderWidth"),s=se(r.scrollPixelLimit??16e6,"scrollPixelLimit"),l=pe(r.overscanRows??8,"overscanRows"),u=pe(r.overscanColumns??1,"overscanColumns"),d=le(n.width,"viewport.width"),f=le(n.height,"viewport.height"),h=se(n.devicePixelRatio??1,"viewport.devicePixelRatio"),b=t.schema.columns.length;if(e.length!==b)throw c(`columnWidths has ${e.length} entries; expected ${b}`);for(let J=0;J<e.length;J+=1)se(e[J],`columnWidths[${J}]`);let p=r.hiddenColumns??[];if(p.length!==0&&p.length!==b)throw c(`hiddenColumns has ${p.length} entries; expected ${b}`);let R=Object.freeze(e.map((J,Rr)=>p[Rr]===!0?0:J)),y=vt(t.extent.rows),x=Math.min(y,pe(r.frozenRows??0,"frozenRows")),w=Math.min(b,pe(r.frozenColumns??0,"frozenColumns")),S=Math.max(0,d-a),M=Math.max(0,f-o),E=_(R),k=co(y,i,r.rowEntries??[]),Q=E[E.length-1]??0,ce=k.contentSize,$=Dn(Q,S,n.scrollLeft,s),Z=Dn(ce,M,n.scrollTop,s),Qe=jn(k,Z.logicalOffset,M),Ze=Hn(E,$.logicalOffset,S),Mt=Un(Qe,l,y),Pt=Un(Ze,u,b),zt=j(k,x),Bt=E[w]??0,Je=x===0?Object.freeze({start:0,end:0}):_n(jn(k,0,Math.min(M,zt)),x),et=w===0?Object.freeze({start:0,end:0}):_n(Hn(E,0,Math.min(S,Bt)),w);return Object.freeze({width:d,height:f,devicePixelRatio:h,rowHeight:i,headerHeight:o,rowHeaderWidth:a,bodyWidth:S,bodyHeight:M,rowCount:y,columnCount:b,rows:Object.freeze({visible:Qe,overscan:Mt}),columns:Object.freeze({visible:Ze,overscan:Pt}),visibleColumns:Wn(t,R,E,Ze,et,a,$.logicalOffset,w),overscanColumns:Wn(t,R,E,Pt,et,a,$.logicalOffset,w),visibleRows:Vn(k,Qe,Je,o,Z.logicalOffset,x),overscanRows:Vn(k,Mt,Je,o,Z.logicalOffset,x),effectiveColumnWidths:R,rowGeometry:k,frozenRowCount:x,frozenColumnCount:w,frozenRowExtent:zt,frozenColumnExtent:Bt,frozenRowRange:Je,frozenColumnRange:et,horizontal:$,vertical:Z,spacerWidth:a+$.physicalContentSize,spacerHeight:o+Z.physicalContentSize})}function Dn(t,e,n,r=16e6){le(t,"logicalContentSize"),le(e,"logicalViewportSize"),se(r,"pixelLimit");let i=Math.max(0,t-e),o=Math.max(r,e+1),a=Math.min(t,o),s=Math.max(0,a-e),l=Qn(n,0,s),u=i>s,d=s===0?0:u?l/s*i:l;return Object.freeze({logicalContentSize:t,logicalViewportSize:e,logicalOffset:d,logicalMaxOffset:i,physicalContentSize:a,physicalOffset:l,physicalMaxOffset:s,compressed:u})}function Ge(t,e){let n=Qn(e,0,t.logicalMaxOffset);return t.compressed?t.logicalMaxOffset===0?0:n/t.logicalMaxOffset*t.physicalMaxOffset:Math.min(n,t.physicalMaxOffset)}function $n(t,e,n,r,i=6){if(!Number.isFinite(e)||!Number.isFinite(n)||e<0||n<0||e>=t.width||n>=t.height)return Object.freeze({kind:"outside"});let o=t.effectiveColumnWidths;if(e<t.rowHeaderWidth&&n<t.headerHeight)return Object.freeze({kind:"corner"});if(n<t.headerHeight){let l=_(o),u=e-t.rowHeaderWidth+t.horizontal.logicalOffset,d=Yn(l,u),f=Math.max(0,i);for(let b of[d,d-1]){if(b<=0||b>=l.length)continue;let p=t.rowHeaderWidth+l[b]-t.horizontal.logicalOffset;if(Math.abs(e-p)<=f)return Object.freeze({kind:"column-resize",columnIndex:b-1,boundaryX:p})}let h=Fn(t,e,o);return Object.freeze(h===null?{kind:"outside"}:{kind:"column-header",columnIndex:h})}let a=mo(t,n);if(a===null)return Object.freeze({kind:"outside"});if(e<t.rowHeaderWidth)return Object.freeze({kind:"row-header",rowIndex:a});let s=Fn(t,e,o);return Object.freeze(s===null?{kind:"outside"}:{kind:"cell",rowIndex:a,columnIndex:s})}function Gn(t,e,n,r){let i=t.effectiveColumnWidths,o=_(i),a=j(t.rowGeometry,n),s=o[r]??0;return Object.freeze({x:t.rowHeaderWidth+s-(r<t.frozenColumnCount?0:t.horizontal.logicalOffset),y:t.headerHeight+a-(n<t.frozenRowCount?0:t.vertical.logicalOffset),width:i[r]??0,height:ue(t.rowGeometry,n)})}function qn(t,e,n){let r=t.effectiveColumnWidths;if(n.rowStart>=n.rowEnd||n.columnStart>=n.columnEnd)return null;let i=_(r),o=de(n.columnStart,0,r.length),a=de(n.columnEnd,o,r.length),s=de(n.rowStart,0,t.rowCount),l=de(n.rowEnd,s,t.rowCount);if(o===a||s===l)return null;let u=a<=t.frozenColumnCount,d=l<=t.frozenRowCount,f=j(t.rowGeometry,s),h=j(t.rowGeometry,l);return Object.freeze({x:t.rowHeaderWidth+i[o]-(u?0:t.horizontal.logicalOffset),y:t.headerHeight+f-(d?0:t.vertical.logicalOffset),width:i[a]-i[o],height:h-f})}function _(t){let e=new Array(t.length+1);e[0]=0;for(let n=0;n<t.length;n+=1)e[n+1]=e[n]+(t[n]??160);return e}function vt(t){return t.kind==="unknown"?0:t.value}function co(t,e,n=[]){pe(t,"axis count"),se(e,"axis defaultSize");let r=new Map;for(let s of n)if(!(!s||!Number.isSafeInteger(s.index)||s.index<0||s.index>=t)){if(s.hidden===!0){r.set(s.index,0);continue}if(s.size!==void 0){if(!Number.isFinite(s.size)||s.size<0)continue;r.set(s.index,s.size)}}let i=0,o=[...r.entries()].sort(([s],[l])=>s-l).map(([s,l])=>(i+=l-e,Object.freeze({index:s,size:l,cumulativeDelta:i}))),a=t*e+i;return Object.freeze({count:t,defaultSize:e,contentSize:Math.max(0,a),overrides:Object.freeze(o)})}function j(t,e){let n=de(e,0,t.count),r=Kn(t.overrides,n),i=r===0?0:t.overrides[r-1].cumulativeDelta;return n*t.defaultSize+i}function ue(t,e){return!Number.isSafeInteger(e)||e<0||e>=t.count?0:fo(t,e)?.size??t.defaultSize}function $e(t,e){if(!Number.isFinite(e)||e<0||e>=t.contentSize||t.count===0)return null;let n=0,r=t.count;for(;n<r;){let i=Math.floor((n+r)/2);j(t,i+1)<=e?n=i+1:r=i}for(let i=n;i<t.count;i+=1){let o=ue(t,i),a=j(t,i);if(o>0&&e>=a&&e<a+o)return i;if(a>e)return null}return null}function Ct(t,e,n=1){for(let r=de(e,0,Math.max(0,t.count-1));r>=0&&r<t.count;r+=n)if(ue(t,r)>0)return r;return null}function fo(t,e){let n=Kn(t.overrides,e),r=t.overrides[n];return r?.index===e?r:void 0}function Kn(t,e){let n=0,r=t.length;for(;n<r;){let i=Math.floor((n+r)/2);t[i].index<e?n=i+1:r=i}return n}function _n(t,e){return Object.freeze({start:Math.min(t.start,e),end:Math.min(t.end,e)})}function jn(t,e,n){if(t.count===0||n<=0||t.contentSize<=0)return Object.freeze({start:0,end:0});let r=$e(t,e);if(r===null)return Object.freeze({start:t.count,end:t.count});let i=$e(t,Math.max(e,Math.min(t.contentSize,e+n)-Math.max(1e-7,Math.abs(e+n)*Number.EPSILON*4)));return Object.freeze({start:r,end:i===null?r+1:Math.min(t.count,i+1)})}function Hn(t,e,n){let r=Math.max(0,t.length-1);if(r===0||n<=0)return Object.freeze({start:0,end:0});let i=Rt(t,e)??r,o=Math.min(r,Yn(t,e+n));return Object.freeze({start:i,end:Math.max(i,o)})}function Un(t,e,n){return Object.freeze({start:Math.max(0,t.start-e),end:Math.min(n,t.end+e)})}function Wn(t,e,n,r,i,o,a,s){let l=Xn(r,i),u=[];for(let d of l){let f=t.schema.columns[d],h=e[d]??0;if(h<=0)continue;let b=d<s;u.push(Object.freeze({index:d,id:f.id,name:f.name,x:o+n[d]-(b?0:a),width:h,frozen:b}))}return Object.freeze(u)}function Vn(t,e,n,r,i,o){let a=[];for(let s of Xn(e,n)){let l=ue(t,s);if(l<=0)continue;let u=s<o;a.push(Object.freeze({index:s,y:r+j(t,s)-(u?0:i),height:l,frozen:u}))}return Object.freeze(a)}function Xn(t,e){let n=new Set;for(let r=t.start;r<t.end;r+=1)n.add(r);for(let r=e.start;r<e.end;r+=1)n.add(r);return Object.freeze([...n].sort((r,i)=>r-i))}function Fn(t,e,n){if(e<t.rowHeaderWidth)return null;let r=e-t.rowHeaderWidth;if(r<Math.min(t.bodyWidth,t.frozenColumnExtent)){let i=Rt(_(n),r);if(i!==null&&i<t.frozenColumnCount)return i}return Rt(_(n),r+t.horizontal.logicalOffset)}function Rt(t,e){let n=Math.max(0,t.length-1);if(e<0||n===0||e>=t[n])return null;let r=0,i=n;for(;r<i;){let o=Math.floor((r+i)/2);t[o+1]<=e?r=o+1:i=o}return r}function mo(t,e){let n=e-t.headerHeight;if(n<Math.min(t.bodyHeight,t.frozenRowExtent)){let r=$e(t.rowGeometry,n);if(r!==null&&r<t.frozenRowCount)return r}return $e(t.rowGeometry,n+t.vertical.logicalOffset)}function Yn(t,e){let n=0,r=t.length;for(;n<r;){let i=Math.floor((n+r)/2);t[i]<e?n=i+1:r=i}return n}function se(t,e){if(!Number.isFinite(t)||t<=0)throw c(`${e} must be a positive finite number`);return t}function le(t,e){if(!Number.isFinite(t)||t<0)throw c(`${e} must be a non-negative finite number`);return t}function pe(t,e){if(!Number.isSafeInteger(t)||t<0)throw c(`${e} must be a non-negative safe integer`);return t}function Qn(t,e,n){return Number.isFinite(t)?Math.min(n,Math.max(e,t)):e}function de(t,e,n){return Number.isFinite(t)?Math.min(n,Math.max(e,Math.trunc(t))):e}var ho=1e5,Tt=class{#e;#t;#n=new Set;#r;#a={width:0,height:0,scrollLeft:0,scrollTop:0,devicePixelRatio:1};#i;#o;#u=[];#y=0;#c=0;#h=[];#s;#f=null;#d=null;#g=[];#w=[];#b=null;#l=0;#O=!1;#p=!1;#D=!1;constructor(e,n){this.#e=e,this.#t=wo(n),this.#i=Ro(e.metadata,this.#t),this.#o=Array.from({length:this.#i.length},()=>!1);let r=xt(e.metadata,this.#i,this.#a,this.#B());this.#s=Object.freeze({generation:this.#l,status:"loading",metadata:e.metadata,layout:r,activeCell:null,selection:null}),this.#r=e.subscribe(i=>this.#z(i))}get metadata(){return this.#e.metadata}get columnWidths(){return Object.freeze([...this.#i])}get minColumnWidth(){return this.#t.minColumnWidth}get maxColumnWidth(){return this.#t.maxColumnWidth}getSnapshot(){return this.#s}subscribe(e){return this.#E(),this.#n.add(e),()=>this.#n.delete(e)}updateViewport(e){this.#E();let n=vo(e);Ao(n,this.#a)||(this.#a=n,this.#T())}setActiveCell(e,n={}){this.#E(),F(e,"cell");let r=O(e,this.#s.layout.rowCount,this.#s.layout.columnCount);if(r===null)return;let i=this.#I(this.#A(r),1,1);if(i===null)return;let o=n.extendSelection&&this.#d!==null?this.#d.anchor:i;if(this.#f=i,this.#d=Et(o,i,this.#h),n.scrollIntoView!==!1&&this.#m(i)){this.#T();return}this.#x()}extendSelection(e,n={}){this.setActiveCell(e,{...n,extendSelection:!0})}setSelection(e,n=e){this.#E(),F(e,"anchor"),F(n,"focus");let r=O(e,this.#s.layout.rowCount,this.#s.layout.columnCount),i=O(n,this.#s.layout.rowCount,this.#s.layout.columnCount);if(r===null||i===null){this.clearSelection();return}let o=this.#I(this.#A(r),1,1),a=this.#I(this.#A(i),1,1);if(o===null||a===null){this.clearSelection();return}this.#f=a,this.#d=Et(o,a,this.#h),this.#x()}clearSelection(){this.#E(),this.#d!==null&&(this.#d=null,this.#x())}moveActive(e,n={}){this.#E();let r=this.#f??{rowIndex:0,columnIndex:0},i=go(r,e,this.#h),o=zn(i,e,this.#s.layout.rowCount,this.#s.layout.columnCount,Math.max(1,this.#s.layout.visibleRows.filter(u=>!u.frozen).length)),[a,s]=po(e),l=o===null?null:this.#I(this.#A(o),a,s);l!==null&&this.setActiveCell(l,n)}ensureCellVisible(e){this.#E(),F(e,"cell");let n=O(e,this.#s.layout.rowCount,this.#s.layout.columnCount);n!==null&&this.#m(n)&&this.#T()}ensureColumnVisible(e){this.#E(),or(e,this.#i.length),this.#k(e)&&this.#T()}resizeColumn(e,n){this.#E(),or(e,this.#i.length);let r=Ye(n,this.#t);this.#i[e]!==r&&(this.#i[e]=r,this.#T())}autosizeColumn(e,n){this.resizeColumn(e,n)}applySpreadsheetPresentation(e){if(this.#E(),e.kind!=="spreadsheet-v1"||e.tableId!==this.metadata.tableId)throw c("presentation must belong to the controller table");let n=[...this.#i],r=Array.from({length:n.length},()=>!1);for(let i of e.columns)!Number.isSafeInteger(i.index)||i.index<0||i.index>=n.length||(r[i.index]=i.hidden===!0,i.size!==void 0&&Number.isFinite(i.size)&&i.size>0&&(n[i.index]=Ye(i.size,this.#t)));this.#i=n,this.#o=r,this.#u=Object.freeze(e.rows.map(i=>Object.freeze({...i}))),this.#y=e.frozenRows,this.#c=e.frozenColumns,this.#h=[],this.#T(),this.#M(),this.#x()}setMergedCells(e){this.#E();let n=bo(e,this.#s.layout.rowCount,this.#s.layout.columnCount);yo(n,this.#h)||(this.#h=n,this.#M(),this.#T())}hitTest(e,n,r){let i=$n(this.#s.layout,e,n,this.#i,r);if(i.kind!=="cell")return i;let o=this.#A(i);return Object.freeze({kind:"cell",...o})}cellRect(e){if(F(e,"cell"),e.rowIndex>=this.#s.layout.rowCount||e.columnIndex>=this.#s.layout.columnCount)throw c("cell must be inside the current table extent");return Gn(this.#s.layout,this.#i,e.rowIndex,e.columnIndex)}selectionRect(e=this.#d){return e===null?null:qn(this.#s.layout,this.#i,e.range)}getCell(e,n){if(!Io(e,n,this.#s.layout.rowCount,this.#i.length))return Object.freeze({status:"unavailable"});for(let r of this.#g)if(rr(r.range,e,n))return Object.freeze({status:"loaded",value:r.rows[e-r.range.rowStart][n-r.range.columnStart]});for(let r of this.#w)if(rr(r,e,n))return Object.freeze({status:"loading"});return Object.freeze({status:"unavailable"})}async copySelection(e={}){this.#E();let n=this.#d;if(n===null)return"";let r=tr(n.range);ko(r,P,"selection");let i=await this.#e.readRange(r,e.signal?{signal:e.signal}:{});return To(nr(i))}dispose(){this.#p||(this.#p=!0,this.#b?.abort(),this.#b=null,this.#r(),this.#n.clear(),this.#g=[],this.#w=[],this.#s=Object.freeze({...this.#s,status:"closed",activeCell:null,selection:null}))}#T(){this.#l+=1,this.#b?.abort(),this.#b=null,this.#w=[],this.#C("loading"),this.#R()}#R(){this.#O||this.#p||(this.#O=!0,queueMicrotask(()=>{this.#O=!1,this.#p||this.#P(this.#l)}))}async#P(e){let n,r;try{({visible:n,overscan:r}=Co(this.#s.layout,this.#t.maxWindowCells,this.#h))}catch(s){!this.#p&&e===this.#l&&(this.#w=[],this.#C("error",s));return}if(n.length===0){this.#g=[],this.#w=[],this.#C("ready");return}let i=new AbortController;this.#b=i;let o=Object.freeze([...n,...r.filter(s=>!n.some(l=>Xe(s,l)&&dr(s,l)))]);this.#w=Object.freeze(o),this.#x();let a=[];try{for(let s=0;s<o.length;s+=1){let l=o[s],u=await this.#e.readRange(tr(l),{signal:i.signal});if(this.#p||e!==this.#l||i.signal.aborted)return;let d=So(u);d.rowStart<d.rowEnd&&d.columnStart<d.columnEnd&&(a=[Object.freeze({range:d,rows:nr(u)}),...a.filter(h=>!Xe(d,h.range))]),this.#g=Object.freeze([...a]),this.#w=Object.freeze(o.slice(s+1)),this.#C("ready")}}catch(s){if(this.#p||e!==this.#l||i.signal.aborted||s instanceof m&&s.code==="CANCELLED")return;this.#w=[],this.#C("error",s)}finally{this.#b===i&&(this.#b=null)}}#m(e){let n=this.#s.layout,r=_(n.effectiveColumnWidths),i=r[e.columnIndex],o=r[e.columnIndex+1],a=j(n.rowGeometry,e.rowIndex),s=a+ue(n.rowGeometry,e.rowIndex),l=e.columnIndex<n.frozenColumnCount?n.horizontal.logicalOffset:St(n.horizontal.logicalOffset,n.bodyWidth,i,o,n.horizontal.logicalMaxOffset),u=e.rowIndex<n.frozenRowCount?n.vertical.logicalOffset:St(n.vertical.logicalOffset,n.bodyHeight,a,s,n.vertical.logicalMaxOffset),d=Ge(n.horizontal,l),f=Ge(n.vertical,u);return d===this.#a.scrollLeft&&f===this.#a.scrollTop?!1:(this.#a=Object.freeze({...this.#a,scrollLeft:d,scrollTop:f}),!0)}#k(e){let n=this.#s.layout,r=_(n.effectiveColumnWidths),i=e<n.frozenColumnCount?n.horizontal.logicalOffset:St(n.horizontal.logicalOffset,n.bodyWidth,r[e],r[e+1],n.horizontal.logicalMaxOffset),o=Ge(n.horizontal,i);return o===this.#a.scrollLeft?!1:(this.#a=Object.freeze({...this.#a,scrollLeft:o}),!0)}#z(e){if(!this.#p)switch(e.type){case"metadata":{let n=this.#s.metadata;this.#i=xo(n,e.metadata,this.#i,this.#t);let r=new Map(n.schema.columns.map((i,o)=>[i.id,this.#o[o]===!0]));this.#o=e.metadata.schema.columns.map(i=>r.get(i.id)===!0),this.#T(),this.#S(),this.#x();break}case"runtimeError":this.#b?.abort(),this.#b=null,this.#w=[],this.#C("error",e.error);break;case"closed":this.#D=!0,this.#b?.abort(),this.#b=null,this.#w=[],this.#s.status!=="error"&&this.#C("closed");break;case"warning":break}}#S(){if(this.#f===null)return;let e=vt(this.#e.metadata.extent.rows),n=this.#e.metadata.schema.columns.length,r=O(this.#f,e,n),i=r===null?null:this.#I(this.#A(r),1,1);if(i===null){this.#f=null,this.#d=null;return}if(this.#f=i,this.#d!==null){let o=O(this.#d.anchor,e,n),a=O(this.#d.focus,e,n),s=this.#I(this.#A(o),1,1),l=this.#I(this.#A(a),1,1);this.#d=s===null||l===null?null:Et(s,l,this.#h)}}#B(){return Object.freeze({...this.#t,rowEntries:this.#u,hiddenColumns:this.#o,frozenRows:this.#y,frozenColumns:this.#c})}#A(e){let n=sr(this.#h,e);return Object.freeze(n===void 0?{rowIndex:e.rowIndex,columnIndex:e.columnIndex}:{rowIndex:n.rowStart,columnIndex:n.columnStart})}#I(e,n,r){let i=this.#s.layout,o=Ct(i.rowGeometry,e.rowIndex,n)??Ct(i.rowGeometry,e.rowIndex,n===1?-1:1);if(o===null)return null;let a=Zn(i.effectiveColumnWidths,e.columnIndex,r)??Zn(i.effectiveColumnWidths,e.columnIndex,r===1?-1:1);return a===null?null:Object.freeze({rowIndex:o,columnIndex:a})}#M(){this.#S()}#C(e,n){let r=xt(this.#e.metadata,this.#i,this.#a,this.#B());this.#a=Object.freeze({...this.#a,scrollLeft:r.horizontal.physicalOffset,scrollTop:r.vertical.physicalOffset}),this.#s=Object.freeze({generation:this.#l,status:e,metadata:this.#e.metadata,layout:r,activeCell:this.#f,selection:this.#d,...n===void 0?{}:{error:n}}),this.#v()}#x(){this.#s=Object.freeze({...this.#s,activeCell:this.#f,selection:this.#d}),this.#v()}#v(){for(let e of this.#n)try{e(this.#s)}catch(n){typeof reportError=="function"&&reportError(n)}}#E(){if(this.#p||this.#D||this.#s.status==="closed")throw C("Table view controller")}};function ar(t,e={}){if(!t||typeof t.readRange!="function"||typeof t.subscribe!="function")throw c("table must be a TableHandle");return new Tt(t,e)}function bo(t,e,n){let r=new Map;for(let i of t){if(!i||!Number.isSafeInteger(i.rowStart)||!Number.isSafeInteger(i.rowEnd)||!Number.isSafeInteger(i.columnStart)||!Number.isSafeInteger(i.columnEnd)||i.rowStart<0||i.columnStart<0||i.rowEnd<=i.rowStart||i.columnEnd<=i.columnStart||i.rowEnd>e||i.columnEnd>n)continue;let o=Object.freeze({...i});r.set(Ot(o),o)}return Object.freeze([...r.values()].sort((i,o)=>i.rowStart-o.rowStart||i.columnStart-o.columnStart||i.rowEnd-o.rowEnd||i.columnEnd-o.columnEnd))}function yo(t,e){return t.length===e.length&&t.every((n,r)=>Ot(n)===Ot(e[r]))}function Ot(t){return`${t.rowStart}:${t.rowEnd}:${t.columnStart}:${t.columnEnd}`}function sr(t,e){return t.find(n=>e.rowIndex>=n.rowStart&&e.rowIndex<n.rowEnd&&e.columnIndex>=n.columnStart&&e.columnIndex<n.columnEnd)}function Et(t,e,n){let r=Mn(t,e),i=r.range;for(;;){let o=i;for(let a of n)lr(o,a)&&(o=Object.freeze({rowStart:Math.min(o.rowStart,a.rowStart),rowEnd:Math.max(o.rowEnd,a.rowEnd),columnStart:Math.min(o.columnStart,a.columnStart),columnEnd:Math.max(o.columnEnd,a.columnEnd)}));if(dr(i,o))break;i=o}return Object.freeze({...r,range:i})}function lr(t,e){return t.rowStart<e.rowEnd&&t.rowEnd>e.rowStart&&t.columnStart<e.columnEnd&&t.columnEnd>e.columnStart}function go(t,e,n){let r=sr(n,t);return r===void 0?t:e==="right"?Object.freeze({rowIndex:t.rowIndex,columnIndex:r.columnEnd-1}):e==="down"||e==="page-down"?Object.freeze({rowIndex:r.rowEnd-1,columnIndex:t.columnIndex}):t}function po(t){switch(t){case"left":case"row-start":return[1,-1];case"up":case"page-up":return[-1,1];case"table-start":return[-1,-1];default:return[1,1]}}function Zn(t,e,n){for(let r=Math.min(t.length-1,Math.max(0,e));r>=0&&r<t.length;r+=n)if((t[r]??0)>0)return r;return null}function wo(t){let e=Ke(t.minColumnWidth??64,"minColumnWidth"),n=Ke(t.maxColumnWidth??640,"maxColumnWidth");if(n<e)throw c("maxColumnWidth must be greater than or equal to minColumnWidth");let r=Mo(t.maxWindowCells??ho,"maxWindowCells");if(r>P)throw c(`maxWindowCells cannot exceed ${P}`);return Object.freeze({...t.rowHeight===void 0?{}:{rowHeight:t.rowHeight},...t.headerHeight===void 0?{}:{headerHeight:t.headerHeight},...t.rowHeaderWidth===void 0?{}:{rowHeaderWidth:t.rowHeaderWidth},...t.scrollPixelLimit===void 0?{}:{scrollPixelLimit:t.scrollPixelLimit},...t.overscanRows===void 0?{}:{overscanRows:t.overscanRows},...t.overscanColumns===void 0?{}:{overscanColumns:t.overscanColumns},columnWidth:Ke(t.columnWidth??160,"columnWidth"),minColumnWidth:e,maxColumnWidth:n,columnWidths:Object.freeze({...t.columnWidths??{}}),maxWindowCells:r})}function Ro(t,e){return t.schema.columns.map(n=>Ye(e.columnWidths[n.id]??e.columnWidth,e))}function xo(t,e,n,r){let i=new Map(t.schema.columns.map((o,a)=>[o.id,n[a]]));return e.schema.columns.map(o=>Ye(i.get(o.id)??r.columnWidths[o.id]??r.columnWidth,r))}function vo(t){return Object.freeze({width:qe(t.width,"viewport.width"),height:qe(t.height,"viewport.height"),scrollLeft:qe(t.scrollLeft,"viewport.scrollLeft"),scrollTop:qe(t.scrollTop,"viewport.scrollTop"),devicePixelRatio:Ke(t.devicePixelRatio??1,"viewport.devicePixelRatio")})}function Co(t,e,n=[]){let r=Jn(t.rows.visible,t.columns.visible,t.frozenRowRange,t.frozenColumnRange),i=Eo(n,r),o=Object.freeze([...r,...i.filter(d=>!r.some(f=>Xe(f,d)))]),a=o.reduce((d,f)=>d+ir(f),0);if(a>e)throw new m("RESOURCE_LIMIT",`The viewport contains ${a} cells; the window limit is ${e}`,{details:{resource:"viewport-cells",required:a,available:e,visibleCellCount:a,maxCells:e}});let s=Jn(t.rows.overscan,t.columns.overscan,t.frozenRowRange,t.frozenColumnRange),l=s.reduce((d,f)=>d+ir(f),0),u=Object.freeze([...s,...i.filter(d=>!s.some(f=>Xe(f,d)))]);return Object.freeze({visible:o,overscan:l+i.length<=e?u:o})}function Eo(t,e){let n=new Map;for(let r of t){if(!e.some(o=>lr(o,r)))continue;let i=Object.freeze({rowStart:r.rowStart,rowEnd:r.rowStart+1,columnStart:r.columnStart,columnEnd:r.columnStart+1});n.set(`${i.rowStart}:${i.columnStart}`,i)}return Object.freeze([...n.values()])}function Jn(t,e,n,r){let i=er(t,n),o=er(e,r),a=[];for(let s of i)for(let l of o)a.push(Object.freeze({rowStart:s.start,rowEnd:s.end,columnStart:l.start,columnEnd:l.end}));return Object.freeze(a)}function er(t,e){let n=[t,e].filter(o=>o.start<o.end).sort((o,a)=>o.start-a.start);if(n.length<=1)return Object.freeze(n.map(o=>Object.freeze({...o})));let[r,i]=n;return r.end>=i.start?Object.freeze([Object.freeze({start:r.start,end:Math.max(r.end,i.end)})]):Object.freeze(n.map(o=>Object.freeze({...o})))}function tr(t){return Object.freeze({rowStart:t.rowStart,rowCount:t.rowEnd-t.rowStart,columnStart:t.columnStart,columnCount:t.columnEnd-t.columnStart})}function So(t){return Object.freeze({rowStart:t.range.rowStart,rowEnd:t.range.rowStart+t.range.rowCount,columnStart:t.range.columnStart,columnEnd:t.range.columnStart+t.range.columnCount})}function nr(t){return Object.freeze(t.toDisplayRows({maxCells:Math.max(1,t.range.rowCount*t.range.columnCount)}).map(e=>Object.freeze(e)))}function To(t){return t.map(e=>e.map(Oo).join(" ")).join(`
|
|
2
|
+
`)}function Oo(t){return t===null?"":/[\t\r\n"]/.test(t)?`"${t.replaceAll('"','""')}"`:t}function St(t,e,n,r,i){return e<=0||n<t?Math.min(i,Math.max(0,n)):r>t+e?Math.min(i,Math.max(0,r-e)):t}function rr(t,e,n){return e>=t.rowStart&&e<t.rowEnd&&n>=t.columnStart&&n<t.columnEnd}function Xe(t,e){return e.rowStart>=t.rowStart&&e.rowEnd<=t.rowEnd&&e.columnStart>=t.columnStart&&e.columnEnd<=t.columnEnd}function ir(t){return(t.rowEnd-t.rowStart)*(t.columnEnd-t.columnStart)}function dr(t,e){return e!==null&&t.rowStart===e.rowStart&&t.rowEnd===e.rowEnd&&t.columnStart===e.columnStart&&t.columnEnd===e.columnEnd}function Ao(t,e){return t.width===e.width&&t.height===e.height&&t.scrollLeft===e.scrollLeft&&t.scrollTop===e.scrollTop&&t.devicePixelRatio===e.devicePixelRatio}function Io(t,e,n,r){return Number.isSafeInteger(t)&&t>=0&&t<n&&Number.isSafeInteger(e)&&e>=0&&e<r}function or(t,e){if(!Number.isSafeInteger(t)||t<0||t>=e)throw c(`columnIndex must be between 0 and ${Math.max(0,e-1)}`)}function ko(t,e,n){let r=t.rowCount*t.columnCount;if(!Number.isSafeInteger(r)||r>e)throw new m("RESOURCE_LIMIT",`The ${n} contains ${r} cells; the limit is ${e}`,{details:{resource:"view-window-cells",required:r,available:e,cells:r,limit:e}})}function Ye(t,e){if(!Number.isFinite(t))throw c("column width must be a finite number");return Math.min(e.maxColumnWidth,Math.max(e.minColumnWidth,t))}function Ke(t,e){if(!Number.isFinite(t)||t<=0)throw c(`${e} must be a positive finite number`);return t}function qe(t,e){if(!Number.isFinite(t)||t<0)throw c(`${e} must be a non-negative finite number`);return t}function Mo(t,e){if(!Number.isSafeInteger(t)||t<=0)throw c(`${e} must be a positive safe integer`);return t}var At=8,we=44,Po=8,zo=32,Bo=24,No=1e5,Lo=Object.freeze({background:"#182235",foreground:"#edf0f7",mutedForeground:"#b5c0d4",headerBackground:"#202c42",headerForeground:"#edf0f7",alternateRowBackground:"#202c42",gridLine:"#526079",selectionBackground:"rgba(167, 139, 250, 0.24)",selectionBorder:"#a78bfa",activeCellBorder:"#c4b5fd",loadingBackground:"#526079",font:'13px ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif',headerFont:'600 13px ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif'}),ur=1,kt=class{element;controller;#e;#t;#n;#r;#a;#i;#o;#u;#y;#c;#h;#s;#f;#d;#g;#w;#b;#l;#O;#p;#D;#T=new Map;#R;#P=0;#m=null;#k=null;#z=0;#S=!1;#B="light";#A=null;#I=[];#M=[];#C="";#x=null;#v=!1;constructor(e){let n=e.container.ownerDocument,r=n.defaultView;if(r===null)throw c("container must belong to an active browser document");this.#c=r;let i=e.presentation??"auto";if(i!=="auto"&&i!=="ignore")throw c("presentation must be auto or ignore");let o=e.colorScheme??"light";if(o!=="auto"&&o!=="light"&&o!=="dark")throw c("colorScheme must be auto, light, or dark");this.#h=e.table!==void 0,this.controller=e.controller??ar(e.table,e.controllerOptions),this.#R=this.controller.getSnapshot(),this.#s=e.writeClipboard,this.#f=e.onError,this.#b=i==="auto"?e.table:void 0,this.#g=o,this.#d=Object.freeze({...e.theme}),this.#O=r.matchMedia("(forced-colors: active)"),this.#S=this.#O.matches,this.#w=o==="auto"?r.matchMedia("(prefers-color-scheme: dark)"):void 0,this.#B=o==="dark"||o==="auto"&&this.#w?.matches===!0?"dark":"light",this.#l=this.#ie(),this.element=n.createElement("div"),this.element.className="tabulark-view",this.element.dataset.tabularkView="",this.element.setAttribute("aria-label",e.ariaLabel??this.#oe()),Object.assign(this.element.style,{background:this.#l.background,border:`1px solid ${this.#l.gridLine}`,borderRadius:"6px",boxSizing:"border-box",color:this.#l.foreground,contain:"layout paint style",height:"100%",minHeight:"120px",minWidth:"0",overflow:"hidden",position:"relative",width:"100%"}),this.#e=n.createElement("div"),this.#e.className="tabulark-scroll",this.#e.dataset.tabularkScroll="",this.#e.tabIndex=-1,Object.assign(this.#e.style,{inset:"0",overflow:"auto",overscrollBehavior:"contain",position:"absolute",scrollbarGutter:"stable"}),this.#t=n.createElement("div"),this.#t.className="tabulark-scroll-spacer",this.#t.dataset.tabularkScrollSpacer="",this.#t.setAttribute("aria-hidden","true"),Object.assign(this.#t.style,{left:"0",pointerEvents:"none",position:"absolute",top:"0"}),this.#n=n.createElement("div"),this.#n.className="tabulark-surface",this.#n.dataset.tabularkSurface="",Object.assign(this.#n.style,{left:"0",position:"sticky",top:"0",userSelect:"none",zIndex:"1"}),this.#r=n.createElement("canvas"),this.#r.className="tabulark-canvas",this.#r.dataset.tabularkCanvas="",this.#r.setAttribute("aria-hidden","true"),this.#r.draggable=!1,Object.assign(this.#r.style,{cursor:"default",display:"block",touchAction:"pan-x pan-y"}),this.#a=n.createElement("div"),this.#a.className="tabulark-resize-layer",Object.assign(this.#a.style,{left:"0",pointerEvents:"none",position:"absolute",top:"0",width:"100%"}),this.#i=n.createElement("div"),this.#i.id=`tabulark-resize-instructions-${ur}`,ur+=1,this.#i.textContent="Use Left and Right Arrow keys to resize. Hold Shift for larger steps. Home and End use the minimum and maximum widths. Enter fits the visible content.",Vo(this.#i),this.#o=n.createElement("div"),this.#o.className="tabulark-message",this.#o.dataset.tabularkMessage="",this.#o.setAttribute("aria-hidden","true"),Object.assign(this.#o.style,{alignItems:"center",background:this.#l.background,color:this.#l.mutedForeground,display:"none",font:this.#l.font,inset:"0",justifyContent:"center",padding:"24px",pointerEvents:"none",position:"absolute",textAlign:"center",zIndex:"2"}),this.#u=new Ue(n,e.ariaLabel??this.#oe()),this.#y=new Ve(this.#r,{theme:this.#l,forcedColors:this.#S,...e.maxDevicePixelRatio===void 0?{}:{maxDevicePixelRatio:e.maxDevicePixelRatio}}),this.#re(),this.#n.append(this.#r,this.#a),this.#e.append(this.#t,this.#n),this.element.append(this.#e,this.#o,this.#u.element,this.#u.statusElement,this.#i),e.container.append(this.element),this.#p=this.controller.subscribe(a=>{this.#R=a,this.#L()&&(this.#a.contains(this.element.ownerDocument.activeElement)&&this.#u.focus({preventScroll:!0}),this.#ue(),this.#k?.abort(),this.#k=null),this.#ae(),this.#H()}),this.#e.addEventListener("scroll",this.#E,{passive:!0}),this.#n.addEventListener("pointerdown",this.#_),this.#n.addEventListener("pointermove",this.#q),this.#n.addEventListener("pointerup",this.#U),this.#n.addEventListener("pointercancel",this.#U),this.#n.addEventListener("dblclick",this.#K),this.element.addEventListener("keydown",this.#N),this.element.addEventListener("focusin",this.#G),this.element.addEventListener("focusout",this.#W),br(this.#O,this.#F),this.#w!==void 0&&br(this.#w,this.#$),typeof r.ResizeObserver=="function"?(this.#D=new r.ResizeObserver(()=>this.#j()),this.#D.observe(this.#e)):r.addEventListener("resize",this.#V),this.#j(),this.#H(),this.#b!==void 0&&this.#ce(this.#b)}focus(e){this.#Se(),this.#u.focus(e)}destroy(){this.#v||(this.#v=!0,this.#x?.abort(),this.#x=null,this.#k?.abort(),this.#k=null,this.#P!==0&&(this.#c.cancelAnimationFrame(this.#P),this.#P=0),this.#z!==0&&(this.#c.cancelAnimationFrame(this.#z),this.#z=0),this.#D?.disconnect(),this.#c.removeEventListener("resize",this.#V),this.#p(),this.#e.removeEventListener("scroll",this.#E),this.#n.removeEventListener("pointerdown",this.#_),this.#n.removeEventListener("pointermove",this.#q),this.#n.removeEventListener("pointerup",this.#U),this.#n.removeEventListener("pointercancel",this.#U),this.#n.removeEventListener("dblclick",this.#K),this.element.removeEventListener("keydown",this.#N),this.element.removeEventListener("focusin",this.#G),this.element.removeEventListener("focusout",this.#W),yr(this.#O,this.#F),this.#w!==void 0&&yr(this.#w,this.#$),this.#u.destroy(),this.element.remove(),this.#h&&this.controller.dispose())}dispose(){this.destroy()}#E=()=>{this.#j()};#V=()=>{this.#j()};#F=e=>{this.#v||(this.#S=e.matches,this.#l=this.#ie(),this.#y.setTheme(this.#l,{forcedColors:this.#S}),this.#re(),this.#H())};#$=e=>{this.#v||this.#g!=="auto"||(this.#B=e.matches?"dark":"light",this.#l=this.#ie(),this.#y.setTheme(this.#l,{forcedColors:this.#S}),this.#re(),this.#H())};#G=e=>{this.element.style.outline=`2px solid ${this.#Z()}`,this.element.style.outlineOffset="-2px";let n=this.#Q(e.target);if(n!==null){n.style.outline=`2px solid ${this.#Z()}`,n.style.outlineOffset="-2px";return}!this.#L()&&this.#R.activeCell===null&&this.#Ce()&&e.target===this.#u.element&&this.controller.setActiveCell({rowIndex:0,columnIndex:0})};#W=e=>{let n=this.#Q(e.target);n!==null&&(n.style.outline="none"),queueMicrotask(()=>{!this.#v&&!this.element.contains(this.element.ownerDocument.activeElement)&&(this.element.style.outline="none")})};#_=e=>{if(e.button!==0||this.#L())return;let n=this.#Y(e),r=this.#te(e.target),i=r===null?this.controller.hitTest(n.x,n.y,At/2):{kind:"column-resize",columnIndex:r,boundaryX:n.x};if(i.kind==="column-resize"){e.preventDefault(),this.#m=Object.freeze({kind:"resize",pointerId:e.pointerId,columnIndex:i.columnIndex,startClientX:e.clientX,startWidth:this.controller.columnWidths[i.columnIndex]}),this.#n.setPointerCapture(e.pointerId),this.#n.style.cursor="col-resize";return}let o=this.#Re(i);o!==null&&(this.focus({preventScroll:!0}),this.controller.setActiveCell(o,{extendSelection:e.shiftKey,scrollIntoView:!1}),e.pointerType!=="touch"&&(this.#m=Object.freeze({kind:"select",pointerId:e.pointerId,anchor:e.shiftKey&&this.#R.selection!==null?this.#R.selection.anchor:o}),this.#n.setPointerCapture(e.pointerId)))};#q=e=>{if(this.#L()){this.#ue();return}if(this.#m?.pointerId===e.pointerId){if(this.#m.kind==="resize"){let a=e.clientX-this.#m.startClientX;this.controller.resizeColumn(this.#m.columnIndex,this.#m.startWidth+a);return}let i=this.#Y(e),o=this.controller.hitTest(i.x,i.y,0);o.kind==="cell"&&this.controller.setSelection(this.#m.anchor,{rowIndex:o.rowIndex,columnIndex:o.columnIndex});return}let n=this.#Y(e),r=this.controller.hitTest(n.x,n.y,At/2);this.#n.style.cursor=r.kind==="column-resize"?"col-resize":"default"};#U=e=>{if(this.#m?.pointerId!==e.pointerId)return;let n=this.#m.kind==="resize"?this.#m.columnIndex:null;this.#n.hasPointerCapture(e.pointerId)&&this.#n.releasePointerCapture(e.pointerId),this.#m=null,this.#n.style.cursor="default",n!==null&&(this.controller.ensureColumnVisible(n),this.#ne(n,!1))};#K=e=>{if(this.#L())return;let n=this.#Y(e),r=this.#te(e.target),i=r===null?this.controller.hitTest(n.x,n.y,At/2):{kind:"column-resize",columnIndex:r};i.kind==="column-resize"&&(e.preventDefault(),this.controller.autosizeColumn(i.columnIndex,this.#de(i.columnIndex)),this.controller.ensureColumnVisible(i.columnIndex),this.#ne(i.columnIndex,!0))};#N=e=>{let n=this.#te(e.target);if(n!==null&&(this.#X(e,n)||gr(e)!==null)||this.#L()||e.altKey)return;if((e.ctrlKey||e.metaKey)&&e.key.toLowerCase()==="c"){e.preventDefault(),this.#xe();return}if(e.key==="Escape"){e.preventDefault(),this.controller.clearSelection();return}let r=gr(e);r!==null&&(e.preventDefault(),this.controller.moveActive(r,{extendSelection:e.shiftKey,scrollIntoView:!0}))};#X(e,n){if(this.#L()||e.altKey||e.ctrlKey||e.metaKey)return!1;let r=this.controller.columnWidths[n];if(r===void 0)return!1;let i=e.shiftKey?zo:Po,o=null;switch(e.key){case"ArrowLeft":o=r-i;break;case"ArrowRight":o=r+i;break;case"Home":o=this.controller.minColumnWidth;break;case"End":o=this.controller.maxColumnWidth;break;case"Enter":o=this.#de(n);break;default:return!1}return e.preventDefault(),e.stopPropagation(),e.key==="Enter"?this.controller.autosizeColumn(n,o):this.controller.resizeColumn(n,o),this.controller.ensureColumnVisible(n),this.#ne(n,e.key==="Enter"),!0}#j(){if(this.#L())return;let e=this.#e.clientWidth,n=this.#e.clientHeight;this.#n.style.width=`${e}px`,this.#n.style.height=`${n}px`,this.controller.updateViewport({width:e,height:n,scrollLeft:this.#e.scrollLeft,scrollTop:this.#e.scrollTop,devicePixelRatio:this.#c.devicePixelRatio||1})}#H(){this.#v||this.#P!==0||(this.#P=this.#c.requestAnimationFrame(()=>{this.#P=0,this.#me()}))}async#ce(e){try{let n=await e.getPresentation();if(this.#v||n===null)return;this.#A=n,this.#fe(n)}catch(n){this.#v||this.#f?.(n)}}#fe(e){this.element.dataset.tabularkPresentation=e.kind,this.element.dataset.tabularkWorksheetVisibility=e.visibility,this.element.dataset.tabularkFrozenRows=String(e.frozenRows),this.element.dataset.tabularkFrozenColumns=String(e.frozenColumns),this.controller.applySpreadsheetPresentation(e),this.#ae(),this.#H()}#ae(){let e=this.#b,n=this.#A;if(this.#v||e===void 0||n===null)return;let r=jo(this.#R.layout),i=`${n.tableId}:${n.revision}:${r.map(Ho).join("|")}`;if(i===this.#C)return;if(this.#C=i,this.#x?.abort(),this.#x=null,r.length===0){this.#I=[],this.#M=[],this.controller.setMergedCells([]),this.#H();return}let o=new AbortController;this.#x=o,(async()=>{let a=await Promise.all(r.map(d=>e.readPresentationRange(d,{signal:o.signal}))),s=a.filter(d=>d!==null&&d.revision===n.revision),l=Wo(hr(s),s),u=await Promise.all(l.map(d=>e.readPresentationRange(d,{signal:o.signal})));return[...a,...u]})().then(a=>{this.#v||o.signal.aborted||this.#x!==o||this.#C!==i||(this.#x=null,this.#I=Object.freeze(a.filter(s=>s!==null&&s.revision===n.revision)),this.#M=hr(this.#I),this.controller.setMergedCells(this.#M),this.#H())}).catch(a=>{this.#x===o&&(this.#x=null),!(this.#v||o.signal.aborted||a instanceof m&&a.code==="CANCELLED")&&this.#f?.(a)})}#J(){return this.#M}#me(){if(this.#v)return;let e=this.#R,n=e.layout;this.#t.style.width=`${Math.max(n.width,n.spacerWidth)}px`,this.#t.style.height=`${Math.max(n.height,n.spacerHeight)}px`,this.#n.style.width=`${n.width}px`,this.#n.style.height=`${n.height}px`,this.#we(e);let r=n.overscanColumns.map(a=>({index:a.index,name:a.name,x:a.x,width:a.width,frozen:a.frozen})),i=this.#he(e,r),o=this.#be();this.#y.paint({width:n.width,height:n.height,headerHeight:n.headerHeight,rowGutterWidth:n.rowHeaderWidth,columns:r,rows:i,mergedCells:o,...e.selection===null?{}:{selection:e.selection.range},...e.activeCell===null?{}:{activeCell:{rowIndex:e.activeCell.rowIndex,columnIndex:e.activeCell.columnIndex}},busy:e.status==="loading"}),this.#ye(e),this.#ge(e),this.#pe(e)}#he(e,n){let r=e.layout,i=[];for(let o of r.overscanRows){let a=o.index;i.push({index:a,y:o.y,height:o.height,frozen:o.frozen,cells:n.map(s=>{let l=this.controller.getCell(a,s.index);return{columnIndex:s.index,value:l.status==="loaded"?l.value:void 0,...this.#ee(a,s.index)===void 0?{}:{style:this.#ee(a,s.index)},...this.#se(a,s.index)===void 0?{}:{coveredByMerge:!0}}})})}return i}#be(){let e=[],n=this.#R.layout;for(let r of this.#J()){let i=this.controller.getCell(r.rowStart,r.columnStart),o=this.#ee(r.rowStart,r.columnStart);for(let a of Do(r,n.frozenRowCount,n.frozenColumnCount)){let s=this.controller.cellRect({rowIndex:a.rowStart,columnIndex:a.columnStart}),l=this.controller.cellRect({rowIndex:a.rowEnd-1,columnIndex:a.columnEnd-1}),u=_o(n,a),d=Math.max(s.x,u.left),f=Math.max(s.y,u.top),h=Math.min(l.x+l.width,u.right),b=Math.min(l.y+l.height,u.bottom);h<=d||b<=f||e.push(Object.freeze({region:r,x:d,y:f,width:h-d,height:b-f,value:i.status==="loaded"?i.value:void 0,...o===void 0?{}:{style:o},...a.rowStart===r.rowStart&&a.columnStart===r.columnStart?{}:{continuation:!0}}))}}return Object.freeze(e)}#ee(e,n){let r=this.#A;if(r!==null)for(let i of this.#I){let o=i.range;if(e<o.rowStart||e>=o.rowStart+o.rowCount||n<o.columnStart||n>=o.columnStart+o.columnCount)continue;let a=i.styleIds[e-o.rowStart]?.[n-o.columnStart];return a==null?void 0:r.styles[a]}}#se(e,n){return this.#J().find(r=>e>=r.rowStart&&e<r.rowEnd&&n>=r.columnStart&&n<r.columnEnd)}#ye(e){let n=new Set;if(this.#L()){this.#le(n);return}for(let r of e.layout.visibleColumns){let i=r.x+r.width;if(i<e.layout.rowHeaderWidth||i>e.layout.width)continue;n.add(r.id);let o=this.#T.get(r.id);if(o===void 0){o=this.element.ownerDocument.createElement("div"),o.setAttribute("role","separator"),o.setAttribute("aria-orientation","vertical"),o.setAttribute("aria-controls",this.#u.element.id),o.setAttribute("aria-describedby",this.#i.id),o.setAttribute("aria-keyshortcuts","ArrowLeft ArrowRight Home End Enter"),o.tabIndex=0,Object.assign(o.style,{background:"transparent",boxSizing:"border-box",cursor:"col-resize",outline:"none",pointerEvents:"auto",position:"absolute",top:"0",touchAction:"none",width:`${we}px`});let s=this.element.ownerDocument.createElement("div");s.dataset.tabularkResizeLine="",s.setAttribute("aria-hidden","true"),Object.assign(s.style,{pointerEvents:"none",position:"absolute",top:"0"}),o.append(s),this.#T.set(r.id,o),this.#a.append(o)}o.dataset.columnResize=String(r.index),o.dataset.columnId=r.id,o.setAttribute("aria-label",`Resize ${r.name} column`),o.setAttribute("aria-valuemin",String(this.controller.minColumnWidth)),o.setAttribute("aria-valuemax",String(this.controller.maxColumnWidth)),o.setAttribute("aria-valuenow",String(r.width)),o.setAttribute("aria-valuetext",`${pr(r.width)} CSS pixels`),Object.assign(o.style,{height:`${Math.max(we,e.layout.headerHeight)}px`,left:`${i-we/2}px`});let a=o.firstElementChild;a!==null&&Object.assign(a.style,{background:this.#l.gridLine,height:`${e.layout.headerHeight}px`,left:`${(we-(this.#S?2:1))/2}px`,width:`${this.#S?2:1}px`})}this.#a.style.height=`${Math.max(we,e.layout.headerHeight)}px`,this.#le(n)}#le(e){for(let[n,r]of this.#T)e.has(n)||(r.contains(this.element.ownerDocument.activeElement)&&this.#u.focus({preventScroll:!0}),r.remove(),this.#T.delete(n))}#ge(e){let n=e.layout,r=new Set(n.visibleRows.map(d=>d.index)),i=new Set(n.visibleColumns.map(d=>d.index)),o=this.#J().filter(d=>n.visibleRows.some(f=>f.index>=d.rowStart&&f.index<d.rowEnd)&&n.visibleColumns.some(f=>f.index>=d.columnStart&&f.index<d.columnEnd)),a=new Set(i),s=new Set(r);for(let d of o)a.add(d.columnStart),s.add(d.rowStart);let l=[...a].sort((d,f)=>d-f).map(d=>({index:d,name:e.metadata.schema.columns[d]?.name??`Column ${d+1}`})),u=[];for(let d of[...s].sort((f,h)=>f-h)){let f=new Set;if(r.has(d))for(let h of i)f.add(h);for(let h of o)h.rowStart===d&&f.add(h.columnStart);u.push({index:d,cells:[...f].sort((h,b)=>h-b).flatMap(h=>{let b=this.#se(d,h);if(b!==void 0&&(d!==b.rowStart||h!==b.columnStart))return[];let p=this.controller.getCell(d,h);return[{rowIndex:d,columnIndex:h,value:p.status==="loaded"?p.value:void 0,selected:e.selection!==null&&Pn(e.selection.range,{rowIndex:d,columnIndex:h}),active:e.activeCell?.rowIndex===d&&e.activeCell.columnIndex===h,...b===void 0?{}:{rowSpan:b.rowEnd-b.rowStart,columnSpan:b.columnEnd-b.columnStart}}]})})}this.#u.update({label:this.#oe(),...e.metadata.extent.rows.kind==="exact"?{exactRowCount:e.metadata.extent.rows.value}:{},columnCount:n.columnCount,columns:l,rows:u,busy:e.status==="loading",status:this.#ve(e)})}#pe(e){let n="";e.status==="error"?n=`Unable to render table: ${It(e.error)}`:e.status==="closed"?n="Table closed.":e.layout.rowCount===0&&e.status==="ready"?n="No rows to display.":e.status==="loading"&&e.layout.rows.visible.start===e.layout.rows.visible.end&&(n="Loading data\u2026"),this.#o.textContent=n,this.#o.style.display=n===""?"none":"flex"}#we(e){let n=e.layout.horizontal.physicalOffset,r=e.layout.vertical.physicalOffset;Math.abs(this.#e.scrollLeft-n)>.5&&(this.#e.scrollLeft=n),Math.abs(this.#e.scrollTop-r)>.5&&(this.#e.scrollTop=r)}#Re(e){return e.kind==="cell"?Object.freeze({rowIndex:e.rowIndex,columnIndex:e.columnIndex}):e.kind==="row-header"&&this.#R.layout.columnCount>0?Object.freeze({rowIndex:e.rowIndex,columnIndex:this.#R.activeCell?.columnIndex??0}):e.kind==="column-header"&&this.#R.layout.rowCount>0?Object.freeze({rowIndex:this.#R.activeCell?.rowIndex??0,columnIndex:e.columnIndex}):null}#Y(e){let n=this.#n.getBoundingClientRect();return Object.freeze({x:e.clientX-n.left,y:e.clientY-n.top})}#te(e){let n=this.#Q(e);if(n===null)return null;let r=n.dataset.columnResize;if(r===void 0)return null;let i=Number(r);return Number.isSafeInteger(i)?i:null}#Q(e){if(!(e instanceof this.#c.HTMLElement))return null;let n=e.closest("[data-column-resize]");return n instanceof this.#c.HTMLDivElement&&this.#a.contains(n)?n:null}#de(e){let n=this.#r.getContext("2d");if(n===null)return this.controller.columnWidths[e];let r=this.#R.metadata.schema.columns[e];if(r===void 0)return this.controller.columnWidths[e];n.save(),n.font=this.#l.headerFont;let i=n.measureText(r.name).width;n.font=this.#l.font;let o=this.#R.layout.rows.visible;for(let a=o.start;a<o.end;a+=1){let s=this.controller.getCell(a,e);s.status==="loaded"&&(i=Math.max(i,n.measureText(s.value??"\u2205").width))}return n.restore(),Math.ceil(i+Bo)}async#xe(){this.#k?.abort();let e=new AbortController;this.#k=e;try{let n=await this.controller.copySelection({signal:e.signal});if(e.signal.aborted||this.#v||n==="")return;if(this.#s!==void 0)await this.#s(n);else{let r=this.#c.navigator.clipboard;if(r===void 0)throw new Error("Clipboard access is unavailable in this browser context");await r.writeText(n)}this.#u.statusElement.textContent="Selection copied to clipboard."}catch(n){e.signal.aborted||(this.#u.statusElement.textContent=`Copy failed: ${It(n)}`,this.#Ee(n))}finally{this.#k===e&&(this.#k=null)}}#ve(e){return e.status==="error"?`Table error: ${It(e.error)}`:e.status==="closed"?"Table closed.":e.status==="loading"?"Loading visible table cells.":`${e.layout.rowCount} rows and ${e.layout.columnCount} columns.`}#ne(e,n){let r=this.#R.metadata.schema.columns[e],i=this.controller.columnWidths[e];if(r===void 0||i===void 0)return;this.#z!==0&&this.#c.cancelAnimationFrame(this.#z);let o=n?"fit to":"width",a=n?" using visible content":"";this.#z=this.#c.requestAnimationFrame(()=>{this.#z=0,this.#v||(this.#u.statusElement.textContent=`${r.name} column ${o} ${pr(i)} CSS pixels${a}.`)})}#re(){if(this.element.dataset.tabularkColorScheme=this.#B,this.element.dataset.tabularkForcedColors=this.#S?"active":"none",this.element.style.background=this.#l.background,this.element.style.borderColor=this.#l.gridLine,this.element.style.color=this.#l.foreground,this.#o.style.background=this.#l.background,this.#o.style.color=this.#l.mutedForeground,this.#r.style.forcedColorAdjust=this.#S?"none":"auto",this.element.contains(this.element.ownerDocument.activeElement)){this.element.style.outline=`2px solid ${this.#Z()}`;let e=this.#Q(this.element.ownerDocument.activeElement);e!==null&&(e.style.outline=`2px solid ${this.#Z()}`)}}#ie(){let e=this.#B==="dark"?Lo:Fe,n=Object.freeze({...e,...this.#d});return this.#S?Ln(n):n}#Z(){return this.#S?"Highlight":this.#l.activeCellBorder}#oe(){return`${this.controller.metadata.name||"Data"} table`}#Ce(){return this.#R.layout.rowCount>0&&this.#R.layout.columnCount>0}#L(){return this.#v||this.#R.status==="error"||this.#R.status==="closed"}#ue(){this.#m!==null&&this.#n.hasPointerCapture(this.#m.pointerId)&&this.#n.releasePointerCapture(this.#m.pointerId),this.#m=null,this.#n.style.cursor="default"}#Ee(e){this.#f!==void 0?this.#f(e):typeof this.#c.reportError=="function"&&this.#c.reportError(e)}#Se(){if(this.#v)throw new Error("Canvas table view is destroyed")}};function Do(t,e,n){let r=cr(t.rowStart,t.rowEnd,e),i=cr(t.columnStart,t.columnEnd,n);return Object.freeze(r.flatMap(o=>i.map(a=>Object.freeze({rowStart:o.start,rowEnd:o.end,columnStart:a.start,columnEnd:a.end}))))}function cr(t,e,n){return n<=t||n>=e?Object.freeze([Object.freeze({start:t,end:e})]):Object.freeze([Object.freeze({start:t,end:n}),Object.freeze({start:n,end:e})])}function _o(t,e){let n=t.rowHeaderWidth+Math.min(t.bodyWidth,t.frozenColumnExtent),r=t.headerHeight+Math.min(t.bodyHeight,t.frozenRowExtent),i=e.columnStart<t.frozenColumnCount,o=e.rowStart<t.frozenRowCount;return Object.freeze({left:i?t.rowHeaderWidth:n,right:i?n:t.rowHeaderWidth+t.bodyWidth,top:o?t.headerHeight:r,bottom:o?r:t.headerHeight+t.bodyHeight})}function jo(t){let e=fr(t.rows.overscan,t.columns.overscan,t.frozenRowRange,t.frozenColumnRange);return e.reduce((r,i)=>r+i.rowCount*i.columnCount,0)<=No?e:fr(t.rows.visible,t.columns.visible,t.frozenRowRange,t.frozenColumnRange)}function fr(t,e,n,r){let i=[];for(let o of mr(t,n))for(let a of mr(e,r))i.push(Object.freeze({rowStart:o.start,rowCount:o.end-o.start,columnStart:a.start,columnCount:a.end-a.start}));return Object.freeze(i)}function mr(t,e){let n=[t,e].filter(o=>o.start<o.end).sort((o,a)=>o.start-a.start);if(n.length<2)return Object.freeze(n.map(o=>Object.freeze({...o})));let r=n[0],i=n[1];return r.end>=i.start?Object.freeze([Object.freeze({start:r.start,end:Math.max(r.end,i.end)})]):Object.freeze(n.map(o=>Object.freeze({...o})))}function Ho(t){return`${t.rowStart}:${t.rowCount}:${t.columnStart}:${t.columnCount}`}function Uo(t){return`${t.rowStart}:${t.rowEnd}:${t.columnStart}:${t.columnEnd}`}function hr(t){let e=new Map;for(let n of t)for(let r of n.mergedCells)e.set(Uo(r),r);return Object.freeze([...e.values()])}function Wo(t,e){let n=new Map;for(let r of t){if(e.some(a=>r.rowStart>=a.range.rowStart&&r.rowStart<a.range.rowStart+a.range.rowCount&&r.columnStart>=a.range.columnStart&&r.columnStart<a.range.columnStart+a.range.columnCount))continue;let o=Object.freeze({rowStart:r.rowStart,rowCount:1,columnStart:r.columnStart,columnCount:1});n.set(`${r.rowStart}:${r.columnStart}`,o)}return Object.freeze([...n.values()])}function wr(t){if(!t||!t.container||typeof t.container.append!="function")throw c("container must be an HTMLElement");let e=t.table!==void 0,n=t.controller!==void 0;if(e===n)throw c("provide exactly one of table or controller");return new kt(t)}function br(t,e){if(typeof t.addEventListener=="function"){t.addEventListener("change",e);return}t.addListener?.(e)}function yr(t,e){if(typeof t.removeEventListener=="function"){t.removeEventListener("change",e);return}t.removeListener?.(e)}function gr(t){switch(t.key){case"ArrowLeft":return"left";case"ArrowRight":return"right";case"ArrowUp":return"up";case"ArrowDown":return"down";case"PageUp":return"page-up";case"PageDown":return"page-down";case"Home":return t.ctrlKey||t.metaKey?"table-start":"row-start";case"End":return t.ctrlKey||t.metaKey?"table-end":"row-end";default:return null}}function It(t){return t instanceof Error?t.message:typeof t=="string"?t:"Unknown error"}function pr(t){return Number.isInteger(t)?String(t):t.toFixed(2).replace(/(?:\.0+|(?<decimal>\.\d*?)0+)$/,"$<decimal>")}function Vo(t){Object.assign(t.style,{border:"0",clip:"rect(0 0 0 0)",clipPath:"inset(50%)",height:"1px",margin:"-1px",overflow:"hidden",padding:"0",position:"absolute",whiteSpace:"nowrap",width:"1px"})}function Fo(t){return wr(t)}export{m as TabularkError,Fo as createCanvasTableView,Qi as createEngine,Ir as delimitedAdapter};
|
|
3
|
+
//# sourceMappingURL=index.js.map
|