@marimo-team/islands 0.23.2-dev20 → 0.23.2-dev24

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -6,12 +6,12 @@ import { _ as Logger, c as Objects, g as cn, l as useEventListener, t as Button
6
6
  import { t as require_react } from "./react-DA-nE2FX.js";
7
7
  import { t as require_compiler_runtime } from "./compiler-runtime-CEbnTgxf.js";
8
8
  import { r as toast } from "./copy-Bp6CK_Fg.js";
9
- import { A as MarimoIncomingMessageEvent, An as Trash2, Bt as variablesAtom, C as contextToXml, Cn as Anchor2, D as AccordionContent, E as Accordion, Hn as CircleX, I as ChatBubbleIcon, In as Info, Jt as getTableType, Kt as allTablesAtom, Ln as File$1, Mt as moveToEndOfEditor, O as AccordionItem, Pn as LoaderCircle, Q as cellErrorsAtom, S as Sections, St as displayCellName, T as AIContextRegistry, U as deserializeBlob, Vt as PluralWord, W as base64ToDataURL, Xt as getRequestClient, Z as renderHTML, a as toPng, an as ZodLocalStorage, d as Spinner, en as singleFacet, f as Popover, g as isOutputEmpty, h as PopoverTrigger, k as AccordionTrigger, kn as Wrench, kt as createVariableInfoElement, m as PopoverContent, n as blobToString, nt as notebookAtom, o as MarkdownRenderer, qt as dataSourceConnectionsAtom, t as processOutput, un as CellOutputId, w as AIContextProvider, x as Boosts, xn as atomWithStorage, y as DatasourceContextProvider, zt as jotaiJsonStorage } from "./process-output-H_7QTreh.js";
9
+ import { A as MarimoIncomingMessageEvent, An as Trash2, Bt as variablesAtom, C as contextToXml, Cn as Anchor2, D as AccordionContent, E as Accordion, Hn as CircleX, I as ChatBubbleIcon, In as Info, Jt as getTableType, Kt as allTablesAtom, Ln as File$1, Mt as moveToEndOfEditor, O as AccordionItem, Pn as LoaderCircle, Q as cellErrorsAtom, S as Sections, St as displayCellName, T as AIContextRegistry, U as deserializeBlob, Vt as PluralWord, W as base64ToDataURL, Xt as getRequestClient, Z as renderHTML, a as toPng, an as ZodLocalStorage, d as Spinner, en as singleFacet, f as Popover, g as isOutputEmpty, h as PopoverTrigger, k as AccordionTrigger, kn as Wrench, kt as createVariableInfoElement, m as PopoverContent, n as blobToString, nt as notebookAtom, o as MarkdownRenderer, qt as dataSourceConnectionsAtom, t as processOutput, un as CellOutputId, w as AIContextProvider, x as Boosts, xn as atomWithStorage, y as DatasourceContextProvider, zt as jotaiJsonStorage } from "./process-output-BM9cXHzx.js";
10
10
  import "./chunk-5FQGJX7Z-VIref9gx.js";
11
11
  import { u as createLucideIcon } from "./dist-CTtLBPLZ.js";
12
12
  import { C as logNever, I as X, n as Strings, t as Label } from "./label-BebYlsDV.js";
13
- import { a as NumberField, b as DropdownMenuTrigger, d as DropdownMenuContent, p as DropdownMenuItem, r as Input, u as DropdownMenu } from "./input-CSVEkmaZ.js";
14
- import { g as CircleQuestionMark } from "./toDate-B1AzlBoW.js";
13
+ import { a as NumberField, b as DropdownMenuTrigger, d as DropdownMenuContent, p as DropdownMenuItem, r as Input, u as DropdownMenu } from "./input-Czatnqbz.js";
14
+ import { g as CircleQuestionMark } from "./toDate-BxaMtnNb.js";
15
15
  import "./react-dom-D5FDLRUB.js";
16
16
  import { t as require_jsx_runtime } from "./jsx-runtime-9hcJiI23.js";
17
17
  import { B as union, C as any, D as discriminatedUnion, E as custom, H as safeParseAsync, I as record, L as strictObject, M as never, N as number, O as lazy, P as object$1, R as string, S as _null, T as boolean, V as unknown, W as toJSONSchema, b as _enum, k as literal, w as array$1, x as _instanceof } from "./zod-W5ZEjzaE.js";
@@ -53,7 +53,8 @@ const Constants = {
53
53
  feedbackForm: "https://marimo.io/feedback",
54
54
  discordLink: "https://marimo.io/discord?ref=notebook",
55
55
  docsPage: "https://docs.marimo.io",
56
- youtube: "https://www.youtube.com/@marimo-team"
56
+ youtube: "https://www.youtube.com/@marimo-team",
57
+ molab: "https://molab.marimo.io"
57
58
  }, KnownQueryParams = {
58
59
  showCode: "show-code",
59
60
  includeCode: "include-code",
@@ -7,8 +7,8 @@ import { t as require_react } from "./react-DA-nE2FX.js";
7
7
  import { t as require_compiler_runtime } from "./compiler-runtime-CEbnTgxf.js";
8
8
  import { n as Copy, r as toast, t as copyToClipboard } from "./copy-Bp6CK_Fg.js";
9
9
  import { C as logNever, a as SelectContent, d as SelectValue, i as Select, r as capitalize, s as SelectItem, t as Label, u as SelectTrigger } from "./label-BebYlsDV.js";
10
- import { G as marked, W as useNonce, _ as DropdownMenuSub, d as DropdownMenuContent, g as DropdownMenuSeparator, h as DropdownMenuPortal, p as DropdownMenuItem, r as Input, u as DropdownMenu, v as DropdownMenuSubContent, y as DropdownMenuSubTrigger } from "./input-CSVEkmaZ.js";
11
- import { a as Plus, i as Trash, n as ErrorBoundary, o as Pencil, r as require_prop_types, t as BulkEdit } from "./types-pwjdK009.js";
10
+ import { G as marked, W as useNonce, _ as DropdownMenuSub, d as DropdownMenuContent, g as DropdownMenuSeparator, h as DropdownMenuPortal, p as DropdownMenuItem, r as Input, u as DropdownMenu, v as DropdownMenuSubContent, y as DropdownMenuSubTrigger } from "./input-Czatnqbz.js";
11
+ import { a as Plus, i as Trash, n as ErrorBoundary, o as Pencil, r as require_prop_types, t as BulkEdit } from "./types-DZvw9zQT.js";
12
12
  import "./react-dom-D5FDLRUB.js";
13
13
  import { t as require_jsx_runtime } from "./jsx-runtime-9hcJiI23.js";
14
14
  import "./zod-W5ZEjzaE.js";
@@ -13,7 +13,7 @@ import { n as clsx_default } from "./clsx-CwTY0BxM.js";
13
13
  import { t as require_react_dom } from "./react-dom-D5FDLRUB.js";
14
14
  import { t as require_jsx_runtime } from "./jsx-runtime-9hcJiI23.js";
15
15
  import { $ as StyleNamespace, X as withFullScreenAsRoot, Y as MAX_HEIGHT_OFFSET, Z as withSmartCollisionBoundary, _t as Primitive, at as FocusScope, dt as Presence, et as hideOthers, ft as useControllableState, gt as createContextScope, it as Portal, lt as useCallbackRef, mt as composeEventHandlers, rt as useFocusGuards, st as DismissableLayer, tt as Combination_default, ut as useId, vt as dispatchDiscreteCustomEvent } from "./zod-W5ZEjzaE.js";
16
- import { i as debounce_default } from "./constants-CvyfaCvs.js";
16
+ import { i as debounce_default } from "./constants-CcdcOQyC.js";
17
17
  import { w as useEvent_default } from "./useTheme-CzwDokKe.js";
18
18
  import { t as memoizeLastValue } from "./once-C_TIu-kR.js";
19
19
  var ChevronRight = createLucideIcon("chevron-right", [["path", {
package/dist/main.js CHANGED
@@ -22,16 +22,16 @@ import { _ as Logger, c as Objects, g as cn, h as Events, i as NOT_SET, l as use
22
22
  import { t as require_react } from "./react-DA-nE2FX.js";
23
23
  import { t as require_compiler_runtime } from "./compiler-runtime-CEbnTgxf.js";
24
24
  import { n as Copy, r as toast, t as copyToClipboard } from "./copy-Bp6CK_Fg.js";
25
- import { $ as createActions, $t as isUninstantiated, A as MarimoIncomingMessageEvent, An as Trash2, At as PathBuilder, B as DotFilledIcon, Bn as Database, Ct as getValidName, D as AccordionContent, Dn as Root2$4, Dt as customPythonLanguageSupport, E as Accordion, En as Item$1, Et as Checkbox, F as BorderAllIcon, Fn as Layers, Ft as generateUUID, G as base64ToDataView, Gn as esm_default$1, Gt as require_client, H as PinRightIcon, Hn as CircleX, Ht as PluralWords, In as Info, It as useChromeActions, J as extractBase64FromDataURL, K as base64ToUint8Array, Kn as import_lib, L as CheckIcon, Ln as File, Lt as repl, M as MarimoValueReadyEvent, Mn as PaintRoller, N as MarimoValueUpdateEvent, Nn as NotebookPen, Nt as goToCellLine, O as AccordionItem, On as Trigger2, Ot as MarkdownLanguageAdapter, P as createInputEvent, Pn as LoaderCircle, Pt as DeferredRequestRegistry, Qt as useRequestClient, R as ChevronDownIcon, Rn as FileText, Rt as adaptForLocalStorage, Sn as selectAtom, St as displayCellName, Tn as Content2$1, Tt as normalizeName, U as deserializeBlob, Un as CircleAlert, Ut as DATA_TYPE_ICON, V as PinLeftIcon, Vn as Columns2, Vt as PluralWord, Wn as Braces, Wt as getDataTypeColor, X as safeExtractSetUIElementMessageBuffers, Xt as getRequestClient, Y as isDataURLString, Yt as convertStatsName, Z as renderHTML, Zt as requestClientAtom, _ as useExpandedConsoleOutput, _n as jsonParseWithSpecialChar, _t as isErrorMime, a as toPng, at as reducer, b as getDatasourceContext, bn as atomWithReducer, bt as DATA_CELL_ID, c as useCellFocusActions, cn as parseDataset, ct as useCellNames, d as Spinner, dn as HTMLCellId, dt as getInitialAppMode, et as getCellEditorView, f as Popover$1, fn as SCRATCH_CELL_ID, ft as initialModeAtom, g as isOutputEmpty, gn as RANDOM_ID_ATTR, gt as outputIsStale, h as PopoverTrigger, hn as OBJECT_ID_ATTR, ht as outputIsLoading, i as PythonIcon, in as NotebookScopedLocalStorage, it as numColumnsAtom, j as MarimoValueInputEvent, jn as Table2, jt as Paths, k as AccordionTrigger, kn as Wrench, l as useLastFocusedCellId, ln as parseInitialValue, lt as createCell, m as PopoverContent, mn as findCellId, mt as viewStateAtom, n as blobToString, nn as extractAllTracebackInfo, nt as notebookAtom, o as MarkdownRenderer, on as filenameAtom, ot as useCellActions, p as PopoverClose$1, pn as UIElementId, pt as kioskModeAtom, q as dataViewToBase64, r as filesToBase64, rn as getTracebackInfo, rt as notebookOutline, s as LazyAnyLanguageCodeMirror, sn as parseAttrValue, st as useCellIds, t as processOutput, tn as elementContainsMarimoCellFile, tt as getCellNames, u as maybeAddAltairImport, un as CellOutputId, ut as AnsiUp, v as useExpandedOutput, vn as jsonToMarkdown, vt as headingToIdentifier, wn as Close$1, wt as isInternalCellName, xn as atomWithStorage, xt as getCellDomProps, yn as jsonToTSV, yt as sanitizeHtml, z as ChevronRightIcon, zn as Eye, zt as jotaiJsonStorage, __tla as __tla_0 } from "./process-output-H_7QTreh.js";
25
+ import { $ as createActions, $t as isUninstantiated, A as MarimoIncomingMessageEvent, An as Trash2, At as PathBuilder, B as DotFilledIcon, Bn as Database, Ct as getValidName, D as AccordionContent, Dn as Root2$4, Dt as customPythonLanguageSupport, E as Accordion, En as Item$1, Et as Checkbox, F as BorderAllIcon, Fn as Layers, Ft as generateUUID, G as base64ToDataView, Gn as esm_default$1, Gt as require_client, H as PinRightIcon, Hn as CircleX, Ht as PluralWords, In as Info, It as useChromeActions, J as extractBase64FromDataURL, K as base64ToUint8Array, Kn as import_lib, L as CheckIcon, Ln as File, Lt as repl, M as MarimoValueReadyEvent, Mn as PaintRoller, N as MarimoValueUpdateEvent, Nn as NotebookPen, Nt as goToCellLine, O as AccordionItem, On as Trigger2, Ot as MarkdownLanguageAdapter, P as createInputEvent, Pn as LoaderCircle, Pt as DeferredRequestRegistry, Qt as useRequestClient, R as ChevronDownIcon, Rn as FileText, Rt as adaptForLocalStorage, Sn as selectAtom, St as displayCellName, Tn as Content2$1, Tt as normalizeName, U as deserializeBlob, Un as CircleAlert, Ut as DATA_TYPE_ICON, V as PinLeftIcon, Vn as Columns2, Vt as PluralWord, Wn as Braces, Wt as getDataTypeColor, X as safeExtractSetUIElementMessageBuffers, Xt as getRequestClient, Y as isDataURLString, Yt as convertStatsName, Z as renderHTML, Zt as requestClientAtom, _ as useExpandedConsoleOutput, _n as jsonParseWithSpecialChar, _t as isErrorMime, a as toPng, at as reducer, b as getDatasourceContext, bn as atomWithReducer, bt as DATA_CELL_ID, c as useCellFocusActions, cn as parseDataset, ct as useCellNames, d as Spinner, dn as HTMLCellId, dt as getInitialAppMode, et as getCellEditorView, f as Popover$1, fn as SCRATCH_CELL_ID, ft as initialModeAtom, g as isOutputEmpty, gn as RANDOM_ID_ATTR, gt as outputIsStale, h as PopoverTrigger, hn as OBJECT_ID_ATTR, ht as outputIsLoading, i as PythonIcon, in as NotebookScopedLocalStorage, it as numColumnsAtom, j as MarimoValueInputEvent, jn as Table2, jt as Paths, k as AccordionTrigger, kn as Wrench, l as useLastFocusedCellId, ln as parseInitialValue, lt as createCell, m as PopoverContent, mn as findCellId, mt as viewStateAtom, n as blobToString, nn as extractAllTracebackInfo, nt as notebookAtom, o as MarkdownRenderer, on as filenameAtom, ot as useCellActions, p as PopoverClose$1, pn as UIElementId, pt as kioskModeAtom, q as dataViewToBase64, r as filesToBase64, rn as getTracebackInfo, rt as notebookOutline, s as LazyAnyLanguageCodeMirror, sn as parseAttrValue, st as useCellIds, t as processOutput, tn as elementContainsMarimoCellFile, tt as getCellNames, u as maybeAddAltairImport, un as CellOutputId, ut as AnsiUp, v as useExpandedOutput, vn as jsonToMarkdown, vt as headingToIdentifier, wn as Close$1, wt as isInternalCellName, xn as atomWithStorage, xt as getCellDomProps, yn as jsonToTSV, yt as sanitizeHtml, z as ChevronRightIcon, zn as Eye, zt as jotaiJsonStorage, __tla as __tla_0 } from "./process-output-BM9cXHzx.js";
26
26
  import { __tla as __tla_1 } from "./chunk-5FQGJX7Z-VIref9gx.js";
27
27
  import { o as useSize, s as Root$4, u as createLucideIcon } from "./dist-CTtLBPLZ.js";
28
28
  import { A as $896ba0a80a8f4d36$export$85fd5fdf27bacc79, C as DEFAULT_COLOR_SCHEME, D as SCALE_TYPE_DESCRIPTIONS, E as EMPTY_VALUE$1, F as ListFilter, I as ChartPie, L as ChartColumn, M as $5a387cc49350e6db$export$722debc0e56fea39, N as Table$1, O as TIME_UNIT_DESCRIPTIONS, P as SquareFunction, 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 $fb18d541ea1ad717$export$ad991b66133851cf, 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-3EPbPQZH.js";
29
29
  import { c as Calendar, i as createReducerAndAtoms, n as useOnUnmount, o as ToggleLeft, r as Badge, t as useOnMount } from "./useLifecycle-DrGGIsgp.js";
30
30
  import { t as Check } from "./check-BgrdTLuv.js";
31
31
  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$3, N as usePrevious$2, O as $b5e257d569688ac6$export$535bd6ca7f90a273, P as useDirection, R as ChevronDown, S as assertNever, T as $488c6ddbf4ef74c2$export$cc77c4ff7e8673c5, _ as menuControlVariants, a as SelectContent, b as menuSeparatorVariants, c as SelectLabel, d as SelectValue, f as NativeSelect, g as menuControlCheckVariants, h as menuContentCommon, i as Select, j as Trigger$3, l as SelectSeparator, m as MENU_ITEM_DISABLED, n as Strings, o as SelectGroup, p as selectStyles, r as capitalize, s as SelectItem, t as Label, u as SelectTrigger, v as menuItemVariants, w as $a916eb452884faea$export$b7a616150fdb9f44, x as menuSubTriggerVariants, y as menuLabelVariants } from "./label-BebYlsDV.js";
32
- import { $ as $e5be200c675c3b3a$export$aca958c65c314e6c, $t as Portal, A as $d2b4bc8c273e7be6$export$24d547caef80ccd1, At as $c87311424ea30a05$export$fedb369cb70207f1, B as $64fa3d84918910a7$export$c62b8e45d58ddad9, Bt as $431fbd86ca7dc216$export$f21a1ffae260145a, C as $a049562f99e7db0e$export$eb2fcfdbd7ba97d4, Ct as $8ae05eaa5c114e9c$export$7f54fc3180508a52, D as $ee014567cb39d3f0$export$ff05c3ac10437e03, Dt as $c87311424ea30a05$export$78551043582a6a98, E as $ee014567cb39d3f0$export$f551688fc98f2e09, Et as $c87311424ea30a05$export$6446a186d09e379e, F as $64fa3d84918910a7$export$2881499e37b75b9a, Ft as $d4ee10de306f2510$export$b4f377a2b6254582, G as marked, Gt as Anchor2, H as $64fa3d84918910a7$export$ef03459518577ad4, Ht as $bdb11010cef70236$export$b4cc09c592e8fdb8, I as $64fa3d84918910a7$export$29f1550f4b0d4415, It as $d4ee10de306f2510$export$cd4e5573fbe2b576, J as $d2e8511e6f209edf$export$e908e06f4b8e3402, Jt as Content2$2, K as useDebounceControlledState, Kt as Arrow2, L as $64fa3d84918910a7$export$4d86445c2cf5e3, Lt as $d4ee10de306f2510$export$e58f029f0fbfdb29, M as $01b77f81d0f07f68$export$75b6ee27786ba447, Mt as $65484d02dcb7eb3e$export$457c3d6518dd4c6f, N as $01b77f81d0f07f68$export$b04be29aa201d4f5, Nt as $3ef42575df84b30b$export$9d1611c77c2fe928, O as $514c0188e459b4c0$export$5f1af8db9871e1d6, Ot as $c87311424ea30a05$export$9ac100e40613ea10, P as $f39a9eba43920ace$export$b5d7cc18bb8d2b59, Pt as $d4ee10de306f2510$export$4282f70798064fe0, Q as $e5be200c675c3b3a$export$a763b9476acd3eb, Qt as Label$2, R as $64fa3d84918910a7$export$9d4c57ee4c6ffdd8, Rt as $f4e2df6bd15f8569$export$98658e8c59125e6a, S as $3985021b0ad6602f$export$f5b8910cec6cf069, St as $e9faafb641e167db$export$90fc3a17d93f704c, T as $d3e0e05bdfcf66bd$export$c24727297075ec6a, Tt as $313b98861ee5dd6c$export$d6875122194c7b44, U as $64fa3d84918910a7$export$fabf2dc03a41866e, Ut as $bdb11010cef70236$export$f680877a34711e37, V as $64fa3d84918910a7$export$df3a06d6289f983e, Vt as $ff5963eb1fccf552$export$e08e3b67e392101e, Wt as $f0a04ccd8dbdd83b$export$e5c5a5f917a5871c, X as $e93e671b31057976$export$b8473d3665f3a75a, Xt as Item2$2, Y as $2baaea4c71418dea$export$294aa081a6c6f55d, Yt as Group$1, Z as $e5be200c675c3b3a$export$75ee7c75d68f5b0e, Zt as ItemIndicator, _ as DropdownMenuSub, _t as $9446cca9a3875146$export$7d15b64cf5a3a4c4, a as NumberField, an as SubContent, at as $6c7bd7858deea686$export$cd11ab140839f11d, b as DropdownMenuTrigger, bt as $b4b717babfbb907b$export$bebd5a1431fec25d, c as prettyNumber, cn as Item$2, ct as $6db58dc88e78b024$export$2f817fcdc4b89ae0, d as DropdownMenuContent, dn as Search, dt as $9ab94262bd0047c7$export$420e68273165f4ec, en as RadioGroup$2, et as $e5be200c675c3b3a$export$dad6ae84456c676a, f as DropdownMenuGroup, fn as Circle, ft as $3ad3f6e1647bc98d$export$80f3e147d781571c, g as DropdownMenuSeparator, gt as $ae1eeba8b9eafd08$export$5165eccb35aaadb5, h as DropdownMenuPortal, ht as _class_private_field_init, i as OnBlurredInput, in as Sub, it as $701a24aa0da5b062$export$ea18c227d4417cc3, j as $d2b4bc8c273e7be6$export$353f5b6fc5456de1, jt as $7215afc6de606d6b$export$de79e2c695e052f3, k as $514c0188e459b4c0$export$9afb8bc826b033ea, kt as $c87311424ea30a05$export$a11b0059900ceec8, l as prettyScientificNumber, ln as Root$5, lt as $5b160d28a433310d$export$c17fa47878dc55b6, m as DropdownMenuLabel, mt as $f6c31cce2adf654f$export$45712eceda6fad21, n as DebouncedNumberInput, nn as Root3, nt as $319e236875307eab$export$a9b970dcc4ae71a9, o as maxFractionalDigits, on as SubTrigger, ot as $fca6afa0e843324b$export$87b761675e8eaa10, p as DropdownMenuItem, pn as ChevronRight, pt as $507fabe10e71c6fb$export$630ff653c5ada6a9, q as useDebouncedCallback, qt as CheckboxItem, r as Input, rn as Separator, rt as $f7dceffc5ad7768b$export$4e328f61c538687f, s as prettyEngineeringNumber, sn as createMenuScope, st as $fca6afa0e843324b$export$f12b703ca79dfbb1, t as DebouncedInput, tn as RadioItem, tt as $e5be200c675c3b3a$export$fc1a364ae1f3ff10, u as DropdownMenu, un as createRovingFocusGroupScope, ut as $6179b936705e76d3$export$ae780daf29e6d456, v as DropdownMenuSubContent, vt as $458b0a5536c1a7cf$export$40bfa8c7b0832715, w as $a049562f99e7db0e$export$f9c6924e160136d1, wt as $df56164dff5785e2$export$4338b53315abf666, x as $3985021b0ad6602f$export$37fb8590cf2c088c, xt as $99facab73266f662$export$5add1d006293d136, y as DropdownMenuSubTrigger, yt as $b4b717babfbb907b$export$4c063cf1350e6fed, z as $64fa3d84918910a7$export$c245e6201fed2f75, zt as $431fbd86ca7dc216$export$b204af158042fbac } from "./input-CSVEkmaZ.js";
33
- import { a as millisecondsInMinute, c as asRemoteURL, d as isUrl, f as require_cuid2, g as CircleQuestionMark, h as isWasm, i as millisecondsInHour, m as Deferred, n as constructFrom, o as millisecondsInSecond, r as millisecondsInDay, s as millisecondsInWeek, t as toDate, u as appendQueryParams } from "./toDate-B1AzlBoW.js";
34
- import { a as Plus, i as Trash, n as ErrorBoundary, o as Pencil, r as require_prop_types, t as BulkEdit } from "./types-pwjdK009.js";
32
+ import { $ as $e5be200c675c3b3a$export$aca958c65c314e6c, $t as Portal, A as $d2b4bc8c273e7be6$export$24d547caef80ccd1, At as $c87311424ea30a05$export$fedb369cb70207f1, B as $64fa3d84918910a7$export$c62b8e45d58ddad9, Bt as $431fbd86ca7dc216$export$f21a1ffae260145a, C as $a049562f99e7db0e$export$eb2fcfdbd7ba97d4, Ct as $8ae05eaa5c114e9c$export$7f54fc3180508a52, D as $ee014567cb39d3f0$export$ff05c3ac10437e03, Dt as $c87311424ea30a05$export$78551043582a6a98, E as $ee014567cb39d3f0$export$f551688fc98f2e09, Et as $c87311424ea30a05$export$6446a186d09e379e, F as $64fa3d84918910a7$export$2881499e37b75b9a, Ft as $d4ee10de306f2510$export$b4f377a2b6254582, G as marked, Gt as Anchor2, H as $64fa3d84918910a7$export$ef03459518577ad4, Ht as $bdb11010cef70236$export$b4cc09c592e8fdb8, I as $64fa3d84918910a7$export$29f1550f4b0d4415, It as $d4ee10de306f2510$export$cd4e5573fbe2b576, J as $d2e8511e6f209edf$export$e908e06f4b8e3402, Jt as Content2$2, K as useDebounceControlledState, Kt as Arrow2, L as $64fa3d84918910a7$export$4d86445c2cf5e3, Lt as $d4ee10de306f2510$export$e58f029f0fbfdb29, M as $01b77f81d0f07f68$export$75b6ee27786ba447, Mt as $65484d02dcb7eb3e$export$457c3d6518dd4c6f, N as $01b77f81d0f07f68$export$b04be29aa201d4f5, Nt as $3ef42575df84b30b$export$9d1611c77c2fe928, O as $514c0188e459b4c0$export$5f1af8db9871e1d6, Ot as $c87311424ea30a05$export$9ac100e40613ea10, P as $f39a9eba43920ace$export$b5d7cc18bb8d2b59, Pt as $d4ee10de306f2510$export$4282f70798064fe0, Q as $e5be200c675c3b3a$export$a763b9476acd3eb, Qt as Label$2, R as $64fa3d84918910a7$export$9d4c57ee4c6ffdd8, Rt as $f4e2df6bd15f8569$export$98658e8c59125e6a, S as $3985021b0ad6602f$export$f5b8910cec6cf069, St as $e9faafb641e167db$export$90fc3a17d93f704c, T as $d3e0e05bdfcf66bd$export$c24727297075ec6a, Tt as $313b98861ee5dd6c$export$d6875122194c7b44, U as $64fa3d84918910a7$export$fabf2dc03a41866e, Ut as $bdb11010cef70236$export$f680877a34711e37, V as $64fa3d84918910a7$export$df3a06d6289f983e, Vt as $ff5963eb1fccf552$export$e08e3b67e392101e, Wt as $f0a04ccd8dbdd83b$export$e5c5a5f917a5871c, X as $e93e671b31057976$export$b8473d3665f3a75a, Xt as Item2$2, Y as $2baaea4c71418dea$export$294aa081a6c6f55d, Yt as Group$1, Z as $e5be200c675c3b3a$export$75ee7c75d68f5b0e, Zt as ItemIndicator, _ as DropdownMenuSub, _t as $9446cca9a3875146$export$7d15b64cf5a3a4c4, a as NumberField, an as SubContent, at as $6c7bd7858deea686$export$cd11ab140839f11d, b as DropdownMenuTrigger, bt as $b4b717babfbb907b$export$bebd5a1431fec25d, c as prettyNumber, cn as Item$2, ct as $6db58dc88e78b024$export$2f817fcdc4b89ae0, d as DropdownMenuContent, dn as Search, dt as $9ab94262bd0047c7$export$420e68273165f4ec, en as RadioGroup$2, et as $e5be200c675c3b3a$export$dad6ae84456c676a, f as DropdownMenuGroup, fn as Circle, ft as $3ad3f6e1647bc98d$export$80f3e147d781571c, g as DropdownMenuSeparator, gt as $ae1eeba8b9eafd08$export$5165eccb35aaadb5, h as DropdownMenuPortal, ht as _class_private_field_init, i as OnBlurredInput, in as Sub, it as $701a24aa0da5b062$export$ea18c227d4417cc3, j as $d2b4bc8c273e7be6$export$353f5b6fc5456de1, jt as $7215afc6de606d6b$export$de79e2c695e052f3, k as $514c0188e459b4c0$export$9afb8bc826b033ea, kt as $c87311424ea30a05$export$a11b0059900ceec8, l as prettyScientificNumber, ln as Root$5, lt as $5b160d28a433310d$export$c17fa47878dc55b6, m as DropdownMenuLabel, mt as $f6c31cce2adf654f$export$45712eceda6fad21, n as DebouncedNumberInput, nn as Root3, nt as $319e236875307eab$export$a9b970dcc4ae71a9, o as maxFractionalDigits, on as SubTrigger, ot as $fca6afa0e843324b$export$87b761675e8eaa10, p as DropdownMenuItem, pn as ChevronRight, pt as $507fabe10e71c6fb$export$630ff653c5ada6a9, q as useDebouncedCallback, qt as CheckboxItem, r as Input, rn as Separator, rt as $f7dceffc5ad7768b$export$4e328f61c538687f, s as prettyEngineeringNumber, sn as createMenuScope, st as $fca6afa0e843324b$export$f12b703ca79dfbb1, t as DebouncedInput, tn as RadioItem, tt as $e5be200c675c3b3a$export$fc1a364ae1f3ff10, u as DropdownMenu, un as createRovingFocusGroupScope, ut as $6179b936705e76d3$export$ae780daf29e6d456, v as DropdownMenuSubContent, vt as $458b0a5536c1a7cf$export$40bfa8c7b0832715, w as $a049562f99e7db0e$export$f9c6924e160136d1, wt as $df56164dff5785e2$export$4338b53315abf666, x as $3985021b0ad6602f$export$37fb8590cf2c088c, xt as $99facab73266f662$export$5add1d006293d136, y as DropdownMenuSubTrigger, yt as $b4b717babfbb907b$export$4c063cf1350e6fed, z as $64fa3d84918910a7$export$c245e6201fed2f75, zt as $431fbd86ca7dc216$export$b204af158042fbac } from "./input-Czatnqbz.js";
33
+ import { a as millisecondsInMinute, c as asRemoteURL, d as isUrl, f as require_cuid2, g as CircleQuestionMark, h as isWasm, i as millisecondsInHour, m as Deferred, n as constructFrom, o as millisecondsInSecond, r as millisecondsInDay, s as millisecondsInWeek, t as toDate, u as appendQueryParams } from "./toDate-BxaMtnNb.js";
34
+ import { a as Plus, i as Trash, n as ErrorBoundary, o as Pencil, r as require_prop_types, t as BulkEdit } from "./types-DZvw9zQT.js";
35
35
  import { n as clsx_default } from "./clsx-CwTY0BxM.js";
36
36
  import { t as require_react_dom } from "./react-dom-D5FDLRUB.js";
37
37
  import { t as require_jsx_runtime } from "./jsx-runtime-9hcJiI23.js";
@@ -42,7 +42,7 @@ import { n as minimalSetup, r as _extends$5, t as esm_default, u as CopyClipboar
42
42
  import { a as get_default } from "./hasIn-BDDmuo1w.js";
43
43
  import { n as _baseSet_default } from "./_basePickBy-C-mod5Dp.js";
44
44
  import { t as pick_default } from "./pick-DfX21dj2.js";
45
- import { i as debounce_default, r as KnownQueryParams, t as CSSClasses } from "./constants-CvyfaCvs.js";
45
+ import { i as debounce_default, r as KnownQueryParams, t as CSSClasses } from "./constants-CcdcOQyC.js";
46
46
  import { C as dequal, S as getBuildingBlocks, _ as useSetAtom, c as AppConfigSchema, d as useJotaiEffect, g as useAtomValue, h as useAtom, i as autoInstantiateAtom, m as Provider, n as useTheme, o as localeAtom, p as isIslands, r as aiEnabledAtom, s as useResolvedMarimoConfig, u as store, v as useStore, w as useEvent_default, x as buildStore, y as atom } from "./useTheme-CzwDokKe.js";
47
47
  import { Z as EditorView } from "./dist-CxZvoNao.js";
48
48
  import { t as invariant } from "./invariant-e8eBgdux.js";
@@ -56,7 +56,7 @@ import "./dist-Ci0CXEFt.js";
56
56
  import "./dist-DJ9F1eHs.js";
57
57
  import { a as parser, r as python } from "./dist-DAfcmt-d.js";
58
58
  import "./purify.es-hTCfRGdl.js";
59
- import { a as AlertTitle, i as AlertDescription, n as arrow, o as isValid, r as Alert, t as useDeepCompareMemoize } from "./useDeepCompareMemoize-CsyOnnjc.js";
59
+ import { a as AlertTitle, i as AlertDescription, n as arrow, o as isValid, r as Alert, t as useDeepCompareMemoize } from "./useDeepCompareMemoize-BOrrcIxj.js";
60
60
  import { n as memoize$1, t as isPropValid } from "./emotion-is-prop-valid.esm-CJVjyntJ.js";
61
61
  import { n as formats } from "./vega-loader.browser-DqEcFOPD.js";
62
62
  import { a as getContainerWidth, n as vegaLoadData, o as getVegaFieldTypes, r as createBatchedLoader, s as tooltipHandler, t as parseCsvData } from "./loader-ZFbGsMN1.js";
@@ -37252,7 +37252,7 @@ ${w}`,
37252
37252
  };
37253
37253
  }
37254
37254
  };
37255
- var LazyChatbot = import_react.lazy(() => import("./chat-ui-DIVMRPO5.js").then((e) => ({
37255
+ var LazyChatbot = import_react.lazy(() => import("./chat-ui-Cv0kWRcQ.js").then((e) => ({
37256
37256
  default: e.Chatbot
37257
37257
  }))), messageSchema = array(object({
37258
37258
  id: string(),
@@ -37396,7 +37396,7 @@ ${w}`,
37396
37396
  "time",
37397
37397
  "unknown"
37398
37398
  ];
37399
- var import_compiler_runtime$89 = require_compiler_runtime(), LazyDataEditor = import_react.lazy(() => import("./glide-data-editor-BFqEJGJW.js").then(async (m2) => {
37399
+ var import_compiler_runtime$89 = require_compiler_runtime(), LazyDataEditor = import_react.lazy(() => import("./glide-data-editor-DBgJAMqf.js").then(async (m2) => {
37400
37400
  await m2.__tla;
37401
37401
  return m2;
37402
37402
  }));
@@ -56651,31 +56651,35 @@ ${c}
56651
56651
  __privateGet(this, _e8).style.cursor = "crosshair";
56652
56652
  });
56653
56653
  __privateAdd(this, _b2, (e) => {
56654
- if (!(!e || !("has_selection" in e) || !e.has_selection)) {
56655
- if (e.type === "box") {
56656
- let r = e.data;
56657
- __privateSet(this, _r2, {
56658
- type: "box",
56659
- start: dataToPixel({
56660
- x: r.x_min,
56661
- y: r.y_min
56662
- }, __privateGet(this, _n4)),
56663
- end: dataToPixel({
56664
- x: r.x_max,
56665
- y: r.y_max
56666
- }, __privateGet(this, _n4)),
56667
- action: null
56668
- });
56669
- } else e.type === "lasso" && __privateSet(this, _r2, {
56670
- type: "lasso",
56671
- points: e.data.map(([e2, r]) => dataToPixel({
56672
- x: e2,
56673
- y: r
56674
- }, __privateGet(this, _n4))),
56654
+ if (!e || !("has_selection" in e) || !e.has_selection) {
56655
+ __privateGet(this, _r2).type !== "idle" && (__privateSet(this, _r2, {
56656
+ type: "idle"
56657
+ }), __privateGet(this, _f2).call(this));
56658
+ return;
56659
+ }
56660
+ if (e.type === "box") {
56661
+ let r = e.data;
56662
+ __privateSet(this, _r2, {
56663
+ type: "box",
56664
+ start: dataToPixel({
56665
+ x: r.x_min,
56666
+ y: r.y_min
56667
+ }, __privateGet(this, _n4)),
56668
+ end: dataToPixel({
56669
+ x: r.x_max,
56670
+ y: r.y_max
56671
+ }, __privateGet(this, _n4)),
56675
56672
  action: null
56676
56673
  });
56677
- __privateGet(this, _f2).call(this);
56678
- }
56674
+ } else e.type === "lasso" && __privateSet(this, _r2, {
56675
+ type: "lasso",
56676
+ points: e.data.map(([e2, r]) => dataToPixel({
56677
+ x: e2,
56678
+ y: r
56679
+ }, __privateGet(this, _n4))),
56680
+ action: null
56681
+ });
56682
+ __privateGet(this, _f2).call(this);
56679
56683
  });
56680
56684
  __privateAdd(this, _x, (e) => {
56681
56685
  __privateGet(this, _e8).setPointerCapture(e.pointerId), __privateGet(this, _t5).focus();
@@ -56840,6 +56844,11 @@ ${c}
56840
56844
  __privateMethod(this, _MatplotlibRenderer_instances, u_fn).call(this, e.chartBase64);
56841
56845
  return;
56842
56846
  }
56847
+ let d = __privateGet(this, _r2).type !== "idle" && __privateGet(this, _r2).action !== null;
56848
+ if (e.value !== r.value && !d) {
56849
+ __privateGet(this, _b2).call(this, e.value);
56850
+ return;
56851
+ }
56843
56852
  (c || e.selectionColor !== r.selectionColor || e.selectionOpacity !== r.selectionOpacity || e.strokeWidth !== r.strokeWidth) && __privateGet(this, _d2).call(this);
56844
56853
  }
56845
56854
  }, _e8 = new WeakMap(), _t5 = new WeakMap(), _n4 = new WeakMap(), _r2 = new WeakMap(), _i2 = new WeakMap(), _a2 = new WeakMap(), _o2 = new WeakMap(), _s = new WeakMap(), _MatplotlibRenderer_instances = new WeakSet(), c_fn = function(e = __privateGet(this, _e8)) {
@@ -58495,7 +58504,8 @@ ${c}
58495
58504
  constructor() {
58496
58505
  __publicField(this, "tagName", "marimo-tabs");
58497
58506
  __publicField(this, "validator", object({
58498
- tabs: array(string())
58507
+ tabs: array(string()),
58508
+ label: string().nullable()
58499
58509
  }));
58500
58510
  }
58501
58511
  render(e) {
@@ -58507,29 +58517,35 @@ ${c}
58507
58517
  });
58508
58518
  }
58509
58519
  }, TabComponent = (e) => {
58510
- let r = (0, import_compiler_runtime$28.c)(13), { tabs: c, value: d, setValue: f, children: h } = e, [_, v] = import_react.useState(d || "0"), y;
58511
- r[0] === f ? y = r[1] : (y = (e2) => {
58512
- v(e2), f(e2);
58513
- }, r[0] = f, r[1] = y);
58514
- let S = y;
58515
- d !== _ && d && v(d);
58516
- let w;
58517
- r[2] === c ? w = r[3] : (w = c.map(_temp$8), r[2] = c, r[3] = w);
58520
+ let r = (0, import_compiler_runtime$28.c)(16), { tabs: c, label: d, value: f, setValue: h, children: _ } = e, [v, y] = import_react.useState(f || "0"), S;
58521
+ r[0] === h ? S = r[1] : (S = (e2) => {
58522
+ y(e2), h(e2);
58523
+ }, r[0] = h, r[1] = S);
58524
+ let w = S;
58525
+ f !== v && f && y(f);
58518
58526
  let E;
58519
- r[4] === w ? E = r[5] : (E = (0, import_jsx_runtime.jsx)(TabsList, {
58520
- children: w
58521
- }), r[4] = w, r[5] = E);
58527
+ r[2] === c ? E = r[3] : (E = c.map(_temp$8), r[2] = c, r[3] = E);
58522
58528
  let O;
58523
- r[6] === h ? O = r[7] : (O = import_react.Children.map(h, _temp2$4), r[6] = h, r[7] = O);
58529
+ r[4] === E ? O = r[5] : (O = (0, import_jsx_runtime.jsx)(TabsList, {
58530
+ children: E
58531
+ }), r[4] = E, r[5] = O);
58524
58532
  let M;
58525
- return r[8] !== S || r[9] !== _ || r[10] !== E || r[11] !== O ? (M = (0, import_jsx_runtime.jsxs)(Tabs, {
58526
- value: _,
58527
- onValueChange: S,
58533
+ r[6] === _ ? M = r[7] : (M = import_react.Children.map(_, _temp2$4), r[6] = _, r[7] = M);
58534
+ let I;
58535
+ r[8] !== w || r[9] !== v || r[10] !== O || r[11] !== M ? (I = (0, import_jsx_runtime.jsxs)(Tabs, {
58536
+ value: v,
58537
+ onValueChange: w,
58528
58538
  children: [
58529
- E,
58530
- O
58539
+ O,
58540
+ M
58531
58541
  ]
58532
- }), r[8] = S, r[9] = _, r[10] = E, r[11] = O, r[12] = M) : M = r[12], M;
58542
+ }), r[8] = w, r[9] = v, r[10] = O, r[11] = M, r[12] = I) : I = r[12];
58543
+ let z;
58544
+ return r[13] !== d || r[14] !== I ? (z = (0, import_jsx_runtime.jsx)(Labeled, {
58545
+ label: d,
58546
+ align: "top",
58547
+ children: I
58548
+ }), r[13] = d, r[14] = I, r[15] = z) : z = r[15], z;
58533
58549
  };
58534
58550
  function _temp$8(e, r) {
58535
58551
  return (0, import_jsx_runtime.jsx)(TabsTrigger, {
@@ -58812,7 +58828,7 @@ ${c}
58812
58828
  return true;
58813
58829
  }
58814
58830
  }
58815
- var LazyVegaComponent = import_react.lazy(() => import("./vega-component-KBJXEDZz.js")), VegaPlugin = class {
58831
+ var LazyVegaComponent = import_react.lazy(() => import("./vega-component-CrVeizNZ.js")), VegaPlugin = class {
58816
58832
  constructor() {
58817
58833
  __publicField(this, "tagName", "marimo-vega");
58818
58834
  __publicField(this, "validator", object({
@@ -68904,7 +68920,7 @@ ${c}
68904
68920
  return Logger.warn("Failed to get version from mount config"), null;
68905
68921
  }
68906
68922
  }
68907
- const marimoVersionAtom = atom(getVersionFromMountConfig() || "0.23.2-dev20"), showCodeInRunModeAtom = atom(true);
68923
+ const marimoVersionAtom = atom(getVersionFromMountConfig() || "0.23.2-dev24"), showCodeInRunModeAtom = atom(true);
68908
68924
  atom(null);
68909
68925
  var VIRTUAL_FILE_REGEX = /\/@file\/([^\s"&'/]+)\.([\dA-Za-z]+)/g, VirtualFileTracker = class e {
68910
68926
  constructor() {
@@ -11,14 +11,14 @@ import { a as createPopperScope, i as Root2$3, l as VisuallyHidden, n as Arrow,
11
11
  import { a as Type, c as Calendar, i as createReducerAndAtoms, o as ToggleLeft, r as Badge, s as Hash, t as useOnMount } from "./useLifecycle-DrGGIsgp.js";
12
12
  import { t as Check } from "./check-BgrdTLuv.js";
13
13
  import { C as logNever, F as createCollection, I as X, N as usePrevious, P as useDirection, R as ChevronDown, S as assertNever, a as SelectContent, c as SelectLabel, d as SelectValue, i as Select, l as SelectSeparator, n as Strings, o as SelectGroup, s as SelectItem, u as SelectTrigger } from "./label-BebYlsDV.js";
14
- import { G as marked, W as useNonce, mt as $f6c31cce2adf654f$export$45712eceda6fad21, q as useDebouncedCallback } from "./input-CSVEkmaZ.js";
15
- import { g as CircleQuestionMark, h as isWasm, l as getRuntimeManager, m as Deferred, p as waitForConnectionOpen, t as toDate } from "./toDate-B1AzlBoW.js";
14
+ import { G as marked, W as useNonce, mt as $f6c31cce2adf654f$export$45712eceda6fad21, q as useDebouncedCallback } from "./input-Czatnqbz.js";
15
+ import { g as CircleQuestionMark, h as isWasm, l as getRuntimeManager, m as Deferred, p as waitForConnectionOpen, t as toDate } from "./toDate-BxaMtnNb.js";
16
16
  import { t as require_react_dom } from "./react-dom-D5FDLRUB.js";
17
17
  import { t as require_jsx_runtime } from "./jsx-runtime-9hcJiI23.js";
18
18
  import { $ as StyleNamespace, B as union, N as number, P as object, R as string, T as boolean, X as withFullScreenAsRoot, Y as MAX_HEIGHT_OFFSET, Z as withSmartCollisionBoundary, _t as Primitive, at as FocusScope, ct as Root$1, dt as Presence, et as hideOthers, ft as useControllableState, gt as createContextScope, it as Portal, k as literal, lt as useCallbackRef, mt as composeEventHandlers, ot as Branch, pt as useLayoutEffect2, rt as useFocusGuards, st as DismissableLayer, tt as Combination_default, ut as useId, vt as dispatchDiscreteCustomEvent, w as array } from "./zod-W5ZEjzaE.js";
19
19
  import { i as TooltipProvider, t as Tooltip } from "./tooltip-DwNnFsxZ.js";
20
20
  import { a as linter, c as historyField, i as forEachDiagnostic, l as insertTab, o as setDiagnostics, s as history, u as CopyClipboardIcon } from "./esm-CDHI9cuO.js";
21
- import { i as debounce_default } from "./constants-CvyfaCvs.js";
21
+ import { i as debounce_default } from "./constants-CcdcOQyC.js";
22
22
  import { C as dequal, a as getResolvedMarimoConfig, g as useAtomValue, h as useAtom, i as autoInstantiateAtom, l as createDeepEqualAtom, m as Provider, n as useTheme, p as isIslands, t as resolvedThemeAtom, u as store, y as atom } from "./useTheme-CzwDokKe.js";
23
23
  import { $ as ViewPlugin, At as Prec, B as tags, Dt as EditorState, E as getIndentUnit, Et as EditorSelection, Ft as StateField, I as syntaxTree, It as Text, J as parseMixed, L as unfoldAll, Lt as Transaction, Ot as Facet, Pt as StateEffect, Q as GutterMarker, S as foldInside, Tt as Compartment, Y as Decoration, Z as EditorView, b as foldAll, dt as keymap, f as StreamLanguage, jt as RangeSet, l as LanguageDescription, mt as placeholder, ot as gutter, u as LanguageSupport, ut as hoverTooltip, vt as showPanel, w as foldNodeProp, xt as Annotation, yt as showTooltip } from "./dist-CxZvoNao.js";
24
24
  import { t as invariant } from "./invariant-e8eBgdux.js";
@@ -5,7 +5,7 @@ import { t as __commonJSMin } from "./chunk-BNovOVIE.js";
5
5
  import { _ as Logger } from "./button-D1C3g5GI.js";
6
6
  import { t as require_compiler_runtime } from "./compiler-runtime-CEbnTgxf.js";
7
7
  import { u as createLucideIcon } from "./dist-CTtLBPLZ.js";
8
- import { r as KnownQueryParams } from "./constants-CvyfaCvs.js";
8
+ import { r as KnownQueryParams } from "./constants-CcdcOQyC.js";
9
9
  import { f as waitFor, p as isIslands, u as store, y as atom } from "./useTheme-CzwDokKe.js";
10
10
  var CircleQuestionMark = createLucideIcon("circle-question-mark", [
11
11
  ["circle", {
@@ -4,7 +4,7 @@ import { t as require_react } from "./react-DA-nE2FX.js";
4
4
  import { t as require_compiler_runtime } from "./compiler-runtime-CEbnTgxf.js";
5
5
  import { u as createLucideIcon } from "./dist-CTtLBPLZ.js";
6
6
  import { t as require_jsx_runtime } from "./jsx-runtime-9hcJiI23.js";
7
- import { n as Constants } from "./constants-CvyfaCvs.js";
7
+ import { n as Constants } from "./constants-CcdcOQyC.js";
8
8
  var Pencil = createLucideIcon("pencil", [["path", {
9
9
  d: "M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",
10
10
  key: "1a8usu"
@@ -2,7 +2,7 @@ import { s as __toESM } from "./chunk-BNovOVIE.js";
2
2
  import { g as cn, r as cva } from "./button-D1C3g5GI.js";
3
3
  import { t as require_react } from "./react-DA-nE2FX.js";
4
4
  import { t as require_compiler_runtime } from "./compiler-runtime-CEbnTgxf.js";
5
- import { t as toDate } from "./toDate-B1AzlBoW.js";
5
+ import { t as toDate } from "./toDate-BxaMtnNb.js";
6
6
  import { t as require_jsx_runtime } from "./jsx-runtime-9hcJiI23.js";
7
7
  import { C as dequal } from "./useTheme-CzwDokKe.js";
8
8
  import { i as tableFromIPC } from "./loader-ZFbGsMN1.js";
@@ -2,16 +2,16 @@ import { s as __toESM } from "./chunk-BNovOVIE.js";
2
2
  import { _ as Logger, c as Objects, g as cn, h as Events } from "./button-D1C3g5GI.js";
3
3
  import { t as require_react } from "./react-DA-nE2FX.js";
4
4
  import { t as require_compiler_runtime } from "./compiler-runtime-CEbnTgxf.js";
5
- import { c as asRemoteURL, g as CircleQuestionMark } from "./toDate-B1AzlBoW.js";
5
+ import { c as asRemoteURL, g as CircleQuestionMark } from "./toDate-BxaMtnNb.js";
6
6
  import "./react-dom-D5FDLRUB.js";
7
7
  import { t as require_jsx_runtime } from "./jsx-runtime-9hcJiI23.js";
8
8
  import "./zod-W5ZEjzaE.js";
9
9
  import { n as ErrorBanner } from "./error-banner-B_ioHva3.js";
10
10
  import { t as Tooltip } from "./tooltip-DwNnFsxZ.js";
11
- import { i as debounce_default } from "./constants-CvyfaCvs.js";
11
+ import { i as debounce_default } from "./constants-CcdcOQyC.js";
12
12
  import { n as useTheme, w as useEvent_default } from "./useTheme-CzwDokKe.js";
13
13
  import { s as uniq } from "./arrays-beUWo8RF.js";
14
- import { a as AlertTitle, n as arrow, o as isValid, r as Alert, t as useDeepCompareMemoize } from "./useDeepCompareMemoize-CsyOnnjc.js";
14
+ import { a as AlertTitle, n as arrow, o as isValid, r as Alert, t as useDeepCompareMemoize } from "./useDeepCompareMemoize-BOrrcIxj.js";
15
15
  import { n as formats } from "./vega-loader.browser-DqEcFOPD.js";
16
16
  import { a as getContainerWidth, n as vegaLoadData, s as tooltipHandler } from "./loader-ZFbGsMN1.js";
17
17
  import { t as useAsyncData } from "./useAsyncData-BL98MPIy.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@marimo-team/islands",
3
- "version": "0.23.2-dev20",
3
+ "version": "0.23.2-dev24",
4
4
  "main": "dist/main.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "type": "module",
@@ -381,6 +381,18 @@ export function useNotebookActions() {
381
381
  });
382
382
  },
383
383
  },
384
+ {
385
+ icon: <MarimoPlusIcon size={14} strokeWidth={1.5} />,
386
+ label: "Create molab notebook",
387
+ handle: async () => {
388
+ const code = await readCode();
389
+ const url = createShareableLink({
390
+ code: code.contents,
391
+ baseUrl: `${Constants.molab}/new`,
392
+ });
393
+ window.open(url, "_blank");
394
+ },
395
+ },
384
396
  ],
385
397
  },
386
398
 
@@ -7,6 +7,7 @@ export const Constants = {
7
7
  discordLink: "https://marimo.io/discord?ref=notebook",
8
8
  docsPage: "https://docs.marimo.io",
9
9
  youtube: "https://www.youtube.com/@marimo-team",
10
+ molab: "https://molab.marimo.io",
10
11
  };
11
12
 
12
13
  export const KnownQueryParams = {
@@ -9,12 +9,14 @@ import {
9
9
  } from "../../components/ui/tabs";
10
10
  import { renderHTML } from "../core/RenderHTML";
11
11
  import type { IPlugin, IPluginProps } from "../types";
12
+ import { Labeled } from "./common/labeled";
12
13
 
13
14
  interface Data {
14
15
  /**
15
16
  * The labels for each tab; raw HTML.
16
17
  */
17
18
  tabs: string[];
19
+ label: string | null;
18
20
  }
19
21
 
20
22
  // Selected tab index
@@ -25,6 +27,7 @@ export class TabsPlugin implements IPlugin<T, Data> {
25
27
 
26
28
  validator = z.object({
27
29
  tabs: z.array(z.string()),
30
+ label: z.string().nullable(),
28
31
  });
29
32
 
30
33
  render(props: IPluginProps<T, Data>): JSX.Element {
@@ -47,6 +50,7 @@ interface TabComponentProps extends Data {
47
50
 
48
51
  const TabComponent = ({
49
52
  tabs,
53
+ label,
50
54
  value,
51
55
  setValue,
52
56
  children,
@@ -67,17 +71,19 @@ const TabComponent = ({
67
71
  }
68
72
 
69
73
  return (
70
- <Tabs value={internalValue} onValueChange={handleChange}>
71
- <TabsList>
72
- {tabs.map((tab, index) => (
73
- <TabsTrigger key={index} value={index.toString()}>
74
- {renderHTML({ html: tab })}
75
- </TabsTrigger>
76
- ))}
77
- </TabsList>
78
- {React.Children.map(children, (child, index) => {
79
- return <TabsContent value={index.toString()}>{child}</TabsContent>;
80
- })}
81
- </Tabs>
74
+ <Labeled label={label} align="top">
75
+ <Tabs value={internalValue} onValueChange={handleChange}>
76
+ <TabsList>
77
+ {tabs.map((tab, index) => (
78
+ <TabsTrigger key={index} value={index.toString()}>
79
+ {renderHTML({ html: tab })}
80
+ </TabsTrigger>
81
+ ))}
82
+ </TabsList>
83
+ {React.Children.map(children, (child, index) => {
84
+ return <TabsContent value={index.toString()}>{child}</TabsContent>;
85
+ })}
86
+ </Tabs>
87
+ </Labeled>
82
88
  );
83
89
  };
@@ -380,6 +380,18 @@ export class MatplotlibRenderer {
380
380
  return;
381
381
  }
382
382
 
383
+ // Restore selection from backend when the value changed and the user
384
+ // is not actively drawing/dragging/resizing. During active interactions
385
+ // the renderer owns the interaction state — overwriting it would fight
386
+ // the user's pointer.
387
+ const isUserInteracting =
388
+ this.#interaction.type !== "idle" && this.#interaction.action !== null;
389
+ if (state.value !== prev.value && !isUserInteracting) {
390
+ this.#restoreSelection(state.value);
391
+ // #restoreSelection already schedules a redraw
392
+ return;
393
+ }
394
+
383
395
  // Redraw if style props changed or dimensions changed
384
396
  if (
385
397
  needsRedraw ||
@@ -576,6 +588,10 @@ export class MatplotlibRenderer {
576
588
 
577
589
  #restoreSelection = (value: SelectionValue): void => {
578
590
  if (!value || !("has_selection" in value) || !value.has_selection) {
591
+ if (this.#interaction.type !== "idle") {
592
+ this.#interaction = { type: "idle" };
593
+ this.#scheduleRedraw();
594
+ }
579
595
  return;
580
596
  }
581
597