hermium 0.2.0 → 0.3.0

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 (157) hide show
  1. package/bin/hermium.mjs +102 -58
  2. package/dist/server/__23tanstack-start-plugin-adapters-Cwee5PKy.mjs +6 -0
  3. package/dist/server/_chunks/ssr-renderer.mjs +22 -0
  4. package/dist/server/_libs/bail.mjs +8 -0
  5. package/dist/server/_libs/base-ui__react.mjs +9858 -0
  6. package/dist/server/_libs/base-ui__utils.mjs +1106 -0
  7. package/dist/server/_libs/ccount.mjs +16 -0
  8. package/dist/server/_libs/character-entities.mjs +2130 -0
  9. package/dist/server/_libs/class-variance-authority.mjs +44 -0
  10. package/dist/server/_libs/clsx.mjs +16 -0
  11. package/dist/server/_libs/comma-separated-tokens.mjs +10 -0
  12. package/dist/server/_libs/cookie-es.mjs +1 -0
  13. package/dist/server/_libs/croner.mjs +1 -0
  14. package/dist/server/_libs/crossws.mjs +1 -0
  15. package/dist/server/_libs/decode-named-character-reference+[...].mjs +8 -0
  16. package/dist/server/_libs/devlop.mjs +8 -0
  17. package/dist/server/_libs/escape-string-regexp.mjs +9 -0
  18. package/dist/server/_libs/estree-util-is-identifier-name.mjs +11 -0
  19. package/dist/server/_libs/extend.mjs +97 -0
  20. package/dist/server/_libs/floating-ui__core.mjs +663 -0
  21. package/dist/server/_libs/floating-ui__dom.mjs +624 -0
  22. package/dist/server/_libs/floating-ui__react-dom.mjs +279 -0
  23. package/dist/server/_libs/floating-ui__utils.mjs +322 -0
  24. package/dist/server/_libs/h3.mjs +408 -0
  25. package/dist/server/_libs/hast-util-is-element.mjs +75 -0
  26. package/dist/server/_libs/hast-util-to-jsx-runtime.mjs +388 -0
  27. package/dist/server/_libs/hast-util-to-text.mjs +305 -0
  28. package/dist/server/_libs/hast-util-whitespace.mjs +10 -0
  29. package/dist/server/_libs/highlight.js.mjs +14756 -0
  30. package/dist/server/_libs/hookable.mjs +1 -0
  31. package/dist/server/_libs/html-url-attributes.mjs +26 -0
  32. package/dist/server/_libs/inline-style-parser.mjs +142 -0
  33. package/dist/server/_libs/is-plain-obj.mjs +10 -0
  34. package/dist/server/_libs/isbot.mjs +21 -0
  35. package/dist/server/_libs/longest-streak.mjs +25 -0
  36. package/dist/server/_libs/lowlight.mjs +262 -0
  37. package/dist/server/_libs/markdown-table.mjs +142 -0
  38. package/dist/server/_libs/mdast-util-find-and-replace.mjs +109 -0
  39. package/dist/server/_libs/mdast-util-from-markdown.mjs +717 -0
  40. package/dist/server/_libs/mdast-util-gfm-autolink-literal+[...].mjs +156 -0
  41. package/dist/server/_libs/mdast-util-gfm-footnote.mjs +117 -0
  42. package/dist/server/_libs/mdast-util-gfm-strikethrough.mjs +54 -0
  43. package/dist/server/_libs/mdast-util-gfm-table.mjs +157 -0
  44. package/dist/server/_libs/mdast-util-gfm-task-list-item.mjs +77 -0
  45. package/dist/server/_libs/mdast-util-gfm.mjs +29 -0
  46. package/dist/server/_libs/mdast-util-phrasing.mjs +30 -0
  47. package/dist/server/_libs/mdast-util-to-hast.mjs +710 -0
  48. package/dist/server/_libs/mdast-util-to-markdown.mjs +798 -0
  49. package/dist/server/_libs/mdast-util-to-string.mjs +38 -0
  50. package/dist/server/_libs/micromark-core-commonmark.mjs +2259 -0
  51. package/dist/server/_libs/micromark-extension-gfm-autolink-literal+[...].mjs +344 -0
  52. package/dist/server/_libs/micromark-extension-gfm-footnote+[...].mjs +279 -0
  53. package/dist/server/_libs/micromark-extension-gfm-strikethrough+[...].mjs +98 -0
  54. package/dist/server/_libs/micromark-extension-gfm-table.mjs +491 -0
  55. package/dist/server/_libs/micromark-extension-gfm-tagfilter+[...].mjs +1 -0
  56. package/dist/server/_libs/micromark-extension-gfm-task-list-item+[...].mjs +77 -0
  57. package/dist/server/_libs/micromark-extension-gfm.mjs +18 -0
  58. package/dist/server/_libs/micromark-factory-destination.mjs +94 -0
  59. package/dist/server/_libs/micromark-factory-label.mjs +63 -0
  60. package/dist/server/_libs/micromark-factory-space.mjs +24 -0
  61. package/dist/server/_libs/micromark-factory-title.mjs +65 -0
  62. package/dist/server/_libs/micromark-factory-whitespace.mjs +22 -0
  63. package/dist/server/_libs/micromark-util-character.mjs +44 -0
  64. package/dist/server/_libs/micromark-util-chunked.mjs +36 -0
  65. package/dist/server/_libs/micromark-util-classify-character+[...].mjs +12 -0
  66. package/dist/server/_libs/micromark-util-combine-extensions+[...].mjs +41 -0
  67. package/dist/server/_libs/micromark-util-decode-numeric-character-reference+[...].mjs +19 -0
  68. package/dist/server/_libs/micromark-util-decode-string.mjs +21 -0
  69. package/dist/server/_libs/micromark-util-encode.mjs +1 -0
  70. package/dist/server/_libs/micromark-util-html-tag-name.mjs +69 -0
  71. package/dist/server/_libs/micromark-util-normalize-identifier+[...].mjs +6 -0
  72. package/dist/server/_libs/micromark-util-resolve-all.mjs +15 -0
  73. package/dist/server/_libs/micromark-util-sanitize-uri.mjs +41 -0
  74. package/dist/server/_libs/micromark-util-subtokenize.mjs +346 -0
  75. package/dist/server/_libs/micromark.mjs +906 -0
  76. package/dist/server/_libs/ocache.mjs +1 -0
  77. package/dist/server/_libs/ohash.mjs +1 -0
  78. package/dist/server/_libs/property-information.mjs +1209 -0
  79. package/dist/server/_libs/react-dom.mjs +10779 -0
  80. package/dist/server/_libs/react-markdown.mjs +147 -0
  81. package/dist/server/_libs/react.mjs +513 -0
  82. package/dist/server/_libs/rehype-highlight.mjs +94 -0
  83. package/dist/server/_libs/remark-gfm.mjs +20 -0
  84. package/dist/server/_libs/remark-parse.mjs +19 -0
  85. package/dist/server/_libs/remark-rehype.mjs +21 -0
  86. package/dist/server/_libs/reselect.mjs +1 -0
  87. package/dist/server/_libs/rou3.mjs +8 -0
  88. package/dist/server/_libs/seroval-plugins.mjs +1 -0
  89. package/dist/server/_libs/seroval.mjs +1 -0
  90. package/dist/server/_libs/space-separated-tokens.mjs +6 -0
  91. package/dist/server/_libs/srvx.mjs +781 -0
  92. package/dist/server/_libs/style-to-js.mjs +72 -0
  93. package/dist/server/_libs/style-to-object.mjs +38 -0
  94. package/dist/server/_libs/tabler__icons-react.mjs +140 -0
  95. package/dist/server/_libs/tailwind-merge.mjs +3255 -0
  96. package/dist/server/_libs/tanstack__history.mjs +29 -0
  97. package/dist/server/_libs/tanstack__react-router.mjs +1120 -0
  98. package/dist/server/_libs/tanstack__react-store.mjs +2 -0
  99. package/dist/server/_libs/tanstack__router-core.mjs +3594 -0
  100. package/dist/server/_libs/tanstack__store.mjs +1 -0
  101. package/dist/server/_libs/trim-lines.mjs +41 -0
  102. package/dist/server/_libs/trough.mjs +85 -0
  103. package/dist/server/_libs/ufo.mjs +54 -0
  104. package/dist/server/_libs/unctx.mjs +1 -0
  105. package/dist/server/_libs/ungap__structured-clone.mjs +224 -0
  106. package/dist/server/_libs/unified.mjs +661 -0
  107. package/dist/server/_libs/unist-util-find-after.mjs +41 -0
  108. package/dist/server/_libs/unist-util-is.mjs +100 -0
  109. package/dist/server/_libs/unist-util-position.mjs +27 -0
  110. package/dist/server/_libs/unist-util-stringify-position.mjs +27 -0
  111. package/dist/server/_libs/unist-util-visit-parents.mjs +83 -0
  112. package/dist/server/_libs/unist-util-visit.mjs +24 -0
  113. package/dist/server/_libs/unstorage.mjs +1 -0
  114. package/dist/server/_libs/use-sync-external-store.mjs +139 -0
  115. package/dist/server/_libs/vfile-message.mjs +138 -0
  116. package/dist/server/_libs/vfile.mjs +467 -0
  117. package/dist/server/_libs/zustand.mjs +43 -0
  118. package/dist/server/_libs/zwitch.mjs +1 -0
  119. package/dist/server/_ssr/ChatInputBlock-Bu2-iop_.mjs +220 -0
  120. package/dist/server/_ssr/MarkdownMessage-CNS7OSKN.mjs +68 -0
  121. package/dist/server/_ssr/chat._sessionId-P02iSfut.mjs +477 -0
  122. package/dist/server/_ssr/chat.index-BYB_48NC.mjs +64 -0
  123. package/dist/server/_ssr/index-C1mT_2d8.mjs +4890 -0
  124. package/dist/server/_ssr/index-DFV9_oCk.mjs +43 -0
  125. package/dist/server/_ssr/memory-CW_fSOG9.mjs +257 -0
  126. package/dist/server/_ssr/router-CUAfx91O.mjs +2035 -0
  127. package/dist/server/_ssr/settings-DoXurzvn.mjs +10 -0
  128. package/dist/server/_ssr/skills-Cs7A5ZwO.mjs +422 -0
  129. package/dist/server/_ssr/theme-BK4-7E2h.mjs +42 -0
  130. package/dist/server/_ssr/usage-Bs2-LXGz.mjs +298 -0
  131. package/dist/server/_tanstack-start-manifest_v-C7Upe2TI.mjs +4 -0
  132. package/dist/server/index.mjs +506 -0
  133. package/package.json +4 -3
  134. package/dist/public/assets/css/index-Dfs9RUU9.css +0 -1
  135. package/dist/public/assets/css/styles-B8p6jk5Z.css +0 -1
  136. package/dist/public/assets/js/ChatInputBlock-Bw7AL70H.js +0 -1
  137. package/dist/public/assets/js/MarkdownMessage-8d7Y6VL-.js +0 -1
  138. package/dist/public/assets/js/base-ui-BvQbAt_1.js +0 -1
  139. package/dist/public/assets/js/chat._sessionId-BG6lVraH.js +0 -1
  140. package/dist/public/assets/js/chat.index-D2zdMPTT.js +0 -1
  141. package/dist/public/assets/js/index-C0AK45FU.js +0 -60
  142. package/dist/public/assets/js/index-Cx5En4FK.js +0 -1
  143. package/dist/public/assets/js/memory-CeSRdTkW.js +0 -3
  144. package/dist/public/assets/js/router-8uDKazL-.js +0 -1
  145. package/dist/public/assets/js/settings-Bc3Y5zXO.js +0 -1
  146. package/dist/public/assets/js/skills-DZv7sA_5.js +0 -1
  147. package/dist/public/assets/js/theme-CPkdkpaj.js +0 -1
  148. package/dist/public/assets/js/usage-DXQsT9_b.js +0 -1
  149. package/dist/public/assets/woff2/geist-cyrillic-ext-wght-normal-DjL33-gN.woff2 +0 -0
  150. package/dist/public/assets/woff2/geist-cyrillic-wght-normal-BEAKL7Jp.woff2 +0 -0
  151. package/dist/public/assets/woff2/geist-latin-ext-wght-normal-DC-KSUi6.woff2 +0 -0
  152. package/dist/public/assets/woff2/geist-latin-wght-normal-BgDaEnEv.woff2 +0 -0
  153. package/dist/public/assets/woff2/geist-vietnamese-wght-normal-6IgcOCM7.woff2 +0 -0
  154. package/dist/public/favicon.ico +0 -0
  155. package/dist/public/logo.png +0 -0
  156. package/dist/public/manifest.json +0 -25
  157. package/dist/public/robots.txt +0 -3
