@marimo-team/frontend 0.21.1-dev12 → 0.21.1-dev14
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/dist/assets/{CellStatus-CFRv4Tvd.js → CellStatus-CoejXnCc.js} +1 -1
- package/dist/assets/ConnectedDataExplorerComponent-DsPvYWwS.js +1 -0
- package/dist/assets/{JsonOutput-DJukuY6Z.js → JsonOutput-CBK4dhVh.js} +10 -10
- package/dist/assets/{MarimoErrorOutput-zVM0B_Vj.js → MarimoErrorOutput-B0nc63rx.js} +1 -1
- package/dist/assets/{RenderHTML-BuMvdWQd.js → RenderHTML-Bp9XY06U.js} +1 -1
- package/dist/assets/{add-cell-with-ai-BtzUxApq.js → add-cell-with-ai-CrnYAxuA.js} +1 -1
- package/dist/assets/{add-connection-dialog-BSsacvzU.js → add-connection-dialog-I31C6j-5.js} +1 -1
- package/dist/assets/{agent-panel-a_m3dm9Y.js → agent-panel-ufAvSbof.js} +1 -1
- package/dist/assets/{ai-model-dropdown-CcIreMqb.js → ai-model-dropdown-BYDC_z7s.js} +1 -1
- package/dist/assets/{app-config-button-D-mROEVq.js → app-config-button-CRfW3S6Z.js} +1 -1
- package/dist/assets/{azure-FFoHMnHA.js → azure-q5TZ9bt0.js} +1 -1
- package/dist/assets/{cell-editor-D_RsnX0J.js → cell-editor-eZKo6fP_.js} +1 -1
- package/dist/assets/{cell-link-BjgRgErj.js → cell-link-DWQZUFhO.js} +1 -1
- package/dist/assets/{cells-CAHXVi26.js → cells-Dqou-uie.js} +32 -32
- package/dist/assets/{chat-display-rX-JkJEO.js → chat-display-Vedn01P6.js} +1 -1
- package/dist/assets/{chat-panel-BudFFybg.js → chat-panel-udyCNql9.js} +1 -1
- package/dist/assets/{column-preview-Dk_9z2Mw.js → column-preview-DPhs4evg.js} +1 -1
- package/dist/assets/{command-_14PjWun.js → command-Ckfx4w5C.js} +1 -1
- package/dist/assets/command-palette-D51FjW1l.js +1 -0
- package/dist/assets/{common-D2sp4A8j.js → common-DMx0N5jj.js} +1 -1
- package/dist/assets/{components-BP1LfBLA.js → components-Bgj5U8rZ.js} +1 -1
- package/dist/assets/{components-Wzn4JDkV.js → components-CHO2M34L.js} +1 -1
- package/dist/assets/context-aware-panel-TU7i7Ais.js +3 -0
- package/dist/assets/{datasource-BNXHfowL.js → datasource-Cn-Wy4lo.js} +1 -1
- package/dist/assets/{dependency-graph-panel-B5Eq3e0f.js → dependency-graph-panel-Dd_ypMAw.js} +1 -1
- package/dist/assets/{documentation-panel-DLE-AkPt.js → documentation-panel-C1QC0dL_.js} +1 -1
- package/dist/assets/{download-SQhwj_Eq.js → download-D6Fv1GMQ.js} +1 -1
- package/dist/assets/{edit-page-qWzJGYd0.js → edit-page-DGpjBH-k.js} +7 -7
- package/dist/assets/{error-panel-DmmjuXRp.js → error-panel-BfF_Pl3q.js} +1 -1
- package/dist/assets/{file-explorer-panel-DW3BdMFp.js → file-explorer-panel-C6RCpRgm.js} +1 -1
- package/dist/assets/{file-icons-xucuZauP.js → file-icons-0zZkfGbI.js} +1 -1
- package/dist/assets/{floating-outline-2X-MQKSU.js → floating-outline-CNejeNGC.js} +1 -1
- package/dist/assets/{focus-DaKeoSx6.js → focus-CQRBseis.js} +1 -1
- package/dist/assets/{form-C5vg9S9o.js → form-B9Fj5Rl-.js} +1 -1
- package/dist/assets/formats-DzzQnJYt.js +1 -0
- package/dist/assets/{globals-DCdvUAk2.js → globals-DE7Q2ffe.js} +1 -1
- package/dist/assets/{home-page-4oOWwdL4.js → home-page-C8mwmLAs.js} +1 -1
- package/dist/assets/{hooks-CZT_TWa2.js → hooks-C8aiyK69.js} +1 -1
- package/dist/assets/{html-to-image-BgHw831z.js → html-to-image-BFwmkFZ4.js} +1 -1
- package/dist/assets/{index-CVpJvEAO.css → index-Bgbe24O9.css} +1 -1
- package/dist/assets/{index-CPEieVCj.js → index-bt3OH-Pk.js} +17 -17
- package/dist/assets/{kiosk-mode-BNqp-cFU.js → kiosk-mode-BO-KqM9l.js} +1 -1
- package/dist/assets/{layout-52MeytEk.js → layout-BEA77UDX.js} +1 -1
- package/dist/assets/{logs-panel-dWMS7IIv.js → logs-panel-BebwAaGv.js} +1 -1
- package/dist/assets/{markdown-renderer-MyhTrUey.js → markdown-renderer-CdEqa6lQ.js} +1 -1
- package/dist/assets/{mode-D_HXqDHH.js → mode-DSINUCzY.js} +1 -1
- package/dist/assets/{name-cell-input-CAAR5C2m.js → name-cell-input-DaDgZhjE.js} +1 -1
- package/dist/assets/{outline-panel-Bmfna9YR.js → outline-panel-DCpOiLnR.js} +1 -1
- package/dist/assets/{packages-panel-DKH34NxN.js → packages-panel-kOdMspq6.js} +1 -1
- package/dist/assets/{panels-jo8u0sPM.js → panels-BSQT0nmq.js} +1 -1
- package/dist/assets/{process-output-B2kGZ_VU.js → process-output-4ypD4fg7.js} +1 -1
- package/dist/assets/{readonly-python-code-Dz4GjF9D.js → readonly-python-code-CysvH2Zj.js} +1 -1
- package/dist/assets/run-page-BRdwXGaf.js +1 -0
- package/dist/assets/scratchpad-panel-DQQ_wRz5.js +1 -0
- package/dist/assets/session-panel-BACIy3wf.js +1 -0
- package/dist/assets/{snippets-panel-C0yfvEEg.js → snippets-panel-BjUFMiXc.js} +1 -1
- package/dist/assets/{state-CGu0LFDk.js → state-BqEQgvo3.js} +1 -1
- package/dist/assets/{switch-krcK9lRK.js → switch-JycgoJcn.js} +1 -1
- package/dist/assets/{tracing-3veLCmCp.js → tracing-1AoHNFA-.js} +1 -1
- package/dist/assets/{tracing-panel-KUJifV3W.js → tracing-panel-CrlCrmHo.js} +2 -2
- package/dist/assets/{useAddCell-_oR2xY1x.js → useAddCell-BSbQWv3q.js} +1 -1
- package/dist/assets/{useBoolean-D8-4no-l.js → useBoolean-Cm61eWz0.js} +1 -1
- package/dist/assets/{useCellActionButton-DNIW0rqj.js → useCellActionButton-DpdThmJR.js} +1 -1
- package/dist/assets/{useDeleteCell-BAuuakkK.js → useDeleteCell-DSpj4wDu.js} +1 -1
- package/dist/assets/{useDependencyPanelTab-ClmZIdnO.js → useDependencyPanelTab-1iAP2AMB.js} +1 -1
- package/dist/assets/{useNotebookActions-DhmD75et.js → useNotebookActions-CU14FoaT.js} +1 -1
- package/dist/assets/{useRunCells-BOsp_Hau.js → useRunCells-BSsgvk4y.js} +1 -1
- package/dist/assets/{useSplitCell-DfYEUeyE.js → useSplitCell-Ct7RykE3.js} +1 -1
- package/dist/assets/{tooltip-DLsts-7g.js → utils-BuPoTKhl.js} +3 -3
- package/dist/assets/vega-component-S1h0g70Q.js +1 -0
- package/dist/index.html +35 -35
- package/package.json +1 -1
- package/src/components/data-table/charts/lazy-chart.tsx +2 -0
- package/src/components/data-table/column-summary/column-summary.tsx +1 -0
- package/src/components/datasources/column-preview.tsx +1 -0
- package/src/components/editor/Output.tsx +2 -0
- package/src/components/editor/chrome/panels/context-aware-panel/context-aware-panel.tsx +6 -0
- package/src/components/editor/chrome/wrapper/__tests__/utils.test.ts +35 -0
- package/src/components/editor/chrome/wrapper/app-chrome.tsx +12 -14
- package/src/components/editor/chrome/wrapper/utils.ts +5 -1
- package/src/core/codemirror/reactive-references/__tests__/analyzer.test.ts +54 -0
- package/src/core/codemirror/reactive-references/analyzer.ts +14 -0
- package/src/plugins/impl/data-explorer/ConnectedDataExplorerComponent.tsx +6 -3
- package/src/plugins/impl/vega/__tests__/utils.test.ts +36 -0
- package/src/plugins/impl/vega/utils.ts +14 -0
- package/src/plugins/impl/vega/vega-component.tsx +6 -7
- package/src/plugins/impl/vega/vega.css +1 -1
- package/dist/assets/ConnectedDataExplorerComponent-BrZvYzEX.js +0 -1
- package/dist/assets/command-palette-NBOgLsWz.js +0 -1
- package/dist/assets/context-aware-panel--8JnQtYo.js +0 -3
- package/dist/assets/formats-CmvHepzl.js +0 -1
- package/dist/assets/run-page-DQIGlYAL.js +0 -1
- package/dist/assets/scratchpad-panel-ClYOgTQp.js +0 -1
- package/dist/assets/session-panel-BYjloSxn.js +0 -1
- package/dist/assets/vega-component-D3vsTtly.js +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
var ue=Object.defineProperty;var ce=(t,e,n)=>e in t?ue(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n;var A=(t,e,n)=>ce(t,typeof e!="symbol"?e+"":e,n);var at,lt,ot,ut,ct;import{C as de,S as he}from"./_Uint8Array-C0aUZfE0.js";import{c as fe,m as ye}from"./useEventListener-BGihH8bs.js";import{St as yt,a as pe,c as ge,gt as me,o as ve,wt as be}from"./vega-loader.browser-CZV6_g2i.js";var xe="[object Number]";function we(t){return typeof t=="number"||he(t)&&de(t)==xe}var Ie=we;const pt=Uint8Array.of(65,82,82,79,87,49),$={V1:0,V2:1,V3:2,V4:3,V5:4},D={NONE:0,Schema:1,DictionaryBatch:2,RecordBatch:3,Tensor:4,SparseTensor:5},l={Dictionary:-1,NONE:0,Null:1,Int:2,Float:3,Binary:4,Utf8:5,Bool:6,Decimal:7,Date:8,Time:9,Timestamp:10,Interval:11,List:12,Struct:13,Union:14,FixedSizeBinary:15,FixedSizeList:16,Map:17,Duration:18,LargeBinary:19,LargeUtf8:20,LargeList:21,RunEndEncoded:22,BinaryView:23,Utf8View:24,ListView:25,LargeListView:26},gt={HALF:0,SINGLE:1,DOUBLE:2},z={DAY:0,MILLISECOND:1},m={SECOND:0,MILLISECOND:1,MICROSECOND:2,NANOSECOND:3},C={YEAR_MONTH:0,DAY_TIME:1,MONTH_DAY_NANO:2},W={Sparse:0,Dense:1},mt=Uint8Array,vt=Uint16Array,bt=Uint32Array,xt=BigUint64Array,wt=Int8Array,Le=Int16Array,x=Int32Array,L=BigInt64Array,Ae=Float32Array,k=Float64Array;function Ne(t,e){let n=Math.log2(t)-3;return(e?[wt,Le,x,L]:[mt,vt,bt,xt])[n]}Object.getPrototypeOf(Int8Array);function X(t,e){let n=0,r=t.length;if(r<=2147483648)do{let i=n+r>>>1;t[i]<=e?n=i+1:r=i}while(n<r);else do{let i=Math.trunc((n+r)/2);t[i]<=e?n=i+1:r=i}while(n<r);return n}function J(t,e,n){if(e(t))return t;throw Error(n(t))}function w(t,e,n){return e=Array.isArray(e)?e:Object.values(e),J(t,r=>e.includes(r),n??(()=>`${t} must be one of ${e}`))}function It(t,e){for(let[n,r]of Object.entries(t))if(r===e)return n;return"<Unknown>"}const G=t=>`Unsupported data type: "${It(l,t)}" (id ${t})`,Lt=(t,e,n=!0,r=null)=>({name:t,type:e,nullable:n,metadata:r});function At(t){return Object.hasOwn(t,"name")&&Nt(t.type)}function Nt(t){return typeof(t==null?void 0:t.typeId)=="number"}function B(t,e="",n=!0){return At(t)?t:Lt(e,J(t,Nt,()=>"Data type expected."),n)}const Ee=(t,e,n=!1,r=-1)=>({typeId:l.Dictionary,id:r,dictionary:t,indices:e||St(),ordered:n}),Et=(t=32,e=!0)=>({typeId:l.Int,bitWidth:w(t,[8,16,32,64]),signed:e,values:Ne(t,e)}),St=()=>Et(32),Se=(t=2)=>({typeId:l.Float,precision:w(t,gt),values:[vt,Ae,k][t]}),De=()=>({typeId:l.Binary,offsets:x}),Be=()=>({typeId:l.Utf8,offsets:x}),Oe=(t,e,n=128)=>({typeId:l.Decimal,precision:t,scale:e,bitWidth:w(n,[128,256]),values:xt}),Te=t=>({typeId:l.Date,unit:w(t,z),values:t===z.DAY?x:L}),Me=(t=m.MILLISECOND,e=32)=>({typeId:l.Time,unit:w(t,m),bitWidth:w(e,[32,64]),values:e===32?x:L}),Ce=(t=m.MILLISECOND,e=null)=>({typeId:l.Timestamp,unit:w(t,m),timezone:e,values:L}),Ue=(t=C.MONTH_DAY_NANO)=>({typeId:l.Interval,unit:w(t,C),values:t===C.MONTH_DAY_NANO?void 0:x}),Ve=t=>({typeId:l.List,children:[B(t)],offsets:x}),Fe=t=>({typeId:l.Struct,children:Array.isArray(t)&&At(t[0])?t:Object.entries(t).map(([e,n])=>Lt(e,n))}),Re=(t,e,n,r)=>(n??(n=e.map((i,s)=>s)),{typeId:l.Union,mode:w(t,W),typeIds:n,typeMap:n.reduce((i,s,a)=>(i[s]=a,i),{}),children:e.map((i,s)=>B(i,`_${s}`)),typeIdForValue:r,offsets:x}),$e=t=>({typeId:l.FixedSizeBinary,stride:t}),ze=(t,e)=>({typeId:l.FixedSizeList,stride:e,children:[B(t)]}),ke=(t,e)=>({typeId:l.Map,keysSorted:t,children:[e],offsets:x}),je=(t=m.MILLISECOND)=>({typeId:l.Duration,unit:w(t,m),values:L}),Ye=()=>({typeId:l.LargeBinary,offsets:L}),_e=()=>({typeId:l.LargeUtf8,offsets:L}),He=t=>({typeId:l.LargeList,children:[B(t)],offsets:L}),Pe=(t,e)=>({typeId:l.RunEndEncoded,children:[J(B(t,"run_ends"),n=>n.type.typeId===l.Int,()=>"Run-ends must have an integer type."),B(e,"values")]}),We=t=>({typeId:l.ListView,children:[B(t,"value")],offsets:x}),Xe=t=>({typeId:l.LargeListView,children:[B(t,"value")],offsets:L});var j=new k(2).buffer;new L(j),new bt(j),new x(j),new mt(j);function O(t){if(t>2**53-1||t<-(2**53-1))throw Error(`BigInt exceeds integer number representation: ${t}`);return Number(t)}function Z(t,e){return Number(t/e)+Number(t%e)/Number(e)}var U=t=>BigInt.asUintN(64,t);function Je(t,e){let n=e<<1,r;return BigInt.asIntN(64,t[n+1])<0?(r=U(~t[n])|U(~t[n+1])<<64n,r=-(r+1n)):r=t[n]|t[n+1]<<64n,r}function Ge(t,e){let n=e<<2,r;return BigInt.asIntN(64,t[n+3])<0?(r=U(~t[n])|U(~t[n+1])<<64n|U(~t[n+2])<<128n|U(~t[n+3])<<192n,r=-(r+1n)):r=t[n]|t[n+1]<<64n|t[n+2]<<128n|t[n+3]<<192n,r}var Ze=new TextDecoder("utf-8");new TextEncoder;function Y(t){return Ze.decode(t)}function Dt(t,e){return(t[e>>3]&1<<e%8)!=0}function N(t,e){let n=e+h(t,e),r=n-h(t,n),i=v(t,r);return(s,a,o=null)=>{if(s<i){let u=v(t,r+s);if(u)return a(t,n+u)}return o}}function M(t,e){return e}function F(t,e){return!!qe(t,e)}function qe(t,e){return q(t,e)<<24>>24}function q(t,e){return t[e]}function v(t,e){return Ke(t,e)<<16>>16}function Ke(t,e){return t[e]|t[e+1]<<8}function h(t,e){return t[e]|t[e+1]<<8|t[e+2]<<16|t[e+3]<<24}function Bt(t,e){return h(t,e)>>>0}function b(t,e){return O(BigInt.asIntN(64,BigInt(Bt(t,e))+(BigInt(Bt(t,e+4))<<32n)))}function _(t,e){let n=e+h(t,e),r=h(t,n);return n+=4,Y(t.subarray(n,n+r))}function T(t,e,n,r){if(!e)return[];let i=e+h(t,e);return Array.from({length:h(t,i)},(s,a)=>r(t,i+4+a*n))}const K=Symbol("rowIndex");function Q(t,e){class n{constructor(s){this[K]=s}toJSON(){return Tt(t,e,this[K])}}let r=n.prototype;for(let i=0;i<t.length;++i){if(Object.hasOwn(r,t[i]))continue;let s=e[i];Object.defineProperty(r,t[i],{get(){return s.at(this[K])},enumerable:!0})}return i=>new n(i)}function Ot(t,e){return n=>Tt(t,e,n)}function Tt(t,e,n){let r={};for(let i=0;i<t.length;++i)r[t[i]]=e[i].at(n);return r}function Qe(t){return t instanceof P}var H=(at=class{constructor({length:t,nullCount:e,type:n,validity:r,values:i,offsets:s,sizes:a,children:o}){this.length=t,this.nullCount=e,this.type=n,this.validity=r,this.values=i,this.offsets=s,this.sizes=a,this.children=o,(!e||!this.validity)&&(this.at=u=>this.value(u))}get[Symbol.toStringTag](){return"Batch"}at(t){return this.isValid(t)?this.value(t):null}isValid(t){return Dt(this.validity,t)}value(t){return this.values[t]}slice(t,e){let n=e-t,r=Array(n);for(let i=0;i<n;++i)r[i]=this.at(t+i);return r}*[Symbol.iterator](){for(let t=0;t<this.length;++t)yield this.at(t)}},A(at,"ArrayType",null),at),P=class extends H{constructor(t){super(t);let{length:e,values:n}=this;this.values=n.subarray(0,e)}slice(t,e){return this.nullCount?super.slice(t,e):this.values.subarray(t,e)}[Symbol.iterator](){return this.nullCount?super[Symbol.iterator]():this.values[Symbol.iterator]()}},tt=(lt=class extends H{},A(lt,"ArrayType",k),lt),f=(ot=class extends H{},A(ot,"ArrayType",Array),ot),tn=class extends f{value(t){return null}},V=class extends tt{value(t){return O(this.values[t])}},en=class extends tt{value(t){let e=this.values[t],n=(e&31744)>>10,r=(e&1023)/1024,i=(-1)**((e&32768)>>15);switch(n){case 31:return i*(r?NaN:1/0);case 0:return i*(r?6103515625e-14*r:0)}return i*2**(n-15)*(1+r)}},nn=class extends f{value(t){return Dt(this.values,t)}},Mt=class extends H{constructor(t){super(t);let{bitWidth:e,scale:n}=this.type;this.decimal=e===128?Je:Ge,this.scale=10n**BigInt(n)}},rn=(ut=class extends Mt{value(t){return Z(this.decimal(this.values,t),this.scale)}},A(ut,"ArrayType",k),ut),sn=(ct=class extends Mt{value(t){return this.decimal(this.values,t)}},A(ct,"ArrayType",Array),ct),Ct=class extends f{constructor(t){super(t),this.source=t}value(t){return new Date(this.source.value(t))}},an=class extends tt{value(t){return 864e5*this.values[t]}};const ln=V;var on=class extends V{value(t){return super.value(t)*1e3}};const un=V;var cn=class extends V{value(t){return Z(this.values[t],1000n)}},dn=class extends V{value(t){return Z(this.values[t],1000000n)}},hn=class extends f{value(t){return this.values.subarray(t<<1,t+1<<1)}},fn=class extends f{value(t){let e=this.values,n=t<<4;return Float64Array.of(h(e,n),h(e,n+4),b(e,n+8))}},Ut=({values:t,offsets:e},n)=>t.subarray(e[n],e[n+1]),Vt=({values:t,offsets:e},n)=>t.subarray(O(e[n]),O(e[n+1])),yn=class extends f{value(t){return Ut(this,t)}},pn=class extends f{value(t){return Vt(this,t)}},gn=class extends f{value(t){return Y(Ut(this,t))}},mn=class extends f{value(t){return Y(Vt(this,t))}},vn=class extends f{value(t){let e=this.offsets;return this.children[0].slice(e[t],e[t+1])}},bn=class extends f{value(t){let e=this.offsets;return this.children[0].slice(O(e[t]),O(e[t+1]))}},xn=class extends f{value(t){let e=this.offsets[t],n=e+this.sizes[t];return this.children[0].slice(e,n)}},wn=class extends f{value(t){let e=this.offsets[t],n=e+this.sizes[t];return this.children[0].slice(O(e),O(n))}},Ft=class extends f{constructor(t){super(t),this.stride=this.type.stride}},In=class extends Ft{value(t){let{stride:e,values:n}=this;return n.subarray(t*e,(t+1)*e)}},Ln=class extends Ft{value(t){let{children:e,stride:n}=this;return e[0].slice(t*n,(t+1)*n)}};function Rt({children:t,offsets:e},n){let[r,i]=t[0].children,s=e[n],a=e[n+1],o=[];for(let u=s;u<a;++u)o.push([r.at(u),i.at(u)]);return o}var An=class extends f{value(t){return Rt(this,t)}},Nn=class extends f{value(t){return new Map(Rt(this,t))}},$t=class extends f{constructor({typeIds:t,...e}){super(e),this.typeIds=t,this.typeMap=this.type.typeMap}value(t,e=t){let{typeIds:n,children:r,typeMap:i}=this;return r[i[n[t]]].at(e)}},En=class extends $t{value(t){return super.value(t,this.offsets[t])}},zt=class extends f{constructor(t,e=Ot){super(t),this.names=this.type.children.map(n=>n.name),this.factory=e(this.names,this.children)}value(t){return this.factory(t)}},Sn=class extends zt{constructor(t){super(t,Q)}},Dn=class extends f{value(t){let[{values:e},n]=this.children;return n.at(X(e,t))}},Bn=class extends f{setDictionary(t){return this.dictionary=t,this.cache=t.cache(),this}value(t){return this.cache[this.key(t)]}key(t){return this.values[t]}},kt=class extends f{constructor({data:t,...e}){super(e),this.data=t}view(t){let{values:e,data:n}=this,r=t<<4,i=r+4,s=e,a=h(s,r);return a>12&&(i=h(s,r+12),s=n[h(s,r+8)]),s.subarray(i,i+a)}},On=class extends kt{value(t){return this.view(t)}},Tn=class extends kt{value(t){return Y(this.view(t))}};function jt(t){let e=[];return{add(n){return e.push(n),this},clear:()=>e=[],done:()=>new Mn(e,t)}}var Mn=class{constructor(t,e=(n=>(n=t[0])==null?void 0:n.type)()){this.type=e,this.length=t.reduce((s,a)=>s+a.length,0),this.nullCount=t.reduce((s,a)=>s+a.nullCount,0),this.data=t;let r=t.length,i=new Int32Array(r+1);if(r===1){let[s]=t;i[1]=s.length,this.at=a=>s.at(a)}else for(let s=0,a=0;s<r;++s)i[s+1]=a+=t[s].length;this.offsets=i}get[Symbol.toStringTag](){return"Column"}[Symbol.iterator](){let t=this.data;return t.length===1?t[0][Symbol.iterator]():Cn(t)}at(t){var i;let{data:e,offsets:n}=this,r=X(n,t)-1;return(i=e[r])==null?void 0:i.at(t-n[r])}get(t){return this.at(t)}toArray(){let{length:t,nullCount:e,data:n}=this,r=!e&&Qe(n[0]),i=n.length;if(r&&i===1)return n[0].values;let s=new(!i||e>0?Array:n[0].constructor.ArrayType??n[0].values.constructor)(t);return r?Un(s,n):Vn(s,n)}cache(){return this._cache??(this._cache=this.toArray())}};function*Cn(t){for(let e=0;e<t.length;++e){let n=t[e][Symbol.iterator]();for(let r=n.next();!r.done;r=n.next())yield r.value}}function Un(t,e){for(let n=0,r=0;n<e.length;++n){let{values:i}=e[n];t.set(i,r),r+=i.length}return t}function Vn(t,e){let n=-1;for(let r=0;r<e.length;++r){let i=e[r];for(let s=0;s<i.length;++s)t[++n]=i.at(s)}return t}var Fn=class le{constructor(e,n,r=!1){let i=e.fields.map(a=>a.name);this.schema=e,this.names=i,this.children=n,this.factory=r?Q:Ot;let s=[];this.getFactory=a=>s[a]??(s[a]=this.factory(i,n.map(o=>o.data[a])))}get[Symbol.toStringTag](){return"Table"}get numCols(){return this.names.length}get numRows(){var e;return((e=this.children[0])==null?void 0:e.length)??0}getChildAt(e){return this.children[e]}getChild(e){let n=this.names.findIndex(r=>r===e);return n>-1?this.children[n]:void 0}selectAt(e,n=[]){let{children:r,factory:i,schema:s}=this,{fields:a}=s;return new le({...s,fields:e.map((o,u)=>Rn(a[o],n[u]))},e.map(o=>r[o]),i===Q)}select(e,n){let r=this.names,i=e.map(s=>r.indexOf(s));return this.selectAt(i,n)}toColumns(){let{children:e,names:n}=this,r={};return n.forEach((i,s)=>{var a;return r[i]=((a=e[s])==null?void 0:a.toArray())??[]}),r}toArray(){var a;let{children:e,getFactory:n,numRows:r}=this,i=((a=e[0])==null?void 0:a.data)??[],s=Array(r);for(let o=0,u=-1;o<i.length;++o){let d=n(o);for(let c=0;c<i[o].length;++c)s[++u]=d(c)}return s}*[Symbol.iterator](){var i;let{children:e,getFactory:n}=this,r=((i=e[0])==null?void 0:i.data)??[];for(let s=0;s<r.length;++s){let a=n(s);for(let o=0;o<r[s].length;++o)yield a(o)}}at(e){let{children:n,getFactory:r,numRows:i}=this;if(e<0||e>=i)return null;let[{offsets:s}]=n,a=X(s,e)-1;return r(a)(e-s[a])}get(e){return this.at(e)}};function Rn(t,e){return e!=null&&e!==t.name?{...t,name:e}:t}function $n(t,e={}){let{typeId:n,bitWidth:r,precision:i,unit:s}=t,{useBigInt:a,useDate:o,useDecimalBigInt:u,useMap:d,useProxy:c}=e;switch(n){case l.Null:return tn;case l.Bool:return nn;case l.Int:case l.Time:case l.Duration:return a||r<64?P:V;case l.Float:return i?P:en;case l.Date:return Yt(s===z.DAY?an:ln,o&&Ct);case l.Timestamp:return Yt(s===m.SECOND?on:s===m.MILLISECOND?un:s===m.MICROSECOND?cn:dn,o&&Ct);case l.Decimal:return u?sn:rn;case l.Interval:return s===C.DAY_TIME?hn:s===C.YEAR_MONTH?P:fn;case l.FixedSizeBinary:return In;case l.Utf8:return gn;case l.LargeUtf8:return mn;case l.Binary:return yn;case l.LargeBinary:return pn;case l.BinaryView:return On;case l.Utf8View:return Tn;case l.List:return vn;case l.LargeList:return bn;case l.Map:return d?Nn:An;case l.ListView:return xn;case l.LargeListView:return wn;case l.FixedSizeList:return Ln;case l.Struct:return c?Sn:zt;case l.RunEndEncoded:return Dn;case l.Dictionary:return Bn;case l.Union:return t.mode?En:$t}throw Error(G(n))}function Yt(t,e){return e?class extends e{constructor(n){super(new t(n))}}:t}function zn(t,e){return{offset:b(t,e),metadataLength:h(t,e+8),bodyLength:b(t,e+16)}}function _t(t,e){return T(t,e,24,zn)}function Ht(t,e,n){let r=N(t,e);if(r(10,M,0))throw Error("Record batch compression not implemented");let i=n<$.V4?8:0;return{length:r(4,b,0),nodes:T(t,r(6,M),16,(s,a)=>({length:b(s,a),nullCount:b(s,a+8)})),regions:T(t,r(8,M),16+i,(s,a)=>({offset:b(s,a+i),length:b(s,a+i+8)})),variadic:T(t,r(12,M),8,b)}}function kn(t,e,n){let r=N(t,e);return{id:r(4,b,0),data:r(6,(i,s)=>Ht(i,s,n)),isDelta:r(8,F,!1)}}function Pt(t,e,n,r){w(n,l,G);let i=N(t,e);switch(n){case l.Binary:return De();case l.Utf8:return Be();case l.LargeBinary:return Ye();case l.LargeUtf8:return _e();case l.List:return Ve(r[0]);case l.ListView:return We(r[0]);case l.LargeList:return He(r[0]);case l.LargeListView:return Xe(r[0]);case l.Struct:return Fe(r);case l.RunEndEncoded:return Pe(r[0],r[1]);case l.Int:return Et(i(4,h,0),i(6,F,!1));case l.Float:return Se(i(4,v,gt.HALF));case l.Decimal:return Oe(i(4,h,0),i(6,h,0),i(8,h,128));case l.Date:return Te(i(4,v,z.MILLISECOND));case l.Time:return Me(i(4,v,m.MILLISECOND),i(6,h,32));case l.Timestamp:return Ce(i(4,v,m.SECOND),i(6,_));case l.Interval:return Ue(i(4,v,C.YEAR_MONTH));case l.Duration:return je(i(4,v,m.MILLISECOND));case l.FixedSizeBinary:return $e(i(4,h,0));case l.FixedSizeList:return ze(r[0],i(4,h,0));case l.Map:return ke(i(4,F,!1),r[0]);case l.Union:return Re(i(4,v,W.Sparse),r,T(t,i(6,M),4,h))}return{typeId:n}}function et(t,e){let n=T(t,e,4,(r,i)=>{let s=N(r,i);return[s(4,_),s(6,_)]});return n.length?new Map(n):null}function Wt(t,e,n){let r=N(t,e);return{version:n,endianness:r(4,v,0),fields:r(6,jn,[]),metadata:r(8,et)}}function jn(t,e){return T(t,e,4,Xt)}function Xt(t,e){let n=N(t,e),r=n(8,q,l.NONE),i=n(10,M,0),s=n(12,_n),a=Pt(t,i,r,n(14,(o,u)=>Yn(o,u)));return s&&(s.dictionary=a,a=s),{name:n(4,_),type:a,nullable:n(6,F,!1),metadata:n(16,et)}}function Yn(t,e){let n=T(t,e,4,Xt);return n.length?n:null}function _n(t,e){if(!e)return null;let n=N(t,e);return Ee(null,n(6,Hn,St()),n(8,F,!1),n(4,b,0))}function Hn(t,e){return Pt(t,e,l.Int)}var Pn=(t,e)=>`Expected to read ${t} metadata bytes, but only read ${e}.`,Wn=(t,e)=>`Expected to read ${t} bytes for message body, but only read ${e}.`,Xn=t=>`Unsupported message type: ${t} (${It(D,t)})`;function nt(t,e){let n=h(t,e)||0;if(e+=4,n===-1&&(n=h(t,e)||0,e+=4),n===0)return null;let r=t.subarray(e,e+=n);if(r.byteLength<n)throw Error(Pn(n,r.byteLength));let i=N(r,0),s=i(4,v,$.V1),a=i(6,q,D.NONE),o=i(8,M,0),u=i(10,b,0),d;if(o){let c=a===D.Schema?Wt:a===D.DictionaryBatch?kn:a===D.RecordBatch?Ht:null;if(!c)throw Error(Xn(a));if(d=c(r,o,s),u>0){let g=t.subarray(e,e+=u);if(g.byteLength<u)throw Error(Wn(u,g.byteLength));d.body=g}}return{version:s,type:a,index:e,content:d}}function Jn(t){let e=t instanceof ArrayBuffer?new Uint8Array(t):t;return e instanceof Uint8Array&&Gn(e)?qn(e):Zn(e)}function Gn(t){if(!t||t.length<4)return!1;for(let e=0;e<6;++e)if(pt[e]!==t[e])return!1;return!0}function Zn(t){let e=[t].flat(),n,r=[],i=[];for(let s of e){if(!(s instanceof Uint8Array))throw Error("IPC data batch was not a Uint8Array.");let a=0;for(;;){let o=nt(s,a);if(o===null)break;if(a=o.index,o.content)switch(o.type){case D.Schema:n||(n=o.content);break;case D.RecordBatch:r.push(o.content);break;case D.DictionaryBatch:i.push(o.content);break}}}return{schema:n,dictionaries:i,records:r,metadata:null}}function qn(t){let e=t.byteLength-(pt.length+4),n=N(t,e-h(t,e)),r=n(4,v,$.V1),i=n(8,_t,[]),s=n(10,_t,[]);return{schema:n(6,(a,o)=>Wt(a,o,r)),dictionaries:i.map(({offset:a})=>nt(t,a).content),records:s.map(({offset:a})=>nt(t,a).content),metadata:n(12,et)}}function rt(t,e){return Kn(Jn(t),e)}function Kn(t,e={}){let{schema:n={fields:[]},dictionaries:r,records:i}=t,{version:s,fields:a}=n,o=new Map,u=tr(e,s,o),d=new Map;Qn(n,y=>{let p=y.type;p.typeId===l.Dictionary&&d.set(p.id,p.dictionary)});let c=new Map;for(let y of r){let{id:p,data:E,isDelta:S,body:oe}=y,dt=d.get(p),ht=it(dt,u({...E,body:oe}));if(c.has(p)){let ft=c.get(p);S||ft.clear(),ft.add(ht)}else{if(S)throw Error("Delta update can not be first dictionary batch.");c.set(p,jt(dt).add(ht))}}c.forEach((y,p)=>o.set(p,y.done()));let g=a.map(y=>jt(y.type));for(let y of i){let p=u(y);a.forEach((E,S)=>g[S].add(it(E.type,p)))}return new Fn(n,g.map(y=>y.done()),e.useProxy)}function Qn(t,e){t.fields.forEach(function n(r){var i,s,a;e(r),(s=(i=r.type.dictionary)==null?void 0:i.children)==null||s.forEach(n),(a=r.type.children)==null||a.forEach(n)})}function tr(t,e,n){let r={version:e,options:t,dictionary:i=>n.get(i)};return i=>{let{length:s,nodes:a,regions:o,variadic:u,body:d}=i,c=-1,g=-1,y=-1;return{...r,length:s,node:()=>a[++c],buffer:p=>{let{length:E,offset:S}=o[++g];return p?new p(d.buffer,d.byteOffset+S,E/p.BYTES_PER_ELEMENT):d.subarray(S,S+E)},variadic:()=>u[++y],visit(p){return p.map(E=>it(E.type,this))}}}}function it(t,e){let{typeId:n}=t,{length:r,options:i,node:s,buffer:a,variadic:o,version:u}=e,d=$n(t,i);if(n===l.Null)return new d({length:r,nullCount:r,type:t});let c={...s(),type:t};switch(n){case l.Bool:case l.Int:case l.Time:case l.Duration:case l.Float:case l.Decimal:case l.Date:case l.Timestamp:case l.Interval:case l.FixedSizeBinary:return new d({...c,validity:a(),values:a(t.values)});case l.Utf8:case l.LargeUtf8:case l.Binary:case l.LargeBinary:return new d({...c,validity:a(),offsets:a(t.offsets),values:a()});case l.BinaryView:case l.Utf8View:return new d({...c,validity:a(),values:a(),data:Array.from({length:o()},()=>a())});case l.List:case l.LargeList:case l.Map:return new d({...c,validity:a(),offsets:a(t.offsets),children:e.visit(t.children)});case l.ListView:case l.LargeListView:return new d({...c,validity:a(),offsets:a(t.offsets),sizes:a(t.offsets),children:e.visit(t.children)});case l.FixedSizeList:case l.Struct:return new d({...c,validity:a(),children:e.visit(t.children)});case l.RunEndEncoded:return new d({...c,children:e.visit(t.children)});case l.Dictionary:{let{id:g,indices:y}=t;return new d({...c,validity:a(),values:a(y.values)}).setDictionary(e.dictionary(g))}case l.Union:return u<$.V5&&a(),new d({...c,typeIds:a(wt),offsets:t.mode===W.Sparse?null:a(t.offsets),children:e.visit(t.children)});default:throw Error(G(n))}}new Uint16Array(new Uint8Array([1,0]).buffer)[0];function R(t,e){let n=new Map;return(...r)=>{let i=e(...r);if(n.has(i))return n.get(i);let s=t(...r).finally(()=>{n.delete(i)});return n.set(i,s),s}}function st(t,e){return ve(t,e)}function er(){return pe()}const I=ge;function Jt(){let t=nr(er()),e=n=>JSON.stringify(n);return{load:R(t.load.bind(t),e),sanitize:R(t.sanitize.bind(t),e),http:R(t.http.bind(t),e),file:R(t.file.bind(t),e)}}function nr(t){return{...t,async load(e,n){return e.endsWith(".arrow")?rt(await Gt(e),{useProxy:!1}).toArray():t.load(e,n)}}}const Gt=R(t=>fetch(t).then(e=>e.arrayBuffer()),t=>t);var Zt=I.integer,qt=I.number,rr=I.date,ir=I.boolean,Kt=()=>(I.integer=t=>{if(t==="")return"";if(t==="-inf"||t==="inf")return t;function e(r){let i=Zt(r);return Number.isNaN(i)?r:i}let n=Number.parseInt(t,10);if(Ie(n)){if(!(Math.abs(n)>2**53-1))return e(t);try{return BigInt(t)}catch{return e(t)}}else return""},I.number=t=>{if(t==="-inf"||t==="inf")return t;let e=qt(t);return Number.isNaN(e)?t:e},()=>{I.integer=Zt,I.number=qt}),Qt=()=>(I.date=t=>{if(t==="")return"";if(t==null)return null;if(!/^\d{4}-\d{2}-\d{2}(T[\d.:]+(Z|[+-]\d{2}:?\d{2})?)?$/.test(t))return t;try{let e=new Date(t);return Number.isNaN(e.getTime())?t:e}catch{return ye.warn(`Failed to parse date: ${t}`),t}},()=>{I.date=rr});I.boolean=t=>t==="True"?!0:t==="False"?!1:ir(t);const te=Jt();async function sr(t,e,n={}){let{handleBigIntAndNumberLike:r=!1,replacePeriod:i=!1}=n;if(t.endsWith(".arrow")||(e==null?void 0:e.type)==="arrow")return rt(await Gt(t),{useProxy:!0,useDate:!0,useBigInt:r}).toArray();let s=[Qt];r&&s.push(Kt);let a=[];try{let o=await te.load(t);if(!e){if(typeof o=="string")try{JSON.parse(o),e={type:"json"}}catch{e={type:"csv",parse:"auto"}}typeof o=="object"&&(e={type:"json"})}let u=(e==null?void 0:e.type)==="csv";u&&typeof o=="string"&&(o=lr(o)),u&&typeof o=="string"&&i&&(o=or(o));let d=(e==null?void 0:e.parse)||"auto";return typeof d=="object"&&(d=fe.mapValues(d,c=>c==="time"?"string":c==="datetime"?"date":c)),a=s.map(c=>c()),u?st(o,{...e,parse:d}):st(o,e)}finally{a.forEach(o=>o())}}function ar(t,e=!0){let n=[Qt];e&&n.push(Kt);let r=n.map(s=>s()),i=st(t,{type:"csv",parse:"auto"});return r.forEach(s=>s()),i}function lr(t){return t!=null&&t.includes(",")?ee(t,e=>{let n=new Set;return e.map(r=>{let i=cr(r,n);return n.add(i),i})}):t}function or(t){return t!=null&&t.includes(".")?ee(t,e=>e.map(n=>n.replaceAll(".","\u2024"))):t}function ee(t,e){let n=t.split(`
|
|
1
|
+
var ce=Object.defineProperty;var de=(t,e,n)=>e in t?ce(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n;var A=(t,e,n)=>de(t,typeof e!="symbol"?e+"":e,n);var at,lt,ot,ut,ct;import{C as he,S as fe}from"./_Uint8Array-C0aUZfE0.js";import{c as yt,m as ye}from"./useEventListener-BGihH8bs.js";import{St as pt,a as pe,c as ge,gt as me,o as ve,wt as be}from"./vega-loader.browser-CZV6_g2i.js";var xe="[object Number]";function we(t){return typeof t=="number"||fe(t)&&he(t)==xe}var Ie=we;const gt=Uint8Array.of(65,82,82,79,87,49),$={V1:0,V2:1,V3:2,V4:3,V5:4},D={NONE:0,Schema:1,DictionaryBatch:2,RecordBatch:3,Tensor:4,SparseTensor:5},l={Dictionary:-1,NONE:0,Null:1,Int:2,Float:3,Binary:4,Utf8:5,Bool:6,Decimal:7,Date:8,Time:9,Timestamp:10,Interval:11,List:12,Struct:13,Union:14,FixedSizeBinary:15,FixedSizeList:16,Map:17,Duration:18,LargeBinary:19,LargeUtf8:20,LargeList:21,RunEndEncoded:22,BinaryView:23,Utf8View:24,ListView:25,LargeListView:26},mt={HALF:0,SINGLE:1,DOUBLE:2},z={DAY:0,MILLISECOND:1},m={SECOND:0,MILLISECOND:1,MICROSECOND:2,NANOSECOND:3},C={YEAR_MONTH:0,DAY_TIME:1,MONTH_DAY_NANO:2},W={Sparse:0,Dense:1},vt=Uint8Array,bt=Uint16Array,xt=Uint32Array,wt=BigUint64Array,It=Int8Array,Le=Int16Array,x=Int32Array,L=BigInt64Array,Ae=Float32Array,k=Float64Array;function Ne(t,e){let n=Math.log2(t)-3;return(e?[It,Le,x,L]:[vt,bt,xt,wt])[n]}Object.getPrototypeOf(Int8Array);function X(t,e){let n=0,r=t.length;if(r<=2147483648)do{let i=n+r>>>1;t[i]<=e?n=i+1:r=i}while(n<r);else do{let i=Math.trunc((n+r)/2);t[i]<=e?n=i+1:r=i}while(n<r);return n}function J(t,e,n){if(e(t))return t;throw Error(n(t))}function w(t,e,n){return e=Array.isArray(e)?e:Object.values(e),J(t,r=>e.includes(r),n??(()=>`${t} must be one of ${e}`))}function Lt(t,e){for(let[n,r]of Object.entries(t))if(r===e)return n;return"<Unknown>"}const G=t=>`Unsupported data type: "${Lt(l,t)}" (id ${t})`,At=(t,e,n=!0,r=null)=>({name:t,type:e,nullable:n,metadata:r});function Nt(t){return Object.hasOwn(t,"name")&&Et(t.type)}function Et(t){return typeof(t==null?void 0:t.typeId)=="number"}function B(t,e="",n=!0){return Nt(t)?t:At(e,J(t,Et,()=>"Data type expected."),n)}const Ee=(t,e,n=!1,r=-1)=>({typeId:l.Dictionary,id:r,dictionary:t,indices:e||Dt(),ordered:n}),St=(t=32,e=!0)=>({typeId:l.Int,bitWidth:w(t,[8,16,32,64]),signed:e,values:Ne(t,e)}),Dt=()=>St(32),Se=(t=2)=>({typeId:l.Float,precision:w(t,mt),values:[bt,Ae,k][t]}),De=()=>({typeId:l.Binary,offsets:x}),Be=()=>({typeId:l.Utf8,offsets:x}),Oe=(t,e,n=128)=>({typeId:l.Decimal,precision:t,scale:e,bitWidth:w(n,[128,256]),values:wt}),Te=t=>({typeId:l.Date,unit:w(t,z),values:t===z.DAY?x:L}),Me=(t=m.MILLISECOND,e=32)=>({typeId:l.Time,unit:w(t,m),bitWidth:w(e,[32,64]),values:e===32?x:L}),Ce=(t=m.MILLISECOND,e=null)=>({typeId:l.Timestamp,unit:w(t,m),timezone:e,values:L}),Ue=(t=C.MONTH_DAY_NANO)=>({typeId:l.Interval,unit:w(t,C),values:t===C.MONTH_DAY_NANO?void 0:x}),Ve=t=>({typeId:l.List,children:[B(t)],offsets:x}),Fe=t=>({typeId:l.Struct,children:Array.isArray(t)&&Nt(t[0])?t:Object.entries(t).map(([e,n])=>At(e,n))}),Re=(t,e,n,r)=>(n??(n=e.map((i,s)=>s)),{typeId:l.Union,mode:w(t,W),typeIds:n,typeMap:n.reduce((i,s,a)=>(i[s]=a,i),{}),children:e.map((i,s)=>B(i,`_${s}`)),typeIdForValue:r,offsets:x}),$e=t=>({typeId:l.FixedSizeBinary,stride:t}),ze=(t,e)=>({typeId:l.FixedSizeList,stride:e,children:[B(t)]}),ke=(t,e)=>({typeId:l.Map,keysSorted:t,children:[e],offsets:x}),je=(t=m.MILLISECOND)=>({typeId:l.Duration,unit:w(t,m),values:L}),Ye=()=>({typeId:l.LargeBinary,offsets:L}),_e=()=>({typeId:l.LargeUtf8,offsets:L}),He=t=>({typeId:l.LargeList,children:[B(t)],offsets:L}),Pe=(t,e)=>({typeId:l.RunEndEncoded,children:[J(B(t,"run_ends"),n=>n.type.typeId===l.Int,()=>"Run-ends must have an integer type."),B(e,"values")]}),We=t=>({typeId:l.ListView,children:[B(t,"value")],offsets:x}),Xe=t=>({typeId:l.LargeListView,children:[B(t,"value")],offsets:L});var j=new k(2).buffer;new L(j),new xt(j),new x(j),new vt(j);function O(t){if(t>2**53-1||t<-(2**53-1))throw Error(`BigInt exceeds integer number representation: ${t}`);return Number(t)}function Z(t,e){return Number(t/e)+Number(t%e)/Number(e)}var U=t=>BigInt.asUintN(64,t);function Je(t,e){let n=e<<1,r;return BigInt.asIntN(64,t[n+1])<0?(r=U(~t[n])|U(~t[n+1])<<64n,r=-(r+1n)):r=t[n]|t[n+1]<<64n,r}function Ge(t,e){let n=e<<2,r;return BigInt.asIntN(64,t[n+3])<0?(r=U(~t[n])|U(~t[n+1])<<64n|U(~t[n+2])<<128n|U(~t[n+3])<<192n,r=-(r+1n)):r=t[n]|t[n+1]<<64n|t[n+2]<<128n|t[n+3]<<192n,r}var Ze=new TextDecoder("utf-8");new TextEncoder;function Y(t){return Ze.decode(t)}function Bt(t,e){return(t[e>>3]&1<<e%8)!=0}function N(t,e){let n=e+h(t,e),r=n-h(t,n),i=v(t,r);return(s,a,o=null)=>{if(s<i){let u=v(t,r+s);if(u)return a(t,n+u)}return o}}function M(t,e){return e}function F(t,e){return!!qe(t,e)}function qe(t,e){return q(t,e)<<24>>24}function q(t,e){return t[e]}function v(t,e){return Ke(t,e)<<16>>16}function Ke(t,e){return t[e]|t[e+1]<<8}function h(t,e){return t[e]|t[e+1]<<8|t[e+2]<<16|t[e+3]<<24}function Ot(t,e){return h(t,e)>>>0}function b(t,e){return O(BigInt.asIntN(64,BigInt(Ot(t,e))+(BigInt(Ot(t,e+4))<<32n)))}function _(t,e){let n=e+h(t,e),r=h(t,n);return n+=4,Y(t.subarray(n,n+r))}function T(t,e,n,r){if(!e)return[];let i=e+h(t,e);return Array.from({length:h(t,i)},(s,a)=>r(t,i+4+a*n))}const K=Symbol("rowIndex");function Q(t,e){class n{constructor(s){this[K]=s}toJSON(){return Mt(t,e,this[K])}}let r=n.prototype;for(let i=0;i<t.length;++i){if(Object.hasOwn(r,t[i]))continue;let s=e[i];Object.defineProperty(r,t[i],{get(){return s.at(this[K])},enumerable:!0})}return i=>new n(i)}function Tt(t,e){return n=>Mt(t,e,n)}function Mt(t,e,n){let r={};for(let i=0;i<t.length;++i)r[t[i]]=e[i].at(n);return r}function Qe(t){return t instanceof P}var H=(at=class{constructor({length:t,nullCount:e,type:n,validity:r,values:i,offsets:s,sizes:a,children:o}){this.length=t,this.nullCount=e,this.type=n,this.validity=r,this.values=i,this.offsets=s,this.sizes=a,this.children=o,(!e||!this.validity)&&(this.at=u=>this.value(u))}get[Symbol.toStringTag](){return"Batch"}at(t){return this.isValid(t)?this.value(t):null}isValid(t){return Bt(this.validity,t)}value(t){return this.values[t]}slice(t,e){let n=e-t,r=Array(n);for(let i=0;i<n;++i)r[i]=this.at(t+i);return r}*[Symbol.iterator](){for(let t=0;t<this.length;++t)yield this.at(t)}},A(at,"ArrayType",null),at),P=class extends H{constructor(t){super(t);let{length:e,values:n}=this;this.values=n.subarray(0,e)}slice(t,e){return this.nullCount?super.slice(t,e):this.values.subarray(t,e)}[Symbol.iterator](){return this.nullCount?super[Symbol.iterator]():this.values[Symbol.iterator]()}},tt=(lt=class extends H{},A(lt,"ArrayType",k),lt),f=(ot=class extends H{},A(ot,"ArrayType",Array),ot),tn=class extends f{value(t){return null}},V=class extends tt{value(t){return O(this.values[t])}},en=class extends tt{value(t){let e=this.values[t],n=(e&31744)>>10,r=(e&1023)/1024,i=(-1)**((e&32768)>>15);switch(n){case 31:return i*(r?NaN:1/0);case 0:return i*(r?6103515625e-14*r:0)}return i*2**(n-15)*(1+r)}},nn=class extends f{value(t){return Bt(this.values,t)}},Ct=class extends H{constructor(t){super(t);let{bitWidth:e,scale:n}=this.type;this.decimal=e===128?Je:Ge,this.scale=10n**BigInt(n)}},rn=(ut=class extends Ct{value(t){return Z(this.decimal(this.values,t),this.scale)}},A(ut,"ArrayType",k),ut),sn=(ct=class extends Ct{value(t){return this.decimal(this.values,t)}},A(ct,"ArrayType",Array),ct),Ut=class extends f{constructor(t){super(t),this.source=t}value(t){return new Date(this.source.value(t))}},an=class extends tt{value(t){return 864e5*this.values[t]}};const ln=V;var on=class extends V{value(t){return super.value(t)*1e3}};const un=V;var cn=class extends V{value(t){return Z(this.values[t],1000n)}},dn=class extends V{value(t){return Z(this.values[t],1000000n)}},hn=class extends f{value(t){return this.values.subarray(t<<1,t+1<<1)}},fn=class extends f{value(t){let e=this.values,n=t<<4;return Float64Array.of(h(e,n),h(e,n+4),b(e,n+8))}},Vt=({values:t,offsets:e},n)=>t.subarray(e[n],e[n+1]),Ft=({values:t,offsets:e},n)=>t.subarray(O(e[n]),O(e[n+1])),yn=class extends f{value(t){return Vt(this,t)}},pn=class extends f{value(t){return Ft(this,t)}},gn=class extends f{value(t){return Y(Vt(this,t))}},mn=class extends f{value(t){return Y(Ft(this,t))}},vn=class extends f{value(t){let e=this.offsets;return this.children[0].slice(e[t],e[t+1])}},bn=class extends f{value(t){let e=this.offsets;return this.children[0].slice(O(e[t]),O(e[t+1]))}},xn=class extends f{value(t){let e=this.offsets[t],n=e+this.sizes[t];return this.children[0].slice(e,n)}},wn=class extends f{value(t){let e=this.offsets[t],n=e+this.sizes[t];return this.children[0].slice(O(e),O(n))}},Rt=class extends f{constructor(t){super(t),this.stride=this.type.stride}},In=class extends Rt{value(t){let{stride:e,values:n}=this;return n.subarray(t*e,(t+1)*e)}},Ln=class extends Rt{value(t){let{children:e,stride:n}=this;return e[0].slice(t*n,(t+1)*n)}};function $t({children:t,offsets:e},n){let[r,i]=t[0].children,s=e[n],a=e[n+1],o=[];for(let u=s;u<a;++u)o.push([r.at(u),i.at(u)]);return o}var An=class extends f{value(t){return $t(this,t)}},Nn=class extends f{value(t){return new Map($t(this,t))}},zt=class extends f{constructor({typeIds:t,...e}){super(e),this.typeIds=t,this.typeMap=this.type.typeMap}value(t,e=t){let{typeIds:n,children:r,typeMap:i}=this;return r[i[n[t]]].at(e)}},En=class extends zt{value(t){return super.value(t,this.offsets[t])}},kt=class extends f{constructor(t,e=Tt){super(t),this.names=this.type.children.map(n=>n.name),this.factory=e(this.names,this.children)}value(t){return this.factory(t)}},Sn=class extends kt{constructor(t){super(t,Q)}},Dn=class extends f{value(t){let[{values:e},n]=this.children;return n.at(X(e,t))}},Bn=class extends f{setDictionary(t){return this.dictionary=t,this.cache=t.cache(),this}value(t){return this.cache[this.key(t)]}key(t){return this.values[t]}},jt=class extends f{constructor({data:t,...e}){super(e),this.data=t}view(t){let{values:e,data:n}=this,r=t<<4,i=r+4,s=e,a=h(s,r);return a>12&&(i=h(s,r+12),s=n[h(s,r+8)]),s.subarray(i,i+a)}},On=class extends jt{value(t){return this.view(t)}},Tn=class extends jt{value(t){return Y(this.view(t))}};function Yt(t){let e=[];return{add(n){return e.push(n),this},clear:()=>e=[],done:()=>new Mn(e,t)}}var Mn=class{constructor(t,e=(n=>(n=t[0])==null?void 0:n.type)()){this.type=e,this.length=t.reduce((s,a)=>s+a.length,0),this.nullCount=t.reduce((s,a)=>s+a.nullCount,0),this.data=t;let r=t.length,i=new Int32Array(r+1);if(r===1){let[s]=t;i[1]=s.length,this.at=a=>s.at(a)}else for(let s=0,a=0;s<r;++s)i[s+1]=a+=t[s].length;this.offsets=i}get[Symbol.toStringTag](){return"Column"}[Symbol.iterator](){let t=this.data;return t.length===1?t[0][Symbol.iterator]():Cn(t)}at(t){var i;let{data:e,offsets:n}=this,r=X(n,t)-1;return(i=e[r])==null?void 0:i.at(t-n[r])}get(t){return this.at(t)}toArray(){let{length:t,nullCount:e,data:n}=this,r=!e&&Qe(n[0]),i=n.length;if(r&&i===1)return n[0].values;let s=new(!i||e>0?Array:n[0].constructor.ArrayType??n[0].values.constructor)(t);return r?Un(s,n):Vn(s,n)}cache(){return this._cache??(this._cache=this.toArray())}};function*Cn(t){for(let e=0;e<t.length;++e){let n=t[e][Symbol.iterator]();for(let r=n.next();!r.done;r=n.next())yield r.value}}function Un(t,e){for(let n=0,r=0;n<e.length;++n){let{values:i}=e[n];t.set(i,r),r+=i.length}return t}function Vn(t,e){let n=-1;for(let r=0;r<e.length;++r){let i=e[r];for(let s=0;s<i.length;++s)t[++n]=i.at(s)}return t}var Fn=class oe{constructor(e,n,r=!1){let i=e.fields.map(a=>a.name);this.schema=e,this.names=i,this.children=n,this.factory=r?Q:Tt;let s=[];this.getFactory=a=>s[a]??(s[a]=this.factory(i,n.map(o=>o.data[a])))}get[Symbol.toStringTag](){return"Table"}get numCols(){return this.names.length}get numRows(){var e;return((e=this.children[0])==null?void 0:e.length)??0}getChildAt(e){return this.children[e]}getChild(e){let n=this.names.findIndex(r=>r===e);return n>-1?this.children[n]:void 0}selectAt(e,n=[]){let{children:r,factory:i,schema:s}=this,{fields:a}=s;return new oe({...s,fields:e.map((o,u)=>Rn(a[o],n[u]))},e.map(o=>r[o]),i===Q)}select(e,n){let r=this.names,i=e.map(s=>r.indexOf(s));return this.selectAt(i,n)}toColumns(){let{children:e,names:n}=this,r={};return n.forEach((i,s)=>{var a;return r[i]=((a=e[s])==null?void 0:a.toArray())??[]}),r}toArray(){var a;let{children:e,getFactory:n,numRows:r}=this,i=((a=e[0])==null?void 0:a.data)??[],s=Array(r);for(let o=0,u=-1;o<i.length;++o){let d=n(o);for(let c=0;c<i[o].length;++c)s[++u]=d(c)}return s}*[Symbol.iterator](){var i;let{children:e,getFactory:n}=this,r=((i=e[0])==null?void 0:i.data)??[];for(let s=0;s<r.length;++s){let a=n(s);for(let o=0;o<r[s].length;++o)yield a(o)}}at(e){let{children:n,getFactory:r,numRows:i}=this;if(e<0||e>=i)return null;let[{offsets:s}]=n,a=X(s,e)-1;return r(a)(e-s[a])}get(e){return this.at(e)}};function Rn(t,e){return e!=null&&e!==t.name?{...t,name:e}:t}function $n(t,e={}){let{typeId:n,bitWidth:r,precision:i,unit:s}=t,{useBigInt:a,useDate:o,useDecimalBigInt:u,useMap:d,useProxy:c}=e;switch(n){case l.Null:return tn;case l.Bool:return nn;case l.Int:case l.Time:case l.Duration:return a||r<64?P:V;case l.Float:return i?P:en;case l.Date:return _t(s===z.DAY?an:ln,o&&Ut);case l.Timestamp:return _t(s===m.SECOND?on:s===m.MILLISECOND?un:s===m.MICROSECOND?cn:dn,o&&Ut);case l.Decimal:return u?sn:rn;case l.Interval:return s===C.DAY_TIME?hn:s===C.YEAR_MONTH?P:fn;case l.FixedSizeBinary:return In;case l.Utf8:return gn;case l.LargeUtf8:return mn;case l.Binary:return yn;case l.LargeBinary:return pn;case l.BinaryView:return On;case l.Utf8View:return Tn;case l.List:return vn;case l.LargeList:return bn;case l.Map:return d?Nn:An;case l.ListView:return xn;case l.LargeListView:return wn;case l.FixedSizeList:return Ln;case l.Struct:return c?Sn:kt;case l.RunEndEncoded:return Dn;case l.Dictionary:return Bn;case l.Union:return t.mode?En:zt}throw Error(G(n))}function _t(t,e){return e?class extends e{constructor(n){super(new t(n))}}:t}function zn(t,e){return{offset:b(t,e),metadataLength:h(t,e+8),bodyLength:b(t,e+16)}}function Ht(t,e){return T(t,e,24,zn)}function Pt(t,e,n){let r=N(t,e);if(r(10,M,0))throw Error("Record batch compression not implemented");let i=n<$.V4?8:0;return{length:r(4,b,0),nodes:T(t,r(6,M),16,(s,a)=>({length:b(s,a),nullCount:b(s,a+8)})),regions:T(t,r(8,M),16+i,(s,a)=>({offset:b(s,a+i),length:b(s,a+i+8)})),variadic:T(t,r(12,M),8,b)}}function kn(t,e,n){let r=N(t,e);return{id:r(4,b,0),data:r(6,(i,s)=>Pt(i,s,n)),isDelta:r(8,F,!1)}}function Wt(t,e,n,r){w(n,l,G);let i=N(t,e);switch(n){case l.Binary:return De();case l.Utf8:return Be();case l.LargeBinary:return Ye();case l.LargeUtf8:return _e();case l.List:return Ve(r[0]);case l.ListView:return We(r[0]);case l.LargeList:return He(r[0]);case l.LargeListView:return Xe(r[0]);case l.Struct:return Fe(r);case l.RunEndEncoded:return Pe(r[0],r[1]);case l.Int:return St(i(4,h,0),i(6,F,!1));case l.Float:return Se(i(4,v,mt.HALF));case l.Decimal:return Oe(i(4,h,0),i(6,h,0),i(8,h,128));case l.Date:return Te(i(4,v,z.MILLISECOND));case l.Time:return Me(i(4,v,m.MILLISECOND),i(6,h,32));case l.Timestamp:return Ce(i(4,v,m.SECOND),i(6,_));case l.Interval:return Ue(i(4,v,C.YEAR_MONTH));case l.Duration:return je(i(4,v,m.MILLISECOND));case l.FixedSizeBinary:return $e(i(4,h,0));case l.FixedSizeList:return ze(r[0],i(4,h,0));case l.Map:return ke(i(4,F,!1),r[0]);case l.Union:return Re(i(4,v,W.Sparse),r,T(t,i(6,M),4,h))}return{typeId:n}}function et(t,e){let n=T(t,e,4,(r,i)=>{let s=N(r,i);return[s(4,_),s(6,_)]});return n.length?new Map(n):null}function Xt(t,e,n){let r=N(t,e);return{version:n,endianness:r(4,v,0),fields:r(6,jn,[]),metadata:r(8,et)}}function jn(t,e){return T(t,e,4,Jt)}function Jt(t,e){let n=N(t,e),r=n(8,q,l.NONE),i=n(10,M,0),s=n(12,_n),a=Wt(t,i,r,n(14,(o,u)=>Yn(o,u)));return s&&(s.dictionary=a,a=s),{name:n(4,_),type:a,nullable:n(6,F,!1),metadata:n(16,et)}}function Yn(t,e){let n=T(t,e,4,Jt);return n.length?n:null}function _n(t,e){if(!e)return null;let n=N(t,e);return Ee(null,n(6,Hn,Dt()),n(8,F,!1),n(4,b,0))}function Hn(t,e){return Wt(t,e,l.Int)}var Pn=(t,e)=>`Expected to read ${t} metadata bytes, but only read ${e}.`,Wn=(t,e)=>`Expected to read ${t} bytes for message body, but only read ${e}.`,Xn=t=>`Unsupported message type: ${t} (${Lt(D,t)})`;function nt(t,e){let n=h(t,e)||0;if(e+=4,n===-1&&(n=h(t,e)||0,e+=4),n===0)return null;let r=t.subarray(e,e+=n);if(r.byteLength<n)throw Error(Pn(n,r.byteLength));let i=N(r,0),s=i(4,v,$.V1),a=i(6,q,D.NONE),o=i(8,M,0),u=i(10,b,0),d;if(o){let c=a===D.Schema?Xt:a===D.DictionaryBatch?kn:a===D.RecordBatch?Pt:null;if(!c)throw Error(Xn(a));if(d=c(r,o,s),u>0){let g=t.subarray(e,e+=u);if(g.byteLength<u)throw Error(Wn(u,g.byteLength));d.body=g}}return{version:s,type:a,index:e,content:d}}function Jn(t){let e=t instanceof ArrayBuffer?new Uint8Array(t):t;return e instanceof Uint8Array&&Gn(e)?qn(e):Zn(e)}function Gn(t){if(!t||t.length<4)return!1;for(let e=0;e<6;++e)if(gt[e]!==t[e])return!1;return!0}function Zn(t){let e=[t].flat(),n,r=[],i=[];for(let s of e){if(!(s instanceof Uint8Array))throw Error("IPC data batch was not a Uint8Array.");let a=0;for(;;){let o=nt(s,a);if(o===null)break;if(a=o.index,o.content)switch(o.type){case D.Schema:n||(n=o.content);break;case D.RecordBatch:r.push(o.content);break;case D.DictionaryBatch:i.push(o.content);break}}}return{schema:n,dictionaries:i,records:r,metadata:null}}function qn(t){let e=t.byteLength-(gt.length+4),n=N(t,e-h(t,e)),r=n(4,v,$.V1),i=n(8,Ht,[]),s=n(10,Ht,[]);return{schema:n(6,(a,o)=>Xt(a,o,r)),dictionaries:i.map(({offset:a})=>nt(t,a).content),records:s.map(({offset:a})=>nt(t,a).content),metadata:n(12,et)}}function rt(t,e){return Kn(Jn(t),e)}function Kn(t,e={}){let{schema:n={fields:[]},dictionaries:r,records:i}=t,{version:s,fields:a}=n,o=new Map,u=tr(e,s,o),d=new Map;Qn(n,y=>{let p=y.type;p.typeId===l.Dictionary&&d.set(p.id,p.dictionary)});let c=new Map;for(let y of r){let{id:p,data:E,isDelta:S,body:ue}=y,dt=d.get(p),ht=it(dt,u({...E,body:ue}));if(c.has(p)){let ft=c.get(p);S||ft.clear(),ft.add(ht)}else{if(S)throw Error("Delta update can not be first dictionary batch.");c.set(p,Yt(dt).add(ht))}}c.forEach((y,p)=>o.set(p,y.done()));let g=a.map(y=>Yt(y.type));for(let y of i){let p=u(y);a.forEach((E,S)=>g[S].add(it(E.type,p)))}return new Fn(n,g.map(y=>y.done()),e.useProxy)}function Qn(t,e){t.fields.forEach(function n(r){var i,s,a;e(r),(s=(i=r.type.dictionary)==null?void 0:i.children)==null||s.forEach(n),(a=r.type.children)==null||a.forEach(n)})}function tr(t,e,n){let r={version:e,options:t,dictionary:i=>n.get(i)};return i=>{let{length:s,nodes:a,regions:o,variadic:u,body:d}=i,c=-1,g=-1,y=-1;return{...r,length:s,node:()=>a[++c],buffer:p=>{let{length:E,offset:S}=o[++g];return p?new p(d.buffer,d.byteOffset+S,E/p.BYTES_PER_ELEMENT):d.subarray(S,S+E)},variadic:()=>u[++y],visit(p){return p.map(E=>it(E.type,this))}}}}function it(t,e){let{typeId:n}=t,{length:r,options:i,node:s,buffer:a,variadic:o,version:u}=e,d=$n(t,i);if(n===l.Null)return new d({length:r,nullCount:r,type:t});let c={...s(),type:t};switch(n){case l.Bool:case l.Int:case l.Time:case l.Duration:case l.Float:case l.Decimal:case l.Date:case l.Timestamp:case l.Interval:case l.FixedSizeBinary:return new d({...c,validity:a(),values:a(t.values)});case l.Utf8:case l.LargeUtf8:case l.Binary:case l.LargeBinary:return new d({...c,validity:a(),offsets:a(t.offsets),values:a()});case l.BinaryView:case l.Utf8View:return new d({...c,validity:a(),values:a(),data:Array.from({length:o()},()=>a())});case l.List:case l.LargeList:case l.Map:return new d({...c,validity:a(),offsets:a(t.offsets),children:e.visit(t.children)});case l.ListView:case l.LargeListView:return new d({...c,validity:a(),offsets:a(t.offsets),sizes:a(t.offsets),children:e.visit(t.children)});case l.FixedSizeList:case l.Struct:return new d({...c,validity:a(),children:e.visit(t.children)});case l.RunEndEncoded:return new d({...c,children:e.visit(t.children)});case l.Dictionary:{let{id:g,indices:y}=t;return new d({...c,validity:a(),values:a(y.values)}).setDictionary(e.dictionary(g))}case l.Union:return u<$.V5&&a(),new d({...c,typeIds:a(It),offsets:t.mode===W.Sparse?null:a(t.offsets),children:e.visit(t.children)});default:throw Error(G(n))}}new Uint16Array(new Uint8Array([1,0]).buffer)[0];function R(t,e){let n=new Map;return(...r)=>{let i=e(...r);if(n.has(i))return n.get(i);let s=t(...r).finally(()=>{n.delete(i)});return n.set(i,s),s}}function st(t,e){return ve(t,e)}function er(){return pe()}const I=ge;function Gt(){let t=nr(er()),e=n=>JSON.stringify(n);return{load:R(t.load.bind(t),e),sanitize:R(t.sanitize.bind(t),e),http:R(t.http.bind(t),e),file:R(t.file.bind(t),e)}}function nr(t){return{...t,async load(e,n){return e.endsWith(".arrow")?rt(await Zt(e),{useProxy:!1}).toArray():t.load(e,n)}}}const Zt=R(t=>fetch(t).then(e=>e.arrayBuffer()),t=>t);var qt=I.integer,Kt=I.number,rr=I.date,ir=I.boolean,Qt=()=>(I.integer=t=>{if(t==="")return"";if(t==="-inf"||t==="inf")return t;function e(r){let i=qt(r);return Number.isNaN(i)?r:i}let n=Number.parseInt(t,10);if(Ie(n)){if(!(Math.abs(n)>2**53-1))return e(t);try{return BigInt(t)}catch{return e(t)}}else return""},I.number=t=>{if(t==="-inf"||t==="inf")return t;let e=Kt(t);return Number.isNaN(e)?t:e},()=>{I.integer=qt,I.number=Kt}),te=()=>(I.date=t=>{if(t==="")return"";if(t==null)return null;if(!/^\d{4}-\d{2}-\d{2}(T[\d.:]+(Z|[+-]\d{2}:?\d{2})?)?$/.test(t))return t;try{let e=new Date(t);return Number.isNaN(e.getTime())?t:e}catch{return ye.warn(`Failed to parse date: ${t}`),t}},()=>{I.date=rr});I.boolean=t=>t==="True"?!0:t==="False"?!1:ir(t);const ee=Gt();async function sr(t,e,n={}){let{handleBigIntAndNumberLike:r=!1,replacePeriod:i=!1}=n;if(t.endsWith(".arrow")||(e==null?void 0:e.type)==="arrow")return rt(await Zt(t),{useProxy:!0,useDate:!0,useBigInt:r}).toArray();let s=[te];r&&s.push(Qt);let a=[];try{let o=await ee.load(t);if(!e){if(typeof o=="string")try{JSON.parse(o),e={type:"json"}}catch{e={type:"csv",parse:"auto"}}typeof o=="object"&&(e={type:"json"})}let u=(e==null?void 0:e.type)==="csv";u&&typeof o=="string"&&(o=lr(o)),u&&typeof o=="string"&&i&&(o=or(o));let d=(e==null?void 0:e.parse)||"auto";return typeof d=="object"&&(d=yt.mapValues(d,c=>c==="time"?"string":c==="datetime"?"date":c)),a=s.map(c=>c()),u?st(o,{...e,parse:d}):st(o,e)}finally{a.forEach(o=>o())}}function ar(t,e=!0){let n=[te];e&&n.push(Qt);let r=n.map(s=>s()),i=st(t,{type:"csv",parse:"auto"});return r.forEach(s=>s()),i}function lr(t){return t!=null&&t.includes(",")?ne(t,e=>{let n=new Set;return e.map(r=>{let i=cr(r,n);return n.add(i),i})}):t}function or(t){return t!=null&&t.includes(".")?ne(t,e=>e.map(n=>n.replaceAll(".","\u2024"))):t}function ne(t,e){let n=t.split(`
|
|
2
2
|
`);return n[0]=e(n[0].split(",")).join(","),n.join(`
|
|
3
|
-
`)}var ur="\u200B";function cr(t,e){let n=t,r=1;for(;e.has(n);)n=`${t}${ur.repeat(r)}`,r++;return n}var dr={version:"1.1.0"};function hr(t,e,n,r){if(me(t))return`[${t.map(i=>e(be(i)?i:
|
|
3
|
+
`)}var ur="\u200B";function cr(t,e){let n=t,r=1;for(;e.has(n);)n=`${t}${ur.repeat(r)}`,r++;return n}var dr={version:"1.1.0"};function hr(t,e,n,r){if(me(t))return`[${t.map(i=>e(be(i)?i:re(i,n))).join(", ")}]`;if(pt(t)){let i="",{title:s,image:a,...o}=t;s&&(i+=`<h2>${e(s)}</h2>`),a&&(i+=`<img src="${new URL(e(a),r||location.href).href}">`);let u=Object.keys(o);if(u.length>0){i+="<table>";for(let d of u){let c=o[d];c!==void 0&&(pt(c)&&(c=re(c,n)),i+=`<tr><td class="key">${e(d)}</td><td class="value">${e(c)}</td></tr>`)}i+="</table>"}return i||"{}"}return e(t)}function fr(t){let e=[];return function(n,r){return typeof r!="object"||!r?r:(e.length=e.indexOf(this)+1,e.length>t?"[Object]":e.indexOf(r)>=0?"[Circular]":(e.push(r),r))}}function re(t,e){return JSON.stringify(t,fr(e))}var yr=`#vg-tooltip-element {
|
|
4
4
|
visibility: hidden;
|
|
5
5
|
padding: 8px;
|
|
6
6
|
position: fixed;
|
|
@@ -58,4 +58,4 @@ var ue=Object.defineProperty;var ce=(t,e,n)=>e in t?ue(t,e,{enumerable:!0,config
|
|
|
58
58
|
#vg-tooltip-element.dark-theme td.key {
|
|
59
59
|
color: #bfbfbf;
|
|
60
60
|
}
|
|
61
|
-
`,
|
|
61
|
+
`,ie="vg-tooltip-element",pr={offsetX:10,offsetY:10,id:ie,styleId:"vega-tooltip-style",theme:"light",disableDefaultStyle:!1,sanitize:gr,maxDepth:2,formatTooltip:hr,baseURL:"",anchor:"cursor",position:["top","bottom","left","right","top-left","top-right","bottom-left","bottom-right"]};function gr(t){return String(t).replace(/&/g,"&").replace(/</g,"<")}function mr(t){if(!/^[A-Za-z]+[-:.\w]*$/.test(t))throw Error("Invalid HTML ID");return yr.toString().replaceAll(ie,t)}function se(t,e,{offsetX:n,offsetY:r}){let i=ae({x1:t.clientX,x2:t.clientX,y1:t.clientY,y2:t.clientY},e,n,r);for(let s of["bottom-right","bottom-left","top-right","top-left"])if(le(i[s],e))return i[s];return i["top-left"]}function vr(t,e,n,r,i){let{position:s,offsetX:a,offsetY:o}=i,u=t._el.getBoundingClientRect(),d=t._origin,c=ae(br(u,d,n),r,a,o),g=Array.isArray(s)?s:[s];for(let y of g)if(le(c[y],r)&&!xr(e,c[y],r))return c[y];return se(e,r,i)}function br(t,e,n){let r=n.isVoronoi?n.datum.bounds:n.bounds,i=t.left+e[0]+r.x1,s=t.top+e[1]+r.y1,a=n;for(;a.mark.group;)a=a.mark.group,i+=a.x??0,s+=a.y??0;let o=r.x2-r.x1,u=r.y2-r.y1;return{x1:i,x2:i+o,y1:s,y2:s+u}}function ae(t,e,n,r){let i=(t.x1+t.x2)/2,s=(t.y1+t.y2)/2,a=t.x1-e.width-n,o=i-e.width/2,u=t.x2+n,d=t.y1-e.height-r,c=s-e.height/2,g=t.y2+r;return{top:{x:o,y:d},bottom:{x:o,y:g},left:{x:a,y:c},right:{x:u,y:c},"top-left":{x:a,y:d},"top-right":{x:u,y:d},"bottom-left":{x:a,y:g},"bottom-right":{x:u,y:g}}}function le(t,e){return t.x>=0&&t.y>=0&&t.x+e.width<=window.innerWidth&&t.y+e.height<=window.innerHeight}function xr(t,e,n){return t.clientX>=e.x&&t.clientX<=e.x+n.width&&t.clientY>=e.y&&t.clientY<=e.y+n.height}var wr=class{constructor(t){A(this,"call");A(this,"options");A(this,"el");this.options={...pr,...t};let e=this.options.id;if(this.el=null,this.call=this.tooltipHandler.bind(this),!this.options.disableDefaultStyle&&!document.getElementById(this.options.styleId)){let n=document.createElement("style");n.setAttribute("id",this.options.styleId),n.innerHTML=mr(e);let r=document.head;r.childNodes.length>0?r.insertBefore(n,r.childNodes[0]):r.appendChild(n)}}tooltipHandler(t,e,n,r){if(this.el=document.getElementById(this.options.id),this.el||(this.el=document.createElement("div"),this.el.setAttribute("id",this.options.id),this.el.classList.add("vg-tooltip"),(document.fullscreenElement??document.body).appendChild(this.el)),r==null||r===""){this.el.classList.remove("visible",`${this.options.theme}-theme`);return}this.el.innerHTML=this.options.formatTooltip(r,this.options.sanitize,this.options.maxDepth,this.options.baseURL),this.el.classList.add("visible",`${this.options.theme}-theme`);let{x:i,y:s}=this.options.anchor==="mark"?vr(t,e,n,this.el.getBoundingClientRect(),this.options):se(e,this.el.getBoundingClientRect(),this.options);this.el.style.top=`${s}px`,this.el.style.left=`${i}px`}};dr.version;const Ir=new wr;function Lr(t){if(typeof t=="object"&&t&&"width"in t)return t.width}function Ar(t){return!t||Object.keys(t).length===0?"auto":yt.mapValues(t,e=>e==="date"||e==="time"?"string":e==="datetime"?"date":e)}export{sr as a,rt as c,ar as i,Ar as n,ee as o,Ir as r,Gt as s,Lr as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{s as z}from"./chunk-LvLJmgfZ.js";import{n as C}from"./useEvent-O0nX5vok.js";import{t as Y}from"./react-Bj1aDYRI.js";import"./react-dom-CSu739Rf.js";import{t as tt}from"./compiler-runtime-B3qBwwSJ.js";import{t as et}from"./debounce-DS_VtWMt.js";import{a as nt,r as rt,t as at}from"./utils-BuPoTKhl.js";import{t as N}from"./uniq-fnEfqrGj.js";import{c as T,m as _}from"./useEventListener-BGihH8bs.js";import{n as V}from"./config-DeEqZTX7.js";import{t as it}from"./jsx-runtime-icT_Ltz2.js";import{r as ot}from"./button-BZAv3veu.js";import{t as lt}from"./cn-BoaCR37F.js";import{u as ct}from"./toDate-BqKH-Jd9.js";import"./session-CXChHxAw.js";import{r as st}from"./useTheme-CM9j8dgy.js";import"./Combination-CBJmtdux.js";import{t as mt}from"./tooltip-CNmaER6z.js";import{t as pt}from"./isValid-BGe7pJXT.js";import{n as ut}from"./vega-loader.browser-CZV6_g2i.js";import{t as ft}from"./react-vega-BZav_-2n.js";import"./defaultLocale-OkOxlkkM.js";import"./defaultLocale-DK1MWd7f.js";import{r as dt,t as ht}from"./alert-OQZHipbB.js";import{n as gt}from"./error-banner-DQBz1e-2.js";import{n as yt}from"./useAsyncData-D-4ifFXh.js";import{t as vt}from"./formats-DzzQnJYt.js";import{t as H}from"./useDeepCompareMemoize-yyiB9aJX.js";var kt=tt(),x=z(Y(),1);function bt(t){return t.data&&"url"in t.data&&(t.data.url=V(t.data.url).href),t}const u={arc:"arc",area:"area",bar:"bar",image:"image",line:"line",point:"point",rect:"rect",rule:"rule",text:"text",tick:"tick",trail:"trail",circle:"circle",square:"square",geoshape:"geoshape"};var F=new Set(["boxplot","errorband","errorbar"]);const S={getMarkType(t){let e=typeof t=="string"?t:t.type;if(F.has(e))throw Error("Not supported");return e},isInteractive(t){let e=typeof t=="string"?t:t.type;return!F.has(e)},makeClickable(t){let e=typeof t=="string"?t:t.type;return e in u?typeof t=="string"?{type:t,cursor:"pointer",tooltip:!0}:{...t,type:e,cursor:"pointer",tooltip:!0}:t},getOpacity(t){return typeof t=="string"?null:"opacity"in t&&typeof t.opacity=="number"?t.opacity:null}},y={point(t){return t==null?"select_point":`select_point_${t}`},interval(t){return t==null?"select_interval":`select_interval_${t}`},legendSelection(t){return`legend_selection_${t}`},binColoring(t){return t==null?"bin_coloring":`bin_coloring_${t}`},HIGHLIGHT:"highlight",PAN_ZOOM:"pan_zoom",hasPoint(t){return t.some(e=>e.startsWith("select_point"))},hasInterval(t){return t.some(e=>e.startsWith("select_interval"))},hasLegend(t){return t.some(e=>e.startsWith("legend_selection"))},hasPanZoom(t){return t.some(e=>e.startsWith("pan_zoom"))},isBinColoring(t){return t.startsWith("bin_coloring")}},j={highlight(){return{name:y.HIGHLIGHT,select:{type:"point",on:"mouseover"}}},interval(t,e){return{name:y.interval(e),select:{type:"interval",encodings:W(t),mark:{fill:"#669EFF",fillOpacity:.07,stroke:"#669EFF",strokeOpacity:.4},on:"[mousedown[!event.metaKey], mouseup] > mousemove[!event.metaKey]",translate:"[mousedown[!event.metaKey], mouseup] > mousemove[!event.metaKey]"}}},point(t,e){return{name:y.point(e),select:{type:"point",encodings:W(t),on:"click[!event.metaKey]"}}},binColoring(t){return{name:y.binColoring(t),select:{type:"point",on:"click[!event.metaKey]"}}},legend(t){return{name:y.legendSelection(t),select:{type:"point",fields:[t]},bind:"legend"}},panZoom(){return{name:y.PAN_ZOOM,bind:"scales",select:{type:"interval",on:"[mousedown[event.metaKey], window:mouseup] > window:mousemove!",translate:"[mousedown[event.metaKey], window:mouseup] > window:mousemove!",zoom:"wheel![event.metaKey]"}}}};function W(t){switch(S.getMarkType(t.mark)){case u.image:case u.trail:return;case u.area:case u.arc:return["color"];case u.bar:{let e=wt(t);return e==="horizontal"?["y"]:e==="vertical"?["x"]:void 0}case u.circle:case u.geoshape:case u.line:case u.point:case u.rect:case u.rule:case u.square:case u.text:case u.tick:return["x","y"]}}function P(t){return"params"in t&&t.params&&t.params.length>0?N(t.params.filter(e=>e==null?!1:"select"in e&&e.select!==void 0).map(e=>e.name)):"layer"in t?N(t.layer.flatMap(P)):"vconcat"in t?N(t.vconcat.flatMap(P)):"hconcat"in t?N(t.hconcat.flatMap(P)):[]}function wt(t){var a,r;if(!t||!("mark"in t))return;let e=(a=t.encoding)==null?void 0:a.x,n=(r=t.encoding)==null?void 0:r.y;if(e&&"type"in e&&e.type==="nominal")return"vertical";if(n&&"type"in n&&n.type==="nominal"||e&&"aggregate"in e)return"horizontal";if(n&&"aggregate"in n)return"vertical"}function xt(t){if(!t.encoding)return[];let e=[];for(let n of Object.values(t.encoding))n&&typeof n=="object"&&"bin"in n&&n.bin&&"field"in n&&typeof n.field=="string"&&e.push(n.field);return e}function D(t){if(!t||!("encoding"in t))return[];let{encoding:e}=t;return e?Object.entries(e).flatMap(n=>{let[a,r]=n;return!r||!St.has(a)?[]:"field"in r&&typeof r.field=="string"?[r.field]:"condition"in r&&r.condition&&typeof r.condition=="object"&&"field"in r.condition&&r.condition.field&&typeof r.condition.field=="string"?[r.condition.field]:[]}):[]}var St=new Set(["color","fill","fillOpacity","opacity","shape","size"]);function G(t,e,n,a){let r=n.filter(o=>y.isBinColoring(o)),i={and:(r.length>0?r:n).map(o=>({param:o}))};if(t==="opacity"){let o=S.getOpacity(a)||1;return{...e,opacity:{condition:{test:i,value:o},value:o/5}}}else return e}function At(t){if(!("select"in t)||!t.select)return JSON.stringify(t);let e=t.select;if(typeof e=="string")return JSON.stringify({type:e,bind:t.bind});let n={type:e.type,encodings:"encodings"in e&&e.encodings?[...e.encodings].sort():void 0,fields:"fields"in e&&e.fields?[...e.fields].sort():void 0,bind:t.bind};return JSON.stringify(n)}function $(t){let e=E(t);if(e.length===0)return t;let n=_t(e);return n.length===0?t:{...L(K(t,new Set(n.map(a=>a.name))),n.map(a=>a.name)),params:[...t.params||[],...n]}}function E(t){let e=[];if("vconcat"in t&&Array.isArray(t.vconcat))for(let n of t.vconcat)e.push(...E(n));else if("hconcat"in t&&Array.isArray(t.hconcat))for(let n of t.hconcat)e.push(...E(n));else{if("layer"in t)return[];"mark"in t&&"params"in t&&t.params&&t.params.length>0&&e.push({params:t.params})}return e}function _t(t){if(t.length===0)return[];let e=new Map,n=t.length;for(let{params:r}of t){let i=new Set;for(let o of r){let l=At(o);i.has(l)||(i.add(l),e.has(l)||e.set(l,{count:0,param:o}),e.get(l).count++)}}let a=[];for(let[,{count:r,param:i}]of e)r===n&&a.push(i);return a}function K(t,e){if("vconcat"in t&&Array.isArray(t.vconcat))return{...t,vconcat:t.vconcat.map(n=>K(n,e))};if("hconcat"in t&&Array.isArray(t.hconcat))return{...t,hconcat:t.hconcat.map(n=>K(n,e))};if("mark"in t&&"params"in t&&t.params){let n=t.params,a=[];for(let r of n){if(!r||typeof r!="object"||!("name"in r)){a.push(r);continue}e.has(r.name)||a.push(r)}if(a.length===0){let{params:r,...i}=t;return i}return{...t,params:a}}return t}function L(t,e){return"vconcat"in t&&Array.isArray(t.vconcat)?{...t,vconcat:t.vconcat.map(n=>L(n,e))}:"hconcat"in t&&Array.isArray(t.hconcat)?{...t,hconcat:t.hconcat.map(n=>L(n,e))}:"layer"in t?t:"mark"in t&&S.isInteractive(t.mark)?{...t,mark:S.makeClickable(t.mark),encoding:G("opacity",t.encoding||{},e,t.mark)}:t}function Z(t,e){var l,k;let{chartSelection:n=!0,fieldSelection:a=!0}=e;if(!n&&!a)return t;(l=t.params)!=null&&l.some(s=>s.bind==="legend")&&(a=!1);let r=(k=t.params)==null?void 0:k.some(s=>!s.bind);r&&(n=!1);let i="vconcat"in t||"hconcat"in t;if(r&&i)return t;if("vconcat"in t){let s=t.vconcat.map(m=>"mark"in m?Z(m,{chartSelection:n,fieldSelection:a}):m);return $({...t,vconcat:s})}if("hconcat"in t){let s=t.hconcat.map(m=>"mark"in m?Z(m,{chartSelection:n,fieldSelection:a}):m);return $({...t,hconcat:s})}if("layer"in t){let s=t.params&&t.params.length>0,m=a!==!1&&!s,v=[];if(m){let p=t.layer.flatMap(f=>"mark"in f?D(f):[]);v=[...new Set(p)],Array.isArray(a)&&(v=v.filter(f=>a.includes(f)))}let w=t.layer.map((p,f)=>{if(!("mark"in p))return p;let h=p;if(f===0&&v.length>0){let O=v.map(M=>j.legend(M));h={...h,params:[...h.params||[],...O]}}return h=q(h,n,f),h=R(h),f===0&&(h=J(h)),h});return{...t,layer:w}}if(!("mark"in t)||!S.isInteractive(t.mark))return t;let o=t;return o=jt(o,a),o=q(o,n,void 0),o=R(o),o=J(o),o}function jt(t,e){if(e===!1)return t;let n=D(t);Array.isArray(e)&&(n=n.filter(i=>e.includes(i)));let a=n.map(i=>j.legend(i)),r=[...t.params||[],...a];return{...t,params:r}}function q(t,e,n){if(e===!1)return t;let a;try{a=S.getMarkType(t.mark)}catch{return t}if(a==="geoshape")return t;let r=xt(t),i=e===!0?r.length>0?["point"]:Ot(a):[e];if(!i||i.length===0)return t;let o=i.map(k=>k==="interval"?j.interval(t,n):j.point(t,n)),l=[...t.params||[],...o];return r.length>0&&i.includes("point")&&l.push(j.binColoring(n)),{...t,params:l}}function J(t){let e;try{e=S.getMarkType(t.mark)}catch{}if(e==="geoshape")return t;let n=t.params||[];return n.some(a=>a.bind==="scales")?t:{...t,params:[...n,j.panZoom()]}}function R(t){let e="encoding"in t?t.encoding:void 0,n=t.params||[],a=n.map(r=>r.name);return n.length===0||!S.isInteractive(t.mark)?t:{...t,mark:S.makeClickable(t.mark),encoding:G("opacity",e||{},a,t.mark)}}function Ot(t){switch(t){case"arc":case"area":return["point"];case"text":case"bar":return["point","interval"];case"line":return;default:return["point","interval"]}}async function Mt(t){if(!t)return t;let e="datasets"in t?{...t.datasets}:{},n=async r=>{if(!r)return r;if("layer"in r){let l=await Promise.all(r.layer.map(n));r={...r,layer:l}}if("hconcat"in r){let l=await Promise.all(r.hconcat.map(n));r={...r,hconcat:l}}if("vconcat"in r){let l=await Promise.all(r.vconcat.map(n));r={...r,vconcat:l}}if("spec"in r&&(r={...r,spec:await n(r.spec)}),!r.data||!("url"in r.data))return r;let i;try{i=V(r.data.url)}catch{return r}let o=await nt(i.href,r.data.format);return e[i.pathname]=o,{...r,data:{name:i.pathname}}},a=await n(t);return Object.keys(e).length===0?a:{...a,datasets:e}}var d=z(it(),1);ut("arrow",vt);var Nt=t=>{let e=(0,kt.c)(12),{value:n,setValue:a,chartSelection:r,fieldSelection:i,spec:o,embedOptions:l}=t,k,s;e[0]===o?(k=e[1],s=e[2]):(k=async()=>Mt(o),s=[o],e[0]=o,e[1]=k,e[2]=s);let{data:m,error:v}=yt(k,s);if(v){let p;return e[3]===v?p=e[4]:(p=(0,d.jsx)(gt,{error:v}),e[3]=v,e[4]=p),p}if(!m)return null;let w;return e[5]!==r||e[6]!==l||e[7]!==i||e[8]!==m||e[9]!==a||e[10]!==n?(w=(0,d.jsx)(Pt,{value:n,setValue:a,chartSelection:r,fieldSelection:i,spec:m,embedOptions:l}),e[5]=r,e[6]=l,e[7]=i,e[8]=m,e[9]=a,e[10]=n,e[11]=w):w=e[11],w},Pt=({value:t,setValue:e,chartSelection:n,fieldSelection:a,spec:r,embedOptions:i})=>{let{theme:o}=st(),l=(0,x.useRef)(null),k=(0,x.useRef)(void 0),[s,m]=(0,x.useState)(),v=(0,x.useMemo)(()=>i&&"actions"in i?i.actions:{source:!1,compiled:!1},[i]),w=H(r),p=(0,x.useMemo)(()=>Z(bt(w),{chartSelection:n,fieldSelection:a}),[w,n,a]),f=(0,x.useMemo)(()=>P(p),[p]),h=C(c=>{e({...t,...c})}),O=(0,x.useMemo)(()=>et((c,g)=>{_.debug("[Vega signal]",c,g);let b=T.mapValues(g,Ct);b=T.mapValues(b,It),h({[c]:b})},100),[h]),M=H(f),I=(0,x.useMemo)(()=>M.reduce((c,g)=>(y.PAN_ZOOM===g||y.isBinColoring(g)||c.push({signalName:g,handler:(b,X)=>O(b,X)}),c),[]),[M,O]),B=C(c=>{_.error(c),_.debug(p),m(c)}),Q=C(c=>{_.debug("[Vega view] created",c),k.current=c,m(void 0)}),U=()=>{let c=[];return y.hasPoint(f)&&c.push(["Point selection","click to select a point; hold shift for multi-select"]),y.hasInterval(f)&&c.push(["Interval selection","click and drag to select an interval"]),y.hasLegend(f)&&c.push(["Legend selection","click to select a legend item; hold shift for multi-select"]),y.hasPanZoom(f)&&c.push(["Pan","hold the meta key and drag"],["Zoom","hold the meta key and scroll"]),c.length===0?null:(0,d.jsx)(mt,{delayDuration:300,side:"left",content:(0,d.jsx)("div",{className:"text-xs flex flex-col",children:c.map((g,b)=>(0,d.jsxs)("div",{children:[(0,d.jsxs)("span",{className:"font-bold tracking-wide",children:[g[0],":"]})," ",g[1]]},b))}),children:(0,d.jsx)(ct,{className:"absolute bottom-1 right-0 m-2 h-4 w-4 cursor-help text-muted-foreground hover:text-foreground"})})},A=ft({ref:l,spec:p,options:{theme:o==="dark"?"dark":void 0,actions:v,mode:"vega-lite",tooltip:rt.call,renderer:"canvas"},onError:B,onEmbed:Q});return(0,x.useEffect)(()=>(I.forEach(({signalName:c,handler:g})=>{try{A==null||A.view.addSignalListener(c,g)}catch(b){_.error(b)}}),()=>{I.forEach(({signalName:c,handler:g})=>{try{A==null||A.view.removeSignalListener(c,g)}catch(b){_.error(b)}})}),[A,I]),(0,d.jsxs)(d.Fragment,{children:[s&&(0,d.jsxs)(ht,{variant:"destructive",children:[(0,d.jsx)(dt,{children:s.message}),(0,d.jsx)("div",{className:"text-md",children:s.stack})]}),(0,d.jsxs)("div",{className:lt("relative"),onPointerDown:ot.stopPropagation(),children:[(0,d.jsx)("div",{ref:l,"data-container-width":at(p)}),U()]})]})};function It(t){return t instanceof Set?[...t]:t}function Ct(t){return Array.isArray(t)?t.map(e=>e instanceof Date&&pt(e)?new Date(e).getTime():e):t}var Et=Nt;export{Et as default};
|
package/dist/index.html
CHANGED
|
@@ -66,7 +66,7 @@
|
|
|
66
66
|
<marimo-server-token data-token="{{ server_token }}" hidden></marimo-server-token>
|
|
67
67
|
<!-- /TODO -->
|
|
68
68
|
<title>{{ title }}</title>
|
|
69
|
-
<script type="module" crossorigin src="./assets/index-
|
|
69
|
+
<script type="module" crossorigin src="./assets/index-bt3OH-Pk.js"></script>
|
|
70
70
|
<link rel="modulepreload" crossorigin href="./assets/preload-helper-BW0IMuFq.js">
|
|
71
71
|
<link rel="modulepreload" crossorigin href="./assets/clsx-BDxNtGmi.js">
|
|
72
72
|
<link rel="modulepreload" crossorigin href="./assets/cn-BoaCR37F.js">
|
|
@@ -134,7 +134,7 @@
|
|
|
134
134
|
<link rel="modulepreload" crossorigin href="./assets/toInteger-CO3ppIfA.js">
|
|
135
135
|
<link rel="modulepreload" crossorigin href="./assets/database-zap-DTWCDKdn.js">
|
|
136
136
|
<link rel="modulepreload" crossorigin href="./assets/main-DrBRErTM.js">
|
|
137
|
-
<link rel="modulepreload" crossorigin href="./assets/cells-
|
|
137
|
+
<link rel="modulepreload" crossorigin href="./assets/cells-Dqou-uie.js">
|
|
138
138
|
<link rel="modulepreload" crossorigin href="./assets/spinner-C5JoisA7.js">
|
|
139
139
|
<link rel="modulepreload" crossorigin href="./assets/chevron-right-D0GQBpTb.js">
|
|
140
140
|
<link rel="modulepreload" crossorigin href="./assets/dropdown-menu-CJ-Wwa2I.js">
|
|
@@ -148,7 +148,7 @@
|
|
|
148
148
|
<link rel="modulepreload" crossorigin href="./assets/dist-D7GD2EM4.js">
|
|
149
149
|
<link rel="modulepreload" crossorigin href="./assets/label-SLjr8zzy.js">
|
|
150
150
|
<link rel="modulepreload" crossorigin href="./assets/useDebounce-B0dx2Gp0.js">
|
|
151
|
-
<link rel="modulepreload" crossorigin href="./assets/azure-
|
|
151
|
+
<link rel="modulepreload" crossorigin href="./assets/azure-q5TZ9bt0.js">
|
|
152
152
|
<link rel="modulepreload" crossorigin href="./assets/numbers-aIvy9Kr7.js">
|
|
153
153
|
<link rel="modulepreload" crossorigin href="./assets/SSRProvider-DC7ElCZZ.js">
|
|
154
154
|
<link rel="modulepreload" crossorigin href="./assets/context-CIAP2NOh.js">
|
|
@@ -157,9 +157,9 @@
|
|
|
157
157
|
<link rel="modulepreload" crossorigin href="./assets/input-BRZ8bt6P.js">
|
|
158
158
|
<link rel="modulepreload" crossorigin href="./assets/links-DzgPOFJ-.js">
|
|
159
159
|
<link rel="modulepreload" crossorigin href="./assets/popover-Du6bDNYH.js">
|
|
160
|
-
<link rel="modulepreload" crossorigin href="./assets/switch-
|
|
160
|
+
<link rel="modulepreload" crossorigin href="./assets/switch-JycgoJcn.js">
|
|
161
161
|
<link rel="modulepreload" crossorigin href="./assets/table-BhH-Mm8O.js">
|
|
162
|
-
<link rel="modulepreload" crossorigin href="./assets/mode-
|
|
162
|
+
<link rel="modulepreload" crossorigin href="./assets/mode-DSINUCzY.js">
|
|
163
163
|
<link rel="modulepreload" crossorigin href="./assets/useAsyncData-D-4ifFXh.js">
|
|
164
164
|
<link rel="modulepreload" crossorigin href="./assets/errors-Bfogio62.js">
|
|
165
165
|
<link rel="modulepreload" crossorigin href="./assets/error-banner-DQBz1e-2.js">
|
|
@@ -172,32 +172,32 @@
|
|
|
172
172
|
<link rel="modulepreload" crossorigin href="./assets/refresh-cw-CHAHPgkx.js">
|
|
173
173
|
<link rel="modulepreload" crossorigin href="./assets/trash-2-CAoNMkjq.js">
|
|
174
174
|
<link rel="modulepreload" crossorigin href="./assets/triangle-alert-qZo1ox6x.js">
|
|
175
|
-
<link rel="modulepreload" crossorigin href="./assets/ai-model-dropdown-
|
|
175
|
+
<link rel="modulepreload" crossorigin href="./assets/ai-model-dropdown-BYDC_z7s.js">
|
|
176
176
|
<link rel="modulepreload" crossorigin href="./assets/defaultLocale-OkOxlkkM.js">
|
|
177
177
|
<link rel="modulepreload" crossorigin href="./assets/precisionRound-BOmLQIKI.js">
|
|
178
178
|
<link rel="modulepreload" crossorigin href="./assets/defaultLocale-DK1MWd7f.js">
|
|
179
179
|
<link rel="modulepreload" crossorigin href="./assets/vega-loader.browser-CZV6_g2i.js">
|
|
180
|
-
<link rel="modulepreload" crossorigin href="./assets/
|
|
180
|
+
<link rel="modulepreload" crossorigin href="./assets/utils-BuPoTKhl.js">
|
|
181
181
|
<link rel="modulepreload" crossorigin href="./assets/ErrorBoundary-H5EQrcAX.js">
|
|
182
182
|
<link rel="modulepreload" crossorigin href="./assets/useInstallPackage-CIJ1-EHx.js">
|
|
183
183
|
<link rel="modulepreload" crossorigin href="./assets/ImperativeModal-CDxa8mJa.js">
|
|
184
|
-
<link rel="modulepreload" crossorigin href="./assets/cell-link-
|
|
185
|
-
<link rel="modulepreload" crossorigin href="./assets/datasource-
|
|
186
|
-
<link rel="modulepreload" crossorigin href="./assets/state-
|
|
187
|
-
<link rel="modulepreload" crossorigin href="./assets/MarimoErrorOutput-
|
|
184
|
+
<link rel="modulepreload" crossorigin href="./assets/cell-link-DWQZUFhO.js">
|
|
185
|
+
<link rel="modulepreload" crossorigin href="./assets/datasource-Cn-Wy4lo.js">
|
|
186
|
+
<link rel="modulepreload" crossorigin href="./assets/state-BqEQgvo3.js">
|
|
187
|
+
<link rel="modulepreload" crossorigin href="./assets/MarimoErrorOutput-B0nc63rx.js">
|
|
188
188
|
<link rel="modulepreload" crossorigin href="./assets/copy-icon-Ditn6lfU.js">
|
|
189
|
-
<link rel="modulepreload" crossorigin href="./assets/html-to-image-
|
|
190
|
-
<link rel="modulepreload" crossorigin href="./assets/focus-
|
|
189
|
+
<link rel="modulepreload" crossorigin href="./assets/html-to-image-BFwmkFZ4.js">
|
|
190
|
+
<link rel="modulepreload" crossorigin href="./assets/focus-CQRBseis.js">
|
|
191
191
|
<link rel="modulepreload" crossorigin href="./assets/LazyAnyLanguageCodeMirror-CrcxjfJR.js">
|
|
192
192
|
<link rel="modulepreload" crossorigin href="./assets/chunk-5FQGJX7Z-CM1a_K7I.js">
|
|
193
193
|
<link rel="modulepreload" crossorigin href="./assets/katex-rvFxOCU-.js">
|
|
194
|
-
<link rel="modulepreload" crossorigin href="./assets/markdown-renderer-
|
|
195
|
-
<link rel="modulepreload" crossorigin href="./assets/command-
|
|
196
|
-
<link rel="modulepreload" crossorigin href="./assets/download-
|
|
197
|
-
<link rel="modulepreload" crossorigin href="./assets/useRunCells-
|
|
198
|
-
<link rel="modulepreload" crossorigin href="./assets/RenderHTML-
|
|
194
|
+
<link rel="modulepreload" crossorigin href="./assets/markdown-renderer-CdEqa6lQ.js">
|
|
195
|
+
<link rel="modulepreload" crossorigin href="./assets/command-Ckfx4w5C.js">
|
|
196
|
+
<link rel="modulepreload" crossorigin href="./assets/download-D6Fv1GMQ.js">
|
|
197
|
+
<link rel="modulepreload" crossorigin href="./assets/useRunCells-BSsgvk4y.js">
|
|
198
|
+
<link rel="modulepreload" crossorigin href="./assets/RenderHTML-Bp9XY06U.js">
|
|
199
199
|
<link rel="modulepreload" crossorigin href="./assets/useIframeCapabilities-DDlGrM1g.js">
|
|
200
|
-
<link rel="modulepreload" crossorigin href="./assets/formats-
|
|
200
|
+
<link rel="modulepreload" crossorigin href="./assets/formats-DzzQnJYt.js">
|
|
201
201
|
<link rel="modulepreload" crossorigin href="./assets/en-US-BO8E69bZ.js">
|
|
202
202
|
<link rel="modulepreload" crossorigin href="./assets/isValid-BGe7pJXT.js">
|
|
203
203
|
<link rel="modulepreload" crossorigin href="./assets/dates-BcvJrESI.js">
|
|
@@ -207,42 +207,42 @@
|
|
|
207
207
|
<link rel="modulepreload" crossorigin href="./assets/useDateFormatter-CpE7XQLs.js">
|
|
208
208
|
<link rel="modulepreload" crossorigin href="./assets/range-CJeRXUtp.js">
|
|
209
209
|
<link rel="modulepreload" crossorigin href="./assets/table-BCnp9gKC.js">
|
|
210
|
-
<link rel="modulepreload" crossorigin href="./assets/JsonOutput-
|
|
211
|
-
<link rel="modulepreload" crossorigin href="./assets/useDeleteCell-
|
|
210
|
+
<link rel="modulepreload" crossorigin href="./assets/JsonOutput-CBK4dhVh.js">
|
|
211
|
+
<link rel="modulepreload" crossorigin href="./assets/useDeleteCell-DSpj4wDu.js">
|
|
212
212
|
<link rel="modulepreload" crossorigin href="./assets/icons-CrUXojcA.js">
|
|
213
|
-
<link rel="modulepreload" crossorigin href="./assets/process-output-
|
|
213
|
+
<link rel="modulepreload" crossorigin href="./assets/process-output-4ypD4fg7.js">
|
|
214
214
|
<link rel="modulepreload" crossorigin href="./assets/blob-CObhN-9g.js">
|
|
215
215
|
<link rel="modulepreload" crossorigin href="./assets/objectWithoutPropertiesLoose-DP4vAkvg.js">
|
|
216
216
|
<link rel="modulepreload" crossorigin href="./assets/esm-CBkHtTOV.js">
|
|
217
217
|
<link rel="modulepreload" crossorigin href="./assets/file-DzHkbIdO.js">
|
|
218
218
|
<link rel="modulepreload" crossorigin href="./assets/image-DXfkah9d.js">
|
|
219
219
|
<link rel="modulepreload" crossorigin href="./assets/play-DKSqmedg.js">
|
|
220
|
-
<link rel="modulepreload" crossorigin href="./assets/add-cell-with-ai-
|
|
220
|
+
<link rel="modulepreload" crossorigin href="./assets/add-cell-with-ai-CrnYAxuA.js">
|
|
221
221
|
<link rel="modulepreload" crossorigin href="./assets/isEmpty-CfmnKtgL.js">
|
|
222
222
|
<link rel="modulepreload" crossorigin href="./assets/bot-message-square-CK6eoGWy.js">
|
|
223
|
-
<link rel="modulepreload" crossorigin href="./assets/chat-display-
|
|
223
|
+
<link rel="modulepreload" crossorigin href="./assets/chat-display-Vedn01P6.js">
|
|
224
224
|
<link rel="modulepreload" crossorigin href="./assets/chart-no-axes-column-DV8gdCvH.js">
|
|
225
225
|
<link rel="modulepreload" crossorigin href="./assets/square-function-B006EYFX.js">
|
|
226
226
|
<link rel="modulepreload" crossorigin href="./assets/spec-CYMZZDXr.js">
|
|
227
227
|
<link rel="modulepreload" crossorigin href="./assets/ellipsis-vertical-CAB7tdza.js">
|
|
228
|
-
<link rel="modulepreload" crossorigin href="./assets/components-
|
|
229
|
-
<link rel="modulepreload" crossorigin href="./assets/column-preview-
|
|
228
|
+
<link rel="modulepreload" crossorigin href="./assets/components-Bgj5U8rZ.js">
|
|
229
|
+
<link rel="modulepreload" crossorigin href="./assets/column-preview-DPhs4evg.js">
|
|
230
230
|
<link rel="modulepreload" crossorigin href="./assets/toggle-BiIJZR6-.js">
|
|
231
|
-
<link rel="modulepreload" crossorigin href="./assets/globals-
|
|
231
|
+
<link rel="modulepreload" crossorigin href="./assets/globals-DE7Q2ffe.js">
|
|
232
232
|
<link rel="modulepreload" crossorigin href="./assets/share-BYioqUE0.js">
|
|
233
233
|
<link rel="modulepreload" crossorigin href="./assets/_baseSet-D5BgdrnX.js">
|
|
234
234
|
<link rel="modulepreload" crossorigin href="./assets/react-resizable-panels.browser.esm-DDRqG5ui.js">
|
|
235
|
-
<link rel="modulepreload" crossorigin href="./assets/context-aware-panel
|
|
236
|
-
<link rel="modulepreload" crossorigin href="./assets/floating-outline-
|
|
237
|
-
<link rel="modulepreload" crossorigin href="./assets/useAddCell-
|
|
235
|
+
<link rel="modulepreload" crossorigin href="./assets/context-aware-panel-TU7i7Ais.js">
|
|
236
|
+
<link rel="modulepreload" crossorigin href="./assets/floating-outline-CNejeNGC.js">
|
|
237
|
+
<link rel="modulepreload" crossorigin href="./assets/useAddCell-BSbQWv3q.js">
|
|
238
238
|
<link rel="modulepreload" crossorigin href="./assets/eye-off-vwi9L975.js">
|
|
239
|
-
<link rel="modulepreload" crossorigin href="./assets/readonly-python-code-
|
|
239
|
+
<link rel="modulepreload" crossorigin href="./assets/readonly-python-code-CysvH2Zj.js">
|
|
240
240
|
<link rel="modulepreload" crossorigin href="./assets/file-headphone-B5q2Ow55.js">
|
|
241
|
-
<link rel="modulepreload" crossorigin href="./assets/file-icons-
|
|
241
|
+
<link rel="modulepreload" crossorigin href="./assets/file-icons-0zZkfGbI.js">
|
|
242
242
|
<link rel="modulepreload" crossorigin href="./assets/refresh-ccw-DLpfIr8v.js">
|
|
243
|
-
<link rel="modulepreload" crossorigin href="./assets/form-
|
|
243
|
+
<link rel="modulepreload" crossorigin href="./assets/form-B9Fj5Rl-.js">
|
|
244
244
|
<link rel="modulepreload" crossorigin href="./assets/field-qoWy8wEy.js">
|
|
245
|
-
<link rel="modulepreload" crossorigin href="./assets/useBoolean-
|
|
245
|
+
<link rel="modulepreload" crossorigin href="./assets/useBoolean-Cm61eWz0.js">
|
|
246
246
|
<link rel="modulepreload" crossorigin href="./assets/useDeepCompareMemoize-yyiB9aJX.js">
|
|
247
247
|
<link rel="modulepreload" crossorigin href="./assets/types-C1RN112u.js">
|
|
248
248
|
<link rel="modulepreload" crossorigin href="./assets/prop-types-RrUi-pOT.js">
|
|
@@ -259,7 +259,7 @@
|
|
|
259
259
|
<link rel="stylesheet" crossorigin href="./assets/cells-jmgGt1lS.css">
|
|
260
260
|
<link rel="stylesheet" crossorigin href="./assets/markdown-renderer-DdDKmWlR.css">
|
|
261
261
|
<link rel="stylesheet" crossorigin href="./assets/JsonOutput-B7vuddcd.css">
|
|
262
|
-
<link rel="stylesheet" crossorigin href="./assets/index-
|
|
262
|
+
<link rel="stylesheet" crossorigin href="./assets/index-Bgbe24O9.css">
|
|
263
263
|
</head>
|
|
264
264
|
<body>
|
|
265
265
|
<div id="root"></div>
|
package/package.json
CHANGED
|
@@ -4,6 +4,7 @@ import React from "react";
|
|
|
4
4
|
import type { TopLevelSpec } from "vega-lite";
|
|
5
5
|
import { LazyVegaEmbed } from "@/components/charts/lazy";
|
|
6
6
|
import { tooltipHandler } from "@/components/charts/tooltip";
|
|
7
|
+
import { getContainerWidth } from "@/plugins/impl/vega/utils";
|
|
7
8
|
import { useTheme } from "@/theme/useTheme";
|
|
8
9
|
import type { ErrorMessage } from "./chart-spec/spec";
|
|
9
10
|
import { augmentSpecWithData } from "./chart-spec/spec";
|
|
@@ -30,6 +31,7 @@ export const LazyChart: React.FC<{
|
|
|
30
31
|
<React.Suspense fallback={<LoadingChart />}>
|
|
31
32
|
<LazyVegaEmbed
|
|
32
33
|
spec={spec}
|
|
34
|
+
data-container-width={getContainerWidth(spec)}
|
|
33
35
|
options={{
|
|
34
36
|
theme: theme === "dark" ? "dark" : undefined,
|
|
35
37
|
height: height,
|
|
@@ -224,6 +224,7 @@ export function renderChart(chartSpec: string, theme: Theme) {
|
|
|
224
224
|
return (
|
|
225
225
|
<Suspense fallback={LoadingChart}>
|
|
226
226
|
<LazyVegaEmbed
|
|
227
|
+
data-container-width="container"
|
|
227
228
|
spec={updateSpec(JSON.parse(chartSpec) as TopLevelFacetedUnitSpec)}
|
|
228
229
|
options={{
|
|
229
230
|
theme: theme === "dark" ? "dark" : "vox",
|
|
@@ -27,6 +27,7 @@ import { useOverflowDetection } from "@/hooks/useOverflowDetection";
|
|
|
27
27
|
import { renderHTML } from "@/plugins/core/RenderHTML";
|
|
28
28
|
import { Banner } from "@/plugins/impl/common/error-banner";
|
|
29
29
|
import type { TopLevelFacetedUnitSpec } from "@/plugins/impl/data-explorer/queries/types";
|
|
30
|
+
import { getContainerWidth } from "@/plugins/impl/vega/utils";
|
|
30
31
|
import { useTheme } from "@/theme/useTheme";
|
|
31
32
|
import { Events } from "@/utils/events";
|
|
32
33
|
import { invariant } from "@/utils/invariant";
|
|
@@ -205,6 +206,7 @@ export const OutputRenderer: React.FC<{
|
|
|
205
206
|
<Suspense fallback={<ChartLoadingState />}>
|
|
206
207
|
<LazyVegaEmbed
|
|
207
208
|
spec={parsedJsonData as TopLevelFacetedUnitSpec}
|
|
209
|
+
data-container-width={getContainerWidth(parsedJsonData)}
|
|
208
210
|
options={{
|
|
209
211
|
theme: theme === "dark" ? "dark" : undefined,
|
|
210
212
|
mode: "vega-lite",
|
|
@@ -5,6 +5,7 @@ import { useAtom } from "jotai";
|
|
|
5
5
|
import { CrosshairIcon, PinIcon, PinOffIcon, XIcon } from "lucide-react";
|
|
6
6
|
import type { PropsWithChildren } from "react";
|
|
7
7
|
import { Panel, PanelResizeHandle } from "react-resizable-panels";
|
|
8
|
+
import { raf2 } from "@/components/editor/navigation/focus-utils";
|
|
8
9
|
import { Button } from "@/components/ui/button";
|
|
9
10
|
import { Toggle } from "@/components/ui/toggle";
|
|
10
11
|
import { Tooltip } from "@/components/ui/tooltip";
|
|
@@ -151,6 +152,11 @@ const ResizableComponent = ({ children }: ResizableComponentProps) => {
|
|
|
151
152
|
startingWidth: 400,
|
|
152
153
|
minWidth: 300,
|
|
153
154
|
maxWidth: 1500,
|
|
155
|
+
onResize: () => {
|
|
156
|
+
raf2(() => {
|
|
157
|
+
window.dispatchEvent(new Event("resize"));
|
|
158
|
+
});
|
|
159
|
+
},
|
|
154
160
|
});
|
|
155
161
|
|
|
156
162
|
return (
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/* Copyright 2026 Marimo. All rights reserved. */
|
|
2
|
+
|
|
3
|
+
import { describe, expect, it, vi } from "vitest";
|
|
4
|
+
import { handleDragging } from "../utils";
|
|
5
|
+
|
|
6
|
+
describe("handleDragging", () => {
|
|
7
|
+
it("should dispatch a resize event after dragging ends", async () => {
|
|
8
|
+
const listener = vi.fn();
|
|
9
|
+
window.addEventListener("resize", listener);
|
|
10
|
+
|
|
11
|
+
handleDragging(false);
|
|
12
|
+
|
|
13
|
+
// raf2: wait two animation frames
|
|
14
|
+
await new Promise((resolve) => requestAnimationFrame(resolve));
|
|
15
|
+
await new Promise((resolve) => requestAnimationFrame(resolve));
|
|
16
|
+
|
|
17
|
+
expect(listener).toHaveBeenCalledTimes(1);
|
|
18
|
+
|
|
19
|
+
window.removeEventListener("resize", listener);
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
it("should not dispatch a resize event while dragging", async () => {
|
|
23
|
+
const listener = vi.fn();
|
|
24
|
+
window.addEventListener("resize", listener);
|
|
25
|
+
|
|
26
|
+
handleDragging(true);
|
|
27
|
+
|
|
28
|
+
await new Promise((resolve) => requestAnimationFrame(resolve));
|
|
29
|
+
await new Promise((resolve) => requestAnimationFrame(resolve));
|
|
30
|
+
|
|
31
|
+
expect(listener).not.toHaveBeenCalled();
|
|
32
|
+
|
|
33
|
+
window.removeEventListener("resize", listener);
|
|
34
|
+
});
|
|
35
|
+
});
|
|
@@ -17,6 +17,7 @@ import "./app-chrome.css";
|
|
|
17
17
|
import { TooltipProvider } from "@radix-ui/react-tooltip";
|
|
18
18
|
import { useAtom, useAtomValue } from "jotai";
|
|
19
19
|
import { XIcon } from "lucide-react";
|
|
20
|
+
import useEvent from "react-use-event-hook";
|
|
20
21
|
import { Button } from "@/components/ui/button";
|
|
21
22
|
import { ReorderableList } from "@/components/ui/reorderable-list";
|
|
22
23
|
import { Tabs, TabsList, TabsTrigger } from "@/components/ui/tabs";
|
|
@@ -26,6 +27,7 @@ import { capabilitiesAtom } from "@/core/config/capabilities";
|
|
|
26
27
|
import { getFeatureFlag } from "@/core/config/feature-flag";
|
|
27
28
|
import { cn } from "@/utils/cn";
|
|
28
29
|
import { ErrorBoundary } from "../../boundary/ErrorBoundary";
|
|
30
|
+
import { raf2 } from "../../navigation/focus-utils";
|
|
29
31
|
import { ContextAwarePanel } from "../panels/context-aware-panel/context-aware-panel";
|
|
30
32
|
import { PanelSectionProvider } from "../panels/panel-context";
|
|
31
33
|
import { panelLayoutAtom, useChromeActions, useChromeState } from "../state";
|
|
@@ -147,6 +149,14 @@ export const AppChrome: React.FC<PropsWithChildren> = ({ children }) => {
|
|
|
147
149
|
});
|
|
148
150
|
}, [panelLayout.sidebar, capabilities]);
|
|
149
151
|
|
|
152
|
+
const emitResizeEvent = useEvent(() => {
|
|
153
|
+
// HACK: Unfortunately, we have to do this twice to make sure the
|
|
154
|
+
// panel is fully expanded before we dispatch the resize event
|
|
155
|
+
raf2(() => {
|
|
156
|
+
window.dispatchEvent(new Event("resize"));
|
|
157
|
+
});
|
|
158
|
+
});
|
|
159
|
+
|
|
150
160
|
// sync sidebar
|
|
151
161
|
useEffect(() => {
|
|
152
162
|
if (!sidebarRef.current) {
|
|
@@ -162,13 +172,7 @@ export const AppChrome: React.FC<PropsWithChildren> = ({ children }) => {
|
|
|
162
172
|
}
|
|
163
173
|
|
|
164
174
|
// Dispatch a resize event so widgets know to resize
|
|
165
|
-
|
|
166
|
-
// HACK: Unfortunately, we have to do this twice to make sure it the
|
|
167
|
-
// panel is fully expanded before we dispatch the resize event
|
|
168
|
-
requestAnimationFrame(() => {
|
|
169
|
-
window.dispatchEvent(new Event("resize"));
|
|
170
|
-
});
|
|
171
|
-
});
|
|
175
|
+
emitResizeEvent();
|
|
172
176
|
}, [isSidebarOpen]);
|
|
173
177
|
|
|
174
178
|
// sync panel
|
|
@@ -186,13 +190,7 @@ export const AppChrome: React.FC<PropsWithChildren> = ({ children }) => {
|
|
|
186
190
|
}
|
|
187
191
|
|
|
188
192
|
// Dispatch a resize event so widgets know to resize
|
|
189
|
-
|
|
190
|
-
// HACK: Unfortunately, we have to do this twice to make sure it the
|
|
191
|
-
// panel is fully expanded before we dispatch the resize event
|
|
192
|
-
requestAnimationFrame(() => {
|
|
193
|
-
window.dispatchEvent(new Event("resize"));
|
|
194
|
-
});
|
|
195
|
-
});
|
|
193
|
+
emitResizeEvent();
|
|
196
194
|
}, [isDeveloperPanelOpen]);
|
|
197
195
|
|
|
198
196
|
// Auto-correct developer panel selection when the selected tab is no longer available
|
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
/* Copyright 2026 Marimo. All rights reserved. */
|
|
2
2
|
|
|
3
|
+
import { raf2 } from "../../navigation/focus-utils";
|
|
4
|
+
|
|
3
5
|
export function handleDragging(isDragging: boolean) {
|
|
4
6
|
if (!isDragging) {
|
|
5
7
|
// Once the user is done dragging, dispatch a resize event
|
|
6
|
-
|
|
8
|
+
raf2(() => {
|
|
9
|
+
window.dispatchEvent(new Event("resize"));
|
|
10
|
+
});
|
|
7
11
|
}
|
|
8
12
|
}
|
|
@@ -1115,6 +1115,60 @@ class Foo:
|
|
|
1115
1115
|
`);
|
|
1116
1116
|
});
|
|
1117
1117
|
|
|
1118
|
+
test("should not highlight attribute access matching a for-loop variable", () => {
|
|
1119
|
+
// When `tool` is used as a for-loop variable, `mcp.tool` (attribute access)
|
|
1120
|
+
// should NOT have `tool` highlighted — it's a property, not a variable reference.
|
|
1121
|
+
expect(
|
|
1122
|
+
runHighlight(
|
|
1123
|
+
["mcp", "client"],
|
|
1124
|
+
`
|
|
1125
|
+
@mcp.tool
|
|
1126
|
+
def roll_dice():
|
|
1127
|
+
pass
|
|
1128
|
+
|
|
1129
|
+
async with client:
|
|
1130
|
+
for tool in await client.list_tools():
|
|
1131
|
+
print(tool)
|
|
1132
|
+
`,
|
|
1133
|
+
),
|
|
1134
|
+
).toMatchInlineSnapshot(`
|
|
1135
|
+
"
|
|
1136
|
+
@mcp.tool
|
|
1137
|
+
^^^
|
|
1138
|
+
def roll_dice():
|
|
1139
|
+
pass
|
|
1140
|
+
|
|
1141
|
+
async with client:
|
|
1142
|
+
^^^^^^
|
|
1143
|
+
for tool in await client.list_tools():
|
|
1144
|
+
^^^^^^
|
|
1145
|
+
print(tool)
|
|
1146
|
+
"
|
|
1147
|
+
`);
|
|
1148
|
+
});
|
|
1149
|
+
|
|
1150
|
+
test("should not highlight property name matching a global variable", () => {
|
|
1151
|
+
// `tool` is a global variable, but `mcp.tool` should not highlight `tool`
|
|
1152
|
+
// because it's a property access, not a variable reference.
|
|
1153
|
+
expect(
|
|
1154
|
+
runHighlight(
|
|
1155
|
+
["mcp", "tool"],
|
|
1156
|
+
`
|
|
1157
|
+
@mcp.tool
|
|
1158
|
+
def roll_dice():
|
|
1159
|
+
pass
|
|
1160
|
+
`,
|
|
1161
|
+
),
|
|
1162
|
+
).toMatchInlineSnapshot(`
|
|
1163
|
+
"
|
|
1164
|
+
@mcp.tool
|
|
1165
|
+
^^^
|
|
1166
|
+
def roll_dice():
|
|
1167
|
+
pass
|
|
1168
|
+
"
|
|
1169
|
+
`);
|
|
1170
|
+
});
|
|
1171
|
+
|
|
1118
1172
|
test("class property self-reference", () => {
|
|
1119
1173
|
expect(
|
|
1120
1174
|
runHighlight(
|