import { KnownCellOutputMimeTypes } from '@curvenote/blocks/dist/blocks/types/jupyter';
import type {
MinifiedMimeBundle,
MinifiedMimePayload,
MinifiedOutput,
} from '@curvenote/nbtx/dist/minify/types';
import Stream from './stream';
import Error from './error';
import Ansi from 'ansi-to-react';
/**
* https://jupyterbook.org/content/code-outputs.html#render-priority
*
* nb_render_priority:
html:
- "application/vnd.jupyter.widget-view+json"
- "application/javascript"
- "text/html"
- "image/svg+xml"
- "image/png"
- "image/jpeg"
- "text/markdown"
- "text/latex"
- "text/plain"
*/
const RENDER_PRIORITY = [
KnownCellOutputMimeTypes.ImagePng,
KnownCellOutputMimeTypes.ImageJpeg,
KnownCellOutputMimeTypes.ImageGif,
KnownCellOutputMimeTypes.ImageBmp,
];
function findSafeMimeOutputs(output: MinifiedOutput): {
image?: MinifiedMimePayload;
text?: MinifiedMimePayload;
} {
const data: MinifiedMimeBundle = output.data as MinifiedMimeBundle;
const image = RENDER_PRIORITY.reduce((acc: MinifiedMimePayload | undefined, mimetype) => {
if (acc) return acc;
if (data && data[mimetype]) return data[mimetype];
return undefined;
}, undefined);
const text = data && data['text/plain'];
return { image, text };
}
function OutputImage({ image, text }: { image: MinifiedMimePayload; text?: MinifiedMimePayload }) {
return ;
}
function SafeOutput({ output }: { output: MinifiedOutput }) {
switch (output.output_type) {
case 'stream':
return