@marimo-team/frontend 0.19.7-dev35 → 0.19.7-dev36

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (81) hide show
  1. package/dist/assets/{JsonOutput-BGSqWZkD.js → JsonOutput-DtidtKaJ.js} +2 -2
  2. package/dist/assets/{MarimoErrorOutput-DFV7O8tN.js → MarimoErrorOutput-Cci2wITc.js} +1 -1
  3. package/dist/assets/{add-cell-with-ai-gDjJxct8.js → add-cell-with-ai-DT1ae2MK.js} +1 -1
  4. package/dist/assets/{add-database-form-CqEjMrq2.js → add-database-form-_pTLtiHN.js} +1 -1
  5. package/dist/assets/{agent-panel-D_hcgMlT.js → agent-panel-oLGqa4bG.js} +1 -1
  6. package/dist/assets/{ai-model-dropdown-C_l_zAXd.js → ai-model-dropdown-BL-PaF8o.js} +1 -1
  7. package/dist/assets/{app-config-button-CM05VD_Y.js → app-config-button-BiwYEPE8.js} +1 -1
  8. package/dist/assets/{cell-editor-ihhw9Ql3.js → cell-editor-B3U1SnYJ.js} +1 -1
  9. package/dist/assets/{chat-display-yGAtJXm0.js → chat-display-B34MaCGM.js} +1 -1
  10. package/dist/assets/{chat-panel-D3T1CjpZ.js → chat-panel-fuQFRvFm.js} +1 -1
  11. package/dist/assets/{column-preview-DbqM1diq.js → column-preview-B-dViv1i.js} +1 -1
  12. package/dist/assets/{command-palette-C2L80RlN.js → command-palette-KuNgJNix.js} +1 -1
  13. package/dist/assets/{common-D32S2RVD.js → common-DxKcMlJZ.js} +1 -1
  14. package/dist/assets/{dependency-graph-panel-C7ZXgECY.js → dependency-graph-panel-BZEIOxVz.js} +1 -1
  15. package/dist/assets/download-Bwa9P-Pz.js +6 -0
  16. package/dist/assets/{dropdown-menu-df9T83C0.js → dropdown-menu-B-6unW-7.js} +1 -1
  17. package/dist/assets/{edit-page-DFpXAt-U.js → edit-page-DoQyHH-0.js} +4 -4
  18. package/dist/assets/{error-panel-DKIWwbhe.js → error-panel-DulelhA-.js} +1 -1
  19. package/dist/assets/{file-explorer-panel-D4VHkjMW.js → file-explorer-panel-Dn9tKw3E.js} +1 -1
  20. package/dist/assets/{form-XjMNGyzu.js → form-B1n-e_X0.js} +1 -1
  21. package/dist/assets/{glide-data-editor-BBSxoBI-.js → glide-data-editor-HGkaxqOo.js} +1 -1
  22. package/dist/assets/home-page--XVUAUCM.js +4 -0
  23. package/dist/assets/hooks-B1nUQK2T.js +1 -0
  24. package/dist/assets/{html-to-image-DKvXQkl5.js → html-to-image-Cu1p0tCK.js} +2 -2
  25. package/dist/assets/{index-BRCNo5ma.js → index-BHikcWoK.js} +5 -5
  26. package/dist/assets/{index-DmMvDRRC.css → index-Bj5F80Z9.css} +1 -1
  27. package/dist/assets/{layout-DiDoTAUA.js → layout-KY92f2Sm.js} +3 -3
  28. package/dist/assets/{markdown-renderer-xQJ1KM4c.js → markdown-renderer-Dpn5NCvn.js} +1 -1
  29. package/dist/assets/{packages-panel-D53RuG3X.js → packages-panel-CBc59eNR.js} +1 -1
  30. package/dist/assets/{panels-BhznEx5N.js → panels-B0B71dYl.js} +1 -1
  31. package/dist/assets/{popover-D16ZremR.js → popover-Gz-GJzym.js} +1 -1
  32. package/dist/assets/{readonly-python-code-kImQwJ5f.js → readonly-python-code-CCwpyiLX.js} +1 -1
  33. package/dist/assets/{renderShortcut-DHc-p-_c.js → renderShortcut-DEwfrKeS.js} +1 -1
  34. package/dist/assets/run-page-Dug0EU2T.js +1 -0
  35. package/dist/assets/{scratchpad-panel-C8wx6cRl.js → scratchpad-panel-SMFZ5eRQ.js} +1 -1
  36. package/dist/assets/{secrets-panel-Br6CcsOE.js → secrets-panel-BaEqnh6m.js} +1 -1
  37. package/dist/assets/{session-panel-JOOuJNOH.js → session-panel-CR_CZBSy.js} +1 -1
  38. package/dist/assets/table-C8uQmBAN.js +1 -0
  39. package/dist/assets/{terminal-DNwT6UrR.js → terminal-C7HXI-7B.js} +1 -1
  40. package/dist/assets/{tree-BdwmBGSx.js → tree-B1vM35Zj.js} +1 -1
  41. package/dist/assets/{useAddCell-BMDEXuVk.js → useAddCell-DRmuczCx.js} +1 -1
  42. package/dist/assets/{useCellActionButton-BDMlZzyv.js → useCellActionButton-DwRoApVS.js} +1 -1
  43. package/dist/assets/{useDeleteCell-BrMXAFkS.js → useDeleteCell-CR3IczUk.js} +1 -1
  44. package/dist/assets/{useDependencyPanelTab-B63bb4YX.js → useDependencyPanelTab-CLgnO1zH.js} +1 -1
  45. package/dist/assets/useNotebookActions-DhF-uJ0P.js +1 -0
  46. package/dist/assets/{useSplitCell-Cb0lf5MV.js → useSplitCell-IQsKBoRj.js} +1 -1
  47. package/dist/assets/{utilities.esm-BVFPJPyV.js → utilities.esm-DyYLtC1k.js} +2 -2
  48. package/dist/index.html +20 -20
  49. package/package.json +1 -1
  50. package/src/components/data-table/TableActions.tsx +5 -3
  51. package/src/components/data-table/download-actions.tsx +7 -2
  52. package/src/components/data-table/pagination.tsx +4 -4
  53. package/src/components/debug/indicator.tsx +1 -1
  54. package/src/components/editor/actions/useNotebookActions.tsx +4 -2
  55. package/src/components/editor/chrome/panels/context-aware-panel/context-aware-panel.tsx +1 -1
  56. package/src/components/editor/chrome/wrapper/app-chrome.tsx +4 -4
  57. package/src/components/editor/chrome/wrapper/footer.tsx +1 -1
  58. package/src/components/editor/chrome/wrapper/sidebar.tsx +1 -1
  59. package/src/components/editor/controls/Controls.tsx +2 -2
  60. package/src/components/editor/controls/notebook-menu-dropdown.tsx +1 -1
  61. package/src/components/editor/file-tree/file-explorer.tsx +1 -1
  62. package/src/components/editor/header/status.tsx +1 -1
  63. package/src/components/editor/renderers/vertical-layout/vertical-layout.tsx +13 -4
  64. package/src/components/home/components.tsx +1 -1
  65. package/src/components/static-html/static-banner.tsx +1 -1
  66. package/src/components/ui/dropdown-menu.tsx +1 -1
  67. package/src/components/ui/table.tsx +1 -1
  68. package/src/core/export/__tests__/hooks.test.ts +60 -58
  69. package/src/core/export/hooks.ts +71 -31
  70. package/src/css/app/print.css +0 -14
  71. package/src/utils/__tests__/async-capture-tracker.test.ts +353 -0
  72. package/src/utils/__tests__/download.test.tsx +5 -114
  73. package/src/utils/async-capture-tracker.ts +168 -0
  74. package/src/utils/download.ts +17 -57
  75. package/src/utils/html-to-image.ts +9 -12
  76. package/dist/assets/download-CzPV-R6Z.js +0 -6
  77. package/dist/assets/home-page-DBWXVxWa.js +0 -4
  78. package/dist/assets/hooks-CpjzmBkw.js +0 -1
  79. package/dist/assets/run-page-BCOAGhl5.js +0 -1
  80. package/dist/assets/table-BSASHvkq.js +0 -1
  81. package/dist/assets/useNotebookActions-Cj4FtiIb.js +0 -1
@@ -46,50 +46,21 @@ function findElementForCell(cellId: CellId): HTMLElement | undefined {
46
46
  return element;
47
47
  }
48
48
 
49
- /**
50
- * Reference counter for body.printing class to handle concurrent screenshot captures.
51
- * Only adds the class when count goes 0→1, only removes when count goes 1→0.
52
- */
53
- let bodyPrintingRefCount = 0;
54
-
55
- function acquireBodyPrinting() {
56
- bodyPrintingRefCount++;
57
- if (bodyPrintingRefCount === 1) {
58
- document.body.classList.add("printing");
59
- }
60
- }
61
-
62
- function releaseBodyPrinting() {
63
- bodyPrintingRefCount--;
64
- if (bodyPrintingRefCount === 0) {
65
- document.body.classList.remove("printing");
66
- }
67
- }
68
-
69
49
  /**
70
50
  * Prepare a cell element for screenshot capture.
71
51
  *
72
52
  * @param element - The cell output element to prepare
73
- * @param snappy - When true, avoids layout shifts and speeds up the capture.
74
53
  * @returns A cleanup function to restore the element's original state
75
54
  */
