@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.
- package/dist/assets/{CellStatus-CjUjb2Cd.js → CellStatus-DjaaE1KV.js} +1 -1
- package/dist/assets/{JsonOutput-BYSpdF43.js → JsonOutput-6STJL9Rn.js} +5 -5
- package/dist/assets/{LazyAnyLanguageCodeMirror-DW3ALk8T.js → LazyAnyLanguageCodeMirror-BnkWE9wV.js} +2 -2
- package/dist/assets/{MarimoErrorOutput-bK1H5Vq4.js → MarimoErrorOutput-BTqTZeiu.js} +1 -1
- package/dist/assets/RenderHTML-DUXIAUaj.js +1 -0
- package/dist/assets/{RunButton-BUopNmyI.js → RunButton-aYiWB8Ga.js} +1 -1
- package/dist/assets/{VisuallyHidden-D_iGuoaT.js → VisuallyHidden-dPzEOlg8.js} +1 -1
- package/dist/assets/{add-cell-with-ai-BCbCncNA.js → add-cell-with-ai-l_Dax5pU.js} +1 -1
- package/dist/assets/{add-connection-dialog-CFI3g7Qq.js → add-connection-dialog-CpvZ5BqX.js} +1 -1
- package/dist/assets/{agent-panel-CIGDXQtn.js → agent-panel-CbdAoVgG.js} +1 -1
- package/dist/assets/{ai-model-dropdown-BDhRgfa7.js → ai-model-dropdown-jVyB16Bq.js} +1 -1
- package/dist/assets/any-language-editor-B6cFLupW.js +1 -0
- package/dist/assets/{app-config-button-Cw9RXSId.js → app-config-button-CHSwEEzP.js} +1 -1
- package/dist/assets/{blob-8opSUf-R.js → blob-CoYb7D0i.js} +1 -1
- package/dist/assets/{cell-editor-D7fjZc8_.js → cell-editor-Bo1CBkuH.js} +1 -1
- package/dist/assets/{cell-link-RjRAdD7j.js → cell-link-CJvbR4gk.js} +1 -1
- package/dist/assets/{cells-qgj2MHef.js → cells-C3Vs2g0_.js} +55 -55
- package/dist/assets/{chat-display-Do0NHXRI.js → chat-display-CkS1h-qA.js} +1 -1
- package/dist/assets/{chat-panel-6aXBvTGv.js → chat-panel-Bl8KhsjW.js} +1 -1
- package/dist/assets/{chat-ui-B1jxuQMJ.js → chat-ui-lhVS3XhN.js} +1 -1
- package/dist/assets/{column-preview-Bnrq4bEC.js → column-preview-CBydN0D3.js} +1 -1
- package/dist/assets/{command-palette-CYaDy4p2.js → command-palette-D0yWoZzd.js} +1 -1
- package/dist/assets/{common-UY3q-fId.js → common-BANLqpaV.js} +1 -1
- package/dist/assets/{components-CxHV3A2M.js → components-DC6fLfDw.js} +1 -1
- package/dist/assets/{datasource-CslkWQXu.js → datasource-DB4KqePX.js} +1 -1
- package/dist/assets/{dependency-graph-panel-CIZwnr8N.js → dependency-graph-panel-LHjxAlPl.js} +1 -1
- package/dist/assets/{documentation-panel-IkGXd5w4.js → documentation-panel-2myTueGx.js} +1 -1
- package/dist/assets/{download-BenVNUUc.js → download-VyhuV4Af.js} +1 -1
- package/dist/assets/{edit-page-DvStrWEF.js → edit-page-CVhnUbM-.js} +4 -4
- package/dist/assets/{error-entries-VeWh8139.js → error-entries-DZjQ7yIb.js} +1 -1
- package/dist/assets/{error-panel-DvGxCCbV.js → error-panel-BpAXL0Jx.js} +1 -1
- package/dist/assets/{file-explorer-panel-CC4C9SnN.js → file-explorer-panel-BN6gd4XO.js} +1 -1
- package/dist/assets/{file-icons-BrEKrCwx.js → file-icons-DqdK7VJg.js} +1 -1
- package/dist/assets/{file-name-input-Bwd3-2qW.js → file-name-input-oiyzcfEJ.js} +1 -1
- package/dist/assets/{floating-outline-D2mRNu22.js → floating-outline-DPSwhBkV.js} +1 -1
- package/dist/assets/{gallery-page-eCWVVsFK.js → gallery-page-7DdjmUx5.js} +1 -1
- package/dist/assets/{glide-data-editor-Dcp6006R.js → glide-data-editor-Di4wZ4hd.js} +1 -1
- package/dist/assets/{home-page-C8yicSrb.js → home-page-Bp96aSro.js} +1 -1
- package/dist/assets/{index-BHZDiHTq.js → index-DppxBBTx.js} +3 -3
- package/dist/assets/{input-Ddnr8OdM.js → input-BBJ8nAOd.js} +1 -1
- package/dist/assets/{layout-BBzwwt8g.js → layout-Cx8C7K25.js} +3 -3
- package/dist/assets/{logs-panel-B09Cp9bZ.js → logs-panel-D0bWZKWJ.js} +1 -1
- package/dist/assets/{markdown-renderer-DoyGe3kU.js → markdown-renderer-CZ3YygMD.js} +1 -1
- package/dist/assets/{name-cell-input-Cj0SeUpU.js → name-cell-input-Bu4JMe_U.js} +1 -1
- package/dist/assets/{outline-panel-D7oPCNxa.js → outline-panel-C1xIywWA.js} +1 -1
- package/dist/assets/{packages-panel-DvNqZ6hB.js → packages-panel-DTJ-O5EO.js} +1 -1
- package/dist/assets/{pair-with-agent-modal-B--3Xpp8.js → pair-with-agent-modal-DdhoVv9s.js} +1 -1
- package/dist/assets/{panel-accordion-state-D4JACsZ3.js → panel-accordion-state-Cx3vYbsP.js} +1 -1
- package/dist/assets/{panels-BTHaPtUZ.js → panels-CywQefR1.js} +1 -1
- package/dist/assets/{process-output-BRGOvb2f.js → process-output-BisIKywr.js} +1 -1
- package/dist/assets/{readonly-code-display-CUFQn5sY.js → readonly-code-display-BkxE6y3G.js} +1 -1
- package/dist/assets/{readonly-python-code-C-Iv7xif.js → readonly-python-code-BsJxWR9t.js} +1 -1
- package/dist/assets/{reveal-component-CawytCeQ.js → reveal-component-BNl5Zqif.js} +1 -1
- package/dist/assets/{run-page-DrxVLavD.js → run-page-RG1gHn8i.js} +1 -1
- package/dist/assets/{scratchpad-panel-DUioP0f7.js → scratchpad-panel-DnSgF--Q.js} +1 -1
- package/dist/assets/{secrets-panel-C9n7VrlP.js → secrets-panel-BKccjNx4.js} +1 -1
- package/dist/assets/{session-panel-DiKPWSPU.js → session-panel-BXwF6uCv.js} +1 -1
- package/dist/assets/{skeleton-BDmfpU3X.js → skeleton-DIGKSCaR.js} +1 -1
- package/dist/assets/{snippets-panel-DgFciIZH.js → snippets-panel-Bs7D-2J3.js} +1 -1
- package/dist/assets/{state-D2WJm4i8.js → state-C5o_oPeD.js} +1 -1
- package/dist/assets/{state-BJNrXOAk.js → state-DqwSj41I.js} +1 -1
- package/dist/assets/{tracing-DfeL2FvL.js → tracing-PQRp5Y6N.js} +1 -1
- package/dist/assets/{tracing-panel-_RFJ1V2H.js → tracing-panel-BnrbDAGz.js} +2 -2
- package/dist/assets/{tree-actions-591V0MzS.js → tree-actions-C-1KQPVN.js} +1 -1
- package/dist/assets/{useAddCell-DcOC1-46.js → useAddCell-qRhXgYb3.js} +1 -1
- package/dist/assets/{useCellActionButton-BkFPMNO9.js → useCellActionButton-C__VM-4x.js} +1 -1
- package/dist/assets/{useDeleteCell-Co6v3eGu.js → useDeleteCell-xTUoM-wW.js} +1 -1
- package/dist/assets/{useDependencyPanelTab-B432gP68.js → useDependencyPanelTab-DbotHB0-.js} +1 -1
- package/dist/assets/{useNotebookActions-AeYQuSXc.js → useNotebookActions-DIcNvfxA.js} +1 -1
- package/dist/assets/{useRunCells-B0cXvtXO.js → useRunCells-Bno18PcV.js} +1 -1
- package/dist/assets/{useSplitCell-JMnmcTxP.js → useSplitCell-DigdAFdD.js} +1 -1
- package/dist/assets/{write-secret-modal-DgqX3xEF.js → write-secret-modal-BJCzwShk.js} +1 -1
- package/dist/index.html +23 -23
- package/package.json +1 -1
- package/src/components/data-table/__tests__/column-explorer.test.tsx +3 -2
- package/src/components/data-table/__tests__/column-visibility-dropdown.test.tsx +7 -3
- package/src/components/editor/connections/secret-combobox.tsx +3 -1
- package/src/components/editor/file-tree/renderers.tsx +4 -2
- package/src/components/forms/form.tsx +6 -4
- package/src/components/ui/input.tsx +5 -1
- package/src/plugins/core/RenderHTML.tsx +6 -4
- package/src/plugins/impl/code/any-language-editor.tsx +7 -4
- package/src/stories/cell.stories.tsx +15 -11
- package/dist/assets/RenderHTML-Djj3QRVt.js +0 -1
- 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 =
|
|
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
|
-
|
|
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};
|