@bokeh/bokehjs
Version:
Interactive, novel data visualization
66 lines • 2.29 kB
JavaScript
import { Document } from "../document";
import { add_document_standalone } from "../embed/standalone";
import { dom_ready, contains } from "../core/dom";
import { isString, isArray } from "../core/util/types";
export async function show(obj, target) {
const doc = (() => {
if (obj instanceof Document) {
return obj;
}
else {
const doc = new Document();
for (const item of isArray(obj) ? obj : [obj]) {
doc.add_root(item);
}
return doc;
}
})();
const script = document.currentScript; // This needs to be evaluated before any `await` to avoid `null` value.
await dom_ready();
const element = (() => {
if (target == null) {
if (script != null && contains(document.body, script)) {
const parent = script.parentNode;
if (parent instanceof HTMLElement || parent instanceof DocumentFragment) {
return parent;
}
}
return document.body;
}
else if (isString(target)) {
const found = document.querySelector(target);
if (found instanceof HTMLElement) {
if (found.shadowRoot != null) {
return found.shadowRoot;
}
else {
return found;
}
}
else {
throw new Error(`'${target}' selector didn't match any elements`);
}
}
else if (target instanceof HTMLElement) {
return target;
}
else if (typeof $ !== "undefined" && target instanceof $) {
return target[0];
}
else {
throw new Error("target should be a HTMLElement, string selector, $ or null");
}
})();
const view_manager = await add_document_standalone(doc, element);
return new Promise((resolve, _reject) => {
const views = [...view_manager];
const result = isArray(obj) || obj instanceof Document ? views : views[0];
if (doc.is_idle) {
resolve(result);
}
else {
doc.idle.connect(() => resolve(result));
}
});
}
//# sourceMappingURL=io.js.map