@marimo-team/frontend 0.24.1-dev110 → 0.24.1-dev112

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 (85) hide show
  1. package/dist/assets/{CellStatus-CjUjb2Cd.js → CellStatus-DjaaE1KV.js} +1 -1
  2. package/dist/assets/{JsonOutput-BYSpdF43.js → JsonOutput-6STJL9Rn.js} +5 -5
  3. package/dist/assets/{LazyAnyLanguageCodeMirror-DW3ALk8T.js → LazyAnyLanguageCodeMirror-BnkWE9wV.js} +2 -2
  4. package/dist/assets/{MarimoErrorOutput-bK1H5Vq4.js → MarimoErrorOutput-BTqTZeiu.js} +1 -1
  5. package/dist/assets/RenderHTML-DUXIAUaj.js +1 -0
  6. package/dist/assets/{RunButton-BUopNmyI.js → RunButton-aYiWB8Ga.js} +1 -1
  7. package/dist/assets/{VisuallyHidden-D_iGuoaT.js → VisuallyHidden-dPzEOlg8.js} +1 -1
  8. package/dist/assets/{add-cell-with-ai-BCbCncNA.js → add-cell-with-ai-l_Dax5pU.js} +1 -1
  9. package/dist/assets/{add-connection-dialog-CFI3g7Qq.js → add-connection-dialog-CpvZ5BqX.js} +1 -1
  10. package/dist/assets/{agent-panel-CIGDXQtn.js → agent-panel-CbdAoVgG.js} +1 -1
  11. package/dist/assets/{ai-model-dropdown-BDhRgfa7.js → ai-model-dropdown-jVyB16Bq.js} +1 -1
  12. package/dist/assets/any-language-editor-B6cFLupW.js +1 -0
  13. package/dist/assets/{app-config-button-Cw9RXSId.js → app-config-button-CHSwEEzP.js} +1 -1
  14. package/dist/assets/{blob-8opSUf-R.js → blob-CoYb7D0i.js} +1 -1
  15. package/dist/assets/{cell-editor-D7fjZc8_.js → cell-editor-Bo1CBkuH.js} +1 -1
  16. package/dist/assets/{cell-link-RjRAdD7j.js → cell-link-CJvbR4gk.js} +1 -1
  17. package/dist/assets/{cells-qgj2MHef.js → cells-C3Vs2g0_.js} +55 -55
  18. package/dist/assets/{chat-display-Do0NHXRI.js → chat-display-CkS1h-qA.js} +1 -1
  19. package/dist/assets/{chat-panel-6aXBvTGv.js → chat-panel-Bl8KhsjW.js} +1 -1
  20. package/dist/assets/{chat-ui-B1jxuQMJ.js → chat-ui-lhVS3XhN.js} +1 -1
  21. package/dist/assets/{column-preview-Bnrq4bEC.js → column-preview-CBydN0D3.js} +1 -1
  22. package/dist/assets/{command-palette-CYaDy4p2.js → command-palette-D0yWoZzd.js} +1 -1
  23. package/dist/assets/{common-UY3q-fId.js → common-BANLqpaV.js} +1 -1
  24. package/dist/assets/{components-CxHV3A2M.js → components-DC6fLfDw.js} +1 -1
  25. package/dist/assets/{datasource-CslkWQXu.js → datasource-DB4KqePX.js} +1 -1
  26. package/dist/assets/{dependency-graph-panel-CIZwnr8N.js → dependency-graph-panel-LHjxAlPl.js} +1 -1
  27. package/dist/assets/{documentation-panel-IkGXd5w4.js → documentation-panel-2myTueGx.js} +1 -1
  28. package/dist/assets/{download-BenVNUUc.js → download-VyhuV4Af.js} +1 -1
  29. package/dist/assets/{edit-page-DvStrWEF.js → edit-page-CVhnUbM-.js} +4 -4
  30. package/dist/assets/{error-entries-VeWh8139.js → error-entries-DZjQ7yIb.js} +1 -1
  31. package/dist/assets/{error-panel-DvGxCCbV.js → error-panel-BpAXL0Jx.js} +1 -1
  32. package/dist/assets/{file-explorer-panel-CC4C9SnN.js → file-explorer-panel-BN6gd4XO.js} +1 -1
  33. package/dist/assets/{file-icons-BrEKrCwx.js → file-icons-DqdK7VJg.js} +1 -1
  34. package/dist/assets/{file-name-input-Bwd3-2qW.js → file-name-input-oiyzcfEJ.js} +1 -1
  35. package/dist/assets/{floating-outline-D2mRNu22.js → floating-outline-DPSwhBkV.js} +1 -1
  36. package/dist/assets/{gallery-page-eCWVVsFK.js → gallery-page-7DdjmUx5.js} +1 -1
  37. package/dist/assets/{glide-data-editor-Dcp6006R.js → glide-data-editor-Di4wZ4hd.js} +1 -1
  38. package/dist/assets/{home-page-C8yicSrb.js → home-page-Bp96aSro.js} +1 -1
  39. package/dist/assets/{index-BHZDiHTq.js → index-DppxBBTx.js} +3 -3
  40. package/dist/assets/{input-Ddnr8OdM.js → input-BBJ8nAOd.js} +1 -1
  41. package/dist/assets/{layout-BBzwwt8g.js → layout-Cx8C7K25.js} +3 -3
  42. package/dist/assets/{logs-panel-B09Cp9bZ.js → logs-panel-D0bWZKWJ.js} +1 -1
  43. package/dist/assets/{markdown-renderer-DoyGe3kU.js → markdown-renderer-CZ3YygMD.js} +1 -1
  44. package/dist/assets/{name-cell-input-Cj0SeUpU.js → name-cell-input-Bu4JMe_U.js} +1 -1
  45. package/dist/assets/{outline-panel-D7oPCNxa.js → outline-panel-C1xIywWA.js} +1 -1
  46. package/dist/assets/{packages-panel-DvNqZ6hB.js → packages-panel-DTJ-O5EO.js} +1 -1
  47. package/dist/assets/{pair-with-agent-modal-B--3Xpp8.js → pair-with-agent-modal-DdhoVv9s.js} +1 -1
  48. package/dist/assets/{panel-accordion-state-D4JACsZ3.js → panel-accordion-state-Cx3vYbsP.js} +1 -1
  49. package/dist/assets/{panels-BTHaPtUZ.js → panels-CywQefR1.js} +1 -1
  50. package/dist/assets/{process-output-BRGOvb2f.js → process-output-BisIKywr.js} +1 -1
  51. package/dist/assets/{readonly-code-display-CUFQn5sY.js → readonly-code-display-BkxE6y3G.js} +1 -1
  52. package/dist/assets/{readonly-python-code-C-Iv7xif.js → readonly-python-code-BsJxWR9t.js} +1 -1
  53. package/dist/assets/{reveal-component-CawytCeQ.js → reveal-component-BNl5Zqif.js} +1 -1
  54. package/dist/assets/{run-page-DrxVLavD.js → run-page-RG1gHn8i.js} +1 -1
  55. package/dist/assets/{scratchpad-panel-DUioP0f7.js → scratchpad-panel-DnSgF--Q.js} +1 -1
  56. package/dist/assets/{secrets-panel-C9n7VrlP.js → secrets-panel-BKccjNx4.js} +1 -1
  57. package/dist/assets/{session-panel-DiKPWSPU.js → session-panel-BXwF6uCv.js} +1 -1
  58. package/dist/assets/{skeleton-BDmfpU3X.js → skeleton-DIGKSCaR.js} +1 -1
  59. package/dist/assets/{snippets-panel-DgFciIZH.js → snippets-panel-Bs7D-2J3.js} +1 -1
  60. package/dist/assets/{state-D2WJm4i8.js → state-C5o_oPeD.js} +1 -1
  61. package/dist/assets/{state-BJNrXOAk.js → state-DqwSj41I.js} +1 -1
  62. package/dist/assets/{tracing-DfeL2FvL.js → tracing-PQRp5Y6N.js} +1 -1
  63. package/dist/assets/{tracing-panel-_RFJ1V2H.js → tracing-panel-BnrbDAGz.js} +2 -2
  64. package/dist/assets/{tree-actions-591V0MzS.js → tree-actions-C-1KQPVN.js} +1 -1
  65. package/dist/assets/{useAddCell-DcOC1-46.js → useAddCell-qRhXgYb3.js} +1 -1
  66. package/dist/assets/{useCellActionButton-BkFPMNO9.js → useCellActionButton-C__VM-4x.js} +1 -1
  67. package/dist/assets/{useDeleteCell-Co6v3eGu.js → useDeleteCell-xTUoM-wW.js} +1 -1
  68. package/dist/assets/{useDependencyPanelTab-B432gP68.js → useDependencyPanelTab-DbotHB0-.js} +1 -1
  69. package/dist/assets/{useNotebookActions-AeYQuSXc.js → useNotebookActions-DIcNvfxA.js} +1 -1
  70. package/dist/assets/{useRunCells-B0cXvtXO.js → useRunCells-Bno18PcV.js} +1 -1
  71. package/dist/assets/{useSplitCell-JMnmcTxP.js → useSplitCell-DigdAFdD.js} +1 -1
  72. package/dist/assets/{write-secret-modal-DgqX3xEF.js → write-secret-modal-BJCzwShk.js} +1 -1
  73. package/dist/index.html +23 -23
  74. package/package.json +1 -1
  75. package/src/components/data-table/__tests__/column-explorer.test.tsx +3 -2
  76. package/src/components/data-table/__tests__/column-visibility-dropdown.test.tsx +7 -3
  77. package/src/components/editor/connections/secret-combobox.tsx +3 -1
  78. package/src/components/editor/file-tree/renderers.tsx +4 -2
  79. package/src/components/forms/form.tsx +6 -4
  80. package/src/components/ui/input.tsx +5 -1
  81. package/src/plugins/core/RenderHTML.tsx +6 -4
  82. package/src/plugins/impl/code/any-language-editor.tsx +7 -4
  83. package/src/stories/cell.stories.tsx +15 -11
  84. package/dist/assets/RenderHTML-Djj3QRVt.js +0 -1
  85. package/dist/assets/any-language-editor-DKw9aXIK.js +0 -1
