UNPKG

thebe-core

Version:

Typescript based core functionality for Thebe

55 lines 2.16 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.stripWidgets = exports.placeholder = exports.isMimeBundle = exports.ensureString = exports.shortId = void 0; const tslib_1 = require("tslib"); const nanoid_1 = require("nanoid"); const manager_1 = require("./manager"); const nanoid = (0, nanoid_1.customAlphabet)('1234567890abcdef', 8); /** * Creates a compact random id for use in runtime objects * * @returns string */ function shortId() { return nanoid(); } exports.shortId = shortId; function ensureString(maybeString) { if (Array.isArray(maybeString)) return maybeString.join('\n'); return maybeString; } exports.ensureString = ensureString; function isMimeBundle({ output_type }) { return output_type === 'display_data' || output_type === 'execute_result'; } exports.isMimeBundle = isMimeBundle; function placeholder(plainText) { return ` <div class="thebe-ipywidgets-placeholder"> <div class="thebe-ipywidgets-placeholder-image"></div> <div class="thebe-ipywidgets-placeholder-message"><code>ipywidgets</code> - a Jupyter kernel connection is required to fully display this output.</div> ${plainText && `<pre>${plainText}</pre>`} </div> `; } exports.placeholder = placeholder; function stripWidgets(outputs, hideWidgets = true, placeholderFn = placeholder) { return outputs.map((output) => { if (!isMimeBundle(output)) return output; const _a = output.data, _b = manager_1.WIDGET_MIMETYPE, widgets = _a[_b], others = tslib_1.__rest(_a, [typeof _b === "symbol" ? _b : _b + ""]); if (!widgets) return output; let data = output.data; if (hideWidgets) data = Object.assign({}, others); if (placeholderFn && !('text/html' in data)) // if there is not already an html bundle, add a placeholder to hide the plain/text field data['text/html'] = placeholderFn(ensureString(data['text/plain'])); const stripped = Object.assign(Object.assign({}, output), { data }); return stripped; }); } exports.stripWidgets = stripWidgets; //# sourceMappingURL=utils.js.map