react-native-richify 1.0.4 → 1.0.6

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 (75) hide show
  1. package/README.md +383 -120
  2. package/lib/commonjs/components/RenderedOutput.js +168 -0
  3. package/lib/commonjs/components/RenderedOutput.js.map +1 -0
  4. package/lib/commonjs/components/RichTextInput.js +130 -15
  5. package/lib/commonjs/components/RichTextInput.js.map +1 -1
  6. package/lib/commonjs/components/Toolbar.js +41 -2
  7. package/lib/commonjs/components/Toolbar.js.map +1 -1
  8. package/lib/commonjs/constants/defaultStyles.js +51 -1
  9. package/lib/commonjs/constants/defaultStyles.js.map +1 -1
  10. package/lib/commonjs/hooks/useFormatting.js +44 -2
  11. package/lib/commonjs/hooks/useFormatting.js.map +1 -1
  12. package/lib/commonjs/hooks/useRichText.js +75 -6
  13. package/lib/commonjs/hooks/useRichText.js.map +1 -1
  14. package/lib/commonjs/utils/formatter.js +48 -9
  15. package/lib/commonjs/utils/formatter.js.map +1 -1
  16. package/lib/commonjs/utils/parser.js +1 -1
  17. package/lib/commonjs/utils/parser.js.map +1 -1
  18. package/lib/commonjs/utils/serializer.js +102 -6
  19. package/lib/commonjs/utils/serializer.js.map +1 -1
  20. package/lib/commonjs/utils/styleMapper.js +11 -0
  21. package/lib/commonjs/utils/styleMapper.js.map +1 -1
  22. package/lib/module/components/RenderedOutput.js +163 -0
  23. package/lib/module/components/RenderedOutput.js.map +1 -0
  24. package/lib/module/components/RichTextInput.js +131 -16
  25. package/lib/module/components/RichTextInput.js.map +1 -1
  26. package/lib/module/components/Toolbar.js +41 -2
  27. package/lib/module/components/Toolbar.js.map +1 -1
  28. package/lib/module/constants/defaultStyles.js +51 -1
  29. package/lib/module/constants/defaultStyles.js.map +1 -1
  30. package/lib/module/hooks/useFormatting.js +45 -3
  31. package/lib/module/hooks/useFormatting.js.map +1 -1
  32. package/lib/module/hooks/useRichText.js +75 -6
  33. package/lib/module/hooks/useRichText.js.map +1 -1
  34. package/lib/module/utils/formatter.js +46 -9
  35. package/lib/module/utils/formatter.js.map +1 -1
  36. package/lib/module/utils/parser.js +1 -1
  37. package/lib/module/utils/parser.js.map +1 -1
  38. package/lib/module/utils/serializer.js +102 -6
  39. package/lib/module/utils/serializer.js.map +1 -1
  40. package/lib/module/utils/styleMapper.js +11 -0
  41. package/lib/module/utils/styleMapper.js.map +1 -1
  42. package/lib/typescript/src/components/RenderedOutput.d.ts +9 -0
  43. package/lib/typescript/src/components/RenderedOutput.d.ts.map +1 -0
  44. package/lib/typescript/src/components/RichTextInput.d.ts.map +1 -1
  45. package/lib/typescript/src/components/Toolbar.d.ts.map +1 -1
  46. package/lib/typescript/src/constants/defaultStyles.d.ts +1 -0
  47. package/lib/typescript/src/constants/defaultStyles.d.ts.map +1 -1
  48. package/lib/typescript/src/hooks/useFormatting.d.ts +4 -1
  49. package/lib/typescript/src/hooks/useFormatting.d.ts.map +1 -1
  50. package/lib/typescript/src/hooks/useRichText.d.ts.map +1 -1
  51. package/lib/typescript/src/index.d.ts +1 -1
  52. package/lib/typescript/src/index.d.ts.map +1 -1
  53. package/lib/typescript/src/types/index.d.ts +94 -1
  54. package/lib/typescript/src/types/index.d.ts.map +1 -1
  55. package/lib/typescript/src/utils/formatter.d.ts +9 -1
  56. package/lib/typescript/src/utils/formatter.d.ts.map +1 -1
  57. package/lib/typescript/src/utils/parser.d.ts.map +1 -1
  58. package/lib/typescript/src/utils/serializer.d.ts.map +1 -1
  59. package/lib/typescript/src/utils/styleMapper.d.ts.map +1 -1
  60. package/package.json +1 -1
  61. package/src/components/RenderedOutput.tsx +231 -0
  62. package/src/components/RichTextInput.tsx +193 -19
  63. package/src/components/Toolbar.tsx +54 -2
  64. package/src/constants/defaultStyles.d.ts +2 -1
  65. package/src/constants/defaultStyles.ts +20 -0
  66. package/src/hooks/useFormatting.ts +101 -2
  67. package/src/hooks/useRichText.ts +101 -5
  68. package/src/index.d.ts +1 -1
  69. package/src/index.ts +4 -0
  70. package/src/types/index.d.ts +94 -1
  71. package/src/types/index.ts +104 -1
  72. package/src/utils/formatter.ts +60 -6
  73. package/src/utils/parser.ts +6 -1
  74. package/src/utils/serializer.ts +150 -8
  75. package/src/utils/styleMapper.ts +21 -0
@@ -68,7 +68,7 @@ export function useRichText(options = {}) {
68
68
  const handleTextChange = useCallback(newText => {
69
69
  const currentSegments = segmentsRef.current;
70
70
  const currentSelection = selectionRef.current;
71
- const currentActiveStyles = currentSelection.start === currentSelection.end ? activeStylesRef.current : getSelectionStyle(currentSegments, currentSelection);
71
+ const currentActiveStyles = sanitizeTypingStyles(currentSelection.start === currentSelection.end ? activeStylesRef.current : getSelectionStyle(currentSegments, currentSelection));
72
72
  const newSegments = reconcileTextChange(currentSegments, newText, currentActiveStyles);
73
73
  updateSegments(newSegments);
74
74
  }, [updateSegments]);
@@ -89,9 +89,7 @@ export function useRichText(options = {}) {
89
89
  const pos = findPositionInSegments(segmentsRef.current, newSelection.start);
90
90
  if (segmentsRef.current.length > 0) {
91
91
  const seg = segmentsRef.current[pos.segmentIndex];
92
- setActiveStyles({
93
- ...seg.styles
94
- });
92
+ setActiveStyles(sanitizeTypingStyles(seg.styles));
95
93
  }
96
94
  }
97
95
  }, [handleSelectionChange]);
