@marimo-team/frontend 0.22.4-dev1 → 0.22.4-dev3
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.
|
@@ -7,7 +7,7 @@ var JN=Object.defineProperty;var Dv=f=>{throw TypeError(f)};var XN=(f,Ie,s)=>Ie
|
|
|
7
7
|
`))}catch{}Td.set(o,l)}}if(r.adoptedStyleSheets=[...Td.values()],t.cssStyles){let i=new CSSStyleSheet;i.replaceSync(t.cssStyles.join(`
|
|
8
8
|
`)),r.adoptedStyleSheets=[...r.adoptedStyleSheets,i]}}copyStylesFallback(){let r=this.shadowRoot;mn(r,"Shadow root should exist"),ue.warn("adoptedStyleSheets not supported, copying stylesheets in a less performance way. Please consider upgrading your browser.");let n=Array.from(document.styleSheets).flatMap(i=>{if(!cx(i))return[];let o=document.createElement("style");try{o.textContent=Array.from(i.cssRules).map(l=>l.cssText).join(`
|
|
9
9
|
`)}catch{return[]}return[o]});if(r.append(...n),t.cssStyles){let i=document.createElement("style");i.textContent=t.cssStyles.join(`
|
|
10
|
-
`),r.append(i)}}isAdoptedStyleSheetsSupported(){return"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype}};Nd(t.tagName,e)}function cx(t){var e;return(e=t.title)!=null&&e.startsWith("marimo")?!0:!t.href||!t.href.endsWith(".css")?!1:(t.href.includes("127.0.0.1"),t.href.includes("/@marimo-team/")?!0:t.href.startsWith(window.location.origin))}function _d(t){return!t||!(t instanceof HTMLElement)?!1:"__type__"in t&&t.__type__===dx}function mx(t,e){let a=t.safeParse(e);if(!a.success)throw ue.log("Failed to parse data",e,a.error),Error(ST(a.error));return a.data}var ko="MARIMO-UI-ELEMENT";function MD(){class t extends HTMLElement{constructor(){super(...arguments);K(this,"initialized",!1);K(this,"inputListener",Ja.NOOP)}init(){if(this.initialized)return;let r=un.parseOrThrow(this);this.inputListener=i=>{r!==null&&i.detail.element===this.firstElementChild&&(Qa.has(r)||Qa.registerInstance(r,n),Qa.broadcastValueUpdate(n,r,i.detail.value))};let n=this.firstElementChild;if(r===null){ue.error("[marimo-ui-element] missing object-id attribute");return}if(n===null){ue.error("[marimo-ui-element] has no child");return}if(!(n instanceof HTMLElement)){ue.error("[marimo-ui-element] first child must be instance of HTMLElement");return}this.initialized=!0}connectedCallback(){if(this.init(),this.initialized){let r=un.parseOrThrow(this),n=this.firstElementChild;Qa.registerInstance(r,n),document.addEventListener(wn.TYPE,this.inputListener)}}disconnectedCallback(){if(this.initialized){document.removeEventListener(wn.TYPE,this.inputListener);let r=un.parseOrThrow(this);Qa.removeInstance(r,this.firstElementChild)}}reset(){let r=this.firstElementChild;_d(r)?r.reset():ue.error("[marimo-ui-element] first child must have a reset method")}static get observedAttributes(){return[kr]}attributeChangedCallback(r,n,i){if(this.initialized&&r==="random-id"&&n!==i){this.disconnectedCallback();let o=this.firstElementChild;_d(o)?o.rerender():ue.error("[marimo-ui-element] first child must have a rerender method"),this.initialized=!1,this.connectedCallback()}}}Nd(ko.toLowerCase(),t)}function Ad(t){if(!t)return null;if(t.nodeName===ko)return un.parseOrThrow(t);let e=t.parentElement;return(e==null?void 0:e.nodeName)===ko?un.parseOrThrow(e):null}function FD(t){return t.tagName===ko}var VD=(0,Z6().init)({length:6});function zD(){Nd("marimo-sidebar",class extends HTMLElement{constructor(){super(...arguments);K(this,"uniqueId",Symbol(VD()))}connectedCallback(){this.mountReactComponent(),this.observer=new MutationObserver(()=>{this.updateReactComponent()}),this.style.display="none",this.observer.observe(this,{attributes:!0,childList:!0,subtree:!0,characterData:!0})}disconnectedCallback(){this.observer&&(this.observer.disconnect(),this.unmountReactComponent())}mountReactComponent(){this.syncWidth(),ji.mount({name:Rl.SIDEBAR,ref:this.uniqueId,children:this.getContents()})}unmountReactComponent(){ji.unmount({name:Rl.SIDEBAR,ref:this.uniqueId})}updateReactComponent(){this.syncWidth(),ji.update({name:Rl.SIDEBAR,ref:this.uniqueId,children:this.getContents()})}syncWidth(){try{let e=this.dataset.width;e?$e.set(Vv,{type:"setWidth",width:JSON.parse(e)}):$e.set(Vv,{type:"setWidth",width:void 0})}catch(e){ue.error(e)}}getContents(){return He({html:this.innerHTML})}})}function zt(t,e={}){return{withData(a){return{withFunctions(r){return{renderer(n){return{...e,tagName:t,validator:a,functions:r,render:n}}}},renderer(r){return{...e,tagName:t,validator:a,render:r}}}}}}var Id=te();function OD(t){let e=(0,Id.c)(16),{jsUrl:a,jsHash:r}=t,n;e[0]!==r||e[1]!==a?(n=async()=>await zv.getModule(a,r),e[0]=r,e[1]=a,e[2]=n):n=e[2];let i;e[3]===r?i=e[4]:(i=[r],e[3]=r,e[4]=i);let{data:o,error:l,refetch:d}=Yt(n,i),u=!!l,c;e[5]!==u||e[6]!==r||e[7]!==a||e[8]!==d?(c=()=>{u&&a&&(zv.invalidate(r),d())},e[5]=u,e[6]=r,e[7]=a,e[8]=d,e[9]=c):c=e[9];let m;e[10]!==u||e[11]!==a?(m=[u,a],e[10]=u,e[11]=a,e[12]=m):m=e[12],(0,f.useEffect)(c,m);let p;return e[13]!==l||e[14]!==o?(p={jsModule:o,error:l},e[13]=l,e[14]=o,e[15]=p):p=e[15],p}function LD(t,e){(0,f.useEffect)(()=>{let a=e.shadowRoot;if(!t||!a)return;if("adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype){let n=new CSSStyleSheet;try{return n.replaceSync(t),a&&(a.adoptedStyleSheets=[...a.adoptedStyleSheets,n]),()=>{a&&(a.adoptedStyleSheets=a.adoptedStyleSheets.filter(i=>i!==n))}}catch{}}let r=document.createElement("style");return r.innerHTML=t,a.append(r),()=>{r.remove()}},[t,e])}const $D=zt("marimo-anywidget").withData(L({jsUrl:M(),jsHash:M()})).withFunctions({}).renderer(t=>(0,s.jsx)(BD,{...t}));var BD=t=>{let e=(0,Id.c)(14),{jsUrl:a,jsHash:r}=t.data,{model_id:n}=t.value,i=t.host,o;e[0]!==r||e[1]!==a?(o={jsUrl:a,jsHash:r},e[0]=r,e[1]=a,e[2]=o):o=e[2];let{jsModule:l,error:d}=OD(o);if(d){let m;return e[3]===d?m=e[4]:(m=(0,s.jsx)(_i,{error:d}),e[3]=d,e[4]=m),m}if(!l)return null;if(!WD(l)){let m=`Module at ${a} does not appear to be a valid anywidget`,p;e[5]===m?p=e[6]:(p=Error(m),e[5]=m,e[6]=p);let h=p,v;return e[7]===h?v=e[8]:(v=(0,s.jsx)(_i,{error:h}),e[7]=h,e[8]=v),v}let u=`${r}:${n}`,c;return e[9]!==i||e[10]!==l.default||e[11]!==n||e[12]!==u?(c=(0,s.jsx)(UD,{widget:l.default,modelId:n,host:i},u),e[9]=i,e[10]=l.default,e[11]=n,e[12]=u,e[13]=c):c=e[13],c};async function HD(t,e,a,r,n){r.innerHTML="";try{await(await LT.getOrCreate(a).bind(t,e))(r,n)}catch(i){ue.error("Error rendering anywidget",i),r.classList.add("text-error"),r.innerHTML=`Error rendering anywidget: ${Hy(i)}`}}function WD(t){var e,a;return t.default?typeof t.default=="function"||typeof((e=t.default)==null?void 0:e.render)=="function"||typeof((a=t.default)==null?void 0:a.initialize)=="function":!1}var UD=t=>{let e=(0,Id.c)(9),{widget:a,modelId:r,host:n}=t,i=(0,f.useRef)(null),o,l;e[0]===r?(o=e[1],l=e[2]):(o=uc.getSync(r),o||ue.error("Model not found for modelId",r),l=o==null?void 0:o.get("_css"),e[0]=r,e[1]=o,e[2]=l),LD(l,n);let d,u;e[3]!==o||e[4]!==r||e[5]!==a?(d=()=>{if(!i.current||!o)return;let m=new AbortController;return HD(a,o,r,i.current,m.signal),()=>m.abort()},u=[a,r,o],e[3]=o,e[4]=r,e[5]=a,e[6]=d,e[7]=u):(d=e[6],u=e[7]),(0,f.useEffect)(d,u);let c;return e[8]===Symbol.for("react.memo_cache_sentinel")?(c=(0,s.jsx)("div",{ref:i}),e[8]=c):c=e[8],c};const px=be(["neutral","success","warn","danger","info","alert"]).default("neutral");var ZD=class{constructor(){K(this,"tagName","marimo-button");K(this,"validator",L({label:M(),kind:px,disabled:U().default(!1),fullWidth:U().default(!1),tooltip:M().optional(),keyboardShortcut:M().optional()}))}render(t){let{data:{disabled:e,kind:a,label:r,fullWidth:n,tooltip:i,keyboardShortcut:o}}=t,l=(0,s.jsx)(Pe,{"data-testid":"marimo-plugin-button",variant:KD(a),disabled:e,size:"xs",keyboardShortcut:o,className:G({"w-full":n,"w-fit":!n}),onClick:u=>{e||(u.stopPropagation(),t.setValue(c=>c+1))},type:"submit",children:He({html:r})}),d=o&&!i?(0,s.jsx)(qy,{shortcut:o}):i;return d?(0,s.jsx)(_t,{children:(0,s.jsx)(_a,{content:d,delayDuration:200,children:l})}):l}};function KD(t){switch(t){case"neutral":return"secondary";case"danger":return"destructive";case"warn":return"warn";case"success":return"success"}}var YD=te();const et=t=>{let e=(0,YD.c)(27),{label:a,children:r,align:n,className:i,labelClassName:o,fullWidth:l,id:d}=t,u=n===void 0?"left":n;if(l&&(u="top"),!a){if(u==="top"){let k;return e[0]!==r||e[1]!==i?(k=(0,s.jsx)("div",{className:i,children:r}),e[0]=r,e[1]=i,e[2]=k):k=e[2],k}let C;e[3]===i?C=e[4]:(C=G("inline-flex",i),e[3]=i,e[4]=C);let S;return e[5]!==r||e[6]!==C?(S=(0,s.jsx)("div",{className:C,children:r}),e[5]=r,e[6]=C,e[7]=S):S=e[7],S}let c;e[8]===o?c=e[9]:(c=G("font-prose",o),e[8]=o,e[9]=c);let m;e[10]===a?m=e[11]:(m=He({html:a}),e[10]=a,e[11]=m);let p;e[12]!==d||e[13]!==c||e[14]!==m?(p=(0,s.jsx)(Dc,{htmlFor:d,className:c,children:m}),e[12]=d,e[13]=c,e[14]=m,e[15]=p):p=e[15];let h=p,v=u==="top"&&"flex-col items-start gap-y-2",x=u==="left"&&"flex-row items-center gap-x-1.5 pr-2",y=u==="right"&&"flex-row-reverse items-center gap-x-1.5 pr-2",b=l&&"block space-y-2",w=!l&&"w-fit",D;e[16]!==i||e[17]!==v||e[18]!==x||e[19]!==y||e[20]!==b||e[21]!==w?(D=G("mo-label inline-flex","pt-0 pb-0 pl-0",v,x,y,b,w,i),e[16]=i,e[17]=v,e[18]=x,e[19]=y,e[20]=b,e[21]=w,e[22]=D):D=e[22];let j;return e[23]!==r||e[24]!==h||e[25]!==D?(j=(0,s.jsxs)("div",{className:D,children:[h,r]}),e[23]=r,e[24]=h,e[25]=D,e[26]=j):j=e[26],j};var qD=te(),GD=class{constructor(){K(this,"tagName","marimo-checkbox");K(this,"validator",L({initialValue:U(),label:M().nullable(),disabled:U().optional()}))}render(t){return(0,s.jsx)(QD,{...t})}},QD=t=>{let e=(0,qD.c)(11),{value:a,setValue:r,data:n}=t,i;e[0]===r?i=e[1]:(i=c=>{c!=="indeterminate"&&r(c)},e[0]=r,e[1]=i);let o=i,l=(0,f.useId)(),d;e[2]!==n.disabled||e[3]!==l||e[4]!==o||e[5]!==a?(d=(0,s.jsx)(yl,{"data-testid":"marimo-plugin-checkbox",checked:a,onCheckedChange:o,id:l,disabled:n.disabled}),e[2]=n.disabled,e[3]=l,e[4]=o,e[5]=a,e[6]=d):d=e[6];let u;return e[7]!==n.label||e[8]!==l||e[9]!==d?(u=(0,s.jsx)(et,{label:n.label,align:"right",id:l,children:d}),e[7]=n.label,e[8]=l,e[9]=d,e[10]=u):u=e[10],u},JD=te(),XD=class{constructor(){K(this,"tagName","marimo-code-editor");K(this,"validator",L({initialValue:M(),language:M().default("python"),placeholder:M(),theme:be(["light","dark"]).optional(),label:M().nullable(),disabled:U().optional(),minHeight:W().optional(),maxHeight:W().optional(),showCopyButton:U().optional(),debounce:Se([U(),W()]).default(!1)}))}render(t){return(0,s.jsx)(ej,{...t.data,value:t.value,setValue:t.setValue})}},ej=t=>{let e=(0,JD.c)(34),{theme:a}=vn(),r=t.theme||a,n=t.minHeight?`${t.minHeight}px`:"70px",i=t.maxHeight?`${t.maxHeight}px`:void 0,[o,l]=(0,f.useState)(t.value),d=Number.isFinite(t.debounce)?t.debounce:0,u=!Number.isFinite(t.debounce),c;e[0]!==t.setValue||e[1]!==t.value||e[2]!==d||e[3]!==u?(c={initialValue:t.value,delay:d,onChange:t.setValue,disabled:u},e[0]=t.setValue,e[1]=t.value,e[2]=d,e[3]=u,e[4]=c):c=e[4];let{onChange:m}=$y(c),p;e[5]!==t||e[6]!==m?(p=R=>{l(N=>R),typeof t.debounce=="number"?m(R):t.debounce||t.setValue(R)},e[5]=t,e[6]=m,e[7]=p):p=e[7];let h=Be(p),v,x;e[8]===t.value?(v=e[9],x=e[10]):(v=()=>{l(t.value)},x=[t.value],e[8]=t.value,e[9]=v,e[10]=x),(0,f.useEffect)(v,x);let y;e[11]!==o||e[12]!==t?(y=()=>{t.setValue(o)},e[11]=o,e[12]=t,e[13]=y):y=e[13];let b=Be(y),w;e:{if(t.debounce===!0){let N;e[14]===b?N=e[15]:(N=RA.domEventHandlers({blur:b}),e[14]=b,e[15]=N);let E;e[16]===N?E=e[17]:(E=[N],e[16]=N,e[17]=E),w=E;break e}let R;e[18]===Symbol.for("react.memo_cache_sentinel")?(R=[],e[18]=R):R=e[18],w=R}let D=w,j=`cm *:outline-hidden border rounded overflow-hidden ${r}`,C=r==="dark"?"dark":"light",S=!t.disabled,k;e[19]!==D||e[20]!==h||e[21]!==o||e[22]!==i||e[23]!==n||e[24]!==t.language||e[25]!==t.placeholder||e[26]!==t.showCopyButton||e[27]!==S||e[28]!==j||e[29]!==C?(k=(0,s.jsx)(QA,{className:j,theme:C,minHeight:n,maxHeight:i,placeholder:t.placeholder,editable:S,value:o,language:t.language,onChange:h,showCopyButton:t.showCopyButton,extensions:D}),e[19]=D,e[20]=h,e[21]=o,e[22]=i,e[23]=n,e[24]=t.language,e[25]=t.placeholder,e[26]=t.showCopyButton,e[27]=S,e[28]=j,e[29]=C,e[30]=k):k=e[30];let g;return e[31]!==t.label||e[32]!==k?(g=(0,s.jsx)(_t,{children:(0,s.jsx)(et,{label:t.label,align:"top",fullWidth:!0,children:k})}),e[31]=t.label,e[32]=k,e[33]=g):g=e[33],g};const ut={input(t){return{output(e){return{input:t,output:e}}}}};var tj=f.lazy(()=>jt(()=>import("./chat-ui-Dv4y0-td.js").then(async t=>(await t.__tla,t)),__vite__mapDeps([328,296,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,295,109,154,139,106,174,144,145,146,147,148,149,150,140,284,297,167,121,168,112,113,275,142,329,153,143,330,331,281,122,107]),import.meta.url).then(t=>({default:t.Chatbot}))),hx=ee(L({id:M(),role:be(["system","user","assistant"]),content:M().nullable(),parts:ee(aa()),metadata:aa().nullable()})),fx=L({max_tokens:W().nullable(),temperature:W().nullable(),top_p:W().nullable(),top_k:W().nullable(),frequency_penalty:W().nullable(),presence_penalty:W().nullable()});const aj=zt("marimo-chatbot").withData(L({prompts:ee(M()).default(ga.EMPTY),showConfigurationControls:U(),maxHeight:W().optional(),config:fx,allowAttachments:Se([U(),M().array()]),disabled:U().default(!1)})).withFunctions({get_chat_history:ut.input(L({})).output(L({messages:hx})),delete_chat_history:ut.input(L({})).output(cn()),delete_chat_message:ut.input(L({index:W()})).output(cn()),send_prompt:ut.input(L({messages:hx,config:fx})).output(Ga())}).renderer(t=>{var e;return(0,s.jsx)(_t,{children:(0,s.jsx)(f.Suspense,{children:(0,s.jsx)(tj,{prompts:t.data.prompts,showConfigurationControls:t.data.showConfigurationControls,maxHeight:t.data.maxHeight,allowAttachments:t.data.allowAttachments,disabled:t.data.disabled,config:t.data.config,get_chat_history:t.functions.get_chat_history,delete_chat_history:t.functions.delete_chat_history,delete_chat_message:t.functions.delete_chat_message,send_prompt:t.functions.send_prompt,value:((e=t.value)==null?void 0:e.messages)||ga.EMPTY,setValue:a=>t.setValue({messages:a}),host:t.host})})})});var rj='.gdg-r17m35ur{background-color:var(--gdg-bg-header-has-focus);box-shadow:0 0 0 1px var(--gdg-border-color);color:var(--gdg-text-group-header);font:var(--gdg-header-font-style)var(--gdg-font-family);min-height:var(--r17m35ur-0);border:none;border-radius:9px;outline:none;flex-grow:1;padding:0 8px}.gdg-c1tqibwd{background-color:var(--gdg-bg-header);align-items:center;padding:0 8px}.gdg-c1tqibwd,.gdg-d19meir1{display:flex}.gdg-d19meir1{box-sizing:border-box;--overlay-top:var(--d19meir1-0);font-family:var(--gdg-font-family);font-size:var(--gdg-editor-font-size);left:var(--d19meir1-1);max-height:calc(100vh - var(--d19meir1-4));max-width:400px;min-height:var(--d19meir1-3);min-width:var(--d19meir1-2);text-align:start;top:var(--d19meir1-0);flex-direction:column;width:max-content;position:absolute;overflow:hidden}@keyframes glide_fade_in-gdg-d19meir1{0%{opacity:0}to{opacity:1}}.gdg-d19meir1.gdg-style{background-color:var(--gdg-bg-cell);box-shadow:0 0 0 1px var(--gdg-accent-color),0 0 1px #3e415666,0 6px 12px #3e415626;border-radius:2px;animation:60ms glide_fade_in-gdg-d19meir1}.gdg-d19meir1.gdg-pad{padding:var(--d19meir1-5)8.5px 3px}.gdg-d19meir1 .gdg-clip-region{border-radius:2px;flex-direction:column;flex-grow:1;display:flex;overflow:hidden auto}.gdg-d19meir1 .gdg-clip-region .gdg-growing-entry{height:100%}.gdg-d19meir1 .gdg-clip-region input.gdg-input{border:0;outline:none;width:100%}.gdg-d19meir1 .gdg-clip-region textarea.gdg-input{border:0;outline:none}.gdg-b1ygi5by{flex-wrap:wrap;margin-top:auto;margin-bottom:auto}.gdg-b1ygi5by,.gdg-b1ygi5by .boe-bubble{display:flex}.gdg-b1ygi5by .boe-bubble{background-color:var(--gdg-bg-bubble);border-radius:var(--gdg-rounding-radius,10px);color:var(--gdg-text-dark);justify-content:center;align-items:center;height:20px;margin:2px;padding:0 8px}.gdg-b1ygi5by textarea{opacity:0;width:0;height:0;position:absolute;top:0;left:0}.gdg-u1rrojo{align-items:center;min-height:21px;display:flex}.gdg-u1rrojo,.gdg-u1rrojo .gdg-link-area{flex-grow:1}.gdg-u1rrojo .gdg-link-area{color:var(--gdg-link-color);cursor:pointer;text-overflow:ellipsis;white-space:nowrap;flex-shrink:1;margin-right:8px;overflow:hidden;-webkit-text-decoration:underline!important;text-decoration:underline!important}.gdg-u1rrojo .gdg-edit-icon{color:var(--gdg-accent-color);cursor:pointer;flex-shrink:0;justify-content:center;align-items:center;width:32px;display:flex}.gdg-u1rrojo .gdg-edit-icon>*{width:24px;height:24px}.gdg-u1rrojo textarea{opacity:0;width:0;height:0;position:absolute;top:0;left:0}.gdg-n15fjm3e{color:var(--gdg-text-dark);margin:6px 0 3px;display:flex}.gdg-n15fjm3e>input{background-color:var(--gdg-bg-cell);color:var(--gdg-text-dark);font-family:var(--gdg-font-family);font-size:var(--gdg-editor-font-size);padding:0}.gdg-i2iowwq,.gdg-i2iowwq .gdg-centering-container{height:100%;display:flex}.gdg-i2iowwq .gdg-centering-container{justify-content:center;align-items:center}.gdg-i2iowwq .gdg-centering-container canvas,.gdg-i2iowwq .gdg-centering-container img{max-height:calc(100vh - var(--overlay-top) - 20px);object-fit:contain;user-select:none}.gdg-i2iowwq .gdg-centering-container canvas{max-width:380px}.gdg-i2iowwq .gdg-edit-icon{color:var(--gdg-accent-color);cursor:pointer;justify-content:center;align-items:center;width:48px;height:48px;display:flex;position:absolute;top:12px;right:0}.gdg-i2iowwq .gdg-edit-icon>*{width:24px;height:24px}.gdg-i2iowwq textarea{opacity:0;width:0;height:0;position:absolute;top:0;left:0}.gdg-m1pnx84e{min-width:var(--m1pnx84e-0);-webkit-align-items:flex-start;-webkit-box-align:flex-start;-ms-flex-align:flex-start;width:100%;color:var(--gdg-text-dark);justify-content:space-between;align-items:flex-start;display:flex;position:relative}.gdg-m1pnx84e .gdg-g1y0xocz{flex-shrink:1;min-width:0}.gdg-m1pnx84e .gdg-spacer{flex:1}.gdg-m1pnx84e .gdg-edit-icon{cursor:pointer;color:var(--gdg-accent-color);width:24px;height:24px;-webkit-transition:all "0.125s ease";transition:all "0.125s ease";border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;padding:0;display:flex;position:relative}.gdg-m1pnx84e .gdg-edit-icon>*{width:16px;height:16px}.gdg-m1pnx84e .gdg-edit-hover:hover{background-color:var(--gdg-accent-light);transition:background-color .15s}.gdg-m1pnx84e .gdg-checkmark-hover:hover{background-color:var(--gdg-accent-color);color:#fff}.gdg-m1pnx84e .gdg-md-edit-textarea{opacity:0;width:0;height:0;margin-top:25px;padding:0;position:relative;top:0;left:0}.gdg-m1pnx84e .gdg-ml-6{margin-left:6px}.gdg-d4zsq0x{flex-wrap:wrap}.gdg-d4zsq0x,.gdg-d4zsq0x .doe-bubble{display:flex}.gdg-d4zsq0x .doe-bubble{background-color:var(--gdg-bg-cell);border-radius:var(--gdg-rounding-radius,6px);color:var(--gdg-text-dark);justify-content:center;align-items:center;height:24px;margin:2px;padding:0 8px;box-shadow:0 0 1px #3e415666,0 1px 3px #3e415666}.gdg-d4zsq0x .doe-bubble img{object-fit:contain;height:16px;margin-right:4px}.gdg-d4zsq0x textarea{opacity:0;width:0;height:0;position:absolute;top:0;left:0}.gdg-s1dgczr6 .dvn-scroller{overflow:var(--s1dgczr6-0);transform:translateZ(0)}.gdg-s1dgczr6 .dvn-hidden{visibility:hidden}.gdg-s1dgczr6 .dvn-scroll-inner{pointer-events:none;display:flex}.gdg-s1dgczr6 .dvn-scroll-inner>*{flex-shrink:0}.gdg-s1dgczr6 .dvn-scroll-inner .dvn-spacer{flex-grow:1}.gdg-s1dgczr6 .dvn-scroll-inner .dvn-stack{flex-direction:column;display:flex}.gdg-s1dgczr6 .dvn-underlay>*{position:absolute;top:0;left:0}.gdg-s1dgczr6 canvas{outline:none}.gdg-s1dgczr6 canvas *{height:0}.gdg-izpuzkl{font-family:var(--gdg-font-family);font-size:var(--gdg-editor-font-size);resize:none;white-space:pre-wrap;-webkit-text-fill-color:var(--gdg-text-dark);width:100%;min-width:100%;height:100%;color:var(--gdg-text-dark);background-color:#0000;border:0;border-radius:0;margin:0;padding:0;line-height:16px;position:absolute;inset:0;overflow:hidden}.gdg-izpuzkl::-webkit-input-placeholder{color:var(--gdg-text-light)}.gdg-izpuzkl::placeholder{color:var(--gdg-text-light)}.gdg-izpuzkl:-ms-placeholder-shown{color:var(--gdg-text-light)}.gdg-izpuzkl::placeholder{color:var(--gdg-text-light)}.gdg-invalid .gdg-izpuzkl{text-decoration:underline #d60606}.gdg-s69h75o{visibility:hidden;white-space:pre-wrap;word-wrap:break-word;color:var(--gdg-text-dark);font-family:var(--gdg-font-family);font-size:var(--gdg-editor-font-size);width:max-content;min-width:100%;max-width:100%;margin:0;padding:0 0 2px;line-height:16px}.gdg-g1y0xocz{margin-top:6px;position:relative}.gdg-wmyidgi{height:var(--wmyidgi-1);min-width:10px;max-width:100%;min-height:10px;max-height:100%;width:var(--wmyidgi-0);direction:ltr;position:relative;overflow:clip}.gdg-wmyidgi>:first-child{width:100%;height:100%;position:absolute;top:0;left:0}.gdg-seveqep{background-color:var(--gdg-bg-cell);border:1px solid var(--gdg-border-color);color:var(--gdg-text-dark);font-size:var(--gdg-editor-font-size);border-radius:6px;padding:8px;animation:.15s forwards gdg-search-fadein-gdg-seveqep;position:absolute;top:4px;right:20px}.gdg-seveqep.out{animation:.15s forwards gdg-search-fadeout-gdg-seveqep}.gdg-seveqep .gdg-search-bar-inner{display:flex}.gdg-seveqep .gdg-search-status{padding-top:4px;font-size:11px}.gdg-seveqep .gdg-search-progress{background-color:var(--gdg-text-light);height:4px;position:absolute;bottom:0;left:0}.gdg-seveqep input{background-color:var(--gdg-bg-cell);color:var(--gdg-textDark);border:0;outline:none;width:220px}.gdg-seveqep button{width:24px;height:24px;color:var(--gdg-text-medium);cursor:pointer;background:0 0;border:none;outline:none;justify-content:center;align-items:center;padding:0;display:flex}.gdg-seveqep button:hover{color:var(--gdg-text-dark)}.gdg-seveqep button .button-icon{width:16px;height:16px}.gdg-seveqep button:disabled{opacity:.4;pointer-events:none}@keyframes gdg-search-fadeout-gdg-seveqep{0%{transform:translate(0)}to{transform:translate(400px)}}@keyframes gdg-search-fadein-gdg-seveqep{0%{transform:translate(400px)}to{transform:translate(0)}}.gdg-mnuv029{word-break:break-word;-webkit-touch-callout:default;padding-top:6px}.gdg-mnuv029>*{margin:0}.gdg-mnuv029 :last-child{margin-bottom:0}.gdg-mnuv029 p img{width:100%}',nj=te();const gx=t=>{let e=(0,nj.c)(14),{wrapperClassName:a,className:r,pageSize:n}=t,i=n===void 0?10:n,o;e[0]===a?o=e[1]:(o=G(a,"flex flex-col space-y-2"),e[0]=a,e[1]=o);let l=r||"rounded-md border",d;e[2]===l?d=e[3]:(d=G(l),e[2]=l,e[3]=d);let u;e[4]===Symbol.for("react.memo_cache_sentinel")?(u=(0,s.jsx)(Yy,{children:Array.from({length:1}).map(oj)}),e[4]=u):u=e[4];let c;e[5]===i?c=e[6]:(c=(0,s.jsxs)(Uc,{children:[u,(0,s.jsx)(Wc,{children:Array.from({length:i}).map(sj)})]}),e[5]=i,e[6]=c);let m;e[7]!==d||e[8]!==c?(m=(0,s.jsx)("div",{part:"table-wrapper",className:d,children:c}),e[7]=d,e[8]=c,e[9]=m):m=e[9];let p;e[10]===Symbol.for("react.memo_cache_sentinel")?(p=(0,s.jsx)("div",{className:"flex align-items justify-between shrink-0 h-8"}),e[10]=p):p=e[10];let h;return e[11]!==o||e[12]!==m?(h=(0,s.jsxs)("div",{className:o,children:[m,p]}),e[11]=o,e[12]=m,e[13]=h):h=e[13],h};function ij(t,e){return(0,s.jsx)(Hc,{children:(0,s.jsx)("div",{className:"h-4 bg-(--slate-5) animate-pulse rounded-md w-[70%]"})},e)}function oj(t,e){return(0,s.jsx)(Dn,{children:Array.from({length:8}).map(ij)},e)}function lj(t,e){return(0,s.jsx)(Ir,{children:(0,s.jsx)("div",{className:"h-4 bg-(--slate-5) animate-pulse rounded-md w-[90%]"})},e)}function sj(t,e){return(0,s.jsx)(Dn,{children:Array.from({length:8}).map(lj)},e)}const So=["string","boolean","integer","number","date","datetime","time","unknown"];var dj=te(),uj=dy,cj=f.lazy(()=>jt(()=>import("./glide-data-editor-a3qLDl-r.js").then(async t=>(await t.__tla,t)),__vite__mapDeps([332,4,108,12,13,8,9,10,11,6,7,35,69,14,15,17,18,20,19,70,80,79,25,60,29,61,62,63,81,44,41,26,82,83,84,85,21,78,16,23,39,333,40,24,27,28,30,42,94,334,335,157,98,99,276,277,336]),import.meta.url));const mj=zt("marimo-data-editor",{cssStyles:[rj]}).withData(L({initialValue:L({edits:ee(L({rowIdx:W(),columnId:M(),value:Ga()}))}),label:M().nullable(),data:Se([M(),ee(L({}).passthrough())]),fieldTypes:ee(ra([Iv(),ra([be(So),M()])])).nullish(),editableColumns:Se([ee(M()),Ge("all")]),columnSizingMode:be(["auto","fit"]).default("auto")})).withFunctions({}).renderer(t=>(0,s.jsx)(uj,{children:(0,s.jsx)(pj,{data:t.data.data,fieldTypes:t.data.fieldTypes,edits:t.value,onEdits:t.setValue,host:t.host,editableColumns:t.data.editableColumns})}));var pj=t=>{let e=(0,dj.c)(31),a;e[0]===Symbol.for("react.memo_cache_sentinel")?(a=[],e[0]=a):a=e[0];let[r,n]=(0,f.useState)(a),i;e[1]===Symbol.for("react.memo_cache_sentinel")?(i={},e[1]=i):i=e[1];let[o,l]=(0,f.useState)(i),d,u;e[2]!==t.data||e[3]!==t.fieldTypes?(d=async()=>{let w=bc(t.fieldTypes??[]),D=Array.isArray(t.data)?t.data:await Wy(t.data,{type:"csv",parse:pI(w)},{handleBigIntAndNumberLike:!0});n(D),l(bc(t.fieldTypes??wc(D)))},u=[t.fieldTypes,t.data],e[2]=t.data,e[3]=t.fieldTypes,e[4]=d,e[5]=u):(d=e[4],u=e[5]);let{error:c}=Yt(d,u);if(c){let w;e[6]===Symbol.for("react.memo_cache_sentinel")?(w=(0,s.jsx)(Bc,{children:"Error"}),e[6]=w):w=e[6];let D=c.message||"An unknown error occurred",j;return e[7]===D?j=e[8]:(j=(0,s.jsxs)(Gl,{variant:"destructive",className:"mb-2",children:[w,(0,s.jsx)("div",{className:"text-md",children:D})]}),e[7]=D,e[8]=j),j}if(!r){let w;return e[9]===Symbol.for("react.memo_cache_sentinel")?(w=(0,s.jsx)(yc,{milliseconds:200,children:(0,s.jsx)(gx,{pageSize:10})}),e[9]=w):w=e[9],w}let m;e[10]===t?m=e[11]:(m=w=>{t.onEdits(D=>({...D,edits:[...D.edits,...w]}))},e[10]=t,e[11]=m);let p;e[12]!==r||e[13]!==t?(p=w=>{let D=w.flatMap((j,C)=>Object.entries(j).map(S=>{let[k,g]=S;return{rowIdx:r.length+C,columnId:k,value:g}}));t.onEdits(j=>({...j,edits:[...j.edits,...D]}))},e[12]=r,e[13]=t,e[14]=p):p=e[14];let h,v,x,y;e[15]===t?(h=e[16],v=e[17],x=e[18],y=e[19]):(h=w=>{t.onEdits(D=>{let j=w.map(hj);return{...D,edits:[...D.edits,...j]}})},v=(w,D)=>{t.onEdits(j=>({...j,edits:[...j.edits,{columnIdx:w,newName:D,type:Al.Rename}]}))},x=w=>{t.onEdits(D=>({...D,edits:[...D.edits,{columnIdx:w,type:Al.Remove}]}))},y=(w,D)=>{t.onEdits(j=>({...j,edits:[...j.edits,{columnIdx:w,newName:D,type:Al.Insert}]}))},e[15]=t,e[16]=h,e[17]=v,e[18]=x,e[19]=y);let b;return e[20]!==o||e[21]!==r||e[22]!==t.editableColumns||e[23]!==t.edits.edits||e[24]!==m||e[25]!==p||e[26]!==h||e[27]!==v||e[28]!==x||e[29]!==y?(b=(0,s.jsx)(cj,{data:r,setData:n,columnFields:o,setColumnFields:l,editableColumns:t.editableColumns,edits:t.edits.edits,onAddEdits:m,onAddRows:p,onDeleteRows:h,onRenameColumn:v,onDeleteColumn:x,onAddColumn:y}),e[20]=o,e[21]=r,e[22]=t.editableColumns,e[23]=t.edits.edits,e[24]=m,e[25]=p,e[26]=h,e[27]=v,e[28]=x,e[29]=y,e[30]=b):b=e[30],b};function hj(t,e){return{rowIdx:t-e,type:Al.Remove}}var fj=" ";function Ro(t){return t.split(`
|
|
10
|
+
`),r.append(i)}}isAdoptedStyleSheetsSupported(){return"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype}};Nd(t.tagName,e)}function cx(t){var e;return(e=t.title)!=null&&e.startsWith("marimo")?!0:!t.href||!t.href.endsWith(".css")?!1:(t.href.includes("127.0.0.1"),t.href.includes("/@marimo-team/")?!0:t.href.startsWith(window.location.origin))}function _d(t){return!t||!(t instanceof HTMLElement)?!1:"__type__"in t&&t.__type__===dx}function mx(t,e){let a=t.safeParse(e);if(!a.success)throw ue.log("Failed to parse data",e,a.error),Error(ST(a.error));return a.data}var ko="MARIMO-UI-ELEMENT";function MD(){class t extends HTMLElement{constructor(){super(...arguments);K(this,"initialized",!1);K(this,"inputListener",Ja.NOOP)}init(){if(this.initialized)return;let r=un.parseOrThrow(this);this.inputListener=i=>{r!==null&&i.detail.element===this.firstElementChild&&(Qa.has(r)||Qa.registerInstance(r,n),Qa.broadcastValueUpdate(n,r,i.detail.value))};let n=this.firstElementChild;if(r===null){ue.error("[marimo-ui-element] missing object-id attribute");return}if(n===null){ue.error("[marimo-ui-element] has no child");return}if(!(n instanceof HTMLElement)){ue.error("[marimo-ui-element] first child must be instance of HTMLElement");return}this.initialized=!0}connectedCallback(){if(this.init(),this.initialized){let r=un.parseOrThrow(this),n=this.firstElementChild;Qa.registerInstance(r,n),document.addEventListener(wn.TYPE,this.inputListener)}}disconnectedCallback(){if(this.initialized){document.removeEventListener(wn.TYPE,this.inputListener);let r=un.parseOrThrow(this);Qa.removeInstance(r,this.firstElementChild)}}reset(){let r=this.firstElementChild;_d(r)?r.reset():ue.error("[marimo-ui-element] first child must have a reset method")}static get observedAttributes(){return[kr]}attributeChangedCallback(r,n,i){if(this.initialized&&r==="random-id"&&n!==i){this.disconnectedCallback();let o=this.firstElementChild;_d(o)?o.rerender():ue.error("[marimo-ui-element] first child must have a rerender method"),this.initialized=!1,this.connectedCallback()}}}Nd(ko.toLowerCase(),t)}function Ad(t){if(!t)return null;if(t.nodeName===ko)return un.parseOrThrow(t);let e=t.parentElement;return(e==null?void 0:e.nodeName)===ko?un.parseOrThrow(e):null}function FD(t){return t.tagName===ko}var VD=(0,Z6().init)({length:6});function zD(){Nd("marimo-sidebar",class extends HTMLElement{constructor(){super(...arguments);K(this,"uniqueId",Symbol(VD()))}connectedCallback(){this.mountReactComponent(),this.observer=new MutationObserver(()=>{this.updateReactComponent()}),this.style.display="none",this.observer.observe(this,{attributes:!0,childList:!0,subtree:!0,characterData:!0})}disconnectedCallback(){this.observer&&(this.observer.disconnect(),this.unmountReactComponent())}mountReactComponent(){this.syncWidth(),ji.mount({name:Rl.SIDEBAR,ref:this.uniqueId,children:this.getContents()})}unmountReactComponent(){ji.unmount({name:Rl.SIDEBAR,ref:this.uniqueId})}updateReactComponent(){this.syncWidth(),ji.update({name:Rl.SIDEBAR,ref:this.uniqueId,children:this.getContents()})}syncWidth(){try{let e=this.dataset.width;e?$e.set(Vv,{type:"setWidth",width:JSON.parse(e)}):$e.set(Vv,{type:"setWidth",width:void 0})}catch(e){ue.error(e)}}getContents(){return He({html:this.innerHTML})}})}function zt(t,e={}){return{withData(a){return{withFunctions(r){return{renderer(n){return{...e,tagName:t,validator:a,functions:r,render:n}}}},renderer(r){return{...e,tagName:t,validator:a,render:r}}}}}}var Id=te();function OD(t){let e=(0,Id.c)(16),{jsUrl:a,jsHash:r}=t,n;e[0]!==r||e[1]!==a?(n=async()=>await zv.getModule(a,r),e[0]=r,e[1]=a,e[2]=n):n=e[2];let i;e[3]===r?i=e[4]:(i=[r],e[3]=r,e[4]=i);let{data:o,error:l,refetch:d}=Yt(n,i),u=!!l,c;e[5]!==u||e[6]!==r||e[7]!==a||e[8]!==d?(c=()=>{u&&a&&(zv.invalidate(r),d())},e[5]=u,e[6]=r,e[7]=a,e[8]=d,e[9]=c):c=e[9];let m;e[10]!==u||e[11]!==a?(m=[u,a],e[10]=u,e[11]=a,e[12]=m):m=e[12],(0,f.useEffect)(c,m);let p;return e[13]!==l||e[14]!==o?(p={jsModule:o,error:l},e[13]=l,e[14]=o,e[15]=p):p=e[15],p}function LD(t,e){(0,f.useEffect)(()=>{let a=e.shadowRoot;if(!t||!a)return;if("adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype){let n=new CSSStyleSheet;try{return n.replaceSync(t),a&&(a.adoptedStyleSheets=[...a.adoptedStyleSheets,n]),()=>{a&&(a.adoptedStyleSheets=a.adoptedStyleSheets.filter(i=>i!==n))}}catch{}}let r=document.createElement("style");return r.innerHTML=t,a.append(r),()=>{r.remove()}},[t,e])}const $D=zt("marimo-anywidget").withData(L({jsUrl:M(),jsHash:M(),modelId:M().transform(t=>t)})).withFunctions({}).renderer(t=>(0,s.jsx)(BD,{...t}));var BD=t=>{let e=(0,Id.c)(14),{jsUrl:a,jsHash:r,modelId:n}=t.data,i=t.host,o;e[0]!==r||e[1]!==a?(o={jsUrl:a,jsHash:r},e[0]=r,e[1]=a,e[2]=o):o=e[2];let{jsModule:l,error:d}=OD(o);if(d){let m;return e[3]===d?m=e[4]:(m=(0,s.jsx)(_i,{error:d}),e[3]=d,e[4]=m),m}if(!l)return null;if(!WD(l)){let m=`Module at ${a} does not appear to be a valid anywidget`,p;e[5]===m?p=e[6]:(p=Error(m),e[5]=m,e[6]=p);let h=p,v;return e[7]===h?v=e[8]:(v=(0,s.jsx)(_i,{error:h}),e[7]=h,e[8]=v),v}let u=`${r}:${n}`,c;return e[9]!==i||e[10]!==l.default||e[11]!==n||e[12]!==u?(c=(0,s.jsx)(UD,{widget:l.default,modelId:n,host:i},u),e[9]=i,e[10]=l.default,e[11]=n,e[12]=u,e[13]=c):c=e[13],c};async function HD(t,e,a,r,n){r.innerHTML="";try{await(await LT.getOrCreate(a).bind(t,e))(r,n)}catch(i){ue.error("Error rendering anywidget",i),r.classList.add("text-error"),r.innerHTML=`Error rendering anywidget: ${Hy(i)}`}}function WD(t){var e,a;return t.default?typeof t.default=="function"||typeof((e=t.default)==null?void 0:e.render)=="function"||typeof((a=t.default)==null?void 0:a.initialize)=="function":!1}var UD=t=>{let e=(0,Id.c)(9),{widget:a,modelId:r,host:n}=t,i=(0,f.useRef)(null),o,l;e[0]===r?(o=e[1],l=e[2]):(o=uc.getSync(r),o||ue.error("Model not found for modelId",r),l=o==null?void 0:o.get("_css"),e[0]=r,e[1]=o,e[2]=l),LD(l,n);let d,u;e[3]!==o||e[4]!==r||e[5]!==a?(d=()=>{if(!i.current||!o)return;let m=new AbortController;return HD(a,o,r,i.current,m.signal),()=>m.abort()},u=[a,r,o],e[3]=o,e[4]=r,e[5]=a,e[6]=d,e[7]=u):(d=e[6],u=e[7]),(0,f.useEffect)(d,u);let c;return e[8]===Symbol.for("react.memo_cache_sentinel")?(c=(0,s.jsx)("div",{ref:i}),e[8]=c):c=e[8],c};const px=be(["neutral","success","warn","danger","info","alert"]).default("neutral");var ZD=class{constructor(){K(this,"tagName","marimo-button");K(this,"validator",L({label:M(),kind:px,disabled:U().default(!1),fullWidth:U().default(!1),tooltip:M().optional(),keyboardShortcut:M().optional()}))}render(t){let{data:{disabled:e,kind:a,label:r,fullWidth:n,tooltip:i,keyboardShortcut:o}}=t,l=(0,s.jsx)(Pe,{"data-testid":"marimo-plugin-button",variant:KD(a),disabled:e,size:"xs",keyboardShortcut:o,className:G({"w-full":n,"w-fit":!n}),onClick:u=>{e||(u.stopPropagation(),t.setValue(c=>c+1))},type:"submit",children:He({html:r})}),d=o&&!i?(0,s.jsx)(qy,{shortcut:o}):i;return d?(0,s.jsx)(_t,{children:(0,s.jsx)(_a,{content:d,delayDuration:200,children:l})}):l}};function KD(t){switch(t){case"neutral":return"secondary";case"danger":return"destructive";case"warn":return"warn";case"success":return"success"}}var YD=te();const et=t=>{let e=(0,YD.c)(27),{label:a,children:r,align:n,className:i,labelClassName:o,fullWidth:l,id:d}=t,u=n===void 0?"left":n;if(l&&(u="top"),!a){if(u==="top"){let k;return e[0]!==r||e[1]!==i?(k=(0,s.jsx)("div",{className:i,children:r}),e[0]=r,e[1]=i,e[2]=k):k=e[2],k}let C;e[3]===i?C=e[4]:(C=G("inline-flex",i),e[3]=i,e[4]=C);let S;return e[5]!==r||e[6]!==C?(S=(0,s.jsx)("div",{className:C,children:r}),e[5]=r,e[6]=C,e[7]=S):S=e[7],S}let c;e[8]===o?c=e[9]:(c=G("font-prose",o),e[8]=o,e[9]=c);let m;e[10]===a?m=e[11]:(m=He({html:a}),e[10]=a,e[11]=m);let p;e[12]!==d||e[13]!==c||e[14]!==m?(p=(0,s.jsx)(Dc,{htmlFor:d,className:c,children:m}),e[12]=d,e[13]=c,e[14]=m,e[15]=p):p=e[15];let h=p,v=u==="top"&&"flex-col items-start gap-y-2",x=u==="left"&&"flex-row items-center gap-x-1.5 pr-2",y=u==="right"&&"flex-row-reverse items-center gap-x-1.5 pr-2",b=l&&"block space-y-2",w=!l&&"w-fit",D;e[16]!==i||e[17]!==v||e[18]!==x||e[19]!==y||e[20]!==b||e[21]!==w?(D=G("mo-label inline-flex","pt-0 pb-0 pl-0",v,x,y,b,w,i),e[16]=i,e[17]=v,e[18]=x,e[19]=y,e[20]=b,e[21]=w,e[22]=D):D=e[22];let j;return e[23]!==r||e[24]!==h||e[25]!==D?(j=(0,s.jsxs)("div",{className:D,children:[h,r]}),e[23]=r,e[24]=h,e[25]=D,e[26]=j):j=e[26],j};var qD=te(),GD=class{constructor(){K(this,"tagName","marimo-checkbox");K(this,"validator",L({initialValue:U(),label:M().nullable(),disabled:U().optional()}))}render(t){return(0,s.jsx)(QD,{...t})}},QD=t=>{let e=(0,qD.c)(11),{value:a,setValue:r,data:n}=t,i;e[0]===r?i=e[1]:(i=c=>{c!=="indeterminate"&&r(c)},e[0]=r,e[1]=i);let o=i,l=(0,f.useId)(),d;e[2]!==n.disabled||e[3]!==l||e[4]!==o||e[5]!==a?(d=(0,s.jsx)(yl,{"data-testid":"marimo-plugin-checkbox",checked:a,onCheckedChange:o,id:l,disabled:n.disabled}),e[2]=n.disabled,e[3]=l,e[4]=o,e[5]=a,e[6]=d):d=e[6];let u;return e[7]!==n.label||e[8]!==l||e[9]!==d?(u=(0,s.jsx)(et,{label:n.label,align:"right",id:l,children:d}),e[7]=n.label,e[8]=l,e[9]=d,e[10]=u):u=e[10],u},JD=te(),XD=class{constructor(){K(this,"tagName","marimo-code-editor");K(this,"validator",L({initialValue:M(),language:M().default("python"),placeholder:M(),theme:be(["light","dark"]).optional(),label:M().nullable(),disabled:U().optional(),minHeight:W().optional(),maxHeight:W().optional(),showCopyButton:U().optional(),debounce:Se([U(),W()]).default(!1)}))}render(t){return(0,s.jsx)(ej,{...t.data,value:t.value,setValue:t.setValue})}},ej=t=>{let e=(0,JD.c)(34),{theme:a}=vn(),r=t.theme||a,n=t.minHeight?`${t.minHeight}px`:"70px",i=t.maxHeight?`${t.maxHeight}px`:void 0,[o,l]=(0,f.useState)(t.value),d=Number.isFinite(t.debounce)?t.debounce:0,u=!Number.isFinite(t.debounce),c;e[0]!==t.setValue||e[1]!==t.value||e[2]!==d||e[3]!==u?(c={initialValue:t.value,delay:d,onChange:t.setValue,disabled:u},e[0]=t.setValue,e[1]=t.value,e[2]=d,e[3]=u,e[4]=c):c=e[4];let{onChange:m}=$y(c),p;e[5]!==t||e[6]!==m?(p=R=>{l(N=>R),typeof t.debounce=="number"?m(R):t.debounce||t.setValue(R)},e[5]=t,e[6]=m,e[7]=p):p=e[7];let h=Be(p),v,x;e[8]===t.value?(v=e[9],x=e[10]):(v=()=>{l(t.value)},x=[t.value],e[8]=t.value,e[9]=v,e[10]=x),(0,f.useEffect)(v,x);let y;e[11]!==o||e[12]!==t?(y=()=>{t.setValue(o)},e[11]=o,e[12]=t,e[13]=y):y=e[13];let b=Be(y),w;e:{if(t.debounce===!0){let N;e[14]===b?N=e[15]:(N=RA.domEventHandlers({blur:b}),e[14]=b,e[15]=N);let E;e[16]===N?E=e[17]:(E=[N],e[16]=N,e[17]=E),w=E;break e}let R;e[18]===Symbol.for("react.memo_cache_sentinel")?(R=[],e[18]=R):R=e[18],w=R}let D=w,j=`cm *:outline-hidden border rounded overflow-hidden ${r}`,C=r==="dark"?"dark":"light",S=!t.disabled,k;e[19]!==D||e[20]!==h||e[21]!==o||e[22]!==i||e[23]!==n||e[24]!==t.language||e[25]!==t.placeholder||e[26]!==t.showCopyButton||e[27]!==S||e[28]!==j||e[29]!==C?(k=(0,s.jsx)(QA,{className:j,theme:C,minHeight:n,maxHeight:i,placeholder:t.placeholder,editable:S,value:o,language:t.language,onChange:h,showCopyButton:t.showCopyButton,extensions:D}),e[19]=D,e[20]=h,e[21]=o,e[22]=i,e[23]=n,e[24]=t.language,e[25]=t.placeholder,e[26]=t.showCopyButton,e[27]=S,e[28]=j,e[29]=C,e[30]=k):k=e[30];let g;return e[31]!==t.label||e[32]!==k?(g=(0,s.jsx)(_t,{children:(0,s.jsx)(et,{label:t.label,align:"top",fullWidth:!0,children:k})}),e[31]=t.label,e[32]=k,e[33]=g):g=e[33],g};const ut={input(t){return{output(e){return{input:t,output:e}}}}};var tj=f.lazy(()=>jt(()=>import("./chat-ui-Dv4y0-td.js").then(async t=>(await t.__tla,t)),__vite__mapDeps([328,296,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,295,109,154,139,106,174,144,145,146,147,148,149,150,140,284,297,167,121,168,112,113,275,142,329,153,143,330,331,281,122,107]),import.meta.url).then(t=>({default:t.Chatbot}))),hx=ee(L({id:M(),role:be(["system","user","assistant"]),content:M().nullable(),parts:ee(aa()),metadata:aa().nullable()})),fx=L({max_tokens:W().nullable(),temperature:W().nullable(),top_p:W().nullable(),top_k:W().nullable(),frequency_penalty:W().nullable(),presence_penalty:W().nullable()});const aj=zt("marimo-chatbot").withData(L({prompts:ee(M()).default(ga.EMPTY),showConfigurationControls:U(),maxHeight:W().optional(),config:fx,allowAttachments:Se([U(),M().array()]),disabled:U().default(!1)})).withFunctions({get_chat_history:ut.input(L({})).output(L({messages:hx})),delete_chat_history:ut.input(L({})).output(cn()),delete_chat_message:ut.input(L({index:W()})).output(cn()),send_prompt:ut.input(L({messages:hx,config:fx})).output(Ga())}).renderer(t=>{var e;return(0,s.jsx)(_t,{children:(0,s.jsx)(f.Suspense,{children:(0,s.jsx)(tj,{prompts:t.data.prompts,showConfigurationControls:t.data.showConfigurationControls,maxHeight:t.data.maxHeight,allowAttachments:t.data.allowAttachments,disabled:t.data.disabled,config:t.data.config,get_chat_history:t.functions.get_chat_history,delete_chat_history:t.functions.delete_chat_history,delete_chat_message:t.functions.delete_chat_message,send_prompt:t.functions.send_prompt,value:((e=t.value)==null?void 0:e.messages)||ga.EMPTY,setValue:a=>t.setValue({messages:a}),host:t.host})})})});var rj='.gdg-r17m35ur{background-color:var(--gdg-bg-header-has-focus);box-shadow:0 0 0 1px var(--gdg-border-color);color:var(--gdg-text-group-header);font:var(--gdg-header-font-style)var(--gdg-font-family);min-height:var(--r17m35ur-0);border:none;border-radius:9px;outline:none;flex-grow:1;padding:0 8px}.gdg-c1tqibwd{background-color:var(--gdg-bg-header);align-items:center;padding:0 8px}.gdg-c1tqibwd,.gdg-d19meir1{display:flex}.gdg-d19meir1{box-sizing:border-box;--overlay-top:var(--d19meir1-0);font-family:var(--gdg-font-family);font-size:var(--gdg-editor-font-size);left:var(--d19meir1-1);max-height:calc(100vh - var(--d19meir1-4));max-width:400px;min-height:var(--d19meir1-3);min-width:var(--d19meir1-2);text-align:start;top:var(--d19meir1-0);flex-direction:column;width:max-content;position:absolute;overflow:hidden}@keyframes glide_fade_in-gdg-d19meir1{0%{opacity:0}to{opacity:1}}.gdg-d19meir1.gdg-style{background-color:var(--gdg-bg-cell);box-shadow:0 0 0 1px var(--gdg-accent-color),0 0 1px #3e415666,0 6px 12px #3e415626;border-radius:2px;animation:60ms glide_fade_in-gdg-d19meir1}.gdg-d19meir1.gdg-pad{padding:var(--d19meir1-5)8.5px 3px}.gdg-d19meir1 .gdg-clip-region{border-radius:2px;flex-direction:column;flex-grow:1;display:flex;overflow:hidden auto}.gdg-d19meir1 .gdg-clip-region .gdg-growing-entry{height:100%}.gdg-d19meir1 .gdg-clip-region input.gdg-input{border:0;outline:none;width:100%}.gdg-d19meir1 .gdg-clip-region textarea.gdg-input{border:0;outline:none}.gdg-b1ygi5by{flex-wrap:wrap;margin-top:auto;margin-bottom:auto}.gdg-b1ygi5by,.gdg-b1ygi5by .boe-bubble{display:flex}.gdg-b1ygi5by .boe-bubble{background-color:var(--gdg-bg-bubble);border-radius:var(--gdg-rounding-radius,10px);color:var(--gdg-text-dark);justify-content:center;align-items:center;height:20px;margin:2px;padding:0 8px}.gdg-b1ygi5by textarea{opacity:0;width:0;height:0;position:absolute;top:0;left:0}.gdg-u1rrojo{align-items:center;min-height:21px;display:flex}.gdg-u1rrojo,.gdg-u1rrojo .gdg-link-area{flex-grow:1}.gdg-u1rrojo .gdg-link-area{color:var(--gdg-link-color);cursor:pointer;text-overflow:ellipsis;white-space:nowrap;flex-shrink:1;margin-right:8px;overflow:hidden;-webkit-text-decoration:underline!important;text-decoration:underline!important}.gdg-u1rrojo .gdg-edit-icon{color:var(--gdg-accent-color);cursor:pointer;flex-shrink:0;justify-content:center;align-items:center;width:32px;display:flex}.gdg-u1rrojo .gdg-edit-icon>*{width:24px;height:24px}.gdg-u1rrojo textarea{opacity:0;width:0;height:0;position:absolute;top:0;left:0}.gdg-n15fjm3e{color:var(--gdg-text-dark);margin:6px 0 3px;display:flex}.gdg-n15fjm3e>input{background-color:var(--gdg-bg-cell);color:var(--gdg-text-dark);font-family:var(--gdg-font-family);font-size:var(--gdg-editor-font-size);padding:0}.gdg-i2iowwq,.gdg-i2iowwq .gdg-centering-container{height:100%;display:flex}.gdg-i2iowwq .gdg-centering-container{justify-content:center;align-items:center}.gdg-i2iowwq .gdg-centering-container canvas,.gdg-i2iowwq .gdg-centering-container img{max-height:calc(100vh - var(--overlay-top) - 20px);object-fit:contain;user-select:none}.gdg-i2iowwq .gdg-centering-container canvas{max-width:380px}.gdg-i2iowwq .gdg-edit-icon{color:var(--gdg-accent-color);cursor:pointer;justify-content:center;align-items:center;width:48px;height:48px;display:flex;position:absolute;top:12px;right:0}.gdg-i2iowwq .gdg-edit-icon>*{width:24px;height:24px}.gdg-i2iowwq textarea{opacity:0;width:0;height:0;position:absolute;top:0;left:0}.gdg-m1pnx84e{min-width:var(--m1pnx84e-0);-webkit-align-items:flex-start;-webkit-box-align:flex-start;-ms-flex-align:flex-start;width:100%;color:var(--gdg-text-dark);justify-content:space-between;align-items:flex-start;display:flex;position:relative}.gdg-m1pnx84e .gdg-g1y0xocz{flex-shrink:1;min-width:0}.gdg-m1pnx84e .gdg-spacer{flex:1}.gdg-m1pnx84e .gdg-edit-icon{cursor:pointer;color:var(--gdg-accent-color);width:24px;height:24px;-webkit-transition:all "0.125s ease";transition:all "0.125s ease";border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;padding:0;display:flex;position:relative}.gdg-m1pnx84e .gdg-edit-icon>*{width:16px;height:16px}.gdg-m1pnx84e .gdg-edit-hover:hover{background-color:var(--gdg-accent-light);transition:background-color .15s}.gdg-m1pnx84e .gdg-checkmark-hover:hover{background-color:var(--gdg-accent-color);color:#fff}.gdg-m1pnx84e .gdg-md-edit-textarea{opacity:0;width:0;height:0;margin-top:25px;padding:0;position:relative;top:0;left:0}.gdg-m1pnx84e .gdg-ml-6{margin-left:6px}.gdg-d4zsq0x{flex-wrap:wrap}.gdg-d4zsq0x,.gdg-d4zsq0x .doe-bubble{display:flex}.gdg-d4zsq0x .doe-bubble{background-color:var(--gdg-bg-cell);border-radius:var(--gdg-rounding-radius,6px);color:var(--gdg-text-dark);justify-content:center;align-items:center;height:24px;margin:2px;padding:0 8px;box-shadow:0 0 1px #3e415666,0 1px 3px #3e415666}.gdg-d4zsq0x .doe-bubble img{object-fit:contain;height:16px;margin-right:4px}.gdg-d4zsq0x textarea{opacity:0;width:0;height:0;position:absolute;top:0;left:0}.gdg-s1dgczr6 .dvn-scroller{overflow:var(--s1dgczr6-0);transform:translateZ(0)}.gdg-s1dgczr6 .dvn-hidden{visibility:hidden}.gdg-s1dgczr6 .dvn-scroll-inner{pointer-events:none;display:flex}.gdg-s1dgczr6 .dvn-scroll-inner>*{flex-shrink:0}.gdg-s1dgczr6 .dvn-scroll-inner .dvn-spacer{flex-grow:1}.gdg-s1dgczr6 .dvn-scroll-inner .dvn-stack{flex-direction:column;display:flex}.gdg-s1dgczr6 .dvn-underlay>*{position:absolute;top:0;left:0}.gdg-s1dgczr6 canvas{outline:none}.gdg-s1dgczr6 canvas *{height:0}.gdg-izpuzkl{font-family:var(--gdg-font-family);font-size:var(--gdg-editor-font-size);resize:none;white-space:pre-wrap;-webkit-text-fill-color:var(--gdg-text-dark);width:100%;min-width:100%;height:100%;color:var(--gdg-text-dark);background-color:#0000;border:0;border-radius:0;margin:0;padding:0;line-height:16px;position:absolute;inset:0;overflow:hidden}.gdg-izpuzkl::-webkit-input-placeholder{color:var(--gdg-text-light)}.gdg-izpuzkl::placeholder{color:var(--gdg-text-light)}.gdg-izpuzkl:-ms-placeholder-shown{color:var(--gdg-text-light)}.gdg-izpuzkl::placeholder{color:var(--gdg-text-light)}.gdg-invalid .gdg-izpuzkl{text-decoration:underline #d60606}.gdg-s69h75o{visibility:hidden;white-space:pre-wrap;word-wrap:break-word;color:var(--gdg-text-dark);font-family:var(--gdg-font-family);font-size:var(--gdg-editor-font-size);width:max-content;min-width:100%;max-width:100%;margin:0;padding:0 0 2px;line-height:16px}.gdg-g1y0xocz{margin-top:6px;position:relative}.gdg-wmyidgi{height:var(--wmyidgi-1);min-width:10px;max-width:100%;min-height:10px;max-height:100%;width:var(--wmyidgi-0);direction:ltr;position:relative;overflow:clip}.gdg-wmyidgi>:first-child{width:100%;height:100%;position:absolute;top:0;left:0}.gdg-seveqep{background-color:var(--gdg-bg-cell);border:1px solid var(--gdg-border-color);color:var(--gdg-text-dark);font-size:var(--gdg-editor-font-size);border-radius:6px;padding:8px;animation:.15s forwards gdg-search-fadein-gdg-seveqep;position:absolute;top:4px;right:20px}.gdg-seveqep.out{animation:.15s forwards gdg-search-fadeout-gdg-seveqep}.gdg-seveqep .gdg-search-bar-inner{display:flex}.gdg-seveqep .gdg-search-status{padding-top:4px;font-size:11px}.gdg-seveqep .gdg-search-progress{background-color:var(--gdg-text-light);height:4px;position:absolute;bottom:0;left:0}.gdg-seveqep input{background-color:var(--gdg-bg-cell);color:var(--gdg-textDark);border:0;outline:none;width:220px}.gdg-seveqep button{width:24px;height:24px;color:var(--gdg-text-medium);cursor:pointer;background:0 0;border:none;outline:none;justify-content:center;align-items:center;padding:0;display:flex}.gdg-seveqep button:hover{color:var(--gdg-text-dark)}.gdg-seveqep button .button-icon{width:16px;height:16px}.gdg-seveqep button:disabled{opacity:.4;pointer-events:none}@keyframes gdg-search-fadeout-gdg-seveqep{0%{transform:translate(0)}to{transform:translate(400px)}}@keyframes gdg-search-fadein-gdg-seveqep{0%{transform:translate(400px)}to{transform:translate(0)}}.gdg-mnuv029{word-break:break-word;-webkit-touch-callout:default;padding-top:6px}.gdg-mnuv029>*{margin:0}.gdg-mnuv029 :last-child{margin-bottom:0}.gdg-mnuv029 p img{width:100%}',nj=te();const gx=t=>{let e=(0,nj.c)(14),{wrapperClassName:a,className:r,pageSize:n}=t,i=n===void 0?10:n,o;e[0]===a?o=e[1]:(o=G(a,"flex flex-col space-y-2"),e[0]=a,e[1]=o);let l=r||"rounded-md border",d;e[2]===l?d=e[3]:(d=G(l),e[2]=l,e[3]=d);let u;e[4]===Symbol.for("react.memo_cache_sentinel")?(u=(0,s.jsx)(Yy,{children:Array.from({length:1}).map(oj)}),e[4]=u):u=e[4];let c;e[5]===i?c=e[6]:(c=(0,s.jsxs)(Uc,{children:[u,(0,s.jsx)(Wc,{children:Array.from({length:i}).map(sj)})]}),e[5]=i,e[6]=c);let m;e[7]!==d||e[8]!==c?(m=(0,s.jsx)("div",{part:"table-wrapper",className:d,children:c}),e[7]=d,e[8]=c,e[9]=m):m=e[9];let p;e[10]===Symbol.for("react.memo_cache_sentinel")?(p=(0,s.jsx)("div",{className:"flex align-items justify-between shrink-0 h-8"}),e[10]=p):p=e[10];let h;return e[11]!==o||e[12]!==m?(h=(0,s.jsxs)("div",{className:o,children:[m,p]}),e[11]=o,e[12]=m,e[13]=h):h=e[13],h};function ij(t,e){return(0,s.jsx)(Hc,{children:(0,s.jsx)("div",{className:"h-4 bg-(--slate-5) animate-pulse rounded-md w-[70%]"})},e)}function oj(t,e){return(0,s.jsx)(Dn,{children:Array.from({length:8}).map(ij)},e)}function lj(t,e){return(0,s.jsx)(Ir,{children:(0,s.jsx)("div",{className:"h-4 bg-(--slate-5) animate-pulse rounded-md w-[90%]"})},e)}function sj(t,e){return(0,s.jsx)(Dn,{children:Array.from({length:8}).map(lj)},e)}const So=["string","boolean","integer","number","date","datetime","time","unknown"];var dj=te(),uj=dy,cj=f.lazy(()=>jt(()=>import("./glide-data-editor-a3qLDl-r.js").then(async t=>(await t.__tla,t)),__vite__mapDeps([332,4,108,12,13,8,9,10,11,6,7,35,69,14,15,17,18,20,19,70,80,79,25,60,29,61,62,63,81,44,41,26,82,83,84,85,21,78,16,23,39,333,40,24,27,28,30,42,94,334,335,157,98,99,276,277,336]),import.meta.url));const mj=zt("marimo-data-editor",{cssStyles:[rj]}).withData(L({initialValue:L({edits:ee(L({rowIdx:W(),columnId:M(),value:Ga()}))}),label:M().nullable(),data:Se([M(),ee(L({}).passthrough())]),fieldTypes:ee(ra([Iv(),ra([be(So),M()])])).nullish(),editableColumns:Se([ee(M()),Ge("all")]),columnSizingMode:be(["auto","fit"]).default("auto")})).withFunctions({}).renderer(t=>(0,s.jsx)(uj,{children:(0,s.jsx)(pj,{data:t.data.data,fieldTypes:t.data.fieldTypes,edits:t.value,onEdits:t.setValue,host:t.host,editableColumns:t.data.editableColumns})}));var pj=t=>{let e=(0,dj.c)(31),a;e[0]===Symbol.for("react.memo_cache_sentinel")?(a=[],e[0]=a):a=e[0];let[r,n]=(0,f.useState)(a),i;e[1]===Symbol.for("react.memo_cache_sentinel")?(i={},e[1]=i):i=e[1];let[o,l]=(0,f.useState)(i),d,u;e[2]!==t.data||e[3]!==t.fieldTypes?(d=async()=>{let w=bc(t.fieldTypes??[]),D=Array.isArray(t.data)?t.data:await Wy(t.data,{type:"csv",parse:pI(w)},{handleBigIntAndNumberLike:!0});n(D),l(bc(t.fieldTypes??wc(D)))},u=[t.fieldTypes,t.data],e[2]=t.data,e[3]=t.fieldTypes,e[4]=d,e[5]=u):(d=e[4],u=e[5]);let{error:c}=Yt(d,u);if(c){let w;e[6]===Symbol.for("react.memo_cache_sentinel")?(w=(0,s.jsx)(Bc,{children:"Error"}),e[6]=w):w=e[6];let D=c.message||"An unknown error occurred",j;return e[7]===D?j=e[8]:(j=(0,s.jsxs)(Gl,{variant:"destructive",className:"mb-2",children:[w,(0,s.jsx)("div",{className:"text-md",children:D})]}),e[7]=D,e[8]=j),j}if(!r){let w;return e[9]===Symbol.for("react.memo_cache_sentinel")?(w=(0,s.jsx)(yc,{milliseconds:200,children:(0,s.jsx)(gx,{pageSize:10})}),e[9]=w):w=e[9],w}let m;e[10]===t?m=e[11]:(m=w=>{t.onEdits(D=>({...D,edits:[...D.edits,...w]}))},e[10]=t,e[11]=m);let p;e[12]!==r||e[13]!==t?(p=w=>{let D=w.flatMap((j,C)=>Object.entries(j).map(S=>{let[k,g]=S;return{rowIdx:r.length+C,columnId:k,value:g}}));t.onEdits(j=>({...j,edits:[...j.edits,...D]}))},e[12]=r,e[13]=t,e[14]=p):p=e[14];let h,v,x,y;e[15]===t?(h=e[16],v=e[17],x=e[18],y=e[19]):(h=w=>{t.onEdits(D=>{let j=w.map(hj);return{...D,edits:[...D.edits,...j]}})},v=(w,D)=>{t.onEdits(j=>({...j,edits:[...j.edits,{columnIdx:w,newName:D,type:Al.Rename}]}))},x=w=>{t.onEdits(D=>({...D,edits:[...D.edits,{columnIdx:w,type:Al.Remove}]}))},y=(w,D)=>{t.onEdits(j=>({...j,edits:[...j.edits,{columnIdx:w,newName:D,type:Al.Insert}]}))},e[15]=t,e[16]=h,e[17]=v,e[18]=x,e[19]=y);let b;return e[20]!==o||e[21]!==r||e[22]!==t.editableColumns||e[23]!==t.edits.edits||e[24]!==m||e[25]!==p||e[26]!==h||e[27]!==v||e[28]!==x||e[29]!==y?(b=(0,s.jsx)(cj,{data:r,setData:n,columnFields:o,setColumnFields:l,editableColumns:t.editableColumns,edits:t.edits.edits,onAddEdits:m,onAddRows:p,onDeleteRows:h,onRenameColumn:v,onDeleteColumn:x,onAddColumn:y}),e[20]=o,e[21]=r,e[22]=t.editableColumns,e[23]=t.edits.edits,e[24]=m,e[25]=p,e[26]=h,e[27]=v,e[28]=x,e[29]=y,e[30]=b):b=e[30],b};function hj(t,e){return{rowIdx:t-e,type:Al.Remove}}var fj=" ";function Ro(t){return t.split(`
|
|
11
11
|
`).map(e=>fj+e).join(`
|
|
12
12
|
`)}function gj(t){return`
|
|
13
13
|
${Ro(t.map(Eo).join(`,
|
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-plwHd5Q_.js"></script>
|
|
70
70
|
<link rel="modulepreload" crossorigin href="./assets/preload-helper-DItdS47A.js">
|
|
71
71
|
<link rel="modulepreload" crossorigin href="./assets/chunk-LvLJmgfZ.js">
|
|
72
72
|
<link rel="modulepreload" crossorigin href="./assets/react-Bj1aDYRI.js">
|
package/package.json
CHANGED
|
@@ -21,17 +21,19 @@ import { BINDING_MANAGER, WIDGET_DEF_REGISTRY } from "./widget-binding";
|
|
|
21
21
|
interface Data {
|
|
22
22
|
jsUrl: string;
|
|
23
23
|
jsHash: string;
|
|
24
|
+
modelId: WidgetModelId;
|
|
24
25
|
}
|
|
25
26
|
|
|
26
27
|
type AnyWidgetState = ModelState;
|
|
27
28
|
|
|
28
29
|
/**
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
30
|
+
* Value payload sent by the frontend on state updates.
|
|
31
|
+
*
|
|
32
|
+
* The initial value from the backend is empty — `model_id` is passed
|
|
33
|
+
* via immutable data attributes (`args`) so it survives value overwrites.
|
|
32
34
|
*/
|
|
33
35
|
interface ModelIdRef {
|
|
34
|
-
model_id
|
|
36
|
+
model_id?: WidgetModelId;
|
|
35
37
|
}
|
|
36
38
|
|
|
37
39
|
export function useAnyWidgetModule(opts: { jsUrl: string; jsHash: string }) {
|
|
@@ -117,14 +119,14 @@ export const AnyWidgetPlugin = createPlugin<ModelIdRef>("marimo-anywidget")
|
|
|
117
119
|
z.object({
|
|
118
120
|
jsUrl: z.string(),
|
|
119
121
|
jsHash: z.string(),
|
|
122
|
+
modelId: z.string().transform((v) => v as WidgetModelId),
|
|
120
123
|
}),
|
|
121
124
|
)
|
|
122
125
|
.withFunctions({})
|
|
123
126
|
.renderer((props) => <AnyWidgetSlot {...props} />);
|
|
124
127
|
|
|
125
128
|
const AnyWidgetSlot = (props: IPluginProps<ModelIdRef, Data>) => {
|
|
126
|
-
const { jsUrl, jsHash } = props.data;
|
|
127
|
-
const { model_id: modelId } = props.value;
|
|
129
|
+
const { jsUrl, jsHash, modelId } = props.data;
|
|
128
130
|
const host = props.host as HTMLElementNotDerivedFromRef;
|
|
129
131
|
|
|
130
132
|
const { jsModule, error } = useAnyWidgetModule({ jsUrl, jsHash });
|
|
@@ -29,6 +29,7 @@ describe("LoadedSlot", () => {
|
|
|
29
29
|
data: {
|
|
30
30
|
jsUrl: "http://example.com/widget.js",
|
|
31
31
|
jsHash: "abc123",
|
|
32
|
+
modelId: modelId,
|
|
32
33
|
},
|
|
33
34
|
host: document.createElement(
|
|
34
35
|
"div",
|
|
@@ -67,6 +68,30 @@ describe("LoadedSlot", () => {
|
|
|
67
68
|
});
|
|
68
69
|
});
|
|
69
70
|
|
|
71
|
+
it("should not remount when value update drops model_id", async () => {
|
|
72
|
+
// Regression: when the frontend sends a state update (e.g. {zoom_level: 0}),
|
|
73
|
+
// it overwrites the UIElement value that originally held {model_id: "..."}.
|
|
74
|
+
// The key must stay stable because modelId comes from data, not value.
|
|
75
|
+
const { container, rerender } = render(<LoadedSlot {...mockProps} />);
|
|
76
|
+
|
|
77
|
+
await waitFor(() => {
|
|
78
|
+
expect(mockWidget.render).toHaveBeenCalledTimes(1);
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
const divBefore = container.querySelector("div");
|
|
82
|
+
|
|
83
|
+
// Simulate a value update that does NOT include model_id
|
|
84
|
+
// (this is what happens when the widget sends trait state)
|
|
85
|
+
rerender(<LoadedSlot {...mockProps} />);
|
|
86
|
+
|
|
87
|
+
await waitFor(() => {
|
|
88
|
+
// The div should be the same DOM node (no remount)
|
|
89
|
+
expect(container.querySelector("div")).toBe(divBefore);
|
|
90
|
+
// render should not be called again (no remount)
|
|
91
|
+
expect(mockWidget.render).toHaveBeenCalledTimes(1);
|
|
92
|
+
});
|
|
93
|
+
});
|
|
94
|
+
|
|
70
95
|
it("should re-run widget when widget prop changes", async () => {
|
|
71
96
|
const { rerender } = render(<LoadedSlot {...mockProps} />);
|
|
72
97
|
|