@@ -60,15 +60,17 @@ interface Props<T extends FieldValues> {
60
60
  form: UseFormReturn<T>;
61
61
  schema: z.ZodType;
62
62
  path?: Path<T>;
63
- renderers: FormRenderer<T>[] | undefined;
63
+ renderers: readonly FormRenderer<T>[] | undefined;
64
64
  children?: React.ReactNode;
65
65
  }
66
66
 
67
+ const EMPTY_RENDERERS: readonly never[] = [];
68
+
67
69
  export const ZodForm = <T extends FieldValues>({
68
70
  schema,
69
71
  form,
70
72
  path = "" as Path<T>,
71
- renderers = [],
73
+ renderers = EMPTY_RENDERERS,
72
74
  children,
73
75
  }: Props<T>) => {
74
76
  return (
@@ -83,7 +85,7 @@ export interface RenderZodSchemaOptions<T extends FieldValues, S> {
83
85
  schema: z.ZodType<S>;
84
86
  form: UseFormReturn<T>;
85
87
  path: Path<T>;
86
- renderers: FormRenderer<T>[];
88
+ renderers: readonly FormRenderer<T>[];
87
89
  }
88
90
 
89
91
  export function renderZodSchema<T extends FieldValues, S>({
@@ -516,7 +518,7 @@ const FormArray = ({
516
518
  schema: z.ZodType;
517
519
  form: UseFormReturn<any>;
518
520
  path: Path<any>;
519
- renderers: FormRenderer[];
521
+ renderers: readonly FormRenderer[];
520
522
  minLength?: number;
521
523
  }) => {
522
524
  const { label, description } = FieldOptions.parse(schema.description || "");
@@ -17,6 +17,10 @@ export type InputProps = React.InputHTMLAttributes<HTMLInputElement> & {
17
17
  endAdornment?: React.ReactNode;
18
18
  };
19
19
 
20
+ const DEFAULT_SEARCH_ICON = (
21
+ <SearchIcon className="mr-2 h-4 w-4 shrink-0 opacity-50" />
22
+ );
23
+
20
24
  const Input = React.forwardRef<HTMLInputElement, InputProps>(
21
25
  ({ className, type, endAdornment, ...props }, ref) => {
22
26
  const icon = props.icon;
@@ -120,7 +124,7 @@ export const SearchInput = React.forwardRef<
120
124
  {
121
125
  className,
122
126
  rootClassName,
123
- icon = <SearchIcon className="mr-2 h-4 w-4 shrink-0 opacity-50" />,
127
+ icon = DEFAULT_SEARCH_ICON,
124
128
  clearable = true,
125
129
  ...props
126
130
  },
@@ -24,6 +24,8 @@ import { sanitizeHtml, useSanitizeHtml } from "./sanitize";
24
24
  type ReplacementFn = NonNullable<HTMLReactParserOptions["replace"]>;
25
25
  type TransformFn = NonNullable<HTMLReactParserOptions["transform"]>;
26
26
 
27
+ const EMPTY_REPLACEMENTS: readonly ReplacementFn[] = [];
28
+
27
29
  interface Options {
28
30
  html: string;
29
31
  /**
@@ -31,7 +33,7 @@ interface Options {
31
33
  * @default true
32
34
  */
33
35
  alwaysSanitizeHtml?: boolean;
34
- additionalReplacements?: ReplacementFn[];
36
+ additionalReplacements?: readonly ReplacementFn[];
35
37
  }
36
38
 
37
39
  const replaceValidTags = (domNode: DOMNode) => {
@@ -299,7 +301,7 @@ const CopyableCode = ({ children }: { children: ReactNode }) => {
299
301
  */
300
302
  export const renderHTML = ({
301
303
  html,
302
- additionalReplacements = [],
304
+ additionalReplacements = EMPTY_REPLACEMENTS,
303
305
  alwaysSanitizeHtml = true,
304
306
  }: Options) => {
305
307
  return (
@@ -313,7 +315,7 @@ export const renderHTML = ({
313
315
 
314
316
  const RenderHTML = ({
315
317
  html,
316
- additionalReplacements = [],
318
+ additionalReplacements = EMPTY_REPLACEMENTS,
317
319
  alwaysSanitizeHtml,
318
320
  }: Options) => {
319
321
  const shouldSanitizeHtml = useSanitizeHtml();
@@ -333,7 +335,7 @@ const RenderHTML = ({
333
335
 
334
336
  function parseHtml({
335
337
  html,
336
- additionalReplacements = [],
338
+ additionalReplacements = EMPTY_REPLACEMENTS,
337
339
  }: Pick<Options, "html" | "additionalReplacements">) {
338
340
  const renderFunctions: ReplacementFn[] = [
339
341
  replaceValidTags,
@@ -27,6 +27,8 @@ export const LANGUAGE_MAP: Record<string, LanguageName | undefined> = {
27
27
  undefined: "text",
28
28
  };
29
29
 
30
+ const EMPTY_EXTENSIONS: readonly Extension[] = [];
31
+
30
32
  function isSupportedLanguage(
31
33
  language: string | undefined,
32
34
  ): language is LanguageName {
@@ -43,17 +45,18 @@ function isSupportedLanguage(
43
45
  * language support.
44
46
  */
45
47
  const AnyLanguageCodeMirror: React.FC<
46
- ReactCodeMirrorProps & {
48
+ Omit<ReactCodeMirrorProps, "extensions"> & {
47
49
  language: string | undefined;
48
50
  hideUnsupportedLanguageErrors?: boolean;
49
51
  theme: ResolvedTheme;
50
52
  showCopyButton?: boolean;
53
+ extensions?: readonly Extension[];
51
54
  }
52
55
  > = ({
53
56
  language,
54
57
  hideUnsupportedLanguageErrors,
55
58
  showCopyButton,
56
- extensions = [],
59
+ extensions = EMPTY_EXTENSIONS,
57
60
  ...props
58
61
  }) => {
59
62
  // Maybe normalize the language to the extension
@@ -64,7 +67,7 @@ const AnyLanguageCodeMirror: React.FC<
64
67
  Logger.warn(`Language ${language} not found in CodeMirror.`);
65
68
  }
66
69
 
67
- const finalExtensions = useMemo((): Extension[] => {
70
+ const finalExtensions = useMemo((): readonly Extension[] => {
68
71
  if (!isSupportedLanguage(language)) {
69
72
  return extensions;
70
73
  }
@@ -90,7 +93,7 @@ const AnyLanguageCodeMirror: React.FC<
90
93
  toastTitle="Copied to clipboard"
91
94
  />
92
95
  )}
93
- <ReactCodeMirror {...props} extensions={finalExtensions} />
96
+ <ReactCodeMirror {...props} extensions={[...finalExtensions]} />
94
97
  </div>
95
98
  );
96
99
  };
@@ -22,18 +22,22 @@ import { TooltipProvider } from "../components/ui/tooltip";
22
22
 
23
23
  type Story = StoryObj<typeof Cell>;
24
24
 
25
+ interface CellOverrides {
26
+ runElapsedTimeMs?: Milliseconds;
27
+ output?: CellRuntimeState["output"];
28
+ edited?: boolean;
29
+ interrupted?: boolean;
30
+ errored?: boolean;
31
+ status?: CellRuntimeState["status"];
32
+ staleInputs?: boolean;
33
+ config?: CellConfig;
34
+ }
35
+
36
+ const EMPTY_OVERRIDES: Readonly<CellOverrides> = {};
37
+
25
38
  const Cell: React.FC<{
26
- overrides?: {
27
- runElapsedTimeMs?: Milliseconds;
28
- output?: CellRuntimeState["output"];
29
- edited?: boolean;
30
- interrupted?: boolean;
31
- errored?: boolean;
32
- status?: CellRuntimeState["status"];
33
- staleInputs?: boolean;
34
- config?: CellConfig;
35
- };
36
- }> = ({ overrides = {} }) => {
39
+ overrides?: CellOverrides;
40
+ }> = ({ overrides = EMPTY_OVERRIDES }) => {
37
41
  const cid = cellId("1");
38
42
  const notebook: NotebookState = {
39
43
  cellData: {
@@ -1 +0,0 @@
1
- import{a as e}from"./rolldown-runtime-B0Z9INg1.js";import{f as t,l as n,r}from"./useEvent-xfs0Sn4r.js";import{t as i}from"./react-CBDbhulC.js";import{Rr as a,co as o,gt as s,lo as c,m as l,qr as u}from"./cells-qgj2MHef.js";import{t as d}from"./compiler-runtime-CYIjoINj.js";import{c as f}from"./utils-B-_Wem_I.js";import{g as p}from"./useEventListener-92uWqz-P.js";import{E as m}from"./config-BRRSKtP3.js";import{t as h}from"./jsx-runtime-B74pBk57.js";import{t as g}from"./tooltip-BO5vfMvm.js";import{U as _}from"./input-Ddnr8OdM.js";import{n as v}from"./useDebounce-Dulm61-t.js";import{t as y}from"./copy-icon-zfaCsLjV.js";import{t as b}from"./useRunCells-B0cXvtXO.js";var x=d(),S=e(i(),1),C=h(),w=e=>{let t=(0,x.c)(16),n,r,i;t[0]===e?(n=t[1],r=t[2],i=t[3]):({href:r,children:n,...i}=e,t[0]=e,t[1]=n,t[2]=r,t[3]=i);let a=(0,S.useRef)(null),o;t[4]===r?o=t[5]:(o=()=>{let e=new URL(globalThis.location.href);e.hash=r,globalThis.history.pushState({},``,e.toString()),globalThis.dispatchEvent(new HashChangeEvent(`hashchange`));let t=r.slice(1),n=document.getElementById(t);n&&n.scrollIntoView({behavior:`smooth`,block:`start`})},t[4]=r,t[5]=o);let s=o,c;t[6]===s?c=t[7]:(c={onPress:()=>{s()}},t[6]=s,t[7]=c);let{pressProps:l}=_(c),u;t[8]===s?u=t[9]:(u=e=>{e.preventDefault(),s()},t[8]=s,t[9]=u);let d=u,f;return t[10]!==n||t[11]!==d||t[12]!==r||t[13]!==l||t[14]!==i?(f=(0,C.jsx)(`a`,{ref:a,href:r,...l,onClick:d,...i,children:n}),t[10]=n,t[11]=d,t[12]=r,t[13]=l,t[14]=i,t[15]=f):f=t[15],f};async function T(e){let t=l().inOrderIds.at(0);if(t)try{let n=await a.request({document:e,cellId:t});if(!n||n.options.length===0)return;let i=e.split(`.`).pop()??e,o=n.options[0],s=n.options.find(e=>e.name===i)??o;s?.completion_info&&r.set(u,{documentation:s.completion_info})}catch(t){p.debug(`Doc lookup failed for "${e}"`,t)}}var E=e=>{let t=(0,x.c)(8),{qualifiedName:n,children:r}=e,i;t[0]===n?i=t[1]:(i=()=>{T(n)},t[0]=n,t[1]=i);let a=v(i,100),o;t[2]===a?o=t[3]:(o=()=>a.cancel(),t[2]=a,t[3]=o);let s;return t[4]!==r||t[5]!==a||t[6]!==o?(s=(0,C.jsx)(`span`,{onMouseEnter:a,onMouseLeave:o,children:r}),t[4]=r,t[5]=a,t[6]=o,t[7]=s):s=t[7],s};function D(e){if(typeof e!=`object`||!e)return!1;let t=e;return!(t.trusted!==!0||t.notebookCode!==void 0&&typeof t.notebookCode!=`string`)}function O(){let e=window?.__MARIMO_EXPORT_CONTEXT__;return D(e)?e:void 0}function k(){return O()?.trusted===!0}function A(){if(r.get(b)||k()||r.get(f))return!0;try{if(m()===`read`)return!0}catch{}return!1}var j=t(e=>{let t=e(b),n=e(f);if(t||n||k())return!1;let r=!0;try{r=m()===`read`}catch{return!0}return!r});function M(){return n(j)}var N=e=>{if(e instanceof c.Element&&!/^[A-Za-z][\w-]*$/.test(e.name))return S.createElement(S.Fragment)},P=(e,t)=>{if(t instanceof c.Element&&t.name===`body`){if((0,S.isValidElement)(e)&&`props`in e){let t=e.props.children;return(0,C.jsx)(C.Fragment,{children:t})}return}},F=(e,t)=>{if(t instanceof c.Element&&t.name===`html`){if((0,S.isValidElement)(e)&&`props`in e){let t=e.props.children;return(0,C.jsx)(C.Fragment,{children:t})}return}},I=e=>{if(e instanceof c.Element&&e.attribs&&e.name===`iframe`){let t=document.createElement(`iframe`);return Object.entries(e.attribs).forEach(([e,n])=>{e.startsWith(`"`)&&e.endsWith(`"`)&&(e=e.slice(1,-1)),t.setAttribute(e,n)}),(0,C.jsx)(`div`,{dangerouslySetInnerHTML:{__html:t.outerHTML}})}},L=e=>{if(e instanceof c.Element&&e.name===`script`){let t=e.attribs.src;if(!t)return;if(!A())return p.warn(`[RenderHTML] refusing <script src> in untrusted context: ${t}`),(0,C.jsx)(C.Fragment,{});if(![...document.querySelectorAll(`script[src]`)].some(e=>e.getAttribute(`src`)===t)){let e=document.createElement(`script`);e.src=t,document.head.append(e)}return(0,C.jsx)(C.Fragment,{})}},R=(e,t)=>{if(t instanceof c.Element&&t.name===`a`){let n=t.attribs.href;if(n?.startsWith(`#`)&&!n.startsWith(`#code/`)){let r=null;return(0,S.isValidElement)(e)&&`props`in e&&(r=e.props.children),(0,C.jsx)(w,{href:n,...t.attribs,children:r})}}},z=(e,t,n)=>{if(t instanceof c.Element&&t.name===`div`&&t.attribs?.class?.includes(`codehilite`))return(0,C.jsx)(W,{children:e},n)},B=(e,t,n)=>{if(!(t instanceof c.Element)||t.name!==`img`)return;let r=t.attribs?.src;if(!(!r||!(0,S.isValidElement)(e))&&!/^data:/i.test(r))return(0,S.cloneElement)(e,{key:`${r}-${n}`})},V=(e,t,n)=>{if(!(t instanceof c.Element)||t.name!==`input`||t.attribs?.type!==`checkbox`||!(0,S.isValidElement)(e))return;let r=`checked`in t.attribs;return(0,S.cloneElement)(e,{key:`checkbox-${n}-${r}`})},H=(e,t)=>{if(t instanceof c.Element&&t.attribs?.[`data-marimo-doc`]){let n=t.attribs[`data-marimo-doc`];return(0,C.jsx)(E,{qualifiedName:n,children:e})}},U=(e,t)=>{if(t instanceof c.Element&&t.attribs?.[`data-tooltip`]){if((t.name?.toLowerCase()??``).startsWith(`marimo-`))return;let n=t.attribs[`data-tooltip`];return(0,C.jsx)(g,{content:n,children:e})}},W=e=>{let t=(0,x.c)(3),{children:n}=e,r=(0,S.useRef)(null),i;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(i=(0,C.jsx)(`div`,{className:`absolute top-2 right-2 opacity-0 group-hover:opacity-100 transition-opacity`,children:(0,C.jsx)(y,{tooltip:!1,className:`p-1`,value:()=>{let e=r.current?.firstChild;return e&&e.textContent||``}})}),t[0]=i):i=t[0];let a;return t[1]===n?a=t[2]:(a=(0,C.jsxs)(`div`,{className:`relative group codehilite-wrapper`,ref:r,children:[n,i]}),t[1]=n,t[2]=a),a},G=({html:e,additionalReplacements:t=[],alwaysSanitizeHtml:n=!0})=>(0,C.jsx)(K,{html:e,alwaysSanitizeHtml:n,additionalReplacements:t}),K=e=>{let t=(0,x.c)(7),{html:n,additionalReplacements:r,alwaysSanitizeHtml:i}=e,a;t[0]===r?a=t[1]:(a=r===void 0?[]:r,t[0]=r,t[1]=a);let o=a,c=M(),l;bb0:{if(i||c){let e;t[2]===n?e=t[3]:(e=s(n),t[2]=n,t[3]=e),l=e;break bb0}l=n}let u=l,d;return t[4]!==o||t[5]!==u?(d=q({html:u,additionalReplacements:o}),t[4]=o,t[5]=u,t[6]=d):d=t[6],d};function q({html:e,additionalReplacements:t=[]}){let n=[N,I,L,...t],r=[z,R,H,U,P,F],i=[B,V];return o(e,{replace:(e,t)=>{for(let r of n){let n=r(e,t);if(n)return n}return e},transform:(e,t,n)=>{let a=e;for(let e of r){let r=e(a,t,n);if(r){a=r;break}}for(let e of i){let r=e(a,t,n);r&&(a=r)}return a}})}export{k as n,G as t};
@@ -1 +0,0 @@
1
- import"./rolldown-runtime-B0Z9INg1.js";import{t as e}from"./react-CBDbhulC.js";import{t}from"./compiler-runtime-CYIjoINj.js";import{g as n}from"./useEventListener-92uWqz-P.js";import{t as r}from"./jsx-runtime-B74pBk57.js";import{t as i}from"./copy-icon-zfaCsLjV.js";import{t as a}from"./esm-BHMOvJzM.js";import{n as o}from"./error-banner-BsjSLKyr.js";import{n as s,t as c}from"./esm-DmqQGMel.js";var l=t();e();var u=r(),d={python:`py`,python3:`py`,javascript:`js`,typescript:`ts`,shell:`sh`,bash:`sh`,unknown:`text`,undefined:`text`};function f(e){return e?e in c:!1}var p=e=>{let t=(0,l.c)(29),r,p,m,h,g,_;if(t[0]!==e){let{language:n,hideUnsupportedLanguageErrors:i,showCopyButton:a,extensions:o,...s}=e;p=i,g=a,h=s,m=n;let c;t[7]===o?c=t[8]:(c=o===void 0?[]:o,t[7]=o,t[8]=c),r=c,m=d[m||``]||m,_=f(m),t[0]=e,t[1]=r,t[2]=p,t[3]=m,t[4]=h,t[5]=g,t[6]=_}else r=t[1],p=t[2],m=t[3],h=t[4],g=t[5],_=t[6];let v=_;v||n.warn(`Language ${m} not found in CodeMirror.`);let y;bb0:{if(!f(m)){y=r;break bb0}let e;t[9]===m?e=t[10]:(e=s(m),t[9]=m,t[10]=e);let n;t[11]!==r||t[12]!==e?(n=[e,...r].filter(Boolean),t[11]=r,t[12]=e,t[13]=n):n=t[13],y=n}let b=y,x;t[14]!==p||t[15]!==v||t[16]!==m?(x=!v&&!p&&(0,u.jsx)(o,{className:`mb-1 rounded-sm`,error:`Language ${m} not supported. Supported languages are: ${Object.keys(c).join(`, `)}`}),t[14]=p,t[15]=v,t[16]=m,t[17]=x):x=t[17];let S;t[18]!==v||t[19]!==h||t[20]!==g?(S=g&&v&&(0,u.jsx)(i,{tooltip:!1,buttonClassName:`absolute top-2 right-2 z-10 hover-action`,className:`h-4 w-4 text-muted-foreground`,value:h.value||``,toastTitle:`Copied to clipboard`}),t[18]=v,t[19]=h,t[20]=g,t[21]=S):S=t[21];let C;t[22]!==b||t[23]!==h?(C=(0,u.jsx)(a,{...h,extensions:b}),t[22]=b,t[23]=h,t[24]=C):C=t[24];let w;return t[25]!==x||t[26]!==S||t[27]!==C?(w=(0,u.jsxs)(`div`,{className:`relative w-full group hover-actions-parent`,children:[x,S,C]}),t[25]=x,t[26]=S,t[27]=C,t[28]=w):w=t[28],w};export{d as LANGUAGE_MAP,p as default};