@marimo-team/islands 0.18.5-dev169 → 0.18.5-dev172

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 (29) hide show
  1. package/dist/{Combination-CoheOLQf.js → Combination-33P1MEPK.js} +1 -1
  2. package/dist/{ConnectedDataExplorerComponent-BhnOd8mV.js → ConnectedDataExplorerComponent-BIfUtj_S.js} +9 -9
  3. package/dist/{any-language-editor-CO_tO4mX.js → any-language-editor-Bda9cY1_.js} +4 -4
  4. package/dist/{button-BE_o5IpN.js → button-BlF-78eJ.js} +1 -1
  5. package/dist/{check-Crt1N6cj.js → check-DDykH_Yi.js} +1 -1
  6. package/dist/{copy-BmWLlwa6.js → copy-B5nooU3m.js} +2 -2
  7. package/dist/{error-banner-DyX88bLT.js → error-banner-UH0Nxilf.js} +3 -3
  8. package/dist/{esm-CiSvoGHk.js → esm-D197NGQX.js} +4 -4
  9. package/dist/{glide-data-editor-tS-A6Szz.js → glide-data-editor-DWlk0mEY.js} +7 -7
  10. package/dist/{hotkeys-BUVs9ecz.js → hotkeys-C4e3s3sJ.js} +2 -2
  11. package/dist/{label-C3TPGdQ0.js → label-oKuiQuiM.js} +4 -4
  12. package/dist/{loader-Cn9P1Cko.js → loader-DH7xXi-E.js} +1 -1
  13. package/dist/main.js +23 -23
  14. package/dist/{mermaid-BAHK5egT.js → mermaid-JA6veDHv.js} +3 -3
  15. package/dist/{slides-component-oQmowhoJ.js → slides-component-BNbVrOMb.js} +2 -2
  16. package/dist/{spec-D-_Yj0lh.js → spec-hsYzGr6F.js} +5 -5
  17. package/dist/{types-CJDsYooe.js → types-DEmfj_i8.js} +6 -6
  18. package/dist/{useAsyncData-CaouoMw5.js → useAsyncData-BGpae_uu.js} +1 -1
  19. package/dist/{useDeepCompareMemoize-B01JaKw2.js → useDeepCompareMemoize-D3uOrgqD.js} +5 -5
  20. package/dist/{useIframeCapabilities-oYhPeWtR.js → useIframeCapabilities-BsIPDupA.js} +1 -1
  21. package/dist/{useTheme-DLCDAdUO.js → useTheme-DdLjooMf.js} +1 -1
  22. package/dist/{vega-component-D36WQQq8.js → vega-component-C1FaaACt.js} +8 -8
  23. package/package.json +1 -1
  24. package/src/components/editor/chrome/panels/panel-context.tsx +34 -0
  25. package/src/components/editor/chrome/wrapper/app-chrome.tsx +108 -95
  26. package/src/components/scratchpad/scratchpad.tsx +17 -4
  27. package/src/core/codemirror/cells/extensions.ts +7 -4
  28. package/src/core/hotkeys/__tests__/shortcuts.test.ts +61 -4
  29. package/src/core/hotkeys/shortcuts.ts +34 -2
@@ -1,7 +1,7 @@
1
1
  import { s as __toESM } from "./chunk-BNovOVIE.js";
2
2
  import { t as require_react } from "./react-DdA8EBol.js";
3
3
  import { t as require_compiler_runtime } from "./compiler-runtime-DHFVbq0b.js";
4
- import { c as useComposedRefs, o as useEventListener, s as composeRefs } from "./button-BE_o5IpN.js";
4
+ import { c as useComposedRefs, o as useEventListener, s as composeRefs } from "./button-BlF-78eJ.js";
5
5
  import { t as require_jsx_runtime } from "./jsx-runtime-CTBg5pdT.js";
6
6
  import { t as require_react_dom } from "./react-dom-DJW8xUDg.js";