@@ -110,14 +108,25 @@ export function useRichText(options = {}) {
110
108
  const importJSON = useCallback(newSegments => {
111
109
  const safeSegments = newSegments.length > 0 ? newSegments : [createSegment('')];
112
110
  updateSegments(safeSegments);
113
- }, [updateSegments]);
111
+ handleSelectionChange({
112
+ start: 0,
113
+ end: 0
114
+ });
115
+ setActiveStyles({
116
+ ...EMPTY_FORMAT_STYLE
117
+ });
118
+ }, [handleSelectionChange, updateSegments]);
114
119
  const clear = useCallback(() => {
115
120
  updateSegments([createSegment('')]);
121
+ handleSelectionChange({
122
+ start: 0,
123
+ end: 0
124
+ });
116
125
  setActiveStyles({
117
126
  ...EMPTY_FORMAT_STYLE
118
127
  });
119
128
  preserveActiveStylesRef.current = false;
120
- }, [updateSegments]);
129
+ }, [handleSelectionChange, updateSegments]);
121
130
  const toggleFormat = useCallback(format => {
122
131
  if (selectionRef.current.start === selectionRef.current.end) {
123
132
  preserveActiveStylesRef.current = true;
@@ -136,6 +145,24 @@ export function useRichText(options = {}) {
136
145
  }
137
146
  formatting.setHeading(level);
138
147
  }, [formatting]);
148
+ const setListType = useCallback(type => {
149
+ if (selectionRef.current.start === selectionRef.current.end) {
150
+ preserveActiveStylesRef.current = true;
151
+ }
152
+ formatting.setListType(type);
153
+ }, [formatting]);
154
+ const setTextAlign = useCallback(align => {
155
+ if (selectionRef.current.start === selectionRef.current.end) {
156
+ preserveActiveStylesRef.current = true;
157
+ }
158
+ formatting.setTextAlign(align);
159
+ }, [formatting]);
160
+ const setLink = useCallback(url => {
161
+ if (selectionRef.current.start === selectionRef.current.end) {
162
+ preserveActiveStylesRef.current = true;
163
+ }
164
+ formatting.setLink(url);
165
+ }, [formatting]);
139
166
  const setColor = useCallback(color => {
140
167
  if (selectionRef.current.start === selectionRef.current.end) {
141
168
  preserveActiveStylesRef.current = true;
@@ -154,6 +181,27 @@ export function useRichText(options = {}) {
154
181
  }
155
182
  formatting.setFontSize(size);
156
183
  }, [formatting]);
184
+ const insertImage = useCallback((source, options) => {
185
+ const currentSegments = segmentsRef.current;
186
+ const currentSelection = selectionRef.current;
187
+ const plainText = segmentsToPlainText(currentSegments);
188
+ const start = Math.min(currentSelection.start, currentSelection.end);
189
+ const end = Math.max(currentSelection.start, currentSelection.end);
190
+ const placeholder = options?.placeholder ?? buildImagePlaceholder(source, options?.alt);
191
+ const nextText = `${plainText.slice(0, start)}${placeholder}${plainText.slice(end)}`;
192
+ const insertionStyles = sanitizeTypingStyles(start === end ? activeStylesRef.current : getSelectionStyle(currentSegments, currentSelection));
193
+ const nextSegments = reconcileTextChange(currentSegments, nextText, {
194
+ ...insertionStyles,
195
+ imageSrc: source,
196
+ imageAlt: options?.alt
197
+ });
198
+ updateSegments(nextSegments);
199
+ handleSelectionChange({
200
+ start: start + placeholder.length,
201
+ end: start + placeholder.length
202
+ });
203
+ preserveActiveStylesRef.current = false;
204
+ }, [handleSelectionChange, updateSegments]);
157
205
 
158
206
  // ─── Build Return Value ──────────────────────────────────────────────────
159
207
 
@@ -166,6 +214,10 @@ export function useRichText(options = {}) {
166
214
  toggleFormat,
167
215
  setStyleProperty,
168
216
  setHeading,
217
+ setListType,
218
+ setTextAlign,
219
+ setLink,
220
+ insertImage,
169
221
  setColor,
170
222
  setBackgroundColor,
171
223
  setFontSize,
@@ -184,4 +236,21 @@ export function useRichText(options = {}) {
184
236
  actions
185
237
  };
186
238
  }
239
+ function sanitizeTypingStyles(style) {
240
+ return {
241
+ ...style,
242
+ imageSrc: undefined,
243
+ imageAlt: undefined
244
+ };
245
+ }
246
+ function buildImagePlaceholder(source, alt) {
247
+ if (alt && alt.trim().length > 0) {
248
+ return `[Image: ${alt.trim()}]`;
249
+ }
250
+ const fileName = source.split('/').pop()?.split('?')[0]?.trim();
251
+ if (fileName) {
252
+ return `[Image: ${fileName}]`;
253
+ }
254
+ return '[Image]';
255
+ }
187
256
  //# sourceMappingURL=useRichText.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["useState","useCallback","useRef","EMPTY_FORMAT_STYLE","createSegment","segmentsToPlainText","reconcileTextChange","findPositionInSegments","getSelectionStyle","serializeSegments","useSelection","useFormatting","useRichText","options","initialSegments","onChangeSegments","onChangeText","segments","setSegments","length","activeStyles","setActiveStyles","selection","handleSelectionChange","segmentsRef","current","selectionRef","activeStylesRef","preserveActiveStylesRef","updateSegments","newSegments","formatting","onSegmentsChange","onActiveStylesChange","handleTextChange","newText","currentSegments","currentSelection","currentActiveStyles","start","end","onSelectionChange","newSelection","previousSelection","shouldPreserveActiveStyles","pos","seg","segmentIndex","styles","getPlainText","getOutput","format","exportJSON","JSON","parse","stringify","importJSON","safeSegments","clear","toggleFormat","setStyleProperty","key","value","setHeading","level","setColor","color","setBackgroundColor","setFontSize","size","state","actions","isFormatActive","currentSelectionStyle"],"sourceRoot":"../../../src","sources":["hooks/useRichText.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["useState","useCallback","useRef","EMPTY_FORMAT_STYLE","createSegment","segmentsToPlainText","reconcileTextChange","findPositionInSegments","getSelectionStyle","serializeSegments","useSelection","useFormatting","useRichText","options","initialSegments","onChangeSegments","onChangeText","segments","setSegments","length","activeStyles","setActiveStyles","selection","handleSelectionChange","segmentsRef","current","selectionRef","activeStylesRef","preserveActiveStylesRef","updateSegments","newSegments","formatting","onSegmentsChange","onActiveStylesChange","handleTextChange","newText","currentSegments","currentSelection","currentActiveStyles","sanitizeTypingStyles","start","end","onSelectionChange","newSelection","previousSelection","shouldPreserveActiveStyles","pos","seg","segmentIndex","styles","getPlainText","getOutput","format","exportJSON","JSON","parse","stringify","importJSON","safeSegments","clear","toggleFormat","setStyleProperty","key","value","setHeading","level","setListType","type","setTextAlign","align","setLink","url","setColor","color","setBackgroundColor","setFontSize","size","insertImage","source","plainText","Math","min","max","placeholder","buildImagePlaceholder","alt","nextText","slice","insertionStyles","nextSegments","imageSrc","imageAlt","state","actions","isFormatActive","currentSelectionStyle","style","undefined","trim","fileName","split","pop"],"sourceRoot":"../../../src","sources":["hooks/useRichText.ts"],"mappings":"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","ignoreList":[]}
@@ -50,15 +50,29 @@ export function setStyleOnSelection(segments, selection, key, value) {
50
50
  * Apply a heading level to the line containing the cursor/selection.
51
51
  */
52
52
  export function setHeadingOnLine(segments, selection, level) {
53
- const plainText = segmentsToPlainText(segments);
54
- const {
55
- lineStart,
56
- lineEnd
57
- } = getLineRange(plainText, selection.start);
58
- const headingStyle = {
59
- heading: level === 'none' ? undefined : level
60
- };
61
- return applyStyleToRange(segments, lineStart, lineEnd, headingStyle);
53
+ return setLineStyleOnSelection(segments, selection, {
54
+ heading: level === 'none' ? undefined : level,
55
+ listType: level === 'none' ? undefined : undefined
56
+ });
57
+ }
58
+
59
+ /**
60
+ * Apply a list type to the lines containing the cursor/selection.
61
+ */
62
+ export function setListTypeOnLine(segments, selection, listType) {
63
+ return setLineStyleOnSelection(segments, selection, {
64
+ listType: listType === 'none' ? undefined : listType,
65
+ heading: listType === 'none' ? undefined : undefined
66
+ });
67
+ }
68
+
69
+ /**
70
+ * Apply text alignment to the lines containing the cursor/selection.
71
+ */
72
+ export function setTextAlignOnLine(segments, selection, textAlign) {
73
+ return setLineStyleOnSelection(segments, selection, {
74
+ textAlign
75
+ });
62
76
  }
63
77
 
64
78
  /**
@@ -111,6 +125,11 @@ export function getSelectionStyle(segments, selection) {
111
125
  if (result.backgroundColor !== s.backgroundColor) result.backgroundColor = undefined;
112
126
  if (result.fontSize !== s.fontSize) result.fontSize = undefined;
113
127
  if (result.heading !== s.heading) result.heading = undefined;
128
+ if (result.listType !== s.listType) result.listType = undefined;
129
+ if (result.textAlign !== s.textAlign) result.textAlign = undefined;
130
+ if (result.link !== s.link) result.link = undefined;
131
+ if (result.imageSrc !== s.imageSrc) result.imageSrc = undefined;
132
+ if (result.imageAlt !== s.imageAlt) result.imageAlt = undefined;
114
133
  }
115
134
  return result;
116
135
  }
@@ -190,6 +209,14 @@ function applyStyleToRange(segments, start, end, styleDelta) {
190
209
  }
191
210
  return mergeAdjacentSegments(result);
192
211
  }
212
+ function setLineStyleOnSelection(segments, selection, styleDelta) {
213
+ const plainText = segmentsToPlainText(segments);
214
+ const {
215
+ lineStart,
216
+ lineEnd
217
+ } = getSelectionLineRange(plainText, selection);
218
+ return applyStyleToRange(segments, lineStart, lineEnd, styleDelta);
219
+ }
193
220
 
194
221
  /**
195
222
  * Get the line start and end positions for the line containing the given position.
@@ -208,6 +235,16 @@ function getLineRange(text, position) {
208
235
  lineEnd
209
236
  };
210
237
  }
238
+ function getSelectionLineRange(text, selection) {
239
+ const normalized = normalizeSelection(selection);
240
+ const lineStart = getLineRange(text, normalized.start).lineStart;
241
+ const effectiveEnd = normalized.end > normalized.start ? normalized.end - 1 : normalized.end;
242
+ const lineEnd = getLineRange(text, effectiveEnd).lineEnd;
243
+ return {
244
+ lineStart,
245
+ lineEnd
246
+ };
247
+ }
211
248
 
212
249
  // Re-export for convenience
213
250
  export { createSegment } from '../utils/parser';
@@ -1 +1 @@
1
- {"version":3,"names":["createSegment","findPositionInSegments","mergeAdjacentSegments","segmentsToPlainText","toggleFormatOnSelection","segments","selection","format","start","end","normalizeSelection","selectedSegments","extractSegmentsInRange","allHaveFormat","every","s","styles","applyStyleToRange","setStyleOnSelection","key","value","setHeadingOnLine","level","plainText","lineStart","lineEnd","getLineRange","headingStyle","heading","undefined","isFormatActiveInSelection","selected","length","getSelectionStyle","pos","segmentIndex","result","i","bold","italic","underline","strikethrough","code","color","backgroundColor","fontSize","Math","min","max","seg","segStart","segEnd","text","overlapStart","overlapEnd","push","slice","styleDelta","newStyles","position"],"sourceRoot":"../../../src","sources":["utils/formatter.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["createSegment","findPositionInSegments","mergeAdjacentSegments","segmentsToPlainText","toggleFormatOnSelection","segments","selection","format","start","end","normalizeSelection","selectedSegments","extractSegmentsInRange","allHaveFormat","every","s","styles","applyStyleToRange","setStyleOnSelection","key","value","setHeadingOnLine","level","setLineStyleOnSelection","heading","undefined","listType","setListTypeOnLine","setTextAlignOnLine","textAlign","isFormatActiveInSelection","selected","length","getSelectionStyle","pos","segmentIndex","result","i","bold","italic","underline","strikethrough","code","color","backgroundColor","fontSize","link","imageSrc","imageAlt","Math","min","max","seg","segStart","segEnd","text","overlapStart","overlapEnd","push","slice","styleDelta","newStyles","plainText","lineStart","lineEnd","getSelectionLineRange","getLineRange","position","normalized","effectiveEnd"],"sourceRoot":"../../../src","sources":["utils/formatter.ts"],"mappings":"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","ignoreList":[]}
@@ -69,7 +69,7 @@ export function splitSegment(segment, offset) {
69
69
  * Checks if two FormatStyle objects are deeply equal.
70
70
  */
71
71
  export function areStylesEqual(a, b) {
72
- return !!a.bold === !!b.bold && !!a.italic === !!b.italic && !!a.underline === !!b.underline && !!a.strikethrough === !!b.strikethrough && !!a.code === !!b.code && (a.color ?? undefined) === (b.color ?? undefined) && (a.backgroundColor ?? undefined) === (b.backgroundColor ?? undefined) && (a.fontSize ?? undefined) === (b.fontSize ?? undefined) && (a.heading ?? undefined) === (b.heading ?? undefined);
72
+ return !!a.bold === !!b.bold && !!a.italic === !!b.italic && !!a.underline === !!b.underline && !!a.strikethrough === !!b.strikethrough && !!a.code === !!b.code && (a.color ?? undefined) === (b.color ?? undefined) && (a.backgroundColor ?? undefined) === (b.backgroundColor ?? undefined) && (a.fontSize ?? undefined) === (b.fontSize ?? undefined) && (a.heading ?? undefined) === (b.heading ?? undefined) && (a.listType ?? undefined) === (b.listType ?? undefined) && (a.textAlign ?? undefined) === (b.textAlign ?? undefined) && (a.link ?? undefined) === (b.link ?? undefined) && (a.imageSrc ?? undefined) === (b.imageSrc ?? undefined) && (a.imageAlt ?? undefined) === (b.imageAlt ?? undefined);
73
73
  }
74
74
 
75
75
  /**
@@ -1 +1 @@
1
- {"version":3,"names":["EMPTY_FORMAT_STYLE","createSegment","text","styles","getTotalLength","segments","reduce","sum","seg","length","segmentsToPlainText","map","s","join","findPositionInSegments","globalPosition","remaining","i","segLen","segmentIndex","offsetInSegment","lastIndex","Math","max","splitSegment","segment","offset","before","slice","after","areStylesEqual","a","b","bold","italic","underline","strikethrough","code","color","undefined","backgroundColor","fontSize","heading","mergeAdjacentSegments","result","last","newSeg","push","reconcileTextChange","oldSegments","newText","activeStyles","oldText","prefixLen","minLen","min","suffixLen","deleteStart","deleteEnd","insertedText","pos","phase","insertedNewSegment","segStart","segEnd"],"sourceRoot":"../../../src","sources":["utils/parser.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["EMPTY_FORMAT_STYLE","createSegment","text","styles","getTotalLength","segments","reduce","sum","seg","length","segmentsToPlainText","map","s","join","findPositionInSegments","globalPosition","remaining","i","segLen","segmentIndex","offsetInSegment","lastIndex","Math","max","splitSegment","segment","offset","before","slice","after","areStylesEqual","a","b","bold","italic","underline","strikethrough","code","color","undefined","backgroundColor","fontSize","heading","listType","textAlign","link","imageSrc","imageAlt","mergeAdjacentSegments","result","last","newSeg","push","reconcileTextChange","oldSegments","newText","activeStyles","oldText","prefixLen","minLen","min","suffixLen","deleteStart","deleteEnd","insertedText","pos","phase","insertedNewSegment","segStart","segEnd"],"sourceRoot":"../../../src","sources":["utils/parser.ts"],"mappings":"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","ignoreList":[]}
@@ -5,7 +5,23 @@
5
5
  */
6
6
  export function serializeSegments(segments, format = 'markdown') {
7
7
  const lines = splitSegmentsByLine(segments);
8
- return lines.map(line => serializeLine(line, format)).join('\n');
8
+ const blocks = [];
9
+ for (let index = 0; index < lines.length;) {
10
+ const line = lines[index];
11
+ const listType = getLineListType(line);
12
+ if (listType && listType !== 'none') {
13
+ const listLines = [];
14
+ while (index < lines.length && getLineListType(lines[index]) === listType) {
15
+ listLines.push(lines[index]);
16
+ index++;
17
+ }
18
+ blocks.push(serializeListBlock(listLines, format, listType));
19
+ continue;
20
+ }
21
+ blocks.push(serializeBlockLine(line, format));
22
+ index++;
23
+ }
24
+ return blocks.join('\n');
9
25
  }
10
26
 
11
27
  /**
@@ -26,7 +42,7 @@ function splitSegmentsByLine(segments) {
26
42
  for (const segment of segments) {
27
43
  const parts = segment.text.split('\n');
28
44
  parts.forEach((part, index) => {
29
- if (part.length > 0) {
45
+ if (part.length > 0 || segment.styles.imageSrc) {
30
46
  lines[lines.length - 1]?.push({
31
47
  text: part,
32
48
  styles: {
@@ -41,12 +57,34 @@ function splitSegmentsByLine(segments) {
41
57
  }
42
58
  return lines;
43
59
  }
44
- function serializeLine(line, format) {
60
+ function serializeListBlock(lines, format, listType) {
61
+ if (format === 'html' || lines.some(line => !!getLineTextAlign(line))) {
62
+ const tag = listType === 'ordered' ? 'ol' : 'ul';
63
+ const items = lines.map(line => serializeHtmlListItem(line)).join('');
64
+ return `<${tag}>${items}</${tag}>`;
65
+ }
66
+ return lines.map((line, index) => {
67
+ const marker = listType === 'ordered' ? `${index + 1}.` : '-';
68
+ const content = serializeLineContent(line, format);
69
+ return content.length > 0 ? `${marker} ${content}` : marker;
70
+ }).join('\n');
71
+ }
72
+ function serializeHtmlListItem(line) {
73
+ const content = serializeLineContent(line, 'html');
74
+ const styleAttribute = buildBlockStyle(getLineTextAlign(line));
75
+ return `<li${styleAttribute ? ` style="${styleAttribute}"` : ''}>${content}</li>`;
76
+ }
77
+ function serializeBlockLine(line, format) {
45
78
  const heading = getLineHeading(line);
46
- const content = line.map(fragment => serializeFragment(fragment, format, heading)).join('');
79
+ const textAlign = getLineTextAlign(line);
80
+ const content = serializeLineContent(line, format, heading);
47
81
  if (format === 'html') {
48
82
  const blockTag = heading ?? 'p';
49
- return `<${blockTag}>${content}</${blockTag}>`;
83
+ const styleAttribute = buildBlockStyle(textAlign);
84
+ return `<${blockTag}${styleAttribute ? ` style="${styleAttribute}"` : ''}>${content}</${blockTag}>`;
85
+ }
86
+ if (textAlign) {
87
+ return serializeAlignedMarkdownLine(content, heading, textAlign);
50
88
  }
51
89
  const headingPrefix = getHeadingPrefix(heading);
52
90
  if (!headingPrefix) {
@@ -54,15 +92,37 @@ function serializeLine(line, format) {
54
92
  }
55
93
  return content.length > 0 ? `${headingPrefix} ${content}` : headingPrefix;
56
94
  }
95
+ function serializeAlignedMarkdownLine(content, heading, textAlign) {
96
+ const blockTag = heading ?? 'p';
97
+ const styleAttribute = buildBlockStyle(textAlign);
98
+ return `<${blockTag} style="${styleAttribute}">${content}</${blockTag}>`;
99
+ }
100
+ function serializeLineContent(line, format, lineHeading) {
101
+ return line.map(fragment => serializeFragment(fragment, format, lineHeading)).join('');
102
+ }
57
103
  function serializeFragment(fragment, format, lineHeading) {
104
+ if (fragment.styles.imageSrc) {
105
+ return serializeImageFragment(fragment, format);
106
+ }
58
107
  const normalizedStyles = {
59
108
  ...fragment.styles,
60
109
  heading: undefined,
61
- // Markdown headings already express emphasis at the block level.
110
+ listType: undefined,
111
+ textAlign: undefined,
112
+ imageSrc: undefined,
113
+ imageAlt: undefined,
62
114
  bold: lineHeading && lineHeading !== 'none' ? false : fragment.styles.bold
63
115
  };
64
116
  return format === 'html' ? serializeHtmlFragment(fragment.text, normalizedStyles) : serializeMarkdownFragment(fragment.text, normalizedStyles);
65
117
  }
118
+ function serializeImageFragment(fragment, format) {
119
+ const source = fragment.styles.imageSrc ?? '';
120
+ const altText = fragment.styles.imageAlt ?? extractImageAlt(fragment.text);
121
+ if (format === 'html') {
122
+ return `<img src="${escapeHtml(source)}" alt="${escapeHtml(altText)}" />`;
123
+ }
124
+ return `![${escapeMarkdown(altText)}](${escapeMarkdownUrl(source)})`;
125
+ }
66
126
  function serializeHtmlFragment(text, styles) {
67
127
  let result = escapeHtml(text);
68
128
  if (styles.code) {
@@ -84,6 +144,9 @@ function serializeHtmlFragment(text, styles) {
84
144
  if (styleAttribute) {
85
145
  result = `<span style="${styleAttribute}">${result}</span>`;
86
146
  }
147
+ if (styles.link) {
148
+ result = `<a href="${escapeHtml(styles.link)}">${result}</a>`;
149
+ }
87
150
  return result;
88
151
  }
89
152
  function serializeMarkdownFragment(text, styles) {
@@ -107,6 +170,9 @@ function serializeMarkdownFragment(text, styles) {
107
170
  if (styleAttribute) {
108
171
  result = `<span style="${styleAttribute}">${result}</span>`;
109
172
  }
173
+ if (styles.link) {
174
+ result = `[${result}](${escapeMarkdownUrl(styles.link)})`;
175
+ }
110
176
  return result;
111
177
  }
112
178
  function buildInlineStyle(styles) {
@@ -122,6 +188,13 @@ function buildInlineStyle(styles) {
122
188
  }
123
189
  return cssRules.join('; ');
124
190
  }
191
+ function buildBlockStyle(textAlign) {
192
+ const cssRules = [];
193
+ if (textAlign) {
194
+ cssRules.push(`text-align: ${textAlign}`);
195
+ }
196
+ return cssRules.join('; ');
197
+ }
125
198
  function getLineHeading(line) {
126
199
  for (const fragment of line) {
127
200
  if (fragment.styles.heading && fragment.styles.heading !== 'none') {
@@ -130,6 +203,22 @@ function getLineHeading(line) {
130
203
  }
131
204
  return undefined;
132
205
  }
206
+ function getLineListType(line) {
207
+ for (const fragment of line) {
208
+ if (fragment.styles.listType && fragment.styles.listType !== 'none') {
209
+ return fragment.styles.listType;
210
+ }
211
+ }
212
+ return undefined;
213
+ }
214
+ function getLineTextAlign(line) {
215
+ for (const fragment of line) {
216
+ if (fragment.styles.textAlign) {
217
+ return fragment.styles.textAlign;
218
+ }
219
+ }
220
+ return undefined;
221
+ }
133
222
  function getHeadingPrefix(heading) {
134
223
  switch (heading) {
135
224
  case 'h1':
@@ -142,12 +231,19 @@ function getHeadingPrefix(heading) {
142
231
  return undefined;
143
232
  }
144
233
  }
234
+ function extractImageAlt(text) {
235
+ const normalized = text.replace(/^\[Image:\s*/i, '').replace(/^\[Image\]/i, '').replace(/\]$/, '').trim();
236
+ return normalized.length > 0 ? normalized : 'image';
237
+ }
145
238
  function escapeHtml(text) {
146
239
  return text.replaceAll('&', '&amp;').replaceAll('<', '&lt;').replaceAll('>', '&gt;').replaceAll('"', '&quot;').replaceAll("'", '&#39;');
147
240
  }
