loader.js 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218
  1. "use strict";
  2. var __values = (this && this.__values) || function(o) {
  3. var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
  4. if (m) return m.call(o);
  5. if (o && typeof o.length === "number") return {
  6. next: function () {
  7. if (o && i >= o.length) o = void 0;
  8. return { value: o && o[i++], done: !o };
  9. }
  10. };
  11. throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
  12. };
  13. var e_1, _a;
  14. Object.defineProperty(exports, "__esModule", { value: true });
  15. exports.CONFIG = exports.MathJax = exports.Loader = exports.PathFilters = exports.PackageError = exports.Package = void 0;
  16. var global_js_1 = require("./global.js");
  17. var package_js_1 = require("./package.js");
  18. var package_js_2 = require("./package.js");
  19. Object.defineProperty(exports, "Package", { enumerable: true, get: function () { return package_js_2.Package; } });
  20. Object.defineProperty(exports, "PackageError", { enumerable: true, get: function () { return package_js_2.PackageError; } });
  21. var FunctionList_js_1 = require("../util/FunctionList.js");
  22. exports.PathFilters = {
  23. source: function (data) {
  24. if (exports.CONFIG.source.hasOwnProperty(data.name)) {
  25. data.name = exports.CONFIG.source[data.name];
  26. }
  27. return true;
  28. },
  29. normalize: function (data) {
  30. var name = data.name;
  31. if (!name.match(/^(?:[a-z]+:\/)?\/|[a-z]:\\|\[/i)) {
  32. data.name = '[mathjax]/' + name.replace(/^\.\//, '');
  33. }
  34. if (data.addExtension && !name.match(/\.[^\/]+$/)) {
  35. data.name += '.js';
  36. }
  37. return true;
  38. },
  39. prefix: function (data) {
  40. var match;
  41. while ((match = data.name.match(/^\[([^\]]*)\]/))) {
  42. if (!exports.CONFIG.paths.hasOwnProperty(match[1]))
  43. break;
  44. data.name = exports.CONFIG.paths[match[1]] + data.name.substr(match[0].length);
  45. }
  46. return true;
  47. }
  48. };
  49. var Loader;
  50. (function (Loader) {
  51. var VERSION = global_js_1.MathJax.version;
  52. Loader.versions = new Map();
  53. function ready() {
  54. var e_2, _a;
  55. var names = [];
  56. for (var _i = 0; _i < arguments.length; _i++) {
  57. names[_i] = arguments[_i];
  58. }
  59. if (names.length === 0) {
  60. names = Array.from(package_js_1.Package.packages.keys());
  61. }
  62. var promises = [];
  63. try {
  64. for (var names_1 = __values(names), names_1_1 = names_1.next(); !names_1_1.done; names_1_1 = names_1.next()) {
  65. var name_1 = names_1_1.value;
  66. var extension = package_js_1.Package.packages.get(name_1) || new package_js_1.Package(name_1, true);
  67. promises.push(extension.promise);
  68. }
  69. }
  70. catch (e_2_1) { e_2 = { error: e_2_1 }; }
  71. finally {
  72. try {
  73. if (names_1_1 && !names_1_1.done && (_a = names_1.return)) _a.call(names_1);
  74. }
  75. finally { if (e_2) throw e_2.error; }
  76. }
  77. return Promise.all(promises);
  78. }
  79. Loader.ready = ready;
  80. function load() {
  81. var e_3, _a;
  82. var names = [];
  83. for (var _i = 0; _i < arguments.length; _i++) {
  84. names[_i] = arguments[_i];
  85. }
  86. if (names.length === 0) {
  87. return Promise.resolve();
  88. }
  89. var promises = [];
  90. var _loop_1 = function (name_2) {
  91. var extension = package_js_1.Package.packages.get(name_2);
  92. if (!extension) {
  93. extension = new package_js_1.Package(name_2);
  94. extension.provides(exports.CONFIG.provides[name_2]);
  95. }
  96. extension.checkNoLoad();
  97. promises.push(extension.promise.then(function () {
  98. if (!exports.CONFIG.versionWarnings)
  99. return;
  100. if (extension.isLoaded && !Loader.versions.has(package_js_1.Package.resolvePath(name_2))) {
  101. console.warn("No version information available for component ".concat(name_2));
  102. }
  103. }));
  104. };
  105. try {
  106. for (var names_2 = __values(names), names_2_1 = names_2.next(); !names_2_1.done; names_2_1 = names_2.next()) {
  107. var name_2 = names_2_1.value;
  108. _loop_1(name_2);
  109. }
  110. }
  111. catch (e_3_1) { e_3 = { error: e_3_1 }; }
  112. finally {
  113. try {
  114. if (names_2_1 && !names_2_1.done && (_a = names_2.return)) _a.call(names_2);
  115. }
  116. finally { if (e_3) throw e_3.error; }
  117. }
  118. package_js_1.Package.loadAll();
  119. return Promise.all(promises);
  120. }
  121. Loader.load = load;
  122. function preLoad() {
  123. var e_4, _a;
  124. var names = [];
  125. for (var _i = 0; _i < arguments.length; _i++) {
  126. names[_i] = arguments[_i];
  127. }
  128. try {
  129. for (var names_3 = __values(names), names_3_1 = names_3.next(); !names_3_1.done; names_3_1 = names_3.next()) {
  130. var name_3 = names_3_1.value;
  131. var extension = package_js_1.Package.packages.get(name_3);
  132. if (!extension) {
  133. extension = new package_js_1.Package(name_3, true);
  134. extension.provides(exports.CONFIG.provides[name_3]);
  135. }
  136. extension.loaded();
  137. }
  138. }
  139. catch (e_4_1) { e_4 = { error: e_4_1 }; }
  140. finally {
  141. try {
  142. if (names_3_1 && !names_3_1.done && (_a = names_3.return)) _a.call(names_3);
  143. }
  144. finally { if (e_4) throw e_4.error; }
  145. }
  146. }
  147. Loader.preLoad = preLoad;
  148. function defaultReady() {
  149. if (typeof exports.MathJax.startup !== 'undefined') {
  150. exports.MathJax.config.startup.ready();
  151. }
  152. }
  153. Loader.defaultReady = defaultReady;
  154. function getRoot() {
  155. var root = __dirname + '/../../es5';
  156. if (typeof document !== 'undefined') {
  157. var script = document.currentScript || document.getElementById('MathJax-script');
  158. if (script) {
  159. root = script.src.replace(/\/[^\/]*$/, '');
  160. }
  161. }
  162. return root;
  163. }
  164. Loader.getRoot = getRoot;
  165. function checkVersion(name, version, _type) {
  166. Loader.versions.set(package_js_1.Package.resolvePath(name), VERSION);
  167. if (exports.CONFIG.versionWarnings && version !== VERSION) {
  168. console.warn("Component ".concat(name, " uses ").concat(version, " of MathJax; version in use is ").concat(VERSION));
  169. return true;
  170. }
  171. return false;
  172. }
  173. Loader.checkVersion = checkVersion;
  174. Loader.pathFilters = new FunctionList_js_1.FunctionList();
  175. Loader.pathFilters.add(exports.PathFilters.source, 0);
  176. Loader.pathFilters.add(exports.PathFilters.normalize, 10);
  177. Loader.pathFilters.add(exports.PathFilters.prefix, 20);
  178. })(Loader = exports.Loader || (exports.Loader = {}));
  179. exports.MathJax = global_js_1.MathJax;
  180. if (typeof exports.MathJax.loader === 'undefined') {
  181. (0, global_js_1.combineDefaults)(exports.MathJax.config, 'loader', {
  182. paths: {
  183. mathjax: Loader.getRoot()
  184. },
  185. source: {},
  186. dependencies: {},
  187. provides: {},
  188. load: [],
  189. ready: Loader.defaultReady.bind(Loader),
  190. failed: function (error) { return console.log("MathJax(".concat(error.package || '?', "): ").concat(error.message)); },
  191. require: null,
  192. pathFilters: [],
  193. versionWarnings: true
  194. });
  195. (0, global_js_1.combineWithMathJax)({
  196. loader: Loader
  197. });
  198. try {
  199. for (var _b = __values(exports.MathJax.config.loader.pathFilters), _c = _b.next(); !_c.done; _c = _b.next()) {
  200. var filter = _c.value;
  201. if (Array.isArray(filter)) {
  202. Loader.pathFilters.add(filter[0], filter[1]);
  203. }
  204. else {
  205. Loader.pathFilters.add(filter);
  206. }
  207. }
  208. }
  209. catch (e_1_1) { e_1 = { error: e_1_1 }; }
  210. finally {
  211. try {
  212. if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
  213. }
  214. finally { if (e_1) throw e_1.error; }
  215. }
  216. }
  217. exports.CONFIG = exports.MathJax.config.loader;
  218. //# sourceMappingURL=loader.js.map