NodeMixin.js 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. "use strict";
  2. var __extends = (this && this.__extends) || (function () {
  3. var extendStatics = function (d, b) {
  4. extendStatics = Object.setPrototypeOf ||
  5. ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
  6. function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
  7. return extendStatics(d, b);
  8. };
  9. return function (d, b) {
  10. if (typeof b !== "function" && b !== null)
  11. throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
  12. extendStatics(d, b);
  13. function __() { this.constructor = d; }
  14. d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
  15. };
  16. })();
  17. var __assign = (this && this.__assign) || function () {
  18. __assign = Object.assign || function(t) {
  19. for (var s, i = 1, n = arguments.length; i < n; i++) {
  20. s = arguments[i];
  21. for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
  22. t[p] = s[p];
  23. }
  24. return t;
  25. };
  26. return __assign.apply(this, arguments);
  27. };
  28. Object.defineProperty(exports, "__esModule", { value: true });
  29. exports.NodeMixin = exports.NodeMixinOptions = void 0;
  30. var Options_js_1 = require("../util/Options.js");
  31. exports.NodeMixinOptions = {
  32. badCSS: true,
  33. badSizes: true,
  34. };
  35. function NodeMixin(Base, options) {
  36. var _a;
  37. if (options === void 0) { options = {}; }
  38. options = (0, Options_js_1.userOptions)((0, Options_js_1.defaultOptions)({}, exports.NodeMixinOptions), options);
  39. return _a = (function (_super) {
  40. __extends(NodeAdaptor, _super);
  41. function NodeAdaptor() {
  42. var args = [];
  43. for (var _i = 0; _i < arguments.length; _i++) {
  44. args[_i] = arguments[_i];
  45. }
  46. var _this = _super.call(this, args[0]) || this;
  47. var CLASS = _this.constructor;
  48. _this.options = (0, Options_js_1.userOptions)((0, Options_js_1.defaultOptions)({}, CLASS.OPTIONS), args[1]);
  49. return _this;
  50. }
  51. NodeAdaptor.prototype.fontSize = function (node) {
  52. return (options.badCSS ? this.options.fontSize : _super.prototype.fontSize.call(this, node));
  53. };
  54. NodeAdaptor.prototype.fontFamily = function (node) {
  55. return (options.badCSS ? this.options.fontFamily : _super.prototype.fontFamily.call(this, node));
  56. };
  57. NodeAdaptor.prototype.nodeSize = function (node, em, local) {
  58. if (em === void 0) { em = 1; }
  59. if (local === void 0) { local = null; }
  60. if (!options.badSizes) {
  61. return _super.prototype.nodeSize.call(this, node, em, local);
  62. }
  63. var text = this.textContent(node);
  64. var non = Array.from(text.replace(NodeAdaptor.cjkPattern, '')).length;
  65. var CJK = Array.from(text).length - non;
  66. return [
  67. CJK * this.options.cjkCharWidth + non * this.options.unknownCharWidth,
  68. this.options.unknownCharHeight
  69. ];
  70. };
  71. NodeAdaptor.prototype.nodeBBox = function (node) {
  72. return (options.badSizes ? { left: 0, right: 0, top: 0, bottom: 0 } : _super.prototype.nodeBBox.call(this, node));
  73. };
  74. return NodeAdaptor;
  75. }(Base)),
  76. _a.OPTIONS = __assign(__assign({}, (options.badCSS ? {
  77. fontSize: 16,
  78. fontFamily: 'Times',
  79. } : {})), (options.badSizes ? {
  80. cjkCharWidth: 1,
  81. unknownCharWidth: .6,
  82. unknownCharHeight: .8,
  83. } : {})),
  84. _a.cjkPattern = new RegExp([
  85. '[',
  86. '\u1100-\u115F',
  87. '\u2329\u232A',
  88. '\u2E80-\u303E',
  89. '\u3040-\u3247',
  90. '\u3250-\u4DBF',
  91. '\u4E00-\uA4C6',
  92. '\uA960-\uA97C',
  93. '\uAC00-\uD7A3',
  94. '\uF900-\uFAFF',
  95. '\uFE10-\uFE19',
  96. '\uFE30-\uFE6B',
  97. '\uFF01-\uFF60\uFFE0-\uFFE6',
  98. "\uD82C\uDC00-\uD82C\uDC01",
  99. "\uD83C\uDE00-\uD83C\uDE51",
  100. "\uD840\uDC00-\uD8BF\uDFFD",
  101. ']'
  102. ].join(''), 'gu'),
  103. _a;
  104. }
  105. exports.NodeMixin = NodeMixin;
  106. //# sourceMappingURL=NodeMixin.js.map