litvis-integration-mume
Version:
Enables litvis functionality in mume and markdown-preview-enhanced
116 lines • 4.63 kB
JavaScript
;
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