import sagecell from "./sagecell";
import cell from "./cell";
import "./jquery-global";
import { console } from "./console";
(function () {
var ga = document.createElement("script");
ga.type = "text/javascript";
ga.async = true;
ga.src =
("https:" == document.location.protocol
? "https://ssl"
: "http://www") + ".google-analytics.com/ga.js";
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(ga, s);
})();
function makeResolvablePromise() {
const ret = { promise: null, resolve: null, state: "pending" };
ret.promise = new Promise((resolve) => {
ret.resolve = (...args) => {
ret.state = "fulfilled";
return resolve(...args);
};
});
return ret;
}
Object.assign(sagecell, {
templates: {
minimal: {
editor: "textarea-readonly",
hide: ["editor", "files", "permalink"],
},
restricted: {
editor: "codemirror-readonly",
hide: ["files", "permalink"],
},
},
allLanguages: [
"sage",
"gap",
"gp",
"html",
"macaulay2",
"maxima",
"octave",
"python",
"r",
"singular",
],
makeSagecell: function (args) {
if (sagecell._initPromise.state === "pending") {
const ret = {};
sagecell._initPromise.promise
.then(() => {
const cellInfo = window.sagecell._makeSagecell(args);
Object.assign(ret, cellInfo);
})
.catch((e) => {
console.warn("Encountered error in makeSagecell", e);
});
return ret;
} else {
return window.sagecell._makeSagecell(args);
}
},
_initPromise: makeResolvablePromise(),
quietMode: false,
});
window.singlecell = sagecell;
window.singlecell.makeSinglecell = window.singlecell.makeSagecell;
function linkKeyToIndex(key) {
sagecell.linkKeys = sagecell.linkKeys || {};
if (key in sagecell.linkKeys) {
return sagecell.linkKeys[key];
}
sagecell.kernels = sagecell.kernels || [];
const index = sagecell.kernels.push(null) - 1;
sagecell.linkKeys[key] = index;
return index;
}
sagecell._makeSagecell = function (args) {
console.info("sagecell.makeSagecell called");
if (args.linkKey) {
args = Object.assign({}, args, { linked: true });
}
var cellInfo = {};
if (args.linked && args.linkKey) {
cell.make(args, cellInfo, linkKeyToIndex(args.linkKey));
} else {
cell.make(args, cellInfo);
}
console.info("sagecell.makeSagecell finished");
return cellInfo;
};
sagecell.deleteSagecell = function (cellInfo) {
cell.delete(cellInfo);
};
sagecell.moveInputForm = function (cellInfo) {
cell.moveInputForm(cellInfo);
};
sagecell.restoreInputForm = function (cellInfo) {
cell.restoreInputForm(cellInfo);
};
sagecell._initPromise.resolve();
export default sagecell;
export { sagecell };