@@ -0,0 +1,710 @@
1
+ import { s as structuredClone } from "./ungap__structured-clone.mjs";
2
+ import { n as normalizeUri } from "./micromark-util-sanitize-uri.mjs";
3
+ import { a as pointStart, p as pointEnd, b as position } from "./unist-util-position.mjs";
4
+ import { t as trimLines } from "./trim-lines.mjs";
5
+ import { v as visit } from "./unist-util-visit.mjs";
6
+ function blockquote(state, node) {
7
+ const result = {
8
+ type: "element",
9
+ tagName: "blockquote",
10
+ properties: {},
11
+ children: state.wrap(state.all(node), true)
12
+ };
13
+ state.patch(node, result);
14
+ return state.applyData(node, result);
15
+ }
16
+ function hardBreak(state, node) {
17
+ const result = { type: "element", tagName: "br", properties: {}, children: [] };
18
+ state.patch(node, result);
19
+ return [state.applyData(node, result), { type: "text", value: "\n" }];
20
+ }
21
+ function code(state, node) {
22
+ const value = node.value ? node.value + "\n" : "";
23
+ const properties = {};
24
+ const language = node.lang ? node.lang.split(/\s+/) : [];
25
+ if (language.length > 0) {
26
+ properties.className = ["language-" + language[0]];
27
+ }
28
+ let result = {
29
+ type: "element",
30
+ tagName: "code",
31
+ properties,
32
+ children: [{ type: "text", value }]
33
+ };
34
+ if (node.meta) {
35
+ result.data = { meta: node.meta };
36
+ }
37
+ state.patch(node, result);
38
+ result = state.applyData(node, result);
39
+ result = { type: "element", tagName: "pre", properties: {}, children: [result] };
40
+ state.patch(node, result);
41
+ return result;
42
+ }
43
+ function strikethrough(state, node) {
44
+ const result = {
45
+ type: "element",
46
+ tagName: "del",
47
+ properties: {},
48
+ children: state.all(node)
49
+ };
50
+ state.patch(node, result);
51
+ return state.applyData(node, result);
52
+ }
53
+ function emphasis(state, node) {
54
+ const result = {
55
+ type: "element",
56
+ tagName: "em",
57
+ properties: {},
58
+ children: state.all(node)
59
+ };
60
+ state.patch(node, result);
61
+ return state.applyData(node, result);
62
+ }
63
+ function footnoteReference(state, node) {
64
+ const clobberPrefix = typeof state.options.clobberPrefix === "string" ? state.options.clobberPrefix : "user-content-";
65
+ const id = String(node.identifier).toUpperCase();
66
+ const safeId = normalizeUri(id.toLowerCase());
67
+ const index = state.footnoteOrder.indexOf(id);
68
+ let counter;
69
+ let reuseCounter = state.footnoteCounts.get(id);
70
+ if (reuseCounter === void 0) {
71
+ reuseCounter = 0;
72
+ state.footnoteOrder.push(id);
73
+ counter = state.footnoteOrder.length;
74
+ } else {
75
+ counter = index + 1;
76
+ }
77
+ reuseCounter += 1;
78
+ state.footnoteCounts.set(id, reuseCounter);
79
+ const link2 = {
80
+ type: "element",
81
+ tagName: "a",
82
+ properties: {
83
+ href: "#" + clobberPrefix + "fn-" + safeId,
84
+ id: clobberPrefix + "fnref-" + safeId + (reuseCounter > 1 ? "-" + reuseCounter : ""),
85
+ dataFootnoteRef: true,
86
+ ariaDescribedBy: ["footnote-label"]
87
+ },
88
+ children: [{ type: "text", value: String(counter) }]
89
+ };
90
+ state.patch(node, link2);
91
+ const sup = {
92
+ type: "element",
93
+ tagName: "sup",
94
+ properties: {},
95
+ children: [link2]
96
+ };
97
+ state.patch(node, sup);
98
+ return state.applyData(node, sup);
99
+ }
100
+ function heading(state, node) {
101
+ const result = {
102
+ type: "element",
103
+ tagName: "h" + node.depth,
104
+ properties: {},
105
+ children: state.all(node)
106
+ };
107
+ state.patch(node, result);
108
+ return state.applyData(node, result);
109
+ }
110
+ function html(state, node) {
111
+ if (state.options.allowDangerousHtml) {
112
+ const result = { type: "raw", value: node.value };
113
+ state.patch(node, result);
114
+ return state.applyData(node, result);
115
+ }
116
+ return void 0;
117
+ }
118
+ function revert(state, node) {
119
+ const subtype = node.referenceType;
120
+ let suffix = "]";
121
+ if (subtype === "collapsed") {
122
+ suffix += "[]";
123
+ } else if (subtype === "full") {
124
+ suffix += "[" + (node.label || node.identifier) + "]";
125
+ }
126
+ if (node.type === "imageReference") {
127
+ return [{ type: "text", value: "![" + node.alt + suffix }];
128
+ }
129
+ const contents = state.all(node);
130
+ const head = contents[0];
131
+ if (head && head.type === "text") {
132
+ head.value = "[" + head.value;
133
+ } else {
134
+ contents.unshift({ type: "text", value: "[" });
135
+ }
136
+ const tail = contents[contents.length - 1];
137
+ if (tail && tail.type === "text") {
138
+ tail.value += suffix;
139
+ } else {
140
+ contents.push({ type: "text", value: suffix });
141
+ }
142
+ return contents;
143
+ }
144
+ function imageReference(state, node) {
145
+ const id = String(node.identifier).toUpperCase();
146
+ const definition = state.definitionById.get(id);
147
+ if (!definition) {
148
+ return revert(state, node);
149
+ }
150
+ const properties = { src: normalizeUri(definition.url || ""), alt: node.alt };
151
+ if (definition.title !== null && definition.title !== void 0) {
152
+ properties.title = definition.title;
153
+ }
154
+ const result = { type: "element", tagName: "img", properties, children: [] };
155
+ state.patch(node, result);
156
+ return state.applyData(node, result);
157
+ }
158
+ function image(state, node) {
159
+ const properties = { src: normalizeUri(node.url) };
160
+ if (node.alt !== null && node.alt !== void 0) {
161
+ properties.alt = node.alt;
162
+ }
163
+ if (node.title !== null && node.title !== void 0) {
164
+ properties.title = node.title;
165
+ }
166
+ const result = { type: "element", tagName: "img", properties, children: [] };
167
+ state.patch(node, result);
168
+ return state.applyData(node, result);
169
+ }
170
+ function inlineCode(state, node) {
171
+ const text2 = { type: "text", value: node.value.replace(/\r?\n|\r/g, " ") };
172
+ state.patch(node, text2);
173
+ const result = {
174
+ type: "element",
175
+ tagName: "code",
176
+ properties: {},
177
+ children: [text2]
178
+ };
179
+ state.patch(node, result);
180
+ return state.applyData(node, result);
181
+ }
182
+ function linkReference(state, node) {
183
+ const id = String(node.identifier).toUpperCase();
184
+ const definition = state.definitionById.get(id);
185
+ if (!definition) {
186
+ return revert(state, node);
187
+ }
188
+ const properties = { href: normalizeUri(definition.url || "") };
189
+ if (definition.title !== null && definition.title !== void 0) {
190
+ properties.title = definition.title;
191
+ }
192
+ const result = {
193
+ type: "element",
194
+ tagName: "a",
195
+ properties,
196
+ children: state.all(node)
197
+ };
198
+ state.patch(node, result);
199
+ return state.applyData(node, result);
200
+ }
201
+ function link(state, node) {
202
+ const properties = { href: normalizeUri(node.url) };
203
+ if (node.title !== null && node.title !== void 0) {
204
+ properties.title = node.title;
205
+ }
206
+ const result = {
207
+ type: "element",
208
+ tagName: "a",
209
+ properties,
210
+ children: state.all(node)
211
+ };
212
+ state.patch(node, result);
213
+ return state.applyData(node, result);
214
+ }
215
+ function listItem(state, node, parent) {
216
+ const results = state.all(node);
217
+ const loose = parent ? listLoose(parent) : listItemLoose(node);
218
+ const properties = {};
219
+ const children = [];
220
+ if (typeof node.checked === "boolean") {
221
+ const head = results[0];
222
+ let paragraph2;
223
+ if (head && head.type === "element" && head.tagName === "p") {
224
+ paragraph2 = head;
225
+ } else {
226
+ paragraph2 = { type: "element", tagName: "p", properties: {}, children: [] };
227
+ results.unshift(paragraph2);
228
+ }
229
+ if (paragraph2.children.length > 0) {
230
+ paragraph2.children.unshift({ type: "text", value: " " });
231
+ }
232
+ paragraph2.children.unshift({
233
+ type: "element",
234
+ tagName: "input",
235
+ properties: { type: "checkbox", checked: node.checked, disabled: true },
236
+ children: []
237
+ });
238
+ properties.className = ["task-list-item"];
239
+ }
240
+ let index = -1;
241
+ while (++index < results.length) {
242
+ const child = results[index];
243
+ if (loose || index !== 0 || child.type !== "element" || child.tagName !== "p") {
244
+ children.push({ type: "text", value: "\n" });
245
+ }
246
+ if (child.type === "element" && child.tagName === "p" && !loose) {
247
+ children.push(...child.children);
248
+ } else {
249
+ children.push(child);
250
+ }
251
+ }
252
+ const tail = results[results.length - 1];
253
+ if (tail && (loose || tail.type !== "element" || tail.tagName !== "p")) {
254
+ children.push({ type: "text", value: "\n" });
255
+ }
256
+ const result = { type: "element", tagName: "li", properties, children };
257
+ state.patch(node, result);
258
+ return state.applyData(node, result);
259
+ }
260
+ function listLoose(node) {
261
+ let loose = false;
262
+ if (node.type === "list") {
263
+ loose = node.spread || false;
264
+ const children = node.children;
265
+ let index = -1;
266
+ while (!loose && ++index < children.length) {
267
+ loose = listItemLoose(children[index]);
268
+ }
269
+ }
270
+ return loose;
271
+ }
272
+ function listItemLoose(node) {
273
+ const spread = node.spread;
274
+ return spread === null || spread === void 0 ? node.children.length > 1 : spread;
275
+ }
276
+ function list(state, node) {
277
+ const properties = {};
278
+ const results = state.all(node);
279
+ let index = -1;
280
+ if (typeof node.start === "number" && node.start !== 1) {
281
+ properties.start = node.start;
282
+ }
283
+ while (++index < results.length) {
284
+ const child = results[index];
285
+ if (child.type === "element" && child.tagName === "li" && child.properties && Array.isArray(child.properties.className) && child.properties.className.includes("task-list-item")) {
286
+ properties.className = ["contains-task-list"];
287
+ break;
288
+ }
289
+ }
290
+ const result = {
291
+ type: "element",
292
+ tagName: node.ordered ? "ol" : "ul",
293
+ properties,
294
+ children: state.wrap(results, true)
295
+ };
296
+ state.patch(node, result);
297
+ return state.applyData(node, result);
298
+ }
299
+ function paragraph(state, node) {
300
+ const result = {
301
+ type: "element",
302
+ tagName: "p",
303
+ properties: {},
304
+ children: state.all(node)
305
+ };
306
+ state.patch(node, result);
307
+ return state.applyData(node, result);
308
+ }
309
+ function root(state, node) {
310
+ const result = { type: "root", children: state.wrap(state.all(node)) };
311
+ state.patch(node, result);
312
+ return state.applyData(node, result);
313
+ }
314
+ function strong(state, node) {
315
+ const result = {
316
+ type: "element",
317
+ tagName: "strong",
318
+ properties: {},
319
+ children: state.all(node)
320
+ };
321
+ state.patch(node, result);
322
+ return state.applyData(node, result);
323
+ }
324
+ function table(state, node) {
325
+ const rows = state.all(node);
326
+ const firstRow = rows.shift();
327
+ const tableContent = [];
328
+ if (firstRow) {
329
+ const head = {
330
+ type: "element",
331
+ tagName: "thead",
332
+ properties: {},
333
+ children: state.wrap([firstRow], true)
334
+ };
335
+ state.patch(node.children[0], head);
336
+ tableContent.push(head);
337
+ }
338
+ if (rows.length > 0) {
339
+ const body = {
340
+ type: "element",
341
+ tagName: "tbody",
342
+ properties: {},
343
+ children: state.wrap(rows, true)
344
+ };
345
+ const start = pointStart(node.children[1]);
346
+ const end = pointEnd(node.children[node.children.length - 1]);
347
+ if (start && end) body.position = { start, end };
348
+ tableContent.push(body);
349
+ }
350
+ const result = {
351
+ type: "element",
352
+ tagName: "table",
353
+ properties: {},
354
+ children: state.wrap(tableContent, true)
355
+ };
356
+ state.patch(node, result);
357
+ return state.applyData(node, result);
358
+ }
359
+ function tableRow(state, node, parent) {
360
+ const siblings = parent ? parent.children : void 0;
361
+ const rowIndex = siblings ? siblings.indexOf(node) : 1;
362
+ const tagName = rowIndex === 0 ? "th" : "td";
363
+ const align = parent && parent.type === "table" ? parent.align : void 0;
364
+ const length = align ? align.length : node.children.length;
365
+ let cellIndex = -1;
366
+ const cells = [];
367
+ while (++cellIndex < length) {
368
+ const cell = node.children[cellIndex];
369
+ const properties = {};
370
+ const alignValue = align ? align[cellIndex] : void 0;
371
+ if (alignValue) {
372
+ properties.align = alignValue;
373
+ }
374
+ let result2 = { type: "element", tagName, properties, children: [] };
375
+ if (cell) {
376
+ result2.children = state.all(cell);
377
+ state.patch(cell, result2);
378
+ result2 = state.applyData(cell, result2);
379
+ }
380
+ cells.push(result2);
381
+ }
382
+ const result = {
383
+ type: "element",
384
+ tagName: "tr",
385
+ properties: {},
386
+ children: state.wrap(cells, true)
387
+ };
388
+ state.patch(node, result);
389
+ return state.applyData(node, result);
390
+ }
391
+ function tableCell(state, node) {
392
+ const result = {
393
+ type: "element",
394
+ tagName: "td",
395
+ // Assume body cell.
396
+ properties: {},
397
+ children: state.all(node)
398
+ };
399
+ state.patch(node, result);
400
+ return state.applyData(node, result);
401
+ }
402
+ function text(state, node) {
403
+ const result = { type: "text", value: trimLines(String(node.value)) };
404
+ state.patch(node, result);
405
+ return state.applyData(node, result);
406
+ }
407
+ function thematicBreak(state, node) {
408
+ const result = {
409
+ type: "element",
410
+ tagName: "hr",
411
+ properties: {},
412
+ children: []
413
+ };
414
+ state.patch(node, result);
415
+ return state.applyData(node, result);
416
+ }
417
+ const handlers = {
418
+ blockquote,
419
+ break: hardBreak,
420
+ code,
421
+ delete: strikethrough,
422
+ emphasis,
423
+ footnoteReference,
424
+ heading,
425
+ html,
426
+ imageReference,
427
+ image,
428
+ inlineCode,
429
+ linkReference,
430
+ link,
431
+ listItem,
432
+ list,
433
+ paragraph,
434
+ // @ts-expect-error: root is different, but hard to type.
435
+ root,
436
+ strong,
437
+ table,
438
+ tableCell,
439
+ tableRow,
440
+ text,
441
+ thematicBreak,
442
+ toml: ignore,
443
+ yaml: ignore,
444
+ definition: ignore,
445
+ footnoteDefinition: ignore
446
+ };
447
+ function ignore() {
448
+ return void 0;
449
+ }
450
+ function defaultFootnoteBackContent(_, rereferenceIndex) {
451
+ const result = [{ type: "text", value: "↩" }];
452
+ if (rereferenceIndex > 1) {
453
+ result.push({
454
+ type: "element",
455
+ tagName: "sup",
456
+ properties: {},
457
+ children: [{ type: "text", value: String(rereferenceIndex) }]
458
+ });
459
+ }
460
+ return result;
461
+ }
462
+ function defaultFootnoteBackLabel(referenceIndex, rereferenceIndex) {
463
+ return "Back to reference " + (referenceIndex + 1) + (rereferenceIndex > 1 ? "-" + rereferenceIndex : "");
464
+ }
465
+ function footer(state) {
466
+ const clobberPrefix = typeof state.options.clobberPrefix === "string" ? state.options.clobberPrefix : "user-content-";
467
+ const footnoteBackContent = state.options.footnoteBackContent || defaultFootnoteBackContent;
468
+ const footnoteBackLabel = state.options.footnoteBackLabel || defaultFootnoteBackLabel;
469
+ const footnoteLabel = state.options.footnoteLabel || "Footnotes";
470
+ const footnoteLabelTagName = state.options.footnoteLabelTagName || "h2";
471
+ const footnoteLabelProperties = state.options.footnoteLabelProperties || {
472
+ className: ["sr-only"]
473
+ };
474
+ const listItems = [];
475
+ let referenceIndex = -1;
476
+ while (++referenceIndex < state.footnoteOrder.length) {
477
+ const definition = state.footnoteById.get(
478
+ state.footnoteOrder[referenceIndex]
479
+ );
480
+ if (!definition) {
481
+ continue;
482
+ }
483
+ const content = state.all(definition);
484
+ const id = String(definition.identifier).toUpperCase();
485
+ const safeId = normalizeUri(id.toLowerCase());
486
+ let rereferenceIndex = 0;
487
+ const backReferences = [];
488
+ const counts = state.footnoteCounts.get(id);
489
+ while (counts !== void 0 && ++rereferenceIndex <= counts) {
490
+ if (backReferences.length > 0) {
491
+ backReferences.push({ type: "text", value: " " });
492
+ }
493
+ let children = typeof footnoteBackContent === "string" ? footnoteBackContent : footnoteBackContent(referenceIndex, rereferenceIndex);
494
+ if (typeof children === "string") {
495
+ children = { type: "text", value: children };
496
+ }
497
+ backReferences.push({
498
+ type: "element",
499
+ tagName: "a",
500
+ properties: {
501
+ href: "#" + clobberPrefix + "fnref-" + safeId + (rereferenceIndex > 1 ? "-" + rereferenceIndex : ""),
502
+ dataFootnoteBackref: "",
503
+ ariaLabel: typeof footnoteBackLabel === "string" ? footnoteBackLabel : footnoteBackLabel(referenceIndex, rereferenceIndex),
504
+ className: ["data-footnote-backref"]
505
+ },
506
+ children: Array.isArray(children) ? children : [children]
507
+ });
508
+ }
509
+ const tail = content[content.length - 1];
510
+ if (tail && tail.type === "element" && tail.tagName === "p") {
511
+ const tailTail = tail.children[tail.children.length - 1];
512
+ if (tailTail && tailTail.type === "text") {
513
+ tailTail.value += " ";
514
+ } else {
515
+ tail.children.push({ type: "text", value: " " });
516
+ }
517
+ tail.children.push(...backReferences);
518
+ } else {
519
+ content.push(...backReferences);
520
+ }
521
+ const listItem2 = {
522
+ type: "element",
523
+ tagName: "li",
524
+ properties: { id: clobberPrefix + "fn-" + safeId },
525
+ children: state.wrap(content, true)
526
+ };
527
+ state.patch(definition, listItem2);
528
+ listItems.push(listItem2);
529
+ }
530
+ if (listItems.length === 0) {
531
+ return;
532
+ }
533
+ return {
534
+ type: "element",
535
+ tagName: "section",
536
+ properties: { dataFootnotes: true, className: ["footnotes"] },
537
+ children: [
538
+ {
539
+ type: "element",
540
+ tagName: footnoteLabelTagName,
541
+ properties: {
542
+ ...structuredClone(footnoteLabelProperties),
543
+ id: "footnote-label"
544
+ },
545
+ children: [{ type: "text", value: footnoteLabel }]
546
+ },
547
+ { type: "text", value: "\n" },
548
+ {
549
+ type: "element",
550
+ tagName: "ol",
551
+ properties: {},
552
+ children: state.wrap(listItems, true)
553
+ },
554
+ { type: "text", value: "\n" }
555
+ ]
556
+ };
557
+ }
558
+ const own = {}.hasOwnProperty;
559
+ const emptyOptions = {};
560
+ function createState(tree, options) {
561
+ const settings = options || emptyOptions;
562
+ const definitionById = /* @__PURE__ */ new Map();
563
+ const footnoteById = /* @__PURE__ */ new Map();
564
+ const footnoteCounts = /* @__PURE__ */ new Map();
565
+ const handlers$1 = { ...handlers, ...settings.handlers };
566
+ const state = {
567
+ all,
568
+ applyData,
569
+ definitionById,
570
+ footnoteById,
571
+ footnoteCounts,
572
+ footnoteOrder: [],
573
+ handlers: handlers$1,
574
+ one,
575
+ options: settings,
576
+ patch,
577
+ wrap
578
+ };
579
+ visit(tree, function(node) {
580
+ if (node.type === "definition" || node.type === "footnoteDefinition") {
581
+ const map = node.type === "definition" ? definitionById : footnoteById;
582
+ const id = String(node.identifier).toUpperCase();
583
+ if (!map.has(id)) {
584
+ map.set(id, node);
585
+ }
586
+ }
587
+ });
588
+ return state;
589
+ function one(node, parent) {
590
+ const type = node.type;
591
+ const handle = state.handlers[type];
592
+ if (own.call(state.handlers, type) && handle) {
593
+ return handle(state, node, parent);
594
+ }
595
+ if (state.options.passThrough && state.options.passThrough.includes(type)) {
596
+ if ("children" in node) {
597
+ const { children, ...shallow } = node;
598
+ const result = structuredClone(shallow);
599
+ result.children = state.all(node);
600
+ return result;
601
+ }
602
+ return structuredClone(node);
603
+ }
604
+ const unknown = state.options.unknownHandler || defaultUnknownHandler;
605
+ return unknown(state, node, parent);
606
+ }
607
+ function all(parent) {
608
+ const values = [];
609
+ if ("children" in parent) {
610
+ const nodes = parent.children;
611
+ let index = -1;
612
+ while (++index < nodes.length) {
613
+ const result = state.one(nodes[index], parent);
614
+ if (result) {
615
+ if (index && nodes[index - 1].type === "break") {
616
+ if (!Array.isArray(result) && result.type === "text") {
617
+ result.value = trimMarkdownSpaceStart(result.value);
618
+ }
619
+ if (!Array.isArray(result) && result.type === "element") {
620
+ const head = result.children[0];
621
+ if (head && head.type === "text") {
622
+ head.value = trimMarkdownSpaceStart(head.value);
623
+ }
624
+ }
625
+ }
626
+ if (Array.isArray(result)) {
627
+ values.push(...result);
628
+ } else {
629
+ values.push(result);
630
+ }
631
+ }
632
+ }
633
+ }
634
+ return values;
635
+ }
636
+ }
637
+ function patch(from, to) {
638
+ if (from.position) to.position = position(from);
639
+ }
640
+ function applyData(from, to) {
641
+ let result = to;
642
+ if (from && from.data) {
643
+ const hName = from.data.hName;
644
+ const hChildren = from.data.hChildren;
645
+ const hProperties = from.data.hProperties;
646
+ if (typeof hName === "string") {
647
+ if (result.type === "element") {
648
+ result.tagName = hName;
649
+ } else {
650
+ const children = "children" in result ? result.children : [result];
651
+ result = { type: "element", tagName: hName, properties: {}, children };
652
+ }
653
+ }
654
+ if (result.type === "element" && hProperties) {
655
+ Object.assign(result.properties, structuredClone(hProperties));
656
+ }
657
+ if ("children" in result && result.children && hChildren !== null && hChildren !== void 0) {
658
+ result.children = hChildren;
659
+ }
660
+ }
661
+ return result;
662
+ }
663
+ function defaultUnknownHandler(state, node) {
664
+ const data = node.data || {};
665
+ const result = "value" in node && !(own.call(data, "hProperties") || own.call(data, "hChildren")) ? { type: "text", value: node.value } : {
666
+ type: "element",
667
+ tagName: "div",
668
+ properties: {},
669
+ children: state.all(node)
670
+ };
671
+ state.patch(node, result);
672
+ return state.applyData(node, result);
673
+ }
674
+ function wrap(nodes, loose) {
675
+ const result = [];
676
+ let index = -1;
677
+ if (loose) {
678
+ result.push({ type: "text", value: "\n" });
679
+ }
680
+ while (++index < nodes.length) {
681
+ if (index) result.push({ type: "text", value: "\n" });
682
+ result.push(nodes[index]);
683
+ }
684
+ if (loose && nodes.length > 0) {
685
+ result.push({ type: "text", value: "\n" });
686
+ }
687
+ return result;
688
+ }
689
+ function trimMarkdownSpaceStart(value) {
690
+ let index = 0;
691
+ let code2 = value.charCodeAt(index);
692
+ while (code2 === 9 || code2 === 32) {
693
+ index++;
694
+ code2 = value.charCodeAt(index);
695
+ }
696
+ return value.slice(index);
697
+ }
698
+ function toHast(tree, options) {
699
+ const state = createState(tree, options);
700
+ const node = state.one(tree, void 0);
701
+ const foot = footer(state);
702
+ const result = Array.isArray(node) ? { type: "root", children: node } : node || { type: "root", children: [] };
703
+ if (foot) {
704
+ result.children.push({ type: "text", value: "\n" }, foot);
705
+ }
706
+ return result;
707
+ }
708
+ export {
709
+ toHast as t
710
+ };