UNPKG

litvis-integration-mume

Version:

Enables litvis functionality in mume and markdown-preview-enhanced

116 lines 4.63 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.enhanceWithLitvisVegaBlockKeywords = void 0; const litvis_1 = require("litvis"); const yamljs_1 = __importDefault(require("yamljs")); /** * Search for all vega and vega-lite blocks and * apply v, r and j keywords to them just as if it works for ```elm * @param $ * @param processedNarrative * @param cache */ const enhanceWithLitvisVegaBlockKeywords = ($, processedNarrative, cache) => __awaiter(void 0, void 0, void 0, function* () { $('[data-role="codeBlock"]').each((i, container) => { const $container = $(container); if ($container.data("executor")) { return; } const info = $container.data("parsedInfo"); if (!info) { return; } const normalizedInfo = $container.data("normalizedInfo"); if (normalizedInfo.language !== "vega" && normalizedInfo.language !== "vega-lite") { return; } const derivatives = (0, litvis_1.extractAttributeDerivatives)(info.attributes); if (!derivatives) { return; } const text = $container.text(); const spec = text.trim(); let data; let dataParseError; try { if (spec[0] !== "{") { data = yamljs_1.default.parse(spec); } else { data = JSON.parse(spec); } } catch (e) { dataParseError = e; } // const arrayOf$results = []; derivatives.outputFormats.forEach((outputFormat) => { if (derivatives.outputExpressionsByFormat[outputFormat]) { return; } let $result; let resultNormalizedInfo; let resultText; switch (outputFormat) { case "r": $result = $(`<pre data-role="codeBlock" />`); resultNormalizedInfo = { language: "", attributes: {}, style: "display: inline-block", }; resultText = text; break; case "j": $result = $(`<pre data-role="codeBlock" />`); resultNormalizedInfo = { language: "json", attributes: {}, style: "display: inline-block", }; if (dataParseError) { resultText = dataParseError.message; } else { resultText = JSON.stringify(data, null, 2); } break; case "v": { $result = $(`<pre data-role="codeBlock" />`); resultNormalizedInfo = { language: normalizedInfo.language, attributes: { interactive: normalizedInfo.attributes.interactive, style: "display: inline-block", }, }; resultText = text; break; } } if (!$result) { return; } // const stringifiedNormalizedInfo = JSON.stringify(resultNormalizedInfo); $result.text(resultText); $result.data("normalizedInfo", resultNormalizedInfo); $container.before($result); }); $container.remove(); }); }); exports.enhanceWithLitvisVegaBlockKeywords = enhanceWithLitvisVegaBlockKeywords; //# sourceMappingURL=enhanceWithLitvisVegaBlockKeywords.js.map