@marimo-team/islands 0.23.1-dev12 → 0.23.1-dev14

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.
@@ -5,7 +5,7 @@ import { s as __toESM, t as __commonJSMin } from "./chunk-BNovOVIE.js";
5
5
  import { t as require_react } from "./react-Bs6Z0kvn.js";
6
6
  import { t as require_compiler_runtime } from "./compiler-runtime-B_OLMU9S.js";
7
7
  import { r as toast } from "./copy-DzOz_Au7.js";
8
- 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-CMXpNweq.js";
8
+ 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-D3Q6xBZJ.js";
9
9
  import "./chunk-5FQGJX7Z-C428iZBW.js";
10
10
  import { u as createLucideIcon } from "./dist-CjLQ79mo.js";
11
11
  import { C as logNever, I as X, n as Strings, t as Label } from "./label-J1N4mVcg.js";
package/dist/main.js CHANGED
@@ -21,7 +21,7 @@ import { a as __toCommonJS, n as __esmMin, r as __export, s as __toESM, t as __c
21
21
  import { t as require_react } from "./react-Bs6Z0kvn.js";
22
22
  import { t as require_compiler_runtime } from "./compiler-runtime-B_OLMU9S.js";
23
23
  import { n as Copy, r as toast, t as copyToClipboard } from "./copy-DzOz_Au7.js";
24
- 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-CMXpNweq.js";
24
+ 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-D3Q6xBZJ.js";
25
25
  import { __tla as __tla_1 } from "./chunk-5FQGJX7Z-C428iZBW.js";
26
26
  import { o as useSize, s as Root$4, u as createLucideIcon } from "./dist-CjLQ79mo.js";
27
27
  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-rP6otrXw.js";
@@ -37125,7 +37125,7 @@ ${E}`,
37125
37125
  };
37126
37126
  }
37127
37127
  };
37128
- var LazyChatbot = import_react.lazy(() => import("./chat-ui-B_SumFQS.js").then((e) => ({
37128
+ var LazyChatbot = import_react.lazy(() => import("./chat-ui-BdrC6z8t.js").then((e) => ({
37129
37129
  default: e.Chatbot
37130
37130
  }))), messageSchema = array(object({
37131
37131
  id: string(),
@@ -68711,7 +68711,7 @@ ${c}
68711
68711
  return Logger.warn("Failed to get version from mount config"), null;
68712
68712
  }
68713
68713
  }
68714
- const marimoVersionAtom = atom(getVersionFromMountConfig() || "0.23.1-dev12"), showCodeInRunModeAtom = atom(true);
68714
+ const marimoVersionAtom = atom(getVersionFromMountConfig() || "0.23.1-dev14"), showCodeInRunModeAtom = atom(true);
68715
68715
  atom(null);
68716
68716
  var VIRTUAL_FILE_REGEX = /\/@file\/([^\s"&'/]+)\.([\dA-Za-z]+)/g, VirtualFileTracker = class e {
68717
68717
  constructor() {
@@ -26800,8 +26800,9 @@ ${n.sqlString}
26800
26800
  });
26801
26801
  }
26802
26802
  }, wrapTooltipTargets = (e, t) => {
26803
- var _a2;
26803
+ var _a2, _b2;
26804
26804
  if (t instanceof import_lib$1.Element && ((_a2 = t.attribs) == null ? void 0 : _a2["data-tooltip"])) {
26805
+ if ((((_b2 = t.name) == null ? void 0 : _b2.toLowerCase()) ?? "").startsWith("marimo-")) return;
26805
26806
  let n = t.attribs["data-tooltip"];
26806
26807
  return (0, import_jsx_runtime.jsx)(Tooltip, {
26807
26808
  content: n,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@marimo-team/islands",
3
- "version": "0.23.1-dev12",
3
+ "version": "0.23.1-dev14",
4
4
  "main": "dist/main.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "type": "module",
@@ -164,11 +164,20 @@ const wrapDocHoverTargets: TransformFn = (
164
164
  // Wrap elements with data-tooltip attribute in a Tooltip component.
165
165
  // This renders the tooltip in a portal (top layer), fixing clipping inside
166
166
  // containers with overflow:hidden (e.g. grid cells).
167
+ //
168
+ // Marimo custom elements (marimo-button, etc.) are skipped — they handle
169
+ // tooltips via the plugin system inside their Shadow DOM. Wrapping them here
170
+ // would create a duplicate tooltip with incorrect positioning and
171
+ // un-decoded JSON content (the data-* value is JSON-encoded by the backend).
167
172
  const wrapTooltipTargets: TransformFn = (
168
173
  reactNode: ReactNode,
169
174
  domNode: DOMNode,
170
175
  ): JSX.Element | undefined => {
171
176
  if (domNode instanceof Element && domNode.attribs?.["data-tooltip"]) {
177
+ const tagName = domNode.name?.toLowerCase() ?? "";
178
+ if (tagName.startsWith("marimo-")) {
179
+ return undefined;
180
+ }
172
181
  const tooltipContent = domNode.attribs["data-tooltip"];
173
182
  return (
174
183
  <Tooltip content={tooltipContent}>{reactNode as JSX.Element}</Tooltip>
@@ -240,6 +240,33 @@ describe("wrapTooltipTargets", () => {
240
240
  </p>
241
241
  `);
242
242
  });
243
+
244
+ test("data-tooltip on marimo custom elements is not wrapped", () => {
245
+ const html =
246
+ '<marimo-button data-tooltip="&quot;Run clicky&quot;">click</marimo-button>';
247
+ expect(parseHtml({ html })).toMatchInlineSnapshot(`
248
+ <marimo-button
249
+ data-tooltip=""Run clicky""
250
+ >
251
+ click
252
+ </marimo-button>
253
+ `);
254
+ });
255
+
256
+ test("data-tooltip on non-marimo custom elements is still wrapped", () => {
257
+ const html = '<my-widget data-tooltip="info">content</my-widget>';
258
+ expect(parseHtml({ html })).toMatchInlineSnapshot(`
259
+ <Tooltip
260
+ content="info"
261
+ >
262
+ <my-widget
263
+ data-tooltip="info"
264
+ >
265
+ content
266
+ </my-widget>
267
+ </Tooltip>
268
+ `);
269
+ });
243
270
  });
244
271
 
245
272
  describe("parseHtml with < nad >", () => {