@marimo-team/frontend 0.24.1-dev110 → 0.24.1-dev113
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/static-html/share-modal.tsx +3 -2
- 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 || "");
|
|
@@ -21,13 +21,14 @@ import { Input } from "../ui/input";
|
|
|
21
21
|
import { Tooltip } from "../ui/tooltip";
|
|
22
22
|
|
|
23
23
|
const BASE_URL = "https://static.marimo.app";
|
|
24
|
-
|
|
25
24
|
export const ShareStaticNotebookModal: React.FC<{
|
|
26
25
|
onClose: () => void;
|
|
27
26
|
}> = ({ onClose }) => {
|
|
28
27
|
const [slug, setSlug] = useState("");
|
|
29
28
|
const { exportAsHTML } = useRequestClient();
|
|
30
|
-
|
|
29
|
+
|
|
30
|
+
// Keep one random suffix for the lifetime of the modal.
|
|
31
|
+
// oxlint-disable-next-line react/purity
|
|
31
32
|
const randomHash = useMemo(() => Math.random().toString(36).slice(2, 6), []);
|
|
32
33
|
|
|
33
34
|
// Globally unique path
|
|
@@ -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};
|