@marimo-team/islands 0.23.16-dev9 → 0.23.17-dev0

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 (164) hide show
  1. package/dist/{chat-ui-JeekqoMH.js → chat-ui-DsZJj75A.js} +3104 -3107
  2. package/dist/{code-visibility-DveLKNtj.js → common-CotPLtrU.js} +1068 -1036
  3. package/dist/{formats-CO8cn5_K.js → formats-Dwq1THhr.js} +1 -1
  4. package/dist/{html-to-image-Bif4utQZ.js → html-to-image-CZ1kLKkq.js} +7336 -6342
  5. package/dist/main.js +211 -147
  6. package/dist/{node-sql-parser-DLl_zNw0.js → node-sql-parser-v1Vi-Fft.js} +16867 -16665
  7. package/dist/{process-output-TAzy-GUk.js → process-output-bVfbcx5_.js} +30 -26
  8. package/dist/{reveal-component-DxV4Ppa2.js → reveal-component-IoHipy82.js} +634 -626
  9. package/dist/style.css +1 -1
  10. package/dist/toDate-CqhBWjvO.js +713 -0
  11. package/dist/{vega-component-DphdxaJ_.js → vega-component-C7nO5zcf.js} +2 -2
  12. package/package.json +3 -4
  13. package/src/__mocks__/requests.ts +56 -4
  14. package/src/components/data-table/__tests__/__snapshots__/chart-spec-model.test.ts.snap +174 -21
  15. package/src/components/data-table/__tests__/chart-spec-model.test.ts +102 -1
  16. package/src/components/data-table/__tests__/columns.test.tsx +9 -1
  17. package/src/components/data-table/column-summary/chart-spec-model.tsx +163 -103
  18. package/src/components/data-table/column-summary/legacy-chart-spec.ts +15 -7
  19. package/src/components/data-table/column-summary/utils.ts +26 -7
  20. package/src/components/data-table/columns.tsx +11 -1
  21. package/src/components/data-table/types.ts +1 -1
  22. package/src/components/editor/__tests__/viewer-banner.test.tsx +14 -0
  23. package/src/components/editor/actions/__tests__/pair-with-agent-commands.test.ts +99 -18
  24. package/src/components/editor/actions/__tests__/pdf-export.test.ts +32 -13
  25. package/src/components/editor/actions/pair-with-agent-commands.ts +21 -10
  26. package/src/components/editor/actions/pair-with-agent-modal.tsx +2 -2
  27. package/src/components/editor/actions/pdf-export.ts +11 -14
  28. package/src/components/editor/actions/useNotebookActions.tsx +28 -19
  29. package/src/components/editor/cell/code/__tests__/cell-editor-activity-lifecycle.test.ts +250 -0
  30. package/src/components/editor/cell/code/cell-editor.tsx +13 -7
  31. package/src/components/editor/chrome/__tests__/state.test.ts +7 -1
  32. package/src/components/editor/chrome/panels/__tests__/logs-panel.test.tsx +25 -0
  33. package/src/components/editor/chrome/panels/__tests__/panel-accordion-state.test.ts +42 -0
  34. package/src/components/editor/chrome/panels/file-explorer-panel.tsx +6 -17
  35. package/src/components/editor/chrome/panels/logs-panel.tsx +12 -2
  36. package/src/components/editor/chrome/panels/panel-accordion-state.ts +51 -0
  37. package/src/components/editor/chrome/panels/session-panel.tsx +5 -16
  38. package/src/components/editor/chrome/panels/write-secret-modal.tsx +40 -12
  39. package/src/components/editor/chrome/state.ts +10 -0
  40. package/src/components/editor/connections/__tests__/json-credentials.test.ts +114 -0
  41. package/src/components/editor/connections/__tests__/paths.test.ts +39 -0
  42. package/src/components/editor/connections/__tests__/quick-add-data-sources.test.tsx +113 -0
  43. package/src/components/editor/connections/add-connection-dialog.tsx +2 -0
  44. package/src/components/editor/connections/components.tsx +6 -2
  45. package/src/components/editor/connections/database/__tests__/__snapshots__/as-code.test.ts.snap +27 -5
  46. package/src/components/editor/connections/database/__tests__/as-code.test.ts +33 -0
  47. package/src/components/editor/connections/database/as-code.ts +37 -13
  48. package/src/components/editor/connections/database/schemas.ts +6 -5
  49. package/src/components/editor/connections/form-renderers.tsx +99 -1
  50. package/src/components/editor/connections/json-credentials.ts +57 -0
  51. package/src/components/editor/connections/paths.ts +21 -0
  52. package/src/components/editor/connections/quick-add-data-sources.tsx +106 -0
  53. package/src/components/editor/connections/secret-combobox.tsx +41 -20
  54. package/src/components/editor/connections/storage/__tests__/__snapshots__/as-code.test.ts.snap +88 -2
  55. package/src/components/editor/connections/storage/__tests__/as-code.test.ts +128 -8
  56. package/src/components/editor/connections/storage/as-code.ts +79 -36
  57. package/src/components/editor/connections/storage/schemas.ts +85 -44
  58. package/src/components/editor/file-tree/__tests__/renderers.test.ts +31 -0
  59. package/src/components/editor/file-tree/file-viewer.tsx +11 -7
  60. package/src/components/editor/file-tree/renderers.tsx +21 -0
  61. package/src/components/editor/renderers/vertical-layout/vertical-layout.tsx +2 -2
  62. package/src/components/editor/viewer-banner.tsx +6 -1
  63. package/src/components/forms/form.tsx +59 -24
  64. package/src/components/forms/options.ts +2 -1
  65. package/src/components/slides/__tests__/cell-output-block.test.tsx +40 -0
  66. package/src/components/slides/__tests__/slide-cell-view.test.tsx +33 -0
  67. package/src/components/slides/reveal-component.tsx +22 -17
  68. package/src/components/slides/slide-cell-view.tsx +1 -1
  69. package/src/components/slides/slides.css +4 -2
  70. package/src/components/static-html/share-modal.tsx +1 -1
  71. package/src/core/ai/context/providers/file.ts +8 -29
  72. package/src/core/cells/__tests__/cells.test.ts +12 -2
  73. package/src/core/cells/__tests__/logs.test.ts +5 -5
  74. package/src/core/cells/cells.ts +17 -4
  75. package/src/core/cells/document-changes.ts +1 -0
  76. package/src/core/cells/logs.ts +14 -4
  77. package/src/core/codemirror/cm.ts +3 -0
  78. package/src/core/codemirror/code-lens/__tests__/actions.test.ts +68 -0
  79. package/src/core/codemirror/code-lens/__tests__/analyzer.test.ts +224 -0
  80. package/src/core/codemirror/code-lens/__tests__/entities.test.ts +175 -0
  81. package/src/core/codemirror/code-lens/__tests__/extension.test.ts +325 -0
  82. package/src/core/codemirror/code-lens/__tests__/perf.test.ts +121 -0
  83. package/src/core/codemirror/code-lens/__tests__/popover.test.ts +93 -0
  84. package/src/core/codemirror/code-lens/actions.ts +33 -0
  85. package/src/core/codemirror/code-lens/analyzer.ts +284 -0
  86. package/src/core/codemirror/code-lens/entities.ts +123 -0
  87. package/src/core/codemirror/code-lens/extension.ts +298 -0
  88. package/src/core/codemirror/code-lens/icons.ts +36 -0
  89. package/src/core/codemirror/code-lens/popover.tsx +240 -0
  90. package/src/core/codemirror/copilot/__tests__/language-server.test.ts +396 -100
  91. package/src/core/codemirror/copilot/__tests__/transport.test.ts +128 -540
  92. package/src/core/codemirror/copilot/language-server.ts +182 -70
  93. package/src/core/codemirror/copilot/transport.ts +15 -207
  94. package/src/core/codemirror/copilot/types.ts +9 -2
  95. package/src/core/codemirror/find-replace/__tests__/navigate.test.ts +42 -30
  96. package/src/core/codemirror/find-replace/navigate.ts +2 -0
  97. package/src/core/codemirror/go-to-definition/__tests__/commands.test.ts +24 -3
  98. package/src/core/codemirror/go-to-definition/commands.ts +93 -90
  99. package/src/core/codemirror/language/__tests__/sql.test.ts +627 -61
  100. package/src/core/codemirror/language/languages/python.ts +23 -11
  101. package/src/core/codemirror/language/languages/sql/completion-store.ts +5 -1
  102. package/src/core/codemirror/language/languages/sql/renderers.tsx +3 -3
  103. package/src/core/codemirror/language/languages/sql/sql.ts +251 -16
  104. package/src/core/codemirror/lsp/__tests__/federated-lsp.test.ts +161 -0
  105. package/src/core/codemirror/lsp/__tests__/log-messages.test.ts +53 -0
  106. package/src/core/codemirror/lsp/__tests__/normalize-markdown-math.test.ts +25 -0
  107. package/src/core/codemirror/lsp/__tests__/notebook-lsp.test.ts +598 -156
  108. package/src/core/codemirror/lsp/__tests__/transports.test.ts +112 -0
  109. package/src/core/codemirror/lsp/federated-lsp.ts +76 -23
  110. package/src/core/codemirror/lsp/log-messages.ts +37 -0
  111. package/src/core/codemirror/lsp/normalize-markdown-math.ts +8 -4
  112. package/src/core/codemirror/lsp/notebook-lsp.ts +220 -56
  113. package/src/core/codemirror/lsp/transports.ts +8 -1
  114. package/src/core/codemirror/lsp/types.ts +68 -8
  115. package/src/core/codemirror/lsp/utils.ts +14 -0
  116. package/src/core/codemirror/python-node-names.ts +90 -0
  117. package/src/core/codemirror/reactive-references/analyzer.ts +52 -57
  118. package/src/core/codemirror/utils.ts +28 -0
  119. package/src/core/config/feature-flag.tsx +3 -1
  120. package/src/core/datasets/data-source-discovery.ts +5 -0
  121. package/src/core/datasets/request-registry.ts +11 -0
  122. package/src/core/edit-app.tsx +1 -2
  123. package/src/core/export/__tests__/hooks.test.ts +2 -4
  124. package/src/core/export/hooks.ts +4 -3
  125. package/src/core/islands/__tests__/bridge.test.ts +107 -0
  126. package/src/core/islands/bootstrap.ts +1 -0
  127. package/src/core/islands/bridge.ts +18 -0
  128. package/src/core/kernel/messages.ts +2 -0
  129. package/src/core/lsp/__tests__/transport.test.ts +509 -337
  130. package/src/core/lsp/transport.ts +304 -132
  131. package/src/core/mode.ts +10 -0
  132. package/src/core/network/__tests__/api.test.ts +42 -0
  133. package/src/core/network/__tests__/connection.test.ts +45 -0
  134. package/src/core/network/__tests__/requests-lazy.test.ts +47 -1
  135. package/src/core/network/__tests__/requests-network.test.ts +48 -0
  136. package/src/core/network/api.ts +27 -0
  137. package/src/core/network/connection.ts +15 -0
  138. package/src/core/network/requests-lazy.ts +3 -0
  139. package/src/core/network/requests-network.ts +31 -8
  140. package/src/core/network/requests-static.ts +3 -0
  141. package/src/core/network/requests-toasting.tsx +3 -0
  142. package/src/core/network/types.ts +27 -6
  143. package/src/core/rtc/state.ts +9 -0
  144. package/src/core/static/download-html.ts +5 -14
  145. package/src/core/wasm/__tests__/bridge.test.ts +99 -5
  146. package/src/core/wasm/bridge.ts +42 -9
  147. package/src/core/wasm/worker/types.ts +10 -3
  148. package/src/core/wasm/worker/worker.ts +7 -8
  149. package/src/core/websocket/useMarimoKernelConnection.tsx +4 -0
  150. package/src/css/app/codemirror.css +16 -2
  151. package/src/hooks/__tests__/useDataSourceDiscovery.test.ts +80 -0
  152. package/src/hooks/useDataSourceDiscovery.ts +18 -0
  153. package/src/plugins/impl/DataTablePlugin.tsx +4 -1
  154. package/src/plugins/impl/__tests__/DataTablePlugin.test.tsx +158 -0
  155. package/src/plugins/impl/anywidget/__tests__/model.test.ts +55 -0
  156. package/src/plugins/impl/anywidget/model.ts +20 -5
  157. package/src/plugins/impl/data-frames/forms/__tests__/__snapshots__/form.test.tsx.snap +33 -21
  158. package/src/plugins/impl/data-frames/forms/renderers.tsx +11 -8
  159. package/src/stories/log-viewer.stories.tsx +12 -6
  160. package/src/utils/__tests__/blob.test.ts +27 -1
  161. package/src/utils/__tests__/download.test.tsx +44 -4
  162. package/src/utils/blob.ts +24 -1
  163. package/src/utils/download.ts +14 -15
  164. package/dist/toDate-CmR_xR3P.js +0 -692
