Options.js 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255
  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 __read = (this && this.__read) || function (o, n) {
  14. var m = typeof Symbol === "function" && o[Symbol.iterator];
  15. if (!m) return o;
  16. var i = m.call(o), r, ar = [], e;
  17. try {
  18. while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
  19. }
  20. catch (error) { e = { error: error }; }
  21. finally {
  22. try {
  23. if (r && !r.done && (m = i["return"])) m.call(i);
  24. }
  25. finally { if (e) throw e.error; }
  26. }
  27. return ar;
  28. };
  29. var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
  30. if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
  31. if (ar || !(i in from)) {
  32. if (!ar) ar = Array.prototype.slice.call(from, 0, i);
  33. ar[i] = from[i];
  34. }
  35. }
  36. return to.concat(ar || Array.prototype.slice.call(from));
  37. };
  38. Object.defineProperty(exports, "__esModule", { value: true });
  39. exports.lookup = exports.separateOptions = exports.selectOptionsFromKeys = exports.selectOptions = exports.userOptions = exports.defaultOptions = exports.insert = exports.copy = exports.keys = exports.makeArray = exports.expandable = exports.Expandable = exports.OPTIONS = exports.REMOVE = exports.APPEND = exports.isObject = void 0;
  40. var OBJECT = {}.constructor;
  41. function isObject(obj) {
  42. return typeof obj === 'object' && obj !== null &&
  43. (obj.constructor === OBJECT || obj.constructor === Expandable);
  44. }
  45. exports.isObject = isObject;
  46. exports.APPEND = '[+]';
  47. exports.REMOVE = '[-]';
  48. exports.OPTIONS = {
  49. invalidOption: 'warn',
  50. optionError: function (message, _key) {
  51. if (exports.OPTIONS.invalidOption === 'fatal') {
  52. throw new Error(message);
  53. }
  54. console.warn('MathJax: ' + message);
  55. }
  56. };
  57. var Expandable = (function () {
  58. function Expandable() {
  59. }
  60. return Expandable;
  61. }());
  62. exports.Expandable = Expandable;
  63. function expandable(def) {
  64. return Object.assign(Object.create(Expandable.prototype), def);
  65. }
  66. exports.expandable = expandable;
  67. function makeArray(x) {
  68. return Array.isArray(x) ? x : [x];
  69. }
  70. exports.makeArray = makeArray;
  71. function keys(def) {
  72. if (!def) {
  73. return [];
  74. }
  75. return Object.keys(def).concat(Object.getOwnPropertySymbols(def));
  76. }
  77. exports.keys = keys;
  78. function copy(def) {
  79. var e_1, _a;
  80. var props = {};
  81. try {
  82. for (var _b = __values(keys(def)), _c = _b.next(); !_c.done; _c = _b.next()) {
  83. var key = _c.value;
  84. var prop = Object.getOwnPropertyDescriptor(def, key);
  85. var value = prop.value;
  86. if (Array.isArray(value)) {
  87. prop.value = insert([], value, false);
  88. }
  89. else if (isObject(value)) {
  90. prop.value = copy(value);
  91. }
  92. if (prop.enumerable) {
  93. props[key] = prop;
  94. }
  95. }
  96. }
  97. catch (e_1_1) { e_1 = { error: e_1_1 }; }
  98. finally {
  99. try {
  100. if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
  101. }
  102. finally { if (e_1) throw e_1.error; }
  103. }
  104. return Object.defineProperties(def.constructor === Expandable ? expandable({}) : {}, props);
  105. }
  106. exports.copy = copy;
  107. function insert(dst, src, warn) {
  108. var e_2, _a;
  109. if (warn === void 0) { warn = true; }
  110. var _loop_1 = function (key) {
  111. if (warn && dst[key] === undefined && dst.constructor !== Expandable) {
  112. if (typeof key === 'symbol') {
  113. key = key.toString();
  114. }
  115. exports.OPTIONS.optionError("Invalid option \"".concat(key, "\" (no default value)."), key);
  116. return "continue";
  117. }
  118. var sval = src[key], dval = dst[key];
  119. if (isObject(sval) && dval !== null &&
  120. (typeof dval === 'object' || typeof dval === 'function')) {
  121. var ids = keys(sval);
  122. if (Array.isArray(dval) &&
  123. ((ids.length === 1 && (ids[0] === exports.APPEND || ids[0] === exports.REMOVE) && Array.isArray(sval[ids[0]])) ||
  124. (ids.length === 2 && ids.sort().join(',') === exports.APPEND + ',' + exports.REMOVE &&
  125. Array.isArray(sval[exports.APPEND]) && Array.isArray(sval[exports.REMOVE])))) {
  126. if (sval[exports.REMOVE]) {
  127. dval = dst[key] = dval.filter(function (x) { return sval[exports.REMOVE].indexOf(x) < 0; });
  128. }
  129. if (sval[exports.APPEND]) {
  130. dst[key] = __spreadArray(__spreadArray([], __read(dval), false), __read(sval[exports.APPEND]), false);
  131. }
  132. }
  133. else {
  134. insert(dval, sval, warn);
  135. }
  136. }
  137. else if (Array.isArray(sval)) {
  138. dst[key] = [];
  139. insert(dst[key], sval, false);
  140. }
  141. else if (isObject(sval)) {
  142. dst[key] = copy(sval);
  143. }
  144. else {
  145. dst[key] = sval;
  146. }
  147. };
  148. try {
  149. for (var _b = __values(keys(src)), _c = _b.next(); !_c.done; _c = _b.next()) {
  150. var key = _c.value;
  151. _loop_1(key);
  152. }
  153. }
  154. catch (e_2_1) { e_2 = { error: e_2_1 }; }
  155. finally {
  156. try {
  157. if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
  158. }
  159. finally { if (e_2) throw e_2.error; }
  160. }
  161. return dst;
  162. }
  163. exports.insert = insert;
  164. function defaultOptions(options) {
  165. var defs = [];
  166. for (var _i = 1; _i < arguments.length; _i++) {
  167. defs[_i - 1] = arguments[_i];
  168. }
  169. defs.forEach(function (def) { return insert(options, def, false); });
  170. return options;
  171. }
  172. exports.defaultOptions = defaultOptions;
  173. function userOptions(options) {
  174. var defs = [];
  175. for (var _i = 1; _i < arguments.length; _i++) {
  176. defs[_i - 1] = arguments[_i];
  177. }
  178. defs.forEach(function (def) { return insert(options, def, true); });
  179. return options;
  180. }
  181. exports.userOptions = userOptions;
  182. function selectOptions(options) {
  183. var e_3, _a;
  184. var keys = [];
  185. for (var _i = 1; _i < arguments.length; _i++) {
  186. keys[_i - 1] = arguments[_i];
  187. }
  188. var subset = {};
  189. try {
  190. for (var keys_1 = __values(keys), keys_1_1 = keys_1.next(); !keys_1_1.done; keys_1_1 = keys_1.next()) {
  191. var key = keys_1_1.value;
  192. if (options.hasOwnProperty(key)) {
  193. subset[key] = options[key];
  194. }
  195. }
  196. }
  197. catch (e_3_1) { e_3 = { error: e_3_1 }; }
  198. finally {
  199. try {
  200. if (keys_1_1 && !keys_1_1.done && (_a = keys_1.return)) _a.call(keys_1);
  201. }
  202. finally { if (e_3) throw e_3.error; }
  203. }
  204. return subset;
  205. }
  206. exports.selectOptions = selectOptions;
  207. function selectOptionsFromKeys(options, object) {
  208. return selectOptions.apply(void 0, __spreadArray([options], __read(Object.keys(object)), false));
  209. }
  210. exports.selectOptionsFromKeys = selectOptionsFromKeys;
  211. function separateOptions(options) {
  212. var e_4, _a, e_5, _b;
  213. var objects = [];
  214. for (var _i = 1; _i < arguments.length; _i++) {
  215. objects[_i - 1] = arguments[_i];
  216. }
  217. var results = [];
  218. try {
  219. for (var objects_1 = __values(objects), objects_1_1 = objects_1.next(); !objects_1_1.done; objects_1_1 = objects_1.next()) {
  220. var object = objects_1_1.value;
  221. var exists = {}, missing = {};
  222. try {
  223. for (var _c = (e_5 = void 0, __values(Object.keys(options || {}))), _d = _c.next(); !_d.done; _d = _c.next()) {
  224. var key = _d.value;
  225. (object[key] === undefined ? missing : exists)[key] = options[key];
  226. }
  227. }
  228. catch (e_5_1) { e_5 = { error: e_5_1 }; }
  229. finally {
  230. try {
  231. if (_d && !_d.done && (_b = _c.return)) _b.call(_c);
  232. }
  233. finally { if (e_5) throw e_5.error; }
  234. }
  235. results.push(exists);
  236. options = missing;
  237. }
  238. }
  239. catch (e_4_1) { e_4 = { error: e_4_1 }; }
  240. finally {
  241. try {
  242. if (objects_1_1 && !objects_1_1.done && (_a = objects_1.return)) _a.call(objects_1);
  243. }
  244. finally { if (e_4) throw e_4.error; }
  245. }
  246. results.unshift(options);
  247. return results;
  248. }
  249. exports.separateOptions = separateOptions;
  250. function lookup(name, lookup, def) {
  251. if (def === void 0) { def = null; }
  252. return (lookup.hasOwnProperty(name) ? lookup[name] : def);
  253. }
  254. exports.lookup = lookup;
  255. //# sourceMappingURL=Options.js.map