mathpix-markdown-it 2.0.38 → 2.0.40

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (97) hide show
  1. package/README.md +3 -0
  2. package/doc/changelog.md +128 -0
  3. package/es5/browser/auto-render.js +1 -1
  4. package/es5/bundle.js +4 -4
  5. package/es5/index.js +4 -4
  6. package/lib/components/mathpix-markdown/index.js +2 -1
  7. package/lib/components/mathpix-markdown/index.js.map +1 -1
  8. package/lib/index.d.ts +2 -1
  9. package/lib/index.js +3 -1
  10. package/lib/index.js.map +1 -1
  11. package/lib/markdown/common/consts.d.ts +5 -0
  12. package/lib/markdown/common/consts.js +17 -5
  13. package/lib/markdown/common/consts.js.map +1 -1
  14. package/lib/markdown/common/convert-math-to-html.d.ts +10 -0
  15. package/lib/markdown/common/convert-math-to-html.js +163 -41
  16. package/lib/markdown/common/convert-math-to-html.js.map +1 -1
  17. package/lib/markdown/common/labels.d.ts +9 -1
  18. package/lib/markdown/common/labels.js +82 -37
  19. package/lib/markdown/common/labels.js.map +1 -1
  20. package/lib/markdown/common/reset-mmd-state.d.ts +4 -0
  21. package/lib/markdown/common/reset-mmd-state.js +30 -0
  22. package/lib/markdown/common/reset-mmd-state.js.map +1 -0
  23. package/lib/markdown/common.d.ts +3 -0
  24. package/lib/markdown/common.js +34 -23
  25. package/lib/markdown/common.js.map +1 -1
  26. package/lib/markdown/highlight/highlight-math-token.js +1 -0
  27. package/lib/markdown/highlight/highlight-math-token.js.map +1 -1
  28. package/lib/markdown/index.js +22 -8
  29. package/lib/markdown/index.js.map +1 -1
  30. package/lib/markdown/mathpix-markdown-plugins.js +21 -1
  31. package/lib/markdown/mathpix-markdown-plugins.js.map +1 -1
  32. package/lib/markdown/md-block-rule/begin-tabular/common.d.ts +15 -1
  33. package/lib/markdown/md-block-rule/begin-tabular/common.js +57 -11
  34. package/lib/markdown/md-block-rule/begin-tabular/common.js.map +1 -1
  35. package/lib/markdown/md-block-rule/begin-tabular/index.d.ts +3 -0
  36. package/lib/markdown/md-block-rule/begin-tabular/index.js +79 -20
  37. package/lib/markdown/md-block-rule/begin-tabular/index.js.map +1 -1
  38. package/lib/markdown/md-block-rule/begin-tabular/multi-column-row.d.ts +3 -1
  39. package/lib/markdown/md-block-rule/begin-tabular/multi-column-row.js +15 -9
  40. package/lib/markdown/md-block-rule/begin-tabular/multi-column-row.js.map +1 -1
  41. package/lib/markdown/md-block-rule/begin-tabular/parse-tabular.d.ts +2 -1
  42. package/lib/markdown/md-block-rule/begin-tabular/parse-tabular.js +177 -73
  43. package/lib/markdown/md-block-rule/begin-tabular/parse-tabular.js.map +1 -1
  44. package/lib/markdown/md-block-rule/begin-tabular/sub-cell.d.ts +1 -0
  45. package/lib/markdown/md-block-rule/begin-tabular/sub-cell.js +11 -23
  46. package/lib/markdown/md-block-rule/begin-tabular/sub-cell.js.map +1 -1
  47. package/lib/markdown/md-block-rule/begin-tabular/sub-code.d.ts +0 -6
  48. package/lib/markdown/md-block-rule/begin-tabular/sub-code.js +10 -21
  49. package/lib/markdown/md-block-rule/begin-tabular/sub-code.js.map +1 -1
  50. package/lib/markdown/md-block-rule/begin-tabular/sub-math.d.ts +13 -5
  51. package/lib/markdown/md-block-rule/begin-tabular/sub-math.js +132 -93
  52. package/lib/markdown/md-block-rule/begin-tabular/sub-math.js.map +1 -1
  53. package/lib/markdown/md-block-rule/begin-tabular/sub-tabular.d.ts +3 -1
  54. package/lib/markdown/md-block-rule/begin-tabular/sub-tabular.js +44 -36
  55. package/lib/markdown/md-block-rule/begin-tabular/sub-tabular.js.map +1 -1
  56. package/lib/markdown/md-block-rule/begin-tabular/tabular-td.d.ts +11 -3
  57. package/lib/markdown/md-block-rule/begin-tabular/tabular-td.js +207 -57
  58. package/lib/markdown/md-block-rule/begin-tabular/tabular-td.js.map +1 -1
  59. package/lib/markdown/md-block-rule/mmd-html-block.js +11 -2
  60. package/lib/markdown/md-block-rule/mmd-html-block.js.map +1 -1
  61. package/lib/markdown/md-core-rules/set-positions.js +90 -15
  62. package/lib/markdown/md-core-rules/set-positions.js.map +1 -1
  63. package/lib/markdown/md-inline-rule/core-inline.js +41 -9
  64. package/lib/markdown/md-inline-rule/core-inline.js.map +1 -1
  65. package/lib/markdown/md-inline-rule/tabular.js +5 -2
  66. package/lib/markdown/md-inline-rule/tabular.js.map +1 -1
  67. package/lib/markdown/md-latex-footnotes/block-rule.js +72 -3
  68. package/lib/markdown/md-latex-footnotes/block-rule.js.map +1 -1
  69. package/lib/markdown/md-latex-lists-env/re-level.js +39 -22
  70. package/lib/markdown/md-latex-lists-env/re-level.js.map +1 -1
  71. package/lib/markdown/md-renderer-rules/render-tabular.js +115 -36
  72. package/lib/markdown/md-renderer-rules/render-tabular.js.map +1 -1
  73. package/lib/markdown/md-svg-to-base64/base64.js +8 -8
  74. package/lib/markdown/md-svg-to-base64/base64.js.map +1 -1
  75. package/lib/markdown/md-theorem/block-rule.js +10 -6
  76. package/lib/markdown/md-theorem/block-rule.js.map +1 -1
  77. package/lib/markdown/mdPluginRaw.js +24 -3
  78. package/lib/markdown/mdPluginRaw.js.map +1 -1
  79. package/lib/markdown/mdPluginTOC.js +30 -4
  80. package/lib/markdown/mdPluginTOC.js.map +1 -1
  81. package/lib/markdown/mdPluginTableTabular.js +46 -1
  82. package/lib/markdown/mdPluginTableTabular.js.map +1 -1
  83. package/lib/markdown/utils.js +3 -0
  84. package/lib/markdown/utils.js.map +1 -1
  85. package/lib/mathjax/index.js +3 -3
  86. package/lib/mathjax/index.js.map +1 -1
  87. package/lib/mathpix-markdown-model/index.d.ts +4 -0
  88. package/lib/mathpix-markdown-model/index.js +2 -1
  89. package/lib/mathpix-markdown-model/index.js.map +1 -1
  90. package/package.json +1 -1
  91. package/pr-specs/2026-04-global-state-cleanup-and-perf.md +212 -0
  92. package/pr-specs/2026-04-optimize-tabular-parsing.md +211 -0
  93. package/pr-specs/2026-05-footnote-perf-and-parser-invariants.md +246 -0
  94. package/pr-specs/2026-05-tabular-vertical-align-bracket.md +270 -0
  95. package/lib/markdown/mdPluginSeparateForBlock.d.ts +0 -2
  96. package/lib/markdown/mdPluginSeparateForBlock.js +0 -209
  97. package/lib/markdown/mdPluginSeparateForBlock.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"sub-math.js","sourceRoot":"","sources":["../../../../src/markdown/md-block-rule/begin-tabular/sub-math.ts"],"names":[],"mappings":";;;AAAA,mCAAwD;AACxD,iDAAmD;AACnD,qCAAiF;AACjF,uCAAmD;AACnD,8CAI6B;AAG7B,IAAI,SAAS,GAAoB,EAAE,CAAC;AAE7B,IAAM,iBAAiB,GAAG;IAC/B,SAAS,GAAG,EAAE,CAAC;AACjB,CAAC,CAAC;AAFW,QAAA,iBAAiB,qBAE5B;AAEK,IAAM,aAAa,GAAG,UAAC,IAAc;IAC1C,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACtB,CAAC,CAAA;AAFY,QAAA,aAAa,iBAEzB;AAEM,IAAM,mBAAmB,GAAG,UAAC,GAAW,EAAE,CAAS;IACxD,IAAI,UAAU,GAAW,GAAG,CAAC;IAC7B,GAAG,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IACjB,IAAI,KAAK,GAAmB,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,sCAA6B,CAAC,CAAC;IAC9E,KAAK,GAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,kCAAyB,CAAC,CAAC;IACvE,IAAI,CAAC,KAAK,EAAE;QACV,OAAO,EAAE,CAAC;KACX;4BACQ,CAAC;QACR,IAAI,OAAO,GAAW,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACrE,IAAM,KAAK,GAAW,SAAS,CAAC,SAAS,CAAC,UAAA,IAAI,IAAI,OAAA,IAAI,CAAC,EAAE,KAAK,OAAO,EAAnB,CAAmB,CAAC,CAAC;QACvE,IAAI,KAAK,IAAI,CAAC,EAAE;YACd,IAAI,EAAE,GAAW,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9C,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;SAC1G;;IANH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE;gBAA5B,CAAC;KAOT;IACD,UAAU,GAAG,IAAA,mBAAU,EAAC,UAAU,CAAC,CAAC;IACpC,OAAO,UAAU,CAAC;AACpB,CAAC,CAAC;AAlBW,QAAA,mBAAmB,uBAkB9B;AAEK,IAAM,UAAU,GAAG,UAAC,GAAW,EAAE,QAAY;;IAAZ,yBAAA,EAAA,YAAY;IAClD,IAAM,KAAK,GAAqB,GAAG;SAChC,KAAK,CAAC,QAAQ,CAAC;SACf,KAAK,CAAC,wFAAwF,CAAC,CAAC;IACnG,IAAI,YAAY,GAAG,CAAC,CAAC,CAAC;IACtB,IAAI,KAAK,EAAE;QACT,IAAI,cAAc,GAAW,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC;QACpD,IAAI,YAAY,GAAW,cAAc,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QAC5D,IAAI,SAAS,SAAQ,CAAC;QACtB,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE;YACxB,SAAS,GAAG,OAAO,CAAC;SACrB;aAAM,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,EAAE;YAC7B,SAAS,GAAG,KAAK,CAAC;SACnB;aAAM,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE;YAC/B,SAAS,GAAG,OAAO,CAAC;SACrB;aAAM,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,EAAE;YAC7B,SAAS,GAAG,KAAK,CAAC;SACnB;aAAM,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;YACrC,SAAS,GAAG,EAAE,CAAC;SAChB;aAAM,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;YACnC,SAAS,GAAG,EAAE,CAAC;SAChB;aAAM,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,UAAU,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE;YACxE,IAAM,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACpC,IAAM,OAAO,GAAW,IAAA,gBAAQ,EAAC,WAAW,EAAE,IAAI,CAAC,CAAC;YACpD,IAAM,QAAQ,GAAW,IAAA,cAAM,EAAC,WAAW,EAAE,IAAI,CAAC,CAAC;YACnD,IAAI,QAAQ,IAAI,OAAO,EAAE;gBACvB,IAAM,IAAI,GAAG,IAAA,wCAAgC,EAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;gBACtF,IAAI,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,QAAQ,0CAAE,MAAM,EAAE;oBAC1B,YAAY,GAAG,QAAQ,IAAG,MAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,0CAAE,QAAQ,CAAA,CAAC;iBAC7E;gBACD,SAAS,GAAG,gBAAS,KAAK,CAAC,CAAC,CAAC,MAAG,CAAC;aAClC;SACF;aAAM,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE;YAC5B,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;SACtB;aAAM,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;YAC3B,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;SACtB;QACD,YAAY,GAAG,YAAY,KAAK,CAAC,CAAC;YAChC,CAAC,CAAC,YAAY;YACd,CAAC,CAAC,IAAA,8BAAgB,EAAC,GAAG,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;QACnD,IAAI,YAAY,KAAK,CAAC,CAAC,EAAE;YACvB,uGAAuG;YACvG,GAAG,GAAG,IAAA,kBAAU,EAAC,GAAG,EAAE,YAAY,CAAC,CAAC;YACpC,OAAO,GAAG,CAAC;SACZ;QACD,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE;YACzC,IAAM,eAAe,GAAG,GAAG,CAAC,UAAU,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;YACzD,IAAK,eAAe,KAAK,IAAI,CAAC,OAAO;gBACjC,CAAC,cAAc,GAAG,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,cAAc,GAAG,CAAC,CAAC,KAAI,IAAI,CAAC,OAAO,CAAC,EAC5E;gBACA,kGAAkG;gBAClG,GAAG,GAAG,IAAA,kBAAU,EAAC,GAAG,EAAE,YAAY,CAAC,CAAC;gBACpC,OAAO,GAAG,CAAC;aACZ;YACD,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;gBACpB,IAAM,gBAAgB,GAAG,GAAG,CAAC,UAAU,CAAC,cAAc,GAAG,CAAC,CAAC,CAAA;gBAC3D,IAAK,eAAe,KAAM,IAAI,CAAC,WAAW;oBACrC,eAAe,KAAM,IAAI,CAAC,QAAQ;oBAClC,eAAe,KAAM,IAAI,CAAC,QAAQ;oBAClC,gBAAgB,KAAK,IAAI,CAAC,WAAW;oBACrC,gBAAgB,KAAK,IAAI,CAAC,QAAQ;oBAClC,gBAAgB,KAAK,IAAI,CAAC,QAAQ,EACrC;oBACA,GAAG,GAAG,IAAA,kBAAU,EAAC,GAAG,EAAE,YAAY,CAAC,CAAC;oBACpC,OAAO,GAAG,CAAC;iBACZ;aACF;YACD,4DAA4D;YAC5D,IAAM,MAAM,GAAG,GAAG,CAAC,UAAU,CAAC,YAAY,GAAC,CAAC,CAAC,CAAC;YAC9C,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,GAAG,IAAI,EAAE;gBACnC,GAAG,GAAG,IAAA,kBAAU,EAAC,GAAG,EAAE,YAAY,CAAC,CAAC;gBACpC,OAAO,GAAG,CAAC;aACZ;SACF;QACD,IAAM,OAAO,GAAW,YAAY,GAAG,SAAS,CAAC,MAAM,CAAC;QAExD,IAAM,OAAO,GAAW,GAAG,CAAC,KAAK,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;QAE3D,IAAM,EAAE,GAAW,IAAA,yBAAgB,GAAE,CAAC;QACtC,IAAM,SAAS,GAAY,KAAK,CAAC,CAAC,CAAC,IAAI,wBAAe,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACrE,IAAI,SAAS,EAAE;YACb,IAAA,gCAAqB,EAAC,EAAE,EAAE,IAAA,EAAE,OAAO,SAAA,EAAE,CAAC,CAAC;SACxC;aAAM;YACL,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,IAAA,EAAE,OAAO,SAAA,EAAE,CAAC,CAAC;SACjC;QACD,IAAM,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC,YAAK,EAAE,OAAI,CAAC,CAAC,CAAC,WAAI,EAAE,MAAG,CAAC;QACxD,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,cAAc,CAAC,GAAG,WAAW,GAAG,GAAG,CAAC,KAAK,CAAC,YAAY,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;QAC9H,GAAG,GAAG,IAAA,kBAAU,EAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;KACjC;IACD,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AA1FW,QAAA,UAAU,cA0FrB"}