7
7
  /**
@@ -1,20 +1,20 @@
1
1
  import { a as __toCommonJS, n as __esmMin, r as __export, s as __toESM, t as __commonJSMin } from "./chunk-BNovOVIE.js";
2
2
  import { t as require_react } from "./react-DdA8EBol.js";
3
3
  import { t as require_compiler_runtime } from "./compiler-runtime-DHFVbq0b.js";
4
- import { N as createLucideIcon } from "./Combination-CoheOLQf.js";
5
- import { A as Badge, B as ListFilter, I as Type, L as ToggleLeft, M as startCase_default, N as $896ba0a80a8f4d36$export$85fd5fdf27bacc79, V as Hash, W as Calendar, j as createReducerAndAtoms, t as augmentSpecWithData, z as SquareFunction } from "./spec-D-_Yj0lh.js";
6
- import { E as useOnMount, M as $a916eb452884faea$export$b7a616150fdb9f44, a as SelectGroup, c as SelectSeparator, i as SelectContent, l as SelectTrigger, o as SelectItem, r as Select, s as SelectLabel, t as Label, u as SelectValue } from "./label-C3TPGdQ0.js";
7
- import { t as Button, u as cn } from "./button-BE_o5IpN.js";
8
- import { o as Objects, s as Logger } from "./hotkeys-BUVs9ecz.js";
4
+ import { N as createLucideIcon } from "./Combination-33P1MEPK.js";
5
+ import { A as Badge, B as ListFilter, I as Type, L as ToggleLeft, M as startCase_default, N as $896ba0a80a8f4d36$export$85fd5fdf27bacc79, V as Hash, W as Calendar, j as createReducerAndAtoms, t as augmentSpecWithData, z as SquareFunction } from "./spec-hsYzGr6F.js";
6
+ import { E as useOnMount, M as $a916eb452884faea$export$b7a616150fdb9f44, a as SelectGroup, c as SelectSeparator, i as SelectContent, l as SelectTrigger, o as SelectItem, r as Select, s as SelectLabel, t as Label, u as SelectValue } from "./label-oKuiQuiM.js";
7
+ import { t as Button, u as cn } from "./button-BlF-78eJ.js";
8
+ import { o as Objects, s as Logger } from "./hotkeys-C4e3s3sJ.js";
9
9
  import { t as require_jsx_runtime } from "./jsx-runtime-CTBg5pdT.js";
10
10
  import "./react-dom-DJW8xUDg.js";
11
- import { l as Tooltip, n as ErrorBanner } from "./error-banner-DyX88bLT.js";
12
- import { S as createStore, g as Provider, n as useTheme, v as useAtomValue, x as atom } from "./useTheme-DLCDAdUO.js";
11
+ import { l as Tooltip, n as ErrorBanner } from "./error-banner-UH0Nxilf.js";
12
+ import { S as createStore, g as Provider, n as useTheme, v as useAtomValue, x as atom } from "./useTheme-DdLjooMf.js";
13
13
  import { t as isString_default } from "./isString-B0JuKBai.js";
14
- import { a as tooltipHandler, n as vegaLoadData } from "./loader-Cn9P1Cko.js";
14
+ import { a as tooltipHandler, n as vegaLoadData } from "./loader-DH7xXi-E.js";
15
15
  import { t as invariant } from "./invariant-BW72tHBT.js";
16
16
  import "./vega-loader.browser-nTy1NZD3.js";
17
- import { t as useAsyncData } from "./useAsyncData-CaouoMw5.js";
17
+ import { t as useAsyncData } from "./useAsyncData-BGpae_uu.js";
18
18
  import { n as q, r as contains } from "./react-vega-z40f-dXy.js";
19
19
  import "./defaultLocale-DZtxSCkJ.js";
20
20
  import "./defaultLocale-DMZFeDB8.js";
@@ -1,12 +1,12 @@
1
1
  import { s as __toESM } from "./chunk-BNovOVIE.js";
2
2
  import { t as require_react } from "./react-DdA8EBol.js";
3
3
  import "./compiler-runtime-DHFVbq0b.js";
4
- import "./Combination-CoheOLQf.js";
5
- import { s as Logger } from "./hotkeys-BUVs9ecz.js";
4
+ import "./Combination-33P1MEPK.js";
5
+ import { s as Logger } from "./hotkeys-C4e3s3sJ.js";
6
6
  import { t as require_jsx_runtime } from "./jsx-runtime-CTBg5pdT.js";
7
7
  import "./react-dom-DJW8xUDg.js";
8
- import { n as ErrorBanner } from "./error-banner-DyX88bLT.js";
9
- import { d as CopyClipboardIcon, n as loadLanguage, r as esm_default, t as langs } from "./esm-CiSvoGHk.js";
8
+ import { n as ErrorBanner } from "./error-banner-UH0Nxilf.js";
9
+ import { d as CopyClipboardIcon, n as loadLanguage, r as esm_default, t as langs } from "./esm-D197NGQX.js";
10
10
  import "./dist-D7jHtwN8.js";
11
11
  import "./dist-BZXKWoES.js";
12
12
  import "./dist-CZq4mfrw.js";
@@ -2,7 +2,7 @@ import { s as __toESM } from "./chunk-BNovOVIE.js";
2
2
  import { t as require_react } from "./react-DdA8EBol.js";
3
3
  import { t as require_compiler_runtime } from "./compiler-runtime-DHFVbq0b.js";
4
4
  import { t as clsx } from "./clsx-D2KVTYnW.js";
5
- import { i as parseShortcut } from "./hotkeys-BUVs9ecz.js";
5
+ import { i as parseShortcut } from "./hotkeys-C4e3s3sJ.js";
6
6
  import { t as require_jsx_runtime } from "./jsx-runtime-CTBg5pdT.js";
7
7
  var CLASS_PART_SEPARATOR = "-", createClassGroupUtils = (e) => {
8
8
  let _ = createClassMap(e), { conflictingClassGroups: v, conflictingClassGroupModifiers: y } = e;
@@ -1,4 +1,4 @@
1
- import { N as createLucideIcon } from "./Combination-CoheOLQf.js";
1
+ import { N as createLucideIcon } from "./Combination-33P1MEPK.js";
2
2
  var Check = createLucideIcon("check", [["path", {
3
3
  d: "M20 6 9 17l-5-5",
4
4
  key: "1gmf2c"
@@ -1,8 +1,8 @@
1
1
  import { s as __toESM } from "./chunk-BNovOVIE.js";
2
2
  import { t as require_react } from "./react-DdA8EBol.js";
3
3
  import { t as require_compiler_runtime } from "./compiler-runtime-DHFVbq0b.js";
4
- import { N as createLucideIcon } from "./Combination-CoheOLQf.js";
5
- import { s as Logger } from "./hotkeys-BUVs9ecz.js";
4
+ import { N as createLucideIcon } from "./Combination-33P1MEPK.js";
5
+ import { s as Logger } from "./hotkeys-C4e3s3sJ.js";
6
6
  require_compiler_runtime(), require_react();
7
7
  var TOAST_LIMIT = 1, TOAST_REMOVE_DELAY = 1e4, count = 0;
8
8
  function genId() {
@@ -1,9 +1,9 @@
1
1
  import { s as __toESM } from "./chunk-BNovOVIE.js";
2
2
  import { t as require_react } from "./react-DdA8EBol.js";
3
3
  import { t as require_compiler_runtime } from "./compiler-runtime-DHFVbq0b.js";
4
- import { A as createContext2, E as Primitive, M as composeEventHandlers, O as createSlot, S as useId, _ as Arrow, b as createPopperScope, c as withSmartCollisionBoundary, d as Root$1, g as Anchor, h as Portal, i as useFocusGuards, j as createContextScope, k as createSlottable, m as Presence, n as hideOthers, p as useControllableState, r as FocusScope, s as withFullScreenAsRoot, t as Combination_default, u as StyleNamespace, v as Content$1, w as DismissableLayer, y as Root2$1 } from "./Combination-CoheOLQf.js";
5
- import { a as cva, c as useComposedRefs, n as buttonVariants, u as cn } from "./button-BE_o5IpN.js";
6
- import { s as Logger } from "./hotkeys-BUVs9ecz.js";
4
+ import { A as createContext2, E as Primitive, M as composeEventHandlers, O as createSlot, S as useId, _ as Arrow, b as createPopperScope, c as withSmartCollisionBoundary, d as Root$1, g as Anchor, h as Portal, i as useFocusGuards, j as createContextScope, k as createSlottable, m as Presence, n as hideOthers, p as useControllableState, r as FocusScope, s as withFullScreenAsRoot, t as Combination_default, u as StyleNamespace, v as Content$1, w as DismissableLayer, y as Root2$1 } from "./Combination-33P1MEPK.js";
5
+ import { a as cva, c as useComposedRefs, n as buttonVariants, u as cn } from "./button-BlF-78eJ.js";
6
+ import { s as Logger } from "./hotkeys-C4e3s3sJ.js";
7
7
  import { t as require_jsx_runtime } from "./jsx-runtime-CTBg5pdT.js";
8
8
  import { P as object, R as string } from "./zod-LbXVxiL9.js";
9
9
  var import_react = /* @__PURE__ */ __toESM(require_react(), 1), import_jsx_runtime = /* @__PURE__ */ __toESM(require_jsx_runtime(), 1), [createTooltipContext, createTooltipScope] = createContextScope("Tooltip", [createPopperScope]), usePopperScope = createPopperScope(), PROVIDER_NAME = "TooltipProvider", DEFAULT_DELAY_DURATION = 700, TOOLTIP_OPEN = "tooltip.open", [TooltipProviderContextProvider, useTooltipProviderContext] = createTooltipContext(PROVIDER_NAME), TooltipProvider$1 = (t) => {
@@ -1,11 +1,11 @@
1
1
  import { s as __toESM } from "./chunk-BNovOVIE.js";
2
2
  import { t as require_react } from "./react-DdA8EBol.js";
3
3
  import { t as require_compiler_runtime } from "./compiler-runtime-DHFVbq0b.js";
4
- import { n as Copy, r as toast, t as copyToClipboard } from "./copy-BmWLlwa6.js";
5
- import { t as Check } from "./check-Crt1N6cj.js";
6
- import { l as Events, u as cn } from "./button-BE_o5IpN.js";
4
+ import { n as Copy, r as toast, t as copyToClipboard } from "./copy-B5nooU3m.js";
5
+ import { t as Check } from "./check-DDykH_Yi.js";
6
+ import { l as Events, u as cn } from "./button-BlF-78eJ.js";
7
7
  import { t as require_jsx_runtime } from "./jsx-runtime-CTBg5pdT.js";
8
- import { l as Tooltip } from "./error-banner-DyX88bLT.js";
8
+ import { l as Tooltip } from "./error-banner-UH0Nxilf.js";
9
9
  import { $ as ViewPlugin, A as indentString, At as RangeSet, B as tags, Bt as countColumn, C as foldKeymap, Ct as CharCategory, D as getIndentation, Dt as Facet, E as getIndentUnit, Et as EditorState, F as syntaxHighlighting, Ft as Text, H as NodeProp, Ht as fromCodePoint, I as syntaxTree, It as Transaction, J as parseMixed, Lt as codePointAt, N as matchBrackets, Nt as StateEffect, O as indentNodeProp, Pt as StateField, R as Tag, Rt as codePointSize, S as foldInside, St as ChangeSet, Tt as EditorSelection, Vt as findClusterBreak, X as Direction, Y as Decoration, Z as EditorView, _t as showPanel, a as HighlightStyle, bt as Annotation, ct as highlightActiveLineGutter, dt as keymap, et as WidgetType, f as StreamLanguage, ft as lineNumbers, g as defaultHighlightStyle, gt as runScopeHandlers, h as continuedIndent, ht as rectangularSelection, it as getPanel, j as indentUnit, jt as RangeSetBuilder, k as indentOnInput, kt as Prec, lt as highlightSpecialChars, mt as placeholder, n as ExternalTokenizer, nt as drawSelection, o as IndentContext, p as bracketMatching, pt as logException, r as LRParser, rt as dropCursor, s as LRLanguage, st as highlightActiveLine, t as ContextTracker, tt as crosshairCursor, u as LanguageSupport, ut as hoverTooltip, v as delimitedIndent, w as foldNodeProp, x as foldGutter, xt as ChangeDesc, yt as crelt, z as styleTags, zt as combineConfig } from "./dist-D7jHtwN8.js";
10
10
  import { a as closeBracketsKeymap, c as completionKeymap, f as snippetCompletion, i as closeBrackets, l as ifNotIn, r as autocompletion, s as completeFromList } from "./dist-g1p2PEVs.js";
11
11
  import { a as PLSQL, f as sql, l as StandardSQL, t as Cassandra } from "./dist-DsOyFflT.js";
@@ -4,15 +4,15 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
4
4
  import { s as __toESM, t as __commonJSMin } from "./chunk-BNovOVIE.js";
5
5
  import { t as require_react } from "./react-DdA8EBol.js";
6
6
  import { t as require_compiler_runtime } from "./compiler-runtime-DHFVbq0b.js";
7
- import { n as Copy, r as toast, t as copyToClipboard } from "./copy-BmWLlwa6.js";
8
- import "./Combination-CoheOLQf.js";
9
- import { A as logNever, E as useOnMount, i as SelectContent, l as SelectTrigger, o as SelectItem, r as Select, t as Label, u as SelectValue } from "./label-C3TPGdQ0.js";
10
- import { S as DropdownMenuSubTrigger, W as ErrorBoundary, b as DropdownMenuSub, fn as Trash, g as DropdownMenuItem, hn as Pencil, ht as capitalize_default, i as Input, m as DropdownMenuContent, mn as Plus, mt as marked, p as DropdownMenu, pt as useNonce, t as BulkEdit, v as DropdownMenuPortal, x as DropdownMenuSubContent, y as DropdownMenuSeparator } from "./types-CJDsYooe.js";
11
- import { l as Events, t as Button } from "./button-BE_o5IpN.js";
12
- import { s as Logger } from "./hotkeys-BUVs9ecz.js";
7
+ import { n as Copy, r as toast, t as copyToClipboard } from "./copy-B5nooU3m.js";
8
+ import "./Combination-33P1MEPK.js";
9
+ import { A as logNever, E as useOnMount, i as SelectContent, l as SelectTrigger, o as SelectItem, r as Select, t as Label, u as SelectValue } from "./label-oKuiQuiM.js";
10
+ import { S as DropdownMenuSubTrigger, W as ErrorBoundary, b as DropdownMenuSub, fn as Trash, g as DropdownMenuItem, hn as Pencil, ht as capitalize_default, i as Input, m as DropdownMenuContent, mn as Plus, mt as marked, p as DropdownMenu, pt as useNonce, t as BulkEdit, v as DropdownMenuPortal, x as DropdownMenuSubContent, y as DropdownMenuSeparator } from "./types-DEmfj_i8.js";
11
+ import { l as Events, t as Button } from "./button-BlF-78eJ.js";
12
+ import { s as Logger } from "./hotkeys-C4e3s3sJ.js";
13
13
  import { t as require_jsx_runtime } from "./jsx-runtime-CTBg5pdT.js";
14
14
  import "./react-dom-DJW8xUDg.js";
15
- import { h as useEvent_default, n as useTheme } from "./useTheme-DLCDAdUO.js";
15
+ import { h as useEvent_default, n as useTheme } from "./useTheme-DdLjooMf.js";
16
16
  import { t as require_prop_types } from "./prop-types-DTzjue2h.js";
17
17
  import { A as require__Map, B as require__baseGetTag, C as require__hasPath, D as require_isArguments, E as require__isIndex, F as require_isFunction, G as assert, H as require__root, I as require_isObject, J as maybe, K as assertNever, L as require__isKey, M as require_eq, N as require__getNative, O as require__castPath, P as require__toSource, R as require_isSymbol, S as resolveCellsThunk, T as require_isLength, U as require__freeGlobal, V as require__Symbol, W as require_isArray, _ as isEditableGridCell, a as mergeAndRealizeTheme, b as isReadWriteCell, c as withAlpha, d as CompactSelection, f as GridCellKind, g as booleanCellIsEditable, h as InnerGridCellKind, i as makeCSSStyle, j as require__ListCache, k as require__MapCache, l as BooleanEmpty, m as GridColumnMenuIcon, n as ThemeContext, o as blend, p as GridColumnIcon, q as deepEqual, r as getDataEditorTheme, s as blendCache, t as ClickOutsideContainer, u as BooleanIndeterminate, v as isInnerOnlyCell, w as require__toKey, x as isSizedGridColumn, y as isObjectEditorCallbackResult, z as require_isObjectLike } from "./click-outside-container-D90VWx_r.js";
18
18
  import { t as styled_default } from "./dist-_FVOHtWJ.js";
@@ -141,8 +141,8 @@ function areKeysPressed(e2, p) {
141
141
  function normalizeKey(e2) {
142
142
  return {
143
143
  control: "ctrl",
144
- command: "meta",
145
- cmd: "meta",
144
+ command: "mod",
145
+ cmd: "mod",
146
146
  option: "alt",
147
147
  return: "enter"
148
148
  }[e2.toLowerCase()] || e2.toLowerCase();
@@ -1,10 +1,10 @@
1
1
  import { s as __toESM } from "./chunk-BNovOVIE.js";
2
2
  import { t as require_react } from "./react-DdA8EBol.js";
3
3
  import { t as require_compiler_runtime } from "./compiler-runtime-DHFVbq0b.js";
4
- import { C as useLayoutEffect2, E as Primitive$1, M as composeEventHandlers, N as createLucideIcon, O as createSlot$1, S as useId, T as useCallbackRef, _ as Arrow, b as createPopperScope, c as withSmartCollisionBoundary, f as VISUALLY_HIDDEN_STYLES, g as Anchor, h as Portal, i as useFocusGuards, j as createContextScope, n as hideOthers, p as useControllableState, r as FocusScope, s as withFullScreenAsRoot, t as Combination_default, u as StyleNamespace, v as Content, w as DismissableLayer, y as Root2$1 } from "./Combination-CoheOLQf.js";
5
- import { t as Check } from "./check-Crt1N6cj.js";
6
- import { a as cva, c as useComposedRefs, i as createSlot, l as Events, u as cn } from "./button-BE_o5IpN.js";
7
- import { s as Logger } from "./hotkeys-BUVs9ecz.js";
4
+ import { C as useLayoutEffect2, E as Primitive$1, M as composeEventHandlers, N as createLucideIcon, O as createSlot$1, S as useId, T as useCallbackRef, _ as Arrow, b as createPopperScope, c as withSmartCollisionBoundary, f as VISUALLY_HIDDEN_STYLES, g as Anchor, h as Portal, i as useFocusGuards, j as createContextScope, n as hideOthers, p as useControllableState, r as FocusScope, s as withFullScreenAsRoot, t as Combination_default, u as StyleNamespace, v as Content, w as DismissableLayer, y as Root2$1 } from "./Combination-33P1MEPK.js";
5
+ import { t as Check } from "./check-DDykH_Yi.js";
6
+ import { a as cva, c as useComposedRefs, i as createSlot, l as Events, u as cn } from "./button-BlF-78eJ.js";
7
+ import { s as Logger } from "./hotkeys-C4e3s3sJ.js";
8
8
  import { t as require_jsx_runtime } from "./jsx-runtime-CTBg5pdT.js";
9
9
  import { t as require_react_dom } from "./react-dom-DJW8xUDg.js";
10
10
  import { t as toString_default } from "./toString-C4TLO6FA.js";
@@ -2,7 +2,7 @@ var __defProp = Object.defineProperty;
2
2
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
3
  var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
4
4
  var _a, _b, _c, _d, _e;
5
- import { o as Objects, s as Logger } from "./hotkeys-BUVs9ecz.js";
5
+ import { o as Objects, s as Logger } from "./hotkeys-C4e3s3sJ.js";
6
6
  import { E as _baseGetTag_default, T as isObjectLike_default } from "./_baseFor-DSVmVciX.js";
7
7
  import { St as isObject, a as loader, c as typeParsers$1, gt as isArray, o as read$1, wt as isString } from "./vega-loader.browser-nTy1NZD3.js";
8
8
  var numberTag = "[object Number]";
package/dist/main.js CHANGED
@@ -4,23 +4,23 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
4
4
  import { a as __toCommonJS, n as __esmMin, o as __toDynamicImportESM, r as __export$1, s as __toESM, t as __commonJSMin } from "./chunk-BNovOVIE.js";
5
5
  import { t as require_react } from "./react-DdA8EBol.js";
6
6
  import { t as require_compiler_runtime } from "./compiler-runtime-DHFVbq0b.js";
7
- import { n as Copy, r as toast, t as copyToClipboard } from "./copy-BmWLlwa6.js";
7
+ import { n as Copy, r as toast, t as copyToClipboard } from "./copy-B5nooU3m.js";
8
8
  import { h as require_cjs$1, i as Go$1, __tla as __tla_0 } from "./chunk-OGVTOU66-RMy3tlM6.js";
9
- import { C as useLayoutEffect2, D as dispatchDiscreteCustomEvent, E as Primitive$1, M as composeEventHandlers, N as createLucideIcon, O as createSlot, S as useId$12, T as useCallbackRef, _ as Arrow, a as __awaiter, b as createPopperScope, c as withSmartCollisionBoundary, d as Root$5, g as Anchor, h as Portal, i as useFocusGuards, j as createContextScope$1, l as isInVscodeExtension, m as Presence, n as hideOthers, o as MAX_HEIGHT_OFFSET, p as useControllableState, r as FocusScope, s as withFullScreenAsRoot, t as Combination_default, u as StyleNamespace, v as Content$3, w as DismissableLayer, x as useSize, y as Root2$6 } from "./Combination-CoheOLQf.js";
10
- import { A as Badge, B as ListFilter, C as DEFAULT_COLOR_SCHEME, D as SCALE_TYPE_DESCRIPTIONS, E as EMPTY_VALUE$1, F as $5a387cc49350e6db$export$722debc0e56fea39, H as ChartPie, I as Type, L as ToggleLeft, M as startCase_default, N as $896ba0a80a8f4d36$export$85fd5fdf27bacc79, O as TIME_UNIT_DESCRIPTIONS, P as $fb18d541ea1ad717$export$ad991b66133851cf, R as Table$1, S as DEFAULT_AGGREGATION, T as DEFAULT_TIME_UNIT, U as ChartColumn, V as Hash, W as Calendar, _ 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 createReducerAndAtoms, 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, z as SquareFunction } from "./spec-D-_Yj0lh.js";
11
- import { t as Check } from "./check-Crt1N6cj.js";
12
- import { A as logNever, B as ChevronDown, C as useDirection, D as useOnUnmount, E as useOnMount, F as $18f2051aff69b9bf$export$a54013f0d02a8f82, I as $b5e257d569688ac6$export$535bd6ca7f90a273, M as $a916eb452884faea$export$b7a616150fdb9f44, O as usePrevious, P as $18f2051aff69b9bf$export$43bb16f9c6d9e3f7, R as X, S as Trigger$5, T as clamp$2, _ as menuItemVariants, a as SelectGroup, b as menuSubTriggerVariants, c as SelectSeparator, d as NativeSelect, f as selectStyles, g as menuControlVariants, h as menuControlCheckVariants, i as SelectContent, k as assertNever, l as SelectTrigger, m as menuContentCommon, n as Primitive, o as SelectItem, p as MENU_ITEM_DISABLED, r as Select, s as SelectLabel, t as Label, u as SelectValue, v as menuLabelVariants, w as createCollection, x as Icon, y as menuSeparatorVariants } from "./label-C3TPGdQ0.js";
13
- import { $ as $514c0188e459b4c0$export$9afb8bc826b033ea, $t as $65484d02dcb7eb3e$export$457c3d6518dd4c6f, A as ItemIndicator, At as $6db58dc88e78b024$export$2f817fcdc4b89ae0, B as createMenuScope, Bt as $458b0a5536c1a7cf$export$40bfa8c7b0832715, C as DropdownMenuTrigger, Ct as $e5be200c675c3b3a$export$fc1a364ae1f3ff10, D as Content2$3, Dt as $6c7bd7858deea686$export$cd11ab140839f11d, E as CheckboxItem, Et as $701a24aa0da5b062$export$ea18c227d4417cc3, F as Root3, Ft as $507fabe10e71c6fb$export$630ff653c5ada6a9, G as $3985021b0ad6602f$export$37fb8590cf2c088c, Gt as $df56164dff5785e2$export$4338b53315abf666, H as Root$6, Ht as $b4b717babfbb907b$export$bebd5a1431fec25d, I as Separator, It as $f6c31cce2adf654f$export$45712eceda6fad21, J as $a049562f99e7db0e$export$f9c6924e160136d1, Jt as $c87311424ea30a05$export$78551043582a6a98, K as $3985021b0ad6602f$export$f5b8910cec6cf069, Kt as $313b98861ee5dd6c$export$d6875122194c7b44, L as Sub, Lt as _class_private_field_init, M as Portal$2, Mt as $6179b936705e76d3$export$ae780daf29e6d456, N as RadioGroup$2, Nt as $9ab94262bd0047c7$export$420e68273165f4ec, O as Group$1, Ot as $fca6afa0e843324b$export$87b761675e8eaa10, P as RadioItem, Pt as $3ad3f6e1647bc98d$export$80f3e147d781571c, Q as $514c0188e459b4c0$export$5f1af8db9871e1d6, Qt as $7215afc6de606d6b$export$de79e2c695e052f3, R as SubContent, Rt as $ae1eeba8b9eafd08$export$5165eccb35aaadb5, S as DropdownMenuSubTrigger, St as $e5be200c675c3b3a$export$dad6ae84456c676a, T as Arrow2, Tt as $f7dceffc5ad7768b$export$4e328f61c538687f, U as createRovingFocusGroupScope, Ut as $99facab73266f662$export$5add1d006293d136, V as Item$2, Vt as $b4b717babfbb907b$export$4c063cf1350e6fed, W as ErrorBoundary, Wt as $e9faafb641e167db$export$90fc3a17d93f704c, X as $ee014567cb39d3f0$export$f551688fc98f2e09, Xt as $c87311424ea30a05$export$a11b0059900ceec8, Y as $d3e0e05bdfcf66bd$export$c24727297075ec6a, Yt as $c87311424ea30a05$export$9ac100e40613ea10, Z as $ee014567cb39d3f0$export$ff05c3ac10437e03, Zt as $c87311424ea30a05$export$fedb369cb70207f1, _ as DropdownMenuLabel, _n as ChevronRight, _t as $2baaea4c71418dea$export$294aa081a6c6f55d, a as OnBlurredInput, an as $431fbd86ca7dc216$export$b204af158042fbac, at as $64fa3d84918910a7$export$2881499e37b75b9a, b as DropdownMenuSub, bt as $e5be200c675c3b3a$export$a763b9476acd3eb, c as NumberField, cn as $bdb11010cef70236$export$b4cc09c592e8fdb8, ct as $64fa3d84918910a7$export$9d4c57ee4c6ffdd8, d as prettyNumber, dn as $f0a04ccd8dbdd83b$export$e5c5a5f917a5871c, dt as $64fa3d84918910a7$export$ef03459518577ad4, en as $3ef42575df84b30b$export$9d1611c77c2fe928, et as $d2b4bc8c273e7be6$export$24d547caef80ccd1, f as prettyScientificNumber, fn as Trash, ft as $64fa3d84918910a7$export$fabf2dc03a41866e, g as DropdownMenuItem, gn as Circle, gt as $d2e8511e6f209edf$export$e908e06f4b8e3402, h as DropdownMenuGroup, hn as Pencil, ht as capitalize_default, i as Input, in as $f4e2df6bd15f8569$export$98658e8c59125e6a, it as $f39a9eba43920ace$export$b5d7cc18bb8d2b59, j as Label$2, jt as $5b160d28a433310d$export$c17fa47878dc55b6, k as Item2$2, kt as $fca6afa0e843324b$export$f12b703ca79dfbb1, l as maxFractionalDigits, ln as $bdb11010cef70236$export$f680877a34711e37, lt as $64fa3d84918910a7$export$c245e6201fed2f75, m as DropdownMenuContent, mn as Plus, mt as marked, n as DebouncedInput, nn as $d4ee10de306f2510$export$cd4e5573fbe2b576, nt as $01b77f81d0f07f68$export$75b6ee27786ba447, o as useDebounceControlledState, on as $431fbd86ca7dc216$export$f21a1ffae260145a, ot as $64fa3d84918910a7$export$29f1550f4b0d4415, p as DropdownMenu, pn as Search, pt as useNonce, q as $a049562f99e7db0e$export$eb2fcfdbd7ba97d4, qt as $c87311424ea30a05$export$6446a186d09e379e, r as DebouncedNumberInput, rn as $d4ee10de306f2510$export$e58f029f0fbfdb29, rt as $01b77f81d0f07f68$export$b04be29aa201d4f5, s as useDebouncedCallback, sn as $ff5963eb1fccf552$export$e08e3b67e392101e, st as $64fa3d84918910a7$export$4d86445c2cf5e3, t as BulkEdit, tn as $d4ee10de306f2510$export$4282f70798064fe0, tt as $d2b4bc8c273e7be6$export$353f5b6fc5456de1, u as prettyEngineeringNumber, un as $8ae05eaa5c114e9c$export$7f54fc3180508a52, ut as $64fa3d84918910a7$export$c62b8e45d58ddad9, v as DropdownMenuPortal, vt as $e93e671b31057976$export$b8473d3665f3a75a, w as Anchor2, wt as $319e236875307eab$export$a9b970dcc4ae71a9, x as DropdownMenuSubContent, xt as $e5be200c675c3b3a$export$aca958c65c314e6c, y as DropdownMenuSeparator, yt as $e5be200c675c3b3a$export$75ee7c75d68f5b0e, z as SubTrigger, zt as $9446cca9a3875146$export$7d15b64cf5a3a4c4 } from "./types-CJDsYooe.js";
14
- import { S as CircleQuestionMark, _ as isUrl, a as AlertTitle, b as Deferred, c as constructFrom, d as millisecondsInMinute, f as millisecondsInSecond, g as appendQueryParams, h as getRuntimeManager, i as AlertDescription, l as millisecondsInDay, m as asRemoteURL, n as arrow, o as isValid$1, p as millisecondsInWeek, r as Alert, s as toDate, t as useDeepCompareMemoize, u as millisecondsInHour, v as require_cuid2, x as isWasm, y as waitForConnectionOpen } from "./useDeepCompareMemoize-B01JaKw2.js";
9
+ import { C as useLayoutEffect2, D as dispatchDiscreteCustomEvent, E as Primitive$1, M as composeEventHandlers, N as createLucideIcon, O as createSlot, S as useId$12, T as useCallbackRef, _ as Arrow, a as __awaiter, b as createPopperScope, c as withSmartCollisionBoundary, d as Root$5, g as Anchor, h as Portal, i as useFocusGuards, j as createContextScope$1, l as isInVscodeExtension, m as Presence, n as hideOthers, o as MAX_HEIGHT_OFFSET, p as useControllableState, r as FocusScope, s as withFullScreenAsRoot, t as Combination_default, u as StyleNamespace, v as Content$3, w as DismissableLayer, x as useSize, y as Root2$6 } from "./Combination-33P1MEPK.js";
10
+ import { A as Badge, B as ListFilter, C as DEFAULT_COLOR_SCHEME, D as SCALE_TYPE_DESCRIPTIONS, E as EMPTY_VALUE$1, F as $5a387cc49350e6db$export$722debc0e56fea39, H as ChartPie, I as Type, L as ToggleLeft, M as startCase_default, N as $896ba0a80a8f4d36$export$85fd5fdf27bacc79, O as TIME_UNIT_DESCRIPTIONS, P as $fb18d541ea1ad717$export$ad991b66133851cf, R as Table$1, S as DEFAULT_AGGREGATION, T as DEFAULT_TIME_UNIT, U as ChartColumn, V as Hash, W as Calendar, _ 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 createReducerAndAtoms, 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, z as SquareFunction } from "./spec-hsYzGr6F.js";
11
+ import { t as Check } from "./check-DDykH_Yi.js";
12
+ import { A as logNever, B as ChevronDown, C as useDirection, D as useOnUnmount, E as useOnMount, F as $18f2051aff69b9bf$export$a54013f0d02a8f82, I as $b5e257d569688ac6$export$535bd6ca7f90a273, M as $a916eb452884faea$export$b7a616150fdb9f44, O as usePrevious, P as $18f2051aff69b9bf$export$43bb16f9c6d9e3f7, R as X, S as Trigger$5, T as clamp$2, _ as menuItemVariants, a as SelectGroup, b as menuSubTriggerVariants, c as SelectSeparator, d as NativeSelect, f as selectStyles, g as menuControlVariants, h as menuControlCheckVariants, i as SelectContent, k as assertNever, l as SelectTrigger, m as menuContentCommon, n as Primitive, o as SelectItem, p as MENU_ITEM_DISABLED, r as Select, s as SelectLabel, t as Label, u as SelectValue, v as menuLabelVariants, w as createCollection, x as Icon, y as menuSeparatorVariants } from "./label-oKuiQuiM.js";
13
+ import { $ as $514c0188e459b4c0$export$9afb8bc826b033ea, $t as $65484d02dcb7eb3e$export$457c3d6518dd4c6f, A as ItemIndicator, At as $6db58dc88e78b024$export$2f817fcdc4b89ae0, B as createMenuScope, Bt as $458b0a5536c1a7cf$export$40bfa8c7b0832715, C as DropdownMenuTrigger, Ct as $e5be200c675c3b3a$export$fc1a364ae1f3ff10, D as Content2$3, Dt as $6c7bd7858deea686$export$cd11ab140839f11d, E as CheckboxItem, Et as $701a24aa0da5b062$export$ea18c227d4417cc3, F as Root3, Ft as $507fabe10e71c6fb$export$630ff653c5ada6a9, G as $3985021b0ad6602f$export$37fb8590cf2c088c, Gt as $df56164dff5785e2$export$4338b53315abf666, H as Root$6, Ht as $b4b717babfbb907b$export$bebd5a1431fec25d, I as Separator, It as $f6c31cce2adf654f$export$45712eceda6fad21, J as $a049562f99e7db0e$export$f9c6924e160136d1, Jt as $c87311424ea30a05$export$78551043582a6a98, K as $3985021b0ad6602f$export$f5b8910cec6cf069, Kt as $313b98861ee5dd6c$export$d6875122194c7b44, L as Sub, Lt as _class_private_field_init, M as Portal$2, Mt as $6179b936705e76d3$export$ae780daf29e6d456, N as RadioGroup$2, Nt as $9ab94262bd0047c7$export$420e68273165f4ec, O as Group$1, Ot as $fca6afa0e843324b$export$87b761675e8eaa10, P as RadioItem, Pt as $3ad3f6e1647bc98d$export$80f3e147d781571c, Q as $514c0188e459b4c0$export$5f1af8db9871e1d6, Qt as $7215afc6de606d6b$export$de79e2c695e052f3, R as SubContent, Rt as $ae1eeba8b9eafd08$export$5165eccb35aaadb5, S as DropdownMenuSubTrigger, St as $e5be200c675c3b3a$export$dad6ae84456c676a, T as Arrow2, Tt as $f7dceffc5ad7768b$export$4e328f61c538687f, U as createRovingFocusGroupScope, Ut as $99facab73266f662$export$5add1d006293d136, V as Item$2, Vt as $b4b717babfbb907b$export$4c063cf1350e6fed, W as ErrorBoundary, Wt as $e9faafb641e167db$export$90fc3a17d93f704c, X as $ee014567cb39d3f0$export$f551688fc98f2e09, Xt as $c87311424ea30a05$export$a11b0059900ceec8, Y as $d3e0e05bdfcf66bd$export$c24727297075ec6a, Yt as $c87311424ea30a05$export$9ac100e40613ea10, Z as $ee014567cb39d3f0$export$ff05c3ac10437e03, Zt as $c87311424ea30a05$export$fedb369cb70207f1, _ as DropdownMenuLabel, _n as ChevronRight, _t as $2baaea4c71418dea$export$294aa081a6c6f55d, a as OnBlurredInput, an as $431fbd86ca7dc216$export$b204af158042fbac, at as $64fa3d84918910a7$export$2881499e37b75b9a, b as DropdownMenuSub, bt as $e5be200c675c3b3a$export$a763b9476acd3eb, c as NumberField, cn as $bdb11010cef70236$export$b4cc09c592e8fdb8, ct as $64fa3d84918910a7$export$9d4c57ee4c6ffdd8, d as prettyNumber, dn as $f0a04ccd8dbdd83b$export$e5c5a5f917a5871c, dt as $64fa3d84918910a7$export$ef03459518577ad4, en as $3ef42575df84b30b$export$9d1611c77c2fe928, et as $d2b4bc8c273e7be6$export$24d547caef80ccd1, f as prettyScientificNumber, fn as Trash, ft as $64fa3d84918910a7$export$fabf2dc03a41866e, g as DropdownMenuItem, gn as Circle, gt as $d2e8511e6f209edf$export$e908e06f4b8e3402, h as DropdownMenuGroup, hn as Pencil, ht as capitalize_default, i as Input, in as $f4e2df6bd15f8569$export$98658e8c59125e6a, it as $f39a9eba43920ace$export$b5d7cc18bb8d2b59, j as Label$2, jt as $5b160d28a433310d$export$c17fa47878dc55b6, k as Item2$2, kt as $fca6afa0e843324b$export$f12b703ca79dfbb1, l as maxFractionalDigits, ln as $bdb11010cef70236$export$f680877a34711e37, lt as $64fa3d84918910a7$export$c245e6201fed2f75, m as DropdownMenuContent, mn as Plus, mt as marked, n as DebouncedInput, nn as $d4ee10de306f2510$export$cd4e5573fbe2b576, nt as $01b77f81d0f07f68$export$75b6ee27786ba447, o as useDebounceControlledState, on as $431fbd86ca7dc216$export$f21a1ffae260145a, ot as $64fa3d84918910a7$export$29f1550f4b0d4415, p as DropdownMenu, pn as Search, pt as useNonce, q as $a049562f99e7db0e$export$eb2fcfdbd7ba97d4, qt as $c87311424ea30a05$export$6446a186d09e379e, r as DebouncedNumberInput, rn as $d4ee10de306f2510$export$e58f029f0fbfdb29, rt as $01b77f81d0f07f68$export$b04be29aa201d4f5, s as useDebouncedCallback, sn as $ff5963eb1fccf552$export$e08e3b67e392101e, st as $64fa3d84918910a7$export$4d86445c2cf5e3, t as BulkEdit, tn as $d4ee10de306f2510$export$4282f70798064fe0, tt as $d2b4bc8c273e7be6$export$353f5b6fc5456de1, u as prettyEngineeringNumber, un as $8ae05eaa5c114e9c$export$7f54fc3180508a52, ut as $64fa3d84918910a7$export$c62b8e45d58ddad9, v as DropdownMenuPortal, vt as $e93e671b31057976$export$b8473d3665f3a75a, w as Anchor2, wt as $319e236875307eab$export$a9b970dcc4ae71a9, x as DropdownMenuSubContent, xt as $e5be200c675c3b3a$export$aca958c65c314e6c, y as DropdownMenuSeparator, yt as $e5be200c675c3b3a$export$75ee7c75d68f5b0e, z as SubTrigger, zt as $9446cca9a3875146$export$7d15b64cf5a3a4c4 } from "./types-DEmfj_i8.js";
14
+ import { S as CircleQuestionMark, _ as isUrl, a as AlertTitle, b as Deferred, c as constructFrom, d as millisecondsInMinute, f as millisecondsInSecond, g as appendQueryParams, h as getRuntimeManager, i as AlertDescription, l as millisecondsInDay, m as asRemoteURL, n as arrow, o as isValid$1, p as millisecondsInWeek, r as Alert, s as toDate, t as useDeepCompareMemoize, u as millisecondsInHour, v as require_cuid2, x as isWasm, y as waitForConnectionOpen } from "./useDeepCompareMemoize-D3uOrgqD.js";
15
15
  import { n as clsx_default } from "./clsx-D2KVTYnW.js";
16
- import { a as cva, c as useComposedRefs, l as Events, n as buttonVariants, o as useEventListener, r as Slot$1, s as composeRefs, t as Button, u as cn } from "./button-BE_o5IpN.js";
17
- import { c as Functions, i as parseShortcut, l as throwNotImplemented, o as Objects, r as isPlatformMac, s as Logger, t as NOT_SET } from "./hotkeys-BUVs9ecz.js";
16
+ import { a as cva, c as useComposedRefs, l as Events, n as buttonVariants, o as useEventListener, r as Slot$1, s as composeRefs, t as Button, u as cn } from "./button-BlF-78eJ.js";
17
+ import { c as Functions, i as parseShortcut, l as throwNotImplemented, o as Objects, r as isPlatformMac, s as Logger, t as NOT_SET } from "./hotkeys-C4e3s3sJ.js";
18
18
  import { t as require_jsx_runtime } from "./jsx-runtime-CTBg5pdT.js";
19
19
  import { t as require_react_dom } from "./react-dom-DJW8xUDg.js";
20
- import { a as Portal$3, c as prettyError, d as TooltipPortal, f as TooltipProvider, h as TooltipProvider$1, i as Overlay, l as Tooltip, m as TooltipTrigger, n as ErrorBanner, o as Root$7, p as TooltipRoot, r as Content$4, s as CellNotInitializedError, t as Banner, u as TooltipContent } from "./error-banner-DyX88bLT.js";
21
- import { a as _extends$5, c as setDiagnostics, d as CopyClipboardIcon, i as minimalSetup, l as historyField, o as forEachDiagnostic, r as esm_default, s as linter, t as langs, u as insertTab } from "./esm-CiSvoGHk.js";
20
+ import { a as Portal$3, c as prettyError, d as TooltipPortal, f as TooltipProvider, h as TooltipProvider$1, i as Overlay, l as Tooltip, m as TooltipTrigger, n as ErrorBanner, o as Root$7, p as TooltipRoot, r as Content$4, s as CellNotInitializedError, t as Banner, u as TooltipContent } from "./error-banner-UH0Nxilf.js";
21
+ import { a as _extends$5, c as setDiagnostics, d as CopyClipboardIcon, i as minimalSetup, l as historyField, o as forEachDiagnostic, r as esm_default, s as linter, t as langs, u as insertTab } from "./esm-D197NGQX.js";
22
22
  import { t as purify } from "./purify.es-Brw-U87Q.js";
23
- import { C as buildStore, _ as useAtom, a as getResolvedMarimoConfig, b as useStore, c as AppConfigSchema, d as useJotaiEffect, g as Provider, h as useEvent_default, i as autoInstantiateAtom, l as createDeepEqualAtom, m as isEqual_default, n as useTheme, o as localeAtom, p as isIslands, r as aiEnabledAtom, s as useResolvedMarimoConfig, t as resolvedThemeAtom, u as store, v as useAtomValue, w as getBuildingBlocks, x as atom, y as useSetAtom } from "./useTheme-DLCDAdUO.js";
23
+ import { C as buildStore, _ as useAtom, a as getResolvedMarimoConfig, b as useStore, c as AppConfigSchema, d as useJotaiEffect, g as Provider, h as useEvent_default, i as autoInstantiateAtom, l as createDeepEqualAtom, m as isEqual_default, n as useTheme, o as localeAtom, p as isIslands, r as aiEnabledAtom, s as useResolvedMarimoConfig, t as resolvedThemeAtom, u as store, v as useAtomValue, w as getBuildingBlocks, x as atom, y as useSetAtom } from "./useTheme-DdLjooMf.js";
24
24
  import { $ as ViewPlugin, At as RangeSet, B as tags$1, Dt as Facet$1, E as getIndentUnit, Et as EditorState, Ft as Text$2, I as syntaxTree, It as Transaction, J as parseMixed, L as unfoldAll, Nt as StateEffect, Pt as StateField, Q as GutterMarker, S as foldInside, Tt as EditorSelection, Y as Decoration, Z as EditorView, _t as showPanel, b as foldAll, bt as Annotation, dt as keymap, et as WidgetType, f as StreamLanguage, kt as Prec, l as LanguageDescription, mt as placeholder, ot as gutter, u as LanguageSupport, ut as hoverTooltip, vt as showTooltip, w as foldNodeProp, wt as Compartment } from "./dist-D7jHtwN8.js";
25
25
  import { d as snippet, n as acceptCompletion, o as closeCompletion, r as autocompletion, u as insertCompletionText } from "./dist-g1p2PEVs.js";
26
26
  import { p as _baseTimes_default } from "./_baseFor-DSVmVciX.js";
@@ -31,11 +31,11 @@ import { l as _arrayFilter_default } from "./_baseIsEqual-BygTGUZ4.js";
31
31
  import { a as get_default, t as _baseProperty_default } from "./_baseProperty-zelfx9VI.js";
32
32
  import { i as debounce_default, r as KnownQueryParams, t as CSSClasses } from "./constants-DuN_eoAL.js";
33
33
  import { t as isEmpty_default } from "./isEmpty-D2-li_vO.js";
34
- import { a as tooltipHandler, n as vegaLoadData, r as createBatchedLoader, t as parseCsvData } from "./loader-Cn9P1Cko.js";
34
+ import { a as tooltipHandler, n as vegaLoadData, r as createBatchedLoader, t as parseCsvData } from "./loader-DH7xXi-E.js";
35
35
  import { A as looseObject, B as union, C as any, D as discriminatedUnion, E as custom, F as optional, G as parse$3, H as safeParseAsync, I as record, J as prettifyError, K as parseAsync, L as strictObject, M as never, N as number$2, O as lazy$4, P as object$1, R as string$2, S as _null, T as boolean$2, U as ZodError$1, V as unknown, W as toJSONSchema, _ as ZodString$1, a as ZodIssueCode$1, b as _enum, c as ZodBoolean$1, d as ZodDiscriminatedUnion$1, f as ZodEnum$1, g as ZodOptional$1, h as ZodObject$1, i as string$3, j as nan, k as literal, l as ZodDate$1, m as ZodNumber$1, n as date, o as ZodAny$1, p as ZodLiteral$1, q as $ZodError, r as number$3, s as ZodArray$1, t as zod_default, u as ZodDefault$1, v as ZodType$1, w as array$2, x as _instanceof, y as ZodUnion$1, z as tuple } from "./zod-LbXVxiL9.js";
36
36
  import { t as invariant } from "./invariant-BW72tHBT.js";
37
37
  import { a as arrayInsert, c as arrayShallowEquals, i as arrayDelete, l as uniqueBy, n as once, o as arrayInsertMany, r as Arrays, s as arrayMove, t as memoizeLastValue, u as clamp } from "./once-C-NkXwWJ.js";
38
- import { n as getIframeCapabilities, t as useIframeCapabilities } from "./useIframeCapabilities-oYhPeWtR.js";
38
+ import { n as getIframeCapabilities, t as useIframeCapabilities } from "./useIframeCapabilities-BsIPDupA.js";
39
39
  import { i as main_exports, r as init_main } from "./main-DC-71ZOX.js";
40
40
  import { a as PLSQL, c as SQLite, d as schemaCompletionSource, f as sql, i as MySQL, l as StandardSQL, n as MSSQL, o as PostgreSQL, r as MariaSQL, s as SQLDialect, t as Cassandra, u as keywordCompletionSource } from "./dist-DsOyFflT.js";
41
41
  import { a as markdown, s as markdownLanguage } from "./dist-BZXKWoES.js";
@@ -47,7 +47,7 @@ import { n as stexMath } from "./stex-BIsgBmK4.js";
47
47
  import { n as memoize$1, t as isPropValid } from "./emotion-is-prop-valid.esm-_z-EwK5u.js";
48
48
  import { t as require_prop_types } from "./prop-types-DTzjue2h.js";
49
49
  import { n as formats } from "./vega-loader.browser-nTy1NZD3.js";
50
- import { t as useAsyncData } from "./useAsyncData-CaouoMw5.js";
50
+ import { t as useAsyncData } from "./useAsyncData-BGpae_uu.js";
51
51
  import "./defaultLocale-DZtxSCkJ.js";
52
52
  import "./defaultLocale-DMZFeDB8.js";
53
53
  import "./katex-BTobf3T8.js";
@@ -57925,7 +57925,7 @@ Database schema: ${c}`), (_a3 = r2.aiFix) == null ? void 0 : _a3.setAiCompletion
57925
57925
  hasConsoleOutput: (_ == null ? void 0 : _.consoleOutputs) != null
57926
57926
  };
57927
57927
  }
57928
- const LazyAnyLanguageCodeMirror = (0, import_react.lazy)(() => import("./any-language-editor-CO_tO4mX.js"));
57928
+ const LazyAnyLanguageCodeMirror = (0, import_react.lazy)(() => import("./any-language-editor-Bda9cY1_.js"));
57929
57929
  var import_compiler_runtime$112 = require_compiler_runtime(), extensions = [
57930
57930
  EditorView.lineWrapping
57931
57931
  ], SUPPORTED_LANGUAGES = /* @__PURE__ */ new Set([
@@ -71985,7 +71985,7 @@ Image URL: ${r.imageUrl}`)), contextToXml({
71985
71985
  function getVegaFieldTypes(e) {
71986
71986
  return !e || Object.keys(e).length === 0 ? "auto" : Objects.mapValues(e, (e2) => e2 === "date" || e2 === "time" ? "string" : e2 === "datetime" ? "date" : e2);
71987
71987
  }
71988
- var import_compiler_runtime$84 = require_compiler_runtime(), LazyDataEditor = import_react.lazy(() => import("./glide-data-editor-tS-A6Szz.js").then(async (m2) => {
71988
+ var import_compiler_runtime$84 = require_compiler_runtime(), LazyDataEditor = import_react.lazy(() => import("./glide-data-editor-DWlk0mEY.js").then(async (m2) => {
71989
71989
  await m2.__tla;
71990
71990
  return m2;
71991
71991
  }));
@@ -83620,7 +83620,7 @@ ${c}
83620
83620
  fullWidth: v,
83621
83621
  children: z
83622
83622
  }), r[19] = v, r[20] = y, r[21] = c, r[22] = z, r[23] = G) : G = r[23], G;
83623
- }, LazyDataExplorerComponent = import_react.lazy(() => import("./ConnectedDataExplorerComponent-BhnOd8mV.js"));
83623
+ }, LazyDataExplorerComponent = import_react.lazy(() => import("./ConnectedDataExplorerComponent-BIfUtj_S.js"));
83624
83624
  const DataExplorerPlugin = createPlugin("marimo-data-explorer").withData(object$1({
83625
83625
  label: string$2().nullish(),
83626
83626
  data: string$2()
@@ -93941,7 +93941,7 @@ ${c}
93941
93941
  return true;
93942
93942
  }
93943
93943
  }
93944
- var LazyVegaComponent = import_react.lazy(() => import("./vega-component-D36WQQq8.js")), VegaPlugin = class {
93944
+ var LazyVegaComponent = import_react.lazy(() => import("./vega-component-C1FaaACt.js")), VegaPlugin = class {
93945
93945
  constructor() {
93946
93946
  __publicField(this, "tagName", "marimo-vega");
93947
93947
  __publicField(this, "validator", object$1({
@@ -94080,7 +94080,7 @@ ${c}
94080
94080
  children: e.children
94081
94081
  });
94082
94082
  }
94083
- }, LazySlidesComponent$1 = import_react.lazy(() => import("./slides-component-oQmowhoJ.js"));
94083
+ }, LazySlidesComponent$1 = import_react.lazy(() => import("./slides-component-BNbVrOMb.js"));
94084
94084
  const DownloadPlugin = createPlugin("marimo-download").withData(object$1({
94085
94085
  data: string$2(),
94086
94086
  disabled: boolean$2().default(false),
@@ -94262,7 +94262,7 @@ ${c}
94262
94262
  diagram: e.data.diagram
94263
94263
  });
94264
94264
  }
94265
- }, LazyMermaid = (0, import_react.lazy)(() => import("./mermaid-BAHK5egT.js")), import_compiler_runtime$19 = require_compiler_runtime();
94265
+ }, LazyMermaid = (0, import_react.lazy)(() => import("./mermaid-JA6veDHv.js")), import_compiler_runtime$19 = require_compiler_runtime();
94266
94266
  function getRootScrollableElement() {
94267
94267
  return getInitialAppMode() === "edit" ? document.getElementById("App") : void 0;
94268
94268
  }
@@ -100521,7 +100521,7 @@ Defaulting to \`null\`.`;
100521
100521
  cells: []
100522
100522
  })
