react-native-richify 1.0.4 → 1.0.5

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 (74) hide show
  1. package/lib/commonjs/components/RenderedOutput.js +168 -0
  2. package/lib/commonjs/components/RenderedOutput.js.map +1 -0
  3. package/lib/commonjs/components/RichTextInput.js +134 -15
  4. package/lib/commonjs/components/RichTextInput.js.map +1 -1
  5. package/lib/commonjs/components/Toolbar.js +41 -2
  6. package/lib/commonjs/components/Toolbar.js.map +1 -1
  7. package/lib/commonjs/constants/defaultStyles.js +55 -1
  8. package/lib/commonjs/constants/defaultStyles.js.map +1 -1
  9. package/lib/commonjs/hooks/useFormatting.js +40 -2
  10. package/lib/commonjs/hooks/useFormatting.js.map +1 -1
  11. package/lib/commonjs/hooks/useRichText.js +75 -6
  12. package/lib/commonjs/hooks/useRichText.js.map +1 -1
  13. package/lib/commonjs/utils/formatter.js +48 -9
  14. package/lib/commonjs/utils/formatter.js.map +1 -1
  15. package/lib/commonjs/utils/parser.js +1 -1
  16. package/lib/commonjs/utils/parser.js.map +1 -1
  17. package/lib/commonjs/utils/serializer.js +102 -6
  18. package/lib/commonjs/utils/serializer.js.map +1 -1
  19. package/lib/commonjs/utils/styleMapper.js +11 -0
  20. package/lib/commonjs/utils/styleMapper.js.map +1 -1
  21. package/lib/module/components/RenderedOutput.js +163 -0
  22. package/lib/module/components/RenderedOutput.js.map +1 -0
  23. package/lib/module/components/RichTextInput.js +135 -16
  24. package/lib/module/components/RichTextInput.js.map +1 -1
  25. package/lib/module/components/Toolbar.js +41 -2
  26. package/lib/module/components/Toolbar.js.map +1 -1
  27. package/lib/module/constants/defaultStyles.js +55 -1
  28. package/lib/module/constants/defaultStyles.js.map +1 -1
  29. package/lib/module/hooks/useFormatting.js +41 -3
  30. package/lib/module/hooks/useFormatting.js.map +1 -1
  31. package/lib/module/hooks/useRichText.js +75 -6
  32. package/lib/module/hooks/useRichText.js.map +1 -1
  33. package/lib/module/utils/formatter.js +46 -9
  34. package/lib/module/utils/formatter.js.map +1 -1
  35. package/lib/module/utils/parser.js +1 -1
  36. package/lib/module/utils/parser.js.map +1 -1
  37. package/lib/module/utils/serializer.js +102 -6
  38. package/lib/module/utils/serializer.js.map +1 -1
  39. package/lib/module/utils/styleMapper.js +11 -0
  40. package/lib/module/utils/styleMapper.js.map +1 -1
  41. package/lib/typescript/src/components/RenderedOutput.d.ts +9 -0
  42. package/lib/typescript/src/components/RenderedOutput.d.ts.map +1 -0
  43. package/lib/typescript/src/components/RichTextInput.d.ts.map +1 -1
  44. package/lib/typescript/src/components/Toolbar.d.ts.map +1 -1
  45. package/lib/typescript/src/constants/defaultStyles.d.ts +1 -0
  46. package/lib/typescript/src/constants/defaultStyles.d.ts.map +1 -1
  47. package/lib/typescript/src/hooks/useFormatting.d.ts +4 -1
  48. package/lib/typescript/src/hooks/useFormatting.d.ts.map +1 -1
  49. package/lib/typescript/src/hooks/useRichText.d.ts.map +1 -1
  50. package/lib/typescript/src/index.d.ts +1 -1
  51. package/lib/typescript/src/index.d.ts.map +1 -1
  52. package/lib/typescript/src/types/index.d.ts +94 -1
  53. package/lib/typescript/src/types/index.d.ts.map +1 -1
  54. package/lib/typescript/src/utils/formatter.d.ts +9 -1
  55. package/lib/typescript/src/utils/formatter.d.ts.map +1 -1
  56. package/lib/typescript/src/utils/parser.d.ts.map +1 -1
  57. package/lib/typescript/src/utils/serializer.d.ts.map +1 -1
  58. package/lib/typescript/src/utils/styleMapper.d.ts.map +1 -1
  59. package/package.json +1 -1
  60. package/src/components/RenderedOutput.tsx +231 -0
  61. package/src/components/RichTextInput.tsx +197 -19
  62. package/src/components/Toolbar.tsx +54 -2
  63. package/src/constants/defaultStyles.d.ts +2 -1
  64. package/src/constants/defaultStyles.ts +21 -0
  65. package/src/hooks/useFormatting.ts +76 -2
  66. package/src/hooks/useRichText.ts +101 -5
  67. package/src/index.d.ts +1 -1
  68. package/src/index.ts +4 -0
  69. package/src/types/index.d.ts +94 -1
  70. package/src/types/index.ts +104 -1
  71. package/src/utils/formatter.ts +60 -6
  72. package/src/utils/parser.ts +6 -1
  73. package/src/utils/serializer.ts +150 -8
  74. package/src/utils/styleMapper.ts +21 -0