76
- function prepareCellElementForScreenshot(
77
- element: HTMLElement,
78
- snappy: boolean,
79
- ) {
80
- element.classList.add("printing-output");
81
- if (!snappy) {
82
- acquireBodyPrinting();
83
- }
55
+ function prepareCellElementForScreenshot(element: HTMLElement) {
84
56
  const originalOverflow = element.style.overflow;
85
- element.style.overflow = "auto";
57
+ const maxHeight = element.style.maxHeight;
58
+ element.style.overflow = "visible";
59
+ element.style.maxHeight = "none";
86
60
 
87
61
  return () => {
88
- element.classList.remove("printing-output");
89
- if (!snappy) {
90
- releaseBodyPrinting();
91
- }
92
62
  element.style.overflow = originalOverflow;
63
+ element.style.maxHeight = maxHeight;
93
64
  };
94
65
  }
95
66
 
@@ -99,12 +70,10 @@ const THRESHOLD_TIME_MS = 500;
99
70
  * Capture a cell output as a PNG data URL.
100
71
  *
101
72
  * @param cellId - The ID of the cell to capture
102
- * @param snappy - When true, uses a faster method to capture the image. Avoids layout shifts.
103
73
  * @returns The PNG as a data URL, or undefined if the cell element wasn't found
104
74
  */
105
75
  export async function getImageDataUrlForCell(
106
76
  cellId: CellId,
107
- snappy = false,
108
77
  ): Promise<string | undefined> {
109
78
  const element = findElementForCell(cellId);
110
79
  if (!element) {
@@ -116,11 +85,11 @@ export async function getImageDataUrlForCell(
116
85
  return iframeDataUrl;
117
86
  }
118
87
 
119
- const cleanup = prepareCellElementForScreenshot(element, snappy);
88
+ const cleanup = prepareCellElementForScreenshot(element);
120
89
 
121
90
  try {
122
91
  const startTime = Date.now();
123
- const dataUrl = await toPng(element, undefined, snappy);
92
+ const dataUrl = await toPng(element);
124
93
  const timeTaken = Date.now() - startTime;
125
94
  if (timeTaken > THRESHOLD_TIME_MS) {
126
95
  Logger.debug(
@@ -142,25 +111,20 @@ export async function downloadCellOutputAsImage(
142
111
  cellId: CellId,
143
112
  filename: string,
144
113
  ) {
145
- const element = findElementForCell(cellId);
146
- if (!element) {
147
- return;
148
- }
149
-
150
- // Cell outputs that are iframes
151
- const iframeDataUrl = await captureIframeAsImage(element);
152
- if (iframeDataUrl) {
153
- downloadByURL(iframeDataUrl, Filenames.toPNG(filename));
114
+ const dataUrl = await getImageDataUrlForCell(cellId);
115
+ if (!dataUrl) {
154
116
  return;
155
117
  }
156
-
157
- await downloadHTMLAsImage({
158
- element,
159
- filename,
160
- prepare: () => prepareCellElementForScreenshot(element, false),
161
- });
118
+ return downloadByURL(dataUrl, Filenames.toPNG(filename));
162
119
  }
163
120
 
121
+ export const ADD_PRINTING_CLASS = (): (() => void) => {
122
+ document.body.classList.add("printing");
123
+ return () => {
124
+ document.body.classList.remove("printing");
125
+ };
126
+ };
127
+
164
128
  export async function downloadHTMLAsImage(opts: {
165
129
  element: HTMLElement;
166
130
  filename: string;
@@ -175,10 +139,6 @@ export async function downloadHTMLAsImage(opts: {
175
139
  let cleanup: (() => void) | undefined;
176
140
  if (prepare) {
177
141
  cleanup = prepare(element);
178
- } else {
179
- // When no prepare function is provided (e.g., downloading full notebook),
180
- // add body.printing ourselves
181
- document.body.classList.add("printing");
182
142
  }
183
143
 
184
144
  try {
@@ -113,10 +113,9 @@ export const necessaryStyleProperties = [
113
113
  "clip-path",
114
114
 
115
115
  // Overflow & Visibility
116
- // We don't include overflow properties because they can include scrollbars
117
- // "overflow",
118
- // "overflow-x",
119
- // "overflow-y",
116
+ "overflow",
117
+ "overflow-x",
118
+ "overflow-y",
120
119
  "visibility",
121
120
 
122
121
  // SVG
@@ -149,12 +148,11 @@ export const defaultHtmlToImageOptions: HtmlToImageOptions = {
149
148
  filter: (node) => {
150
149
  try {
151
150
  if ("classList" in node) {
152
- // Filter out matplotlib toolbars
153
- if (node.classList.contains("mpl-toolbar")) {
154
- return false;
155
- }
156
-
157
- if (node.classList.contains("no-print")) {
151
+ const classes = node.classList;
152
+ if (
153
+ classes.contains("mpl-toolbar") ||
154
+ classes.contains("print:hidden")
155
+ ) {
158
156
  return false;
159
157
  }
160
158
  }
@@ -167,6 +165,7 @@ export const defaultHtmlToImageOptions: HtmlToImageOptions = {
167
165
  onImageErrorHandler: (event) => {
168
166
  Logger.error("Error loading image:", event);
169
167
  },
168
+ includeStyleProperties: necessaryStyleProperties,
170
169
  };
171
170
 
172
171
  /**
@@ -176,11 +175,9 @@ export const defaultHtmlToImageOptions: HtmlToImageOptions = {
176
175
  export async function toPng(
177
176
  element: HTMLElement,
178
177
  options?: HtmlToImageOptions,
179
- snappy?: boolean,
180
178
  ): Promise<string> {
181
179
  return htmlToImageToPng(element, {
182
180
  ...defaultHtmlToImageOptions,
183
- includeStyleProperties: snappy ? necessaryStyleProperties : undefined,
184
181
  ...options,
185
182
  });
186
183
  }
@@ -1,6 +0,0 @@
1
- var ce=Object.defineProperty;var de=(r,e,t)=>e in r?ce(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t;var O=(r,e,t)=>de(r,typeof e!="symbol"?e+"":e,t);import{s as V,t as G}from"./chunk-LvLJmgfZ.js";import{t as q}from"./react-BGmjiNul.js";import{ii as fe,zt as me}from"./cells-BW_4R0Qw.js";import{t as B}from"./compiler-runtime-DeeZ7FnK.js";import{d as W}from"./hotkeys-BHHWjLlp.js";import{t as pe}from"./jsx-runtime-ZmTK25f3.js";import{t as z}from"./cn-BKtXLv3a.js";import{t as ve}from"./requests-BsVD4CdD.js";import{t as he}from"./createLucideIcon-CnW3RofX.js";import{t as _}from"./use-toast-rmUWldD_.js";import{d as ge}from"./popover-D16ZremR.js";import{r as ye}from"./errors-2SszdW9t.js";import{t as H}from"./dist-CdxIjAOP.js";import{t as k}from"./html-to-image-DKvXQkl5.js";var we=he("chevron-left",[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]]),X=r=>{let e,t=new Set,a=(l,s)=>{let c=typeof l=="function"?l(e):l;if(!Object.is(c,e)){let d=e;e=s??(typeof c!="object"||!c)?c:Object.assign({},e,c),t.forEach(u=>u(e,d))}},n=()=>e,i={setState:a,getState:n,getInitialState:()=>o,subscribe:l=>(t.add(l),()=>t.delete(l)),destroy:()=>{t.clear()}},o=e=r(a,n,i);return i},xe=r=>r?X(r):X,be=G((r=>{var e=q(),t=ge();function a(d,u){return d===u&&(d!==0||1/d==1/u)||d!==d&&u!==u}var n=typeof Object.is=="function"?Object.is:a,i=t.useSyncExternalStore,o=e.useRef,l=e.useEffect,s=e.useMemo,c=e.useDebugValue;r.useSyncExternalStoreWithSelector=function(d,u,f,g,m){var p=o(null);if(p.current===null){var x={hasValue:!1,value:null};p.current=x}else x=p.current;p=s(function(){function U(y){if(!F){if(F=!0,$=y,y=g(y),m!==void 0&&x.hasValue){var N=x.value;if(m(N,y))return L=N}return L=y}if(N=L,n($,y))return N;var C=g(y);return m!==void 0&&m(N,C)?($=y,N):($=y,L=C)}var F=!1,$,L,I=f===void 0?null:f;return[function(){return U(u())},I===null?void 0:function(){return U(I())}]},[u,f,g,m]);var b=i(d,p[0],p[1]);return l(function(){x.hasValue=!0,x.value=b},[b]),c(b),b}})),Ne=G(((r,e)=>{e.exports=be()}));const h={toMarkdown:r=>h.replace(r,"md"),toHTML:r=>h.replace(r,"html"),toPNG:r=>h.replace(r,"png"),toPDF:r=>h.replace(r,"pdf"),toPY:r=>h.replace(r,"py"),withoutExtension:r=>{let e=r.split(".");return e.length===1?r:e.slice(0,-1).join(".")},replace:(r,e)=>r.endsWith(`.${e}`)?r:`${h.withoutExtension(r)}.${e}`};var P=320,S=180;function Y(r){if(!r||r==="about:blank")return null;try{let e=new URL(r,window.location.href);return e.origin===window.location.origin?null:e.href}catch{return r}}function Pe(r,e,t){let a=[],n="";for(let i of e){let o=n+i;r.measureText(o).width<=t?n=o:(n&&a.push(n),n=i)}return n&&a.push(n),a}function j(r){let e=window.devicePixelRatio||1,t=document.createElement("canvas");t.width=P*e,t.height=S*e;let a=t.getContext("2d");if(!a)return t.toDataURL("image/png");a.scale(e,e),a.fillStyle="#f3f4f6",a.fillRect(0,0,P,S),a.strokeStyle="#d1d5db",a.strokeRect(.5,.5,P-1,S-1),a.fillStyle="#6b7280",a.font="8px sans-serif",a.textAlign="center",a.textBaseline="middle";let n=P-32,i=r?Pe(a,r,n):[],o=(S-(1+i.length)*14)/2+14/2;a.fillText("External iframe",P/2,o),o+=14;for(let l of i)a.fillText(l,P/2,o),o+=14;return t.toDataURL("image/png")}async function J(r){var n;let e=r.querySelector("iframe");if(!e)return null;let t=Y(e.getAttribute("src"));if(t)return j(t);let a;try{let i=e.contentDocument||((n=e.contentWindow)==null?void 0:n.document);if(!(i!=null&&i.body))return null;a=i}catch{return j(null)}for(let i of a.querySelectorAll("iframe")){let o=Y(i.getAttribute("src"));if(o)return j(o)}try{return await k(a.body)}catch{return j(null)}}var K=class ue{constructor(e){O(this,"progress",0);O(this,"listeners",new Set);this.total=e}static indeterminate(){return new ue("indeterminate")}addTotal(e){this.total==="indeterminate"?this.total=e:this.total+=e,this.notifyListeners()}increment(e){this.progress+=e,this.notifyListeners()}getProgress(){return this.total==="indeterminate"?"indeterminate":this.progress/this.total*100}subscribe(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}notifyListeners(){let e=this.getProgress();for(let t of this.listeners)t(e)}},v=V(q(),1),w=V(pe(),1);function $e(r,e=[]){let t=[];function a(i,o){let l=v.createContext(o);l.displayName=i+"Context";let s=t.length;t=[...t,o];let c=u=>{var b;let{scope:f,children:g,...m}=u,p=((b=f==null?void 0:f[r])==null?void 0:b[s])||l,x=v.useMemo(()=>m,Object.values(m));return(0,w.jsx)(p.Provider,{value:x,children:g})};c.displayName=i+"Provider";function d(u,f){var p;let g=((p=f==null?void 0:f[r])==null?void 0:p[s])||l,m=v.useContext(g);if(m)return m;if(o!==void 0)return o;throw Error(`\`${u}\` must be used within \`${i}\``)}return[c,d]}let n=()=>{let i=t.map(o=>v.createContext(o));return function(o){let l=(o==null?void 0:o[r])||i;return v.useMemo(()=>({[`__scope${r}`]:{...o,[r]:l}}),[o,l])}};return n.scopeName=r,[a,Le(n,...e)]}function Le(...r){let e=r[0];if(r.length===1)return e;let t=()=>{let a=r.map(n=>({useScope:n(),scopeName:n.scopeName}));return function(n){let i=a.reduce((o,{useScope:l,scopeName:s})=>{let c=l(n)[`__scope${s}`];return{...o,...c}},{});return v.useMemo(()=>({[`__scope${e.scopeName}`]:i}),[i])}};return t.scopeName=e.scopeName,t}var M="Progress",T=100,[Se,at]=$e(M),[je,Ee]=Se(M),Q=v.forwardRef((r,e)=>{let{__scopeProgress:t,value:a=null,max:n,getValueLabel:i=Re,...o}=r;(n||n===0)&&!re(n)&&console.error(De(`${n}`,"Progress"));let l=re(n)?n:T;a!==null&&!ne(a,l)&&console.error(Oe(`${a}`,"Progress"));let s=ne(a,l)?a:null,c=E(s)?i(s,l):void 0;return(0,w.jsx)(je,{scope:t,value:s,max:l,children:(0,w.jsx)(H.div,{"aria-valuemax":l,"aria-valuemin":0,"aria-valuenow":E(s)?s:void 0,"aria-valuetext":c,role:"progressbar","data-state":te(s,l),"data-value":s??void 0,"data-max":l,...o,ref:e})})});Q.displayName=M;var Z="ProgressIndicator",ee=v.forwardRef((r,e)=>{let{__scopeProgress:t,...a}=r,n=Ee(Z,t);return(0,w.jsx)(H.div,{"data-state":te(n.value,n.max),"data-value":n.value??void 0,"data-max":n.max,...a,ref:e})});ee.displayName=Z;function Re(r,e){return`${Math.round(r/e*100)}%`}function te(r,e){return r==null?"indeterminate":r===e?"complete":"loading"}function E(r){return typeof r=="number"}function re(r){return E(r)&&!isNaN(r)&&r>0}function ne(r,e){return E(r)&&!isNaN(r)&&r<=e&&r>=0}function De(r,e){return`Invalid prop \`max\` of value \`${r}\` supplied to \`${e}\`. Only numbers greater than 0 are valid max values. Defaulting to \`${T}\`.`}function Oe(r,e){return`Invalid prop \`value\` of value \`${r}\` supplied to \`${e}\`. The \`value\` prop must be:
2
- - a positive number
3
- - less than the value passed to \`max\` (or ${T} if no \`max\` prop is set)
4
- - \`null\` or \`undefined\` if the progress is indeterminate.
5
-
6
- Defaulting to \`null\`.`}var ae=Q,_e=ee,ke=B(),A=v.forwardRef((r,e)=>{let t=(0,ke.c)(20),a,n,i,o;t[0]===r?(a=t[1],n=t[2],i=t[3],o=t[4]):({className:a,value:o,indeterminate:n,...i}=r,t[0]=r,t[1]=a,t[2]=n,t[3]=i,t[4]=o);let l;t[5]===a?l=t[6]:(l=z("relative h-2 w-full overflow-hidden rounded-full bg-primary/20",a),t[5]=a,t[6]=l);let s=n?"w-1/3 animate-progress-indeterminate":"w-full transition-transform duration-300 ease-out",c;t[7]===s?c=t[8]:(c=z("h-full flex-1 bg-primary",s),t[7]=s,t[8]=c);let d;t[9]!==n||t[10]!==o?(d=n?void 0:{transform:`translateX(-${100-(o||0)}%)`},t[9]=n,t[10]=o,t[11]=d):d=t[11];let u;t[12]!==c||t[13]!==d?(u=(0,w.jsx)(_e,{className:c,style:d}),t[12]=c,t[13]=d,t[14]=u):u=t[14];let f;return t[15]!==i||t[16]!==e||t[17]!==l||t[18]!==u?(f=(0,w.jsx)(ae,{ref:e,className:l,...i,children:u}),t[15]=i,t[16]=e,t[17]=l,t[18]=u,t[19]=f):f=t[19],f});A.displayName=ae.displayName;var Me=B();const Te=r=>{let e=(0,Me.c)(13),{progress:t,showPercentage:a}=r,n=a===void 0?!1:a,i,o;e[0]===t?(i=e[1],o=e[2]):(i=g=>t.subscribe(g),o=()=>t.getProgress(),e[0]=t,e[1]=i,e[2]=o);let l=(0,v.useSyncExternalStore)(i,o),s=l==="indeterminate"||l===100,c=s?void 0:l,d;e[3]!==s||e[4]!==c?(d=(0,w.jsx)(A,{value:c,indeterminate:s}),e[3]=s,e[4]=c,e[5]=d):d=e[5];let u;e[6]!==s||e[7]!==n||e[8]!==l?(u=!s&&n&&(0,w.jsxs)("div",{className:"mt-1 text-xs text-muted-foreground text-right",children:[Math.round(l),"%"]}),e[6]=s,e[7]=n,e[8]=l,e[9]=u):u=e[9];let f;return e[10]!==d||e[11]!==u?(f=(0,w.jsxs)("div",{className:"mt-2 w-full min-w-[200px]",children:[d,u]}),e[10]=d,e[11]=u,e[12]=f):f=e[12],f};async function Ae(r,e){let t=K.indeterminate(),a=_({title:r,description:v.createElement(Te,{progress:t}),duration:1/0});try{let n=await e(t);return a.dismiss(),n}catch(n){throw a.dismiss(),n}}function oe(r){let e=document.getElementById(fe.create(r));if(!e){W.error(`Output element not found for cell ${r}`);return}return e}var R=0;function Ue(){R++,R===1&&document.body.classList.add("printing")}function Fe(){R--,R===0&&document.body.classList.remove("printing")}function ie(r,e){r.classList.add("printing-output"),e||Ue();let t=r.style.overflow;return r.style.overflow="auto",()=>{r.classList.remove("printing-output"),e||Fe(),r.style.overflow=t}}var Ie=500;async function Ce(r,e=!1){let t=oe(r);if(!t)return;let a=await J(t);if(a)return a;let n=ie(t,e);try{let i=Date.now(),o=await k(t,void 0,e),l=Date.now()-i;return l>Ie&&W.debug("toPng operation for element",t,`took ${l} ms (exceeds threshold)`),o}finally{n()}}async function Ve(r,e){let t=oe(r);if(!t)return;let a=await J(t);if(a){D(a,h.toPNG(e));return}await le({element:t,filename:e,prepare:()=>ie(t,!1)})}async function le(r){let{element:e,filename:t,prepare:a}=r,n=document.getElementById("App"),i=(n==null?void 0:n.scrollTop)??0,o;a?o=a(e):document.body.classList.add("printing");try{D(await k(e),h.toPNG(t))}catch{_({title:"Error",description:"Failed to download as PNG.",variant:"danger"})}finally{o==null||o(),document.body.classList.contains("printing")&&document.body.classList.remove("printing"),requestAnimationFrame(()=>{n==null||n.scrollTo(0,i)})}}function D(r,e){let t=document.createElement("a");t.href=r,t.download=e,t.click(),t.remove()}function se(r,e){let t=URL.createObjectURL(r);D(t,e),URL.revokeObjectURL(t)}async function Ge(r){let e=ve(),{filename:t,webpdf:a}=r;try{let n=await e.exportAsPDF({webpdf:a}),i=me.basename(t);se(n,h.toPDF(i))}catch(n){throw _({title:"Failed to download",description:ye(n),variant:"danger"}),n}}export{le as a,A as c,Ne as d,xe as f,Ve as i,K as l,se as n,Ce as o,we as p,D as r,Ae as s,Ge as t,h as u};
@@ -1,4 +0,0 @@
1
- import{s as X}from"./chunk-LvLJmgfZ.js";import{d as xe,l as ee}from"./useEvent-DO6uJBas.js";import{t as ge}from"./react-BGmjiNul.js";import{$n as ye,Gn as je,St as be,Un as te,Zr as re,_n as ae,er as ve,pi as ke,qn as we,zt as se}from"./cells-BW_4R0Qw.js";import"./react-dom-C9fstfnp.js";import{t as oe}from"./compiler-runtime-DeeZ7FnK.js";import{a as Ne,f as _e}from"./hotkeys-BHHWjLlp.js";import{n as R}from"./constants-B6Cb__3x.js";import{c as Se,f as ze,m as ie,s as Ce}from"./config-CIrPQIbt.js";import{t as Me}from"./ErrorBoundary-ChCiwl15.js";import{t as Ie}from"./jsx-runtime-ZmTK25f3.js";import{t as H}from"./button-YC1gW_kJ.js";import{t as De}from"./cn-BKtXLv3a.js";import"./dist-DBwNzi3C.js";import"./cjs-CH5Rj0g8.js";import"./main-U5Goe76G.js";import"./useNonce-_Aax6sXd.js";import{r as V}from"./requests-BsVD4CdD.js";import{t as W}from"./createLucideIcon-CnW3RofX.js";import{t as Pe}from"./chart-no-axes-column-W42b2ZIs.js";import{_ as Oe}from"./select-V5IdpNiR.js";import{t as Te}from"./chevron-right-DwagBitu.js";import{f as E,p as Ae,r as Re,t as le}from"./maps-t9yNKYA8.js";import{t as We}from"./circle-play-BuOtSgid.js";import{a as Fe,p as $e,r as Le,t as Ue}from"./dropdown-menu-df9T83C0.js";import{r as He,t as Ve}from"./types-fTSozrNJ.js";import{t as qe}from"./file-Cs1JbsV6.js";import{i as Ye,n as Be,r as Ee,t as Ge}from"./youtube-8p26v8EM.js";import{t as Je}from"./link-BsTPF7B0.js";import{t as G}from"./spinner-DaIKav-i.js";import{n as Qe,r as Ze,t as Ke}from"./app-config-button-CM05VD_Y.js";import{t as Xe}from"./refresh-ccw-DLEiQDS3.js";import{lt as et,r as tt}from"./input-pAun1m1X.js";import"./dist-Cayq-K1c.js";import"./dist-TiFCI16_.js";import"./dist-BIKFl48f.js";import"./dist-B0VqT_4z.js";import"./dist-BYyu59D8.js";import{t as rt}from"./use-toast-rmUWldD_.js";import"./Combination-CMPwuAmi.js";import{t as at}from"./tooltip-CEc2ajau.js";import{i as st}from"./dates-Dhn1r-h6.js";import{o as ot}from"./alert-dialog-DwQffb13.js";import{t as it}from"./context-JwD-oSsl.js";import"./popover-D16ZremR.js";import{n as lt}from"./ImperativeModal-CUbWEBci.js";import{r as nt}from"./errors-2SszdW9t.js";import{t as ct}from"./tree-BdwmBGSx.js";import{t as ne}from"./error-banner-DUzsIXtq.js";import{n as J,t as mt}from"./useAsyncData-C4XRy1BE.js";import{t as dt}from"./label-Be1daUcS.js";import{t as Q}from"./icons-BhEXrzsb.js";import{t as ht}from"./links-C-GGaW8R.js";import"./Inputs-D2Xn4HON.js";import{t as pt}from"./useInterval-Cu9ChZf-.js";var ft=W("book-open",[["path",{d:"M12 7v14",key:"1akyts"}],["path",{d:"M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z",key:"ruj8y"}]]),ut=W("book-text",[["path",{d:"M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H19a1 1 0 0 1 1 1v18a1 1 0 0 1-1 1H6.5a1 1 0 0 1 0-5H20",key:"k3hazp"}],["path",{d:"M8 11h8",key:"vwpz6n"}],["path",{d:"M8 7h6",key:"1f0q6e"}]]),xt=W("graduation-cap",[["path",{d:"M21.42 10.922a1 1 0 0 0-.019-1.838L12.83 5.18a2 2 0 0 0-1.66 0L2.6 9.08a1 1 0 0 0 0 1.832l8.57 3.908a2 2 0 0 0 1.66 0z",key:"j76jl0"}],["path",{d:"M22 10v6",key:"1lu8f3"}],["path",{d:"M6 12.5V16a6 3 0 0 0 12 0v-3.5",key:"1r8lef"}]]),gt=W("orbit",[["path",{d:"M20.341 6.484A10 10 0 0 1 10.266 21.85",key:"1enhxb"}],["path",{d:"M3.659 17.516A10 10 0 0 1 13.74 2.152",key:"1crzgf"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}],["circle",{cx:"19",cy:"5",r:"2",key:"mhkx31"}],["circle",{cx:"5",cy:"19",r:"2",key:"v8kfzx"}]]),yt=W("panels-top-left",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M3 9h18",key:"1pudct"}],["path",{d:"M9 21V9",key:"1oto5p"}]]),T=X(ge(),1),Z=oe(),a=X(Ie(),1),jt={intro:["Introduction",ft,"Get started with marimo basics"],dataflow:["Dataflow",ve,"Learn how cells interact with each other"],ui:["UI Elements",yt,"Create interactive UI components"],markdown:["Markdown",te,"Format text with parameterized markdown"],plots:["Plots",Pe,"Create interactive visualizations"],sql:["SQL",je,"Query databases directly in marimo"],layout:["Layout",Ee,"Customize the layout of your cells' output"],fileformat:["File format",qe,"Understand marimo's pure-Python file format"],"for-jupyter-users":["For Jupyter users",gt,"Transiting from Jupyter to marimo"],"markdown-format":["Markdown format",Q,"Using marimo to edit markdown files"]};const bt=()=>{let e=(0,Z.c)(6),{openTutorial:t}=V(),r;e[0]===Symbol.for("react.memo_cache_sentinel")?(r=(0,a.jsx)(xt,{className:"w-4 h-4 mr-2"}),e[0]=r):r=e[0];let o;e[1]===Symbol.for("react.memo_cache_sentinel")?(o=(0,a.jsx)($e,{asChild:!0,children:(0,a.jsxs)(H,{"data-testid":"open-tutorial-button",size:"xs",variant:"outline",children:[r,"Tutorials",(0,a.jsx)(Re,{className:"w-3 h-3 ml-1"})]})}),e[1]=o):o=e[1];let s;e[2]===t?s=e[3]:(s=Ne.entries(jt).map(i=>{let[m,d]=i,[c,h,p]=d;return(0,a.jsxs)(Fe,{onSelect:async()=>{let n=await t({tutorialId:m});n&&ht(n.path)},children:[(0,a.jsx)(h,{strokeWidth:1.5,className:"w-4 h-4 mr-3 self-start mt-1.5 text-muted-foreground"}),(0,a.jsx)("div",{className:"flex items-center",children:(0,a.jsxs)("div",{className:"flex flex-col",children:[(0,a.jsx)("span",{children:c}),(0,a.jsx)("span",{className:"text-xs text-muted-foreground pr-1",children:p})]})})]},m)}),e[2]=t,e[3]=s);let l;return e[4]===s?l=e[5]:(l=(0,a.jsxs)(Ue,{children:[o,(0,a.jsx)(Le,{side:"bottom",align:"end",className:"no-print",children:s})]}),e[4]=s,e[5]=l),l};var vt=[{title:"Documentation",description:"Official marimo documentation and API reference",icon:ye,url:R.docsPage},{title:"GitHub",description:"View source code, report issues, or contribute",icon:Ye,url:R.githubPage},{title:"Community",description:"Join the marimo Discord community",icon:Be,url:R.discordLink},{title:"YouTube",description:"Watch tutorials and demos",icon:Ge,url:R.youtube},{title:"Changelog",description:"See what's new in marimo",icon:te,url:R.releasesPage}];const kt=()=>{let e=(0,Z.c)(2),t;e[0]===Symbol.for("react.memo_cache_sentinel")?(t=(0,a.jsx)(q,{Icon:Je,children:"Resources"}),e[0]=t):t=e[0];let r;return e[1]===Symbol.for("react.memo_cache_sentinel")?(r=(0,a.jsxs)("div",{className:"flex flex-col gap-2",children:[t,(0,a.jsx)("div",{className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-3",children:vt.map(wt)})]}),e[1]=r):r=e[1],r},q=e=>{let t=(0,Z.c)(8),{Icon:r,control:o,children:s}=e,l;t[0]===r?l=t[1]:(l=(0,a.jsx)(r,{className:"h-5 w-5"}),t[0]=r,t[1]=l);let i;t[2]!==s||t[3]!==l?(i=(0,a.jsxs)("h2",{className:"flex items-center gap-2 text-xl font-semibold text-muted-foreground select-none",children:[l,s]}),t[2]=s,t[3]=l,t[4]=i):i=t[4];let m;return t[5]!==o||t[6]!==i?(m=(0,a.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[i,o]}),t[5]=o,t[6]=i,t[7]=m):m=t[7],m};function wt(e){return(0,a.jsxs)("a",{href:e.url,target:"_blank",className:"flex items-start gap-3 py-3 px-3 rounded-lg border hover:bg-accent/20 transition-colors shadow-xs",children:[(0,a.jsx)(e.icon,{className:"w-5 h-5 mt-1.5 text-primary"}),(0,a.jsxs)("div",{children:[(0,a.jsx)("h3",{className:"font-medium",children:e.title}),(0,a.jsx)("p",{className:"text-sm text-muted-foreground",children:e.description})]})]},e.title)}const ce=T.createContext({runningNotebooks:new Map,setRunningNotebooks:_e.NOOP}),me=T.createContext(""),Nt=re("marimo:home:include-markdown",!1,ae,{getOnInit:!0}),de=re("marimo:home:expanded-folders",{},ae,{getOnInit:!0});var P=oe();function he(e){return`${Ce()}-${encodeURIComponent(e)}`}var _t=()=>{let e=(0,P.c)(56),[t,r]=(0,T.useState)(0),{getRecentFiles:o,getRunningNotebooks:s}=V(),l;e[0]===o?l=e[1]:(l=()=>o(),e[0]=o,e[1]=l);let i;e[2]===Symbol.for("react.memo_cache_sentinel")?(i=[],e[2]=i):i=e[2];let m=J(l,i),d,c;e[3]===Symbol.for("react.memo_cache_sentinel")?(d=()=>{r(Tt)},c={delayMs:1e4,whenVisible:!0},e[3]=d,e[4]=c):(d=e[3],c=e[4]),pt(d,c);let h;e[5]===s?h=e[6]:(h=async()=>{let A=await s();return le.keyBy(A.files,At)},e[5]=s,e[6]=h);let p;e[7]===t?p=e[8]:(p=[t],e[7]=t,e[8]=p);let n=J(h,p),f,x,u,g,k,y,b,v,w,N,_,z,S;if(e[9]!==m||e[10]!==n){w=Symbol.for("react.early_return_sentinel");e:{let A=mt(m,n);if(A.error)throw A.error;let K=A.data;if(!K){let U;e[24]===Symbol.for("react.memo_cache_sentinel")?(U=(0,a.jsx)(G,{centered:!0,size:"xlarge"}),e[24]=U):U=e[24],w=U;break e}let[ue,Y]=K;g=ue,u=T.Suspense,x=ce,b={runningNotebooks:Y,setRunningNotebooks:n.setData};let $,L;e[25]===Symbol.for("react.memo_cache_sentinel")?($=(0,a.jsx)(bt,{}),L=(0,a.jsx)(Ke,{showAppConfig:!1}),e[25]=$,e[26]=L):($=e[25],L=e[26]);let B=`This will shutdown the notebook server and terminate all running notebooks (${Y.size}). You'll lose all data that's in memory.`;e[27]===B?v=e[28]:(v=(0,a.jsxs)("div",{className:"absolute top-3 right-5 flex gap-3 z-50",children:[$,L,(0,a.jsx)(Qe,{description:B})]}),e[27]=B,e[28]=v),z="flex flex-col gap-6 max-w-6xl container pt-5 pb-20 z-10",e[29]===Symbol.for("react.memo_cache_sentinel")?(S=(0,a.jsx)("img",{src:"logo.png",alt:"marimo logo",className:"w-48 mb-2"}),k=(0,a.jsx)(Pt,{}),y=(0,a.jsx)(kt,{}),e[29]=k,e[30]=y,e[31]=S):(k=e[29],y=e[30],S=e[31]),f=pe,e[32]===Symbol.for("react.memo_cache_sentinel")?(N=(0,a.jsx)(q,{Icon:We,children:"Running notebooks"}),e[32]=N):N=e[32],_=[...Y.values()]}e[9]=m,e[10]=n,e[11]=f,e[12]=x,e[13]=u,e[14]=g,e[15]=k,e[16]=y,e[17]=b,e[18]=v,e[19]=w,e[20]=N,e[21]=_,e[22]=z,e[23]=S}else f=e[11],x=e[12],u=e[13],g=e[14],k=e[15],y=e[16],b=e[17],v=e[18],w=e[19],N=e[20],_=e[21],z=e[22],S=e[23];if(w!==Symbol.for("react.early_return_sentinel"))return w;let C;e[33]!==f||e[34]!==N||e[35]!==_?(C=(0,a.jsx)(f,{header:N,files:_}),e[33]=f,e[34]=N,e[35]=_,e[36]=C):C=e[36];let I;e[37]===Symbol.for("react.memo_cache_sentinel")?(I=(0,a.jsx)(q,{Icon:we,children:"Recent notebooks"}),e[37]=I):I=e[37];let M;e[38]===g.files?M=e[39]:(M=(0,a.jsx)(pe,{header:I,files:g.files}),e[38]=g.files,e[39]=M);let O;e[40]===Symbol.for("react.memo_cache_sentinel")?(O=(0,a.jsx)(Me,{children:(0,a.jsx)(St,{})}),e[40]=O):O=e[40];let j;e[41]!==k||e[42]!==y||e[43]!==C||e[44]!==M||e[45]!==z||e[46]!==S?(j=(0,a.jsxs)("div",{className:z,children:[S,k,y,C,M,O]}),e[41]=k,e[42]=y,e[43]=C,e[44]=M,e[45]=z,e[46]=S,e[47]=j):j=e[47];let D;e[48]!==x||e[49]!==b||e[50]!==v||e[51]!==j?(D=(0,a.jsxs)(x,{value:b,children:[v,j]}),e[48]=x,e[49]=b,e[50]=v,e[51]=j,e[52]=D):D=e[52];let F;return e[53]!==u||e[54]!==D?(F=(0,a.jsx)(u,{children:D}),e[53]=u,e[54]=D,e[55]=F):F=e[55],F},St=()=>{let e=(0,P.c)(48),{getWorkspaceFiles:t}=V(),[r,o]=ee(Nt),[s,l]=(0,T.useState)(""),i;e[0]!==t||e[1]!==r?(i=()=>t({includeMarkdown:r}),e[0]=t,e[1]=r,e[2]=i):i=e[2];let m;e[3]===r?m=e[4]:(m=[r],e[3]=r,e[4]=m);let{isPending:d,data:c,error:h,isFetching:p,refetch:n}=J(i,m);if(d){let j;return e[5]===Symbol.for("react.memo_cache_sentinel")?(j=(0,a.jsx)(G,{centered:!0,size:"xlarge",className:"mt-6"}),e[5]=j):j=e[5],j}if(h){let j;e[6]===h?j=e[7]:(j=nt(h),e[6]=h,e[7]=j);let D;return e[8]===j?D=e[9]:(D=(0,a.jsx)(ne,{kind:"danger",className:"rounded p-4",children:j}),e[8]=j,e[9]=D),D}let f;e[10]!==c.fileCount||e[11]!==c.hasMore?(f=c.hasMore&&(0,a.jsxs)(ne,{kind:"warn",className:"rounded p-4",children:["Showing first ",c.fileCount," files. Your workspace has more files."]}),e[10]=c.fileCount,e[11]=c.hasMore,e[12]=f):f=e[12];let x,u;e[13]===Symbol.for("react.memo_cache_sentinel")?(x=(0,a.jsx)(et,{size:13}),u=j=>l(j.target.value),e[13]=x,e[14]=u):(x=e[13],u=e[14]);let g;e[15]===s?g=e[16]:(g=(0,a.jsx)(tt,{id:"search",value:s,icon:x,onChange:u,placeholder:"Search",className:"mb-0 border-border"}),e[15]=s,e[16]=g);let k;e[17]===Symbol.for("react.memo_cache_sentinel")?(k=(0,a.jsx)(zt,{}),e[17]=k):k=e[17];let y;e[18]===o?y=e[19]:(y=j=>o(!!j),e[18]=o,e[19]=y);let b;e[20]!==r||e[21]!==y?(b=(0,a.jsx)(be,{"data-testid":"include-markdown-checkbox",id:"include-markdown",checked:r,onCheckedChange:y}),e[20]=r,e[21]=y,e[22]=b):b=e[22];let v;e[23]===Symbol.for("react.memo_cache_sentinel")?(v=(0,a.jsx)(dt,{htmlFor:"include-markdown",children:"Include markdown"}),e[23]=v):v=e[23];let w;e[24]!==g||e[25]!==b?(w=(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[g,k,b,v]}),e[24]=g,e[25]=b,e[26]=w):w=e[26];let N;e[27]===n?N=e[28]:(N=()=>n(),e[27]=n,e[28]=N);let _;e[29]===Symbol.for("react.memo_cache_sentinel")?(_=(0,a.jsx)(Xe,{className:"w-4 h-4"}),e[29]=_):_=e[29];let z;e[30]===N?z=e[31]:(z=(0,a.jsx)(H,{variant:"text",size:"icon",className:"w-4 h-4 ml-1 p-0 opacity-70 hover:opacity-100",onClick:N,"aria-label":"Refresh workspace",children:_}),e[30]=N,e[31]=z);let S;e[32]===p?S=e[33]:(S=p&&(0,a.jsx)(G,{size:"small"}),e[32]=p,e[33]=S);let C;e[34]!==w||e[35]!==z||e[36]!==S?(C=(0,a.jsxs)(q,{Icon:ut,control:w,children:["Workspace",z,S]}),e[34]=w,e[35]=z,e[36]=S,e[37]=C):C=e[37];let I;e[38]!==s||e[39]!==c.files?(I=(0,a.jsx)("div",{className:"flex flex-col divide-y divide-(--slate-3) border rounded overflow-hidden max-h-192 overflow-y-auto shadow-sm bg-background",children:(0,a.jsx)(Ct,{searchText:s,files:c.files})}),e[38]=s,e[39]=c.files,e[40]=I):I=e[40];let M;e[41]!==C||e[42]!==I||e[43]!==f?(M=(0,a.jsxs)("div",{className:"flex flex-col gap-2",children:[f,C,I]}),e[41]=C,e[42]=I,e[43]=f,e[44]=M):M=e[44];let O;return e[45]!==M||e[46]!==c.root?(O=(0,a.jsx)(me,{value:c.root,children:M}),e[45]=M,e[46]=c.root,e[47]=O):O=e[47],O},zt=()=>{let e=(0,P.c)(5),t=xe(de),r;e[0]===t?r=e[1]:(r=()=>{t({})},e[0]=t,e[1]=r);let o;e[2]===Symbol.for("react.memo_cache_sentinel")?(o=(0,a.jsx)(Ae,{className:"w-4 h-4 mr-1"}),e[2]=o):o=e[2];let s;return e[3]===r?s=e[4]:(s=(0,a.jsxs)(H,{variant:"text",size:"sm",className:"h-fit hidden sm:flex",onClick:r,children:[o,"Collapse all"]}),e[3]=r,e[4]=s),s},Ct=e=>{let t=(0,P.c)(12),{files:r,searchText:o}=e,[s,l]=ee(de),i=Object.keys(s).length===0,m=(0,T.useRef)(void 0),d,c;if(t[0]===i?(d=t[1],c=t[2]):(d=()=>{var n;i&&((n=m.current)==null||n.closeAll())},c=[i],t[0]=i,t[1]=d,t[2]=c),(0,T.useEffect)(d,c),r.length===0){let n;return t[3]===Symbol.for("react.memo_cache_sentinel")?(n=(0,a.jsx)("div",{className:"flex flex-col px-5 py-10 items-center justify-center",children:(0,a.jsx)("p",{className:"text-center text-muted-foreground",children:"No files in this workspace"})}),t[3]=n):n=t[3],n}let h;t[4]!==s||t[5]!==l?(h=async n=>{let f=s[n]??!1;l({...s,[n]:!f})},t[4]=s,t[5]=l,t[6]=h):h=t[6];let p;return t[7]!==r||t[8]!==s||t[9]!==o||t[10]!==h?(p=(0,a.jsx)(ct,{ref:m,width:"100%",height:500,searchTerm:o,className:"h-full",idAccessor:Rt,data:r,openByDefault:!1,initialOpenState:s,onToggle:h,padding:5,rowHeight:35,indent:15,overscanCount:1e3,renderCursor:Wt,disableDrop:!0,disableDrag:!0,disableEdit:!0,disableMultiSelection:!0,children:Mt}),t[7]=r,t[8]=s,t[9]=o,t[10]=h,t[11]=p):p=t[11],p},Mt=e=>{let t=(0,P.c)(19),{node:r,style:o}=e,s=Ve[r.data.isDirectory?"directory":He(r.data.name)],l;t[0]===s?l=t[1]:(l=(0,a.jsx)(s,{className:"w-5 h-5 shrink-0",strokeWidth:1.5}),t[0]=s,t[1]=l);let i=l,m=(0,T.use)(me),d;t[2]!==i||t[3]!==r.data.isDirectory||t[4]!==r.data.name||t[5]!==r.data.path||t[6]!==m?(d=()=>{if(r.data.isDirectory)return(0,a.jsxs)("span",{className:"flex items-center pl-1 cursor-pointer hover:bg-accent/50 hover:text-accent-foreground rounded-l flex-1 overflow-hidden h-full pr-3 gap-2",children:[i,r.data.name]});let u=r.data.path.startsWith(m)&&se.isAbsolute(r.data.path)?se.rest(r.data.path,m):r.data.path,g=u.endsWith(".md")||u.endsWith(".qmd");return(0,a.jsxs)("a",{className:"flex items-center pl-1 cursor-pointer hover:bg-accent/50 hover:text-accent-foreground rounded-l flex-1 overflow-hidden h-full pr-3 gap-2",href:ie(`?file=${u}`).toString(),target:he(u),children:[i,(0,a.jsxs)("span",{className:"flex-1 overflow-hidden text-ellipsis",children:[r.data.name,g&&(0,a.jsx)(Q,{className:"ml-2 inline opacity-80"})]}),(0,a.jsx)(fe,{filePath:u}),(0,a.jsx)(E,{size:20,className:"group-hover:opacity-100 opacity-0 text-primary"})]})},t[2]=i,t[3]=r.data.isDirectory,t[4]=r.data.name,t[5]=r.data.path,t[6]=m,t[7]=d):d=t[7];let c=d,h;t[8]===Symbol.for("react.memo_cache_sentinel")?(h=De("flex items-center cursor-pointer ml-1 text-muted-foreground whitespace-nowrap group h-full"),t[8]=h):h=t[8];let p,n;t[9]===r?(p=t[10],n=t[11]):(p=u=>{u.stopPropagation(),r.data.isDirectory&&r.toggle()},n=(0,a.jsx)(It,{node:r}),t[9]=r,t[10]=p,t[11]=n);let f;t[12]===c?f=t[13]:(f=c(),t[12]=c,t[13]=f);let x;return t[14]!==o||t[15]!==p||t[16]!==n||t[17]!==f?(x=(0,a.jsxs)("div",{style:o,className:h,onClick:p,children:[n,f]}),t[14]=o,t[15]=p,t[16]=n,t[17]=f,t[18]=x):x=t[18],x},It=e=>{let t=(0,P.c)(3),{node:r}=e;if(!r.data.isDirectory){let s;return t[0]===Symbol.for("react.memo_cache_sentinel")?(s=(0,a.jsx)("span",{className:"w-5 h-5 shrink-0"}),t[0]=s):s=t[0],s}let o;return t[1]===r.isOpen?o=t[2]:(o=r.isOpen?(0,a.jsx)(Oe,{className:"w-5 h-5 shrink-0"}):(0,a.jsx)(Te,{className:"w-5 h-5 shrink-0"}),t[1]=r.isOpen,t[2]=o),o},pe=e=>{let t=(0,P.c)(7),{header:r,files:o}=e;if(o.length===0)return null;let s;t[0]===o?s=t[1]:(s=o.map(Ft),t[0]=o,t[1]=s);let l;t[2]===s?l=t[3]:(l=(0,a.jsx)("div",{className:"flex flex-col divide-y divide-(--slate-3) border rounded overflow-hidden max-h-192 overflow-y-auto shadow-sm bg-background",children:s}),t[2]=s,t[3]=l);let i;return t[4]!==r||t[5]!==l?(i=(0,a.jsxs)("div",{className:"flex flex-col gap-2",children:[r,l]}),t[4]=r,t[5]=l,t[6]=i):i=t[6],i},Dt=e=>{let t=(0,P.c)(41),{file:r}=e,{locale:o}=it(),s;t[0]===r.path?s=t[1]:(s=Se(r.path),t[0]=r.path,t[1]=s);let l=s,i,m,d,c;if(t[2]!==r.initializationId||t[3]!==r.path||t[4]!==l){let N=ie(l?`?file=${r.initializationId}&session_id=${r.path}`:`?file=${r.path}`),_;t[9]===r.path?_=t[10]:(_=r.path.endsWith(".md"),t[9]=r.path,t[10]=_),i=_,m="py-1.5 px-4 hover:bg-(--blue-2) hover:text-primary transition-all duration-300 cursor-pointer group relative flex gap-4 items-center",d=r.path,c=N.toString(),t[2]=r.initializationId,t[3]=r.path,t[4]=l,t[5]=i,t[6]=m,t[7]=d,t[8]=c}else i=t[5],m=t[6],d=t[7],c=t[8];let h=r.initializationId||r.path,p;t[11]===h?p=t[12]:(p=he(h),t[11]=h,t[12]=p);let n;t[13]===i?n=t[14]:(n=i&&(0,a.jsx)("span",{className:"opacity-80",children:(0,a.jsx)(Q,{})}),t[13]=i,t[14]=n);let f;t[15]!==r.name||t[16]!==n?(f=(0,a.jsxs)("span",{className:"flex items-center gap-2",children:[r.name,n]}),t[15]=r.name,t[16]=n,t[17]=f):f=t[17];let x;t[18]===r.path?x=t[19]:(x=(0,a.jsx)("p",{title:r.path,className:"text-sm text-muted-foreground overflow-hidden whitespace-nowrap text-ellipsis",children:r.path}),t[18]=r.path,t[19]=x);let u;t[20]!==f||t[21]!==x?(u=(0,a.jsxs)("div",{className:"flex flex-col justify-between flex-1",children:[f,x]}),t[20]=f,t[21]=x,t[22]=u):u=t[22];let g;t[23]===r.path?g=t[24]:(g=(0,a.jsx)("div",{children:(0,a.jsx)(fe,{filePath:r.path})}),t[23]=r.path,t[24]=g);let k;t[25]===Symbol.for("react.memo_cache_sentinel")?(k=(0,a.jsx)(E,{size:20,className:"group-hover:opacity-100 opacity-0 transition-all duration-300 text-primary"}),t[25]=k):k=t[25];let y;t[26]===g?y=t[27]:(y=(0,a.jsxs)("div",{className:"flex gap-3 items-center",children:[g,k]}),t[26]=g,t[27]=y);let b;t[28]!==r.lastModified||t[29]!==o?(b=!!r.lastModified&&(0,a.jsx)("div",{className:"text-xs text-muted-foreground opacity-80",children:st(r.lastModified*1e3,o)}),t[28]=r.lastModified,t[29]=o,t[30]=b):b=t[30];let v;t[31]!==y||t[32]!==b?(v=(0,a.jsxs)("div",{className:"flex flex-col gap-1 items-end",children:[y,b]}),t[31]=y,t[32]=b,t[33]=v):v=t[33];let w;return t[34]!==u||t[35]!==v||t[36]!==m||t[37]!==d||t[38]!==c||t[39]!==p?(w=(0,a.jsxs)("a",{className:m,href:c,target:p,children:[u,v]},d),t[34]=u,t[35]=v,t[36]=m,t[37]=d,t[38]=c,t[39]=p,t[40]=w):w=t[40],w},fe=e=>{let t=(0,P.c)(10),{filePath:r}=e,{openConfirm:o,closeModal:s}=lt(),{shutdownSession:l}=V(),{runningNotebooks:i,setRunningNotebooks:m}=(0,T.use)(ce);if(!i.has(r))return null;let d;t[0]!==s||t[1]!==r||t[2]!==o||t[3]!==i||t[4]!==m||t[5]!==l?(d=p=>{p.stopPropagation(),p.preventDefault(),o({title:"Shutdown",description:"This will terminate the Python kernel. You'll lose all data that's in memory.",variant:"destructive",confirmAction:(0,a.jsx)(ot,{onClick:()=>{let n=i.get(r);ke(n==null?void 0:n.sessionId),l({sessionId:n.sessionId}).then(f=>{m(le.keyBy(f.files,$t))}),s(),rt({description:"Notebook has been shutdown."})},"aria-label":"Confirm Shutdown",children:"Shutdown"})})},t[0]=s,t[1]=r,t[2]=o,t[3]=i,t[4]=m,t[5]=l,t[6]=d):d=t[6];let c;t[7]===Symbol.for("react.memo_cache_sentinel")?(c=(0,a.jsx)(Ze,{size:14}),t[7]=c):c=t[7];let h;return t[8]===d?h=t[9]:(h=(0,a.jsx)(at,{content:"Shutdown",children:(0,a.jsx)(H,{size:"icon",variant:"outline",className:"opacity-80 hover:opacity-100 hover:bg-accent text-destructive border-destructive hover:border-destructive hover:text-destructive bg-background hover:bg-(--red-1)",onClick:d,children:c})}),t[8]=d,t[9]=h),h},Pt=()=>{let e=(0,P.c)(3),t;e[0]===Symbol.for("react.memo_cache_sentinel")?(t=ze(),e[0]=t):t=e[0];let r=t,o;e[1]===Symbol.for("react.memo_cache_sentinel")?(o=(0,a.jsx)("h2",{className:"text-lg font-semibold",children:"Create a new notebook"}),e[1]=o):o=e[1];let s;return e[2]===Symbol.for("react.memo_cache_sentinel")?(s=(0,a.jsxs)("a",{className:`relative rounded-lg p-6 group
2
- text-primary hover:bg-(--blue-2) shadow-md-solid shadow-accent border bg-(--blue-1)
3
- transition-all duration-300 cursor-pointer
4
- `,href:r,target:"_blank",rel:"noreferrer",children:[o,(0,a.jsx)("div",{className:"group-hover:opacity-100 opacity-0 absolute right-5 top-0 bottom-0 rounded-lg flex items-center justify-center transition-all duration-300",children:(0,a.jsx)(E,{size:24})})]}),e[2]=s):s=e[2],s},Ot=_t;function Tt(e){return e+1}function At(e){return e.path}function Rt(e){return e.path}function Wt(){return null}function Ft(e){return(0,a.jsx)(Dt,{file:e},e.path)}function $t(e){return e.path}export{Ot as default};
@@ -1 +0,0 @@
1
- import{l as S,p as j,u as E}from"./useEvent-DO6uJBas.js";import{o as T}from"./cells-BW_4R0Qw.js";import{t as I}from"./compiler-runtime-DeeZ7FnK.js";import{a as A,d as x}from"./hotkeys-BHHWjLlp.js";import{i as N}from"./utils-DXvhzCGS.js";import{A as _,w as F}from"./config-CIrPQIbt.js";import{r as P}from"./requests-BsVD4CdD.js";import{f as V}from"./layout-DiDoTAUA.js";import{l as D,o as $}from"./download-CzPV-R6Z.js";import{t as z}from"./use-toast-rmUWldD_.js";import{t as C}from"./useInterval-Cu9ChZf-.js";var B=I(),k=5e3;function H(){let t=(0,B.c)(14),i=E(N),{state:u}=E(F),o=i.auto_download.includes("markdown"),b=i.auto_download.includes("html"),m=i.auto_download.includes("ipynb"),r=u===_.OPEN,d=!o||!r,s=!b||!r,l=!m||!r,{autoExportAsHTML:p,autoExportAsIPYNB:a,autoExportAsMarkdown:e,updateCellOutputs:n}=P(),c=M(),f;t[0]===e?f=t[1]:(f=async()=>{await e({download:!1})},t[0]=e,t[1]=f);let w;t[2]===d?w=t[3]:(w={delayMs:k,whenVisible:!0,disabled:d},t[2]=d,t[3]=w),C(f,w);let h;t[4]===p?h=t[5]:(h=async()=>{await p({download:!1,includeCode:!0,files:V.INSTANCE.filenames()})},t[4]=p,t[5]=h);let y;t[6]===s?y=t[7]:(y={delayMs:k,whenVisible:!0,disabled:s},t[6]=s,t[7]=y),C(h,y);let v;t[8]!==a||t[9]!==c||t[10]!==n?(v=async()=>{await O({takeScreenshots:()=>c({progress:D.indeterminate(),snappy:!0}),updateCellOutputs:n}),await a({download:!1})},t[8]=a,t[9]=c,t[10]=n,t[11]=v):v=t[11];let g;t[12]===l?g=t[13]:(g={delayMs:k,whenVisible:!0,disabled:l,skipIfRunning:!0},t[12]=l,t[13]=g),C(v,g)}var L=j({}),R=new Set(["text/html","application/vnd.vegalite.v5+json","application/vnd.vega.v5+json","application/vnd.vegalite.v6+json","application/vnd.vega.v6+json"]);function M(){let[t,i]=S(L),u=E(T);return async({progress:o,snappy:b})=>{var l,p;let m={},r=[];for(let[a,e]of A.entries(u)){let n=(l=e.output)==null?void 0:l.data,c=t[a]!==n;m[a]=n,(p=e.output)!=null&&p.mimetype&&R.has(e.output.mimetype)&&n&&c&&r.push([a,e])}if(i(m),r.length===0)return{};let d=r.length;o.addTotal(d);let s={};for(let[a]of r)try{let e=await $(a,b);if(!e){x.error(`Failed to capture screenshot for cell ${a}`);continue}s[a]=["image/png",e]}catch(e){x.error(`Error screenshotting cell ${a}:`,e)}finally{o.increment(1)}return s}}async function O(t){let{takeScreenshots:i,updateCellOutputs:u}=t;try{let o=await i();A.size(o)>0&&await u({cellIdsToOutput:o})}catch(o){x.error("Error updating cell outputs with screenshots:",o),z({title:"Failed to capture cell outputs",description:"Some outputs may not appear in the PDF. Continuing with export.",variant:"danger"})}}export{H as n,M as r,O as t};
@@ -1 +0,0 @@
1
- import{s as J}from"./chunk-LvLJmgfZ.js";import{u as K}from"./useEvent-DO6uJBas.js";import{t as Z}from"./react-BGmjiNul.js";import{b as $,qr as ee,w as te}from"./cells-BW_4R0Qw.js";import"./react-dom-C9fstfnp.js";import{t as V}from"./compiler-runtime-DeeZ7FnK.js";import"./tooltip-BGrCWNss.js";import{w as re}from"./utilities.esm-BVFPJPyV.js";import{n as Y}from"./constants-B6Cb__3x.js";import{b as oe,j as se,s as ae}from"./config-CIrPQIbt.js";import{t as ie}from"./jsx-runtime-ZmTK25f3.js";import{t as F}from"./button-YC1gW_kJ.js";import"./dist-DBwNzi3C.js";import{E as me,Y as H}from"./JsonOutput-BGSqWZkD.js";import"./cjs-CH5Rj0g8.js";import"./main-U5Goe76G.js";import"./useNonce-_Aax6sXd.js";import{r as le}from"./requests-BsVD4CdD.js";import"./layout-DiDoTAUA.js";import{n as ne}from"./download-CzPV-R6Z.js";import"./markdown-renderer-xQJ1KM4c.js";import{t as ce}from"./copy-CQ15EONK.js";import{t as de}from"./download-B9SUL40m.js";import{i as pe,l as he,n as xe,r as M,t as fe,u as be}from"./panels-BhznEx5N.js";import{t as je}from"./spinner-DaIKav-i.js";import"./dist-Cayq-K1c.js";import"./dist-TiFCI16_.js";import"./dist-BIKFl48f.js";import"./dist-B0VqT_4z.js";import"./dist-BYyu59D8.js";import{t as ye}from"./use-toast-rmUWldD_.js";import"./Combination-CMPwuAmi.js";import"./dates-Dhn1r-h6.js";import{a as ue,c as ge,l as ke,n as _e,r as Ne,t as we}from"./dialog-CxGKN4C_.js";import"./popover-D16ZremR.js";import{t as ve}from"./share-CbPtIlnM.js";import"./vega-loader.browser-CRZ52CKf.js";import"./defaultLocale-D_rSvXvJ.js";import"./defaultLocale-C92Rrpmf.js";import{t as Se}from"./copy-Bv2DBpIS.js";import"./purify.es-DNVQZNFu.js";import{a as Ce}from"./cell-link-_-mIiddP.js";import"./chunk-5FQGJX7Z-CVUXBqX6.js";import"./katex-Dc8yG8NU.js";import"./html-to-image-DKvXQkl5.js";import"./esm-DpMp6qko.js";import{n as Ie,t as Ae}from"./react-resizable-panels.browser.esm-Ctj_10o2.js";import"./name-cell-input-D6uaGwg7.js";import{t as Ee}from"./icon-32x32-ClOCJ7rj.js";import"./ws-BApgRfsy.js";import"./dist-C9XNJlLJ.js";import"./dist-fsvXrTzp.js";import"./dist-6cIjG-FS.js";import"./dist-CldbmzwA.js";import"./dist-OM63llNV.js";import"./dist-BmvOPdv_.js";import"./dist-DDGPBuw4.js";import"./dist-C4h-1T2Q.js";import"./dist-D_XLVesh.js";import"./esm-l4kcybiY.js";var Te=V(),ze=J(Z(),1),t=J(ie(),1);const Re=s=>{let e=(0,Te.c)(21),{appConfig:o}=s,{setCells:r}=te(),{sendComponentValues:x}=le(),n;e[0]===x?n=e[1]:(n=()=>(M.INSTANCE.start(x),Pe),e[0]=x,e[1]=n);let a;e[2]===Symbol.for("react.memo_cache_sentinel")?(a=[],e[2]=a):a=e[2],(0,ze.useEffect)(n,a);let i;e[3]===Symbol.for("react.memo_cache_sentinel")?(i=ae(),e[3]=i):i=e[3];let f;e[4]===r?f=e[5]:(f={autoInstantiate:!0,setCells:r,sessionId:i},e[4]=r,e[5]=f);let{connection:m}=xe(f),y=K($),b;e[6]===m.state?b=e[7]:(b=oe(m.state),e[6]=m.state,e[7]=b);let p=b,c;e[8]!==o||e[9]!==p?(c=()=>p?(0,t.jsxs)(me,{milliseconds:2e3,fallback:null,children:[(0,t.jsx)(je,{className:"mx-auto"}),(0,t.jsx)("p",{className:"text-center text-sm text-muted-foreground mt-2",children:"Connecting..."})]}):(0,t.jsx)(pe,{appConfig:o,mode:"read"}),e[8]=o,e[9]=p,e[10]=c):c=e[10];let h=c,u=o.width,l;e[11]===m?l=e[12]:(l=(0,t.jsx)(be,{connection:m,className:"sm:pt-8"}),e[11]=m,e[12]=l);let d;e[13]===h?d=e[14]:(d=h(),e[13]=h,e[14]=d);let j;return e[15]!==o.width||e[16]!==m||e[17]!==y||e[18]!==l||e[19]!==d?(j=(0,t.jsxs)(he,{connection:m,isRunning:y,width:u,children:[l,d]}),e[15]=o.width,e[16]=m,e[17]=y,e[18]=l,e[19]=d,e[20]=j):j=e[20],j};function Pe(){M.INSTANCE.stop()}var Q=V();const We=()=>{let s=(0,Q.c)(3),e=K(ee);if(!H()||!e)return null;let o;s[0]===Symbol.for("react.memo_cache_sentinel")?(o=(0,t.jsxs)("span",{children:["Static"," ",(0,t.jsx)("a",{href:Y.githubPage,target:"_blank",className:"text-(--sky-11) font-medium underline",children:"marimo"})," ","notebook - Run or edit for full interactivity"]}),s[0]=o):o=s[0];let r;return s[1]===e?r=s[2]:(r=(0,t.jsxs)("div",{className:"px-4 py-2 bg-(--sky-2) border-b border-(--sky-7) text-(--sky-11) flex justify-between items-center gap-4 no-print text-sm","data-testid":"static-notebook-banner",children:[o,(0,t.jsx)("span",{className:"shrink-0",children:(0,t.jsx)(Oe,{code:e})})]}),s[1]=e,s[2]=r),r};var Oe=s=>{let e=(0,Q.c)(78),{code:o}=s,r=Ce()||"notebook.py",x=r.lastIndexOf("/");x!==-1&&(r=r.slice(x+1));let n=window.location.href,a,i,f,m,y,b,p,c,h,u,l,d,j,k,_,N,g,w,v;if(e[0]!==o||e[1]!==r){let G=ve({code:o});m=we,e[21]===Symbol.for("react.memo_cache_sentinel")?(l=(0,t.jsx)(ke,{asChild:!0,children:(0,t.jsx)(F,{"data-testid":"static-notebook-dialog-trigger",variant:"outline",size:"xs",children:"Run or Edit"})}),e[21]=l):l=e[21],f=_e,i=ue,e[22]===r?u=e[23]:(u=(0,t.jsx)(ge,{children:r}),e[22]=r,e[23]=u),a=Ne,b="pt-3 text-left space-y-3",e[24]===Symbol.for("react.memo_cache_sentinel")?(p=(0,t.jsxs)("p",{children:["This is a static"," ",(0,t.jsx)("a",{href:Y.githubPage,target:"_blank",className:"text-(--sky-11) hover:underline font-medium",children:"marimo"})," ","notebook. To run interactively:"]}),e[24]=p):p=e[24];let U;e[25]===Symbol.for("react.memo_cache_sentinel")?(U=(0,t.jsx)("br",{}),e[25]=U):U=e[25],e[26]===r?c=e[27]:(c=(0,t.jsx)("div",{className:"rounded-lg p-3 border bg-(--sky-2) border-(--sky-7)",children:(0,t.jsxs)("div",{className:"font-mono text-(--sky-11) leading-relaxed",children:["pip install marimo",U,"marimo edit ",r]})}),e[26]=r,e[27]=c),e[28]===Symbol.for("react.memo_cache_sentinel")?(h=!n.endsWith(".html")&&(0,t.jsxs)("div",{className:"rounded-lg p-3 border bg-(--sky-2) border-(--sky-7)",children:[(0,t.jsx)("div",{className:"text-sm text-(--sky-12) mb-1",children:"Or run directly from URL:"}),(0,t.jsxs)("div",{className:"font-mono text-(--sky-11) break-all",children:["marimo edit ",window.location.href]})]}),e[28]=h):h=e[28],v="pt-3 border-t border-(--sky-7)",N="text-sm text-(--sky-12) mb-2",e[29]===Symbol.for("react.memo_cache_sentinel")?(g=(0,t.jsx)("strong",{children:"Try in browser with WebAssembly:"}),e[29]=g):g=e[29],w=" ",y=G,d="_blank",j="text-(--sky-11) hover:underline break-all",k="noreferrer",_=G.slice(0,50),e[0]=o,e[1]=r,e[2]=a,e[3]=i,e[4]=f,e[5]=m,e[6]=y,e[7]=b,e[8]=p,e[9]=c,e[10]=h,e[11]=u,e[12]=l,e[13]=d,e[14]=j,e[15]=k,e[16]=_,e[17]=N,e[18]=g,e[19]=w,e[20]=v}else a=e[2],i=e[3],f=e[4],m=e[5],y=e[6],b=e[7],p=e[8],c=e[9],h=e[10],u=e[11],l=e[12],d=e[13],j=e[14],k=e[15],_=e[16],N=e[17],g=e[18],w=e[19],v=e[20];let S;e[30]!==y||e[31]!==d||e[32]!==j||e[33]!==k||e[34]!==_?(S=(0,t.jsxs)("a",{href:y,target:d,className:j,rel:k,children:[_,"..."]}),e[30]=y,e[31]=d,e[32]=j,e[33]=k,e[34]=_,e[35]=S):S=e[35];let C;e[36]!==S||e[37]!==N||e[38]!==g||e[39]!==w?(C=(0,t.jsxs)("p",{className:N,children:[g,w,S]}),e[36]=S,e[37]=N,e[38]=g,e[39]=w,e[40]=C):C=e[40];let q;e[41]===Symbol.for("react.memo_cache_sentinel")?(q=(0,t.jsx)("p",{className:"text-sm text-(--sky-12)",children:"Note: WebAssembly may not work for all notebooks. Additionally, some dependencies may not be available in the browser."}),e[41]=q):q=e[41];let I;e[42]!==C||e[43]!==v?(I=(0,t.jsxs)("div",{className:v,children:[C,q]}),e[42]=C,e[43]=v,e[44]=I):I=e[44];let A;e[45]!==a||e[46]!==b||e[47]!==p||e[48]!==c||e[49]!==h||e[50]!==I?(A=(0,t.jsxs)(a,{className:b,children:[p,c,h,I]}),e[45]=a,e[46]=b,e[47]=p,e[48]=c,e[49]=h,e[50]=I,e[51]=A):A=e[51];let E;e[52]!==i||e[53]!==u||e[54]!==A?(E=(0,t.jsxs)(i,{children:[u,A]}),e[52]=i,e[53]=u,e[54]=A,e[55]=E):E=e[55];let T;e[56]===o?T=e[57]:(T=async()=>{await Se(o),ye({title:"Copied to clipboard"})},e[56]=o,e[57]=T);let B;e[58]===Symbol.for("react.memo_cache_sentinel")?(B=(0,t.jsx)(ce,{className:"w-3 h-3 mr-2"}),e[58]=B):B=e[58];let z;e[59]===T?z=e[60]:(z=(0,t.jsxs)(F,{"data-testid":"copy-static-notebook-dialog-button",variant:"outline",size:"sm",onClick:T,children:[B,"Copy code"]}),e[59]=T,e[60]=z);let R;e[61]!==o||e[62]!==r?(R=()=>{ne(new Blob([o],{type:"text/plain"}),r)},e[61]=o,e[62]=r,e[63]=R):R=e[63];let D;e[64]===Symbol.for("react.memo_cache_sentinel")?(D=(0,t.jsx)(de,{className:"w-3 h-3 mr-2"}),e[64]=D):D=e[64];let P;e[65]===R?P=e[66]:(P=(0,t.jsxs)(F,{"data-testid":"download-static-notebook-dialog-button",variant:"outline",size:"sm",onClick:R,children:[D,"Download"]}),e[65]=R,e[66]=P);let W;e[67]!==z||e[68]!==P?(W=(0,t.jsxs)("div",{className:"flex gap-3 pt-2",children:[z,P]}),e[67]=z,e[68]=P,e[69]=W):W=e[69];let O;e[70]!==f||e[71]!==E||e[72]!==W?(O=(0,t.jsxs)(f,{children:[E,W]}),e[70]=f,e[71]=E,e[72]=W,e[73]=O):O=e[73];let L;return e[74]!==m||e[75]!==l||e[76]!==O?(L=(0,t.jsxs)(m,{children:[l,O]}),e[74]=m,e[75]=l,e[76]=O,e[77]=L):L=e[77],L},X=V(),qe=se()||H(),Be=s=>{let e=(0,X.c)(9),o;e[0]===Symbol.for("react.memo_cache_sentinel")?(o=(0,t.jsx)(We,{}),e[0]=o):o=e[0];let r;e[1]===s.appConfig?r=e[2]:(r=(0,t.jsx)(Re,{appConfig:s.appConfig}),e[1]=s.appConfig,e[2]=r);let x;e[3]===Symbol.for("react.memo_cache_sentinel")?(x=qe&&(0,t.jsx)(De,{}),e[3]=x):x=e[3];let n;e[4]===r?n=e[5]:(n=(0,t.jsxs)(Ae,{children:[o,r,x]}),e[4]=r,e[5]=n);let a;e[6]===Symbol.for("react.memo_cache_sentinel")?(a=(0,t.jsx)(re,{}),e[6]=a):a=e[6];let i;return e[7]===n?i=e[8]:(i=(0,t.jsx)(fe,{children:(0,t.jsxs)(Ie,{direction:"horizontal",autoSaveId:"marimo:chrome:v1:run1",children:[n,a]})}),e[7]=n,e[8]=i),i},De=()=>{let s=(0,X.c)(1),e;return s[0]===Symbol.for("react.memo_cache_sentinel")?(e=(0,t.jsx)("div",{className:"fixed bottom-0 right-0 z-50","data-testid":"watermark",children:(0,t.jsxs)("a",{href:Y.githubPage,target:"_blank",className:"text-sm text-(--grass-11) font-bold tracking-wide transition-colors bg-(--grass-4) hover:bg-(--grass-5) border-t border-l border-(--grass-8) px-3 py-1 rounded-tl-md flex items-center gap-2",children:[(0,t.jsx)("span",{children:"made with marimo"}),(0,t.jsx)("img",{src:Ee,alt:"marimo",className:"h-4 w-auto"})]})}),s[0]=e):e=s[0],e},Le=Be;export{Le as default};
@@ -1 +0,0 @@
1
- import{s as n}from"./chunk-LvLJmgfZ.js";import{t as g}from"./react-BGmjiNul.js";import{t as h}from"./compiler-runtime-DeeZ7FnK.js";import{t as w}from"./jsx-runtime-ZmTK25f3.js";import{t as c}from"./cn-BKtXLv3a.js";var d=h(),f=n(g(),1),m=n(w(),1),i=f.forwardRef((t,o)=>{let a=(0,d.c)(9),e,r;a[0]===t?(e=a[1],r=a[2]):({className:e,...r}=t,a[0]=t,a[1]=e,a[2]=r);let l;a[3]===e?l=a[4]:(l=c("w-full caption-bottom text-sm",e),a[3]=e,a[4]=l);let s;return a[5]!==r||a[6]!==o||a[7]!==l?(s=(0,m.jsx)("div",{className:"w-full overflow-auto scrollbar-thin flex-1",children:(0,m.jsx)("table",{ref:o,className:l,...r})}),a[5]=r,a[6]=o,a[7]=l,a[8]=s):s=a[8],s});i.displayName="Table";var b=f.forwardRef((t,o)=>{let a=(0,d.c)(9),e,r;a[0]===t?(e=a[1],r=a[2]):({className:e,...r}=t,a[0]=t,a[1]=e,a[2]=r);let l;a[3]===e?l=a[4]:(l=c("[&_tr]:border-b bg-background",e),a[3]=e,a[4]=l);let s;return a[5]!==r||a[6]!==o||a[7]!==l?(s=(0,m.jsx)("thead",{ref:o,className:l,...r}),a[5]=r,a[6]=o,a[7]=l,a[8]=s):s=a[8],s});b.displayName="TableHeader";var N=f.forwardRef((t,o)=>{let a=(0,d.c)(9),e,r;a[0]===t?(e=a[1],r=a[2]):({className:e,...r}=t,a[0]=t,a[1]=e,a[2]=r);let l;a[3]===e?l=a[4]:(l=c("[&_tr:last-child]:border-0",e),a[3]=e,a[4]=l);let s;return a[5]!==r||a[6]!==o||a[7]!==l?(s=(0,m.jsx)("tbody",{ref:o,className:l,...r}),a[5]=r,a[6]=o,a[7]=l,a[8]=s):s=a[8],s});N.displayName="TableBody";var y=f.forwardRef((t,o)=>{let a=(0,d.c)(9),e,r;a[0]===t?(e=a[1],r=a[2]):({className:e,...r}=t,a[0]=t,a[1]=e,a[2]=r);let l;a[3]===e?l=a[4]:(l=c("bg-primary font-medium text-primary-foreground",e),a[3]=e,a[4]=l);let s;return a[5]!==r||a[6]!==o||a[7]!==l?(s=(0,m.jsx)("tfoot",{ref:o,className:l,...r}),a[5]=r,a[6]=o,a[7]=l,a[8]=s):s=a[8],s});y.displayName="TableFooter";var p=f.forwardRef((t,o)=>{let a=(0,d.c)(9),e,r;a[0]===t?(e=a[1],r=a[2]):({className:e,...r}=t,a[0]=t,a[1]=e,a[2]=r);let l;a[3]===e?l=a[4]:(l=c("border-b transition-colors bg-background hover:bg-(--slate-2) data-[state=selected]:bg-(--slate-3)",e),a[3]=e,a[4]=l);let s;return a[5]!==r||a[6]!==o||a[7]!==l?(s=(0,m.jsx)("tr",{ref:o,className:l,...r}),a[5]=r,a[6]=o,a[7]=l,a[8]=s):s=a[8],s});p.displayName="TableRow";var u=f.forwardRef((t,o)=>{let a=(0,d.c)(9),e,r;a[0]===t?(e=a[1],r=a[2]):({className:e,...r}=t,a[0]=t,a[1]=e,a[2]=r);let l;a[3]===e?l=a[4]:(l=c("h-10 px-2 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0",e),a[3]=e,a[4]=l);let s;return a[5]!==r||a[6]!==o||a[7]!==l?(s=(0,m.jsx)("th",{ref:o,className:l,...r}),a[5]=r,a[6]=o,a[7]=l,a[8]=s):s=a[8],s});u.displayName="TableHead";var x=f.forwardRef((t,o)=>{let a=(0,d.c)(9),e,r;a[0]===t?(e=a[1],r=a[2]):({className:e,...r}=t,a[0]=t,a[1]=e,a[2]=r);let l;a[3]===e?l=a[4]:(l=c("p-1.5 align-middle [&:has([role=checkbox])]:pr-0",e),a[3]=e,a[4]=l);let s;return a[5]!==r||a[6]!==o||a[7]!==l?(s=(0,m.jsx)("td",{ref:o,className:l,...r}),a[5]=r,a[6]=o,a[7]=l,a[8]=s):s=a[8],s});x.displayName="TableCell";var v=f.forwardRef((t,o)=>{let a=(0,d.c)(9),e,r;a[0]===t?(e=a[1],r=a[2]):({className:e,...r}=t,a[0]=t,a[1]=e,a[2]=r);let l;a[3]===e?l=a[4]:(l=c("mt-4 text-sm text-muted-foreground",e),a[3]=e,a[4]=l);let s;return a[5]!==r||a[6]!==o||a[7]!==l?(s=(0,m.jsx)("caption",{ref:o,className:l,...r}),a[5]=r,a[6]=o,a[7]=l,a[8]=s):s=a[8],s});v.displayName="TableCaption";export{b as a,u as i,N as n,p as o,x as r,i as t};
@@ -1 +0,0 @@
1
- import{s as de}from"./chunk-LvLJmgfZ.js";import{d as D,l as Oe,p as Be,u as ee}from"./useEvent-DO6uJBas.js";import{t as $e}from"./react-BGmjiNul.js";import{$n as Ue,Gn as Ye,Jn as Fe,Rt as Ge,Un as Je,ai as te,dn as Ke,g as Xe,hn as ce,jt as Ze,ln as Qe,m as he,t as et,un as tt,w as pe,yr as at,zt as me}from"./cells-BW_4R0Qw.js";import{t as W}from"./compiler-runtime-DeeZ7FnK.js";import{n as ot}from"./assertNever-CBU83Y6o.js";import{s as ue}from"./useLifecycle-D35CBukS.js";import{n as nt}from"./add-database-form-CqEjMrq2.js";import{n as it,x as lt}from"./ai-model-dropdown-C_l_zAXd.js";import{a as fe,d as P}from"./hotkeys-BHHWjLlp.js";import{y as st}from"./utils-DXvhzCGS.js";import{n as _,t as ye}from"./constants-B6Cb__3x.js";import{A as rt,f as dt,j as ke,w as ct}from"./config-CIrPQIbt.js";import{t as ht}from"./jsx-runtime-ZmTK25f3.js";import{r as pt,t as ae}from"./button-YC1gW_kJ.js";import{r as I}from"./requests-BsVD4CdD.js";import{t as h}from"./createLucideIcon-CnW3RofX.js";import{a as be,f as mt,i as xe,m as ut,p as we,u as ge}from"./layout-DiDoTAUA.js";import{t as je}from"./check-DdfN0k2d.js";import{a as ft,c as yt,i as kt,n as bt,r as xt,s as wt,t as gt}from"./select-V5IdpNiR.js";import{a as jt,n as ve,s as vt,t as Ct,u as Ce}from"./download-CzPV-R6Z.js";import{f as zt}from"./maps-t9yNKYA8.js";import{r as Mt}from"./useCellActionButton-BDMlZzyv.js";import{t as Wt}from"./copy-CQ15EONK.js";import{t as _t}from"./download-B9SUL40m.js";import{t as At}from"./eye-off-BhExYOph.js";import{t as St}from"./file-plus-corner-Da9I6dgU.js";import{t as Nt}from"./file-Cs1JbsV6.js";import{i as Dt,n as Pt,r as It,t as Et}from"./youtube-8p26v8EM.js";import{n as Tt,t as Ht}from"./house-DhFkiXz7.js";import{n as Lt}from"./play-BPIh-ZEU.js";import{t as qt}from"./link-BsTPF7B0.js";import{r as Rt}from"./input-pAun1m1X.js";import{t as Vt}from"./settings-DOXWMfVd.js";import{y as Ot}from"./textarea-DSR2T2ft.js";import{t as Bt}from"./square-C8Tw_XXG.js";import{t as C}from"./use-toast-rmUWldD_.js";import{t as $t}from"./tooltip-CEc2ajau.js";import{a as ze,i as Ut,r as Yt}from"./mode-BCr7l3Th.js";import{o as Ft}from"./alert-dialog-DwQffb13.js";import{a as Gt,c as Jt,i as Kt,n as Xt,r as Zt}from"./dialog-CxGKN4C_.js";import{n as oe}from"./ImperativeModal-CUbWEBci.js";import{r as Qt,t as ea}from"./share-CbPtIlnM.js";import{t as $}from"./copy-Bv2DBpIS.js";import{r as ta}from"./useRunCells-C50mliNM.js";import{a as aa}from"./cell-link-_-mIiddP.js";import{a as Me}from"./renderShortcut-DHc-p-_c.js";import{t as oa}from"./icons-BhEXrzsb.js";import{t as na}from"./links-C-GGaW8R.js";import{r as ia,t as la}from"./hooks-CpjzmBkw.js";import{t as We}from"./types-z6Sk3JCV.js";var sa=h("circle-chevron-down",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m16 10-4 4-4-4",key:"894hmk"}]]),ra=h("circle-chevron-right",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m10 8 4 4-4 4",key:"1wy4r4"}]]),_e=h("clipboard-copy",[["rect",{width:"8",height:"4",x:"8",y:"2",rx:"1",ry:"1",key:"tgr4d6"}],["path",{d:"M8 4H6a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-2",key:"4jdomd"}],["path",{d:"M16 4h2a2 2 0 0 1 2 2v4",key:"3hqy98"}],["path",{d:"M21 14H11",key:"1bme5i"}],["path",{d:"m15 10-4 4 4 4",key:"5dvupr"}]]),Ae=h("command",[["path",{d:"M15 6v12a3 3 0 1 0 3-3H6a3 3 0 1 0 3 3V6a3 3 0 1 0-3 3h12a3 3 0 1 0-3-3",key:"11bfej"}]]),Se=h("diamond-plus",[["path",{d:"M12 8v8",key:"napkw2"}],["path",{d:"M2.7 10.3a2.41 2.41 0 0 0 0 3.41l7.59 7.59a2.41 2.41 0 0 0 3.41 0l7.59-7.59a2.41 2.41 0 0 0 0-3.41L13.7 2.71a2.41 2.41 0 0 0-3.41 0z",key:"1ey20j"}],["path",{d:"M8 12h8",key:"1wcyev"}]]),da=h("fast-forward",[["path",{d:"M12 6a2 2 0 0 1 3.414-1.414l6 6a2 2 0 0 1 0 2.828l-6 6A2 2 0 0 1 12 18z",key:"b19h5q"}],["path",{d:"M2 6a2 2 0 0 1 3.414-1.414l6 6a2 2 0 0 1 0 2.828l-6 6A2 2 0 0 1 2 18z",key:"h7h5ge"}]]),ca=h("files",[["path",{d:"M15 2h-4a2 2 0 0 0-2 2v11a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V8",key:"14sh0y"}],["path",{d:"M16.706 2.706A2.4 2.4 0 0 0 15 2v5a1 1 0 0 0 1 1h5a2.4 2.4 0 0 0-.706-1.706z",key:"1970lx"}],["path",{d:"M5 7a2 2 0 0 0-2 2v11a2 2 0 0 0 2 2h8a2 2 0 0 0 1.732-1",key:"l4dndm"}]]),ha=h("keyboard",[["path",{d:"M10 8h.01",key:"1r9ogq"}],["path",{d:"M12 12h.01",key:"1mp3jc"}],["path",{d:"M14 8h.01",key:"1primd"}],["path",{d:"M16 12h.01",key:"1l6xoz"}],["path",{d:"M18 8h.01",key:"emo2bl"}],["path",{d:"M6 8h.01",key:"x9i8wu"}],["path",{d:"M7 16h10",key:"wp8him"}],["path",{d:"M8 12h.01",key:"czm47f"}],["rect",{width:"20",height:"16",x:"2",y:"4",rx:"2",key:"18n3k1"}]]),Ne=h("layout-template",[["rect",{width:"18",height:"7",x:"3",y:"3",rx:"1",key:"f1a2em"}],["rect",{width:"9",height:"7",x:"3",y:"14",rx:"1",key:"jqznyg"}],["rect",{width:"5",height:"7",x:"16",y:"14",rx:"1",key:"q5h2i8"}]]),pa=h("list",[["path",{d:"M3 5h.01",key:"18ugdj"}],["path",{d:"M3 12h.01",key:"nlz23k"}],["path",{d:"M3 19h.01",key:"noohij"}],["path",{d:"M8 5h13",key:"1pao27"}],["path",{d:"M8 12h13",key:"1za7za"}],["path",{d:"M8 19h13",key:"m83p4d"}]]),ma=h("panel-left",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M9 3v18",key:"fh3hqa"}]]),De=h("presentation",[["path",{d:"M2 3h20",key:"91anmk"}],["path",{d:"M21 3v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V3",key:"2k9sn8"}],["path",{d:"m7 21 5-5 5 5",key:"bip4we"}]]),ua=h("share-2",[["circle",{cx:"18",cy:"5",r:"3",key:"gq8acd"}],["circle",{cx:"6",cy:"12",r:"3",key:"w7nqdw"}],["circle",{cx:"18",cy:"19",r:"3",key:"1xt0gg"}],["line",{x1:"8.59",x2:"15.42",y1:"13.51",y2:"17.49",key:"47mynk"}],["line",{x1:"15.41",x2:"8.59",y1:"6.51",y2:"10.49",key:"1n3mei"}]]),fa=h("square-power",[["path",{d:"M12 7v4",key:"xawao1"}],["path",{d:"M7.998 9.003a5 5 0 1 0 8-.005",key:"1pek45"}],["rect",{x:"3",y:"3",width:"18",height:"18",rx:"2",key:"h1oib"}]]),Pe=h("undo-2",[["path",{d:"M9 14 4 9l5-5",key:"102s5s"}],["path",{d:"M4 9h10.5a5.5 5.5 0 0 1 5.5 5.5a5.5 5.5 0 0 1-5.5 5.5H11",key:"f3b9sd"}]]),Ie=W(),ne=de($e(),1),a=de(ht(),1),U="https://static.marimo.app";const ya=e=>{let t=(0,Ie.c)(25),{onClose:n}=e,[o,l]=(0,ne.useState)(""),{exportAsHTML:r}=I(),s=`${o}-${Math.random().toString(36).slice(2,6)}`,i=`${U}/static/${s}`,d;t[0]!==r||t[1]!==n||t[2]!==s?(d=async v=>{v.preventDefault(),n();let A=await r({download:!1,includeCode:!0,files:mt.INSTANCE.filenames()}),z=C({title:"Uploading static notebook...",description:"Please wait."});await fetch(`${U}/api/static`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({html:A,path:s})}).catch(()=>{z.dismiss(),C({title:"Error uploading static page",description:(0,a.jsxs)("div",{children:["Please try again later. If the problem persists, please file a bug report on"," ",(0,a.jsx)("a",{href:_.issuesPage,target:"_blank",className:"underline",children:"GitHub"}),"."]})})}),z.dismiss(),C({title:"Static page uploaded!",description:(0,a.jsxs)("div",{children:["The URL has been copied to your clipboard.",(0,a.jsx)("br",{}),"You can share it with anyone."]})})},t[0]=r,t[1]=n,t[2]=s,t[3]=d):d=t[3];let p;t[4]===Symbol.for("react.memo_cache_sentinel")?(p=(0,a.jsx)(Jt,{children:"Share static notebook"}),t[4]=p):p=t[4];let w;t[5]===Symbol.for("react.memo_cache_sentinel")?(w=(0,a.jsxs)(Gt,{children:[p,(0,a.jsxs)(Zt,{children:["You can publish a static, non-interactive version of this notebook to the public web. We will create a link for you that lives on"," ",(0,a.jsx)("a",{href:U,target:"_blank",children:U}),"."]})]}),t[5]=w):w=t[5];let g;t[6]===Symbol.for("react.memo_cache_sentinel")?(g=v=>{l(v.target.value.toLowerCase().replaceAll(/\s/g,"-").replaceAll(/[^\da-z-]/g,""))},t[6]=g):g=t[6];let m;t[7]===o?m=t[8]:(m=(0,a.jsx)(Rt,{"data-testid":"slug-input",id:"slug",autoFocus:!0,value:o,placeholder:"Notebook slug",onChange:g,required:!0,autoComplete:"off"}),t[7]=o,t[8]=m);let u;t[9]===i?u=t[10]:(u=(0,a.jsxs)("div",{className:"font-semibold text-sm text-muted-foreground gap-2 flex flex-col",children:["Anyone will be able to access your notebook at this URL:",(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)(ka,{text:i}),(0,a.jsx)("span",{className:"text-primary",children:i})]})]}),t[9]=i,t[10]=u);let f;t[11]!==m||t[12]!==u?(f=(0,a.jsxs)("div",{className:"flex flex-col gap-6 py-4",children:[m,u]}),t[11]=m,t[12]=u,t[13]=f):f=t[13];let y;t[14]===n?y=t[15]:(y=(0,a.jsx)(ae,{"data-testid":"cancel-share-static-notebook-button",variant:"secondary",onClick:n,children:"Cancel"}),t[14]=n,t[15]=y);let k;t[16]===i?k=t[17]:(k=(0,a.jsx)(ae,{"data-testid":"share-static-notebook-button","aria-label":"Save",variant:"default",type:"submit",onClick:async()=>{await $(i)},children:"Create"}),t[16]=i,t[17]=k);let b;t[18]!==y||t[19]!==k?(b=(0,a.jsxs)(Kt,{children:[y,k]}),t[18]=y,t[19]=k,t[20]=b):b=t[20];let j;return t[21]!==d||t[22]!==b||t[23]!==f?(j=(0,a.jsx)(Xt,{className:"w-fit",children:(0,a.jsxs)("form",{onSubmit:d,children:[w,f,b]})}),t[21]=d,t[22]=b,t[23]=f,t[24]=j):j=t[24],j};var ka=e=>{let t=(0,Ie.c)(8),[n,o]=ne.useState(!1),l;t[0]===e.text?l=t[1]:(l=pt.stopPropagation(async p=>{p.preventDefault(),await $(e.text),o(!0),setTimeout(()=>o(!1),2e3)}),t[0]=e.text,t[1]=l);let r=l,s;t[2]===Symbol.for("react.memo_cache_sentinel")?(s=(0,a.jsx)(Wt,{size:14,strokeWidth:1.5}),t[2]=s):s=t[2];let i;t[3]===r?i=t[4]:(i=(0,a.jsx)(ae,{"data-testid":"copy-static-notebook-url-button",onClick:r,size:"xs",variant:"secondary",children:s}),t[3]=r,t[4]=i);let d;return t[5]!==n||t[6]!==i?(d=(0,a.jsx)($t,{content:"Copied!",open:n,children:i}),t[5]=n,t[6]=i,t[7]=d):d=t[7],d},ba=W();function xa(){let e=document.getElementsByClassName(ye.outputArea);for(let t of e){let n=t.getBoundingClientRect();if(n.bottom>0&&n.top<window.innerHeight){let o=te.findElement(t);if(!o){P.warn("Could not find HTMLCellId for visible output area",t);continue}return{cellId:te.parse(o.id)}}}return P.warn("No visible output area found for scroll anchor"),null}function wa(e){if(!e){P.warn("No scroll anchor provided to restore scroll position");return}let t=document.getElementById(te.create(e.cellId));if(!t){P.warn("Could not find cell element to restore scroll position",e.cellId);return}if(!t.querySelector(`.${ye.outputArea}`)){P.warn("Could not find output area to restore scroll position",e.cellId);return}t.scrollIntoView({block:"start",behavior:"auto"})}function Ee(){let e=(0,ba.c)(2),t=D(ze),n;return e[0]===t?n=e[1]:(n=()=>{let o=xa();t(l=>({mode:Ut(l.mode),cellAnchor:(o==null?void 0:o.cellId)??null})),requestAnimationFrame(()=>{requestAnimationFrame(()=>{wa(o)})})},e[0]=t,e[1]=n),n}const Te=Be(!1);var ga=W();const ja=()=>{let e=(0,ga.c)(7),{selectedLayout:t}=be(),{setLayoutView:n}=xe();if(ke()&&!ce("wasm_layouts"))return null;let o;e[0]===n?o=e[1]:(o=i=>n(i),e[0]=n,e[1]=o);let l;e[2]===Symbol.for("react.memo_cache_sentinel")?(l=(0,a.jsx)(wt,{className:"min-w-[110px] border-border bg-background","data-testid":"layout-select",children:(0,a.jsx)(yt,{placeholder:"Select a view"})}),e[2]=l):l=e[2];let r;e[3]===Symbol.for("react.memo_cache_sentinel")?(r=(0,a.jsx)(bt,{children:(0,a.jsxs)(xt,{children:[(0,a.jsx)(ft,{children:"View as"}),We.map(Ca)]})}),e[3]=r):r=e[3];let s;return e[4]!==t||e[5]!==o?(s=(0,a.jsxs)(gt,{"data-testid":"layout-select",value:t,onValueChange:o,children:[l,r]}),e[4]=t,e[5]=o,e[6]=s):s=e[6],s};function va(e){return(0,a.jsx)(He(e),{className:"h-4 w-4"})}function He(e){switch(e){case"vertical":return pa;case"grid":return It;case"slides":return De;default:return ot(e),Bt}}function Le(e){return ue(e)}function Ca(e){return(0,a.jsx)(kt,{value:e,children:(0,a.jsxs)("div",{className:"flex items-center gap-1.5 leading-5",children:[va(e),(0,a.jsx)("span",{children:Le(e)})]})},e)}var za=W();function Ma(e){let t=(0,za.c)(5),{openPrompt:n,closeModal:o}=oe(),{sendCopy:l}=I(),r;return t[0]!==o||t[1]!==n||t[2]!==l||t[3]!==e?(r=()=>{if(!e)return null;let s=Ge.guessDeliminator(e);n({title:"Copy notebook",description:"Enter a new filename for the notebook copy.",defaultValue:`_${me.basename(e)}`,confirmText:"Copy notebook",spellCheck:!1,onConfirm:i=>{let d=s.join(me.dirname(e),i);l({source:e,destination:d}).then(()=>{o(),C({title:"Notebook copied",description:"A copy of the notebook has been created."}),na(d)})}})},t[0]=o,t[1]=n,t[2]=l,t[3]=e,t[4]=r):r=t[4],r}const Wa=()=>{let{updateCellConfig:e}=pe(),{saveCellConfig:t}=I();return(0,ne.useCallback)(async()=>{let n=new Ze,o=he(),l=o.cellIds.inOrderIds,r={};for(let i of l){if(o.cellData[i]===void 0)continue;let{code:d,config:p}=o.cellData[i];p.hide_code||n.isSupported(d)&&(r[i]={hide_code:!0})}let s=fe.entries(r);if(s.length!==0){await t({configs:r});for(let[i,d]of s)e({cellId:i,config:d})}},[e])};var _a=W();function qe(){let e=(0,_a.c)(4),{openConfirm:t}=oe(),n=D(ct),{sendRestart:o}=I(),l;return e[0]!==t||e[1]!==o||e[2]!==n?(l=()=>{t({title:"Restart Kernel",description:"This will restart the Python kernel. You'll lose all data that's in memory. You will also lose any unsaved changes, so make sure to save your work before restarting.",variant:"destructive",confirmAction:(0,a.jsx)(Ft,{onClick:async()=>{n({state:rt.CLOSING}),await o(),Qt()},"aria-label":"Confirm Restart",children:"Restart"})})},e[0]=t,e[1]=o,e[2]=n,e[3]=l):l=e[3],l}var Aa=W(),E=e=>{e==null||e.preventDefault(),e==null||e.stopPropagation()};function Sa(){var se,re;let e=(0,Aa.c)(40),t=aa(),{openModal:n,closeModal:o}=oe(),{toggleApplication:l}=Qe(),{selectedPanel:r}=tt(),[s]=Oe(ze),i=ee(Yt),d=Wa(),[p]=st(),{updateCellConfig:w,undoDeleteCell:g,clearAllCellOutputs:m,addSetupCellIfDoesntExist:u,collapseAllCells:f,expandAllCells:y}=pe(),k=qe(),b=ta(),j=Ma(t),v=D(Te),A=D(it),z=D(lt),{exportAsMarkdown:Y,readCode:S,saveCellConfig:F,updateCellOutputs:G}=I(),J=ee(Xe),K=ee(et),{selectedLayout:X}=be(),{setLayoutView:Z}=xe(),T=Ee(),Q=ia(),H=((se=p.sharing)==null?void 0:se.html)??!0,L=((re=p.sharing)==null?void 0:re.wasm)??!0,q;e[0]===Symbol.for("react.memo_cache_sentinel")?(q=ce("server_side_pdf_export"),e[0]=q):q=e[0];let le=q,R=le||s.mode==="present",Re=Fa,V;e[1]===Symbol.for("react.memo_cache_sentinel")?(V=(0,a.jsx)(_t,{size:14,strokeWidth:1.5}),e[1]=V):V=e[1];let O;e[2]===Symbol.for("react.memo_cache_sentinel")?(O=(0,a.jsx)(we,{size:14,strokeWidth:1.5}),e[2]=O):O=e[2];let M;e[3]===t?M=e[4]:(M=async()=>{if(!t){ie();return}await ge({filename:t,includeCode:!0})},e[3]=t,e[4]=M);let B;return e[5]!==u||e[6]!==K||e[7]!==m||e[8]!==o||e[9]!==f||e[10]!==j||e[11]!==y||e[12]!==Y||e[13]!==t||e[14]!==J||e[15]!==d||e[16]!==i||e[17]!==n||e[18]!==R||e[19]!==S||e[20]!==k||e[21]!==b||e[22]!==F||e[23]!==X||e[24]!==r||e[25]!==v||e[26]!==z||e[27]!==Z||e[28]!==A||e[29]!==H||e[30]!==L||e[31]!==M||e[32]!==Q||e[33]!==l||e[34]!==T||e[35]!==g||e[36]!==w||e[37]!==G||e[38]!==s.mode?(B=[{icon:V,label:"Download",handle:E,dropdown:[{icon:O,label:"Download as HTML",handle:M},{icon:(0,a.jsx)(we,{size:14,strokeWidth:1.5}),label:"Download as HTML (exclude code)",handle:async()=>{if(!t){ie();return}await ge({filename:t,includeCode:!1})}},{icon:(0,a.jsx)(oa,{strokeWidth:1.5,style:{width:14,height:14}}),label:"Download as Markdown",handle:async()=>{let c=await Y({download:!1});ve(new Blob([c],{type:"text/plain"}),Ce.toMarkdown(document.title))}},{icon:(0,a.jsx)(ut,{size:14,strokeWidth:1.5}),label:"Download Python code",handle:async()=>{let c=await S();ve(new Blob([c.contents],{type:"text/plain"}),Ce.toPY(document.title))}},{divider:!0,icon:(0,a.jsx)(Lt,{size:14,strokeWidth:1.5}),label:"Download as PNG",disabled:s.mode!=="present",tooltip:s.mode==="present"?void 0:(0,a.jsxs)("span",{children:["Only available in app view. ",(0,a.jsx)("br",{}),"Toggle with: ",Me("global.hideCode",!1)]}),handle:Ya},{icon:(0,a.jsx)(Nt,{size:14,strokeWidth:1.5}),label:"Download as PDF",disabled:!R,tooltip:R?void 0:(0,a.jsxs)("span",{children:["Only available in app view. ",(0,a.jsx)("br",{}),"Toggle with: ",Me("global.hideCode",!1)]}),handle:async()=>{if(le){if(!t){ie();return}await vt("Downloading PDF...",async N=>{await la({takeScreenshots:()=>Q({progress:N,snappy:!1}),updateCellOutputs:G}),await Ct({filename:t,webpdf:!1})});return}let c=new Event("export-beforeprint"),x=new Event("export-afterprint");(function(){window.dispatchEvent(c),setTimeout(Ua,0),setTimeout(()=>window.dispatchEvent(x),0)})()}}]},{icon:(0,a.jsx)(ua,{size:14,strokeWidth:1.5}),label:"Share",handle:E,hidden:!H&&!L,dropdown:[{icon:(0,a.jsx)(Tt,{size:14,strokeWidth:1.5}),label:"Publish HTML to web",hidden:!H,handle:async()=>{n((0,a.jsx)(ya,{onClose:o}))}},{icon:(0,a.jsx)(qt,{size:14,strokeWidth:1.5}),label:"Create WebAssembly link",hidden:!L,handle:async()=>{await $(ea({code:(await S()).contents})),C({title:"Copied",description:"Link copied to clipboard."})}}]},{icon:(0,a.jsx)(ma,{size:14,strokeWidth:1.5}),label:"Helper panel",redundant:!0,handle:E,dropdown:Ke.flatMap(c=>{let{type:x,Icon:N,hidden:Ve}=c;return Ve?[]:{label:ue(x),rightElement:Re(r===x),icon:(0,a.jsx)(N,{size:14,strokeWidth:1.5}),handle:()=>l(x)}})},{icon:(0,a.jsx)(De,{size:14,strokeWidth:1.5}),label:"Present as",handle:E,dropdown:[{icon:s.mode==="present"?(0,a.jsx)(Ot,{size:14,strokeWidth:1.5}):(0,a.jsx)(Ne,{size:14,strokeWidth:1.5}),label:"Toggle app view",hotkey:"global.hideCode",handle:()=>{T()}},...We.map((c,x)=>{let N=He(c);return{divider:x===0,label:Le(c),icon:(0,a.jsx)(N,{size:14,strokeWidth:1.5}),rightElement:(0,a.jsx)("div",{className:"w-8 flex justify-end",children:X===c&&(0,a.jsx)(je,{size:14})}),handle:()=>{Z(c),s.mode==="edit"&&T()}}})]},{icon:(0,a.jsx)(ca,{size:14,strokeWidth:1.5}),label:"Duplicate notebook",hidden:!t||ke(),handle:j},{icon:(0,a.jsx)(_e,{size:14,strokeWidth:1.5}),label:"Copy code to clipboard",hidden:!t,handle:async()=>{await $((await S()).contents),C({title:"Copied",description:"Code copied to clipboard."})}},{icon:(0,a.jsx)(Mt,{size:14,strokeWidth:1.5}),label:"Enable all cells",hidden:!J||i,handle:async()=>{let c=at(he());await F({configs:fe.fromEntries(c.map($a))});for(let x of c)w({cellId:x,config:{disabled:!1}})}},{divider:!0,icon:(0,a.jsx)(Se,{size:14,strokeWidth:1.5}),label:"Add setup cell",handle:()=>{u({})}},{icon:(0,a.jsx)(Ye,{size:14,strokeWidth:1.5}),label:"Add database connection",handle:()=>{n((0,a.jsx)(nt,{onClose:o}))}},{icon:(0,a.jsx)(Pe,{size:14,strokeWidth:1.5}),label:"Undo cell deletion",hidden:!K||i,handle:()=>{g()}},{icon:(0,a.jsx)(fa,{size:14,strokeWidth:1.5}),label:"Restart kernel",variant:"danger",handle:k},{icon:(0,a.jsx)(da,{size:14,strokeWidth:1.5}),label:"Re-run all cells",redundant:!0,hotkey:"global.runAll",handle:async()=>{b()}},{icon:(0,a.jsx)(Fe,{size:14,strokeWidth:1.5}),label:"Clear all outputs",redundant:!0,handle:()=>{m()}},{icon:(0,a.jsx)(At,{size:14,strokeWidth:1.5}),label:"Hide all markdown code",handle:d,redundant:!0},{icon:(0,a.jsx)(ra,{size:14,strokeWidth:1.5}),label:"Collapse all sections",hotkey:"global.collapseAllSections",handle:f,redundant:!0},{icon:(0,a.jsx)(sa,{size:14,strokeWidth:1.5}),label:"Expand all sections",hotkey:"global.expandAllSections",handle:y,redundant:!0},{divider:!0,icon:(0,a.jsx)(Ae,{size:14,strokeWidth:1.5}),label:"Command palette",hotkey:"global.commandPalette",handle:()=>v(Ba)},{icon:(0,a.jsx)(ha,{size:14,strokeWidth:1.5}),label:"Keyboard shortcuts",hotkey:"global.showHelp",handle:()=>z(Oa)},{icon:(0,a.jsx)(Vt,{size:14,strokeWidth:1.5}),label:"User settings",handle:()=>A(Va),redundant:!0},{icon:(0,a.jsx)(zt,{size:14,strokeWidth:1.5}),label:"Resources",handle:E,dropdown:[{icon:(0,a.jsx)(Ue,{size:14,strokeWidth:1.5}),label:"Documentation",handle:Ra},{icon:(0,a.jsx)(Dt,{size:14,strokeWidth:1.5}),label:"GitHub",handle:qa},{icon:(0,a.jsx)(Pt,{size:14,strokeWidth:1.5}),label:"Discord Community",handle:La},{icon:(0,a.jsx)(Et,{size:14,strokeWidth:1.5}),label:"YouTube",handle:Ha},{icon:(0,a.jsx)(Je,{size:14,strokeWidth:1.5}),label:"Changelog",handle:Ta}]},{divider:!0,icon:(0,a.jsx)(Ht,{size:14,strokeWidth:1.5}),label:"Return home",hidden:!location.search.includes("file"),handle:Ea},{icon:(0,a.jsx)(St,{size:14,strokeWidth:1.5}),label:"New notebook",hidden:!location.search.includes("file"),handle:Ia}].filter(Pa).map(Na),e[5]=u,e[6]=K,e[7]=m,e[8]=o,e[9]=f,e[10]=j,e[11]=y,e[12]=Y,e[13]=t,e[14]=J,e[15]=d,e[16]=i,e[17]=n,e[18]=R,e[19]=S,e[20]=k,e[21]=b,e[22]=F,e[23]=X,e[24]=r,e[25]=v,e[26]=z,e[27]=Z,e[28]=A,e[29]=H,e[30]=L,e[31]=M,e[32]=Q,e[33]=l,e[34]=T,e[35]=g,e[36]=w,e[37]=G,e[38]=s.mode,e[39]=B):B=e[39],B}function Na(e){return e.dropdown?{...e,dropdown:e.dropdown.filter(Da)}:e}function Da(e){return!e.hidden}function Pa(e){return!e.hidden}function Ia(){let e=dt();window.open(e,"_blank")}function Ea(){let e=document.baseURI.split("?")[0];window.open(e,"_self")}function Ta(){window.open(_.releasesPage,"_blank")}function Ha(){window.open(_.youtube,"_blank")}function La(){window.open(_.discordLink,"_blank")}function qa(){window.open(_.githubPage,"_blank")}function Ra(){window.open(_.docsPage,"_blank")}function Va(e){return!e}function Oa(e){return!e}function Ba(e){return!e}function $a(e){return[e,{disabled:!1}]}function Ua(){return window.print()}async function Ya(){let e=document.getElementById("App");e&&await jt({element:e,filename:document.title})}function Fa(e){return(0,a.jsx)("div",{className:"w-8 flex justify-end",children:e&&(0,a.jsx)(je,{size:14})})}function ie(){C({title:"Error",description:"Notebooks must be named to be exported.",variant:"danger"})}export{Ee as a,Se as c,Te as i,Ae as l,qe as n,Pe as o,ja as r,Ne as s,Sa as t,_e as u};