1
+ {"version":3,"file":"sub-math.js","sourceRoot":"","sources":["../../../../src/markdown/md-block-rule/begin-tabular/sub-math.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,8 @@
1
1
  import { TTokenTabular } from "./index";
2
+ import { TVerticalPos } from "./common";
2
3
  export declare const ClearSubTableLists: () => void;
3
- export declare const pushSubTabular: (str: string, subTabularContent: string, subRes: Array<TTokenTabular>, posBegin: number, posEnd: number, i?: number, level?: number) => string;
4
+ export declare const getSubTabularBracket: (placeholderOrId: string) => TVerticalPos | undefined;
5
+ export declare const pushSubTabular: (str: string, subTabularContent: string, subRes: Array<TTokenTabular>, posBegin: number, posEnd: number, i?: number, level?: number, bracket?: TVerticalPos) => string;
4
6
  /**
5
7
  * Expands <...> / <<...>> placeholders inside a tabular cell by replacing them with cached
6
8
  * sub-tabular content (or diagbox fallback). If injected content contains a list begin
@@ -1,17 +1,26 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getSubTabular = exports.pushSubTabular = exports.ClearSubTableLists = void 0;
3
+ exports.getSubTabular = exports.pushSubTabular = exports.getSubTabularBracket = exports.ClearSubTableLists = void 0;
4
4
  var tslib_1 = require("tslib");
5
5
  var common_1 = require("./common");
6
6
  var consts_1 = require("../../common/consts");
7
7
  var sub_cell_1 = require("./sub-cell");
8
8
  var sub_code_1 = require("./sub-code");
9
9
  var placeholder_utils_1 = require("./placeholder-utils");
10
- var subTabular = [];
10
+ var subTabular = new Map();
11
+ // Guards direct lookup: keys are generateUniqueId() UUIDs, cell text should match exactly.
12
+ var SUB_TABULAR_KEY_RE = new RegExp("^".concat(consts_1.uuidPatternNoCapture, "$"));
11
13
  var ClearSubTableLists = function () {
12
- subTabular = [];
14
+ subTabular.clear();
13
15
  };
14
16
  exports.ClearSubTableLists = ClearSubTableLists;
17
+ // Bracket of the nested tabular referenced by the placeholder `<<id>>` (or bare uuid).
18
+ var getSubTabularBracket = function (placeholderOrId) {
19
+ var _a;
20
+ var id = placeholderOrId.replace(consts_1.ANGLE_BRACKETS_RE, '');
21
+ return (_a = subTabular.get(id)) === null || _a === void 0 ? void 0 : _a.bracket;
22
+ };
23
+ exports.getSubTabularBracket = getSubTabularBracket;
15
24
  /**
16
25
  * Extracts child placeholder IDs from a sub-tabular content string.
17
26
  * Returns a list of raw placeholder IDs without angle brackets.
@@ -23,26 +32,22 @@ var extractChildIds = function (content) {
23
32
  .map(function (match) { return match.replace(consts_1.ANGLE_BRACKETS_RE, ""); })
24
33
  .filter(function (s) { return s.length > 0; });
25
34
  };
26
- var pushSubTabular = function (str, subTabularContent, subRes, posBegin, posEnd, i, level) {
35
+ var pushSubTabular = function (str, subTabularContent, subRes, posBegin, posEnd, i, level, bracket) {
27
36
  var e_1, _a;
28
37
  var _b;
29
- var _c;
30
38
  if (subRes === void 0) { subRes = []; }
31
39
  if (posBegin === void 0) { posBegin = 0; }
32
40
  if (i === void 0) { i = 0; }
33
41
  if (level === void 0) { level = 0; }
34
42
  var id = (0, common_1.generateUniqueId)();
35
43
  var childIds = extractChildIds(subTabularContent);
36
- var _loop_1 = function (childId) {
37
- var cIdx = subTabular.findIndex(function (item) { return item.id === childId; });
38
- if (cIdx >= 0) {
39
- ((_b = (_c = subTabular[cIdx]).parents) !== null && _b !== void 0 ? _b : (_c.parents = [])).push(id);
40
- }
41
- };
42
44
  try {
43
45
  for (var childIds_1 = tslib_1.__values(childIds), childIds_1_1 = childIds_1.next(); !childIds_1_1.done; childIds_1_1 = childIds_1.next()) {
44
46
  var childId = childIds_1_1.value;
45
- _loop_1(childId);
47
+ var child = subTabular.get(childId);
48
+ if (child) {
49
+ ((_b = child.parents) !== null && _b !== void 0 ? _b : (child.parents = [])).push(id);
50
+ }
46
51
  }
47
52
  }
48
53
  catch (e_1_1) { e_1 = { error: e_1_1 }; }
@@ -54,15 +59,15 @@ var pushSubTabular = function (str, subTabularContent, subRes, posBegin, posEnd,
54
59
  }
55
60
  var isBlockLocal = (0, common_1.detectLocalBlock)(subTabularContent);
56
61
  var childBlock = childIds.some(function (cid) {
57
- var cIdx = subTabular.findIndex(function (item) { return item.id === cid; });
58
- return cIdx >= 0 ? !!subTabular[cIdx].isBlock : false;
62
+ var child = subTabular.get(cid);
63
+ return child ? !!child.isBlock : false;
59
64
  });
60
- subTabular.push({
61
- id: id,
65
+ subTabular.set(id, {
62
66
  content: subTabularContent,
63
67
  parsed: subRes,
64
68
  children: childIds,
65
69
  isBlock: isBlockLocal || childBlock,
70
+ bracket: bracket,
66
71
  });
67
72
  if (posBegin > 0) {
68
73
  return str.slice(i, posBegin) + "<<".concat(id, ">>") + str.slice(posEnd + '\\end{tabular}'.length, str.length);
@@ -78,7 +83,7 @@ exports.pushSubTabular = pushSubTabular;
78
83
  * (or other block-ish LaTeX), it may be newline-wrapped to keep downstream block parsing stable.
79
84
  */
80
85
  var getSubTabular = function (sub, i, isCell, forLatex) {
81
- var _a, _b, _c;
86
+ var _a, _b;
82
87
  if (isCell === void 0) { isCell = true; }
83
88
  if (forLatex === void 0) { forLatex = false; }
84
89
  // first expand any extracted code-block placeholders (may add newlines)
@@ -87,10 +92,11 @@ var getSubTabular = function (sub, i, isCell, forLatex) {
87
92
  if (isCell) {
88
93
  sub = (0, common_1.getContent)(sub);
89
94
  }
90
- // fast path: exact id matches a cached parsed tabular
91
- var directIndex = subTabular.findIndex(function (item) { return item.id === sub; });
92
- if (directIndex >= 0 && ((_a = subTabular[directIndex].parsed) === null || _a === void 0 ? void 0 : _a.length)) {
93
- return subTabular[directIndex].parsed;
95
+ if (SUB_TABULAR_KEY_RE.test(sub)) {
96
+ var directEntry = subTabular.get(sub);
97
+ if ((_a = directEntry === null || directEntry === void 0 ? void 0 : directEntry.parsed) === null || _a === void 0 ? void 0 : _a.length) {
98
+ return directEntry.parsed;
99
+ }
94
100
  }
95
101
  // find placeholders
96
102
  var cellM = (0, placeholder_utils_1.findPlaceholders)(sub, i);
@@ -100,25 +106,25 @@ var getSubTabular = function (sub, i, isCell, forLatex) {
100
106
  var parents = null;
101
107
  var cursor = 0;
102
108
  var contentFragments = [];
103
- var _loop_2 = function (j) {
109
+ var hasDiagbox = false;
110
+ for (var j = 0; j < cellM.length; j++) {
104
111
  var placeholder = cellM[j];
105
112
  var id = (0, placeholder_utils_1.placeholderToId)(placeholder);
106
113
  if (!id) {
107
- return "continue";
114
+ continue;
108
115
  }
109
116
  var start = sub.indexOf(placeholder, cursor);
110
117
  if (start === -1) {
111
- return "continue";
118
+ continue;
112
119
  }
113
120
  var end = start + placeholder.length;
114
121
  // prefix text between placeholders
115
122
  var prefix = sub.slice(cursor, start);
116
123
  // Avoid trimming around list-begin tokens to keep `\begin{itemize}` detectable.
117
- var idx = subTabular.findIndex(function (item) { return item.id === id; });
124
+ var entry = subTabular.get(id);
118
125
  var isBlockRule = false;
119
- if (idx >= 0) {
120
- var content = subTabular[idx].content;
121
- isBlockRule = !!subTabular[idx].isBlock || (0, common_1.detectLocalBlock)(prefix) || (0, common_1.detectLocalBlock)(content);
126
+ if (entry) {
127
+ isBlockRule = !!entry.isBlock || (0, common_1.detectLocalBlock)(prefix) || (0, common_1.detectLocalBlock)(entry.content);
122
128
  if (!isBlockRule || prefix.trim() === "") {
123
129
  prefix = prefix.trim();
124
130
  }
@@ -130,15 +136,19 @@ var getSubTabular = function (sub, i, isCell, forLatex) {
130
136
  }
131
137
  }
132
138
  var injected = "";
133
- if (idx >= 0) {
134
- parents = subTabular[idx].parents;
135
- injected = (_b = subTabular[idx].content) !== null && _b !== void 0 ? _b : "";
139
+ if (entry) {
140
+ parents = entry.parents;
141
+ injected = (_b = entry.content) !== null && _b !== void 0 ? _b : "";
136
142
  }
137
143
  else {
138
- injected = (_c = (0, sub_cell_1.findInDiagboxTable)(id)) !== null && _c !== void 0 ? _c : "";
144
+ var diagboxMatch = (0, sub_cell_1.findInDiagboxTable)(id);
145
+ if (diagboxMatch) {
146
+ hasDiagbox = true;
147
+ injected = diagboxMatch;
148
+ }
139
149
  }
140
150
  // decide wrapping using non-space neighbors around placeholder
141
- var _d = (0, placeholder_utils_1.getInlineContextAroundSpan)(sub, start, end), beforeNonSpace = _d.beforeNonSpace, afterNonSpace = _d.afterNonSpace;
151
+ var _c = (0, placeholder_utils_1.getInlineContextAroundSpan)(sub, start, end), beforeNonSpace = _c.beforeNonSpace, afterNonSpace = _c.afterNonSpace;
142
152
  // If injected content starts a list env, wrap with newlines so block parsing stays stable
143
153
  if (isBlockRule) {
144
154
  injected = (0, placeholder_utils_1.wrapWithNewlinesIfInline)(injected, beforeNonSpace, afterNonSpace);
@@ -146,9 +156,6 @@ var getSubTabular = function (sub, i, isCell, forLatex) {
146
156
  var st = prefix + injected;
147
157
  contentFragments.push(st);
148
158
  cursor = end;
149
- };
150
- for (var j = 0; j < cellM.length; j++) {
151
- _loop_2(j);
152
159
  }
153
160
  if (cursor < sub.length) {
154
161
  contentFragments.push(sub.slice(cursor));
@@ -162,6 +169,7 @@ var getSubTabular = function (sub, i, isCell, forLatex) {
162
169
  type: forLatex ? "inline" : "subTabular",
163
170
  parents: parents,
164
171
  isSubTabular: true,
172
+ hasDiagbox: hasDiagbox,
165
173
  },
166
174
  ];
167
175
  };
@@ -1 +1 @@
1
- {"version":3,"file":"sub-tabular.js","sourceRoot":"","sources":["../../../../src/markdown/md-block-rule/begin-tabular/sub-tabular.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sub-tabular.js","sourceRoot":"","sources":["../../../../src/markdown/md-block-rule/begin-tabular/sub-tabular.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { TAttrs, TTokenTabular } from './index';
2
- import { TDecimal } from "./common";
2
+ import { TDecimal, TTdMeta } from "./common";
3
3
  type TLines = {
4
4
  left?: string;
5
5
  right?: string;
@@ -11,12 +11,20 @@ type TAligns = {
11
11
  v?: string;
12
12
  w?: string;
13
13
  };
14
+ export declare const clearColumnStyleCache: () => void;
15
+ export declare const getSharedTableOpenAttrs: (extraClass?: string, skipVisual?: boolean) => TAttrs[] | undefined;
16
+ export declare const getSharedTbodyOpenAttrs: (numCol: number) => TAttrs[];
17
+ export declare const getSharedTrOpenAttrs: (skipVisual?: boolean) => TAttrs[] | undefined;
18
+ export declare const SHARED_TD_CLOSE: TTokenTabular;
19
+ export declare const SHARED_TR_CLOSE: TTokenTabular;
20
+ export declare const SHARED_TABLE_CLOSE: TTokenTabular;
21
+ export declare const SHARED_TBODY_CLOSE: TTokenTabular;
14
22
  export declare const setColumnLines: (aligns: TAligns | null, lines: TLines) => string[];
15
23
  export declare const addStyle: (attrs: any[], style: string) => Array<TAttrs>;
16
24
  export declare const addHLineIntoStyle: (attrs: any[], line?: string, pos?: string) => Array<TAttrs>;
17
- export declare const AddTd: (content: string, aligns: TAligns | null, lines: TLines, space: string, decimal?: TDecimal | null) => {
25
+ export declare const AddTd: (content: string, aligns: TAligns | null, lines: TLines, space: string, decimal?: TDecimal | null, skipVisual?: boolean, meta?: TTdMeta) => {
18
26
  res: Array<TTokenTabular>;
19
27
  content: string;
20
28
  };
21
- export declare const AddTdSubTable: (subTable: Array<TTokenTabular>, aligns: TAligns, lines: TLines) => Array<TTokenTabular>;
29
+ export declare const AddTdSubTable: (subTable: Array<TTokenTabular>, aligns: TAligns, lines: TLines, skipVisual?: boolean, meta?: TTdMeta) => Array<TTokenTabular>;
22
30
  export {};
@@ -1,59 +1,99 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AddTdSubTable = exports.AddTd = exports.addHLineIntoStyle = exports.addStyle = exports.setColumnLines = void 0;
3
+ exports.AddTdSubTable = exports.AddTd = exports.addHLineIntoStyle = exports.addStyle = exports.setColumnLines = exports.SHARED_TBODY_CLOSE = exports.SHARED_TABLE_CLOSE = exports.SHARED_TR_CLOSE = exports.SHARED_TD_CLOSE = exports.getSharedTrOpenAttrs = exports.getSharedTbodyOpenAttrs = exports.getSharedTableOpenAttrs = exports.clearColumnStyleCache = void 0;
4
+ var tslib_1 = require("tslib");
4
5
  var utils_1 = require("../../utils");
5
6
  var sub_code_1 = require("./sub-code");
6
7
  var consts_1 = require("../../common/consts");
8
+ // Pre-interned border styles — only ~8 unique values per orientation,
9
+ // share one instance across every <td> instead of reallocating per call.
10
+ var V_LEFT_NONE = 'border-left: none !important; ';
11
+ var V_LEFT_SOLID = 'border-left-style: solid !important; border-left-width: 1px !important; ';
12
+ var V_LEFT_DOUBLE = 'border-left-style: double !important; border-left-width: 3px !important; ';
13
+ var V_LEFT_DASHED = 'border-left-style: dashed !important; border-left-width: 1px !important; ';
14
+ var V_RIGHT_NONE = 'border-right: none !important; ';
15
+ var V_RIGHT_SOLID = 'border-right-style: solid !important; border-right-width: 1px !important; ';
16
+ var V_RIGHT_DOUBLE = 'border-right-style: double !important; border-right-width: 3px !important; ';
17
+ var V_RIGHT_DASHED = 'border-right-style: dashed !important; border-right-width: 1px !important; ';
18
+ var H_TOP_NONE = 'border-top: none !important; ';
19
+ var H_TOP_SOLID = 'border-top-style: solid !important; border-top-width: 1px !important; ';
20
+ var H_TOP_DOUBLE = 'border-top-style: double !important; border-top-width: 3px !important; ';
21
+ var H_TOP_DASHED = 'border-top-style: dashed !important; border-top-width: 1px !important; ';
22
+ var H_BOTTOM_NONE = 'border-bottom: none !important; ';
23
+ var H_BOTTOM_SOLID = 'border-bottom-style: solid !important; border-bottom-width: 1px !important; ';
24
+ var H_BOTTOM_DOUBLE = 'border-bottom-style: double !important; border-bottom-width: 3px !important; ';
25
+ var H_BOTTOM_DASHED = 'border-bottom-style: dashed !important; border-bottom-width: 1px !important; ';
7
26
  var verticalCellLine = function (line, pos) {
8
27
  if (pos === void 0) { pos = 'left'; }
9
28
  var lines = line.split(' ');
29
+ var isLeft = pos === 'left';
10
30
  if (lines.length > 1) {
11
- return "border-".concat(pos, "-style: double !important; border-").concat(pos, "-width: 3px !important; ");
31
+ return isLeft ? V_LEFT_DOUBLE : V_RIGHT_DOUBLE;
12
32
  }
13
- else {
14
- switch (lines[0]) {
15
- case '':
16
- return "";
17
- //return `border-${pos}: none !important; `;
18
- case 'none':
19
- return "border-".concat(pos, ": none !important; ");
20
- case 'solid':
21
- return "border-".concat(pos, "-style: solid !important; border-").concat(pos, "-width: 1px !important; ");
22
- case 'double':
23
- return "border-".concat(pos, "-style: double !important; border-").concat(pos, "-width: 3px !important; ");
24
- case 'dashed':
25
- return "border-".concat(pos, "-style: dashed !important; border-").concat(pos, "-width: 1px !important; ");
26
- default:
27
- return "border-".concat(pos, "-style: solid !important; border-").concat(pos, "-width: 1px !important; ");
28
- }
33
+ switch (lines[0]) {
34
+ case '':
35
+ return '';
36
+ case 'none':
37
+ return isLeft ? V_LEFT_NONE : V_RIGHT_NONE;
38
+ case 'solid':
39
+ return isLeft ? V_LEFT_SOLID : V_RIGHT_SOLID;
40
+ case 'double':
41
+ return isLeft ? V_LEFT_DOUBLE : V_RIGHT_DOUBLE;
42
+ case 'dashed':
43
+ return isLeft ? V_LEFT_DASHED : V_RIGHT_DASHED;
44
+ default:
45
+ return isLeft ? V_LEFT_SOLID : V_RIGHT_SOLID;
29
46
  }
30
47
  };
31
48
  var horizontalCellLine = function (line, pos) {
32
49
  if (pos === void 0) { pos = 'bottom'; }
33
50
  var lines = line.split(' ');
51
+ var isTop = pos === 'top';
34
52
  if (lines.length > 1) {
35
- return "border-".concat(pos, "-style: double !important; border-").concat(pos, "-width: 3px !important; ");
53
+ return isTop ? H_TOP_DOUBLE : H_BOTTOM_DOUBLE;
36
54
  }
37
- else {
38
- switch (lines[0]) {
39
- case 'none':
40
- return "border-".concat(pos, ": none !important; ");
41
- case 'hline':
42
- return "border-".concat(pos, "-style: solid !important; border-").concat(pos, "-width: 1px !important; ");
43
- case 'hhline':
44
- return "border-".concat(pos, "-style: double !important; border-").concat(pos, "-width: 3px !important; ");
45
- case 'hdashline':
46
- return "border-".concat(pos, "-style: dashed !important; border-").concat(pos, "-width: 1px !important; ");
47
- default:
48
- return "border-".concat(pos, ": none !important; ");
49
- }
55
+ switch (lines[0]) {
56
+ case 'none':
57
+ return isTop ? H_TOP_NONE : H_BOTTOM_NONE;
58
+ case 'hline':
59
+ return isTop ? H_TOP_SOLID : H_BOTTOM_SOLID;
60
+ case 'hhline':
61
+ return isTop ? H_TOP_DOUBLE : H_BOTTOM_DOUBLE;
62
+ case 'hdashline':
63
+ return isTop ? H_TOP_DASHED : H_BOTTOM_DASHED;
64
+ default:
65
+ return isTop ? H_TOP_NONE : H_BOTTOM_NONE;
50
66
  }
51
67
  };
52
- var setColumnLines = function (aligns, lines) {
68
+ // Per-parse dedup caches for style strings and <td> attrs arrays. Shared attrs
69
+ // are read-only; mutators clone via `attrsSharedMarker` (see tokenAttrSet).
70
+ var columnStyleCache = new Map();
71
+ var cellAttrsCache = new Map();
72
+ var markAttrsShared = function (attrs) {
73
+ Object.defineProperty(attrs, consts_1.attrsSharedMarker, {
74
+ value: true, enumerable: false, configurable: true, writable: true,
75
+ });
76
+ return attrs;
77
+ };
78
+ var clearColumnStyleCache = function () {
79
+ columnStyleCache.clear();
80
+ cellAttrsCache.clear();
81
+ TABLE_OPEN_ATTRS_CACHE.clear();
82
+ TBODY_OPEN_ATTRS_CACHE.clear();
83
+ TR_OPEN_ATTRS_SHARED = null;
84
+ };
85
+ exports.clearColumnStyleCache = clearColumnStyleCache;
86
+ var internStyle = function (style) {
87
+ var cached = columnStyleCache.get(style);
88
+ if (cached !== undefined)
89
+ return cached;
90
+ columnStyleCache.set(style, style);
91
+ return style;
92
+ };
93
+ var composeCellStyle = function (aligns, lines, space) {
53
94
  var _a = lines.left, left = _a === void 0 ? '' : _a, _b = lines.right, right = _b === void 0 ? '' : _b, _c = lines.bottom, bottom = _c === void 0 ? '' : _c, _d = lines.top, top = _d === void 0 ? '' : _d;
54
- if (!aligns) {
95
+ if (!aligns)
55
96
  aligns = { h: '', v: '', w: '' };
56
- }
57
97
  var _e = aligns.h, h = _e === void 0 ? '' : _e, _f = aligns.v, v = _f === void 0 ? '' : _f, _g = aligns.w, w = _g === void 0 ? '' : _g;
58
98
  var borderLeft = verticalCellLine(left, 'left');
59
99
  var borderRight = verticalCellLine(right, 'right');
@@ -65,15 +105,110 @@ var setColumnLines = function (aligns, lines) {
65
105
  var width = '';
66
106
  if (w) {
67
107
  width = (0, utils_1.getLatexTextWidth)(w, 1200);
68
- if (!width) {
108
+ if (!width)
69
109
  width = "width: ".concat(w, "; ");
70
- }
71
110
  }
72
111
  var vAlign = v ? "vertical-align: ".concat(v, "; ") : '';
73
- return ['style', textAlign + borderLeft + borderRight + borderBottom + borderTop + width + vAlign];
112
+ var padding = space && space !== 'none' ? "padding-bottom: ".concat(space, " !important;") : '';
113
+ var style = textAlign + borderLeft + borderRight + borderBottom + borderTop + width + vAlign + padding;
114
+ return internStyle(style);
115
+ };
116
+ /** Read-only shared attrs keyed by (style, isEmpty). Mutators must clone. */
117
+ var getSharedCellAttrs = function (style, isEmpty, skipVisual) {
118
+ if (skipVisual === void 0) { skipVisual = false; }
119
+ // Style and `_empty` class are HTML/CSS-only. XLSX reads style too but
120
+ // doesn't set skipVisual, so that path is unaffected.
121
+ if (skipVisual)
122
+ return undefined;
123
+ var key = isEmpty ? style + '\0E' : style;
124
+ var cached = cellAttrsCache.get(key);
125
+ if (cached)
126
+ return cached;
127
+ var attrs = isEmpty
128
+ ? [['style', style], ['class', '_empty']]
129
+ : [['style', style]];
130
+ markAttrsShared(attrs);
131
+ cellAttrsCache.set(key, attrs);
132
+ return attrs;
133
+ };
134
+ // Shared attrs for structural tabular tokens — same values repeat thousands
135
+ // of times per doc.
136
+ var TABLE_OPEN_ATTRS_CACHE = new Map();
137
+ var TBODY_OPEN_ATTRS_CACHE = new Map();
138
+ var TR_OPEN_ATTRS_SHARED = null;
139
+ var TR_OPEN_STYLE = 'border-top: none !important; border-bottom: none !important;';
140
+ var getSharedTableOpenAttrs = function (extraClass, skipVisual) {
141
+ if (skipVisual === void 0) { skipVisual = false; }
142
+ // class='tabular' is HTML-only (used for table detection by DOCX/PPTX builders).
143
+ // Under skipVisual, keep only data-type (non-visual subtable marker).
144
+ if (skipVisual && !extraClass)
145
+ return undefined;
146
+ var key = (skipVisual ? 'v:' : '') + (extraClass || '');
147
+ var cached = TABLE_OPEN_ATTRS_CACHE.get(key);
148
+ if (cached)
149
+ return cached;
150
+ var attrs = skipVisual
151
+ ? [['data-type', extraClass]]
152
+ : (extraClass
153
+ ? [['class', 'tabular'], ['data-type', extraClass]]
154
+ : [['class', 'tabular']]);
155
+ markAttrsShared(attrs);
156
+ TABLE_OPEN_ATTRS_CACHE.set(key, attrs);
157
+ return attrs;
158
+ };
159
+ exports.getSharedTableOpenAttrs = getSharedTableOpenAttrs;
160
+ var getSharedTbodyOpenAttrs = function (numCol) {
161
+ var key = numCol.toString();
162
+ var cached = TBODY_OPEN_ATTRS_CACHE.get(key);
163
+ if (cached)
164
+ return cached;
165
+ var attrs = [['data_num_col', key]];
166
+ markAttrsShared(attrs);
167
+ TBODY_OPEN_ATTRS_CACHE.set(key, attrs);
168
+ return attrs;
169
+ };
170
+ exports.getSharedTbodyOpenAttrs = getSharedTbodyOpenAttrs;
171
+ var getSharedTrOpenAttrs = function (skipVisual) {
172
+ if (skipVisual === void 0) { skipVisual = false; }
173
+ // tr_open.style is the HTML border-reset — no MD/LaTeX/XLSX consumer.
174
+ if (skipVisual)
175
+ return undefined;
176
+ if (TR_OPEN_ATTRS_SHARED)
177
+ return TR_OPEN_ATTRS_SHARED;
178
+ var attrs = [['style', TR_OPEN_STYLE]];
179
+ markAttrsShared(attrs);
180
+ TR_OPEN_ATTRS_SHARED = attrs;
181
+ return attrs;
182
+ };
183
+ exports.getSharedTrOpenAttrs = getSharedTrOpenAttrs;
184
+ // Frozen shared close-tokens. SHARED_TBODY_CLOSE only when !forLatex (forLatex carries per-table `latex` payload).
185
+ exports.SHARED_TD_CLOSE = Object.freeze({
186
+ token: 'td_close', type: 'td_close', tag: 'td', n: -1,
187
+ });
188
+ exports.SHARED_TR_CLOSE = Object.freeze({
189
+ token: 'tr_close', type: 'tr_close', tag: 'tr', n: -1,
190
+ });
191
+ exports.SHARED_TABLE_CLOSE = Object.freeze({
192
+ token: 'table_close', type: 'table_close', tag: 'table', n: -1,
193
+ });
194
+ exports.SHARED_TBODY_CLOSE = Object.freeze({
195
+ token: 'tbody_close', type: 'tbody_close', tag: 'tbody', n: -1,
196
+ });
197
+ // Legacy entry point: callers that build their own attrs array (AddTdSubTable,
198
+ // multi-column paths) still use this — hot <td> path uses getSharedCellAttrs.
199
+ var setColumnLines = function (aligns, lines) {
200
+ var style = composeCellStyle(aligns, lines, '');
201
+ return ['style', style];
74
202
  };
75
203
  exports.setColumnLines = setColumnLines;
76
204
  var addStyle = function (attrs, style) {
205
+ // Clone-on-write: shared attrs (from the per-parse cache) are read-only.
206
+ // Clone the outer array AND each inner [name, value] tuple, because
207
+ // `attrs[i][1] += style` below would otherwise mutate the cached tuple.
208
+ // Array.isArray guard: legacy callers may pass mixed-shape attrs; preserve non-tuple items as-is.
209
+ if (attrs && attrs[consts_1.attrsSharedMarker]) {
210
+ attrs = attrs.map(function (pair) { return Array.isArray(pair) ? [pair[0], pair[1]] : pair; });
211
+ }
77
212
  var index = attrs.findIndex(function (item) { return item[0] === 'style'; });
78
213
  if (index >= 0) {
79
214
  attrs[index][1] += style;
@@ -91,21 +226,18 @@ var addHLineIntoStyle = function (attrs, line, pos) {
91
226
  return (0, exports.addStyle)(attrs, style);
92
227
  };
93
228
  exports.addHLineIntoStyle = addHLineIntoStyle;
94
- var AddTd = function (content, aligns, lines, space, decimal) {
229
+ var AddTd = function (content, aligns, lines, space, decimal, skipVisual, meta) {
95
230
  if (decimal === void 0) { decimal = null; }
231
+ if (skipVisual === void 0) { skipVisual = false; }
96
232
  var res = [];
97
- var attrs = [];
98
- var slyleLines = (0, exports.setColumnLines)(aligns, lines);
99
- attrs.push(slyleLines);
100
- if (space && space !== 'none') {
101
- (0, exports.addStyle)(attrs, "padding-bottom: ".concat(space, " !important;"));
102
- }
103
- if (!content) {
104
- attrs.push(['class', '_empty']);
105
- }
233
+ var style = skipVisual ? '' : composeCellStyle(aligns, lines, space);
106
234
  content = content.replace(consts_1.preserveNewlineUnlessDoubleAngleUuidRegex, ' ');
107
235
  content = (0, sub_code_1.getExtractedCodeBlockContent)(content, 0);
108
- res.push({ token: 'td_open', type: 'td_open', tag: 'td', n: 1, attrs: attrs });
236
+ var attrs = getSharedCellAttrs(style, !content, skipVisual);
237
+ var tdOpen = { token: 'td_open', type: 'td_open', tag: 'td', n: 1, attrs: attrs };
238
+ if (meta)
239
+ tdOpen.meta = meta;
240
+ res.push(tdOpen);
109
241
  if (content) {
110
242
  if (decimal && parseFloat(content)) {
111
243
  var arr = content.split('.');
@@ -132,18 +264,36 @@ var AddTd = function (content, aligns, lines, space, decimal) {
132
264
  res.push({ token: 'inline', type: 'inline', tag: '', n: 0, content: content });
133
265
  }
134
266
  }
135
- res.push({ token: 'td_close', type: 'td_close', tag: 'td', n: -1 });
267
+ res.push(exports.SHARED_TD_CLOSE);
136
268
  return { res: res, content: content };
137
269
  };
138
270
  exports.AddTd = AddTd;
139
- var AddTdSubTable = function (subTable, aligns, lines) {
271
+ var AddTdSubTable = function (subTable, aligns, lines, skipVisual, meta) {
272
+ var e_1, _a;
273
+ if (skipVisual === void 0) { skipVisual = false; }
140
274
  var res = [];
141
- var attrs = [];
142
- var slyleLines = (0, exports.setColumnLines)(aligns, lines);
143
- attrs.push(slyleLines);
144
- res.push({ token: 'td_open', type: 'td_open', tag: 'td', n: 1, attrs: attrs });
145
- res = res.concat(subTable);
146
- res.push({ token: 'td_close', type: 'td_close', tag: 'td', n: -1 });
275
+ var attrs;
276
+ if (!skipVisual) {
277
+ attrs = [(0, exports.setColumnLines)(aligns, lines)];
278
+ }
279
+ var tdOpen = { token: 'td_open', type: 'td_open', tag: 'td', n: 1, attrs: attrs };
280
+ if (meta)
281
+ tdOpen.meta = meta;
282
+ res.push(tdOpen);
283
+ try {
284
+ for (var subTable_1 = tslib_1.__values(subTable), subTable_1_1 = subTable_1.next(); !subTable_1_1.done; subTable_1_1 = subTable_1.next()) {
285
+ var t = subTable_1_1.value;
286
+ res.push(t);
287
+ }
288
+ }
289
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
290
+ finally {
291
+ try {
292
+ if (subTable_1_1 && !subTable_1_1.done && (_a = subTable_1.return)) _a.call(subTable_1);
293
+ }
294
+ finally { if (e_1) throw e_1.error; }
295
+ }
296
+ res.push(exports.SHARED_TD_CLOSE);
147
297
  return res;
148
298
  };
149
299
  exports.AddTdSubTable = AddTdSubTable;