@@ -11,7 +11,23 @@ exports.serializeSegments = serializeSegments;
11
11
  */
12
12
  function serializeSegments(segments, format = 'markdown') {
13
13
  const lines = splitSegmentsByLine(segments);
14
- return lines.map(line => serializeLine(line, format)).join('\n');
14
+ const blocks = [];
15
+ for (let index = 0; index < lines.length;) {
16
+ const line = lines[index];
17
+ const listType = getLineListType(line);
18
+ if (listType && listType !== 'none') {
19
+ const listLines = [];
20
+ while (index < lines.length && getLineListType(lines[index]) === listType) {
21
+ listLines.push(lines[index]);
22
+ index++;
23
+ }
24
+ blocks.push(serializeListBlock(listLines, format, listType));
25
+ continue;
26
+ }
27
+ blocks.push(serializeBlockLine(line, format));
28
+ index++;
29
+ }
30
+ return blocks.join('\n');
15
31
  }
16
32
 
17
33
  /**
@@ -32,7 +48,7 @@ function splitSegmentsByLine(segments) {
32
48
  for (const segment of segments) {
33
49
  const parts = segment.text.split('\n');
34
50
  parts.forEach((part, index) => {
35
- if (part.length > 0) {
51
+ if (part.length > 0 || segment.styles.imageSrc) {
36
52
  lines[lines.length - 1]?.push({
37
53
  text: part,
38
54
  styles: {
@@ -47,12 +63,34 @@ function splitSegmentsByLine(segments) {
47
63
  }
48
64
  return lines;
49
65
  }
50
- function serializeLine(line, format) {
66
+ function serializeListBlock(lines, format, listType) {
67
+ if (format === 'html' || lines.some(line => !!getLineTextAlign(line))) {
68
+ const tag = listType === 'ordered' ? 'ol' : 'ul';
69
+ const items = lines.map(line => serializeHtmlListItem(line)).join('');
70
+ return `<${tag}>${items}</${tag}>`;
71
+ }
72
+ return lines.map((line, index) => {
73
+ const marker = listType === 'ordered' ? `${index + 1}.` : '-';
74
+ const content = serializeLineContent(line, format);
75
+ return content.length > 0 ? `${marker} ${content}` : marker;
76
+ }).join('\n');
77
+ }
78
+ function serializeHtmlListItem(line) {
79
+ const content = serializeLineContent(line, 'html');
80
+ const styleAttribute = buildBlockStyle(getLineTextAlign(line));
81
+ return `<li${styleAttribute ? ` style="${styleAttribute}"` : ''}>${content}</li>`;
82
+ }
83
+ function serializeBlockLine(line, format) {
51
84
  const heading = getLineHeading(line);
52
- const content = line.map(fragment => serializeFragment(fragment, format, heading)).join('');
85
+ const textAlign = getLineTextAlign(line);
86
+ const content = serializeLineContent(line, format, heading);
53
87
  if (format === 'html') {
54
88
  const blockTag = heading ?? 'p';
55
- return `<${blockTag}>${content}</${blockTag}>`;
89
+ const styleAttribute = buildBlockStyle(textAlign);
90
+ return `<${blockTag}${styleAttribute ? ` style="${styleAttribute}"` : ''}>${content}</${blockTag}>`;
91
+ }
92
+ if (textAlign) {
93
+ return serializeAlignedMarkdownLine(content, heading, textAlign);
56
94
  }
57
95
  const headingPrefix = getHeadingPrefix(heading);
58
96
  if (!headingPrefix) {
@@ -60,15 +98,37 @@ function serializeLine(line, format) {
60
98
  }
61
99
  return content.length > 0 ? `${headingPrefix} ${content}` : headingPrefix;
62
100
  }
101
+ function serializeAlignedMarkdownLine(content, heading, textAlign) {
102
+ const blockTag = heading ?? 'p';
103
+ const styleAttribute = buildBlockStyle(textAlign);
104
+ return `<${blockTag} style="${styleAttribute}">${content}</${blockTag}>`;
105
+ }
106
+ function serializeLineContent(line, format, lineHeading) {
107
+ return line.map(fragment => serializeFragment(fragment, format, lineHeading)).join('');
108
+ }
63
109
  function serializeFragment(fragment, format, lineHeading) {
110
+ if (fragment.styles.imageSrc) {
111
+ return serializeImageFragment(fragment, format);
112
+ }
64
113
  const normalizedStyles = {
65
114
  ...fragment.styles,
66
115
  heading: undefined,
67
- // Markdown headings already express emphasis at the block level.
116
+ listType: undefined,
117
+ textAlign: undefined,
118
+ imageSrc: undefined,
119
+ imageAlt: undefined,
68
120
  bold: lineHeading && lineHeading !== 'none' ? false : fragment.styles.bold
69
121
  };
70
122
  return format === 'html' ? serializeHtmlFragment(fragment.text, normalizedStyles) : serializeMarkdownFragment(fragment.text, normalizedStyles);
71
123
  }
124
+ function serializeImageFragment(fragment, format) {
125
+ const source = fragment.styles.imageSrc ?? '';
126
+ const altText = fragment.styles.imageAlt ?? extractImageAlt(fragment.text);
127
+ if (format === 'html') {
128
+ return `<img src="${escapeHtml(source)}" alt="${escapeHtml(altText)}" />`;
129
+ }
130
+ return `![${escapeMarkdown(altText)}](${escapeMarkdownUrl(source)})`;
131
+ }
72
132
  function serializeHtmlFragment(text, styles) {
73
133
  let result = escapeHtml(text);
74
134
  if (styles.code) {
@@ -90,6 +150,9 @@ function serializeHtmlFragment(text, styles) {
90
150
  if (styleAttribute) {
91
151
  result = `<span style="${styleAttribute}">${result}</span>`;
92
152
  }
153
+ if (styles.link) {
154
+ result = `<a href="${escapeHtml(styles.link)}">${result}</a>`;
155
+ }
93
156
  return result;
94
157
  }
95
158
  function serializeMarkdownFragment(text, styles) {
@@ -113,6 +176,9 @@ function serializeMarkdownFragment(text, styles) {
113
176
  if (styleAttribute) {
114
177
  result = `<span style="${styleAttribute}">${result}</span>`;
115
178
  }
179
+ if (styles.link) {
180
+ result = `[${result}](${escapeMarkdownUrl(styles.link)})`;
181
+ }
116
182
  return result;
117
183
  }
118
184
  function buildInlineStyle(styles) {
@@ -128,6 +194,13 @@ function buildInlineStyle(styles) {
128
194
  }
129
195
  return cssRules.join('; ');
130
196
  }
197
+ function buildBlockStyle(textAlign) {
198
+ const cssRules = [];
199
+ if (textAlign) {
200
+ cssRules.push(`text-align: ${textAlign}`);
201
+ }
202
+ return cssRules.join('; ');
203
+ }
131
204
  function getLineHeading(line) {
132
205
  for (const fragment of line) {
133
206
  if (fragment.styles.heading && fragment.styles.heading !== 'none') {
@@ -136,6 +209,22 @@ function getLineHeading(line) {
136
209
  }
137
210
  return undefined;
138
211
  }
212
+ function getLineListType(line) {
213
+ for (const fragment of line) {
214
+ if (fragment.styles.listType && fragment.styles.listType !== 'none') {
215
+ return fragment.styles.listType;
216
+ }
217
+ }
218
+ return undefined;
219
+ }
220
+ function getLineTextAlign(line) {
221
+ for (const fragment of line) {
222
+ if (fragment.styles.textAlign) {
223
+ return fragment.styles.textAlign;
224
+ }
225
+ }
226
+ return undefined;
227
+ }
139
228
  function getHeadingPrefix(heading) {
140
229
  switch (heading) {
141
230
  case 'h1':
@@ -148,12 +237,19 @@ function getHeadingPrefix(heading) {
148
237
  return undefined;
149
238
  }
150
239
  }
240
+ function extractImageAlt(text) {
241
+ const normalized = text.replace(/^\[Image:\s*/i, '').replace(/^\[Image\]/i, '').replace(/\]$/, '').trim();
242
+ return normalized.length > 0 ? normalized : 'image';
243
+ }
151
244
  function escapeHtml(text) {
152
245
  return text.replaceAll('&', '&amp;').replaceAll('<', '&lt;').replaceAll('>', '&gt;').replaceAll('"', '&quot;').replaceAll("'", '&#39;');
153
246
  }