package/dist/main.js CHANGED
@@ -22,17 +22,17 @@ import { _ as Functions, c as useEventListener, f as composeRefs, g as Logger, h
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-DNq8q3zw.js";
25
- import { $ as notebookOutline, $t as requestClientAtom, A as ChevronDownIcon, Bt as repl, C as Accordion, Cn as RANDOM_ID_ATTR, Ct as normalizeName, D as BorderAllIcon, Dn as atomWithStorage, E as AccordionTrigger, En as atomWithReducer, Et as MarkdownLanguageAdapter, G as hasRunAnyCellAtom, Gn as Eye, Gt as DATA_TYPE_ICON, H as renderHTML, Hn as Layers, Ht as MarkdownParser, I as base64ToDataView, In as Trash2, Jn as Columns2, K as cellIdsAtom, Ln as Table2, Lt as jotaiJsonStorage, Mn as Item$1, Nn as Root2$1, Nt as DeferredRequestRegistry, On as selectAtom, Ot as PathBuilder, Pn as Trigger2, Pt as generateUUID, Q as notebookAtom, Qt as getRequestClient, R as dataViewToBase64, Rn as PaintRoller, Sn as OBJECT_ID_ATTR, St as isInternalCellName, T as AccordionItem, Tt as customPythonLanguageSupport, U as getMarimoExportContext, Un as Info, V as safeExtractSetUIElementMessageBuffers, Vn as LoaderCircle, Vt as SQLParser, W as hasTrustedExportContext, Wn as FileText, Wt as PluralWords, X as hasOnlyOneCellAtom, Xn as CircleAlert, Y as getCellNames, Z as initialNotebookState, Zn as Braces, Zt as convertStatsName, a as useCellFocusActions, at as createCell, bn as UIElementId, dn as NotebookScopedLocalStorage, dt as kioskModeAtom, en as useRequestClient, et as numColumnsAtom, f as isOutputEmpty, gn as parseInitialValue, gt as headingToIdentifier, hn as parseDataset, ht as outputIsStale, i as LazyAnyLanguageCodeMirror, jn as Content2, kt as Paths, lt as getInitialAppMode, mn as parseAttrValue, mt as outputIsLoading, n as Spinner, nn as publishedCellClasses, nt as useCellActions, o as useLastFocusedCellId, p as useExpandedConsoleOutput, pt as viewStateAtom, q as createActions, qn as Database, qt as require_client, rn as shouldHidePublishedCell, rt as useCellIds, s as maybeAddAltairImport, tn as isUninstantiated, tt as reducer, ut as initialModeAtom, vn as HTMLCellId, w as AccordionContent, wn as jsonParseWithSpecialChar, wt as Checkbox, xn as findCellId, xt as getValidName, __tla as __tla_0 } from "./html-to-image-Bif4utQZ.js";
25
+ import { $ as notebookOutline, $t as publishedCellClasses, A as ChevronDownIcon, An as Root2$1, At as DeferredRequestRegistry, Bn as Info, C as Accordion, Cn as atomWithReducer, Ct as MarkdownLanguageAdapter, D as BorderAllIcon, E as AccordionTrigger, Et as Paths, Fn as PaintRoller, G as hasRunAnyCellAtom, Gn as Columns2, H as renderHTML, Hn as Eye, Ht as DATA_TYPE_ICON, I as base64ToDataView, Jn as Braces, Jt as convertStatsName, K as cellIdsAtom, Lt as repl, Nn as Trash2, On as Content2, Pn as Table2, Pt as jotaiJsonStorage, Q as notebookAtom, Qt as isUninstantiated, R as dataViewToBase64, Rn as LoaderCircle, Rt as SQLParser, St as isRecord, T as AccordionItem, Tn as selectAtom, Tt as PathBuilder, U as getMarimoExportContext, V as safeExtractSetUIElementMessageBuffers, Vn as FileText, Vt as PluralWords, W as hasTrustedExportContext, Wn as Database, Wt as require_client, X as hasOnlyOneCellAtom, Xt as requestClientAtom, Y as getCellNames, Yt as getRequestClient, Z as initialNotebookState, Zt as useRequestClient, _n as UIElementId, _t as isInternalCellName, a as useCellFocusActions, at as createCell, bn as RANDOM_ID_ATTR, bt as customPythonLanguageSupport, cn as NotebookScopedLocalStorage, dn as parseAttrValue, dt as headingToIdentifier, en as shouldHidePublishedCell, et as numColumnsAtom, f as isOutputEmpty, fn as parseDataset, gt as getValidName, hn as HTMLCellId, i as LazyAnyLanguageCodeMirror, jn as Trigger2, jt as generateUUID, kn as Item$1, lt as outputIsLoading, n as Spinner, nt as useCellActions, o as useLastFocusedCellId, p as useExpandedConsoleOutput, pn as parseInitialValue, q as createActions, qn as CircleAlert, rt as useCellIds, s as maybeAddAltairImport, tt as reducer, ut as outputIsStale, vn as findCellId, vt as normalizeName, w as AccordionContent, wn as atomWithStorage, xn as jsonParseWithSpecialChar, xt as hasFunctionProperty, yn as OBJECT_ID_ATTR, yt as Checkbox, zn as Layers, zt as MarkdownParser, __tla as __tla_0 } from "./html-to-image-CZ1kLKkq.js";
26
26
  import { __tla as __tla_1 } from "./chunk-5FQGJX7Z-B9WoXK1R.js";
27
27
  import { o as useSize, s as Root$1, u as createLucideIcon } from "./dist-DIlxLFXG.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-CQKL_D3i.js";
29
- import { $ as ContextAwarePanelItem, $t as EmotionCacheProvider, A as prettifyRowColumnCount, At as loadTableData, B as useSelectList, Bt as dateToLocalISOTime, C as Filenames, Ct as ColumnChartContext, D as EmptyState, Dt as usePrevious$1, E as ColumnPreviewContainer, Et as useIntersectionObserver, F as ContextMenuContent, Ft as getMimeValues, G as ComboboxItem, Gt as ChartErrorState, H as DatePicker, Ht as TabsContent, I as ContextMenuItem, It as isNullishFilter, J as CommandInput, Jt as LazyVegaEmbed, K as Command, Kt as ChartInfoState, L as ContextMenuSeparator, Lt as Maps, M as getColumnCountForDisplay, Mt as SELECT_COLUMN_ID, N as getUserColumnVisibilityCounts, Nt as TOO_MANY_ROWS, O as ErrorState, Ot as getPageIndexForRow, P as ContextMenu, Pt as toFieldTypes, Q as smartMatch, Qt as HtmlOutput, R as ContextMenuTrigger, Rt as dateToLocalISODate, S as Progress, St as renderCellValue, T as ColumnName, Tt as DelayMount, U as DateRangePicker, Ut as TabsList, V as CompactChipRow, Vt as Tabs, W as Combobox, Wt as TabsTrigger, X as CommandList, Xt as RenderTextWithLinks, Y as CommandItem, Yt as useOverflowDetection, Z as CommandSeparator, Zt as Kbd, _ as InstallPackageButton, _n as ChevronLeft, _t as TableHeader, an as TextWrap, at as SlotNames, b as downloadByURL, bt as generateColumns, cn as EyeOff, d as RadioGroup, dn as Download, dt as Fill, en as safeLocale, et as PANEL_TYPES, f as RadioGroupItem, fn as Code, ft as Provider$1, g as DataTable, gn as ChevronsDownUp, gt as TableHead, h as OutputRenderer, hn as ChevronsLeft, ht as TableCell, in as $fae977aafc393c5c$export$6b862160d295c8e, it as isCellAwareAtom, j as prettifyRowCount, jt as INDEX_COLUMN_NAME, k as LoadingState, kt as loadTableAndRawData, l as Slide, m as OutputArea, mn as ChevronsRight, mt as TableBody, n as marimoVersionAtom, nn as isRecord, nt as contextAwarePanelOwner, on as GripHorizontal, ot as slotsController, p as JsonOutput, pn as ChevronsUpDown, pt as Table, q as CommandEmpty, qt as ChartLoadingState, r as showCodeInRunModeAtom, rn as $fae977aafc393c5c$export$588937bcd60ade55, rt as contextAwarePanelType, s as SLIDE_TYPE_OPTIONS_BY_VALUE, sn as Funnel, st as Toggle, t as useNotebookCodeAvailable, tn as hasFunctionProperty, tt as contextAwarePanelOpen, u as Switch, un as Ellipsis, v as ADD_PRINTING_CLASS, vn as ArrowDownWideNarrow, vt as TableRow, w as downloadSizeLimitAtom, wt as ColumnChartSpecModel, x as downloadHTMLAsImage, xt as inferFieldTypes, y as downloadBlob, yt as NAMELESS_COLUMN_PREFIX, z as useInternalStateWithSync, zt as dateToLocalISODateTime, __tla as __tla_2 } from "./code-visibility-DveLKNtj.js";
29
+ import { $ as CommandSeparator, $t as Kbd, A as ErrorState, At as getPageIndexForRow, B as ContextMenuTrigger, Bt as dateToLocalISODate, C as downloadHTMLAsImage, Ct as inferFieldTypes, D as ColumnName, Dt as DelayMount, E as downloadSizeLimitAtom, Et as ColumnChartSpecModel, F as getUserColumnVisibilityCounts, Ft as TOO_MANY_ROWS, G as DateRangePicker, Gt as TabsList, H as useSelectList, Ht as dateToLocalISOTime, I as ContextMenu, It as toFieldTypes, J as Command, Jt as ChartInfoState, K as Combobox, Kt as TabsTrigger, L as ContextMenuContent, Lt as getMimeValues, M as prettifyRowColumnCount, Mt as loadTableData, N as prettifyRowCount, Nt as INDEX_COLUMN_NAME, O as ColumnPreviewContainer, Ot as useIntersectionObserver, P as getColumnCountForDisplay, Pt as SELECT_COLUMN_ID, Q as CommandList, Qt as RenderTextWithLinks, R as ContextMenuItem, Rt as isNullishFilter, S as downloadExportedFile, St as generateColumns, T as Filenames, Tt as ColumnChartContext, U as CompactChipRow, Ut as Tabs, V as useInternalStateWithSync, Vt as dateToLocalISODateTime, W as DatePicker, Wt as TabsContent, X as CommandInput, Xt as LazyVegaEmbed, Y as CommandEmpty, Yt as ChartLoadingState, Z as CommandItem, Zt as useOverflowDetection, _ as DataTable, _n as ChevronLeft, _t as TableCell, an as TextWrap, at as contextAwarePanelType, b as downloadBlob, bt as TableRow, c as SLIDE_TYPE_OPTIONS_BY_VALUE, cn as EyeOff, ct as slotsController, d as Switch, dn as Download, en as HtmlOutput, et as smartMatch, f as RadioGroup, fn as Code, g as OutputRenderer, gn as ChevronsDownUp, gt as TableBody, h as OutputArea, hn as ChevronsLeft, ht as Table, i as showCodeInRunModeAtom, in as $fae977aafc393c5c$export$6b862160d295c8e, it as contextAwarePanelOwner, j as LoadingState, jt as loadTableAndRawData, k as EmptyState, kt as usePrevious$1, lt as Toggle, m as JsonOutput, mn as ChevronsRight, mt as Provider$1, n as useNotebookCodeAvailable, nn as safeLocale, nt as PANEL_TYPES, on as GripHorizontal, ot as isCellAwareAtom, p as RadioGroupItem, pn as ChevronsUpDown, pt as Fill, q as ComboboxItem, qt as ChartErrorState, r as marimoVersionAtom, rn as $fae977aafc393c5c$export$588937bcd60ade55, rt as contextAwarePanelOpen, sn as Funnel, st as SlotNames, t as cellDomProps, tn as EmotionCacheProvider, tt as ContextAwarePanelItem, u as Slide, un as Ellipsis, v as InstallPackageButton, vn as ArrowDownWideNarrow, vt as TableHead, w as Progress, wt as renderCellValue, x as downloadByURL, xt as NAMELESS_COLUMN_PREFIX, y as ADD_PRINTING_CLASS, yt as TableHeader, z as ContextMenuSeparator, zt as Maps, __tla as __tla_2 } from "./common-CotPLtrU.js";
30
30
  import { c as Calendar, i as createReducerAndAtoms, n as useOnUnmount, o as ToggleLeft, t as useOnMount } from "./useLifecycle-CMJGqBaY.js";
31
31
  import { t as Check } from "./check-DP7U0H0G.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-DIy9NAmg.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-C5K4VBvB.js";
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-CmR_xR3P.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-TAzy-GUk.js";
34
+ import { S as isWasm, _ as initialModeAtom, b as viewStateAtom, c as asRemoteURL, d as isStaticNotebook, f as appendQueryParams, g as getInitialAppMode, m as require_cuid2, u as getStaticVirtualFiles, v as kioskModeAtom, w as CircleQuestionMark, x as Deferred } from "./toDate-CqhBWjvO.js";
35
+ import { a as MarimoIncomingMessageEvent, c as MarimoValueUpdateEvent, f as Square, i as PythonIcon, l as createInputEvent, n as blobToString, o as MarimoValueInputEvent, p as File, r as filesToBase64, s as MarimoValueReadyEvent, t as processOutput, u as deserializeBlob } from "./process-output-bVfbcx5_.js";
36
36
  import { n as Trash, r as Pencil, t as BulkEdit } from "./types-DicH9Oi0.js";
37
37
  import { n as require_prop_types, r as Plus, t as ErrorBoundary } from "./ErrorBoundary-DhLqwSWA.js";
38
38
  import { t as require_react_dom } from "./react-dom-BTJzcVJ9.js";
@@ -60,7 +60,7 @@ import "./dist-DgjbnqTg.js";
60
60
  import { r as python } from "./dist-CRmSjkLP.js";
61
61
  import { n as minimalSetup, t as esm_default } from "./esm-DzZVaNH4.js";
62
62
  import "./purify.es-EnR5yhgI.js";
63
- import { i as AlertTitle, n as Alert, r as AlertDescription } from "./formats-CO8cn5_K.js";
63
+ import { i as AlertTitle, n as Alert, r as AlertDescription } from "./formats-Dwq1THhr.js";
64
64
  import { H as getVegaFieldTypes, V as getContainerWidth } from "./vega-loader.browser-DmpxCJqx.js";
65
65
  import { a as tooltipHandler, n as vegaLoadData } from "./loader-DX-IDS7n.js";
66
66
  import "./defaultLocale-BpsHxBd7.js";
@@ -3574,7 +3574,7 @@ let __tla = Promise.all([
3574
3574
  Logger.error("Error emitting event", e2);
3575
3575
  }
3576
3576
  }, 0));
3577
- __privateSet(this, _n2, e), __privateSet(this, _r, r), __privateSet(this, _t2, /* @__PURE__ */ new Map()), c && c.addEventListener("abort", () => {
3577
+ __privateSet(this, _n2, e), __privateSet(this, _r, r), __privateSet(this, _t2, /* @__PURE__ */ new Set()), c && c.addEventListener("abort", () => {
3578
3578
  Logger.debug("[Model] Signal aborted, clearing all listeners"), __privateSet(this, _i, {});
3579
3579
  });
3580
3580
  }
@@ -3601,11 +3601,16 @@ let __tla = Promise.all([
3601
3601
  __privateSet(this, _n2, {
3602
3602
  ...__privateGet(this, _n2),
3603
3603
  [e]: r
3604
- }), __privateGet(this, _t2).set(e, r), __privateMethod(this, _e_instances, a_fn).call(this, `change:${e}`, r), __privateGet(this, _c).call(this);
3604
+ }), __privateGet(this, _t2).add(e), __privateMethod(this, _e_instances, a_fn).call(this, `change:${e}`, r), __privateGet(this, _c).call(this);
3605
3605
  }
3606
3606
  save_changes() {
3607
3607
  if (__privateGet(this, _t2).size === 0) return;
3608
- let e = Object.fromEntries(__privateGet(this, _t2).entries());
3608
+ let e = Object.fromEntries([
3609
+ ...__privateGet(this, _t2)
3610
+ ].map((e2) => [
3611
+ e2,
3612
+ __privateGet(this, _n2)[e2]
3613
+ ]));
3609
3614
  __privateGet(this, _t2).clear(), __privateGet(this, _r).sendUpdate(e);
3610
3615
  }