100523
100523
  };
100524
- var import_compiler_runtime$8 = require_compiler_runtime(), LazySlidesComponent = import_react.lazy(() => import("./slides-component-oQmowhoJ.js"));
100524
+ var import_compiler_runtime$8 = require_compiler_runtime(), LazySlidesComponent = import_react.lazy(() => import("./slides-component-BNbVrOMb.js"));
100525
100525
  const SlidesLayoutRenderer = (e) => {
100526
100526
  let r = (0, import_compiler_runtime$8.c)(11), { cells: c, mode: d } = e, f = d === "read", h;
100527
100527
  if (r[0] !== c || r[1] !== d) {
@@ -101019,7 +101019,7 @@ Defaulting to \`null\`.`;
101019
101019
  return Logger.warn("Failed to get version from mount config"), null;
101020
101020
  }
101021
101021
  }
101022
- const marimoVersionAtom = atom(getVersionFromMountConfig() || "0.18.5-dev169"), showCodeInRunModeAtom = atom(true);
101022
+ const marimoVersionAtom = atom(getVersionFromMountConfig() || "0.18.5-dev172"), showCodeInRunModeAtom = atom(true);
101023
101023
  atom(null);
101024
101024
  var VIRTUAL_FILE_REGEX = /\/@file\/([^\s"&'/]+)\.([\dA-Za-z]+)/g, VirtualFileTracker = class e {
101025
101025
  constructor() {
@@ -1,11 +1,11 @@
1
1
  import { s as __toESM } from "./chunk-BNovOVIE.js";
2
2
  import { t as require_react } from "./react-DdA8EBol.js";
3
3
  import { t as require_compiler_runtime } from "./compiler-runtime-DHFVbq0b.js";
4
- import { s as Logger } from "./hotkeys-BUVs9ecz.js";
4
+ import { s as Logger } from "./hotkeys-C4e3s3sJ.js";
5
5
  import { t as require_jsx_runtime } from "./jsx-runtime-CTBg5pdT.js";
6
6
  import "./purify.es-Brw-U87Q.js";
7
- import { n as useTheme } from "./useTheme-DLCDAdUO.js";
8
- import { t as useAsyncData } from "./useAsyncData-CaouoMw5.js";
7
+ import { n as useTheme } from "./useTheme-DdLjooMf.js";
8
+ import { t as useAsyncData } from "./useAsyncData-BGpae_uu.js";
9
9
  import "./marked.esm-BiQFxVJV.js";
10
10
  import "./chunk-S3R3BYOJ-BhcrQySJ.js";
11
11
  import "./src-CHUphWwL.js";
@@ -1,9 +1,9 @@
1
1
  import { s as __toESM } from "./chunk-BNovOVIE.js";
2
2
  import { t as require_react } from "./react-DdA8EBol.js";
3
3
  import { t as require_compiler_runtime } from "./compiler-runtime-DHFVbq0b.js";
4
- import { o as useEventListener, t as Button, u as cn } from "./button-BE_o5IpN.js";
4
+ import { o as useEventListener, t as Button, u as cn } from "./button-BlF-78eJ.js";
5
5
  import { t as require_jsx_runtime } from "./jsx-runtime-CTBg5pdT.js";
6
- import { t as useIframeCapabilities } from "./useIframeCapabilities-oYhPeWtR.js";
6
+ import { t as useIframeCapabilities } from "./useIframeCapabilities-BsIPDupA.js";
7
7
  var import_compiler_runtime = require_compiler_runtime(), import_react = /* @__PURE__ */ __toESM(require_react(), 1);
8
8
  function isObject$2(t2) {
9
9
  return typeof t2 == "object" && !!t2 && "constructor" in t2 && t2.constructor === Object;
@@ -1,12 +1,12 @@
1
1
  import { s as __toESM } from "./chunk-BNovOVIE.js";
2
2
  import { t as require_react } from "./react-DdA8EBol.js";
3
3
  import { t as require_compiler_runtime } from "./compiler-runtime-DHFVbq0b.js";
4
- import { N as createLucideIcon } from "./Combination-CoheOLQf.js";
5
- import { A as logNever, P as $18f2051aff69b9bf$export$43bb16f9c6d9e3f7, j as upperFirst_default } from "./label-C3TPGdQ0.js";
6
- import { a as cva, u as cn } from "./button-BE_o5IpN.js";
7
- import { s as Logger } from "./hotkeys-BUVs9ecz.js";
4
+ import { N as createLucideIcon } from "./Combination-33P1MEPK.js";
5
+ import { A as logNever, P as $18f2051aff69b9bf$export$43bb16f9c6d9e3f7, j as upperFirst_default } from "./label-oKuiQuiM.js";
6
+ import { a as cva, u as cn } from "./button-BlF-78eJ.js";
7
+ import { s as Logger } from "./hotkeys-C4e3s3sJ.js";
8
8
  import { t as require_jsx_runtime } from "./jsx-runtime-CTBg5pdT.js";
9
- import { x as atom, y as useSetAtom } from "./useTheme-DLCDAdUO.js";
9
+ import { x as atom, y as useSetAtom } from "./useTheme-DdLjooMf.js";
10
10
  import { t as toString_default } from "./toString-C4TLO6FA.js";
11
11
  import { t as _arrayReduce_default } from "./_arrayReduce-BoSa0zEn.js";
12
12
  var AlignCenterVertical = createLucideIcon("align-center-vertical", [
@@ -5,15 +5,15 @@ var _a;
5
5
  import { s as __toESM } from "./chunk-BNovOVIE.js";
6
6
  import { t as require_react } from "./react-DdA8EBol.js";
7
7
  import { t as require_compiler_runtime } from "./compiler-runtime-DHFVbq0b.js";
8
- import { D as dispatchDiscreteCustomEvent, E as Primitive, M as composeEventHandlers, N as createLucideIcon, O as createSlot, S as useId, T as useCallbackRef, _ as Arrow, b as createPopperScope, c as withSmartCollisionBoundary, g as Anchor, h as Portal, i as useFocusGuards, j as createContextScope, m as Presence, n as hideOthers, o as MAX_HEIGHT_OFFSET, p as useControllableState, r as FocusScope, s as withFullScreenAsRoot, t as Combination_default, u as StyleNamespace, v as Content, w as DismissableLayer, y as Root2$1 } from "./Combination-CoheOLQf.js";
9
- import { t as Check } from "./check-Crt1N6cj.js";
10
- import { B as ChevronDown, C as useDirection, L as $b5e257d569688ac6$export$619500959fc48b26, M as $a916eb452884faea$export$b7a616150fdb9f44, N as $488c6ddbf4ef74c2$export$cc77c4ff7e8673c5, P as $18f2051aff69b9bf$export$43bb16f9c6d9e3f7, R as X, _ as menuItemVariants, b as menuSubTriggerVariants, g as menuControlVariants, h as menuControlCheckVariants, j as upperFirst_default, m as menuContentCommon, v as menuLabelVariants, w as createCollection, y as menuSeparatorVariants, z as ChevronUp } from "./label-C3TPGdQ0.js";
8
+ import { D as dispatchDiscreteCustomEvent, E as Primitive, M as composeEventHandlers, N as createLucideIcon, O as createSlot, S as useId, T as useCallbackRef, _ as Arrow, b as createPopperScope, c as withSmartCollisionBoundary, g as Anchor, h as Portal, i as useFocusGuards, j as createContextScope, m as Presence, n as hideOthers, o as MAX_HEIGHT_OFFSET, p as useControllableState, r as FocusScope, s as withFullScreenAsRoot, t as Combination_default, u as StyleNamespace, v as Content, w as DismissableLayer, y as Root2$1 } from "./Combination-33P1MEPK.js";
9
+ import { t as Check } from "./check-DDykH_Yi.js";
10
+ import { B as ChevronDown, C as useDirection, L as $b5e257d569688ac6$export$619500959fc48b26, M as $a916eb452884faea$export$b7a616150fdb9f44, N as $488c6ddbf4ef74c2$export$cc77c4ff7e8673c5, P as $18f2051aff69b9bf$export$43bb16f9c6d9e3f7, R as X, _ as menuItemVariants, b as menuSubTriggerVariants, g as menuControlVariants, h as menuControlCheckVariants, j as upperFirst_default, m as menuContentCommon, v as menuLabelVariants, w as createCollection, y as menuSeparatorVariants, z as ChevronUp } from "./label-oKuiQuiM.js";
11
11
  import { n as clsx_default } from "./clsx-D2KVTYnW.js";
12
- import { c as useComposedRefs, l as Events, s as composeRefs, t as Button, u as cn } from "./button-BE_o5IpN.js";
13
- import { s as Logger } from "./hotkeys-BUVs9ecz.js";
12
+ import { c as useComposedRefs, l as Events, s as composeRefs, t as Button, u as cn } from "./button-BlF-78eJ.js";
13
+ import { s as Logger } from "./hotkeys-C4e3s3sJ.js";
14
14
  import { t as require_jsx_runtime } from "./jsx-runtime-CTBg5pdT.js";
15
15
  import { t as require_react_dom } from "./react-dom-DJW8xUDg.js";
16
- import { h as useEvent_default } from "./useTheme-DLCDAdUO.js";
16
+ import { h as useEvent_default } from "./useTheme-DdLjooMf.js";
17
17
  import { t as toString_default } from "./toString-C4TLO6FA.js";
18
18
  import { i as debounce_default, n as Constants } from "./constants-DuN_eoAL.js";
19
19
  import { t as memoizeLastValue } from "./once-C-NkXwWJ.js";
@@ -1,7 +1,7 @@
1
1
  import { s as __toESM } from "./chunk-BNovOVIE.js";
2
2
  import { t as require_react } from "./react-DdA8EBol.js";
3
3
  import { t as require_compiler_runtime } from "./compiler-runtime-DHFVbq0b.js";
4
- import { h as useEvent_default } from "./useTheme-DLCDAdUO.js";
4
+ import { h as useEvent_default } from "./useTheme-DdLjooMf.js";
5
5
  import { t as invariant } from "./invariant-BW72tHBT.js";
6
6
  var import_compiler_runtime = require_compiler_runtime(), import_react = /* @__PURE__ */ __toESM(require_react(), 1), Result = {
7
7
  error(e, s) {
@@ -4,13 +4,13 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
4
4
  import { s as __toESM, t as __commonJSMin } from "./chunk-BNovOVIE.js";
5
5
  import { t as require_react } from "./react-DdA8EBol.js";
6
6
  import { t as require_compiler_runtime } from "./compiler-runtime-DHFVbq0b.js";
7
- import { N as createLucideIcon } from "./Combination-CoheOLQf.js";
8
- import { a as cva, u as cn } from "./button-BE_o5IpN.js";
9
- import { s as Logger } from "./hotkeys-BUVs9ecz.js";
7
+ import { N as createLucideIcon } from "./Combination-33P1MEPK.js";
8
+ import { a as cva, u as cn } from "./button-BlF-78eJ.js";
9
+ import { s as Logger } from "./hotkeys-C4e3s3sJ.js";
10
10
  import { t as require_jsx_runtime } from "./jsx-runtime-CTBg5pdT.js";
11
- import { f as waitFor, p as isIslands, u as store, x as atom } from "./useTheme-DLCDAdUO.js";
11
+ import { f as waitFor, p as isIslands, u as store, x as atom } from "./useTheme-DdLjooMf.js";
12
12
  import { r as KnownQueryParams } from "./constants-DuN_eoAL.js";
13
- import { i as tableFromIPC } from "./loader-Cn9P1Cko.js";
13
+ import { i as tableFromIPC } from "./loader-DH7xXi-E.js";
14
14
  var CircleQuestionMark = createLucideIcon("circle-question-mark", [
15
15
  ["circle", {
16
16
  cx: "12",
@@ -1,7 +1,7 @@
1
1
  import { s as __toESM } from "./chunk-BNovOVIE.js";
2
2
  import { t as require_react } from "./react-DdA8EBol.js";
3
3
  import { t as require_compiler_runtime } from "./compiler-runtime-DHFVbq0b.js";
4
- import { s as Logger } from "./hotkeys-BUVs9ecz.js";
4
+ import { s as Logger } from "./hotkeys-C4e3s3sJ.js";
5
5
  import { n as once } from "./once-C-NkXwWJ.js";
6
6
  function testStorage(e) {
7
7
  try {
@@ -1,7 +1,7 @@
1
1
  import { s as __toESM } from "./chunk-BNovOVIE.js";
2
2
  import { t as require_react } from "./react-DdA8EBol.js";
3
3
  import { t as require_compiler_runtime } from "./compiler-runtime-DHFVbq0b.js";
4
- import { a as resolvePlatform, n as OverridingHotkeyProvider, s as Logger } from "./hotkeys-BUVs9ecz.js";
4
+ import { a as resolvePlatform, n as OverridingHotkeyProvider, s as Logger } from "./hotkeys-C4e3s3sJ.js";
5
5
  import { t as merge_default } from "./merge-Dl1bfxsj.js";
6
6
  import { t as _baseIsEqual_default } from "./_baseIsEqual-BygTGUZ4.js";
7
7
  import { A as looseObject, B as union, I as record, N as number, P as object, R as string, T as boolean, b as _enum, w as array } from "./zod-LbXVxiL9.js";
@@ -1,19 +1,19 @@
1
1
  import { s as __toESM } from "./chunk-BNovOVIE.js";
2
2
  import { t as require_react } from "./react-DdA8EBol.js";
3
3
  import { t as require_compiler_runtime } from "./compiler-runtime-DHFVbq0b.js";
4
- import "./Combination-CoheOLQf.js";
5
- import { S as CircleQuestionMark, a as AlertTitle, m as asRemoteURL, n as arrow, o as isValid, r as Alert, t as useDeepCompareMemoize } from "./useDeepCompareMemoize-B01JaKw2.js";
6
- import { l as Events } from "./button-BE_o5IpN.js";
7
- import { o as Objects, s as Logger } from "./hotkeys-BUVs9ecz.js";
4
+ import "./Combination-33P1MEPK.js";
5
+ import { S as CircleQuestionMark, a as AlertTitle, m as asRemoteURL, n as arrow, o as isValid, r as Alert, t as useDeepCompareMemoize } from "./useDeepCompareMemoize-D3uOrgqD.js";
6
+ import { l as Events } from "./button-BlF-78eJ.js";
7
+ import { o as Objects, s as Logger } from "./hotkeys-C4e3s3sJ.js";
8
8
  import { t as require_jsx_runtime } from "./jsx-runtime-CTBg5pdT.js";
9
9
  import "./react-dom-DJW8xUDg.js";
10
- import { l as Tooltip, n as ErrorBanner } from "./error-banner-DyX88bLT.js";
11
- import { h as useEvent_default, n as useTheme } from "./useTheme-DLCDAdUO.js";
10
+ import { l as Tooltip, n as ErrorBanner } from "./error-banner-UH0Nxilf.js";
11
+ import { h as useEvent_default, n as useTheme } from "./useTheme-DdLjooMf.js";
12
12
  import { t as _baseUniq_default } from "./_baseUniq-BUGws47x.js";
13
13
  import { i as debounce_default } from "./constants-DuN_eoAL.js";
14
- import { a as tooltipHandler, n as vegaLoadData } from "./loader-Cn9P1Cko.js";
14
+ import { a as tooltipHandler, n as vegaLoadData } from "./loader-DH7xXi-E.js";
15
15
  import { n as formats } from "./vega-loader.browser-nTy1NZD3.js";
16
- import { t as useAsyncData } from "./useAsyncData-CaouoMw5.js";
16
+ import { t as useAsyncData } from "./useAsyncData-BGpae_uu.js";
17
17
  import { t as j } from "./react-vega-z40f-dXy.js";
18
18
  import "./defaultLocale-DZtxSCkJ.js";
19
19
  import "./defaultLocale-DMZFeDB8.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@marimo-team/islands",
3
- "version": "0.18.5-dev169",
3
+ "version": "0.18.5-dev172",
4
4
  "main": "dist/main.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "type": "module",
@@ -0,0 +1,34 @@
1
+ /* Copyright 2026 Marimo. All rights reserved. */
2
+
3
+ import { createContext, useContext } from "react";
4
+ import { invariant } from "@/utils/invariant";
5
+
6
+ export type PanelSection = "sidebar" | "developer-panel";
7
+
8
+ const PanelSectionContext = createContext<PanelSection | null>(null);
9
+
10
+ export const PanelSectionProvider = PanelSectionContext.Provider;
11
+
12
+ /**
13
+ * Hook to get the current panel section context.
14
+ * Returns "sidebar" or "developer-panel" depending on where the panel is rendered.
15
+ * Throws if used outside of a panel context.
16
+ */
17
+ export function usePanelSection(): PanelSection {
18
+ const section = useContext(PanelSectionContext);
19
+ invariant(
20
+ section !== null,
21
+ "usePanelSection must be used within a PanelSectionProvider",
22
+ );
23
+ return section;
24
+ }
25
+
26
+ /**
27
+ * Hook to get the preferred orientation based on the panel section.
28
+ * - Sidebar panels should use vertical layouts (stacked)
29
+ * - Developer panel should use horizontal layouts (side-by-side)
30
+ */
31
+ export function usePanelOrientation(): "horizontal" | "vertical" {
32
+ const section = usePanelSection();
33
+ return section === "sidebar" ? "vertical" : "horizontal";
34
+ }
@@ -26,6 +26,7 @@ import { getFeatureFlag } from "@/core/config/feature-flag";
26
26
  import { cn } from "@/utils/cn";
27
27
  import { ErrorBoundary } from "../../boundary/ErrorBoundary";
28
28
  import { ContextAwarePanel } from "../panels/context-aware-panel/context-aware-panel";
29
+ import { PanelSectionProvider } from "../panels/panel-context";
29
30
  import { panelLayoutAtom, useChromeActions, useChromeState } from "../state";
30
31
  import { PANEL_MAP, PANELS, type PanelDescriptor } from "../types";
31
32
  import { BackendConnectionStatus } from "./footer-items/backend-status";
@@ -222,72 +223,74 @@ export const AppChrome: React.FC<PropsWithChildren> = ({ children }) => {
222
223
 
223
224
  const helpPaneBody = (
224
225
  <ErrorBoundary>
225
- <div className="flex flex-col h-full flex-1 overflow-hidden mr-[-4px]">
226
- <div className="p-3 border-b flex justify-between items-center">
227
- {selectedPanel === "ai" && agentsEnabled ? (
228
- <Tabs
229
- value={aiPanelTab}
230
- onValueChange={(value) => {
231
- if (value === "chat" || value === "agents") {
232
- setAiPanelTab(value);
233
- }
234
- }}
226
+ <PanelSectionProvider value="sidebar">
227
+ <div className="flex flex-col h-full flex-1 overflow-hidden mr-[-4px]">
228
+ <div className="p-3 border-b flex justify-between items-center">
229
+ {selectedPanel === "ai" && agentsEnabled ? (
230
+ <Tabs
231
+ value={aiPanelTab}
232
+ onValueChange={(value) => {
233
+ if (value === "chat" || value === "agents") {
234
+ setAiPanelTab(value);
235
+ }
236
+ }}
237
+ >
238
+ <TabsList>
239
+ <TabsTrigger
240
+ value="chat"
241
+ className="py-0.5 text-xs uppercase tracking-wide font-bold"
242
+ >
243
+ Chat
244
+ </TabsTrigger>
245
+ <TabsTrigger
246
+ value="agents"
247
+ className="py-0.5 text-xs uppercase tracking-wide font-bold"
248
+ >
249
+ Agents
250
+ </TabsTrigger>
251
+ </TabsList>
252
+ </Tabs>
253
+ ) : (
254
+ <span className="text-sm text-(--slate-11) uppercase tracking-wide font-semibold flex-1">
255
+ {selectedPanel}
256
+ </span>
257
+ )}
258
+ <Button
259
+ data-testid="close-helper-pane"
260
+ className="m-0"
261
+ size="xs"
262
+ variant="text"
263
+ onClick={() => setIsSidebarOpen(false)}
235
264
  >
236
- <TabsList>
237
- <TabsTrigger
238
- value="chat"
239
- className="py-0.5 text-xs uppercase tracking-wide font-bold"
240
- >
241
- Chat
242
- </TabsTrigger>
243
- <TabsTrigger
244
- value="agents"
245
- className="py-0.5 text-xs uppercase tracking-wide font-bold"
246
- >
247
- Agents
248
- </TabsTrigger>
249
- </TabsList>
250
- </Tabs>
251
- ) : (
252
- <span className="text-sm text-(--slate-11) uppercase tracking-wide font-semibold flex-1">
253
- {selectedPanel}
254
- </span>
255
- )}
256
- <Button
257
- data-testid="close-helper-pane"
258
- className="m-0"
259
- size="xs"
260
- variant="text"
261
- onClick={() => setIsSidebarOpen(false)}
262
- >
263
- <XIcon className="w-4 h-4" />
264
- </Button>
265
+ <XIcon className="w-4 h-4" />
266
+ </Button>
267
+ </div>
268
+ <Suspense>
269
+ <TooltipProvider>
270
+ {selectedPanel === "files" && <LazyFileExplorerPanel />}
271
+ {selectedPanel === "variables" && <LazySessionPanel />}
272
+ {selectedPanel === "dependencies" && <LazyDependencyGraphPanel />}
273
+ {selectedPanel === "packages" && <LazyPackagesPanel />}
274
+ {selectedPanel === "outline" && <LazyOutlinePanel />}
275
+ {selectedPanel === "documentation" && <LazyDocumentationPanel />}
276
+ {selectedPanel === "snippets" && <LazySnippetsPanel />}
277
+ {selectedPanel === "ai" && renderAiPanel()}
278
+ {selectedPanel === "errors" && <LazyErrorsPanel />}
279
+ {selectedPanel === "scratchpad" && <LazyScratchpadPanel />}
280
+ {selectedPanel === "tracing" && <LazyTracingPanel />}
281
+ {selectedPanel === "secrets" && <LazySecretsPanel />}
282
+ {selectedPanel === "logs" && <LazyLogsPanel />}
283
+ {selectedPanel === "terminal" && (
284
+ <LazyTerminal
285
+ visible={isSidebarOpen}
286
+ onClose={() => setIsSidebarOpen(false)}
287
+ />
288
+ )}
289
+ {selectedPanel === "cache" && <LazyCachePanel />}
290
+ </TooltipProvider>
291
+ </Suspense>
265
292
  </div>
266
- <Suspense>
267
- <TooltipProvider>
268
- {selectedPanel === "files" && <LazyFileExplorerPanel />}
269
- {selectedPanel === "variables" && <LazySessionPanel />}
270
- {selectedPanel === "dependencies" && <LazyDependencyGraphPanel />}
271
- {selectedPanel === "packages" && <LazyPackagesPanel />}
272
- {selectedPanel === "outline" && <LazyOutlinePanel />}
273
- {selectedPanel === "documentation" && <LazyDocumentationPanel />}
274
- {selectedPanel === "snippets" && <LazySnippetsPanel />}
275
- {selectedPanel === "ai" && renderAiPanel()}
276
- {selectedPanel === "errors" && <LazyErrorsPanel />}
277
- {selectedPanel === "scratchpad" && <LazyScratchpadPanel />}
278
- {selectedPanel === "tracing" && <LazyTracingPanel />}
279
- {selectedPanel === "secrets" && <LazySecretsPanel />}
280
- {selectedPanel === "logs" && <LazyLogsPanel />}
281
- {selectedPanel === "terminal" && (
282
- <LazyTerminal
283
- visible={isSidebarOpen}
284
- onClose={() => setIsSidebarOpen(false)}
285
- />
286
- )}
287
- {selectedPanel === "cache" && <LazyCachePanel />}
288
- </TooltipProvider>
289
- </Suspense>
290
- </div>
293
+ </PanelSectionProvider>
291
294
  </ErrorBoundary>
292
295
  );
293
296
 
@@ -409,37 +412,47 @@ export const AppChrome: React.FC<PropsWithChildren> = ({ children }) => {
409
412
  </div>
410
413
  {/* Panel content */}
411
414
  <Suspense fallback={<div />}>
412
- <div className="flex-1 overflow-hidden">
413
- {selectedDeveloperPanelTab === "files" && <LazyFileExplorerPanel />}
414
- {selectedDeveloperPanelTab === "variables" && <LazySessionPanel />}
415
- {selectedDeveloperPanelTab === "dependencies" && (
416
- <LazyDependencyGraphPanel />
417
- )}
418
- {selectedDeveloperPanelTab === "packages" && <LazyPackagesPanel />}
419
- {selectedDeveloperPanelTab === "outline" && <LazyOutlinePanel />}
420
- {selectedDeveloperPanelTab === "documentation" && (
421
- <LazyDocumentationPanel />
422
- )}
423
- {selectedDeveloperPanelTab === "snippets" && <LazySnippetsPanel />}
424
- {selectedDeveloperPanelTab === "ai" && renderAiPanel()}
425
- {selectedDeveloperPanelTab === "errors" && <LazyErrorsPanel />}
426
- {selectedDeveloperPanelTab === "scratchpad" && (
427
- <LazyScratchpadPanel />
428
- )}
429
- {selectedDeveloperPanelTab === "tracing" && <LazyTracingPanel />}
430
- {selectedDeveloperPanelTab === "secrets" && <LazySecretsPanel />}
431
- {selectedDeveloperPanelTab === "logs" && <LazyLogsPanel />}
432
- {/* LazyMount needed for Terminal to avoid spurious connection */}
433
- {selectedDeveloperPanelTab === "terminal" && (
434
- <LazyMount isOpen={isDeveloperPanelOpen}>
435
- <LazyTerminal
436
- visible={isDeveloperPanelOpen}
437
- onClose={() => setIsDeveloperPanelOpen(false)}
438
- />
439
- </LazyMount>
440
- )}
441
- {selectedDeveloperPanelTab === "cache" && <LazyCachePanel />}
442
- </div>
415
+ <PanelSectionProvider value="developer-panel">
416
+ <div className="flex-1 overflow-hidden">
417
+ {selectedDeveloperPanelTab === "files" && (
418
+ <LazyFileExplorerPanel />
419
+ )}
420
+ {selectedDeveloperPanelTab === "variables" && (
421
+ <LazySessionPanel />
422
+ )}
423
+ {selectedDeveloperPanelTab === "dependencies" && (
424
+ <LazyDependencyGraphPanel />
425
+ )}
426
+ {selectedDeveloperPanelTab === "packages" && (
427
+ <LazyPackagesPanel />
428
+ )}
429
+ {selectedDeveloperPanelTab === "outline" && <LazyOutlinePanel />}
430
+ {selectedDeveloperPanelTab === "documentation" && (
431
+ <LazyDocumentationPanel />
432
+ )}
433
+ {selectedDeveloperPanelTab === "snippets" && (
434
+ <LazySnippetsPanel />
435
+ )}
436
+ {selectedDeveloperPanelTab === "ai" && renderAiPanel()}
437
+ {selectedDeveloperPanelTab === "errors" && <LazyErrorsPanel />}
438
+ {selectedDeveloperPanelTab === "scratchpad" && (
439
+ <LazyScratchpadPanel />
440
+ )}
441
+ {selectedDeveloperPanelTab === "tracing" && <LazyTracingPanel />}
442
+ {selectedDeveloperPanelTab === "secrets" && <LazySecretsPanel />}
443
+ {selectedDeveloperPanelTab === "logs" && <LazyLogsPanel />}
444
+ {/* LazyMount needed for Terminal to avoid spurious connection */}
445
+ {selectedDeveloperPanelTab === "terminal" && (
446
+ <LazyMount isOpen={isDeveloperPanelOpen}>
447
+ <LazyTerminal
448
+ visible={isDeveloperPanelOpen}
449
+ onClose={() => setIsDeveloperPanelOpen(false)}
450
+ />
451
+ </LazyMount>
452
+ )}
453
+ {selectedDeveloperPanelTab === "cache" && <LazyCachePanel />}
454
+ </div>
455
+ </PanelSectionProvider>
443
456
  </Suspense>
444
457
  </div>
445
458
  </Panel>
@@ -27,6 +27,10 @@ import { useTheme } from "@/theme/useTheme";
27
27
  import { cn } from "@/utils/cn";
28
28
  import { Functions } from "@/utils/functions";
29
29
  import { CellEditor } from "../editor/cell/code/cell-editor";
30
+ import {
31
+ usePanelOrientation,
32
+ usePanelSection,
33
+ } from "../editor/chrome/panels/panel-context";
30
34
  import { HideInKioskMode } from "../editor/kiosk-mode";
31
35
  import { OutputArea } from "../editor/Output";
32
36
  import { ConsoleOutput } from "../editor/output/console/ConsoleOutput";
@@ -53,6 +57,8 @@ export const ScratchPad: React.FC = () => {
53
57
  const lastFocusedCellId = useLastFocusedCellId();
54
58
  const { createNewCell, updateCellCode } = useCellActions();
55
59
  const { sendRunScratchpad } = useRequestClient();
60
+ const orientation = usePanelOrientation();
61
+ const section = usePanelSection();
56
62
 
57
63
  const cellId = SCRATCH_CELL_ID;
58
64
  const cellRuntime = notebookState.cellRuntime[cellId];
@@ -223,13 +229,15 @@ export const ScratchPad: React.FC = () => {
223
229
  </div>
224
230
  );
225
231
 
232
+ const isVertical = orientation === "vertical";
233
+
226
234
  return (
227
235
  <div
228
236
  className="flex flex-col h-full overflow-hidden"
229
237
  id={HTMLCellId.create(cellId)}
230
238
  >
231
- <PanelGroup direction="horizontal" className="h-full">
232
- {/* Left side: toolbar + editor */}
239
+ <PanelGroup key={section} direction={orientation} className="h-full">
240
+ {/* Editor panel */}
233
241
  <Panel defaultSize={40} minSize={20} maxSize={70}>
234
242
  <div className="h-full flex flex-col overflow-hidden relative">
235
243
  {renderToolbar()}
@@ -257,8 +265,13 @@ export const ScratchPad: React.FC = () => {
257
265
  {renderHistory()}
258
266
  </div>
259
267
  </Panel>
260
- <PanelResizeHandle className="w-1 bg-border hover:bg-primary/50 transition-colors" />
261
- {/* Right side: outputs */}
268
+ <PanelResizeHandle
269
+ className={cn(
270
+ "bg-border hover:bg-primary/50 transition-colors",
271
+ isVertical ? "h-1" : "w-1",
272
+ )}
273
+ />
274
+ {/* Output panel */}
262
275
  <Panel defaultSize={60} minSize={20}>
263
276
  <div className="h-full flex flex-col divide-y overflow-hidden">
264
277
  <div className="flex-1 overflow-auto">
@@ -7,6 +7,7 @@ import { createTracebackInfoAtom } from "@/core/cells/cells";
7
7
  import { type CellId, HTMLCellId, SCRATCH_CELL_ID } from "@/core/cells/ids";
8
8
  import type { KeymapConfig } from "@/core/config/config-schema";
9
9
  import type { HotkeyProvider } from "@/core/hotkeys/hotkeys";
10
+ import { duplicateWithCtrlModifier } from "@/core/hotkeys/shortcuts";
10
11
  import { store } from "@/core/state/jotai";
11
12
  import { createObservable } from "@/core/state/observable";
12
13
  import { formatKeymapExtension } from "../extensions";
@@ -33,8 +34,9 @@ function cellKeymaps({
33
34
  }): Extension[] {
34
35
  const keybindings: KeyBinding[] = [];
35
36
 
37
+ // Run-related keybindings get Ctrl equivalents on macOS for Jupyter/Colab users
36
38
  keybindings.push(
37
- {
39
+ ...duplicateWithCtrlModifier({
38
40
  key: hotkeys.getHotkey("cell.run").key,
39
41
  preventDefault: true,
40
42
  stopPropagation: true,
@@ -43,8 +45,9 @@ function cellKeymaps({
43
45
  actions.onRun();
44
46
  return true;
45
47
  },
46
- },
48
+ }),
47
49
  {
50
+ // Shift-Enter has no Cmd, so no Ctrl equivalent needed
48
51
  key: hotkeys.getHotkey("cell.runAndNewBelow").key,
49
52
  preventDefault: true,
50
53
  stopPropagation: true,
@@ -59,7 +62,7 @@ function cellKeymaps({
59
62
  return true;
60
63
  },
61
64
  },
62
- {
65
+ ...duplicateWithCtrlModifier({
63
66
  key: hotkeys.getHotkey("cell.runAndNewAbove").key,
64
67
  preventDefault: true,
65
68
  stopPropagation: true,
@@ -73,7 +76,7 @@ function cellKeymaps({
73
76
  actions.moveToNextCell({ cellId, before: true });
74
77
  return true;
75
78
  },
76
- },
79
+ }),
77
80
  {
78
81
  key: hotkeys.getHotkey("cell.aiCompletion").key,
79
82
  preventDefault: true,
@@ -1,6 +1,6 @@
1
1
  /* Copyright 2026 Marimo. All rights reserved. */
2
2
  import { describe, expect, it, vi } from "vitest";
3
- import { parseShortcut } from "../shortcuts";
3
+ import { duplicateWithCtrlModifier, parseShortcut } from "../shortcuts";
4
4
 
5
5
  describe("parseShortcut", () => {
6
6
  it("should recognize single key shortcuts", () => {
@@ -21,10 +21,14 @@ describe("parseShortcut", () => {
21
21
  expect(shortcut(event)).toBe(true);
22
22
  });
23
23
 
24
- it("should recognize combined Cmd key shortcuts", () => {
24
+ it("should recognize combined Cmd key shortcuts with meta or ctrl", () => {
25
25
  const shortcut = parseShortcut("Cmd-a");
26
- const event = new KeyboardEvent("keydown", { key: "a", metaKey: true });
27
- expect(shortcut(event)).toBe(true);
26
+ // Cmd should accept both metaKey and ctrlKey (like Mod)
27
+ const metaEvent = new KeyboardEvent("keydown", { key: "a", metaKey: true });
28
+ expect(shortcut(metaEvent)).toBe(true);
29
+
30
+ const ctrlEvent = new KeyboardEvent("keydown", { key: "a", ctrlKey: true });
31
+ expect(shortcut(ctrlEvent)).toBe(true);
28
32
  });
29
33
 
30
34
  it("should recognize Arrow key shortcuts", () => {
@@ -164,3 +168,56 @@ describe("parseShortcut", () => {
164
168
  expect(parseShortcut("Ctrl+A")(event)).toBe(false);
165
169
  });
166
170
  });
171
+
172
+ describe("duplicateWithCtrlModifier", () => {
173
+ it("should duplicate Cmd binding with Ctrl variant on macOS", () => {
174
+ // Mock macOS platform
175
+ vi.spyOn(window.navigator, "platform", "get").mockReturnValue("MacIntel");
176
+
177
+ const binding = { key: "Cmd-Enter", run: () => true };
178
+ const result = duplicateWithCtrlModifier(binding);
179
+
180
+ expect(result).toHaveLength(2);
181
+ expect(result[0].key).toBe("Cmd-Enter");
182
+ expect(result[1].key).toBe("Ctrl-Enter");
183
+
184
+ vi.restoreAllMocks();
185
+ });
186
+
187
+ it("should not duplicate binding without Cmd", () => {
188
+ vi.spyOn(window.navigator, "platform", "get").mockReturnValue("MacIntel");
189
+
190
+ const binding = { key: "Shift-Enter", run: () => true };
191
+ const result = duplicateWithCtrlModifier(binding);
192
+
193
+ expect(result).toHaveLength(1);
194
+ expect(result[0].key).toBe("Shift-Enter");
195
+
196
+ vi.restoreAllMocks();
197
+ });
198
+
199
+ it("should not duplicate Cmd-Ctrl binding to avoid Ctrl-Ctrl", () => {
200
+ vi.spyOn(window.navigator, "platform", "get").mockReturnValue("MacIntel");
201
+
202
+ const binding = { key: "Cmd-Ctrl-Enter", run: () => true };
203
+ const result = duplicateWithCtrlModifier(binding);
204
+
205
+ // Should NOT create a Ctrl-Ctrl-Enter variant
206
+ expect(result).toHaveLength(1);
207
+ expect(result[0].key).toBe("Cmd-Ctrl-Enter");
208
+
209
+ vi.restoreAllMocks();
210
+ });
211
+
212
+ it("should not duplicate on non-macOS platforms", () => {
213
+ vi.spyOn(window.navigator, "platform", "get").mockReturnValue("Win32");
214
+
215
+ const binding = { key: "Cmd-Enter", run: () => true };
216
+ const result = duplicateWithCtrlModifier(binding);
217
+
218
+ expect(result).toHaveLength(1);
219
+ expect(result[0].key).toBe("Cmd-Enter");
220
+
221
+ vi.restoreAllMocks();
222
+ });
223
+ });
@@ -1,5 +1,6 @@
1
1
  /* Copyright 2026 Marimo. All rights reserved. */
2
2
 
3
+ import type { KeyBinding } from "@codemirror/view";
3
4
  import { Logger } from "@/utils/Logger";
4
5
  import { NOT_SET } from "./hotkeys";
5
6
 
@@ -106,8 +107,8 @@ function areKeysPressed(keys: string[], e: IKeyboardEvent): boolean {
106
107
  function normalizeKey(key: string): string {
107
108
  const specialKeys: { [key: string]: string } = {
108
109
  control: "ctrl",
109
- command: "meta",
110
- cmd: "meta",
110
+ command: "mod",
111
+ cmd: "mod",
111
112
  option: "alt",
112
113
  return: "enter",
113
114
  };
@@ -144,3 +145,34 @@ export function resolvePlatform(): Platform {
144
145
  }
145
146
  return "linux";
146
147
  }
148
+
149
+ /**
150
+ * On macOS, duplicate a Cmd-based keybinding to also work with Ctrl.
151
+ * This allows users coming from Jupyter/Colab to use Ctrl-Enter to run cells.
152
+ *
153
+ * Returns an array with the original binding, plus a Ctrl variant on macOS.
154
+ * For use with CodeMirror keymap bindings.
155
+ *
156
+ * Design decision: User-defined Cmd shortcuts also get Ctrl equivalents.
157
+ * The edge case is if a user wants `Cmd+<x>` and `Ctrl+<x>` to trigger
158
+ * different actions, this isn't currently supported. Given the relatively
159
+ * small number of keymaps, we're keeping this simple. If it becomes an issue,
160
+ * we can refactor to resolve a special "Mod" key internally and require users
161
+ * to specify explicit single-key mappings.
162
+ *
163
+ * Note: If the binding already contains Ctrl (e.g., Cmd-Ctrl-Enter),
164
+ * no duplication is done to avoid producing invalid Ctrl-Ctrl-key combos.
165
+ */
166
+ export function duplicateWithCtrlModifier<T extends KeyBinding>(
167
+ binding: T,
168
+ ): T[] {
169
+ // Skip if not macOS, not a Cmd binding, or already has Ctrl
170
+ if (
171
+ !isPlatformMac() ||
172
+ !binding.key?.includes("Cmd") ||
173
+ binding.key.includes("Ctrl")
174
+ ) {
175
+ return [binding];
176
+ }
177
+ return [binding, { ...binding, key: binding.key.replaceAll("Cmd", "Ctrl") }];
178
+ }