148
241
  function escapeMarkdown(text) {
149
242
  return text.replace(/([\\`*_~[\]])/g, '\\$1');
150
243
  }
244
+ function escapeMarkdownUrl(url) {
245
+ return url.replaceAll(' ', '%20').replaceAll(')', '%29');
246
+ }
151
247
  function wrapInlineCode(text) {
152
248
  const matches = text.match(/`+/g);
153
249
  const longestBacktickRun = matches?.reduce((max, match) => Math.max(max, match.length), 0) ?? 0;
@@ -1 +1 @@
1
- {"version":3,"names":["serializeSegments","segments","format","lines","splitSegmentsByLine","map","line","serializeLine","join","segmentsToMarkdown","segmentsToHTML","segment","parts","text","split","forEach","part","index","length","push","styles","heading","getLineHeading","content","fragment","serializeFragment","blockTag","headingPrefix","getHeadingPrefix","lineHeading","normalizedStyles","undefined","bold","serializeHtmlFragment","serializeMarkdownFragment","result","escapeHtml","code","italic","underline","strikethrough","styleAttribute","buildInlineStyle","escapeMarkdown","wrapInlineCode","cssRules","color","backgroundColor","fontSize","replaceAll","replace","matches","match","longestBacktickRun","reduce","max","Math","fence","repeat"],"sourceRoot":"../../../src","sources":["utils/serializer.ts"],"mappings":";;AASA;AACA;AACA;AACA,OAAO,SAASA,iBAAiBA,CAC/BC,QAAyB,EACzBC,MAAoB,GAAG,UAAU,EACzB;EACR,MAAMC,KAAK,GAAGC,mBAAmB,CAACH,QAAQ,CAAC;EAC3C,OAAOE,KAAK,CAACE,GAAG,CAAEC,IAAI,IAAKC,aAAa,CAACD,IAAI,EAAEJ,MAAM,CAAC,CAAC,CAACM,IAAI,CAAC,IAAI,CAAC;AACpE;;AAEA;AACA;AACA;AACA,OAAO,SAASC,kBAAkBA,CAACR,QAAyB,EAAU;EACpE,OAAOD,iBAAiB,CAACC,QAAQ,EAAE,UAAU,CAAC;AAChD;;AAEA;AACA;AACA;AACA,OAAO,SAASS,cAAcA,CAACT,QAAyB,EAAU;EAChE,OAAOD,iBAAiB,CAACC,QAAQ,EAAE,MAAM,CAAC;AAC5C;AAEA,SAASG,mBAAmBA,CAACH,QAAyB,EAAoB;EACxE,MAAME,KAAuB,GAAG,CAAC,EAAE,CAAC;EAEpC,KAAK,MAAMQ,OAAO,IAAIV,QAAQ,EAAE;IAC9B,MAAMW,KAAK,GAAGD,OAAO,CAACE,IAAI,CAACC,KAAK,CAAC,IAAI,CAAC;IAEtCF,KAAK,CAACG,OAAO,CAAC,CAACC,IAAI,EAAEC,KAAK,KAAK;MAC7B,IAAID,IAAI,CAACE,MAAM,GAAG,CAAC,EAAE;QACnBf,KAAK,CAACA,KAAK,CAACe,MAAM,GAAG,CAAC,CAAC,EAAEC,IAAI,CAAC;UAC5BN,IAAI,EAAEG,IAAI;UACVI,MAAM,EAAE;YAAE,GAAGT,OAAO,CAACS;UAAO;QAC9B,CAAC,CAAC;MACJ;MAEA,IAAIH,KAAK,GAAGL,KAAK,CAACM,MAAM,GAAG,CAAC,EAAE;QAC5Bf,KAAK,CAACgB,IAAI,CAAC,EAAE,CAAC;MAChB;IACF,CAAC,CAAC;EACJ;EAEA,OAAOhB,KAAK;AACd;AAEA,SAASI,aAAaA,CACpBD,IAAoB,EACpBJ,MAAoB,EACZ;EACR,MAAMmB,OAAO,GAAGC,cAAc,CAAChB,IAAI,CAAC;EACpC,MAAMiB,OAAO,GAAGjB,IAAI,CACjBD,GAAG,CAAEmB,QAAQ,IAAKC,iBAAiB,CAACD,QAAQ,EAAEtB,MAAM,EAAEmB,OAAO,CAAC,CAAC,CAC/Db,IAAI,CAAC,EAAE,CAAC;EAEX,IAAIN,MAAM,KAAK,MAAM,EAAE;IACrB,MAAMwB,QAAQ,GAAGL,OAAO,IAAI,GAAG;IAC/B,OAAO,IAAIK,QAAQ,IAAIH,OAAO,KAAKG,QAAQ,GAAG;EAChD;EAEA,MAAMC,aAAa,GAAGC,gBAAgB,CAACP,OAAO,CAAC;EAC/C,IAAI,CAACM,aAAa,EAAE;IAClB,OAAOJ,OAAO;EAChB;EAEA,OAAOA,OAAO,CAACL,MAAM,GAAG,CAAC,GAAG,GAAGS,aAAa,IAAIJ,OAAO,EAAE,GAAGI,aAAa;AAC3E;AAEA,SAASF,iBAAiBA,CACxBD,QAAsB,EACtBtB,MAAoB,EACpB2B,WAA0B,EAClB;EACR,MAAMC,gBAA6B,GAAG;IACpC,GAAGN,QAAQ,CAACJ,MAAM;IAClBC,OAAO,EAAEU,SAAS;IAClB;IACAC,IAAI,EACFH,WAAW,IAAIA,WAAW,KAAK,MAAM,GAAG,KAAK,GAAGL,QAAQ,CAACJ,MAAM,CAACY;EACpE,CAAC;EAED,OAAO9B,MAAM,KAAK,MAAM,GACpB+B,qBAAqB,CAACT,QAAQ,CAACX,IAAI,EAAEiB,gBAAgB,CAAC,GACtDI,yBAAyB,CAACV,QAAQ,CAACX,IAAI,EAAEiB,gBAAgB,CAAC;AAChE;AAEA,SAASG,qBAAqBA,CAACpB,IAAY,EAAEO,MAAmB,EAAU;EACxE,IAAIe,MAAM,GAAGC,UAAU,CAACvB,IAAI,CAAC;EAE7B,IAAIO,MAAM,CAACiB,IAAI,EAAE;IACfF,MAAM,GAAG,SAASA,MAAM,SAAS;EACnC;EAEA,IAAIf,MAAM,CAACY,IAAI,EAAE;IACfG,MAAM,GAAG,WAAWA,MAAM,WAAW;EACvC;EAEA,IAAIf,MAAM,CAACkB,MAAM,EAAE;IACjBH,MAAM,GAAG,OAAOA,MAAM,OAAO;EAC/B;EAEA,IAAIf,MAAM,CAACmB,SAAS,EAAE;IACpBJ,MAAM,GAAG,MAAMA,MAAM,MAAM;EAC7B;EAEA,IAAIf,MAAM,CAACoB,aAAa,EAAE;IACxBL,MAAM,GAAG,MAAMA,MAAM,MAAM;EAC7B;EAEA,MAAMM,cAAc,GAAGC,gBAAgB,CAACtB,MAAM,CAAC;EAC/C,IAAIqB,cAAc,EAAE;IAClBN,MAAM,GAAG,gBAAgBM,cAAc,KAAKN,MAAM,SAAS;EAC7D;EAEA,OAAOA,MAAM;AACf;AAEA,SAASD,yBAAyBA,CAACrB,IAAY,EAAEO,MAAmB,EAAU;EAC5E,IAAIe,MAAM,GAAGQ,cAAc,CAAC9B,IAAI,CAAC;EAEjC,IAAIO,MAAM,CAACiB,IAAI,EAAE;IACfF,MAAM,GAAGS,cAAc,CAAC/B,IAAI,CAAC;EAC/B;EAEA,IAAIO,MAAM,CAACY,IAAI,EAAE;IACfG,MAAM,GAAG,KAAKA,MAAM,IAAI;EAC1B;EAEA,IAAIf,MAAM,CAACkB,MAAM,EAAE;IACjBH,MAAM,GAAG,IAAIA,MAAM,GAAG;EACxB;EAEA,IAAIf,MAAM,CAACoB,aAAa,EAAE;IACxBL,MAAM,GAAG,KAAKA,MAAM,IAAI;EAC1B;EAEA,IAAIf,MAAM,CAACmB,SAAS,EAAE;IACpBJ,MAAM,GAAG,MAAMA,MAAM,MAAM;EAC7B;EAEA,MAAMM,cAAc,GAAGC,gBAAgB,CAACtB,MAAM,CAAC;EAC/C,IAAIqB,cAAc,EAAE;IAClBN,MAAM,GAAG,gBAAgBM,cAAc,KAAKN,MAAM,SAAS;EAC7D;EAEA,OAAOA,MAAM;AACf;AAEA,SAASO,gBAAgBA,CAACtB,MAAmB,EAAU;EACrD,MAAMyB,QAAkB,GAAG,EAAE;EAE7B,IAAIzB,MAAM,CAAC0B,KAAK,EAAE;IAChBD,QAAQ,CAAC1B,IAAI,CAAC,UAAUC,MAAM,CAAC0B,KAAK,EAAE,CAAC;EACzC;EAEA,IAAI1B,MAAM,CAAC2B,eAAe,EAAE;IAC1BF,QAAQ,CAAC1B,IAAI,CAAC,qBAAqBC,MAAM,CAAC2B,eAAe,EAAE,CAAC;EAC9D;EAEA,IAAI3B,MAAM,CAAC4B,QAAQ,EAAE;IACnBH,QAAQ,CAAC1B,IAAI,CAAC,cAAcC,MAAM,CAAC4B,QAAQ,IAAI,CAAC;EAClD;EAEA,OAAOH,QAAQ,CAACrC,IAAI,CAAC,IAAI,CAAC;AAC5B;AAEA,SAASc,cAAcA,CAAChB,IAAoB,EAA4B;EACtE,KAAK,MAAMkB,QAAQ,IAAIlB,IAAI,EAAE;IAC3B,IAAIkB,QAAQ,CAACJ,MAAM,CAACC,OAAO,IAAIG,QAAQ,CAACJ,MAAM,CAACC,OAAO,KAAK,MAAM,EAAE;MACjE,OAAOG,QAAQ,CAACJ,MAAM,CAACC,OAAO;IAChC;EACF;EAEA,OAAOU,SAAS;AAClB;AAEA,SAASH,gBAAgBA,CAACP,OAAsB,EAAsB;EACpE,QAAQA,OAAO;IACb,KAAK,IAAI;MACP,OAAO,GAAG;IACZ,KAAK,IAAI;MACP,OAAO,IAAI;IACb,KAAK,IAAI;MACP,OAAO,KAAK;IACd;MACE,OAAOU,SAAS;EACpB;AACF;AAEA,SAASK,UAAUA,CAACvB,IAAY,EAAU;EACxC,OAAOA,IAAI,CACRoC,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,CACxBA,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,CACvBA,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,CACvBA,UAAU,CAAC,GAAG,EAAE,QAAQ,CAAC,CACzBA,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC;AAC7B;AAEA,SAASN,cAAcA,CAAC9B,IAAY,EAAU;EAC5C,OAAOA,IAAI,CAACqC,OAAO,CAAC,gBAAgB,EAAE,MAAM,CAAC;AAC/C;AAEA,SAASN,cAAcA,CAAC/B,IAAY,EAAU;EAC5C,MAAMsC,OAAO,GAAGtC,IAAI,CAACuC,KAAK,CAAC,KAAK,CAAC;EACjC,MAAMC,kBAAkB,GAAGF,OAAO,EAAEG,MAAM,CACxC,CAACC,GAAG,EAAEH,KAAK,KAAKI,IAAI,CAACD,GAAG,CAACA,GAAG,EAAEH,KAAK,CAAClC,MAAM,CAAC,EAC3C,CACF,CAAC,IAAI,CAAC;EACN,MAAMuC,KAAK,GAAG,GAAG,CAACC,MAAM,CAACL,kBAAkB,GAAG,CAAC,CAAC;EAEhD,OAAO,GAAGI,KAAK,GAAG5C,IAAI,GAAG4C,KAAK,EAAE;AAClC","ignoreList":[]}
1
+ {"version":3,"names":["serializeSegments","segments","format","lines","splitSegmentsByLine","blocks","index","length","line","listType","getLineListType","listLines","push","serializeListBlock","serializeBlockLine","join","segmentsToMarkdown","segmentsToHTML","segment","parts","text","split","forEach","part","styles","imageSrc","some","getLineTextAlign","tag","items","map","serializeHtmlListItem","marker","content","serializeLineContent","styleAttribute","buildBlockStyle","heading","getLineHeading","textAlign","blockTag","serializeAlignedMarkdownLine","headingPrefix","getHeadingPrefix","lineHeading","fragment","serializeFragment","serializeImageFragment","normalizedStyles","undefined","imageAlt","bold","serializeHtmlFragment","serializeMarkdownFragment","source","altText","extractImageAlt","escapeHtml","escapeMarkdown","escapeMarkdownUrl","result","code","italic","underline","strikethrough","buildInlineStyle","link","wrapInlineCode","cssRules","color","backgroundColor","fontSize","normalized","replace","trim","replaceAll","url","matches","match","longestBacktickRun","reduce","max","Math","fence","repeat"],"sourceRoot":"../../../src","sources":["utils/serializer.ts"],"mappings":";;AAWA;AACA;AACA;AACA,OAAO,SAASA,iBAAiBA,CAC/BC,QAAyB,EACzBC,MAAoB,GAAG,UAAU,EACzB;EACR,MAAMC,KAAK,GAAGC,mBAAmB,CAACH,QAAQ,CAAC;EAC3C,MAAMI,MAAgB,GAAG,EAAE;EAE3B,KAAK,IAAIC,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAGH,KAAK,CAACI,MAAM,GAAI;IAC1C,MAAMC,IAAI,GAAGL,KAAK,CAACG,KAAK,CAAC;IACzB,MAAMG,QAAQ,GAAGC,eAAe,CAACF,IAAI,CAAC;IAEtC,IAAIC,QAAQ,IAAIA,QAAQ,KAAK,MAAM,EAAE;MACnC,MAAME,SAA2B,GAAG,EAAE;MAEtC,OAAOL,KAAK,GAAGH,KAAK,CAACI,MAAM,IAAIG,eAAe,CAACP,KAAK,CAACG,KAAK,CAAC,CAAC,KAAKG,QAAQ,EAAE;QACzEE,SAAS,CAACC,IAAI,CAACT,KAAK,CAACG,KAAK,CAAC,CAAC;QAC5BA,KAAK,EAAE;MACT;MAEAD,MAAM,CAACO,IAAI,CAACC,kBAAkB,CAACF,SAAS,EAAET,MAAM,EAAEO,QAAQ,CAAC,CAAC;MAC5D;IACF;IAEAJ,MAAM,CAACO,IAAI,CAACE,kBAAkB,CAACN,IAAI,EAAEN,MAAM,CAAC,CAAC;IAC7CI,KAAK,EAAE;EACT;EAEA,OAAOD,MAAM,CAACU,IAAI,CAAC,IAAI,CAAC;AAC1B;;AAEA;AACA;AACA;AACA,OAAO,SAASC,kBAAkBA,CAACf,QAAyB,EAAU;EACpE,OAAOD,iBAAiB,CAACC,QAAQ,EAAE,UAAU,CAAC;AAChD;;AAEA;AACA;AACA;AACA,OAAO,SAASgB,cAAcA,CAAChB,QAAyB,EAAU;EAChE,OAAOD,iBAAiB,CAACC,QAAQ,EAAE,MAAM,CAAC;AAC5C;AAEA,SAASG,mBAAmBA,CAACH,QAAyB,EAAoB;EACxE,MAAME,KAAuB,GAAG,CAAC,EAAE,CAAC;EAEpC,KAAK,MAAMe,OAAO,IAAIjB,QAAQ,EAAE;IAC9B,MAAMkB,KAAK,GAAGD,OAAO,CAACE,IAAI,CAACC,KAAK,CAAC,IAAI,CAAC;IAEtCF,KAAK,CAACG,OAAO,CAAC,CAACC,IAAI,EAAEjB,KAAK,KAAK;MAC7B,IAAIiB,IAAI,CAAChB,MAAM,GAAG,CAAC,IAAIW,OAAO,CAACM,MAAM,CAACC,QAAQ,EAAE;QAC9CtB,KAAK,CAACA,KAAK,CAACI,MAAM,GAAG,CAAC,CAAC,EAAEK,IAAI,CAAC;UAC5BQ,IAAI,EAAEG,IAAI;UACVC,MAAM,EAAE;YAAE,GAAGN,OAAO,CAACM;UAAO;QAC9B,CAAC,CAAC;MACJ;MAEA,IAAIlB,KAAK,GAAGa,KAAK,CAACZ,MAAM,GAAG,CAAC,EAAE;QAC5BJ,KAAK,CAACS,IAAI,CAAC,EAAE,CAAC;MAChB;IACF,CAAC,CAAC;EACJ;EAEA,OAAOT,KAAK;AACd;AAEA,SAASU,kBAAkBA,CACzBV,KAAuB,EACvBD,MAAoB,EACpBO,QAAkB,EACV;EACR,IAAIP,MAAM,KAAK,MAAM,IAAIC,KAAK,CAACuB,IAAI,CAAElB,IAAI,IAAK,CAAC,CAACmB,gBAAgB,CAACnB,IAAI,CAAC,CAAC,EAAE;IACvE,MAAMoB,GAAG,GAAGnB,QAAQ,KAAK,SAAS,GAAG,IAAI,GAAG,IAAI;IAChD,MAAMoB,KAAK,GAAG1B,KAAK,CAAC2B,GAAG,CAAEtB,IAAI,IAAKuB,qBAAqB,CAACvB,IAAI,CAAC,CAAC,CAACO,IAAI,CAAC,EAAE,CAAC;IACvE,OAAO,IAAIa,GAAG,IAAIC,KAAK,KAAKD,GAAG,GAAG;EACpC;EAEA,OAAOzB,KAAK,CACT2B,GAAG,CAAC,CAACtB,IAAI,EAAEF,KAAK,KAAK;IACpB,MAAM0B,MAAM,GAAGvB,QAAQ,KAAK,SAAS,GAAG,GAAGH,KAAK,GAAG,CAAC,GAAG,GAAG,GAAG;IAC7D,MAAM2B,OAAO,GAAGC,oBAAoB,CAAC1B,IAAI,EAAEN,MAAM,CAAC;IAClD,OAAO+B,OAAO,CAAC1B,MAAM,GAAG,CAAC,GAAG,GAAGyB,MAAM,IAAIC,OAAO,EAAE,GAAGD,MAAM;EAC7D,CAAC,CAAC,CACDjB,IAAI,CAAC,IAAI,CAAC;AACf;AAEA,SAASgB,qBAAqBA,CAACvB,IAAoB,EAAU;EAC3D,MAAMyB,OAAO,GAAGC,oBAAoB,CAAC1B,IAAI,EAAE,MAAM,CAAC;EAClD,MAAM2B,cAAc,GAAGC,eAAe,CAACT,gBAAgB,CAACnB,IAAI,CAAC,CAAC;EAC9D,OAAO,MAAM2B,cAAc,GAAG,WAAWA,cAAc,GAAG,GAAG,EAAE,IAAIF,OAAO,OAAO;AACnF;AAEA,SAASnB,kBAAkBA,CACzBN,IAAoB,EACpBN,MAAoB,EACZ;EACR,MAAMmC,OAAO,GAAGC,cAAc,CAAC9B,IAAI,CAAC;EACpC,MAAM+B,SAAS,GAAGZ,gBAAgB,CAACnB,IAAI,CAAC;EACxC,MAAMyB,OAAO,GAAGC,oBAAoB,CAAC1B,IAAI,EAAEN,MAAM,EAAEmC,OAAO,CAAC;EAE3D,IAAInC,MAAM,KAAK,MAAM,EAAE;IACrB,MAAMsC,QAAQ,GAAGH,OAAO,IAAI,GAAG;IAC/B,MAAMF,cAAc,GAAGC,eAAe,CAACG,SAAS,CAAC;IACjD,OAAO,IAAIC,QAAQ,GAAGL,cAAc,GAAG,WAAWA,cAAc,GAAG,GAAG,EAAE,IAAIF,OAAO,KAAKO,QAAQ,GAAG;EACrG;EAEA,IAAID,SAAS,EAAE;IACb,OAAOE,4BAA4B,CAACR,OAAO,EAAEI,OAAO,EAAEE,SAAS,CAAC;EAClE;EAEA,MAAMG,aAAa,GAAGC,gBAAgB,CAACN,OAAO,CAAC;EAC/C,IAAI,CAACK,aAAa,EAAE;IAClB,OAAOT,OAAO;EAChB;EAEA,OAAOA,OAAO,CAAC1B,MAAM,GAAG,CAAC,GAAG,GAAGmC,aAAa,IAAIT,OAAO,EAAE,GAAGS,aAAa;AAC3E;AAEA,SAASD,4BAA4BA,CACnCR,OAAe,EACfI,OAAiC,EACjCE,SAAoB,EACZ;EACR,MAAMC,QAAQ,GAAGH,OAAO,IAAI,GAAG;EAC/B,MAAMF,cAAc,GAAGC,eAAe,CAACG,SAAS,CAAC;EACjD,OAAO,IAAIC,QAAQ,WAAWL,cAAc,KAAKF,OAAO,KAAKO,QAAQ,GAAG;AAC1E;AAEA,SAASN,oBAAoBA,CAC3B1B,IAAoB,EACpBN,MAAoB,EACpB0C,WAA0B,EAClB;EACR,OAAOpC,IAAI,CACRsB,GAAG,CAAEe,QAAQ,IAAKC,iBAAiB,CAACD,QAAQ,EAAE3C,MAAM,EAAE0C,WAAW,CAAC,CAAC,CACnE7B,IAAI,CAAC,EAAE,CAAC;AACb;AAEA,SAAS+B,iBAAiBA,CACxBD,QAAsB,EACtB3C,MAAoB,EACpB0C,WAA0B,EAClB;EACR,IAAIC,QAAQ,CAACrB,MAAM,CAACC,QAAQ,EAAE;IAC5B,OAAOsB,sBAAsB,CAACF,QAAQ,EAAE3C,MAAM,CAAC;EACjD;EAEA,MAAM8C,gBAA6B,GAAG;IACpC,GAAGH,QAAQ,CAACrB,MAAM;IAClBa,OAAO,EAAEY,SAAS;IAClBxC,QAAQ,EAAEwC,SAAS;IACnBV,SAAS,EAAEU,SAAS;IACpBxB,QAAQ,EAAEwB,SAAS;IACnBC,QAAQ,EAAED,SAAS;IACnBE,IAAI,EACFP,WAAW,IAAIA,WAAW,KAAK,MAAM,GAAG,KAAK,GAAGC,QAAQ,CAACrB,MAAM,CAAC2B;EACpE,CAAC;EAED,OAAOjD,MAAM,KAAK,MAAM,GACpBkD,qBAAqB,CAACP,QAAQ,CAACzB,IAAI,EAAE4B,gBAAgB,CAAC,GACtDK,yBAAyB,CAACR,QAAQ,CAACzB,IAAI,EAAE4B,gBAAgB,CAAC;AAChE;AAEA,SAASD,sBAAsBA,CAC7BF,QAAsB,EACtB3C,MAAoB,EACZ;EACR,MAAMoD,MAAM,GAAGT,QAAQ,CAACrB,MAAM,CAACC,QAAQ,IAAI,EAAE;EAC7C,MAAM8B,OAAO,GAAGV,QAAQ,CAACrB,MAAM,CAAC0B,QAAQ,IAAIM,eAAe,CAACX,QAAQ,CAACzB,IAAI,CAAC;EAE1E,IAAIlB,MAAM,KAAK,MAAM,EAAE;IACrB,OAAO,aAAauD,UAAU,CAACH,MAAM,CAAC,UAAUG,UAAU,CAACF,OAAO,CAAC,MAAM;EAC3E;EAEA,OAAO,KAAKG,cAAc,CAACH,OAAO,CAAC,KAAKI,iBAAiB,CAACL,MAAM,CAAC,GAAG;AACtE;AAEA,SAASF,qBAAqBA,CAAChC,IAAY,EAAEI,MAAmB,EAAU;EACxE,IAAIoC,MAAM,GAAGH,UAAU,CAACrC,IAAI,CAAC;EAE7B,IAAII,MAAM,CAACqC,IAAI,EAAE;IACfD,MAAM,GAAG,SAASA,MAAM,SAAS;EACnC;EAEA,IAAIpC,MAAM,CAAC2B,IAAI,EAAE;IACfS,MAAM,GAAG,WAAWA,MAAM,WAAW;EACvC;EAEA,IAAIpC,MAAM,CAACsC,MAAM,EAAE;IACjBF,MAAM,GAAG,OAAOA,MAAM,OAAO;EAC/B;EAEA,IAAIpC,MAAM,CAACuC,SAAS,EAAE;IACpBH,MAAM,GAAG,MAAMA,MAAM,MAAM;EAC7B;EAEA,IAAIpC,MAAM,CAACwC,aAAa,EAAE;IACxBJ,MAAM,GAAG,MAAMA,MAAM,MAAM;EAC7B;EAEA,MAAMzB,cAAc,GAAG8B,gBAAgB,CAACzC,MAAM,CAAC;EAC/C,IAAIW,cAAc,EAAE;IAClByB,MAAM,GAAG,gBAAgBzB,cAAc,KAAKyB,MAAM,SAAS;EAC7D;EAEA,IAAIpC,MAAM,CAAC0C,IAAI,EAAE;IACfN,MAAM,GAAG,YAAYH,UAAU,CAACjC,MAAM,CAAC0C,IAAI,CAAC,KAAKN,MAAM,MAAM;EAC/D;EAEA,OAAOA,MAAM;AACf;AAEA,SAASP,yBAAyBA,CAACjC,IAAY,EAAEI,MAAmB,EAAU;EAC5E,IAAIoC,MAAM,GAAGF,cAAc,CAACtC,IAAI,CAAC;EAEjC,IAAII,MAAM,CAACqC,IAAI,EAAE;IACfD,MAAM,GAAGO,cAAc,CAAC/C,IAAI,CAAC;EAC/B;EAEA,IAAII,MAAM,CAAC2B,IAAI,EAAE;IACfS,MAAM,GAAG,KAAKA,MAAM,IAAI;EAC1B;EAEA,IAAIpC,MAAM,CAACsC,MAAM,EAAE;IACjBF,MAAM,GAAG,IAAIA,MAAM,GAAG;EACxB;EAEA,IAAIpC,MAAM,CAACwC,aAAa,EAAE;IACxBJ,MAAM,GAAG,KAAKA,MAAM,IAAI;EAC1B;EAEA,IAAIpC,MAAM,CAACuC,SAAS,EAAE;IACpBH,MAAM,GAAG,MAAMA,MAAM,MAAM;EAC7B;EAEA,MAAMzB,cAAc,GAAG8B,gBAAgB,CAACzC,MAAM,CAAC;EAC/C,IAAIW,cAAc,EAAE;IAClByB,MAAM,GAAG,gBAAgBzB,cAAc,KAAKyB,MAAM,SAAS;EAC7D;EAEA,IAAIpC,MAAM,CAAC0C,IAAI,EAAE;IACfN,MAAM,GAAG,IAAIA,MAAM,KAAKD,iBAAiB,CAACnC,MAAM,CAAC0C,IAAI,CAAC,GAAG;EAC3D;EAEA,OAAON,MAAM;AACf;AAEA,SAASK,gBAAgBA,CAACzC,MAAmB,EAAU;EACrD,MAAM4C,QAAkB,GAAG,EAAE;EAE7B,IAAI5C,MAAM,CAAC6C,KAAK,EAAE;IAChBD,QAAQ,CAACxD,IAAI,CAAC,UAAUY,MAAM,CAAC6C,KAAK,EAAE,CAAC;EACzC;EAEA,IAAI7C,MAAM,CAAC8C,eAAe,EAAE;IAC1BF,QAAQ,CAACxD,IAAI,CAAC,qBAAqBY,MAAM,CAAC8C,eAAe,EAAE,CAAC;EAC9D;EAEA,IAAI9C,MAAM,CAAC+C,QAAQ,EAAE;IACnBH,QAAQ,CAACxD,IAAI,CAAC,cAAcY,MAAM,CAAC+C,QAAQ,IAAI,CAAC;EAClD;EAEA,OAAOH,QAAQ,CAACrD,IAAI,CAAC,IAAI,CAAC;AAC5B;AAEA,SAASqB,eAAeA,CAACG,SAAqB,EAAU;EACtD,MAAM6B,QAAkB,GAAG,EAAE;EAE7B,IAAI7B,SAAS,EAAE;IACb6B,QAAQ,CAACxD,IAAI,CAAC,eAAe2B,SAAS,EAAE,CAAC;EAC3C;EAEA,OAAO6B,QAAQ,CAACrD,IAAI,CAAC,IAAI,CAAC;AAC5B;AAEA,SAASuB,cAAcA,CAAC9B,IAAoB,EAA4B;EACtE,KAAK,MAAMqC,QAAQ,IAAIrC,IAAI,EAAE;IAC3B,IAAIqC,QAAQ,CAACrB,MAAM,CAACa,OAAO,IAAIQ,QAAQ,CAACrB,MAAM,CAACa,OAAO,KAAK,MAAM,EAAE;MACjE,OAAOQ,QAAQ,CAACrB,MAAM,CAACa,OAAO;IAChC;EACF;EAEA,OAAOY,SAAS;AAClB;AAEA,SAASvC,eAAeA,CAACF,IAAoB,EAAwB;EACnE,KAAK,MAAMqC,QAAQ,IAAIrC,IAAI,EAAE;IAC3B,IAAIqC,QAAQ,CAACrB,MAAM,CAACf,QAAQ,IAAIoC,QAAQ,CAACrB,MAAM,CAACf,QAAQ,KAAK,MAAM,EAAE;MACnE,OAAOoC,QAAQ,CAACrB,MAAM,CAACf,QAAQ;IACjC;EACF;EAEA,OAAOwC,SAAS;AAClB;AAEA,SAAStB,gBAAgBA,CAACnB,IAAoB,EAAyB;EACrE,KAAK,MAAMqC,QAAQ,IAAIrC,IAAI,EAAE;IAC3B,IAAIqC,QAAQ,CAACrB,MAAM,CAACe,SAAS,EAAE;MAC7B,OAAOM,QAAQ,CAACrB,MAAM,CAACe,SAAS;IAClC;EACF;EAEA,OAAOU,SAAS;AAClB;AAEA,SAASN,gBAAgBA,CAACN,OAAsB,EAAsB;EACpE,QAAQA,OAAO;IACb,KAAK,IAAI;MACP,OAAO,GAAG;IACZ,KAAK,IAAI;MACP,OAAO,IAAI;IACb,KAAK,IAAI;MACP,OAAO,KAAK;IACd;MACE,OAAOY,SAAS;EACpB;AACF;AAEA,SAASO,eAAeA,CAACpC,IAAY,EAAU;EAC7C,MAAMoD,UAAU,GAAGpD,IAAI,CAACqD,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAACA,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAACA,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAACC,IAAI,CAAC,CAAC;EACzG,OAAOF,UAAU,CAACjE,MAAM,GAAG,CAAC,GAAGiE,UAAU,GAAG,OAAO;AACrD;AAEA,SAASf,UAAUA,CAACrC,IAAY,EAAU;EACxC,OAAOA,IAAI,CACRuD,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,CACxBA,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,CACvBA,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,CACvBA,UAAU,CAAC,GAAG,EAAE,QAAQ,CAAC,CACzBA,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC;AAC7B;AAEA,SAASjB,cAAcA,CAACtC,IAAY,EAAU;EAC5C,OAAOA,IAAI,CAACqD,OAAO,CAAC,gBAAgB,EAAE,MAAM,CAAC;AAC/C;AAEA,SAASd,iBAAiBA,CAACiB,GAAW,EAAU;EAC9C,OAAOA,GAAG,CAACD,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,CAACA,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC;AAC1D;AAEA,SAASR,cAAcA,CAAC/C,IAAY,EAAU;EAC5C,MAAMyD,OAAO,GAAGzD,IAAI,CAAC0D,KAAK,CAAC,KAAK,CAAC;EACjC,MAAMC,kBAAkB,GAAGF,OAAO,EAAEG,MAAM,CACxC,CAACC,GAAG,EAAEH,KAAK,KAAKI,IAAI,CAACD,GAAG,CAACA,GAAG,EAAEH,KAAK,CAACvE,MAAM,CAAC,EAC3C,CACF,CAAC,IAAI,CAAC;EACN,MAAM4E,KAAK,GAAG,GAAG,CAACC,MAAM,CAACL,kBAAkB,GAAG,CAAC,CAAC;EAEhD,OAAO,GAAGI,KAAK,GAAG/D,IAAI,GAAG+D,KAAK,EAAE;AAClC","ignoreList":[]}
@@ -51,6 +51,9 @@ export function formatStyleToTextStyle(formatStyle, theme) {
51
51
  if (formatStyle.fontSize) {
52
52
  style.fontSize = formatStyle.fontSize;
53
53
  }
54
+ if (formatStyle.textAlign) {
55
+ style.textAlign = formatStyle.textAlign;
56
+ }
54
57
 
55
58
  // Heading — overrides font size and weight
56
59
  if (formatStyle.heading && formatStyle.heading !== 'none') {
@@ -58,6 +61,14 @@ export function formatStyleToTextStyle(formatStyle, theme) {
58
61
  style.fontWeight = 'bold';
59
62
  style.lineHeight = HEADING_FONT_SIZES[formatStyle.heading] * 1.3;
60
63
  }
64
+ if (formatStyle.link) {
65
+ style.color = style.color ?? resolvedTheme.colors?.link ?? DEFAULT_THEME.colors?.link ?? DEFAULT_THEME.colors?.primary;
66
+ if (style.textDecorationLine === 'line-through') {
67
+ style.textDecorationLine = 'underline line-through';
68
+ } else if (!style.textDecorationLine || style.textDecorationLine === 'none') {
69
+ style.textDecorationLine = 'underline';
70
+ }
71
+ }
61
72
  return style;
62
73
  }
63
74