3611
3616
  on(e, r, c) {
@@ -3626,7 +3631,10 @@ let __tla = Promise.all([
3626
3631
  }, o_fn = function(e) {
3627
3632
  e != null && Object.keys(e).forEach((r) => {
3628
3633
  let c = r;
3629
- __privateGet(this, _n2)[c] !== e[c] && this.set(c, e[c]);
3634
+ __privateGet(this, _t2).delete(c), __privateGet(this, _n2)[c] !== e[c] && (__privateSet(this, _n2, {
3635
+ ...__privateGet(this, _n2),
3636
+ [c]: e[c]
3637
+ }), __privateMethod(this, _e_instances, a_fn).call(this, `change:${c}`, e[c]), __privateGet(this, _c).call(this));
3630
3638
  });
3631
3639
  }, s_fn = function(e, r = []) {
3632
3640
  let c = __privateGet(this, _i)["msg:custom"];
@@ -9009,7 +9017,7 @@ let __tla = Promise.all([
9009
9017
  };
9010
9018
  }
9011
9019
  };
9012
- var LazyChatbot = import_react.lazy(() => import("./chat-ui-JeekqoMH.js").then((e) => ({
9020
+ var LazyChatbot = import_react.lazy(() => import("./chat-ui-DsZJj75A.js").then((e) => ({
9013
9021
  default: e.Chatbot
9014
9022
  }))), messageSchema = array(object({
9015
9023
  id: string(),
@@ -16459,13 +16467,13 @@ ${c}
16459
16467
  }, [
16460
16468
  O,
16461
16469
  L
16462
- ]), kG = useDeepCompareMemoize(O ?? inferFieldTypes(r)), AG = (0, import_react.useMemo)(() => p === "all" ? kG : kG.slice(0, p), [
16470
+ ]), kG = new Set(E.map(([e2]) => e2)), AG = useDeepCompareMemoize(O ?? inferFieldTypes(r).filter(([e2]) => !kG.has(e2))), jG = (0, import_react.useMemo)(() => p === "all" ? AG : AG.slice(0, p), [
16463
16471
  p,
16464
- kG
16465
- ]), jG = (0, import_react.useMemo)(() => {
16472
+ AG
16473
+ ]), MG = (0, import_react.useMemo)(() => {
16466
16474
  let e2 = {};
16467
16475
  if (r && r.length > 0) {
16468
- for (let [c2, l2] of AG) if (l2[0] === "number") {
16476
+ for (let [c2, l2] of jG) if (l2[0] === "number") {
16469
16477
  let l3 = 0;
16470
16478
  for (let e3 of r) {
16471
16479
  let r2 = e3[c2];
@@ -16480,73 +16488,73 @@ ${c}
16480
16488
  return e2;
16481
16489
  }, [
16482
16490
  r,
16483
- AG
16484
- ]), MG = useDeepCompareMemoize(E), NG = useDeepCompareMemoize(nG), PG = useDeepCompareMemoize(rG), FG = useDeepCompareMemoize(iG), IG = useDeepCompareMemoize(OG), LG = useDeepCompareMemoize(jG), RG = AG.length;
16491
+ jG
16492
+ ]), NG = useDeepCompareMemoize(E), PG = useDeepCompareMemoize(nG), FG = useDeepCompareMemoize(rG), IG = useDeepCompareMemoize(iG), LG = useDeepCompareMemoize(OG), RG = useDeepCompareMemoize(MG), zG = jG.length;
16485
16493
  O || (T = false), DG && (h = null);
16486
- let zG = (0, import_react.useMemo)(() => generateColumns({
16487
- rowHeaders: MG,
16494
+ let BG = (0, import_react.useMemo)(() => generateColumns({
16495
+ rowHeaders: NG,
16488
16496
  selection: h,
16489
- chartSpecModel: IG,
16490
- fieldTypes: AG,
16491
- textJustifyColumns: NG,
16492
- wrappedColumns: PG,
16493
- columnWidths: FG,
16497
+ chartSpecModel: LG,
16498
+ fieldTypes: jG,
16499
+ textJustifyColumns: PG,
16500
+ wrappedColumns: FG,
16501
+ columnWidths: IG,
16494
16502
  headerTooltip: aG,
16495
16503
  showDataTypes: T,
16496
16504
  calculateTopKRows: pG,
16497
- fractionDigitsByColumn: LG
16505
+ fractionDigitsByColumn: RG
16498
16506
  }), [
16499
16507
  h,
16500
16508
  T,
16501
- IG,
16502
- MG,
16503
- AG,
16509
+ LG,
16504
16510
  NG,
16511
+ jG,
16505
16512
  PG,
16506
16513
  FG,
16514
+ IG,
16507
16515
  aG,
16508
16516
  pG,
16509
- LG
16510
- ]), BG = (0, import_react.useMemo)(() => Object.fromEntries((g || []).map((e2) => [
16517
+ RG
16518
+ ]), VG = (0, import_react.useMemo)(() => Object.fromEntries((g || []).map((e2) => [
16511
16519
  e2,
16512
16520
  true
16513
16521
  ])), [
16514
16522
  g
16515
- ]), VG = useEvent_default((e2) => {
16523
+ ]), HG = useEvent_default((e2) => {
16516
16524
  if (h === "single") {
16517
16525
  let r2 = Functions.asUpdater(e2)({});
16518
16526
  z(Object.keys(r2).slice(0, 1));
16519
16527
  }
16520
16528
  if (h === "multi") {
16521
- let r2 = Functions.asUpdater(e2)(BG);
16529
+ let r2 = Functions.asUpdater(e2)(VG);
16522
16530
  z(Object.keys(r2));
16523
16531
  }
16524
- }), HG = useEvent_default((e2) => {
16532
+ }), UG = useEvent_default((e2) => {
16525
16533
  if (xG(e2), e2 < 0 || typeof l == "number" && e2 >= l || l === "too_many") return;
16526
16534
  let r2 = getPageIndexForRow(e2, j.pageIndex, j.pageSize);
16527
16535
  r2 !== null && M((e3) => ({
16528
16536
  ...e3,
16529
16537
  pageIndex: r2
16530
16538
  }));
16531
- }), UG = g.filter((e2) => e2 instanceof Object && e2.columnName !== void 0), WG = useEvent_default((e2) => {
16532
- h === "single-cell" && z(Functions.asUpdater(e2)(UG).slice(0, 1)), h === "multi-cell" && z(Functions.asUpdater(e2)(UG));
16533
- }), GG = h === "multi" || h === "single", KG = b && !!mG, qG = isInVscodeExtension(), JG = isIslands(), YG = (0, import_react.useMemo)(() => {
16534
- if (!(!CG || !(S || KG))) return (e2) => (0, import_jsx_runtime.jsx)(ContextAwarePanelItem, {
16539
+ }), WG = g.filter((e2) => e2 instanceof Object && e2.columnName !== void 0), GG = useEvent_default((e2) => {
16540
+ h === "single-cell" && z(Functions.asUpdater(e2)(WG).slice(0, 1)), h === "multi-cell" && z(Functions.asUpdater(e2)(WG));
16541
+ }), KG = h === "multi" || h === "single", qG = b && !!mG, JG = isInVscodeExtension(), YG = isIslands(), XG = (0, import_react.useMemo)(() => {
16542
+ if (!(!CG || !(S || qG))) return (e2) => (0, import_jsx_runtime.jsx)(ContextAwarePanelItem, {
16535
16543
  children: (0, import_jsx_runtime.jsx)(TableExplorerPanel, {
16536
16544
  rowIdx: bG,
16537
- setRowIdx: HG,
16545
+ setRowIdx: UG,
16538
16546
  totalRows: l,
16539
- fieldTypes: kG,
16547
+ fieldTypes: AG,
16540
16548
  getRow: hG,
16541
- isSelectable: GG,
16542
- isRowSelected: !!BG[bG],
16543
- handleRowSelectionChange: VG,
16549
+ isSelectable: KG,
16550
+ isRowSelected: !!VG[bG],
16551
+ handleRowSelectionChange: HG,
16544
16552
  previewColumn: mG,
16545
16553
  totalColumns: oG,
16546
16554
  tableId: vG,
16547
16555
  table: e2,
16548
- showRowExplorer: S && !qG,
16549
- showColumnExplorer: KG && !qG,
16556
+ showRowExplorer: S && !JG,
16557
+ showColumnExplorer: qG && !JG,
16550
16558
  activeTab: TG,
16551
16559
  onTabChange: EG
16552
16560
  })
@@ -16554,19 +16562,19 @@ ${c}
16554
16562
  }, [
16555
16563
  CG,
16556
16564
  S,
16557
- KG,
16565
+ qG,
16558
16566
  bG,
16559
- HG,
16567
+ UG,
16560
16568
  l,
16561
- kG,
16569
+ AG,
16562
16570
  hG,
16563
- GG,
16564
- BG,
16571
+ KG,
16565
16572
  VG,
16573
+ HG,
16566
16574
  mG,
16567
16575
  oG,
16568
16576
  vG,
16569
- qG,
16577
+ JG,
16570
16578
  TG,
16571
16579
  EG
16572
16580
  ]);
@@ -16580,11 +16588,11 @@ ${c}
16580
16588
  " rows."
16581
16589
  ]
16582
16590
  }),
16583
- RG < oG && RG > 0 && (0, import_jsx_runtime.jsxs)(Banner, {
16591
+ zG < oG && zG > 0 && (0, import_jsx_runtime.jsxs)(Banner, {
16584
16592
  className: "mb-1 rounded",
16585
16593
  children: [
16586
16594
  "Result clipped. Showing ",
16587
- RG,
16595
+ zG,
16588
16596
  " of ",
16589
16597
  oG,
16590
16598
  " columns."
@@ -16622,7 +16630,7 @@ ${c}
16622
16630
  children: (0, import_jsx_runtime.jsx)(DataTable, {
16623
16631
  data: r,
16624
16632
  rawData: c,
16625
- columns: zG,
16633
+ columns: BG,
16626
16634
  className: R,
16627
16635
  maxHeight: _G,
16628
16636
  sorting: B,
@@ -16637,8 +16645,8 @@ ${c}
16637
16645
  selection: h,
16638
16646
  paginationState: j,
16639
16647
  setPaginationState: M,
16640
- rowSelection: BG,
16641
- cellSelection: UG,
16648
+ rowSelection: VG,
16649
+ cellSelection: WG,
16642
16650
  cellStyling: cG,
16643
16651
  hoverTemplate: lG,
16644
16652
  cellHoverTexts: uG,
@@ -16651,23 +16659,23 @@ ${c}
16651
16659
  onFiltersChange: ZW,
16652
16660
  calculateTopKRows: pG,
16653
16661
  reloading: QW,
16654
- onRowSelectionChange: VG,
16662
+ onRowSelectionChange: HG,
16655
16663
  freezeColumnsLeft: $W,
16656
16664
  freezeColumnsRight: eG,
16657
16665
  hiddenColumns: tG,
16658
- onCellSelectionChange: WG,
16666
+ onCellSelectionChange: GG,
16659
16667
  getRowIds: sG,
16660
16668
  toggleDisplayHeader: dG,
16661
- showChartBuilder: w && !JG,
16669
+ showChartBuilder: w && !YG,
16662
16670
  isChartBuilderOpen: fG,
16663
16671
  showPageSizeSelector: y,
16664
- showTableExplorer: (S || KG) && !qG && !JG,
16672
+ showTableExplorer: (S || qG) && !JG && !YG,
16665
16673
  togglePanel: wG,
16666
16674
  isPanelOpen: SG,
16667
16675
  isAnyPanelOpen: CG,
16668
16676
  viewedRowIdx: bG,
16669
16677
  onViewedRowChange: (e2) => xG(e2),
16670
- renderTableExplorerPanel: YG
16678
+ renderTableExplorerPanel: XG
16671
16679
  })
16672
16680
  })
16673
16681
  })
@@ -17258,20 +17266,26 @@ ${c}
17258
17266
  }
17259
17267
  var import_compiler_runtime$48 = require_compiler_runtime();
17260
17268
  const ZodForm = (e) => {
17261
- let r = (0, import_compiler_runtime$48.c)(11), { schema: c, form: l, path: u, renderers: d, children: f } = e, p = u === void 0 ? "" : u, m;
17262
- r[0] === d ? m = r[1] : (m = d === void 0 ? [] : d, r[0] = d, r[1] = m);
17263
- let h = m, g;
17264
- r[2] !== l || r[3] !== p || r[4] !== h || r[5] !== c ? (g = renderZodSchema(c, l, p, h), r[2] = l, r[3] = p, r[4] = h, r[5] = c, r[6] = g) : g = r[6];
17265
- let _;
17266
- return r[7] !== f || r[8] !== l || r[9] !== g ? (_ = (0, import_jsx_runtime.jsxs)(FormProvider, {
17267
- ...l,
17269
+ let r = (0, import_compiler_runtime$48.c)(14), { schema: c, form: l, path: u, renderers: d, children: f } = e, p = u === void 0 ? "" : u, m, h, g, _;
17270
+ if (r[0] !== f || r[1] !== l || r[2] !== p || r[3] !== c || r[4] !== d) {
17271
+ let e2 = d === void 0 ? [] : d;
17272
+ m = FormProvider, h = l, g = f, _ = renderZodSchema({
17273
+ schema: c,
17274
+ form: l,
17275
+ path: p,
17276
+ renderers: e2
17277
+ }), r[0] = f, r[1] = l, r[2] = p, r[3] = c, r[4] = d, r[5] = m, r[6] = h, r[7] = g, r[8] = _;
17278
+ } else m = r[5], h = r[6], g = r[7], _ = r[8];
17279
+ let v;
17280
+ return r[9] !== m || r[10] !== h || r[11] !== g || r[12] !== _ ? (v = (0, import_jsx_runtime.jsxs)(m, {
17281
+ ...h,
17268
17282
  children: [
17269
- f,
17270
- g
17283
+ g,
17284
+ _
17271
17285
  ]
17272
- }), r[7] = f, r[8] = l, r[9] = g, r[10] = _) : _ = r[10], _;
17286
+ }), r[9] = m, r[10] = h, r[11] = g, r[12] = _, r[13] = v) : v = r[13], v;
17273
17287
  };
17274
- function renderZodSchema(e, r, c, l) {
17288
+ function renderZodSchema({ schema: e, form: r, path: c, renderers: l }) {
17275
17289
  for (let u2 of l) {
17276
17290
  let { isMatch: l2, Component: d2 } = u2;
17277
17291
  if (l2(e)) return (0, import_jsx_runtime.jsx)(d2, {
@@ -17283,11 +17297,21 @@ ${c}
17283
17297
  let { label: u, description: d, special: f, direction: p = "column", minLength: m } = FieldOptions.parse(e.description || "");
17284
17298
  if (e instanceof ZodDefault) {
17285
17299
  let u2 = e.unwrap();
17286
- return u2 = !u2.description && e.description ? u2.describe(e.description) : u2, renderZodSchema(u2, r, c, l);
17300
+ return u2 = !u2.description && e.description ? u2.describe(e.description) : u2, renderZodSchema({
17301
+ schema: u2,
17302
+ form: r,
17303
+ path: c,
17304
+ renderers: l
17305
+ });
17287
17306
  }
17288
17307
  if (e instanceof ZodOptional) {
17289
17308
  let u2 = e.unwrap();
17290
- return u2 = !u2.description && e.description ? u2.describe(e.description) : u2, renderZodSchema(u2, r, c, l);
17309
+ return u2 = !u2.description && e.description ? u2.describe(e.description) : u2, renderZodSchema({
17310
+ schema: u2,
17311
+ form: r,
17312
+ path: c,
17313
+ renderers: l
17314
+ });
17291
17315
  }
17292
17316
  if (e instanceof ZodObject) return (0, import_jsx_runtime.jsxs)("div", {
17293
17317
  className: cn("flex", p === "row" ? "flex-row gap-6 items-start" : p === "two-columns" ? "grid grid-cols-2 gap-y-6" : "flex-col gap-6"),
@@ -17296,7 +17320,12 @@ ${c}
17296
17320
  children: u
17297
17321
  }),
17298
17322
  Objects.entries(e.shape).map(([e2, u2]) => {
17299
- let d2 = u2 instanceof ZodLiteral, f2 = renderZodSchema(u2, r, joinPath(c, e2), l);
17323
+ let d2 = u2 instanceof ZodLiteral, f2 = renderZodSchema({
17324
+ schema: u2,
17325
+ form: r,
17326
+ path: joinPath(c, e2),
17327
+ renderers: l
17328
+ });
17300
17329
  return d2 ? (0, import_jsx_runtime.jsx)(import_react.Fragment, {
17301
17330
  children: f2
17302
17331
  }, e2) : (0, import_jsx_runtime.jsx)("div", {
@@ -17339,20 +17368,26 @@ ${c}
17339
17368
  render: ({ field: e2 }) => (0, import_jsx_runtime.jsxs)(FormItem, {
17340
17369
  children: [
17341
17370
  (0, import_jsx_runtime.jsxs)("div", {
17342
- className: "flex flex-row items-start space-x-2",
17371
+ className: cn("flex flex-row gap-2", d ? "items-start" : "items-center"),
17343
17372
  children: [
17344
- (0, import_jsx_runtime.jsx)(FormLabel, {
17345
- children: u
17346
- }),
17347
- (0, import_jsx_runtime.jsx)(FormDescription, {
17348
- children: d
17349
- }),
17350
17373
  (0, import_jsx_runtime.jsx)(FormControl, {
17351
17374
  children: (0, import_jsx_runtime.jsx)(Checkbox, {
17352
17375
  "data-testid": "marimo-plugin-data-frames-boolean-checkbox",
17353
17376
  checked: e2.value,
17354
- onCheckedChange: e2.onChange
17377
+ onCheckedChange: e2.onChange,
17378
+ className: d ? "mt-0.5" : void 0
17355
17379
  })
17380
+ }),
17381
+ (0, import_jsx_runtime.jsxs)("div", {
17382
+ className: "flex flex-col gap-1",
17383
+ children: [
17384
+ (0, import_jsx_runtime.jsx)(FormLabel, {
17385
+ children: u
17386
+ }),
17387
+ (0, import_jsx_runtime.jsx)(FormDescription, {
17388
+ children: d
17389
+ })
17390
+ ]
17356
17391
  })
17357
17392
  ]
17358
17393
  }),
@@ -17476,13 +17511,14 @@ ${c}
17476
17511
  className: "flex flex-col",
17477
17512
  children: [
17478
17513
  (0, import_jsx_runtime.jsx)(FormLabel, {
17514
+ className: "mb-2",
17479
17515
  children: u
17480
17516
  }),
17481
17517
  (0, import_jsx_runtime.jsx)("div", {
17482
- className: "flex border-b mb-4 -mt-2",
17518
+ className: "flex border-b mb-4",
17483
17519
  children: h.map((r2) => (0, import_jsx_runtime.jsx)("button", {
17484
17520
  type: "button",
17485
- className: `px-4 py-2 ${g === r2 ? "border-b-2 border-primary font-medium" : "text-muted-foreground"}`,
17521
+ className: `px-4 py-2 text-sm ${g === r2 ? "border-b-2 border-primary font-medium" : "text-muted-foreground"}`,
17486
17522
  onClick: () => {
17487
17523
  let c2 = m2(r2);
17488
17524
  c2 ? e2.onChange(getDefaults(c2)) : e2.onChange({
@@ -17494,7 +17530,12 @@ ${c}
17494
17530
  }),
17495
17531
  (0, import_jsx_runtime.jsx)("div", {
17496
17532
  className: "flex flex-col",
17497
- children: _ && renderZodSchema(_, r, c, l)
17533
+ children: _ && renderZodSchema({
17534
+ schema: _,
17535
+ form: r,
17536
+ path: c,
17537
+ renderers: l
17538
+ })
17498
17539
  }, g)
17499
17540
  ]
17500
17541
  });
@@ -17522,7 +17563,12 @@ ${c}
17522
17563
  children: e2
17523
17564
  }, e2))
17524
17565
  }),
17525
- h && renderZodSchema(h, r, c, l)
17566
+ h && renderZodSchema({
17567
+ schema: h,
17568
+ form: r,
17569
+ path: c,
17570
+ renderers: l
17571
+ })
17526
17572
  ]
17527
17573
  });
17528
17574
  }
@@ -17536,7 +17582,17 @@ ${c}
17536
17582
  ...e.values
17537
17583
  ][0] ?? "")
17538
17584
  })
17539
- }) : "unwrap" in e ? renderZodSchema(maybeUnwrap(e), r, c, l) : isZodPipe(e) ? renderZodSchema(e.in, r, c, l) : (0, import_jsx_runtime.jsxs)("div", {
17585
+ }) : "unwrap" in e ? renderZodSchema({
17586
+ schema: maybeUnwrap(e),
17587
+ form: r,
17588
+ path: c,
17589
+ renderers: l
17590
+ }) : isZodPipe(e) ? renderZodSchema({
17591
+ schema: e.in,
17592
+ form: r,
17593
+ path: c,
17594
+ renderers: l
17595
+ }) : (0, import_jsx_runtime.jsxs)("div", {
17540
17596
  children: [
17541
17597
  "Unknown schema type",
17542
17598
  " ",
@@ -17567,7 +17623,12 @@ ${c}
17567
17623
  className: "flex flex-row pl-2 ml-2 border-l-2 border-disabled hover-actions-parent relative pr-5 pt-1 items-center w-fit",
17568
17624
  onKeyDown: Events.onEnter(_temp$13),
17569
17625
  children: [
17570
- renderZodSchema(c, l, `${u}[${r2}]`, f),
17626
+ renderZodSchema({
17627
+ schema: c,
17628
+ form: l,
17629
+ path: `${u}[${r2}]`,
17630
+ renderers: f
17631
+ }),
17571
17632
  E && (0, import_jsx_runtime.jsx)(Trash2, {
17572
17633
  className: "w-4 h-4 ml-2 my-1 text-muted-foreground hover:text-destructive cursor-pointer absolute right-0 top-5",
17573
17634
  onClick: () => {
@@ -18200,9 +18261,14 @@ ${c}
18200
18261
  name: c
18201
18262
  }, r[2] = c, r[3] = g);
18202
18263
  let { column_id: _, operator: v } = useWatch(g), y = columnIdRenderer(), b = [
18203
- renderZodSchema(m, l, `${c}.column_id`, [
18204
- y
18205
- ])
18264
+ renderZodSchema({
18265
+ schema: m,
18266
+ form: l,
18267
+ path: `${c}.column_id`,
18268
+ renderers: [
18269
+ y
18270
+ ]
18271
+ })
18206
18272
  ], S, w;
18207
18273
  if (r[4] !== _ || r[5] !== p || r[6] !== l || r[7] !== c ? (S = () => {
18208
18274
  let e2 = getOperatorForDtype(p.get(_)), r2 = l.getValues(`${c}.operator`);
@@ -18278,7 +18344,12 @@ ${c}
18278
18344
  if (v != null) {
18279
18345
  let e2 = getSchemaForOperator(p.get(_), v);
18280
18346
  e2.length === 1 && b.push((0, import_jsx_runtime.jsx)(import_react.Fragment, {
18281
- children: renderZodSchema(e2[0], l, `${c}.value`, [])
18347
+ children: renderZodSchema({
18348
+ schema: e2[0],
18349
+ form: l,
18350
+ path: `${c}.value`,
18351
+ renderers: []
18352
+ })
18282
18353
  }, "value"));
18283
18354
  }
18284
18355
  let T = () => (0, import_jsx_runtime.jsxs)("div", {
@@ -19078,14 +19149,14 @@ ${c}
19078
19149
  }, [
19079
19150
  B
19080
19151
  ]);
19081
- let H = `${g}::${L}`, [W, q] = (0, import_react.useState)(H);
19082
- W !== H && (q(H), E(0)), (0, import_react.useLayoutEffect)(() => {
19152
+ let H = `${g}::${L}`, [W, G] = (0, import_react.useState)(H);
19153
+ W !== H && (G(H), E(0)), (0, import_react.useLayoutEffect)(() => {
19083
19154
  var _a6;
19084
19155
  M.current && (M.current = false, (_a6 = O.current[0]) == null ? void 0 : _a6.focus());
19085
19156
  }, [
19086
19157
  H
19087
19158
  ]);
19088
- let Z = (R == null ? void 0 : R.files) ?? [], ZW = new Set(e.map((e2) => e2.path)), QW = l === "directory" || l === "all", $W = l === "file" || l === "all", eG = Z.filter((e2) => QW && e2.is_directory || $W && !e2.is_directory), tG = eG.length > 0 && eG.every((e2) => ZW.has(e2.path));
19159
+ let q = (R == null ? void 0 : R.files) ?? [], Z = new Set(e.map((e2) => e2.path)), ZW = l === "directory" || l === "all", QW = l === "file" || l === "all", $W = q.filter((e2) => ZW && e2.is_directory || QW && !e2.is_directory), tG = $W.length > 0 && $W.every((e2) => Z.has(e2.path));
19089
19160
  if (!R && z) return (0, import_jsx_runtime.jsx)(Banner, {
19090
19161
  kind: "danger",
19091
19162
  children: z.message
@@ -19128,7 +19199,7 @@ ${c}
19128
19199
  name: l2,
19129
19200
  isDirectory: d2
19130
19201
  });
19131
- ZW.has(c2) ? r(e.filter((e2) => e2.path !== c2)) : r(u ? [
19202
+ Z.has(c2) ? r(e.filter((e2) => e2.path !== c2)) : r(u ? [
19132
19203
  ...e,
19133
19204
  f2
19134
19205
  ] : [
@@ -19140,8 +19211,8 @@ ${c}
19140
19211
  }
19141
19212
  function lG() {
19142
19213
  let c2 = [];
19143
- for (let e2 of Z) {
19144
- if (!QW && e2.is_directory || ZW.has(e2.path)) continue;
19214
+ for (let e2 of q) {
19215
+ if (!ZW && e2.is_directory || Z.has(e2.path)) continue;
19145
19216
  let r2 = oG({
19146
19217
  path: e2.path,
19147
19218
  name: e2.name,
@@ -19164,10 +19235,10 @@ ${c}
19164
19235
  onPrimary: () => aG(PARENT_DIRECTORY),
19165
19236
  onToggleSelect: null
19166
19237
  },
19167
- ...Z.map((e2) => {
19238
+ ...q.map((e2) => {
19168
19239
  let r2 = e2.path;
19169
19240
  r2.startsWith("//") && (r2 = r2.slice(1));
19170
- let c2 = QW && e2.is_directory || $W && !e2.is_directory, l2 = ZW.has(r2), u2 = e2.is_directory ? "directory" : guessFileIconType(e2.name), d2 = () => sG({
19241
+ let c2 = ZW && e2.is_directory || QW && !e2.is_directory, l2 = Z.has(r2), u2 = e2.is_directory ? "directory" : guessFileIconType(e2.name), d2 = () => sG({
19171
19242
  path: r2,
19172
19243
  name: e2.name,
19173
19244
  isDirectory: e2.is_directory
@@ -19260,7 +19331,7 @@ ${c}
19260
19331
  }),
19261
19332
  R && typeof R.total_count == "number" && (0, import_jsx_runtime.jsx)("div", {
19262
19333
  className: "text-xs text-muted-foreground mt-1 px-1",
19263
- children: R.is_truncated ? `Showing ${Z.length} of ${R.total_count} items` : `${R.total_count} ${R.total_count === 1 ? "item" : "items"}`
19334
+ children: R.is_truncated ? `Showing ${q.length} of ${R.total_count} items` : `${R.total_count} ${R.total_count === 1 ? "item" : "items"}`
19264
19335
  }),
19265
19336
  (0, import_jsx_runtime.jsxs)("div", {
19266
19337
  className: "mt-3 overflow-y-auto w-full border relative",
@@ -28375,7 +28446,7 @@ ${c}
28375
28446
  return true;
28376
28447
  }
28377
28448
  }
28378
- var LazyVegaComponent = import_react.lazy(() => import("./vega-component-DphdxaJ_.js")), VegaPlugin = class {
28449
+ var LazyVegaComponent = import_react.lazy(() => import("./vega-component-C7nO5zcf.js")), VegaPlugin = class {
28379
28450
  constructor() {
28380
28451
  __publicField(this, "tagName", "marimo-vega");
28381
28452
  __publicField(this, "validator", object({
@@ -28487,7 +28558,7 @@ ${c}
28487
28558
  title: e.title
28488
28559
  });
28489
28560
  }
28490
- }, navigation_default = ".marimo{--swiper-navigation-size:44px}.marimo .swiper-button-next,.marimo .swiper-button-prev{color:var(--swiper-navigation-color,var(--swiper-theme-color));cursor:pointer;height:var(--swiper-navigation-size);width:var(--swiper-navigation-size);z-index:10;justify-content:center;align-items:center;display:flex;position:absolute;.marimo &.swiper-button-disabled{cursor:auto;opacity:.35;pointer-events:none}.marimo &.swiper-button-hidden{cursor:auto;opacity:0;pointer-events:none}.marimo .swiper-navigation-disabled &{display:none!important}& .marimo svg{object-fit:contain;transform-origin:50%;fill:currentColor;pointer-events:none;width:100%;height:100%}}.marimo .swiper-button-lock{display:none}.marimo .swiper-button-next,.marimo .swiper-button-prev{margin-top:calc(0px - var(--swiper-navigation-size)/2);top:var(--swiper-navigation-top-offset,50%)}.marimo .swiper-button-prev{left:var(--swiper-navigation-sides-offset,4px);right:auto;& .marimo .swiper-navigation-icon{transform:rotate(180deg)}}.marimo .swiper-button-next{left:auto;right:var(--swiper-navigation-sides-offset,4px)}.marimo .swiper-horizontal{& .marimo .swiper-button-next,& .marimo .swiper-button-prev,& .marimo~.swiper-button-next,& .marimo~.swiper-button-prev{margin-left:0;margin-top:calc(0px - var(--swiper-navigation-size)/2);top:var(--swiper-navigation-top-offset,50%)}.marimo &.swiper-rtl .swiper-button-next,.marimo &.swiper-rtl~.swiper-button-next,.marimo &~.swiper-button-prev,& .marimo .swiper-button-prev{left:var(--swiper-navigation-sides-offset,4px);right:auto}.marimo &.swiper-rtl .swiper-button-prev,.marimo &.swiper-rtl~.swiper-button-prev,.marimo &~.swiper-button-next,& .marimo .swiper-button-next{left:auto;right:var(--swiper-navigation-sides-offset,4px)}.marimo &.swiper-rtl .swiper-button-next,.marimo &.swiper-rtl~.swiper-button-next,.marimo &~.swiper-button-prev,& .marimo .swiper-button-prev{& .marimo .swiper-navigation-icon{transform:rotate(180deg)}}.marimo &.swiper-rtl .swiper-button-prev,.marimo &.swiper-rtl~.swiper-button-prev{& .marimo .swiper-navigation-icon{transform:rotate(0)}}}.marimo .swiper-vertical{& .marimo .swiper-button-next,& .marimo .swiper-button-prev,& .marimo~.swiper-button-next,& .marimo~.swiper-button-prev{left:var(--swiper-navigation-top-offset,50%);margin-left:calc(0px - var(--swiper-navigation-size)/2);margin-top:0;right:auto}& .marimo .swiper-button-prev,& .marimo~.swiper-button-prev{bottom:auto;top:var(--swiper-navigation-sides-offset,4px);& .marimo .swiper-navigation-icon{transform:rotate(-90deg)}}& .marimo .swiper-button-next,& .marimo~.swiper-button-next{bottom:var(--swiper-navigation-sides-offset,4px);top:auto;& .marimo .swiper-navigation-icon{transform:rotate(90deg)}}}", pagination_default = ".marimo .swiper-pagination{text-align:center;z-index:10;transition:opacity .3s;position:absolute;transform:translateZ(0);.marimo &.swiper-pagination-hidden{opacity:0}.marimo &.swiper-pagination-disabled,.marimo .swiper-pagination-disabled>&{display:none!important}}.marimo .swiper-horizontal>.swiper-pagination-bullets,.marimo .swiper-pagination-bullets.swiper-pagination-horizontal,.marimo .swiper-pagination-custom,.marimo .swiper-pagination-fraction{bottom:var(--swiper-pagination-bottom,8px);left:0;top:var(--swiper-pagination-top,auto);width:100%}.marimo .swiper-pagination-bullets-dynamic{font-size:0;overflow:hidden;& .marimo .swiper-pagination-bullet{position:relative;transform:scale(.33)}& .marimo .swiper-pagination-bullet-active,& .marimo .swiper-pagination-bullet-active-main{transform:scale(1)}& .marimo .swiper-pagination-bullet-active-prev{transform:scale(.66)}& .marimo .swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}& .marimo .swiper-pagination-bullet-active-next{transform:scale(.66)}& .marimo .swiper-pagination-bullet-active-next-next{transform:scale(.33)}}.marimo .swiper-pagination-bullet{background:var(--swiper-pagination-bullet-inactive-color,#000);border-radius:var(--swiper-pagination-bullet-border-radius,50%);height:var(--swiper-pagination-bullet-height,var(--swiper-pagination-bullet-size,8px));opacity:var(--swiper-pagination-bullet-inactive-opacity,.2);width:var(--swiper-pagination-bullet-width,var(--swiper-pagination-bullet-size,8px));display:inline-block;.marimo button&{appearance:none;box-shadow:none;border:none;margin:0;padding:0}.marimo .swiper-pagination-clickable &{cursor:pointer}.marimo &:only-child{display:none!important}}.marimo .swiper-pagination-bullet-active{background:var(--swiper-pagination-color,var(--swiper-theme-color));opacity:var(--swiper-pagination-bullet-opacity,1)}.marimo .swiper-pagination-vertical.swiper-pagination-bullets,.marimo .swiper-vertical>.swiper-pagination-bullets{left:var(--swiper-pagination-left,auto);right:var(--swiper-pagination-right,8px);top:50%;transform:translateY(-50%);& .marimo .swiper-pagination-bullet{margin:var(--swiper-pagination-bullet-vertical-gap,6px) 0;display:block}.marimo &.swiper-pagination-bullets-dynamic{width:8px;top:50%;transform:translateY(-50%);& .marimo .swiper-pagination-bullet{transition:transform .2s,top .2s;display:inline-block}}}.marimo .swiper-horizontal>.swiper-pagination-bullets,.marimo .swiper-pagination-horizontal.swiper-pagination-bullets{& .marimo .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap,4px)}.marimo &.swiper-pagination-bullets-dynamic{white-space:nowrap;left:50%;transform:translate(-50%);& .marimo .swiper-pagination-bullet{transition:transform .2s,left .2s}}}.marimo .swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:transform .2s,right .2s}.marimo .swiper-pagination-fraction{color:var(--swiper-pagination-fraction-color,inherit)}.marimo .swiper-pagination-progressbar{background:var(--swiper-pagination-progressbar-bg-color,#00000040);position:absolute;& .marimo .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color,var(--swiper-theme-color));transform-origin:0 0;width:100%;height:100%;position:absolute;top:0;left:0;transform:scale(0)}.marimo .swiper-rtl & .swiper-pagination-progressbar-fill{transform-origin:100% 0}.marimo &.swiper-pagination-horizontal,.marimo &.swiper-pagination-vertical.swiper-pagination-progressbar-opposite,.marimo .swiper-horizontal>&,.marimo .swiper-vertical>&.swiper-pagination-progressbar-opposite{height:var(--swiper-pagination-progressbar-size,4px);width:100%;top:0;left:0}.marimo &.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite,.marimo &.swiper-pagination-vertical,.marimo .swiper-horizontal>&.swiper-pagination-progressbar-opposite,.marimo .swiper-vertical>&{height:100%;width:var(--swiper-pagination-progressbar-size,4px);top:0;left:0}}.marimo .swiper-pagination-lock{display:none}", scrollbar_default = ".marimo .swiper-scrollbar{background:var(--swiper-scrollbar-bg-color,#0000001a);border-radius:var(--swiper-scrollbar-border-radius,10px);touch-action:none;position:relative;.marimo &.swiper-scrollbar-disabled,.marimo .swiper-scrollbar-disabled>&{display:none!important}.marimo &.swiper-scrollbar-horizontal,.marimo .swiper-horizontal>&{bottom:var(--swiper-scrollbar-bottom,4px);height:var(--swiper-scrollbar-size,4px);left:var(--swiper-scrollbar-sides-offset,1%);top:var(--swiper-scrollbar-top,auto);width:calc(100% - var(--swiper-scrollbar-sides-offset,1%)*2);z-index:50;position:absolute}.marimo &.swiper-scrollbar-vertical,.marimo .swiper-vertical>&{height:calc(100% - var(--swiper-scrollbar-sides-offset,1%)*2);left:var(--swiper-scrollbar-left,auto);right:var(--swiper-scrollbar-right,4px);top:var(--swiper-scrollbar-sides-offset,1%);width:var(--swiper-scrollbar-size,4px);z-index:50;position:absolute}}.marimo .swiper-scrollbar-drag{background:var(--swiper-scrollbar-drag-bg-color,#00000080);border-radius:var(--swiper-scrollbar-border-radius,10px);width:100%;height:100%;position:relative;top:0;left:0}.marimo .swiper-scrollbar-cursor-drag{cursor:move}.marimo .swiper-scrollbar-lock{display:none}", virtual_default = '.marimo .swiper-virtual .swiper-slide{-webkit-backface-visibility:hidden;transform:translateZ(0)}.marimo .swiper-virtual.swiper-css-mode{& .marimo .swiper-wrapper:after{content:"";pointer-events:none;position:absolute;top:0;left:0}}.marimo .swiper-virtual.swiper-css-mode.swiper-horizontal{& .marimo .swiper-wrapper:after{height:1px;width:var(--swiper-virtual-size)}}.marimo .swiper-virtual.swiper-css-mode.swiper-vertical{& .marimo .swiper-wrapper:after{height:var(--swiper-virtual-size);width:1px}}', swiper_default = '.marimo{--swiper-theme-color:#007aff}.marimo,.marimo .swiper{z-index:1;margin-left:auto;margin-right:auto;display:block;position:relative}.marimo .swiper{padding:0;list-style:none;overflow:hidden}.marimo .swiper-vertical>.swiper-wrapper{flex-direction:column}.marimo .swiper-wrapper{box-sizing:content-box;height:100%;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);z-index:1;width:100%;display:flex;position:relative}.marimo .swiper-android .swiper-slide,.marimo .swiper-ios .swiper-slide,.marimo .swiper-wrapper{transform:translateZ(0)}.marimo .swiper-horizontal{touch-action:pan-y}.marimo .swiper-vertical{touch-action:pan-x}.marimo .swiper-slide{flex-shrink:0;width:100%;height:100%;transition-property:transform;display:block;position:relative}.marimo .swiper-slide-invisible-blank{visibility:hidden}.marimo .swiper-autoheight,.marimo .swiper-autoheight .swiper-slide{height:auto}.marimo .swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.marimo .swiper-backface-hidden .swiper-slide{backface-visibility:hidden;transform:translateZ(0)}.marimo .swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.marimo .swiper-3d .swiper-wrapper{transform-style:preserve-3d}.marimo .swiper-3d{perspective:1200px;& .marimo .swiper-cube-shadow,& .marimo .swiper-slide{transform-style:preserve-3d}}.marimo .swiper-css-mode{& .marimo>.swiper-wrapper{scrollbar-width:none;-ms-overflow-style:none;overflow:auto;.marimo &::-webkit-scrollbar{display:none}}& .marimo>.swiper-wrapper>.swiper-slide{scroll-snap-align:start start}.marimo &.swiper-horizontal{& .marimo>.swiper-wrapper{scroll-snap-type:x mandatory}& .marimo>.swiper-wrapper>.swiper-slide:first-child{margin-inline-start:var(--swiper-slides-offset-before);scroll-margin-inline-start:var(--swiper-slides-offset-before)}& .marimo>.swiper-wrapper>.swiper-slide:last-child{margin-inline-end:var(--swiper-slides-offset-after)}}.marimo &.swiper-vertical{& .marimo>.swiper-wrapper{scroll-snap-type:y mandatory}& .marimo>.swiper-wrapper>.swiper-slide:first-child{margin-block-start:var(--swiper-slides-offset-before);scroll-margin-block-start:var(--swiper-slides-offset-before)}& .marimo>.swiper-wrapper>.swiper-slide:last-child{margin-block-end:var(--swiper-slides-offset-after)}}.marimo &.swiper-free-mode{& .marimo>.swiper-wrapper{scroll-snap-type:none}& .marimo>.swiper-wrapper>.swiper-slide{scroll-snap-align:none}}.marimo &.swiper-centered{& .marimo>.swiper-wrapper:before{content:"";flex-shrink:0;order:9999}& .marimo>.swiper-wrapper>.swiper-slide{scroll-snap-align:center center;scroll-snap-stop:always}}.marimo &.swiper-centered.swiper-horizontal{& .marimo>.swiper-wrapper>.swiper-slide:first-child{margin-inline-start:var(--swiper-centered-offset-before)}& .marimo>.swiper-wrapper:before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}}.marimo &.swiper-centered.swiper-vertical{& .marimo>.swiper-wrapper>.swiper-slide:first-child{margin-block-start:var(--swiper-centered-offset-before)}& .marimo>.swiper-wrapper:before{height:var(--swiper-centered-offset-after);width:100%;min-width:1px}}}.marimo .swiper-3d{& .marimo .swiper-slide-shadow,& .marimo .swiper-slide-shadow-bottom,& .marimo .swiper-slide-shadow-left,& .marimo .swiper-slide-shadow-right,& .marimo .swiper-slide-shadow-top{pointer-events:none;z-index:10;width:100%;height:100%;position:absolute;top:0;left:0}& .marimo .swiper-slide-shadow{background:#00000026}& .marimo .swiper-slide-shadow-left{background-image:linear-gradient(270deg,#00000080,#0000)}& .marimo .swiper-slide-shadow-right{background-image:linear-gradient(90deg,#00000080,#0000)}& .marimo .swiper-slide-shadow-top{background-image:linear-gradient(#0000,#00000080)}& .marimo .swiper-slide-shadow-bottom{background-image:linear-gradient(#00000080,#0000)}}.marimo .swiper-lazy-preloader{border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));box-sizing:border-box;transform-origin:50%;z-index:10;border-top:4px solid #0000;border-radius:50%;width:42px;height:42px;margin-top:-21px;margin-left:-21px;position:absolute;top:50%;left:50%}.marimo .swiper-watch-progress .swiper-slide-visible,.marimo .swiper:not(.swiper-watch-progress){& .marimo .swiper-lazy-preloader{animation:1s linear infinite swiper-preloader-spin}}.marimo .swiper-lazy-preloader-white{--swiper-preloader-color:#fff}.marimo .swiper-lazy-preloader-black{--swiper-preloader-color:#000}@keyframes swiper-preloader-spin{0%{transform:rotate(0)}to{transform:rotate(1turn)}}', slides_default = ".marimo .mo-slide-content{justify-content:center;width:100%;min-height:fit-content;display:flex;& .marimo .output{max-width:100%;width:unset;margin:auto 0}& .marimo>:only-child>.output:only-child{flex:1}& .marimo div:has(>marimo-ui-element>marimo-vega){flex:1;display:block!important;@media (width>=500px){min-width:350px}}}.marimo .mo-slides-notes-resize{background-color:#0000;outline:none;height:4px;transition:background-color .2s linear}.marimo .mo-slides-notes-resize:hover,.marimo .mo-slides-notes-resize[data-resize-handle-active]{background-color:var(--slate-11)}", swiper_slides_default = '.marimo{--swiper-theme-color:#007aff}.marimo,.marimo .swiper{z-index:1;margin-left:auto;margin-right:auto;display:block;position:relative}.marimo .swiper{padding:0;list-style:none;overflow:hidden}.marimo .swiper-vertical>.swiper-wrapper{flex-direction:column}.marimo .swiper-wrapper{box-sizing:content-box;height:100%;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);z-index:1;width:100%;display:flex;position:relative}.marimo .swiper-android .swiper-slide,.marimo .swiper-ios .swiper-slide,.marimo .swiper-wrapper{transform:translateZ(0)}.marimo .swiper-horizontal{touch-action:pan-y}.marimo .swiper-vertical{touch-action:pan-x}.marimo .swiper-slide{flex-shrink:0;width:100%;height:100%;transition-property:transform;display:block;position:relative}.marimo .swiper-slide-invisible-blank{visibility:hidden}.marimo .swiper-autoheight,.marimo .swiper-autoheight .swiper-slide{height:auto}.marimo .swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.marimo .swiper-backface-hidden .swiper-slide{backface-visibility:hidden;transform:translateZ(0)}.marimo .swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.marimo .swiper-3d .swiper-wrapper{transform-style:preserve-3d}.marimo .swiper-3d{perspective:1200px;& .marimo .swiper-cube-shadow,& .marimo .swiper-slide{transform-style:preserve-3d}}.marimo .swiper-css-mode{& .marimo>.swiper-wrapper{scrollbar-width:none;-ms-overflow-style:none;overflow:auto;.marimo &::-webkit-scrollbar{display:none}}& .marimo>.swiper-wrapper>.swiper-slide{scroll-snap-align:start start}.marimo &.swiper-horizontal{& .marimo>.swiper-wrapper{scroll-snap-type:x mandatory}& .marimo>.swiper-wrapper>.swiper-slide:first-child{margin-inline-start:var(--swiper-slides-offset-before);scroll-margin-inline-start:var(--swiper-slides-offset-before)}& .marimo>.swiper-wrapper>.swiper-slide:last-child{margin-inline-end:var(--swiper-slides-offset-after)}}.marimo &.swiper-vertical{& .marimo>.swiper-wrapper{scroll-snap-type:y mandatory}& .marimo>.swiper-wrapper>.swiper-slide:first-child{margin-block-start:var(--swiper-slides-offset-before);scroll-margin-block-start:var(--swiper-slides-offset-before)}& .marimo>.swiper-wrapper>.swiper-slide:last-child{margin-block-end:var(--swiper-slides-offset-after)}}.marimo &.swiper-free-mode{& .marimo>.swiper-wrapper{scroll-snap-type:none}& .marimo>.swiper-wrapper>.swiper-slide{scroll-snap-align:none}}.marimo &.swiper-centered{& .marimo>.swiper-wrapper:before{content:"";flex-shrink:0;order:9999}& .marimo>.swiper-wrapper>.swiper-slide{scroll-snap-align:center center;scroll-snap-stop:always}}.marimo &.swiper-centered.swiper-horizontal{& .marimo>.swiper-wrapper>.swiper-slide:first-child{margin-inline-start:var(--swiper-centered-offset-before)}& .marimo>.swiper-wrapper:before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}}.marimo &.swiper-centered.swiper-vertical{& .marimo>.swiper-wrapper>.swiper-slide:first-child{margin-block-start:var(--swiper-centered-offset-before)}& .marimo>.swiper-wrapper:before{height:var(--swiper-centered-offset-after);width:100%;min-width:1px}}}.marimo .swiper-3d{& .marimo .swiper-slide-shadow,& .marimo .swiper-slide-shadow-bottom,& .marimo .swiper-slide-shadow-left,& .marimo .swiper-slide-shadow-right,& .marimo .swiper-slide-shadow-top{pointer-events:none;z-index:10;width:100%;height:100%;position:absolute;top:0;left:0}& .marimo .swiper-slide-shadow{background:#00000026}& .marimo .swiper-slide-shadow-left{background-image:linear-gradient(270deg,#00000080,#0000)}& .marimo .swiper-slide-shadow-right{background-image:linear-gradient(90deg,#00000080,#0000)}& .marimo .swiper-slide-shadow-top{background-image:linear-gradient(#0000,#00000080)}& .marimo .swiper-slide-shadow-bottom{background-image:linear-gradient(#00000080,#0000)}}.marimo .swiper-lazy-preloader{border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));box-sizing:border-box;transform-origin:50%;z-index:10;border-top:4px solid #0000;border-radius:50%;width:42px;height:42px;margin-top:-21px;margin-left:-21px;position:absolute;top:50%;left:50%}.marimo .swiper-watch-progress .swiper-slide-visible,.marimo .swiper:not(.swiper-watch-progress){& .marimo .swiper-lazy-preloader{animation:1s linear infinite swiper-preloader-spin}}.marimo .swiper-lazy-preloader-white{--swiper-preloader-color:#fff}.marimo .swiper-lazy-preloader-black{--swiper-preloader-color:#000}@keyframes swiper-preloader-spin{0%{transform:rotate(0)}to{transform:rotate(1turn)}}.marimo .swiper-virtual .swiper-slide{-webkit-backface-visibility:hidden;transform:translateZ(0)}.marimo .swiper-virtual.swiper-css-mode{& .marimo .swiper-wrapper:after{content:"";pointer-events:none;position:absolute;top:0;left:0}}.marimo .swiper-virtual.swiper-css-mode.swiper-horizontal{& .marimo .swiper-wrapper:after{height:1px;width:var(--swiper-virtual-size)}}.marimo .swiper-virtual.swiper-css-mode.swiper-vertical{& .marimo .swiper-wrapper:after{height:var(--swiper-virtual-size);width:1px}}.marimo{--swiper-navigation-size:44px}.marimo .swiper-button-next,.marimo .swiper-button-prev{color:var(--swiper-navigation-color,var(--swiper-theme-color));cursor:pointer;height:var(--swiper-navigation-size);width:var(--swiper-navigation-size);z-index:10;justify-content:center;align-items:center;display:flex;position:absolute;.marimo &.swiper-button-disabled{cursor:auto;opacity:.35;pointer-events:none}.marimo &.swiper-button-hidden{cursor:auto;opacity:0;pointer-events:none}.marimo .swiper-navigation-disabled &{display:none!important}& .marimo svg{object-fit:contain;transform-origin:50%;fill:currentColor;pointer-events:none;width:100%;height:100%}}.marimo .swiper-button-lock{display:none}.marimo .swiper-button-next,.marimo .swiper-button-prev{margin-top:calc(0px - var(--swiper-navigation-size)/2);top:var(--swiper-navigation-top-offset,50%)}.marimo .swiper-button-prev{left:var(--swiper-navigation-sides-offset,4px);right:auto;& .marimo .swiper-navigation-icon{transform:rotate(180deg)}}.marimo .swiper-button-next{left:auto;right:var(--swiper-navigation-sides-offset,4px)}.marimo .swiper-horizontal{& .marimo .swiper-button-next,& .marimo .swiper-button-prev,& .marimo~.swiper-button-next,& .marimo~.swiper-button-prev{margin-left:0;margin-top:calc(0px - var(--swiper-navigation-size)/2);top:var(--swiper-navigation-top-offset,50%)}.marimo &.swiper-rtl .swiper-button-next,.marimo &.swiper-rtl~.swiper-button-next,.marimo &~.swiper-button-prev,& .marimo .swiper-button-prev{left:var(--swiper-navigation-sides-offset,4px);right:auto}.marimo &.swiper-rtl .swiper-button-prev,.marimo &.swiper-rtl~.swiper-button-prev,.marimo &~.swiper-button-next,& .marimo .swiper-button-next{left:auto;right:var(--swiper-navigation-sides-offset,4px)}.marimo &.swiper-rtl .swiper-button-next,.marimo &.swiper-rtl~.swiper-button-next,.marimo &~.swiper-button-prev,& .marimo .swiper-button-prev{& .marimo .swiper-navigation-icon{transform:rotate(180deg)}}.marimo &.swiper-rtl .swiper-button-prev,.marimo &.swiper-rtl~.swiper-button-prev{& .marimo .swiper-navigation-icon{transform:rotate(0)}}}.marimo .swiper-vertical{& .marimo .swiper-button-next,& .marimo .swiper-button-prev,& .marimo~.swiper-button-next,& .marimo~.swiper-button-prev{left:var(--swiper-navigation-top-offset,50%);margin-left:calc(0px - var(--swiper-navigation-size)/2);margin-top:0;right:auto}& .marimo .swiper-button-prev,& .marimo~.swiper-button-prev{bottom:auto;top:var(--swiper-navigation-sides-offset,4px);& .marimo .swiper-navigation-icon{transform:rotate(-90deg)}}& .marimo .swiper-button-next,& .marimo~.swiper-button-next{bottom:var(--swiper-navigation-sides-offset,4px);top:auto;& .marimo .swiper-navigation-icon{transform:rotate(90deg)}}}.marimo .swiper-pagination{text-align:center;z-index:10;transition:opacity .3s;position:absolute;transform:translateZ(0);.marimo &.swiper-pagination-hidden{opacity:0}.marimo &.swiper-pagination-disabled,.marimo .swiper-pagination-disabled>&{display:none!important}}.marimo .swiper-horizontal>.swiper-pagination-bullets,.marimo .swiper-pagination-bullets.swiper-pagination-horizontal,.marimo .swiper-pagination-custom,.marimo .swiper-pagination-fraction{bottom:var(--swiper-pagination-bottom,8px);left:0;top:var(--swiper-pagination-top,auto);width:100%}.marimo .swiper-pagination-bullets-dynamic{font-size:0;overflow:hidden;& .marimo .swiper-pagination-bullet{position:relative;transform:scale(.33)}& .marimo .swiper-pagination-bullet-active,& .marimo .swiper-pagination-bullet-active-main{transform:scale(1)}& .marimo .swiper-pagination-bullet-active-prev{transform:scale(.66)}& .marimo .swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}& .marimo .swiper-pagination-bullet-active-next{transform:scale(.66)}& .marimo .swiper-pagination-bullet-active-next-next{transform:scale(.33)}}.marimo .swiper-pagination-bullet{background:var(--swiper-pagination-bullet-inactive-color,#000);border-radius:var(--swiper-pagination-bullet-border-radius,50%);height:var(--swiper-pagination-bullet-height,var(--swiper-pagination-bullet-size,8px));opacity:var(--swiper-pagination-bullet-inactive-opacity,.2);width:var(--swiper-pagination-bullet-width,var(--swiper-pagination-bullet-size,8px));display:inline-block;.marimo button&{appearance:none;box-shadow:none;border:none;margin:0;padding:0}.marimo .swiper-pagination-clickable &{cursor:pointer}.marimo &:only-child{display:none!important}}.marimo .swiper-pagination-bullet-active{background:var(--swiper-pagination-color,var(--swiper-theme-color));opacity:var(--swiper-pagination-bullet-opacity,1)}.marimo .swiper-pagination-vertical.swiper-pagination-bullets,.marimo .swiper-vertical>.swiper-pagination-bullets{left:var(--swiper-pagination-left,auto);right:var(--swiper-pagination-right,8px);top:50%;transform:translateY(-50%);& .marimo .swiper-pagination-bullet{margin:var(--swiper-pagination-bullet-vertical-gap,6px) 0;display:block}.marimo &.swiper-pagination-bullets-dynamic{width:8px;top:50%;transform:translateY(-50%);& .marimo .swiper-pagination-bullet{transition:transform .2s,top .2s;display:inline-block}}}.marimo .swiper-horizontal>.swiper-pagination-bullets,.marimo .swiper-pagination-horizontal.swiper-pagination-bullets{& .marimo .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap,4px)}.marimo &.swiper-pagination-bullets-dynamic{white-space:nowrap;left:50%;transform:translate(-50%);& .marimo .swiper-pagination-bullet{transition:transform .2s,left .2s}}}.marimo .swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:transform .2s,right .2s}.marimo .swiper-pagination-fraction{color:var(--swiper-pagination-fraction-color,inherit)}.marimo .swiper-pagination-progressbar{background:var(--swiper-pagination-progressbar-bg-color,#00000040);position:absolute;& .marimo .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color,var(--swiper-theme-color));transform-origin:0 0;width:100%;height:100%;position:absolute;top:0;left:0;transform:scale(0)}.marimo .swiper-rtl & .swiper-pagination-progressbar-fill{transform-origin:100% 0}.marimo &.swiper-pagination-horizontal,.marimo &.swiper-pagination-vertical.swiper-pagination-progressbar-opposite,.marimo .swiper-horizontal>&,.marimo .swiper-vertical>&.swiper-pagination-progressbar-opposite{height:var(--swiper-pagination-progressbar-size,4px);width:100%;top:0;left:0}.marimo &.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite,.marimo &.swiper-pagination-vertical,.marimo .swiper-horizontal>&.swiper-pagination-progressbar-opposite,.marimo .swiper-vertical>&{height:100%;width:var(--swiper-pagination-progressbar-size,4px);top:0;left:0}}.marimo .swiper-pagination-lock{display:none}.marimo .swiper-scrollbar{background:var(--swiper-scrollbar-bg-color,#0000001a);border-radius:var(--swiper-scrollbar-border-radius,10px);touch-action:none;position:relative;.marimo &.swiper-scrollbar-disabled,.marimo .swiper-scrollbar-disabled>&{display:none!important}.marimo &.swiper-scrollbar-horizontal,.marimo .swiper-horizontal>&{bottom:var(--swiper-scrollbar-bottom,4px);height:var(--swiper-scrollbar-size,4px);left:var(--swiper-scrollbar-sides-offset,1%);top:var(--swiper-scrollbar-top,auto);width:calc(100% - var(--swiper-scrollbar-sides-offset,1%)*2);z-index:50;position:absolute}.marimo &.swiper-scrollbar-vertical,.marimo .swiper-vertical>&{height:calc(100% - var(--swiper-scrollbar-sides-offset,1%)*2);left:var(--swiper-scrollbar-left,auto);right:var(--swiper-scrollbar-right,4px);top:var(--swiper-scrollbar-sides-offset,1%);width:var(--swiper-scrollbar-size,4px);z-index:50;position:absolute}}.marimo .swiper-scrollbar-drag{background:var(--swiper-scrollbar-drag-bg-color,#00000080);border-radius:var(--swiper-scrollbar-border-radius,10px);width:100%;height:100%;position:relative;top:0;left:0}.marimo .swiper-scrollbar-cursor-drag{cursor:move}.marimo .swiper-scrollbar-lock{display:none}.marimo .mo-slides-theme{--swiper-theme-color:var(--primary);--swiper-pagination-color:var(--swiper-theme-color);--swiper-pagination-left:auto;--swiper-pagination-right:8px;--swiper-pagination-bottom:8px;--swiper-pagination-top:auto;--swiper-pagination-fraction-color:inherit;--swiper-pagination-progressbar-bg-color:#00000040;--swiper-pagination-progressbar-size:4px;--swiper-pagination-bullet-size:8px;--swiper-pagination-bullet-width:8px;--swiper-pagination-bullet-height:8px;--swiper-pagination-bullet-border-radius:50%;--swiper-pagination-bullet-inactive-color:#000;--swiper-pagination-bullet-inactive-opacity:.2;--swiper-pagination-bullet-opacity:1;--swiper-pagination-bullet-horizontal-gap:4px;--swiper-pagination-bullet-vertical-gap:6px;& .marimo .swiper-button-next,& .marimo .swiper-button-prev{opacity:0;--swiper-navigation-sides-offset:0;--swiper-navigation-size:20px;background-color:#0000001a;height:100%;margin-top:0;padding:0 15px;font-weight:900;transition:opacity .3s;top:0;bottom:0;.marimo &.swiper-button-disabled{opacity:0}.marimo &:hover:not(.swiper-button-disabled){opacity:1}}}@font-face{font-family:swiper-icons;font-style:normal;font-weight:400;src:url("data:application/font-woff;charset=utf-8;base64, d09GRgABAAAAAAZgABAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAAGRAAAABoAAAAci6qHkUdERUYAAAWgAAAAIwAAACQAYABXR1BPUwAABhQAAAAuAAAANuAY7+xHU1VCAAAFxAAAAFAAAABm2fPczU9TLzIAAAHcAAAASgAAAGBP9V5RY21hcAAAAkQAAACIAAABYt6F0cBjdnQgAAACzAAAAAQAAAAEABEBRGdhc3AAAAWYAAAACAAAAAj//wADZ2x5ZgAAAywAAADMAAAD2MHtryVoZWFkAAABbAAAADAAAAA2E2+eoWhoZWEAAAGcAAAAHwAAACQC9gDzaG10eAAAAigAAAAZAAAArgJkABFsb2NhAAAC0AAAAFoAAABaFQAUGG1heHAAAAG8AAAAHwAAACAAcABAbmFtZQAAA/gAAAE5AAACXvFdBwlwb3N0AAAFNAAAAGIAAACE5s74hXjaY2BkYGAAYpf5Hu/j+W2+MnAzMYDAzaX6QjD6/4//Bxj5GA8AuRwMYGkAPywL13jaY2BkYGA88P8Agx4j+/8fQDYfA1AEBWgDAIB2BOoAeNpjYGRgYNBh4GdgYgABEMnIABJzYNADCQAACWgAsQB42mNgYfzCOIGBlYGB0YcxjYGBwR1Kf2WQZGhhYGBiYGVmgAFGBiQQkOaawtDAoMBQxXjg/wEGPcYDDA4wNUA2CCgwsAAAO4EL6gAAeNpj2M0gyAACqxgGNWBkZ2D4/wMA+xkDdgAAAHjaY2BgYGaAYBkGRgYQiAHyGMF8FgYHIM3DwMHABGQrMOgyWDLEM1T9/w8UBfEMgLzE////P/5//f/V/xv+r4eaAAeMbAxwIUYmIMHEgKYAYjUcsDAwsLKxc3BycfPw8jEQA/gZBASFhEVExcQlJKWkZWTl5BUUlZRVVNXUNTQZBgMAAMR+E+gAEQFEAAAAKgAqACoANAA+AEgAUgBcAGYAcAB6AIQAjgCYAKIArAC2AMAAygDUAN4A6ADyAPwBBgEQARoBJAEuATgBQgFMAVYBYAFqAXQBfgGIAZIBnAGmAbIBzgHsAAB42u2NMQ6CUAyGW568x9AneYYgm4MJbhKFaExIOAVX8ApewSt4Bic4AfeAid3VOBixDxfPYEza5O+Xfi04YADggiUIULCuEJK8VhO4bSvpdnktHI5QCYtdi2sl8ZnXaHlqUrNKzdKcT8cjlq+rwZSvIVczNiezsfnP/uznmfPFBNODM2K7MTQ45YEAZqGP81AmGGcF3iPqOop0r1SPTaTbVkfUe4HXj97wYE+yNwWYxwWu4v1ugWHgo3S1XdZEVqWM7ET0cfnLGxWfkgR42o2PvWrDMBSFj/IHLaF0zKjRgdiVMwScNRAoWUoH78Y2icB/yIY09An6AH2Bdu/UB+yxopYshQiEvnvu0dURgDt8QeC8PDw7Fpji3fEA4z/PEJ6YOB5hKh4dj3EvXhxPqH/SKUY3rJ7srZ4FZnh1PMAtPhwP6fl2PMJMPDgeQ4rY8YT6Gzao0eAEA409DuggmTnFnOcSCiEiLMgxCiTI6Cq5DZUd3Qmp10vO0LaLTd2cjN4fOumlc7lUYbSQcZFkutRG7g6JKZKy0RmdLY680CDnEJ+UMkpFFe1RN7nxdVpXrC4aTtnaurOnYercZg2YVmLN/d/gczfEimrE/fs/bOuq29Zmn8tloORaXgZgGa78yO9/cnXm2BpaGvq25Dv9S4E9+5SIc9PqupJKhYFSSl47+Qcr1mYNAAAAeNptw0cKwkAAAMDZJA8Q7OUJvkLsPfZ6zFVERPy8qHh2YER+3i/BP83vIBLLySsoKimrqKqpa2hp6+jq6RsYGhmbmJqZSy0sraxtbO3sHRydnEMU4uR6yx7JJXveP7WrDycAAAAAAAH//wACeNpjYGRgYOABYhkgZgJCZgZNBkYGLQZtIJsFLMYAAAw3ALgAeNolizEKgDAQBCchRbC2sFER0YD6qVQiBCv/H9ezGI6Z5XBAw8CBK/m5iQQVauVbXLnOrMZv2oLdKFa8Pjuru2hJzGabmOSLzNMzvutpB3N42mNgZGBg4GKQYzBhYMxJLMlj4GBgAYow/P/PAJJhLM6sSoWKfWCAAwDAjgbRAAB42mNgYGBkAIIbCZo5IPrmUn0hGA0AO8EFTQAA")}.marimo :host:host{display:initial}', CarouselPlugin = class {
28561
+ }, navigation_default = ".marimo{--swiper-navigation-size:44px}.marimo .swiper-button-next,.marimo .swiper-button-prev{color:var(--swiper-navigation-color,var(--swiper-theme-color));cursor:pointer;height:var(--swiper-navigation-size);width:var(--swiper-navigation-size);z-index:10;justify-content:center;align-items:center;display:flex;position:absolute;.marimo &.swiper-button-disabled{cursor:auto;opacity:.35;pointer-events:none}.marimo &.swiper-button-hidden{cursor:auto;opacity:0;pointer-events:none}.marimo .swiper-navigation-disabled &{display:none!important}& .marimo svg{object-fit:contain;transform-origin:50%;fill:currentColor;pointer-events:none;width:100%;height:100%}}.marimo .swiper-button-lock{display:none}.marimo .swiper-button-next,.marimo .swiper-button-prev{margin-top:calc(0px - var(--swiper-navigation-size)/2);top:var(--swiper-navigation-top-offset,50%)}.marimo .swiper-button-prev{left:var(--swiper-navigation-sides-offset,4px);right:auto;& .marimo .swiper-navigation-icon{transform:rotate(180deg)}}.marimo .swiper-button-next{left:auto;right:var(--swiper-navigation-sides-offset,4px)}.marimo .swiper-horizontal{& .marimo .swiper-button-next,& .marimo .swiper-button-prev,& .marimo~.swiper-button-next,& .marimo~.swiper-button-prev{margin-left:0;margin-top:calc(0px - var(--swiper-navigation-size)/2);top:var(--swiper-navigation-top-offset,50%)}.marimo &.swiper-rtl .swiper-button-next,.marimo &.swiper-rtl~.swiper-button-next,.marimo &~.swiper-button-prev,& .marimo .swiper-button-prev{left:var(--swiper-navigation-sides-offset,4px);right:auto}.marimo &.swiper-rtl .swiper-button-prev,.marimo &.swiper-rtl~.swiper-button-prev,.marimo &~.swiper-button-next,& .marimo .swiper-button-next{left:auto;right:var(--swiper-navigation-sides-offset,4px)}.marimo &.swiper-rtl .swiper-button-next,.marimo &.swiper-rtl~.swiper-button-next,.marimo &~.swiper-button-prev,& .marimo .swiper-button-prev{& .marimo .swiper-navigation-icon{transform:rotate(180deg)}}.marimo &.swiper-rtl .swiper-button-prev,.marimo &.swiper-rtl~.swiper-button-prev{& .marimo .swiper-navigation-icon{transform:rotate(0)}}}.marimo .swiper-vertical{& .marimo .swiper-button-next,& .marimo .swiper-button-prev,& .marimo~.swiper-button-next,& .marimo~.swiper-button-prev{left:var(--swiper-navigation-top-offset,50%);margin-left:calc(0px - var(--swiper-navigation-size)/2);margin-top:0;right:auto}& .marimo .swiper-button-prev,& .marimo~.swiper-button-prev{bottom:auto;top:var(--swiper-navigation-sides-offset,4px);& .marimo .swiper-navigation-icon{transform:rotate(-90deg)}}& .marimo .swiper-button-next,& .marimo~.swiper-button-next{bottom:var(--swiper-navigation-sides-offset,4px);top:auto;& .marimo .swiper-navigation-icon{transform:rotate(90deg)}}}", pagination_default = ".marimo .swiper-pagination{text-align:center;z-index:10;transition:opacity .3s;position:absolute;transform:translateZ(0);.marimo &.swiper-pagination-hidden{opacity:0}.marimo &.swiper-pagination-disabled,.marimo .swiper-pagination-disabled>&{display:none!important}}.marimo .swiper-horizontal>.swiper-pagination-bullets,.marimo .swiper-pagination-bullets.swiper-pagination-horizontal,.marimo .swiper-pagination-custom,.marimo .swiper-pagination-fraction{bottom:var(--swiper-pagination-bottom,8px);left:0;top:var(--swiper-pagination-top,auto);width:100%}.marimo .swiper-pagination-bullets-dynamic{font-size:0;overflow:hidden;& .marimo .swiper-pagination-bullet{position:relative;transform:scale(.33)}& .marimo .swiper-pagination-bullet-active,& .marimo .swiper-pagination-bullet-active-main{transform:scale(1)}& .marimo .swiper-pagination-bullet-active-prev{transform:scale(.66)}& .marimo .swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}& .marimo .swiper-pagination-bullet-active-next{transform:scale(.66)}& .marimo .swiper-pagination-bullet-active-next-next{transform:scale(.33)}}.marimo .swiper-pagination-bullet{background:var(--swiper-pagination-bullet-inactive-color,#000);border-radius:var(--swiper-pagination-bullet-border-radius,50%);height:var(--swiper-pagination-bullet-height,var(--swiper-pagination-bullet-size,8px));opacity:var(--swiper-pagination-bullet-inactive-opacity,.2);width:var(--swiper-pagination-bullet-width,var(--swiper-pagination-bullet-size,8px));display:inline-block;.marimo button&{appearance:none;box-shadow:none;border:none;margin:0;padding:0}.marimo .swiper-pagination-clickable &{cursor:pointer}.marimo &:only-child{display:none!important}}.marimo .swiper-pagination-bullet-active{background:var(--swiper-pagination-color,var(--swiper-theme-color));opacity:var(--swiper-pagination-bullet-opacity,1)}.marimo .swiper-pagination-vertical.swiper-pagination-bullets,.marimo .swiper-vertical>.swiper-pagination-bullets{left:var(--swiper-pagination-left,auto);right:var(--swiper-pagination-right,8px);top:50%;transform:translateY(-50%);& .marimo .swiper-pagination-bullet{margin:var(--swiper-pagination-bullet-vertical-gap,6px) 0;display:block}.marimo &.swiper-pagination-bullets-dynamic{width:8px;top:50%;transform:translateY(-50%);& .marimo .swiper-pagination-bullet{transition:transform .2s,top .2s;display:inline-block}}}.marimo .swiper-horizontal>.swiper-pagination-bullets,.marimo .swiper-pagination-horizontal.swiper-pagination-bullets{& .marimo .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap,4px)}.marimo &.swiper-pagination-bullets-dynamic{white-space:nowrap;left:50%;transform:translate(-50%);& .marimo .swiper-pagination-bullet{transition:transform .2s,left .2s}}}.marimo .swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:transform .2s,right .2s}.marimo .swiper-pagination-fraction{color:var(--swiper-pagination-fraction-color,inherit)}.marimo .swiper-pagination-progressbar{background:var(--swiper-pagination-progressbar-bg-color,#00000040);position:absolute;& .marimo .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color,var(--swiper-theme-color));transform-origin:0 0;width:100%;height:100%;position:absolute;top:0;left:0;transform:scale(0)}.marimo .swiper-rtl & .swiper-pagination-progressbar-fill{transform-origin:100% 0}.marimo &.swiper-pagination-horizontal,.marimo &.swiper-pagination-vertical.swiper-pagination-progressbar-opposite,.marimo .swiper-horizontal>&,.marimo .swiper-vertical>&.swiper-pagination-progressbar-opposite{height:var(--swiper-pagination-progressbar-size,4px);width:100%;top:0;left:0}.marimo &.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite,.marimo &.swiper-pagination-vertical,.marimo .swiper-horizontal>&.swiper-pagination-progressbar-opposite,.marimo .swiper-vertical>&{height:100%;width:var(--swiper-pagination-progressbar-size,4px);top:0;left:0}}.marimo .swiper-pagination-lock{display:none}", scrollbar_default = ".marimo .swiper-scrollbar{background:var(--swiper-scrollbar-bg-color,#0000001a);border-radius:var(--swiper-scrollbar-border-radius,10px);touch-action:none;position:relative;.marimo &.swiper-scrollbar-disabled,.marimo .swiper-scrollbar-disabled>&{display:none!important}.marimo &.swiper-scrollbar-horizontal,.marimo .swiper-horizontal>&{bottom:var(--swiper-scrollbar-bottom,4px);height:var(--swiper-scrollbar-size,4px);left:var(--swiper-scrollbar-sides-offset,1%);top:var(--swiper-scrollbar-top,auto);width:calc(100% - var(--swiper-scrollbar-sides-offset,1%)*2);z-index:50;position:absolute}.marimo &.swiper-scrollbar-vertical,.marimo .swiper-vertical>&{height:calc(100% - var(--swiper-scrollbar-sides-offset,1%)*2);left:var(--swiper-scrollbar-left,auto);right:var(--swiper-scrollbar-right,4px);top:var(--swiper-scrollbar-sides-offset,1%);width:var(--swiper-scrollbar-size,4px);z-index:50;position:absolute}}.marimo .swiper-scrollbar-drag{background:var(--swiper-scrollbar-drag-bg-color,#00000080);border-radius:var(--swiper-scrollbar-border-radius,10px);width:100%;height:100%;position:relative;top:0;left:0}.marimo .swiper-scrollbar-cursor-drag{cursor:move}.marimo .swiper-scrollbar-lock{display:none}", virtual_default = '.marimo .swiper-virtual .swiper-slide{-webkit-backface-visibility:hidden;transform:translateZ(0)}.marimo .swiper-virtual.swiper-css-mode{& .marimo .swiper-wrapper:after{content:"";pointer-events:none;position:absolute;top:0;left:0}}.marimo .swiper-virtual.swiper-css-mode.swiper-horizontal{& .marimo .swiper-wrapper:after{height:1px;width:var(--swiper-virtual-size)}}.marimo .swiper-virtual.swiper-css-mode.swiper-vertical{& .marimo .swiper-wrapper:after{height:var(--swiper-virtual-size);width:1px}}', swiper_default = '.marimo{--swiper-theme-color:#007aff}.marimo,.marimo .swiper{z-index:1;margin-left:auto;margin-right:auto;display:block;position:relative}.marimo .swiper{padding:0;list-style:none;overflow:hidden}.marimo .swiper-vertical>.swiper-wrapper{flex-direction:column}.marimo .swiper-wrapper{box-sizing:content-box;height:100%;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);z-index:1;width:100%;display:flex;position:relative}.marimo .swiper-android .swiper-slide,.marimo .swiper-ios .swiper-slide,.marimo .swiper-wrapper{transform:translateZ(0)}.marimo .swiper-horizontal{touch-action:pan-y}.marimo .swiper-vertical{touch-action:pan-x}.marimo .swiper-slide{flex-shrink:0;width:100%;height:100%;transition-property:transform;display:block;position:relative}.marimo .swiper-slide-invisible-blank{visibility:hidden}.marimo .swiper-autoheight,.marimo .swiper-autoheight .swiper-slide{height:auto}.marimo .swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.marimo .swiper-backface-hidden .swiper-slide{backface-visibility:hidden;transform:translateZ(0)}.marimo .swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.marimo .swiper-3d .swiper-wrapper{transform-style:preserve-3d}.marimo .swiper-3d{perspective:1200px;& .marimo .swiper-cube-shadow,& .marimo .swiper-slide{transform-style:preserve-3d}}.marimo .swiper-css-mode{& .marimo>.swiper-wrapper{scrollbar-width:none;-ms-overflow-style:none;overflow:auto;.marimo &::-webkit-scrollbar{display:none}}& .marimo>.swiper-wrapper>.swiper-slide{scroll-snap-align:start start}.marimo &.swiper-horizontal{& .marimo>.swiper-wrapper{scroll-snap-type:x mandatory}& .marimo>.swiper-wrapper>.swiper-slide:first-child{margin-inline-start:var(--swiper-slides-offset-before);scroll-margin-inline-start:var(--swiper-slides-offset-before)}& .marimo>.swiper-wrapper>.swiper-slide:last-child{margin-inline-end:var(--swiper-slides-offset-after)}}.marimo &.swiper-vertical{& .marimo>.swiper-wrapper{scroll-snap-type:y mandatory}& .marimo>.swiper-wrapper>.swiper-slide:first-child{margin-block-start:var(--swiper-slides-offset-before);scroll-margin-block-start:var(--swiper-slides-offset-before)}& .marimo>.swiper-wrapper>.swiper-slide:last-child{margin-block-end:var(--swiper-slides-offset-after)}}.marimo &.swiper-free-mode{& .marimo>.swiper-wrapper{scroll-snap-type:none}& .marimo>.swiper-wrapper>.swiper-slide{scroll-snap-align:none}}.marimo &.swiper-centered{& .marimo>.swiper-wrapper:before{content:"";flex-shrink:0;order:9999}& .marimo>.swiper-wrapper>.swiper-slide{scroll-snap-align:center center;scroll-snap-stop:always}}.marimo &.swiper-centered.swiper-horizontal{& .marimo>.swiper-wrapper>.swiper-slide:first-child{margin-inline-start:var(--swiper-centered-offset-before)}& .marimo>.swiper-wrapper:before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}}.marimo &.swiper-centered.swiper-vertical{& .marimo>.swiper-wrapper>.swiper-slide:first-child{margin-block-start:var(--swiper-centered-offset-before)}& .marimo>.swiper-wrapper:before{height:var(--swiper-centered-offset-after);width:100%;min-width:1px}}}.marimo .swiper-3d{& .marimo .swiper-slide-shadow,& .marimo .swiper-slide-shadow-bottom,& .marimo .swiper-slide-shadow-left,& .marimo .swiper-slide-shadow-right,& .marimo .swiper-slide-shadow-top{pointer-events:none;z-index:10;width:100%;height:100%;position:absolute;top:0;left:0}& .marimo .swiper-slide-shadow{background:#00000026}& .marimo .swiper-slide-shadow-left{background-image:linear-gradient(270deg,#00000080,#0000)}& .marimo .swiper-slide-shadow-right{background-image:linear-gradient(90deg,#00000080,#0000)}& .marimo .swiper-slide-shadow-top{background-image:linear-gradient(#0000,#00000080)}& .marimo .swiper-slide-shadow-bottom{background-image:linear-gradient(#00000080,#0000)}}.marimo .swiper-lazy-preloader{border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));box-sizing:border-box;transform-origin:50%;z-index:10;border-top:4px solid #0000;border-radius:50%;width:42px;height:42px;margin-top:-21px;margin-left:-21px;position:absolute;top:50%;left:50%}.marimo .swiper-watch-progress .swiper-slide-visible,.marimo .swiper:not(.swiper-watch-progress){& .marimo .swiper-lazy-preloader{animation:1s linear infinite swiper-preloader-spin}}.marimo .swiper-lazy-preloader-white{--swiper-preloader-color:#fff}.marimo .swiper-lazy-preloader-black{--swiper-preloader-color:#000}@keyframes swiper-preloader-spin{0%{transform:rotate(0)}to{transform:rotate(1turn)}}', slides_default = ".marimo .mo-slide-content{justify-content:center;width:100%;min-height:fit-content;display:flex;& .marimo .output{max-width:100%;width:unset;margin:auto 0}& .marimo>:only-child:has(>.output:only-child,>*>.output:only-child){flex:1}& .marimo div:has(>marimo-ui-element>marimo-vega){flex:1;display:block!important;@media (width>=500px){min-width:350px}}}.marimo .mo-slides-notes-resize{background-color:#0000;outline:none;height:4px;transition:background-color .2s linear}.marimo .mo-slides-notes-resize:hover,.marimo .mo-slides-notes-resize[data-resize-handle-active]{background-color:var(--slate-11)}", swiper_slides_default = '.marimo{--swiper-theme-color:#007aff}.marimo,.marimo .swiper{z-index:1;margin-left:auto;margin-right:auto;display:block;position:relative}.marimo .swiper{padding:0;list-style:none;overflow:hidden}.marimo .swiper-vertical>.swiper-wrapper{flex-direction:column}.marimo .swiper-wrapper{box-sizing:content-box;height:100%;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);z-index:1;width:100%;display:flex;position:relative}.marimo .swiper-android .swiper-slide,.marimo .swiper-ios .swiper-slide,.marimo .swiper-wrapper{transform:translateZ(0)}.marimo .swiper-horizontal{touch-action:pan-y}.marimo .swiper-vertical{touch-action:pan-x}.marimo .swiper-slide{flex-shrink:0;width:100%;height:100%;transition-property:transform;display:block;position:relative}.marimo .swiper-slide-invisible-blank{visibility:hidden}.marimo .swiper-autoheight,.marimo .swiper-autoheight .swiper-slide{height:auto}.marimo .swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.marimo .swiper-backface-hidden .swiper-slide{backface-visibility:hidden;transform:translateZ(0)}.marimo .swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.marimo .swiper-3d .swiper-wrapper{transform-style:preserve-3d}.marimo .swiper-3d{perspective:1200px;& .marimo .swiper-cube-shadow,& .marimo .swiper-slide{transform-style:preserve-3d}}.marimo .swiper-css-mode{& .marimo>.swiper-wrapper{scrollbar-width:none;-ms-overflow-style:none;overflow:auto;.marimo &::-webkit-scrollbar{display:none}}& .marimo>.swiper-wrapper>.swiper-slide{scroll-snap-align:start start}.marimo &.swiper-horizontal{& .marimo>.swiper-wrapper{scroll-snap-type:x mandatory}& .marimo>.swiper-wrapper>.swiper-slide:first-child{margin-inline-start:var(--swiper-slides-offset-before);scroll-margin-inline-start:var(--swiper-slides-offset-before)}& .marimo>.swiper-wrapper>.swiper-slide:last-child{margin-inline-end:var(--swiper-slides-offset-after)}}.marimo &.swiper-vertical{& .marimo>.swiper-wrapper{scroll-snap-type:y mandatory}& .marimo>.swiper-wrapper>.swiper-slide:first-child{margin-block-start:var(--swiper-slides-offset-before);scroll-margin-block-start:var(--swiper-slides-offset-before)}& .marimo>.swiper-wrapper>.swiper-slide:last-child{margin-block-end:var(--swiper-slides-offset-after)}}.marimo &.swiper-free-mode{& .marimo>.swiper-wrapper{scroll-snap-type:none}& .marimo>.swiper-wrapper>.swiper-slide{scroll-snap-align:none}}.marimo &.swiper-centered{& .marimo>.swiper-wrapper:before{content:"";flex-shrink:0;order:9999}& .marimo>.swiper-wrapper>.swiper-slide{scroll-snap-align:center center;scroll-snap-stop:always}}.marimo &.swiper-centered.swiper-horizontal{& .marimo>.swiper-wrapper>.swiper-slide:first-child{margin-inline-start:var(--swiper-centered-offset-before)}& .marimo>.swiper-wrapper:before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}}.marimo &.swiper-centered.swiper-vertical{& .marimo>.swiper-wrapper>.swiper-slide:first-child{margin-block-start:var(--swiper-centered-offset-before)}& .marimo>.swiper-wrapper:before{height:var(--swiper-centered-offset-after);width:100%;min-width:1px}}}.marimo .swiper-3d{& .marimo .swiper-slide-shadow,& .marimo .swiper-slide-shadow-bottom,& .marimo .swiper-slide-shadow-left,& .marimo .swiper-slide-shadow-right,& .marimo .swiper-slide-shadow-top{pointer-events:none;z-index:10;width:100%;height:100%;position:absolute;top:0;left:0}& .marimo .swiper-slide-shadow{background:#00000026}& .marimo .swiper-slide-shadow-left{background-image:linear-gradient(270deg,#00000080,#0000)}& .marimo .swiper-slide-shadow-right{background-image:linear-gradient(90deg,#00000080,#0000)}& .marimo .swiper-slide-shadow-top{background-image:linear-gradient(#0000,#00000080)}& .marimo .swiper-slide-shadow-bottom{background-image:linear-gradient(#00000080,#0000)}}.marimo .swiper-lazy-preloader{border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));box-sizing:border-box;transform-origin:50%;z-index:10;border-top:4px solid #0000;border-radius:50%;width:42px;height:42px;margin-top:-21px;margin-left:-21px;position:absolute;top:50%;left:50%}.marimo .swiper-watch-progress .swiper-slide-visible,.marimo .swiper:not(.swiper-watch-progress){& .marimo .swiper-lazy-preloader{animation:1s linear infinite swiper-preloader-spin}}.marimo .swiper-lazy-preloader-white{--swiper-preloader-color:#fff}.marimo .swiper-lazy-preloader-black{--swiper-preloader-color:#000}@keyframes swiper-preloader-spin{0%{transform:rotate(0)}to{transform:rotate(1turn)}}.marimo .swiper-virtual .swiper-slide{-webkit-backface-visibility:hidden;transform:translateZ(0)}.marimo .swiper-virtual.swiper-css-mode{& .marimo .swiper-wrapper:after{content:"";pointer-events:none;position:absolute;top:0;left:0}}.marimo .swiper-virtual.swiper-css-mode.swiper-horizontal{& .marimo .swiper-wrapper:after{height:1px;width:var(--swiper-virtual-size)}}.marimo .swiper-virtual.swiper-css-mode.swiper-vertical{& .marimo .swiper-wrapper:after{height:var(--swiper-virtual-size);width:1px}}.marimo{--swiper-navigation-size:44px}.marimo .swiper-button-next,.marimo .swiper-button-prev{color:var(--swiper-navigation-color,var(--swiper-theme-color));cursor:pointer;height:var(--swiper-navigation-size);width:var(--swiper-navigation-size);z-index:10;justify-content:center;align-items:center;display:flex;position:absolute;.marimo &.swiper-button-disabled{cursor:auto;opacity:.35;pointer-events:none}.marimo &.swiper-button-hidden{cursor:auto;opacity:0;pointer-events:none}.marimo .swiper-navigation-disabled &{display:none!important}& .marimo svg{object-fit:contain;transform-origin:50%;fill:currentColor;pointer-events:none;width:100%;height:100%}}.marimo .swiper-button-lock{display:none}.marimo .swiper-button-next,.marimo .swiper-button-prev{margin-top:calc(0px - var(--swiper-navigation-size)/2);top:var(--swiper-navigation-top-offset,50%)}.marimo .swiper-button-prev{left:var(--swiper-navigation-sides-offset,4px);right:auto;& .marimo .swiper-navigation-icon{transform:rotate(180deg)}}.marimo .swiper-button-next{left:auto;right:var(--swiper-navigation-sides-offset,4px)}.marimo .swiper-horizontal{& .marimo .swiper-button-next,& .marimo .swiper-button-prev,& .marimo~.swiper-button-next,& .marimo~.swiper-button-prev{margin-left:0;margin-top:calc(0px - var(--swiper-navigation-size)/2);top:var(--swiper-navigation-top-offset,50%)}.marimo &.swiper-rtl .swiper-button-next,.marimo &.swiper-rtl~.swiper-button-next,.marimo &~.swiper-button-prev,& .marimo .swiper-button-prev{left:var(--swiper-navigation-sides-offset,4px);right:auto}.marimo &.swiper-rtl .swiper-button-prev,.marimo &.swiper-rtl~.swiper-button-prev,.marimo &~.swiper-button-next,& .marimo .swiper-button-next{left:auto;right:var(--swiper-navigation-sides-offset,4px)}.marimo &.swiper-rtl .swiper-button-next,.marimo &.swiper-rtl~.swiper-button-next,.marimo &~.swiper-button-prev,& .marimo .swiper-button-prev{& .marimo .swiper-navigation-icon{transform:rotate(180deg)}}.marimo &.swiper-rtl .swiper-button-prev,.marimo &.swiper-rtl~.swiper-button-prev{& .marimo .swiper-navigation-icon{transform:rotate(0)}}}.marimo .swiper-vertical{& .marimo .swiper-button-next,& .marimo .swiper-button-prev,& .marimo~.swiper-button-next,& .marimo~.swiper-button-prev{left:var(--swiper-navigation-top-offset,50%);margin-left:calc(0px - var(--swiper-navigation-size)/2);margin-top:0;right:auto}& .marimo .swiper-button-prev,& .marimo~.swiper-button-prev{bottom:auto;top:var(--swiper-navigation-sides-offset,4px);& .marimo .swiper-navigation-icon{transform:rotate(-90deg)}}& .marimo .swiper-button-next,& .marimo~.swiper-button-next{bottom:var(--swiper-navigation-sides-offset,4px);top:auto;& .marimo .swiper-navigation-icon{transform:rotate(90deg)}}}.marimo .swiper-pagination{text-align:center;z-index:10;transition:opacity .3s;position:absolute;transform:translateZ(0);.marimo &.swiper-pagination-hidden{opacity:0}.marimo &.swiper-pagination-disabled,.marimo .swiper-pagination-disabled>&{display:none!important}}.marimo .swiper-horizontal>.swiper-pagination-bullets,.marimo .swiper-pagination-bullets.swiper-pagination-horizontal,.marimo .swiper-pagination-custom,.marimo .swiper-pagination-fraction{bottom:var(--swiper-pagination-bottom,8px);left:0;top:var(--swiper-pagination-top,auto);width:100%}.marimo .swiper-pagination-bullets-dynamic{font-size:0;overflow:hidden;& .marimo .swiper-pagination-bullet{position:relative;transform:scale(.33)}& .marimo .swiper-pagination-bullet-active,& .marimo .swiper-pagination-bullet-active-main{transform:scale(1)}& .marimo .swiper-pagination-bullet-active-prev{transform:scale(.66)}& .marimo .swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}& .marimo .swiper-pagination-bullet-active-next{transform:scale(.66)}& .marimo .swiper-pagination-bullet-active-next-next{transform:scale(.33)}}.marimo .swiper-pagination-bullet{background:var(--swiper-pagination-bullet-inactive-color,#000);border-radius:var(--swiper-pagination-bullet-border-radius,50%);height:var(--swiper-pagination-bullet-height,var(--swiper-pagination-bullet-size,8px));opacity:var(--swiper-pagination-bullet-inactive-opacity,.2);width:var(--swiper-pagination-bullet-width,var(--swiper-pagination-bullet-size,8px));display:inline-block;.marimo button&{appearance:none;box-shadow:none;border:none;margin:0;padding:0}.marimo .swiper-pagination-clickable &{cursor:pointer}.marimo &:only-child{display:none!important}}.marimo .swiper-pagination-bullet-active{background:var(--swiper-pagination-color,var(--swiper-theme-color));opacity:var(--swiper-pagination-bullet-opacity,1)}.marimo .swiper-pagination-vertical.swiper-pagination-bullets,.marimo .swiper-vertical>.swiper-pagination-bullets{left:var(--swiper-pagination-left,auto);right:var(--swiper-pagination-right,8px);top:50%;transform:translateY(-50%);& .marimo .swiper-pagination-bullet{margin:var(--swiper-pagination-bullet-vertical-gap,6px) 0;display:block}.marimo &.swiper-pagination-bullets-dynamic{width:8px;top:50%;transform:translateY(-50%);& .marimo .swiper-pagination-bullet{transition:transform .2s,top .2s;display:inline-block}}}.marimo .swiper-horizontal>.swiper-pagination-bullets,.marimo .swiper-pagination-horizontal.swiper-pagination-bullets{& .marimo .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap,4px)}.marimo &.swiper-pagination-bullets-dynamic{white-space:nowrap;left:50%;transform:translate(-50%);& .marimo .swiper-pagination-bullet{transition:transform .2s,left .2s}}}.marimo .swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:transform .2s,right .2s}.marimo .swiper-pagination-fraction{color:var(--swiper-pagination-fraction-color,inherit)}.marimo .swiper-pagination-progressbar{background:var(--swiper-pagination-progressbar-bg-color,#00000040);position:absolute;& .marimo .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color,var(--swiper-theme-color));transform-origin:0 0;width:100%;height:100%;position:absolute;top:0;left:0;transform:scale(0)}.marimo .swiper-rtl & .swiper-pagination-progressbar-fill{transform-origin:100% 0}.marimo &.swiper-pagination-horizontal,.marimo &.swiper-pagination-vertical.swiper-pagination-progressbar-opposite,.marimo .swiper-horizontal>&,.marimo .swiper-vertical>&.swiper-pagination-progressbar-opposite{height:var(--swiper-pagination-progressbar-size,4px);width:100%;top:0;left:0}.marimo &.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite,.marimo &.swiper-pagination-vertical,.marimo .swiper-horizontal>&.swiper-pagination-progressbar-opposite,.marimo .swiper-vertical>&{height:100%;width:var(--swiper-pagination-progressbar-size,4px);top:0;left:0}}.marimo .swiper-pagination-lock{display:none}.marimo .swiper-scrollbar{background:var(--swiper-scrollbar-bg-color,#0000001a);border-radius:var(--swiper-scrollbar-border-radius,10px);touch-action:none;position:relative;.marimo &.swiper-scrollbar-disabled,.marimo .swiper-scrollbar-disabled>&{display:none!important}.marimo &.swiper-scrollbar-horizontal,.marimo .swiper-horizontal>&{bottom:var(--swiper-scrollbar-bottom,4px);height:var(--swiper-scrollbar-size,4px);left:var(--swiper-scrollbar-sides-offset,1%);top:var(--swiper-scrollbar-top,auto);width:calc(100% - var(--swiper-scrollbar-sides-offset,1%)*2);z-index:50;position:absolute}.marimo &.swiper-scrollbar-vertical,.marimo .swiper-vertical>&{height:calc(100% - var(--swiper-scrollbar-sides-offset,1%)*2);left:var(--swiper-scrollbar-left,auto);right:var(--swiper-scrollbar-right,4px);top:var(--swiper-scrollbar-sides-offset,1%);width:var(--swiper-scrollbar-size,4px);z-index:50;position:absolute}}.marimo .swiper-scrollbar-drag{background:var(--swiper-scrollbar-drag-bg-color,#00000080);border-radius:var(--swiper-scrollbar-border-radius,10px);width:100%;height:100%;position:relative;top:0;left:0}.marimo .swiper-scrollbar-cursor-drag{cursor:move}.marimo .swiper-scrollbar-lock{display:none}.marimo .mo-slides-theme{--swiper-theme-color:var(--primary);--swiper-pagination-color:var(--swiper-theme-color);--swiper-pagination-left:auto;--swiper-pagination-right:8px;--swiper-pagination-bottom:8px;--swiper-pagination-top:auto;--swiper-pagination-fraction-color:inherit;--swiper-pagination-progressbar-bg-color:#00000040;--swiper-pagination-progressbar-size:4px;--swiper-pagination-bullet-size:8px;--swiper-pagination-bullet-width:8px;--swiper-pagination-bullet-height:8px;--swiper-pagination-bullet-border-radius:50%;--swiper-pagination-bullet-inactive-color:#000;--swiper-pagination-bullet-inactive-opacity:.2;--swiper-pagination-bullet-opacity:1;--swiper-pagination-bullet-horizontal-gap:4px;--swiper-pagination-bullet-vertical-gap:6px;& .marimo .swiper-button-next,& .marimo .swiper-button-prev{opacity:0;--swiper-navigation-sides-offset:0;--swiper-navigation-size:20px;background-color:#0000001a;height:100%;margin-top:0;padding:0 15px;font-weight:900;transition:opacity .3s;top:0;bottom:0;.marimo &.swiper-button-disabled{opacity:0}.marimo &:hover:not(.swiper-button-disabled){opacity:1}}}@font-face{font-family:swiper-icons;font-style:normal;font-weight:400;src:url("data:application/font-woff;charset=utf-8;base64, d09GRgABAAAAAAZgABAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAAGRAAAABoAAAAci6qHkUdERUYAAAWgAAAAIwAAACQAYABXR1BPUwAABhQAAAAuAAAANuAY7+xHU1VCAAAFxAAAAFAAAABm2fPczU9TLzIAAAHcAAAASgAAAGBP9V5RY21hcAAAAkQAAACIAAABYt6F0cBjdnQgAAACzAAAAAQAAAAEABEBRGdhc3AAAAWYAAAACAAAAAj//wADZ2x5ZgAAAywAAADMAAAD2MHtryVoZWFkAAABbAAAADAAAAA2E2+eoWhoZWEAAAGcAAAAHwAAACQC9gDzaG10eAAAAigAAAAZAAAArgJkABFsb2NhAAAC0AAAAFoAAABaFQAUGG1heHAAAAG8AAAAHwAAACAAcABAbmFtZQAAA/gAAAE5AAACXvFdBwlwb3N0AAAFNAAAAGIAAACE5s74hXjaY2BkYGAAYpf5Hu/j+W2+MnAzMYDAzaX6QjD6/4//Bxj5GA8AuRwMYGkAPywL13jaY2BkYGA88P8Agx4j+/8fQDYfA1AEBWgDAIB2BOoAeNpjYGRgYNBh4GdgYgABEMnIABJzYNADCQAACWgAsQB42mNgYfzCOIGBlYGB0YcxjYGBwR1Kf2WQZGhhYGBiYGVmgAFGBiQQkOaawtDAoMBQxXjg/wEGPcYDDA4wNUA2CCgwsAAAO4EL6gAAeNpj2M0gyAACqxgGNWBkZ2D4/wMA+xkDdgAAAHjaY2BgYGaAYBkGRgYQiAHyGMF8FgYHIM3DwMHABGQrMOgyWDLEM1T9/w8UBfEMgLzE////P/5//f/V/xv+r4eaAAeMbAxwIUYmIMHEgKYAYjUcsDAwsLKxc3BycfPw8jEQA/gZBASFhEVExcQlJKWkZWTl5BUUlZRVVNXUNTQZBgMAAMR+E+gAEQFEAAAAKgAqACoANAA+AEgAUgBcAGYAcAB6AIQAjgCYAKIArAC2AMAAygDUAN4A6ADyAPwBBgEQARoBJAEuATgBQgFMAVYBYAFqAXQBfgGIAZIBnAGmAbIBzgHsAAB42u2NMQ6CUAyGW568x9AneYYgm4MJbhKFaExIOAVX8ApewSt4Bic4AfeAid3VOBixDxfPYEza5O+Xfi04YADggiUIULCuEJK8VhO4bSvpdnktHI5QCYtdi2sl8ZnXaHlqUrNKzdKcT8cjlq+rwZSvIVczNiezsfnP/uznmfPFBNODM2K7MTQ45YEAZqGP81AmGGcF3iPqOop0r1SPTaTbVkfUe4HXj97wYE+yNwWYxwWu4v1ugWHgo3S1XdZEVqWM7ET0cfnLGxWfkgR42o2PvWrDMBSFj/IHLaF0zKjRgdiVMwScNRAoWUoH78Y2icB/yIY09An6AH2Bdu/UB+yxopYshQiEvnvu0dURgDt8QeC8PDw7Fpji3fEA4z/PEJ6YOB5hKh4dj3EvXhxPqH/SKUY3rJ7srZ4FZnh1PMAtPhwP6fl2PMJMPDgeQ4rY8YT6Gzao0eAEA409DuggmTnFnOcSCiEiLMgxCiTI6Cq5DZUd3Qmp10vO0LaLTd2cjN4fOumlc7lUYbSQcZFkutRG7g6JKZKy0RmdLY680CDnEJ+UMkpFFe1RN7nxdVpXrC4aTtnaurOnYercZg2YVmLN/d/gczfEimrE/fs/bOuq29Zmn8tloORaXgZgGa78yO9/cnXm2BpaGvq25Dv9S4E9+5SIc9PqupJKhYFSSl47+Qcr1mYNAAAAeNptw0cKwkAAAMDZJA8Q7OUJvkLsPfZ6zFVERPy8qHh2YER+3i/BP83vIBLLySsoKimrqKqpa2hp6+jq6RsYGhmbmJqZSy0sraxtbO3sHRydnEMU4uR6yx7JJXveP7WrDycAAAAAAAH//wACeNpjYGRgYOABYhkgZgJCZgZNBkYGLQZtIJsFLMYAAAw3ALgAeNolizEKgDAQBCchRbC2sFER0YD6qVQiBCv/H9ezGI6Z5XBAw8CBK/m5iQQVauVbXLnOrMZv2oLdKFa8Pjuru2hJzGabmOSLzNMzvutpB3N42mNgZGBg4GKQYzBhYMxJLMlj4GBgAYow/P/PAJJhLM6sSoWKfWCAAwDAjgbRAAB42mNgYGBkAIIbCZo5IPrmUn0hGA0AO8EFTQAA")}.marimo :host:host{display:initial}', CarouselPlugin = class {
28491
28562
  constructor() {
28492
28563
  __publicField(this, "tagName", "marimo-carousel");
28493
28564
  __publicField(this, "validator", object({
@@ -38147,7 +38218,7 @@ ${c}
38147
38218
  function _temp2$2(e) {
38148
38219
  e.target === e.currentTarget && e.key === "Enter" && (e.preventDefault(), e.stopPropagation(), e.currentTarget.click());
38149
38220
  }
38150
- var LazySlidesComponent = import_react.lazy(() => import("./reveal-component-DxV4Ppa2.js"));
38221
+ var LazySlidesComponent = import_react.lazy(() => import("./reveal-component-IoHipy82.js"));
38151
38222
  const SlidesLayoutRenderer = ({ layout: e, setLayout: r, cells: c, mode: l }) => {
38152
38223
  var _a5;
38153
38224
  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), [
@@ -38790,23 +38861,12 @@ ${c}
38790
38861
  return r;
38791
38862
  }
38792
38863
  async function downloadAsHTML(e) {
38793
- let r = getRequestClient(), { filename: c, includeCode: l } = e, u = await r.exportAsHTML({
38864
+ let r = getRequestClient(), { includeCode: c } = e;
38865
+ downloadExportedFile(await r.exportAsHTML({
38794
38866
  download: true,
38795
- includeCode: l,
38867
+ includeCode: c,
38796
38868
  files: VirtualFileTracker.INSTANCE.filenames()
38797
- }), d = Paths.basename(c) ?? "notebook.py";
38798
- downloadBlob(new Blob([
38799
- u
38800
- ], {
38801
- type: "text/html"
38802
- }), Filenames.toHTML(d));
38803
- }
38804
- function cellDomProps(e, r) {
38805
- return {
38806
- "data-cell-id": e,
38807
- "data-cell-name": r,
38808
- id: HTMLCellId.create(e)
38809
- };
38869
+ }));
38810
38870
  }
38811
38871
  var import_compiler_runtime$5 = require_compiler_runtime(), DELAY_PER_CELL = 30;
38812
38872
  function useDelayVisibility(e, r) {
@@ -38997,7 +39057,7 @@ ${c}
38997
39057
  "data-testid": "notebook-action-download-python",
38998
39058
  children: [
38999
39059
  e3,
39000
- "Download as .py"
39060
+ "Download notebook source"
39001
39061
  ]
39002
39062
  }, "download-python"), r[18] = g, r[19] = c2), y.push(c2);
39003
39063
  }
@@ -39060,20 +39120,20 @@ ${c}
39060
39120
  }, false), r[0] = _, r[1] = c, r[2] = y, r[3] = v, r[4] = f, r[5] = M) : M = r[5];
39061
39121
  let I = M, L;
39062
39122
  r[6] === f ? L = r[7] : (L = outputIsLoading(f), r[6] = f, r[7] = L);
39063
- let R = L, z = E && w !== "present", B;
39064
- if (r[8] !== b || r[9] !== m || r[10] !== z || r[11] !== S || r[12] !== p) {
39123
+ let R = L, B = E && w !== "present", H;
39124
+ if (r[8] !== b || r[9] !== m || r[10] !== B || r[11] !== S || r[12] !== p) {
39065
39125
  let e2 = new MarkdownLanguageAdapter().isSupported(b);
39066
- B = cn("marimo-cell", "hover-actions-parent empty:invisible", !S && !z ? publishedCellClasses({
39126
+ H = cn("marimo-cell", "hover-actions-parent empty:invisible", !S && !B ? publishedCellClasses({
39067
39127
  errored: m,
39068
39128
  stopped: p
39069
39129
  }) : {
39070
39130
  "has-error": m,
39071
39131
  stopped: p,
39072
39132
  borderless: e2
39073
- }), r[8] = b, r[9] = m, r[10] = z, r[11] = S, r[12] = p, r[13] = B;
39074
- } else B = r[13];
39075
- let H = B;
39076
- if (w === "read" && S || z) {
39133
+ }), r[8] = b, r[9] = m, r[10] = B, r[11] = S, r[12] = p, r[13] = H;
39134
+ } else H = r[13];
39135
+ let W = H;
39136
+ if (w === "read" && S || B) {
39077
39137
  let e2;
39078
39138
  r[14] !== d || r[15] !== R || r[16] !== c || r[17] !== I ? (e2 = (0, import_jsx_runtime.jsx)(OutputArea, {
39079
39139
  allowExpand: true,
@@ -39109,10 +39169,10 @@ ${c}
39109
39169
  debuggerActive: false
39110
39170
  }), r[31] = d, r[32] = l, r[33] = _, r[34] = T, r[35] = I, r[36] = O2) : O2 = r[36];
39111
39171
  let M2;
39112
- return r[37] !== H || r[38] !== E2 || r[39] !== O2 || r[40] !== y2 || r[41] !== S2 || r[42] !== w2 ? (M2 = (0, import_jsx_runtime.jsxs)("div", {
39172
+ return r[37] !== W || r[38] !== E2 || r[39] !== O2 || r[40] !== y2 || r[41] !== S2 || r[42] !== w2 ? (M2 = (0, import_jsx_runtime.jsxs)("div", {
39113
39173
  tabIndex: -1,
39114
39174
  ref: j,
39115
- className: H,
39175
+ className: W,
39116
39176
  ...y2,
39117
39177
  children: [
39118
39178
  S2,
@@ -39120,7 +39180,7 @@ ${c}
39120
39180
  E2,
39121
39181
  O2
39122
39182
  ]
39123
- }), r[37] = H, r[38] = E2, r[39] = O2, r[40] = y2, r[41] = S2, r[42] = w2, r[43] = M2) : M2 = r[43], M2;
39183
+ }), r[37] = W, r[38] = E2, r[39] = O2, r[40] = y2, r[41] = S2, r[42] = w2, r[43] = M2) : M2 = r[43], M2;
39124
39184
  }
39125
39185
  if (shouldHidePublishedCell({
39126
39186
  errored: m,
@@ -39129,25 +39189,25 @@ ${c}
39129
39189
  output: c,
39130
39190
  showErrorTracebacks: O
39131
39191
  })) return null;
39132
- let W;
39133
- r[44] !== d || r[45] !== T ? (W = cellDomProps(d, T), r[44] = d, r[45] = T, r[46] = W) : W = r[46];
39134
- let G = w === "edit", q;
39135
- r[47] !== d || r[48] !== R || r[49] !== c || r[50] !== I || r[51] !== G ? (q = (0, import_jsx_runtime.jsx)(OutputArea, {
39136
- allowExpand: G,
39192
+ let G;
39193
+ r[44] !== d || r[45] !== T ? (G = cellDomProps(d, T), r[44] = d, r[45] = T, r[46] = G) : G = r[46];
39194
+ let q = w === "edit", Z;
39195
+ r[47] !== d || r[48] !== R || r[49] !== c || r[50] !== I || r[51] !== q ? (Z = (0, import_jsx_runtime.jsx)(OutputArea, {
39196
+ allowExpand: q,
39137
39197
  output: c,
39138
39198
  className: CSSClasses.outputArea,
39139
39199
  cellId: d,
39140
39200
  stale: I,
39141
39201
  loading: R
39142
- }), r[47] = d, r[48] = R, r[49] = c, r[50] = I, r[51] = G, r[52] = q) : q = r[52];
39143
- let Z;
39144
- return r[53] !== H || r[54] !== W || r[55] !== q ? (Z = (0, import_jsx_runtime.jsx)("div", {
39202
+ }), r[47] = d, r[48] = R, r[49] = c, r[50] = I, r[51] = q, r[52] = Z) : Z = r[52];
39203
+ let QW;
39204
+ return r[53] !== W || r[54] !== G || r[55] !== Z ? (QW = (0, import_jsx_runtime.jsx)("div", {
39145
39205
  tabIndex: -1,
39146
39206
  ref: j,
39147
- className: H,
39148
- ...W,
39149
- children: q
39150
- }), r[53] = H, r[54] = W, r[55] = q, r[56] = Z) : Z = r[56], Z;
39207
+ className: W,
39208
+ ...G,
39209
+ children: Z
39210
+ }), r[53] = W, r[54] = G, r[55] = Z, r[56] = QW) : QW = r[56], QW;
39151
39211
  });
39152
39212
  VerticalCell.displayName = "VerticalCell";
39153
39213
  const VerticalLayoutPlugin = {
@@ -39186,7 +39246,6 @@ ${c}
39186
39246
  }
39187
39247
  async function _temp3() {
39188
39248
  document.getElementById("App") && await downloadAsHTML({
39189
- filename: document.title,
39190
39249
  includeCode: true
39191
39250
  });
39192
39251
  }
@@ -39902,6 +39961,7 @@ ${c}
39902
39961
  case "sql-schema-list-preview":
39903
39962
  case "datasets":
39904
39963
  case "data-source-connections":
39964
+ case "data-source-discovery-result":
39905
39965
  case "validate-sql-result":
39906
39966
  case "storage-namespaces":
39907
39967
  case "storage-entries":
@@ -40230,6 +40290,7 @@ ${c}
40230
40290
  constructor(e = {}) {
40231
40291
  __publicField(this, "sessionReady", new Deferred());
40232
40292
  __publicField(this, "nextSessionGeneration", 0);
40293
+ __publicField(this, "activeSessionGenerations", /* @__PURE__ */ new Set());
40233
40294
  __publicField(this, "appTransition", Promise.resolve());
40234
40295
  __publicField(this, "workerReady", new Deferred());
40235
40296
  __publicField(this, "initialized", new Deferred());
@@ -40283,6 +40344,7 @@ ${c}
40283
40344
  __publicField(this, "previewSQLTableList", throwNotImplemented);
40284
40345
  __publicField(this, "previewSQLSchemaList", throwNotImplemented);
40285
40346
  __publicField(this, "previewDataSourceConnection", throwNotImplemented);
40347
+ __publicField(this, "discoverDataSources", throwNotImplemented);
40286
40348
  __publicField(this, "validateSQL", throwNotImplemented);
40287
40349
  __publicField(this, "openFile", throwNotImplemented);
40288
40350
  __publicField(this, "sendListFiles", throwNotImplemented);
@@ -40296,9 +40358,11 @@ ${c}
40296
40358
  __publicField(this, "sendUpdateFile", throwNotImplemented);
40297
40359
  __publicField(this, "sendFileDetails", throwNotImplemented);
40298
40360
  __publicField(this, "openTutorial", throwNotImplemented);
40361
+ __publicField(this, "getExportAvailability", throwNotImplemented);
40299
40362
  __publicField(this, "exportAsHTML", throwNotImplemented);
40300
40363
  __publicField(this, "exportAsIPYNB", throwNotImplemented);
40301
40364
  __publicField(this, "exportAsMarkdown", throwNotImplemented);
40365
+ __publicField(this, "exportAsScript", throwNotImplemented);
40302
40366
  __publicField(this, "exportAsPDF", throwNotImplemented);
40303
40367
  __publicField(this, "autoExportAsHTML", throwNotImplemented);
40304
40368
  __publicField(this, "autoExportAsMarkdown", throwNotImplemented);
@@ -40335,7 +40399,7 @@ ${c}
40335
40399
  Logger.error("Islands initialization error:", e), this.store.set(islandsInitializedAtom, e), this.initialized.reject(Error(e));
40336
40400
  }), this.rpc.addMessageListener("kernelMessage", (e) => {
40337
40401
  var _a5;
40338
- (_a5 = this.messageConsumer) == null ? void 0 : _a5.call(this, e);
40402
+ this.activeSessionGenerations.has(e.sessionGeneration) && ((_a5 = this.messageConsumer) == null ? void 0 : _a5.call(this, e));
40339
40403
  });
40340
40404
  }
40341
40405
  async initializeApps() {
@@ -40354,7 +40418,7 @@ ${c}
40354
40418
  parseMarimoIslandApps(this.root);
40355
40419
  return;
40356
40420
  }
40357
- e.length > 0 && this.store.set(islandsPendingInitialRunsAtom, new Set(e.map((e2, r2) => this.nextSessionGeneration + r2 + 1))), parseMarimoIslandApps(this.root);
40421
+ e.length > 0 && (this.activeSessionGenerations.clear(), this.store.set(islandsPendingInitialRunsAtom, new Set(e.map((e2, r2) => this.nextSessionGeneration + r2 + 1)))), parseMarimoIslandApps(this.root);
40358
40422
  for (let c2 of e) {
40359
40423
  let e2 = u || createMarimoFile(c2);
40360
40424
  Logger.debug(`App ${c2.id} marimo file:
@@ -40364,7 +40428,7 @@ ${c}
40364
40428
  appId: c2.id,
40365
40429
  sessionGeneration: ++this.nextSessionGeneration
40366
40430
  }, d = this.session, f = r && d !== void 0;
40367
- f && this.store.set(notebookAtom, initialNotebookState()), (r || !d) && (r && this.sessionReady.status !== "pending" && (this.sessionReady = new Deferred()), this.session = {
40431
+ this.activeSessionGenerations.add(l2.sessionGeneration), f && this.store.set(notebookAtom, initialNotebookState()), (r || !d) && (r && this.sessionReady.status !== "pending" && (this.sessionReady = new Deferred()), this.session = {
40368
40432
  ...l2,
40369
40433
  code: r ? e2 : void 0
40370
40434
  });
@@ -40372,14 +40436,14 @@ ${c}
40372
40436
  try {
40373
40437
  await p, this.sessionReady.status === "pending" && this.session && this.sessionReady.resolve(this.session);
40374
40438
  } catch (e3) {
40375
- if (((_d4 = this.session) == null ? void 0 : _d4.sessionGeneration) === l2.sessionGeneration && (this.session = d), Logger.error(`Failed to start session for app ${c2.id}:`, e3), r) throw e3;
40439
+ if (this.activeSessionGenerations.delete(l2.sessionGeneration), ((_d4 = this.session) == null ? void 0 : _d4.sessionGeneration) === l2.sessionGeneration && (this.session = d, d && this.activeSessionGenerations.add(d.sessionGeneration)), Logger.error(`Failed to start session for app ${c2.id}:`, e3), r) throw e3;
40376
40440
  }
40377
40441
  }
40378
40442
  }
40379
40443
  async stopSession(e) {
40380
40444
  await this.enqueueAppTransition(async () => {
40381
40445
  let r = this.session;
40382
- (r == null ? void 0 : r.code) === void 0 || e && r.appId !== e || (await this.rpc.proxy.request.stopSession({
40446
+ (r == null ? void 0 : r.code) === void 0 || e && r.appId !== e || (this.activeSessionGenerations.delete(r.sessionGeneration), await this.rpc.proxy.request.stopSession({
40383
40447
  appId: r.appId,
40384
40448
  sessionGeneration: r.sessionGeneration
40385
40449
  }), this.store.set(islandsPendingInitialRunsAtom, null), this.session = void 0, this.sessionReady = new Deferred(), this.store.set(notebookAtom, initialNotebookState()));