@scrider/formatter 1.9.1 → 1.10.1

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.
package/dist/index.cjs CHANGED
@@ -44,6 +44,8 @@ __export(index_exports, {
44
44
  SCRIDER_LINE_HEIGHT_KEY: () => SCRIDER_LINE_HEIGHT_KEY,
45
45
  SCRIDER_MARGIN_AFTER_KEY: () => SCRIDER_MARGIN_AFTER_KEY,
46
46
  SCRIDER_MARGIN_BEFORE_KEY: () => SCRIDER_MARGIN_BEFORE_KEY,
47
+ SCRIDER_TEXT_INDENT_KEY: () => SCRIDER_TEXT_INDENT_KEY,
48
+ TEXT_INDENT_BLOCK_TAGS: () => TEXT_INDENT_BLOCK_TAGS,
47
49
  alertBlockHandler: () => alertBlockHandler,
48
50
  alignFormat: () => alignFormat,
49
51
  backgroundFormat: () => backgroundFormat,
@@ -53,6 +55,7 @@ __export(index_exports, {
53
55
  blockMarginBeforeStyleParts: () => blockMarginBeforeStyleParts,
54
56
  blockParagraphMarginStyleParts: () => blockParagraphMarginStyleParts,
55
57
  blockPresentationStyleParts: () => blockPresentationStyleParts,
58
+ blockTextIndentStyleParts: () => blockTextIndentStyleParts,
56
59
  blockquoteFormat: () => blockquoteFormat,
57
60
  boldFormat: () => boldFormat,
58
61
  boxBlockHandler: () => boxBlockHandler,
@@ -70,6 +73,7 @@ __export(index_exports, {
70
73
  defaultEmbedFormats: () => defaultEmbedFormats,
71
74
  defaultFormats: () => defaultFormats,
72
75
  defaultInlineFormats: () => defaultInlineFormats,
76
+ deltaToDom: () => deltaToDom,
73
77
  deltaToHtml: () => deltaToHtml,
74
78
  deltaToMarkdown: () => deltaToMarkdown,
75
79
  dividerFormat: () => dividerFormat,
@@ -112,6 +116,7 @@ __export(index_exports, {
112
116
  parseScriderMarginBeforeEm: () => parseScriderMarginBeforeEm,
113
117
  parseScriderMarginEm: () => parseScriderMarginEm,
114
118
  preloadRemark: () => preloadRemark,
119
+ renderDelta: () => renderDelta,
115
120
  resolveDocumentPresentation: () => resolveDocumentPresentation,
116
121
  resolveTablePresentation: () => resolveTablePresentation,
117
122
  sanitizeDelta: () => sanitizeDelta,
@@ -590,9 +595,13 @@ var EMBED_RENDERERS = {
590
595
  const embedSrc = toCodeWidgetEmbedUrl(src);
591
596
  return `<iframe data-code-widget src="${escapeHtml(embedSrc)}" frameborder="0" allowfullscreen${renderEmbedIframeIsolationAttrs(context, "codeWidget")}${float}${style}></iframe>`;
592
597
  },
598
+ // `data-scrider-embed` marks this span as 1 Delta char for DomBridge before
599
+ // KaTeX post-render replaces the text body with a `.katex` subtree. Without
600
+ // the marker, DomBridge counts the raw LaTeX length and drifts indices for
601
+ // everything after the formula (e.g. Simple Table chrome probe fails).
593
602
  formula: (value) => {
594
603
  const latex = typeof value === "string" ? value : "";
595
- return `<span class="formula" data-formula="${escapeHtml(latex)}">${escapeHtml(latex)}</span>`;
604
+ return `<span class="formula" data-formula="${escapeHtml(latex)}" data-scrider-embed>${escapeHtml(latex)}</span>`;
596
605
  },
597
606
  diagram: (value) => {
598
607
  const source = typeof value === "string" ? value : "";
@@ -2718,7 +2727,7 @@ var formulaFormat = {
2718
2727
  },
2719
2728
  render(value) {
2720
2729
  const latex = typeof value === "string" ? value : "";
2721
- return `<span class="formula" data-formula="${escapeHtml(latex)}">${escapeHtml(latex)}</span>`;
2730
+ return `<span class="formula" data-formula="${escapeHtml(latex)}" data-scrider-embed>${escapeHtml(latex)}</span>`;
2722
2731
  },
2723
2732
  match(element) {
2724
2733
  if (element.tagName.toLowerCase() !== "span") return null;
@@ -3130,7 +3139,9 @@ function slugifyWithDedup(text, usedSlugs) {
3130
3139
  var SCRIDER_LINE_HEIGHT_KEY = "scrider-line-height";
3131
3140
  var SCRIDER_MARGIN_AFTER_KEY = "scrider-margin-after";
3132
3141
  var SCRIDER_MARGIN_BEFORE_KEY = "scrider-margin-before";
3142
+ var SCRIDER_TEXT_INDENT_KEY = "scrider-text-indent";
3133
3143
  var LINE_HEIGHT_BLOCK_TAGS = /* @__PURE__ */ new Set(["p", "li", "blockquote"]);
3144
+ var TEXT_INDENT_BLOCK_TAGS = /* @__PURE__ */ new Set(["p"]);
3134
3145
  var PARAGRAPH_SPACING_BLOCK_TAGS = /* @__PURE__ */ new Set(["p"]);
3135
3146
  function parseScriderLineHeightMultiplier(value) {
3136
3147
  const trimmed = value.trim();
@@ -3160,6 +3171,18 @@ function blockLineHeightStyleParts(tag, blockAttributes, resolved) {
3160
3171
  }
3161
3172
  return [];
3162
3173
  }
3174
+ function blockTextIndentStyleParts(tag, blockAttributes, resolved) {
3175
+ if (!TEXT_INDENT_BLOCK_TAGS.has(tag)) return [];
3176
+ const raw = blockAttributes?.[SCRIDER_TEXT_INDENT_KEY];
3177
+ if (typeof raw === "string") {
3178
+ const trimmed = raw.trim();
3179
+ if (trimmed) return [`text-indent:${trimmed}`];
3180
+ }
3181
+ if (resolved?.textIndentCm !== void 0) {
3182
+ return [`text-indent:${resolved.textIndentCm}cm`];
3183
+ }
3184
+ return [];
3185
+ }
3163
3186
  function parseScriderMarginEm(value) {
3164
3187
  const trimmed = value.trim();
3165
3188
  if (!trimmed) return void 0;
@@ -3284,7 +3307,7 @@ function blockPresentationStyleParts(tag, blockAttributes, resolved) {
3284
3307
  return [
3285
3308
  ...blockLineHeightStyleParts(tag, blockAttributes, resolved),
3286
3309
  ...blockParagraphMarginStyleParts(tag, blockAttributes, resolved),
3287
- ...documentPresentationStyleParts(tag, resolved)
3310
+ ...blockTextIndentStyleParts(tag, blockAttributes, resolved)
3288
3311
  ];
3289
3312
  }
3290
3313
  function joinStyleParts(parts) {
@@ -3568,6 +3591,19 @@ function deltaToHtml(delta, options = {}) {
3568
3591
  }
3569
3592
  return html;
3570
3593
  }
3594
+ function stripPresentationForEditor(options) {
3595
+ const rest = { ...options };
3596
+ delete rest.documentPresentation;
3597
+ delete rest.documentMetadata;
3598
+ delete rest.tablePresentation;
3599
+ return rest;
3600
+ }
3601
+ function renderDelta(delta, profile, options = {}) {
3602
+ return profile === "editor" ? deltaToHtml(delta, stripPresentationForEditor(options)) : deltaToHtml(delta, options);
3603
+ }
3604
+ function deltaToDom(delta, options = {}) {
3605
+ return renderDelta(delta, "editor", options);
3606
+ }
3571
3607
  function getIndent(level) {
3572
3608
  return " ".repeat(level);
3573
3609
  }
@@ -6206,6 +6242,8 @@ function astToDelta(tree, customHandlers, mathBlock, mermaidBlock, plantumlBlock
6206
6242
  SCRIDER_LINE_HEIGHT_KEY,
6207
6243
  SCRIDER_MARGIN_AFTER_KEY,
6208
6244
  SCRIDER_MARGIN_BEFORE_KEY,
6245
+ SCRIDER_TEXT_INDENT_KEY,
6246
+ TEXT_INDENT_BLOCK_TAGS,
6209
6247
  alertBlockHandler,
6210
6248
  alignFormat,
6211
6249
  backgroundFormat,
@@ -6215,6 +6253,7 @@ function astToDelta(tree, customHandlers, mathBlock, mermaidBlock, plantumlBlock
6215
6253
  blockMarginBeforeStyleParts,
6216
6254
  blockParagraphMarginStyleParts,
6217
6255
  blockPresentationStyleParts,
6256
+ blockTextIndentStyleParts,
6218
6257
  blockquoteFormat,
6219
6258
  boldFormat,
6220
6259
  boxBlockHandler,
@@ -6232,6 +6271,7 @@ function astToDelta(tree, customHandlers, mathBlock, mermaidBlock, plantumlBlock
6232
6271
  defaultEmbedFormats,
6233
6272
  defaultFormats,
6234
6273
  defaultInlineFormats,
6274
+ deltaToDom,
6235
6275
  deltaToHtml,
6236
6276
  deltaToMarkdown,
6237
6277
  dividerFormat,
@@ -6274,6 +6314,7 @@ function astToDelta(tree, customHandlers, mathBlock, mermaidBlock, plantumlBlock
6274
6314
  parseScriderMarginBeforeEm,
6275
6315
  parseScriderMarginEm,
6276
6316
  preloadRemark,
6317
+ renderDelta,
6277
6318
  resolveDocumentPresentation,
6278
6319
  resolveTablePresentation,
6279
6320
  sanitizeDelta,