@marimo-team/islands 0.23.10-dev57 → 0.23.10-dev60

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.
@@ -6,13 +6,13 @@ import { _ as Logger, c as Objects, g as cn, l as useEventListener, t as Button
6
6
  import { t as require_react } from "./react-DA-nE2FX.js";
7
7
  import { t as require_compiler_runtime } from "./compiler-runtime-CEbnTgxf.js";
8
8
  import { r as toast } from "./copy-UqRYxiOg.js";
9
- import { C as AccordionContent, D as ChatBubbleIcon, En as Trash2, Et as createVariableInfoElement, G as cellErrorsAtom, Gt as getTableType, In as ExternalLink, It as jotaiJsonStorage, Lt as variablesAtom, Mt as generateUUID, Nn as Info, P as base64ToDataURL, Pn as FileText, Rt as PluralWord, S as Accordion, T as AccordionTrigger, Tn as Wrench, Ut as allTablesAtom, V as renderHTML, Wt as dataSourceConnectionsAtom, X as notebookAtom, Zt as singleFacet, _ as Boosts, _n as atomWithStorage, b as AIContextProvider, c as Popover, d as PopoverTrigger, f as isOutputEmpty, h as DatasourceContextProvider, jn as LoaderCircle, kt as moveToEndOfEditor, n as Spinner, nn as ZodLocalStorage, qt as getRequestClient, r as MarkdownRenderer, sn as CellOutputId, t as toPng, u as PopoverContent, v as Sections, w as AccordionItem, x as AIContextRegistry, y as contextToXml, yn as Anchor2, yt as displayCellName, zn as CircleX } from "./html-to-image-BEeeScWH.js";
9
+ import { C as AccordionContent, D as ChatBubbleIcon, En as Trash2, Et as createVariableInfoElement, G as cellErrorsAtom, Gt as getTableType, In as ExternalLink, It as jotaiJsonStorage, Lt as variablesAtom, Mt as generateUUID, Nn as Info, P as base64ToDataURL, Pn as FileText, Rt as PluralWord, S as Accordion, T as AccordionTrigger, Tn as Wrench, Ut as allTablesAtom, V as renderHTML, Wt as dataSourceConnectionsAtom, X as notebookAtom, Zt as singleFacet, _ as Boosts, _n as atomWithStorage, b as AIContextProvider, c as Popover, d as PopoverTrigger, f as isOutputEmpty, h as DatasourceContextProvider, jn as LoaderCircle, kt as moveToEndOfEditor, n as Spinner, nn as ZodLocalStorage, qt as getRequestClient, r as MarkdownRenderer, sn as CellOutputId, t as toPng, u as PopoverContent, v as Sections, w as AccordionItem, x as AIContextRegistry, y as contextToXml, yn as Anchor2, yt as displayCellName, zn as CircleX } from "./html-to-image-DNiPS5a-.js";
10
10
  import "./chunk-5FQGJX7Z-BbqSm5gU.js";
11
11
  import { u as createLucideIcon } from "./dist-Dk6PV_d3.js";
12
12
  import { C as logNever, I as X, R as ChevronDown, t as Strings } from "./strings-J57tzLr3.js";
13
13
  import { C as DropdownMenuTrigger, a as NumberField, f as DropdownMenu, h as DropdownMenuItem, p as DropdownMenuContent, r as Input } from "./input-OdWHkobi.js";
14
14
  import { p as isUrl, v as CircleQuestionMark } from "./toDate-d8RCRrRd.js";
15
- import { a as MarimoIncomingMessageEvent, d as Square, f as File$1, n as blobToString, t as processOutput, u as deserializeBlob } from "./process-output-CO5geDQU.js";
15
+ import { a as MarimoIncomingMessageEvent, d as Square, f as File$1, n as blobToString, t as processOutput, u as deserializeBlob } from "./process-output-CmEyGIJM.js";
16
16
  import "./react-dom-BTJzcVJ9.js";
17
17
  import { t as require_jsx_runtime } from "./jsx-runtime-DebpN0FN.js";
18
18
  import { A as looseObject, B as union, C as any, D as discriminatedUnion, E as custom, H as safeParseAsync, I as record, L as strictObject, M as never, N as number, O as lazy, P as object$1, R as string, S as _null, T as boolean, V as unknown, W as toJSONSchema, b as _enum, k as literal, w as array$1, x as _instanceof } from "./zod-aLSua2NL.js";
@@ -6,7 +6,7 @@ import { _ as Logger, c as Objects, g as cn, h as Events, m as useComposedRefs,
6
6
  import { t as require_react } from "./react-DA-nE2FX.js";
7
7
  import { t as require_compiler_runtime } from "./compiler-runtime-CEbnTgxf.js";
8
8
  import { n as Copy, r as toast, t as copyToClipboard } from "./copy-UqRYxiOg.js";
9
- import { $t as extractAllTracebackInfo, A as ChevronRightIcon, An as Minus, At as goToCellLine, Bt as DATA_TYPE_ICON, C as AccordionContent, Ct as Checkbox, En as Trash2, Fn as Eye, Ft as adaptForLocalStorage, Hn as esm_default, I as base64ToUint8Array, In as ExternalLink, It as jotaiJsonStorage, M as PinLeftIcon, N as PinRightIcon, Nn as Info, Nt as useChromeActions, O as CheckIcon, Pn as FileText, Qt as elementContainsMarimoCellFile, R as extractBase64FromDataURL, Rt as PluralWord, S as Accordion, T as AccordionTrigger, Tn as Wrench, Un as import_lib, V as renderHTML, Vn as Braces, Vt as getDataTypeColor, X as notebookAtom, Yt as useRequestClient, _n as atomWithStorage, _t as DATA_CELL_ID, bn as Close$1, c as Popover, cn as HTMLCellId, d as PopoverTrigger, dt as viewStateAtom, en as getTracebackInfo, et as useCellActions, ft as outputIsLoading, g as getDatasourceContext, gt as sanitizeHtml, hn as jsonToMarkdown, j as DotFilledIcon, jn as LoaderCircle, kn as NotebookPen, l as PopoverClose, ln as SCRATCH_CELL_ID, lt as kioskModeAtom, m as useExpandedOutput, mn as jsonParseWithSpecialChar, n as Spinner, nt as useCellNames, ot as AnsiUp, q as getCellEditorView, qt as getRequestClient, r as MarkdownRenderer, rn as filenameAtom, sn as CellOutputId, t as toPng, tt as useCellIds, u as PopoverContent, ut as useInstallAllowed, vt as getCellDomProps, w as AccordionItem, yt as displayCellName, z as isDataURLString, zn as CircleX, __tla as __tla_0 } from "./html-to-image-BEeeScWH.js";
9
+ import { $t as extractAllTracebackInfo, A as ChevronRightIcon, An as Minus, At as goToCellLine, Bt as DATA_TYPE_ICON, C as AccordionContent, Ct as Checkbox, En as Trash2, Fn as Eye, Ft as adaptForLocalStorage, Hn as esm_default, I as base64ToUint8Array, In as ExternalLink, It as jotaiJsonStorage, M as PinLeftIcon, N as PinRightIcon, Nn as Info, Nt as useChromeActions, O as CheckIcon, Pn as FileText, Qt as elementContainsMarimoCellFile, R as extractBase64FromDataURL, Rt as PluralWord, S as Accordion, T as AccordionTrigger, Tn as Wrench, Un as import_lib, V as renderHTML, Vn as Braces, Vt as getDataTypeColor, X as notebookAtom, Yt as useRequestClient, _n as atomWithStorage, _t as DATA_CELL_ID, bn as Close$1, c as Popover, cn as HTMLCellId, d as PopoverTrigger, dt as viewStateAtom, en as getTracebackInfo, et as useCellActions, ft as outputIsLoading, g as getDatasourceContext, gt as sanitizeHtml, hn as jsonToMarkdown, j as DotFilledIcon, jn as LoaderCircle, kn as NotebookPen, l as PopoverClose, ln as SCRATCH_CELL_ID, lt as kioskModeAtom, m as useExpandedOutput, mn as jsonParseWithSpecialChar, n as Spinner, nt as useCellNames, ot as AnsiUp, q as getCellEditorView, qt as getRequestClient, r as MarkdownRenderer, rn as filenameAtom, sn as CellOutputId, t as toPng, tt as useCellIds, u as PopoverContent, ut as useInstallAllowed, vt as getCellDomProps, w as AccordionItem, yt as displayCellName, z as isDataURLString, zn as CircleX, __tla as __tla_0 } from "./html-to-image-DNiPS5a-.js";
10
10
  import { o as useSize, u as createLucideIcon } from "./dist-Dk6PV_d3.js";
11
11
  import { c as Calendar, i as createReducerAndAtoms, r as Badge } from "./useLifecycle-00mO3OSS.js";
12
12
  import { a as ListFilter, i as Table$1, n as $fb18d541ea1ad717$export$ad991b66133851cf, o as ChartPie, r as $5a387cc49350e6db$export$722debc0e56fea39, t as $896ba0a80a8f4d36$export$85fd5fdf27bacc79 } from "./useDateFormatter-QB-3MpYr.js";
@@ -35981,7 +35981,7 @@ ${d}`,
35981
35981
  return Logger.warn("Failed to get version from mount config"), null;
35982
35982
  }
35983
35983
  }
35984
- marimoVersionAtom = atom(getVersionFromMountConfig() || "0.23.10-dev57");
35984
+ marimoVersionAtom = atom(getVersionFromMountConfig() || "0.23.10-dev60");
35985
35985
  showCodeInRunModeAtom = atom(true);
35986
35986
  atom(null);
35987
35987
  var import_compiler_runtime = require_compiler_runtime();
@@ -28096,7 +28096,7 @@ ${n.sqlString}
28096
28096
  name: a.name,
28097
28097
  config: a.config,
28098
28098
  status: o ? o.status : "idle",
28099
- getEditorView: () => s.editorView,
28099
+ getEditorView: () => s.editorViewOrNull,
28100
28100
  hasOutput: (o == null ? void 0 : o.output) != null,
28101
28101
  hasConsoleOutput: (o == null ? void 0 : o.consoleOutputs) != null
28102
28102
  };
package/dist/main.js CHANGED
@@ -22,17 +22,17 @@ import { _ as Logger, c as Objects, g as cn, h as Events, i as NOT_SET, l as use
22
22
  import { t as require_react } from "./react-DA-nE2FX.js";
23
23
  import { t as require_compiler_runtime } from "./compiler-runtime-CEbnTgxf.js";
24
24
  import { n as Copy, r as toast, t as copyToClipboard } from "./copy-UqRYxiOg.js";
25
- import { $ as reducer, B as safeExtractSetUIElementMessageBuffers, Bn as CircleAlert, Bt as DATA_TYPE_ICON, C as AccordionContent, Cn as Root2$1, Ct as Checkbox, Dn as Table2, Dt as PathBuilder, E as BorderAllIcon, En as Trash2, F as base64ToDataView, Fn as Eye, H as getMarimoExportContext, Ht as require_client, It as jotaiJsonStorage, J as getCellNames, Jt as requestClientAtom, K as createActions, Kt as convertStatsName, L as dataViewToBase64, Ln as Database, Mn as Layers, Mt as generateUUID, Nn as Info, On as PaintRoller, Ot as Paths, Pn as FileText, Pt as repl, Q as numColumnsAtom, Rn as Columns2, S as Accordion, Sn as Item$1, St as normalizeName, T as AccordionTrigger, Tt as MarkdownLanguageAdapter, U as hasTrustedExportContext, V as renderHTML, Vn as Braces, W as hasRunAnyCellAtom, X as notebookAtom, Xt as isUninstantiated, Y as hasOnlyOneCellAtom, Yt as useRequestClient, Z as notebookOutline, _n as atomWithStorage, a as useCellFocusActions, an as parseDataset, bt as getValidName, cn as HTMLCellId, ct as initialModeAtom, dn as findCellId, et as useCellActions, f as isOutputEmpty, fn as OBJECT_ID_ATTR, ft as outputIsLoading, gn as atomWithReducer, ht as headingToIdentifier, i as LazyAnyLanguageCodeMirror, in as parseAttrValue, jn as LoaderCircle, jt as DeferredRequestRegistry, k as ChevronDownIcon, lt as kioskModeAtom, mn as jsonParseWithSpecialChar, mt as isErrorMime, n as Spinner, o as useLastFocusedCellId, on as parseInitialValue, p as useExpandedConsoleOutput, pn as RANDOM_ID_ATTR, pt as outputIsStale, qt as getRequestClient, rt as createCell, s as maybeAddAltairImport, st as getInitialAppMode, tn as NotebookScopedLocalStorage, tt as useCellIds, un as UIElementId, vn as selectAtom, w as AccordionItem, wn as Trigger2, wt as customPythonLanguageSupport, xn as Content2, xt as isInternalCellName, zt as PluralWords, __tla as __tla_0 } from "./html-to-image-BEeeScWH.js";
25
+ import { $ as reducer, B as safeExtractSetUIElementMessageBuffers, Bn as CircleAlert, Bt as DATA_TYPE_ICON, C as AccordionContent, Cn as Root2$1, Ct as Checkbox, Dn as Table2, Dt as PathBuilder, E as BorderAllIcon, En as Trash2, F as base64ToDataView, Fn as Eye, H as getMarimoExportContext, Ht as require_client, It as jotaiJsonStorage, J as getCellNames, Jt as requestClientAtom, K as createActions, Kt as convertStatsName, L as dataViewToBase64, Ln as Database, Mn as Layers, Mt as generateUUID, Nn as Info, On as PaintRoller, Ot as Paths, Pn as FileText, Pt as repl, Q as numColumnsAtom, Rn as Columns2, S as Accordion, Sn as Item$1, St as normalizeName, T as AccordionTrigger, Tt as MarkdownLanguageAdapter, U as hasTrustedExportContext, V as renderHTML, Vn as Braces, W as hasRunAnyCellAtom, X as notebookAtom, Xt as isUninstantiated, Y as hasOnlyOneCellAtom, Yt as useRequestClient, Z as notebookOutline, _n as atomWithStorage, a as useCellFocusActions, an as parseDataset, bt as getValidName, cn as HTMLCellId, ct as initialModeAtom, dn as findCellId, et as useCellActions, f as isOutputEmpty, fn as OBJECT_ID_ATTR, ft as outputIsLoading, gn as atomWithReducer, ht as headingToIdentifier, i as LazyAnyLanguageCodeMirror, in as parseAttrValue, jn as LoaderCircle, jt as DeferredRequestRegistry, k as ChevronDownIcon, lt as kioskModeAtom, mn as jsonParseWithSpecialChar, mt as isErrorMime, n as Spinner, o as useLastFocusedCellId, on as parseInitialValue, p as useExpandedConsoleOutput, pn as RANDOM_ID_ATTR, pt as outputIsStale, qt as getRequestClient, rt as createCell, s as maybeAddAltairImport, st as getInitialAppMode, tn as NotebookScopedLocalStorage, tt as useCellIds, un as UIElementId, vn as selectAtom, w as AccordionItem, wn as Trigger2, wt as customPythonLanguageSupport, xn as Content2, xt as isInternalCellName, zt as PluralWords, __tla as __tla_0 } from "./html-to-image-DNiPS5a-.js";
26
26
  import { __tla as __tla_1 } from "./chunk-5FQGJX7Z-BbqSm5gU.js";
27
27
  import { o as useSize, s as Root$1, u as createLucideIcon } from "./dist-Dk6PV_d3.js";
28
28
  import { A as SquareFunction, C as DEFAULT_COLOR_SCHEME, D as SCALE_TYPE_DESCRIPTIONS, E as EMPTY_VALUE$1, O as TIME_UNIT_DESCRIPTIONS, S as DEFAULT_AGGREGATION, T as DEFAULT_TIME_UNIT, _ as AGGREGATION_TYPE_DESCRIPTIONS, a as AGGREGATION_FNS$1, b as COLOR_SCHEMES, c as COLOR_BY_FIELDS, d as NONE_VALUE, f as SELECTABLE_DATA_TYPES, g as TIME_UNITS, h as STRING_AGGREGATION_FNS, i as convertDataTypeToSelectable, j as ChartColumn, k as escapeFieldName, l as COMBINED_TIME_UNITS, m as SORT_TYPES, n as createSpecWithoutData, o as BIN_AGGREGATION, p as SINGLE_TIME_UNITS, r as isFieldSet, s as CHART_TYPES, t as augmentSpecWithData, u as ChartType, v as AGGREGATION_TYPE_ICON, w as DEFAULT_MAX_BINS_FACET, x as COUNT_FIELD, y as CHART_TYPE_ICON } from "./spec-X7FwLJni.js";
29
- import { $ as contextAwarePanelOpen, $t as $fae977aafc393c5c$export$6b862160d295c8e, A as prettifyRowCount, At as SELECT_COLUMN_ID, B as DatePicker, Bt as TabsContent, C as downloadSizeLimitAtom, Ct as DelayMount, D as ErrorState, Dt as loadTableAndRawData, E as EmptyState, Et as getPageIndexForRow, F as ContextMenuSeparator, Ft as Maps, G as CommandEmpty, Gt as ChartLoadingState, H as Combobox, Ht as TabsTrigger, I as ContextMenuTrigger, It as dateToLocalISODate, J as CommandList, Jt as RenderTextWithLinks, K as CommandInput, Kt as LazyVegaEmbed, L as useInternalStateWithSync, Lt as dateToLocalISODateTime, M as ContextMenu, Mt as toFieldTypes, N as ContextMenuContent, Nt as getMimeValues, O as LoadingState, Ot as loadTableData, P as ContextMenuItem, Pt as isNullishFilter, Q as PANEL_TYPES, Qt as $fae977aafc393c5c$export$588937bcd60ade55, R as useSelectList, Rt as dateToLocalISOTime, S as Filenames, St as ColumnChartSpecModel, T as ColumnPreviewContainer, Tt as usePrevious$1, U as ComboboxItem, Ut as ChartErrorState, V as DateRangePicker, Vt as TabsList, W as Command, Wt as ChartInfoState, X as smartMatch, Xt as HtmlOutput, Y as CommandSeparator, Yt as Kbd, Z as ContextAwarePanelItem, Zt as EmotionCacheProvider, _ as ADD_PRINTING_CLASS, _t as NAMELESS_COLUMN_PREFIX, an as Ellipsis, at as Toggle, b as downloadHTMLAsImage, bt as renderCellValue, c as Slide, cn as ChevronsUpDown, d as RadioGroupItem, dn as ChevronsDownUp, dt as Table, en as TextWrap, et as contextAwarePanelOwner, f as JsonOutput, fn as ChevronLeft, ft as TableBody, g as InstallPackageButton, gt as TableRow, h as DataTable, ht as TableHeader, it as slotsController, j as getColumnCountForDisplay, jt as TOO_MANY_ROWS, k as prettifyRowColumnCount, kt as INDEX_COLUMN_NAME, l as Switch, ln as ChevronsRight, lt as Fill, m as OutputRenderer, mt as TableHead, n as marimoVersionAtom, nn as Funnel, nt as isCellAwareAtom, o as SLIDE_TYPE_OPTIONS_BY_VALUE, on as Download, p as OutputArea, pn as ArrowDownWideNarrow, pt as TableCell, q as CommandItem, qt as useOverflowDetection, r as showCodeInRunModeAtom, rn as EyeOff, rt as SlotNames, sn as Code, t as useNotebookCodeAvailable, tn as GripHorizontal, tt as contextAwarePanelType, u as RadioGroup, un as ChevronsLeft, ut as Provider$1, v as downloadBlob, vt as generateColumns, w as ColumnName, wt as useIntersectionObserver, x as Progress, xt as ColumnChartContext, y as downloadByURL, yt as inferFieldTypes, z as CompactChipRow, zt as Tabs, __tla as __tla_2 } from "./code-visibility-BwMX56Aa.js";
29
+ import { $ as contextAwarePanelOpen, $t as $fae977aafc393c5c$export$6b862160d295c8e, A as prettifyRowCount, At as SELECT_COLUMN_ID, B as DatePicker, Bt as TabsContent, C as downloadSizeLimitAtom, Ct as DelayMount, D as ErrorState, Dt as loadTableAndRawData, E as EmptyState, Et as getPageIndexForRow, F as ContextMenuSeparator, Ft as Maps, G as CommandEmpty, Gt as ChartLoadingState, H as Combobox, Ht as TabsTrigger, I as ContextMenuTrigger, It as dateToLocalISODate, J as CommandList, Jt as RenderTextWithLinks, K as CommandInput, Kt as LazyVegaEmbed, L as useInternalStateWithSync, Lt as dateToLocalISODateTime, M as ContextMenu, Mt as toFieldTypes, N as ContextMenuContent, Nt as getMimeValues, O as LoadingState, Ot as loadTableData, P as ContextMenuItem, Pt as isNullishFilter, Q as PANEL_TYPES, Qt as $fae977aafc393c5c$export$588937bcd60ade55, R as useSelectList, Rt as dateToLocalISOTime, S as Filenames, St as ColumnChartSpecModel, T as ColumnPreviewContainer, Tt as usePrevious$1, U as ComboboxItem, Ut as ChartErrorState, V as DateRangePicker, Vt as TabsList, W as Command, Wt as ChartInfoState, X as smartMatch, Xt as HtmlOutput, Y as CommandSeparator, Yt as Kbd, Z as ContextAwarePanelItem, Zt as EmotionCacheProvider, _ as ADD_PRINTING_CLASS, _t as NAMELESS_COLUMN_PREFIX, an as Ellipsis, at as Toggle, b as downloadHTMLAsImage, bt as renderCellValue, c as Slide, cn as ChevronsUpDown, d as RadioGroupItem, dn as ChevronsDownUp, dt as Table, en as TextWrap, et as contextAwarePanelOwner, f as JsonOutput, fn as ChevronLeft, ft as TableBody, g as InstallPackageButton, gt as TableRow, h as DataTable, ht as TableHeader, it as slotsController, j as getColumnCountForDisplay, jt as TOO_MANY_ROWS, k as prettifyRowColumnCount, kt as INDEX_COLUMN_NAME, l as Switch, ln as ChevronsRight, lt as Fill, m as OutputRenderer, mt as TableHead, n as marimoVersionAtom, nn as Funnel, nt as isCellAwareAtom, o as SLIDE_TYPE_OPTIONS_BY_VALUE, on as Download, p as OutputArea, pn as ArrowDownWideNarrow, pt as TableCell, q as CommandItem, qt as useOverflowDetection, r as showCodeInRunModeAtom, rn as EyeOff, rt as SlotNames, sn as Code, t as useNotebookCodeAvailable, tn as GripHorizontal, tt as contextAwarePanelType, u as RadioGroup, un as ChevronsLeft, ut as Provider$1, v as downloadBlob, vt as generateColumns, w as ColumnName, wt as useIntersectionObserver, x as Progress, xt as ColumnChartContext, y as downloadByURL, yt as inferFieldTypes, z as CompactChipRow, zt as Tabs, __tla as __tla_2 } from "./code-visibility-2YZN4O7E.js";
30
30
  import { c as Calendar, i as createReducerAndAtoms, n as useOnUnmount, o as ToggleLeft, t as useOnMount } from "./useLifecycle-00mO3OSS.js";
31
31
  import { t as Check } from "./check-BCaJeT-J.js";
32
32
  import { A as Icon, C as logNever, D as $18f2051aff69b9bf$export$a54013f0d02a8f82, E as $18f2051aff69b9bf$export$43bb16f9c6d9e3f7, F as createCollection, I as X, M as clamp$2, N as usePrevious$2, P as useDirection, R as ChevronDown, S as assertNever, a as SelectGroup, c as SelectSeparator, d as NativeSelect, i as SelectContent, j as Trigger$1, l as SelectTrigger, n as capitalize, o as SelectItem, r as Select, s as SelectLabel, t as Strings, u as SelectValue, w as $a916eb452884faea$export$b7a616150fdb9f44 } from "./strings-J57tzLr3.js";
33
33
  import { B as $64fa3d84918910a7$export$4d86445c2cf5e3, C as DropdownMenuTrigger, Ft as $65484d02dcb7eb3e$export$457c3d6518dd4c6f, It as $3ef42575df84b30b$export$9d1611c77c2fe928, W as $64fa3d84918910a7$export$df3a06d6289f983e, Wt as $ff5963eb1fccf552$export$e08e3b67e392101e, X as useDebouncedCallback, Y as useDebounceControlledState, a as NumberField, d as roundToFractionDigits, f as DropdownMenu, g as DropdownMenuLabel, gn as ChevronRight, h as DropdownMenuItem, hn as Circle, i as OnBlurredInput, l as prettyNumber, m as DropdownMenuGroup, n as DebouncedNumberInput, o as maxFractionDigitsForSteps, ot as $f7dceffc5ad7768b$export$4e328f61c538687f, p as DropdownMenuContent, pt as $6179b936705e76d3$export$ae780daf29e6d456, r as Input, st as $701a24aa0da5b062$export$ea18c227d4417cc3, t as DebouncedInput, u as prettyScientificNumber, v as DropdownMenuSeparator, xt as $458b0a5536c1a7cf$export$40bfa8c7b0832715, y as DropdownMenuShortcut, z as $64fa3d84918910a7$export$29f1550f4b0d4415 } from "./input-OdWHkobi.js";
34
34
  import { _ as isWasm, c as asRemoteURL, d as isStaticNotebook, f as appendQueryParams, g as Deferred, m as require_cuid2, u as getStaticVirtualFiles, v as CircleQuestionMark } from "./toDate-d8RCRrRd.js";
35
- import { a as MarimoIncomingMessageEvent, c as MarimoValueUpdateEvent, d as Square, f as File, i as PythonIcon, l as createInputEvent, n as blobToString, o as MarimoValueInputEvent, r as filesToBase64, s as MarimoValueReadyEvent, t as processOutput, u as deserializeBlob } from "./process-output-CO5geDQU.js";
35
+ import { a as MarimoIncomingMessageEvent, c as MarimoValueUpdateEvent, d as Square, f as File, i as PythonIcon, l as createInputEvent, n as blobToString, o as MarimoValueInputEvent, r as filesToBase64, s as MarimoValueReadyEvent, t as processOutput, u as deserializeBlob } from "./process-output-CmEyGIJM.js";
36
36
  import { n as Trash, r as Pencil, t as BulkEdit } from "./types-ChtMFmZ2.js";
37
37
  import { n as require_prop_types, r as Plus, t as ErrorBoundary } from "./ErrorBoundary-DpbaKVv7.js";
38
38
  import { t as require_react_dom } from "./react-dom-BTJzcVJ9.js";
@@ -8558,7 +8558,7 @@ let __tla = Promise.all([
8558
8558
  };
8559
8559
  }
8560
8560
  };
8561
- var LazyChatbot = import_react.lazy(() => import("./chat-ui-BHx9bULO.js").then((e) => ({
8561
+ var LazyChatbot = import_react.lazy(() => import("./chat-ui-B2WNqRL6.js").then((e) => ({
8562
8562
  default: e.Chatbot
8563
8563
  }))), messageSchema = array(object({
8564
8564
  id: string(),
@@ -36187,7 +36187,7 @@ ${c}
36187
36187
  function _temp2$2(e) {
36188
36188
  e.target === e.currentTarget && e.key === "Enter" && (e.preventDefault(), e.stopPropagation(), e.currentTarget.click());
36189
36189
  }
36190
- var LazySlidesComponent = import_react.lazy(() => import("./reveal-component-DnqT3Wzo.js"));
36190
+ var LazySlidesComponent = import_react.lazy(() => import("./reveal-component-jq-TjZWl.js"));
36191
36191
  const SlidesLayoutRenderer = ({ layout: e, setLayout: r, cells: c, mode: l }) => {
36192
36192
  var _a3;
36193
36193
  let u = useAtomValue(kioskModeAtom), d = l === "read" || u, f = useAtomValue(numColumnsAtom) > 1, [p, m] = (0, import_react.useState)(null), { slideCells: h, skippedIds: g, noOutputIds: _, slideTypes: v, startCellIndex: y } = (0, import_react.useMemo)(() => computeSlideCellsInfo(c, e), [
@@ -1,6 +1,6 @@
1
1
  import { s as __toESM } from "./chunk-BNovOVIE.js";
2
2
  import { t as require_compiler_runtime } from "./compiler-runtime-CEbnTgxf.js";
3
- import { at as parseHtmlContent, it as ansiToPlainText } from "./html-to-image-BEeeScWH.js";
3
+ import { at as parseHtmlContent, it as ansiToPlainText } from "./html-to-image-DNiPS5a-.js";
4
4
  import { u as createLucideIcon } from "./dist-Dk6PV_d3.js";
5
5
  import { t as Strings } from "./strings-J57tzLr3.js";
6
6
  import { t as require_jsx_runtime } from "./jsx-runtime-DebpN0FN.js";
@@ -6,10 +6,10 @@ import { s as __toESM } from "./chunk-BNovOVIE.js";
6
6
  import { _ as Logger, g as cn, h as Events, l as useEventListener, t as Button } from "./button-C5K9fIPF.js";
7
7
  import { t as require_react } from "./react-DA-nE2FX.js";
8
8
  import { t as require_compiler_runtime } from "./compiler-runtime-CEbnTgxf.js";
9
- import { lt as kioskModeAtom } from "./html-to-image-BEeeScWH.js";
9
+ import { lt as kioskModeAtom } from "./html-to-image-DNiPS5a-.js";
10
10
  import "./chunk-5FQGJX7Z-BbqSm5gU.js";
11
11
  import { u as createLucideIcon } from "./dist-Dk6PV_d3.js";
12
- import { a as DEFAULT_SLIDE_TYPE, c as Slide, ct as PanelResizeHandle, i as DEFAULT_DECK_TRANSITION, in as Expand, ot as Panel, rn as EyeOff, s as SlideSidebar, sn as Code, st as PanelGroup, t as useNotebookCodeAvailable } from "./code-visibility-BwMX56Aa.js";
12
+ import { a as DEFAULT_SLIDE_TYPE, c as Slide, ct as PanelResizeHandle, i as DEFAULT_DECK_TRANSITION, in as Expand, ot as Panel, rn as EyeOff, s as SlideSidebar, sn as Code, st as PanelGroup, t as useNotebookCodeAvailable } from "./code-visibility-2YZN4O7E.js";
13
13
  import { X as useDebouncedCallback } from "./input-OdWHkobi.js";
14
14
  import "./toDate-d8RCRrRd.js";
15
15
  import "./react-dom-BTJzcVJ9.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@marimo-team/islands",
3
- "version": "0.23.10-dev57",
3
+ "version": "0.23.10-dev60",
4
4
  "main": "dist/main.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "type": "module",
@@ -187,6 +187,21 @@ function canRetryRemoteSearch(remoteSearch: RemoteSearchState): boolean {
187
187
  );
188
188
  }
189
189
 
190
+ /**
191
+ * Whether the backend may still have an unfetched page for a prefix: either we
192
+ * have never listed it, or its last listing returned a next-page token.
193
+ */
194
+ function hasUnfetchedPrefixPage(
195
+ searchKey: StoragePathKey,
196
+ entriesByPath: ReadonlyMap<StoragePathKey, StorageEntry[]>,
197
+ pageMetadataByPath: ReadonlyMap<StoragePathKey, StoragePageMetadata>,
198
+ ): boolean {
199
+ return (
200
+ entriesByPath.get(searchKey) === undefined ||
201
+ pageMetadataByPath.get(searchKey)?.nextPageToken != null
202
+ );
203
+ }
204
+
190
205
  function canSearchMoreRemoteEntries({
191
206
  hasSearch,
192
207
  hasLoadedMatches,
@@ -211,10 +226,7 @@ function canSearchMoreRemoteEntries({
211
226
  return false;
212
227
  }
213
228
 
214
- return (
215
- entriesByPath.get(searchKey) === undefined ||
216
- pageMetadataByPath.get(searchKey)?.nextPageToken != null
217
- );
229
+ return hasUnfetchedPrefixPage(searchKey, entriesByPath, pageMetadataByPath);
218
230
  }
219
231
 
220
232
  /**
@@ -635,14 +647,11 @@ const StorageNamespaceSection: React.FC<{
635
647
  searchPrefix === "" ? [] : (entriesByPath.get(searchKey) ?? []);
636
648
  // The fetched page is the whole parent directory; we still need to filter
637
649
  // it by the full search query before showing entries to the user.
638
- const filteredRemoteEntries =
639
- remoteEntries.length > 0
640
- ? filterEntries(remoteEntries, {
641
- namespace: namespaceName,
642
- searchValue,
643
- entriesByPath,
644
- })
645
- : remoteEntries;
650
+ const filteredRemoteEntries = filterEntries(remoteEntries, {
651
+ namespace: namespaceName,
652
+ searchValue,
653
+ entriesByPath,
654
+ });
646
655
  const hasSearch = !!searchValue.trim();
647
656
  const hasLoadedMatches =
648
657
  filtered.length > 0 || filteredRemoteEntries.length > 0;
@@ -702,7 +711,7 @@ const StorageNamespaceSection: React.FC<{
702
711
  if (remoteSearch.status === "exhausted" && !hasLoadedMatches) {
703
712
  return "No matches";
704
713
  }
705
- if (!hasSearch && !isPending && entries.length === 0 && !error) {
714
+ if (!hasSearch && !isPending && entries.length === 0) {
706
715
  return "No entries";
707
716
  }
708
717
  if (canSearchMore) {
@@ -899,10 +908,11 @@ export const StorageInspector: React.FC = () => {
899
908
  return false;
900
909
  }
901
910
 
902
- const canFetchPrefix =
903
- entriesByPath.get(searchKey) === undefined ||
904
- pageMetadataByPath.get(searchKey)?.nextPageToken != null;
905
- return canFetchPrefix;
911
+ return hasUnfetchedPrefixPage(
912
+ searchKey,
913
+ entriesByPath,
914
+ pageMetadataByPath,
915
+ );
906
916
  },
907
917
  [currentQuery, entriesByPath, pageMetadataByPath, remoteSearchForNamespace],
908
918
  );
@@ -1061,7 +1071,7 @@ export const StorageInspector: React.FC = () => {
1061
1071
  </Button>
1062
1072
  )}
1063
1073
  <Tooltip
1064
- content="Filters loaded entries only. Expand directories or press Enter to search more entries from the backend."
1074
+ content="Search by file name within loaded entries, or by prefix (e.g. 'folder/x') for backend search. Press Enter to fetch more results."
1065
1075
  delayDuration={200}
1066
1076
  >
1067
1077
  <HelpCircleIcon className="h-3.5 w-3.5 shrink-0 cursor-help text-muted-foreground hover:text-foreground mr-2" />
@@ -1,11 +1,17 @@
1
1
  /* Copyright 2026 Marimo. All rights reserved. */
2
2
 
3
+ import type { EditorView } from "@codemirror/view";
4
+ import { createStore } from "jotai";
3
5
  import { beforeEach, describe, expect, it } from "vitest";
6
+ import { MockNotebook } from "@/__mocks__/notebook";
4
7
  import { cellId } from "@/__tests__/branded";
8
+ import type { CellHandle } from "@/components/editor/notebook-cell";
9
+ import { notebookAtom } from "../cells";
5
10
  import type { CellFocusState } from "../focus";
6
- import { exportedForTesting } from "../focus";
11
+ import { exportedForTesting, lastFocusedCellAtom } from "../focus";
7
12
 
8
- const { initialState, reducer, createActions } = exportedForTesting;
13
+ const { initialState, reducer, createActions, cellFocusAtom } =
14
+ exportedForTesting;
9
15
 
10
16
  const CellIds = {
11
17
  a: cellId("a"),
@@ -270,3 +276,40 @@ describe("cell focus reducer", () => {
270
276
  });
271
277
  });
272
278
  });
279
+
280
+ describe("lastFocusedCellAtom", () => {
281
+ it("returns null getEditorView when CodeMirror is not mounted", () => {
282
+ const store = createStore();
283
+ const markdownCellId = cellId("markdown");
284
+
285
+ const unmountedEditorHandle: CellHandle = {
286
+ get editorView(): EditorView {
287
+ throw new ReferenceError("Attempting to dereference null object.");
288
+ },
289
+ editorViewOrNull: null,
290
+ };
291
+
292
+ const notebook = MockNotebook.notebookState({
293
+ cellData: {
294
+ [markdownCellId]: {
295
+ config: { hide_code: true },
296
+ },
297
+ },
298
+ });
299
+ notebook.cellHandles[markdownCellId] = {
300
+ current: unmountedEditorHandle,
301
+ };
302
+
303
+ store.set(notebookAtom, notebook);
304
+ store.set(cellFocusAtom, {
305
+ focusedCellId: markdownCellId,
306
+ lastFocusedCellId: markdownCellId,
307
+ });
308
+
309
+ const lastFocusedCell = store.get(lastFocusedCellAtom);
310
+
311
+ expect(lastFocusedCell).not.toBeNull();
312
+ expect(lastFocusedCell?.cellId).toBe(markdownCellId);
313
+ expect(lastFocusedCell?.getEditorView()).toBeNull();
314
+ });
315
+ });
@@ -106,7 +106,7 @@ function cellFocusDetails(cellId: CellId, notebookState: NotebookState) {
106
106
  if (!data || !handle) {
107
107
  return null;
108
108
  }
109
- const getEditorView = () => handle.editorView;
109
+ const getEditorView = () => handle.editorViewOrNull;
110
110
 
111
111
  return {
112
112
  cellId,