154
247
  function escapeMarkdown(text) {
155
248
  return text.replace(/([\\`*_~[\]])/g, '\\$1');
156
249
  }
250
+ function escapeMarkdownUrl(url) {
251
+ return url.replaceAll(' ', '%20').replaceAll(')', '%29');
252
+ }
157
253
  function wrapInlineCode(text) {
158
254
  const matches = text.match(/`+/g);
159
255
  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;AACO,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;AACO,SAASC,kBAAkBA,CAACR,QAAyB,EAAU;EACpE,OAAOD,iBAAiB,CAACC,QAAQ,EAAE,UAAU,CAAC;AAChD;;AAEA;AACA;AACA;AACO,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":"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","ignoreList":[]}
@@ -56,6 +56,9 @@ function formatStyleToTextStyle(formatStyle, theme) {
56
56
  if (formatStyle.fontSize) {
57
57
  style.fontSize = formatStyle.fontSize;
58
58
  }
59
+ if (formatStyle.textAlign) {
60
+ style.textAlign = formatStyle.textAlign;
61
+ }
59
62
 
60
63
  // Heading — overrides font size and weight
61
64
  if (formatStyle.heading && formatStyle.heading !== 'none') {
@@ -63,6 +66,14 @@ function formatStyleToTextStyle(formatStyle, theme) {
63
66
  style.fontWeight = 'bold';
64
67
  style.lineHeight = _defaultStyles.HEADING_FONT_SIZES[formatStyle.heading] * 1.3;
65
68
  }
69
+ if (formatStyle.link) {
70
+ style.color = style.color ?? resolvedTheme.colors?.link ?? _defaultStyles.DEFAULT_THEME.colors?.link ?? _defaultStyles.DEFAULT_THEME.colors?.primary;
71
+ if (style.textDecorationLine === 'line-through') {
72
+ style.textDecorationLine = 'underline line-through';
73
+ } else if (!style.textDecorationLine || style.textDecorationLine === 'none') {
74
+ style.textDecorationLine = 'underline';
75
+ }
76
+ }
66
77
  return style;
67
78
  }
68
79
 
@@ -1 +1 @@
1
- {"version":3,"names":["_defaultStyles","require","formatStyleToTextStyle","formatStyle","theme","resolvedTheme","DEFAULT_THEME","style","bold","fontWeight","italic","fontStyle","underline","strikethrough","textDecorationLine","code","codeStyle","Object","assign","color","backgroundColor","fontSize","heading","HEADING_FONT_SIZES","lineHeight","segmentToTextStyle","segment","baseStyle","baseTextStyle","styles","segmentsToTextStyles","segments","map","seg"],"sourceRoot":"../../../src","sources":["utils/styleMapper.ts"],"mappings":";;;;;;;;AAEA,IAAAA,cAAA,GAAAC,OAAA;AAEA;AACA;AACA;AACA;AACO,SAASC,sBAAsBA,CACpCC,WAAwB,EACxBC,KAAqB,EACV;EACX,MAAMC,aAAa,GAAGD,KAAK,IAAIE,4BAAa;EAC5C,MAAMC,KAAgB,GAAG,CAAC,CAAC;;EAE3B;EACA,IAAIJ,WAAW,CAACK,IAAI,EAAE;IACpBD,KAAK,CAACE,UAAU,GAAG,MAAM;EAC3B;;EAEA;EACA,IAAIN,WAAW,CAACO,MAAM,EAAE;IACtBH,KAAK,CAACI,SAAS,GAAG,QAAQ;EAC5B;;EAEA;EACA,IAAIR,WAAW,CAACS,SAAS,IAAIT,WAAW,CAACU,aAAa,EAAE;IACtDN,KAAK,CAACO,kBAAkB,GAAG,wBAAwB;EACrD,CAAC,MAAM,IAAIX,WAAW,CAACS,SAAS,EAAE;IAChCL,KAAK,CAACO,kBAAkB,GAAG,WAAW;EACxC,CAAC,MAAM,IAAIX,WAAW,CAACU,aAAa,EAAE;IACpCN,KAAK,CAACO,kBAAkB,GAAG,cAAc;EAC3C;;EAEA;EACA,IAAIX,WAAW,CAACY,IAAI,EAAE;IACpB,MAAMC,SAAS,GAAGX,aAAa,CAACW,SAAS,IAAIV,4BAAa,CAACU,SAAS;IACpE,IAAIA,SAAS,EAAE;MACbC,MAAM,CAACC,MAAM,CAACX,KAAK,EAAES,SAAS,CAAC;IACjC;EACF;;EAEA;EACA,IAAIb,WAAW,CAACgB,KAAK,EAAE;IACrBZ,KAAK,CAACY,KAAK,GAAGhB,WAAW,CAACgB,KAAK;EACjC;;EAEA;EACA,IAAIhB,WAAW,CAACiB,eAAe,EAAE;IAC/Bb,KAAK,CAACa,eAAe,GAAGjB,WAAW,CAACiB,eAAe;EACrD;;EAEA;EACA,IAAIjB,WAAW,CAACkB,QAAQ,EAAE;IACxBd,KAAK,CAACc,QAAQ,GAAGlB,WAAW,CAACkB,QAAQ;EACvC;;EAEA;EACA,IAAIlB,WAAW,CAACmB,OAAO,IAAInB,WAAW,CAACmB,OAAO,KAAK,MAAM,EAAE;IACzDf,KAAK,CAACc,QAAQ,GAAGE,iCAAkB,CAACpB,WAAW,CAACmB,OAAO,CAAC;IACxDf,KAAK,CAACE,UAAU,GAAG,MAAM;IACzBF,KAAK,CAACiB,UAAU,GAAGD,iCAAkB,CAACpB,WAAW,CAACmB,OAAO,CAAC,GAAG,GAAG;EAClE;EAEA,OAAOf,KAAK;AACd;;AAEA;AACA;AACA;AACO,SAASkB,kBAAkBA,CAChCC,OAAsB,EACtBtB,KAAqB,EACV;EACX,MAAMuB,SAAS,GAAGvB,KAAK,EAAEwB,aAAa,IAAItB,4BAAa,CAACsB,aAAa,IAAI,CAAC,CAAC;EAC3E,MAAMzB,WAAW,GAAGD,sBAAsB,CAACwB,OAAO,CAACG,MAAM,EAAEzB,KAAK,CAAC;EAEjE,OAAO;IACL,GAAGuB,SAAS;IACZ,GAAGxB;EACL,CAAC;AACH;;AAEA;AACA;AACA;AACO,SAAS2B,oBAAoBA,CAClCC,QAAyB,EACzB3B,KAAqB,EACR;EACb,OAAO2B,QAAQ,CAACC,GAAG,CAAEC,GAAG,IAAKR,kBAAkB,CAACQ,GAAG,EAAE7B,KAAK,CAAC,CAAC;AAC9D","ignoreList":[]}
1
+ {"version":3,"names":["_defaultStyles","require","formatStyleToTextStyle","formatStyle","theme","resolvedTheme","DEFAULT_THEME","style","bold","fontWeight","italic","fontStyle","underline","strikethrough","textDecorationLine","code","codeStyle","Object","assign","color","backgroundColor","fontSize","textAlign","heading","HEADING_FONT_SIZES","lineHeight","link","colors","primary","segmentToTextStyle","segment","baseStyle","baseTextStyle","styles","segmentsToTextStyles","segments","map","seg"],"sourceRoot":"../../../src","sources":["utils/styleMapper.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,163 @@
1
+ "use strict";
2
+
3
+ import React, { useMemo } from 'react';
4
+ import { Image, StyleSheet, Text, View } from 'react-native';
5
+ import { DEFAULT_THEME } from '../constants/defaultStyles';
6
+ import { segmentToTextStyle } from '../utils/styleMapper';
7
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
8
+ export const RenderedOutput = /*#__PURE__*/React.memo(({
9
+ segments,
10
+ theme
11
+ }) => {
12
+ const resolvedTheme = theme ?? DEFAULT_THEME;
13
+ const lines = useMemo(() => splitSegmentsByLine(segments), [segments]);
14
+ let orderedIndex = 0;
15
+ return /*#__PURE__*/_jsx(View, {
16
+ style: [styles.container, resolvedTheme.renderedOutputStyle ?? DEFAULT_THEME.renderedOutputStyle],
17
+ children: lines.map((line, lineIndex) => {
18
+ const listType = getLineStyle(line, 'listType');
19
+ const textAlign = getLineStyle(line, 'textAlign');
20
+ const marker = listType === 'bullet' ? '\u2022' : listType === 'ordered' ? `${orderedIndex + 1}.` : undefined;
21
+ orderedIndex = listType === 'ordered' ? orderedIndex + 1 : 0;
22
+ const textFragments = line.filter(fragment => !fragment.styles.imageSrc && fragment.text.length > 0);
23
+ const imageFragments = line.filter(fragment => !!fragment.styles.imageSrc);
24
+ const contentAlignStyle = textAlign === 'center' ? styles.alignCenter : textAlign === 'right' ? styles.alignRight : styles.alignLeft;
25
+ if (textFragments.length === 0 && imageFragments.length === 0) {
26
+ return /*#__PURE__*/_jsx(View, {
27
+ style: [styles.emptyLine, contentAlignStyle]
28
+ }, `line-${lineIndex}`);
29
+ }
30
+ const textNode = textFragments.length > 0 ? /*#__PURE__*/_jsx(Text, {
31
+ style: [resolvedTheme.baseTextStyle ?? DEFAULT_THEME.baseTextStyle, textAlign ? {
32
+ textAlign
33
+ } : undefined],
34
+ children: textFragments.map((fragment, fragmentIndex) => /*#__PURE__*/_jsx(Text, {
35
+ style: segmentToTextStyle(fragment, resolvedTheme),
36
+ children: fragment.text
37
+ }, `text-${lineIndex}-${fragmentIndex}`))
38
+ }) : null;
39
+ const imageNodes = imageFragments.map((fragment, fragmentIndex) => /*#__PURE__*/_jsxs(View, {
40
+ style: styles.imageBlock,
41
+ children: [/*#__PURE__*/_jsx(Image, {
42
+ source: {
43
+ uri: fragment.styles.imageSrc
44
+ },
45
+ style: styles.image,
46
+ resizeMode: "contain"
47
+ }), /*#__PURE__*/_jsx(Text, {
48
+ style: [styles.imageCaption, resolvedTheme.baseTextStyle ?? DEFAULT_THEME.baseTextStyle, textAlign ? {
49
+ textAlign
50
+ } : undefined],
51
+ children: fragment.styles.imageAlt ?? extractImageAlt(fragment.text)
52
+ })]
53
+ }, `image-${lineIndex}-${fragmentIndex}`));
54
+ const content = /*#__PURE__*/_jsxs(View, {
55
+ style: [styles.lineContent, contentAlignStyle],
56
+ children: [textNode, imageNodes]
57
+ });
58
+ if (!marker) {
59
+ return /*#__PURE__*/_jsx(View, {
60
+ style: styles.line,
61
+ children: content
62
+ }, `line-${lineIndex}`);
63
+ }
64
+ return /*#__PURE__*/_jsxs(View, {
65
+ style: styles.listLine,
66
+ children: [/*#__PURE__*/_jsx(Text, {
67
+ style: [styles.listMarker, resolvedTheme.baseTextStyle ?? DEFAULT_THEME.baseTextStyle],
68
+ children: marker
69
+ }), /*#__PURE__*/_jsx(View, {
70
+ style: styles.listContent,
71
+ children: content
72
+ })]
73
+ }, `line-${lineIndex}`);
74
+ })
75
+ });
76
+ });
77
+ RenderedOutput.displayName = 'RenderedOutput';
78
+ function splitSegmentsByLine(segments) {
79
+ const lines = [[]];
80
+ for (const segment of segments) {
81
+ const parts = segment.text.split('\n');
82
+ parts.forEach((part, index) => {
83
+ if (part.length > 0 || segment.styles.imageSrc) {
84
+ lines[lines.length - 1]?.push({
85
+ text: part,
86
+ styles: {
87
+ ...segment.styles
88
+ }
89
+ });
90
+ }
91
+ if (index < parts.length - 1) {
92
+ lines.push([]);
93
+ }
94
+ });
95
+ }
96
+ return lines;
97
+ }
98
+ function getLineStyle(line, key) {
99
+ for (const fragment of line) {
100
+ const value = fragment.styles[key];
101
+ if (value !== undefined) {
102
+ return value;
103
+ }
104
+ }
105
+ return undefined;
106
+ }
107
+ function extractImageAlt(text) {
108
+ const normalized = text.replace(/^\[Image:\s*/i, '').replace(/^\[Image\]/i, '').replace(/\]$/, '').trim();
109
+ return normalized.length > 0 ? normalized : 'image';
110
+ }
111
+ const styles = StyleSheet.create({
112
+ container: {
113
+ gap: 10
114
+ },
115
+ line: {
116
+ width: '100%'
117
+ },
118
+ lineContent: {
119
+ width: '100%',
120
+ gap: 8
121
+ },
122
+ listLine: {
123
+ width: '100%',
124
+ flexDirection: 'row',
125
+ alignItems: 'flex-start',
126
+ gap: 8
127
+ },
128
+ listMarker: {
129
+ minWidth: 20,
130
+ paddingTop: 1
131
+ },
132
+ listContent: {
133
+ flex: 1
134
+ },
135
+ alignLeft: {
136
+ alignItems: 'flex-start'
137
+ },
138
+ alignCenter: {
139
+ alignItems: 'center'
140
+ },
141
+ alignRight: {
142
+ alignItems: 'flex-end'
143
+ },
144
+ emptyLine: {
145
+ minHeight: 20,
146
+ width: '100%'
147
+ },
148
+ imageBlock: {
149
+ width: '100%',
150
+ gap: 6
151
+ },
152
+ image: {
153
+ width: '100%',
154
+ height: 160,
155
+ borderRadius: 10,
156
+ backgroundColor: '#E5E7EB'
157
+ },
158
+ imageCaption: {
159
+ fontSize: 13,
160
+ opacity: 0.8
161
+ }
162
+ });
163
+ //# sourceMappingURL=RenderedOutput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","useMemo","Image","StyleSheet","Text","View","DEFAULT_THEME","segmentToTextStyle","jsx","_jsx","jsxs","_jsxs","RenderedOutput","memo","segments","theme","resolvedTheme","lines","splitSegmentsByLine","orderedIndex","style","styles","container","renderedOutputStyle","children","map","line","lineIndex","listType","getLineStyle","textAlign","marker","undefined","textFragments","filter","fragment","imageSrc","text","length","imageFragments","contentAlignStyle","alignCenter","alignRight","alignLeft","emptyLine","textNode","baseTextStyle","fragmentIndex","imageNodes","imageBlock","source","uri","image","resizeMode","imageCaption","imageAlt","extractImageAlt","content","lineContent","listLine","listMarker","listContent","displayName","segment","parts","split","forEach","part","index","push","key","value","normalized","replace","trim","create","gap","width","flexDirection","alignItems","minWidth","paddingTop","flex","minHeight","height","borderRadius","backgroundColor","fontSize","opacity"],"sourceRoot":"../../../src","sources":["components/RenderedOutput.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,OAAO,QAAQ,OAAO;AACtC,SAASC,KAAK,EAAEC,UAAU,EAAEC,IAAI,EAAEC,IAAI,QAAQ,cAAc;AAE5D,SAASC,aAAa,QAAQ,4BAA4B;AAC1D,SAASC,kBAAkB,QAAQ,sBAAsB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAS1D,OAAO,MAAMC,cAA6C,gBAAGZ,KAAK,CAACa,IAAI,CACrE,CAAC;EAAEC,QAAQ;EAAEC;AAAM,CAAC,KAAK;EACvB,MAAMC,aAAa,GAAGD,KAAK,IAAIT,aAAa;EAC5C,MAAMW,KAAK,GAAGhB,OAAO,CAAC,MAAMiB,mBAAmB,CAACJ,QAAQ,CAAC,EAAE,CAACA,QAAQ,CAAC,CAAC;EACtE,IAAIK,YAAY,GAAG,CAAC;EAEpB,oBACEV,IAAA,CAACJ,IAAI;IACHe,KAAK,EAAE,CACLC,MAAM,CAACC,SAAS,EAChBN,aAAa,CAACO,mBAAmB,IAAIjB,aAAa,CAACiB,mBAAmB,CACtE;IAAAC,QAAA,EAEDP,KAAK,CAACQ,GAAG,CAAC,CAACC,IAAI,EAAEC,SAAS,KAAK;MAC9B,MAAMC,QAAQ,GAAGC,YAAY,CAACH,IAAI,EAAE,UAAU,CAAC;MAC/C,MAAMI,SAAS,GAAGD,YAAY,CAACH,IAAI,EAAE,WAAW,CAAC;MACjD,MAAMK,MAAM,GACVH,QAAQ,KAAK,QAAQ,GACjB,QAAQ,GACRA,QAAQ,KAAK,SAAS,GACpB,GAAGT,YAAY,GAAG,CAAC,GAAG,GACtBa,SAAS;MAEjBb,YAAY,GAAGS,QAAQ,KAAK,SAAS,GAAGT,YAAY,GAAG,CAAC,GAAG,CAAC;MAE5D,MAAMc,aAAa,GAAGP,IAAI,CAACQ,MAAM,CAC9BC,QAAQ,IAAK,CAACA,QAAQ,CAACd,MAAM,CAACe,QAAQ,IAAID,QAAQ,CAACE,IAAI,CAACC,MAAM,GAAG,CACpE,CAAC;MACD,MAAMC,cAAc,GAAGb,IAAI,CAACQ,MAAM,CAAEC,QAAQ,IAAK,CAAC,CAACA,QAAQ,CAACd,MAAM,CAACe,QAAQ,CAAC;MAC5E,MAAMI,iBAAiB,GACrBV,SAAS,KAAK,QAAQ,GAClBT,MAAM,CAACoB,WAAW,GAClBX,SAAS,KAAK,OAAO,GACnBT,MAAM,CAACqB,UAAU,GACjBrB,MAAM,CAACsB,SAAS;MAExB,IAAIV,aAAa,CAACK,MAAM,KAAK,CAAC,IAAIC,cAAc,CAACD,MAAM,KAAK,CAAC,EAAE;QAC7D,oBACE7B,IAAA,CAACJ,IAAI;UAEHe,KAAK,EAAE,CAACC,MAAM,CAACuB,SAAS,EAAEJ,iBAAiB;QAAE,GADxC,QAAQb,SAAS,EAEvB,CAAC;MAEN;MAEA,MAAMkB,QAAQ,GACZZ,aAAa,CAACK,MAAM,GAAG,CAAC,gBACtB7B,IAAA,CAACL,IAAI;QACHgB,KAAK,EAAE,CACLJ,aAAa,CAAC8B,aAAa,IAAIxC,aAAa,CAACwC,aAAa,EAC1DhB,SAAS,GAAG;UAAEA;QAAU,CAAC,GAAGE,SAAS,CACrC;QAAAR,QAAA,EAEDS,aAAa,CAACR,GAAG,CAAC,CAACU,QAAQ,EAAEY,aAAa,kBACzCtC,IAAA,CAACL,IAAI;UAEHgB,KAAK,EAAEb,kBAAkB,CAAC4B,QAAQ,EAAmBnB,aAAa,CAAE;UAAAQ,QAAA,EAEnEW,QAAQ,CAACE;QAAI,GAHT,QAAQV,SAAS,IAAIoB,aAAa,EAInC,CACP;MAAC,CACE,CAAC,GACL,IAAI;MAEV,MAAMC,UAAU,GAAGT,cAAc,CAACd,GAAG,CAAC,CAACU,QAAQ,EAAEY,aAAa,kBAC5DpC,KAAA,CAACN,IAAI;QAA6Ce,KAAK,EAAEC,MAAM,CAAC4B,UAAW;QAAAzB,QAAA,gBACzEf,IAAA,CAACP,KAAK;UACJgD,MAAM,EAAE;YAAEC,GAAG,EAAEhB,QAAQ,CAACd,MAAM,CAACe;UAAS,CAAE;UAC1ChB,KAAK,EAAEC,MAAM,CAAC+B,KAAM;UACpBC,UAAU,EAAC;QAAS,CACrB,CAAC,eACF5C,IAAA,CAACL,IAAI;UACHgB,KAAK,EAAE,CACLC,MAAM,CAACiC,YAAY,EACnBtC,aAAa,CAAC8B,aAAa,IAAIxC,aAAa,CAACwC,aAAa,EAC1DhB,SAAS,GAAG;YAAEA;UAAU,CAAC,GAAGE,SAAS,CACrC;UAAAR,QAAA,EAEDW,QAAQ,CAACd,MAAM,CAACkC,QAAQ,IAAIC,eAAe,CAACrB,QAAQ,CAACE,IAAI;QAAC,CACvD,CAAC;MAAA,GAdE,SAASV,SAAS,IAAIoB,aAAa,EAexC,CACP,CAAC;MAEF,MAAMU,OAAO,gBACX9C,KAAA,CAACN,IAAI;QAACe,KAAK,EAAE,CAACC,MAAM,CAACqC,WAAW,EAAElB,iBAAiB,CAAE;QAAAhB,QAAA,GAClDqB,QAAQ,EACRG,UAAU;MAAA,CACP,CACP;MAED,IAAI,CAACjB,MAAM,EAAE;QACX,oBACEtB,IAAA,CAACJ,IAAI;UAA2Be,KAAK,EAAEC,MAAM,CAACK,IAAK;UAAAF,QAAA,EAChDiC;QAAO,GADC,QAAQ9B,SAAS,EAEtB,CAAC;MAEX;MAEA,oBACEhB,KAAA,CAACN,IAAI;QAA2Be,KAAK,EAAEC,MAAM,CAACsC,QAAS;QAAAnC,QAAA,gBACrDf,IAAA,CAACL,IAAI;UACHgB,KAAK,EAAE,CACLC,MAAM,CAACuC,UAAU,EACjB5C,aAAa,CAAC8B,aAAa,IAAIxC,aAAa,CAACwC,aAAa,CAC1D;UAAAtB,QAAA,EAEDO;QAAM,CACH,CAAC,eACPtB,IAAA,CAACJ,IAAI;UAACe,KAAK,EAAEC,MAAM,CAACwC,WAAY;UAAArC,QAAA,EAAEiC;QAAO,CAAO,CAAC;MAAA,GATxC,QAAQ9B,SAAS,EAUtB,CAAC;IAEX,CAAC;EAAC,CACE,CAAC;AAEX,CACF,CAAC;AAEDf,cAAc,CAACkD,WAAW,GAAG,gBAAgB;AAE7C,SAAS5C,mBAAmBA,CAACJ,QAAyB,EAAoB;EACxE,MAAMG,KAAuB,GAAG,CAAC,EAAE,CAAC;EAEpC,KAAK,MAAM8C,OAAO,IAAIjD,QAAQ,EAAE;IAC9B,MAAMkD,KAAK,GAAGD,OAAO,CAAC1B,IAAI,CAAC4B,KAAK,CAAC,IAAI,CAAC;IAEtCD,KAAK,CAACE,OAAO,CAAC,CAACC,IAAI,EAAEC,KAAK,KAAK;MAC7B,IAAID,IAAI,CAAC7B,MAAM,GAAG,CAAC,IAAIyB,OAAO,CAAC1C,MAAM,CAACe,QAAQ,EAAE;QAC9CnB,KAAK,CAACA,KAAK,CAACqB,MAAM,GAAG,CAAC,CAAC,EAAE+B,IAAI,CAAC;UAC5BhC,IAAI,EAAE8B,IAAI;UACV9C,MAAM,EAAE;YAAE,GAAG0C,OAAO,CAAC1C;UAAO;QAC9B,CAAC,CAAC;MACJ;MAEA,IAAI+C,KAAK,GAAGJ,KAAK,CAAC1B,MAAM,GAAG,CAAC,EAAE;QAC5BrB,KAAK,CAACoD,IAAI,CAAC,EAAE,CAAC;MAChB;IACF,CAAC,CAAC;EACJ;EAEA,OAAOpD,KAAK;AACd;AAEA,SAASY,YAAYA,CACnBH,IAAoB,EACpB4C,GAAM,EACU;EAChB,KAAK,MAAMnC,QAAQ,IAAIT,IAAI,EAAE;IAC3B,MAAM6C,KAAK,GAAGpC,QAAQ,CAACd,MAAM,CAACiD,GAAG,CAAC;IAClC,IAAIC,KAAK,KAAKvC,SAAS,EAAE;MACvB,OAAOuC,KAAK;IACd;EACF;EAEA,OAAOvC,SAAS;AAClB;AAEA,SAASwB,eAAeA,CAACnB,IAAY,EAAU;EAC7C,MAAMmC,UAAU,GAAGnC,IAAI,CACpBoC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAC5BA,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAC1BA,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAClBC,IAAI,CAAC,CAAC;EAET,OAAOF,UAAU,CAAClC,MAAM,GAAG,CAAC,GAAGkC,UAAU,GAAG,OAAO;AACrD;AAEA,MAAMnD,MAAM,GAAGlB,UAAU,CAACwE,MAAM,CAAC;EAC/BrD,SAAS,EAAE;IACTsD,GAAG,EAAE;EACP,CAAC;EACDlD,IAAI,EAAE;IACJmD,KAAK,EAAE;EACT,CAAC;EACDnB,WAAW,EAAE;IACXmB,KAAK,EAAE,MAAM;IACbD,GAAG,EAAE;EACP,CAAC;EACDjB,QAAQ,EAAE;IACRkB,KAAK,EAAE,MAAM;IACbC,aAAa,EAAE,KAAK;IACpBC,UAAU,EAAE,YAAY;IACxBH,GAAG,EAAE;EACP,CAAC;EACDhB,UAAU,EAAE;IACVoB,QAAQ,EAAE,EAAE;IACZC,UAAU,EAAE;EACd,CAAC;EACDpB,WAAW,EAAE;IACXqB,IAAI,EAAE;EACR,CAAC;EACDvC,SAAS,EAAE;IACToC,UAAU,EAAE;EACd,CAAC;EACDtC,WAAW,EAAE;IACXsC,UAAU,EAAE;EACd,CAAC;EACDrC,UAAU,EAAE;IACVqC,UAAU,EAAE;EACd,CAAC;EACDnC,SAAS,EAAE;IACTuC,SAAS,EAAE,EAAE;IACbN,KAAK,EAAE;EACT,CAAC;EACD5B,UAAU,EAAE;IACV4B,KAAK,EAAE,MAAM;IACbD,GAAG,EAAE;EACP,CAAC;EACDxB,KAAK,EAAE;IACLyB,KAAK,EAAE,MAAM;IACbO,MAAM,EAAE,GAAG;IACXC,YAAY,EAAE,EAAE;IAChBC,eAAe,EAAE;EACnB,CAAC;EACDhC,YAAY,EAAE;IACZiC,QAAQ,EAAE,EAAE;IACZC,OAAO,EAAE;EACX;AACF,CAAC,CAAC","ignoreList":[]}