vue-stream-markdown 0.1.5 → 0.1.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 (194) hide show
  1. package/dist/{blockquote-bkADuiGm.js → blockquote-CxA1dQZe.js} +4 -3
  2. package/dist/{button-BQhuT7wh.js → button-B2ebQt7R.js} +1 -1
  3. package/dist/button-C6zIegam.js +5 -0
  4. package/dist/{code-DF8PTNol.js → code-CPG6B2Cw.js} +11 -11
  5. package/dist/code-block--1wFjtmu.js +9 -0
  6. package/dist/{code-block-Dm2wl0cb.js → code-block-I_Yd1Flg.js} +8 -8
  7. package/dist/{composables-yny5gJo3.js → composables-DWipZHuF.js} +636 -625
  8. package/dist/corner-down-left-jxlwq3ox.js +24 -0
  9. package/dist/{delete-D17YBeI-.js → delete-DQ21z5-F.js} +4 -3
  10. package/dist/dist-CYkm26BF.js +119 -0
  11. package/dist/dropdown-CtWjJiAf.js +5 -0
  12. package/dist/{emphasis-B-2R_0Q5.js → emphasis-BjLkIDQB.js} +4 -3
  13. package/dist/{en-US-Kw2LYAMk.js → en-US-K7SXR3gy.js} +2 -1
  14. package/dist/{error-component-Bb0gIZsx.js → error-component-DSOVrE5J.js} +1 -1
  15. package/dist/error-component-DtcRn_0A.js +4 -0
  16. package/dist/footnote-definition-BmS8hchP.js +103 -0
  17. package/dist/footnote-reference-Z2tITeCE.js +86 -0
  18. package/dist/{heading-DyJIwNrN.js → heading-BwBFJB_E.js} +4 -3
  19. package/dist/{html-DXNqMvt_.js → html-DFU0myJP.js} +2 -2
  20. package/dist/{image-DvOGBhi-.js → image-BLlap3ce.js} +12 -97
  21. package/dist/{image-BPhFn1xp.js → image-IKvFWz2r.js} +14 -12
  22. package/dist/image-aT9xxnwh.js +8 -0
  23. package/dist/index.css +25 -0
  24. package/dist/index.d.ts +138 -73
  25. package/dist/index.js +283 -38
  26. package/dist/{inline-code-C44UJ2TH.js → inline-code-Bqu84Yyu.js} +2 -2
  27. package/dist/{inline-math-wO1rMt9T.js → inline-math-C2Ryxm-K.js} +4 -4
  28. package/dist/{link-sGo7CEll.js → link-BXl7E_6o.js} +6 -6
  29. package/dist/{list-C0I1ysSI.js → list-DLcwTZns.js} +4 -3
  30. package/dist/{list-item-BoC2wKBL.js → list-item-H0eYeIdB.js} +4 -3
  31. package/dist/{math-BlqtUf2r.js → math-C-0d5PaJ.js} +4 -4
  32. package/dist/{mermaid-Ka1jnXrR.js → mermaid-0x6C2MY5.js} +12 -10
  33. package/dist/modal-BDgfKnFl.js +4 -0
  34. package/dist/{modal-Rc_RoeYA.js → modal-CEqU9Ubu.js} +3 -3
  35. package/dist/{node-list-YhpHXdM_.js → node-list--v2wbxOo.js} +19 -10
  36. package/dist/node-list-CHvX62Zh.js +4 -0
  37. package/dist/{paragraph-BN-4-Dn7.js → paragraph-DRPfp6DV.js} +4 -3
  38. package/dist/previewers-DsN-cTwd.js +10 -0
  39. package/dist/segmented-DIVDGfR5.js +6 -0
  40. package/dist/{segmented-CaC54iz_.js → segmented-Drf8EBQD.js} +1 -1
  41. package/dist/{shiki-sJNZTn1K.js → shiki-CkwRD3TS.js} +5 -5
  42. package/dist/spin-DWkKEP0G.js +3 -0
  43. package/dist/{strong-NdAS3VjP.js → strong-D6V4fCRG.js} +4 -3
  44. package/dist/table-B2mghd3l.js +3 -0
  45. package/dist/{table-CWX5B2i1.js → table-DLUgGL5Q.js} +8 -8
  46. package/dist/{text-DpleLvNh.js → text-DoY1TIw3.js} +2 -2
  47. package/dist/{thematic-break-D5GvzU5S.js → thematic-break-DXDZ5dcO.js} +2 -2
  48. package/dist/{tooltip-Bgbzbk4Q.js → tooltip-Bdt9-aQx.js} +1 -1
  49. package/dist/tooltip-DQ1-yPia.js +4 -0
  50. package/dist/{vanilla-BTOVqKl7.js → vanilla-BSgZTIo9.js} +1 -1
  51. package/dist/vanilla-DUbuBied.js +4 -0
  52. package/dist/{yaml-y0snrPRx.js → yaml-3cd5rdJj.js} +3 -3
  53. package/dist/{zh-CN-Dfow4Yn2.js → zh-CN-CykTNqF_.js} +3 -2
  54. package/dist/zoom-container-D2DxS8V5.js +6 -0
  55. package/dist/{zoom-container-B1qbA-7z.js → zoom-container-f44XxzOI.js} +2 -2
  56. package/package.json +1 -1
  57. package/dist/button-JYC8d-B-.js +0 -5
  58. package/dist/code-block-BhMDz2ZL.js +0 -9
  59. package/dist/dropdown-Y5_Z4a_u.js +0 -5
  60. package/dist/error-component-DEIWb6kB.js +0 -4
  61. package/dist/image-DXBD47sF.js +0 -8
  62. package/dist/modal-Duhc-vVa.js +0 -4
  63. package/dist/node-list-C1je2nLd.js +0 -3
  64. package/dist/previewers-D0VVcdjL.js +0 -10
  65. package/dist/segmented-XdoLnuuq.js +0 -6
  66. package/dist/spin-wM2KE8mO.js +0 -3
  67. package/dist/table-R9gmCXm_.js +0 -3
  68. package/dist/tooltip-BJDs-A8d.js +0 -4
  69. package/dist/vanilla-DA5bwIkr.js +0 -4
  70. package/dist/zoom-container-KztuE4ri.js +0 -6
  71. /package/dist/{angular-Mip1mspI.js → angular-CEQtRU3N.js} +0 -0
  72. /package/dist/{angular-component-Cq5UbX7R.js → angular-component-QEWXDi5W.js} +0 -0
  73. /package/dist/{apache-BSq7fX32.js → apache-D1WYHuA2.js} +0 -0
  74. /package/dist/{arrow-left-C5s0Sn8o.js → arrow-left-DiHYz8df.js} +0 -0
  75. /package/dist/{asciidoc-DS-PMOLv.js → asciidoc-BbV_Tvaj.js} +0 -0
  76. /package/dist/{assembly-BPatlOM7.js → assembly-DOdgqSeT.js} +0 -0
  77. /package/dist/{astro-CSD_ZjXp.js → astro-I7-Zr25r.js} +0 -0
  78. /package/dist/{bash-RITislE1.js → bash-BC7HOdMh.js} +0 -0
  79. /package/dist/{batch-DWPShYhN.js → batch-XAv7F3kV.js} +0 -0
  80. /package/dist/{bicep-C6BEHfP6.js → bicep-B9IAZzHb.js} +0 -0
  81. /package/dist/{c-DNo3tsNy.js → c-B3pMu4KG.js} +0 -0
  82. /package/dist/{check-BfpxIITS.js → check-BjAiKMbo.js} +0 -0
  83. /package/dist/{chevron-down-LeNeemjn.js → chevron-down-B4lkjpIC.js} +0 -0
  84. /package/dist/{circle-alert-BjDuIzgc.js → circle-alert-DlAafH7h.js} +0 -0
  85. /package/dist/{clojure-C1DEYHW0.js → clojure-DwxK-YDX.js} +0 -0
  86. /package/dist/{cmake-B69mdXcH.js → cmake-DtnmI6Z6.js} +0 -0
  87. /package/dist/{cobol-qmL-zIWi.js → cobol--wWeXL_f.js} +0 -0
  88. /package/dist/{code-D9CiymEK.js → code-lfRPXNJI.js} +0 -0
  89. /package/dist/{codeowners-Crklt5nF.js → codeowners-Dtwyh-5g.js} +0 -0
  90. /package/dist/{coffeescript-k3huSp23.js → coffeescript-BlF7y2QG.js} +0 -0
  91. /package/dist/{copy-C4580J93.js → copy-BTFPPhff.js} +0 -0
  92. /package/dist/{cpp-Cn3MB35e.js → cpp-D_TbJeEH.js} +0 -0
  93. /package/dist/{crystal-D5aGETSx.js → crystal-lJ2ZzJQu.js} +0 -0
  94. /package/dist/{csharp-CgkTkbPx.js → csharp-D-5hlCJT.js} +0 -0
  95. /package/dist/{css-DRH4n_IV.js → css-Drykp8uH.js} +0 -0
  96. /package/dist/{csv-D5nNTIzO.js → csv-oLjD_o9N.js} +0 -0
  97. /package/dist/{cue-B5mC88-N.js → cue-BBe_9OA4.js} +0 -0
  98. /package/dist/{d-BdQRMgma.js → d-CPNK2-3G.js} +0 -0
  99. /package/dist/{dart-BGnfn0NN.js → dart-BNaQZJdJ.js} +0 -0
  100. /package/dist/{database-Ca1VGX7u.js → database-DRAhifbf.js} +0 -0
  101. /package/dist/{diff-DVaTsnqu.js → diff-D_vIvULL.js} +0 -0
  102. /package/dist/{docker-E47qYlmL.js → docker-BgJkkqCD.js} +0 -0
  103. /package/dist/{download-DytrK56a.js → download-Bk2mYZyf.js} +0 -0
  104. /package/dist/{elixir-C-jqqu6q.js → elixir-CTx5aScS.js} +0 -0
  105. /package/dist/{elm-CmeHvaWl.js → elm-nHy9iRuu.js} +0 -0
  106. /package/dist/{env-Ck1BHoxR.js → env-CrWzDcwP.js} +0 -0
  107. /package/dist/{erlang-CIP8kpGJ.js → erlang-CxR4-Qdt.js} +0 -0
  108. /package/dist/{eye-TaEwQS2Z.js → eye-DpAj1af-.js} +0 -0
  109. /package/dist/{flip-horizontal-BFWjqDbQ.js → flip-horizontal-CEf7aAdM.js} +0 -0
  110. /package/dist/{fortran-DJVP2s7V.js → fortran-DhUZYzo3.js} +0 -0
  111. /package/dist/{fsharp-Bp6mUcG0.js → fsharp-DyIvnsyH.js} +0 -0
  112. /package/dist/{git-BDcqJ1Gp.js → git-D4qjCZtd.js} +0 -0
  113. /package/dist/{gleam-JLiZVlev.js → gleam-D-ovCBt_.js} +0 -0
  114. /package/dist/{go-ClcCiS7e.js → go-CEH2y3pJ.js} +0 -0
  115. /package/dist/{graphql-D2RDo-DF.js → graphql-DbV-8_AJ.js} +0 -0
  116. /package/dist/{groovy-DLZBw8xE.js → groovy-B-_VVp4c.js} +0 -0
  117. /package/dist/{haml-Da74jRwZ.js → haml-Cnm_v56B.js} +0 -0
  118. /package/dist/{handlebars-CNgS57Sz.js → handlebars-8EEQS0El.js} +0 -0
  119. /package/dist/{haskell-DCvfD6VB.js → haskell-cLvKQFrd.js} +0 -0
  120. /package/dist/{haxe-CHVK1TId.js → haxe-DtCGwrr1.js} +0 -0
  121. /package/dist/{html-Du4235Z-.js → html-C2NHp3i4.js} +0 -0
  122. /package/dist/{http-B8VAFeQ5.js → http-DYO1Ugj7.js} +0 -0
  123. /package/dist/{image-D8MZj4W5.js → image-DDiNDOKJ.js} +0 -0
  124. /package/dist/{java-CoSdnK1N.js → java-it6UCC5M.js} +0 -0
  125. /package/dist/{javascript-BCDeVll0.js → javascript-DVxfoa-a.js} +0 -0
  126. /package/dist/{jinja-DYbiqZy0.js → jinja-CUKX2CXM.js} +0 -0
  127. /package/dist/{json-CdzCyWJA.js → json-O68iFOiu.js} +0 -0
  128. /package/dist/{julia-pswJGtpP.js → julia-Dq3BwHeZ.js} +0 -0
  129. /package/dist/{kdl-M8rfQ85l.js → kdl-CFVZba8u.js} +0 -0
  130. /package/dist/{kotlin-CfCV33oB.js → kotlin-BKhxhG0q.js} +0 -0
  131. /package/dist/{latex-DK8DFhTm.js → latex-B3hQqfJO.js} +0 -0
  132. /package/dist/{less-BFnNZiIs.js → less-Bw2JZJkw.js} +0 -0
  133. /package/dist/{link-C7eU_yi-.js → link-DCaSecEI.js} +0 -0
  134. /package/dist/{liquid-C8h46DoX.js → liquid-BsGDMxjJ.js} +0 -0
  135. /package/dist/{lisp-C3FbGuD1.js → lisp-CnrazyOe.js} +0 -0
  136. /package/dist/{log-D-O3FXf2.js → log-BuRjhdbZ.js} +0 -0
  137. /package/dist/{lua-BC_aR1_i.js → lua-CA97s0xX.js} +0 -0
  138. /package/dist/{luau-DFUOrNN7.js → luau-hq6gk9_N.js} +0 -0
  139. /package/dist/{makefile-Ck67veVV.js → makefile-mNhrnPWo.js} +0 -0
  140. /package/dist/{markdown-BX13X3kd.js → markdown-El6B7b99.js} +0 -0
  141. /package/dist/{marko-CQE8YTCc.js → marko-8nTOMumd.js} +0 -0
  142. /package/dist/{matlab-Bd9O2Ml3.js → matlab-DuqengFv.js} +0 -0
  143. /package/dist/{maximize-CDZ9rnYF.js → maximize-B1-N6kOL.js} +0 -0
  144. /package/dist/{mermaid-Dv-Pr0W-.js → mermaid-Byu8TsQE.js} +0 -0
  145. /package/dist/{minimize-B9ER7p2X.js → minimize-CVVLdf2H.js} +0 -0
  146. /package/dist/{nextflow-D3lDq1Yi.js → nextflow-DRCOPmGT.js} +0 -0
  147. /package/dist/{nginx-CgsqCL4l.js → nginx-DTgW--wm.js} +0 -0
  148. /package/dist/{nim-BJdSu3c6.js → nim-r-ftp-xj.js} +0 -0
  149. /package/dist/{nix-B7K_D6CN.js → nix-BdWPBS1Z.js} +0 -0
  150. /package/dist/{ocaml-gYS1Y45s.js → ocaml-vXi6ujuu.js} +0 -0
  151. /package/dist/{perl-DXFhFWhI.js → perl-C_g5vs30.js} +0 -0
  152. /package/dist/{php-We35bF4E.js → php-C_b0sjdl.js} +0 -0
  153. /package/dist/{postcss-BWovY_YV.js → postcss-Bsz3PPjI.js} +0 -0
  154. /package/dist/{powershell-C6teiBsq.js → powershell-D0kxdwKl.js} +0 -0
  155. /package/dist/{prisma-UyJEg0_X.js → prisma-BocqbK7a.js} +0 -0
  156. /package/dist/{prolog-YZsPgdnw.js → prolog-D-zd1rzT.js} +0 -0
  157. /package/dist/{properties-DaPbL0e2.js → properties-Dds-063G.js} +0 -0
  158. /package/dist/{proto-1LIwu2O1.js → proto-CzD9trm_.js} +0 -0
  159. /package/dist/{pug-CzkUK-Ec.js → pug-B1V2RxQS.js} +0 -0
  160. /package/dist/{puppet-CNhB1MHb.js → puppet-BcnVd0q5.js} +0 -0
  161. /package/dist/{python-B_hgEobv.js → python-BcZnB7mH.js} +0 -0
  162. /package/dist/{r-CVeKYmPK.js → r-CxSFFuvL.js} +0 -0
  163. /package/dist/{racket-D5UfvXuw.js → racket-DJ_82PRG.js} +0 -0
  164. /package/dist/{razor-RIKaANTN.js → razor-D7IkXHVQ.js} +0 -0
  165. /package/dist/{rotate-ccw-square-C2KVFUF3.js → rotate-ccw-square-5sO65BY9.js} +0 -0
  166. /package/dist/{ruby-C8wV0pMO.js → ruby-Cidk52Rl.js} +0 -0
  167. /package/dist/{rust-75Gei1mP.js → rust-DJvcpkbm.js} +0 -0
  168. /package/dist/{sass-Cq68xmQ4.js → sass-DTFDeixE.js} +0 -0
  169. /package/dist/{scala-C_E5rjSc.js → scala-GlHhGi5O.js} +0 -0
  170. /package/dist/{scheme-Bm-q-nLL.js → scheme-rNcj5mL9.js} +0 -0
  171. /package/dist/{shader-DPaRkMCs.js → shader-Df9eByRK.js} +0 -0
  172. /package/dist/{shiki-token-renderer-CLmUjKa3.js → shiki-token-renderer-BMveKuYt.js} +0 -0
  173. /package/dist/{solidity-DvHG_0CD.js → solidity-CfuYjRuT.js} +0 -0
  174. /package/dist/{spin--f5jNjBn.js → spin-D4Oi_m7j.js} +0 -0
  175. /package/dist/{stata-DoVloJLm.js → stata-BB5c_hbh.js} +0 -0
  176. /package/dist/{svelte-tlbA11de.js → svelte-2ISqxu6B.js} +0 -0
  177. /package/dist/{swift-BZn5eRnK.js → swift-wpybyudn.js} +0 -0
  178. /package/dist/{table-CaUMjs4M.js → table-iNA4la0w.js} +0 -0
  179. /package/dist/{terraform-c5-k7yB1.js → terraform-CLzhaCaX.js} +0 -0
  180. /package/dist/{text-DPCGWvDK.js → text-C0mKr3tC.js} +0 -0
  181. /package/dist/{toml-DdLGBe1A.js → toml-DImd1uev.js} +0 -0
  182. /package/dist/{twig-D_jzZxh6.js → twig-DEBVmtOq.js} +0 -0
  183. /package/dist/{typescript-B95hq2ns.js → typescript-Xo5tgeOd.js} +0 -0
  184. /package/dist/{typst-CSAEQ4yK.js → typst-_Ui0vNYP.js} +0 -0
  185. /package/dist/{v-BAhebuOB.js → v-Ch6vEAHG.js} +0 -0
  186. /package/dist/{vala-RAu83-lp.js → vala-Ds_Ad1cC.js} +0 -0
  187. /package/dist/{verilog-BgmTn52U.js → verilog-CUqRomTC.js} +0 -0
  188. /package/dist/{vim-c8oTCLkH.js → vim-BFUPh6oM.js} +0 -0
  189. /package/dist/{vue-TGT6HTBA.js → vue-DzgIlbJ2.js} +0 -0
  190. /package/dist/{xml-C1HDr874.js → xml-CmbQxaqc.js} +0 -0
  191. /package/dist/{yaml-BO7FjFQZ.js → yaml-BhwCoLnZ.js} +0 -0
  192. /package/dist/{zig-qANBp1SU.js → zig-Bmrmp8vo.js} +0 -0
  193. /package/dist/{zoomIn-iVMAUxIz.js → zoomIn-CCKcyIEv.js} +0 -0
  194. /package/dist/{zoomOut-Cxq1_dIQ.js → zoomOut-BrSwLQZ_.js} +0 -0
@@ -0,0 +1,24 @@
1
+ import { createElementBlock, createElementVNode, markRaw, openBlock } from "vue";
2
+
3
+ //#region ~icons/lucide/corner-down-left
4
+ const _hoisted_1 = {
5
+ viewBox: "0 0 24 24",
6
+ width: "1.2em",
7
+ height: "1.2em"
8
+ };
9
+ function render(_ctx, _cache) {
10
+ return openBlock(), createElementBlock("svg", _hoisted_1, [..._cache[0] || (_cache[0] = [createElementVNode("g", {
11
+ fill: "none",
12
+ stroke: "currentColor",
13
+ "stroke-linecap": "round",
14
+ "stroke-linejoin": "round",
15
+ "stroke-width": "2"
16
+ }, [createElementVNode("path", { d: "M20 4v7a4 4 0 0 1-4 4H4" }), createElementVNode("path", { d: "m9 10l-5 5l5 5" })], -1)])]);
17
+ }
18
+ var corner_down_left_default = markRaw({
19
+ name: "lucide-corner-down-left",
20
+ render
21
+ });
22
+
23
+ //#endregion
24
+ export { corner_down_left_default as default };
@@ -1,4 +1,5 @@
1
- import { t as node_list_default } from "./node-list-YhpHXdM_.js";
1
+ import "./composables-DWipZHuF.js";
2
+ import { t as node_list_default } from "./node-list--v2wbxOo.js";
2
3
  import { createElementBlock, createVNode, defineComponent, mergeProps, openBlock } from "vue";
3
4
 
4
5
  //#region src/components/renderers/delete.vue?vue&type=script&setup=true&lang.ts
@@ -18,8 +19,8 @@ var delete_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineC
18
19
  type: Object,
19
20
  required: true
20
21
  },
21
- indexKey: {
22
- type: [Number, String],
22
+ nodeKey: {
23
+ type: String,
23
24
  required: true
24
25
  },
25
26
  controls: {
@@ -0,0 +1,119 @@
1
+ //#region node_modules/.pnpm/treechop@0.1.2/node_modules/treechop/dist/index.js
2
+ const DEFAULT_CHILDREN_KEY = "children";
3
+ function createTreeUtils(options = {}) {
4
+ const { childrenKey = DEFAULT_CHILDREN_KEY } = options;
5
+ return {
6
+ childrenKey,
7
+ getChildrenKey(node, meta) {
8
+ return typeof this.childrenKey === "function" ? this.childrenKey(node, meta) : this.childrenKey;
9
+ },
10
+ getChildren(node, meta) {
11
+ return node[this.getChildrenKey(node, meta)] || [];
12
+ },
13
+ hasChildren(node, meta) {
14
+ const children = this.getChildren(node, meta);
15
+ return Array.isArray(children) && children.length > 0;
16
+ }
17
+ };
18
+ }
19
+ function preOrderTraverse(tree, callback, utils) {
20
+ const result = [];
21
+ const traverse = (nodes, parents = [], depth = 0) => {
22
+ nodes.forEach((node, index) => {
23
+ const meta = {
24
+ depth,
25
+ index,
26
+ parents
27
+ };
28
+ result.push(callback(node, meta));
29
+ if (utils.hasChildren(node, meta)) traverse(utils.getChildren(node, meta), [...parents, node], depth + 1);
30
+ });
31
+ };
32
+ traverse(tree);
33
+ return result;
34
+ }
35
+ function postOrderTraverse(tree, callback, utils) {
36
+ const result = [];
37
+ const traverse = (nodes, parents = [], depth = 0) => {
38
+ nodes.forEach((node, index) => {
39
+ const meta = {
40
+ depth,
41
+ index,
42
+ parents
43
+ };
44
+ if (utils.hasChildren(node, meta)) traverse(utils.getChildren(node, meta), [...parents, node], depth + 1);
45
+ result.push(callback(node, meta));
46
+ });
47
+ };
48
+ traverse(tree);
49
+ return result;
50
+ }
51
+ function breadthTraverse(tree, callback, utils) {
52
+ const result = [];
53
+ const queue = tree.map((node, index) => [
54
+ node,
55
+ index,
56
+ [],
57
+ 0
58
+ ]);
59
+ while (queue.length) {
60
+ const [node, index, parents, depth] = queue.shift();
61
+ const meta = {
62
+ depth,
63
+ index,
64
+ parents
65
+ };
66
+ result.push(callback(node, meta));
67
+ if (utils.hasChildren(node, meta)) utils.getChildren(node, meta).forEach((child, childIndex) => {
68
+ queue.push([
69
+ child,
70
+ childIndex,
71
+ [...parents, node],
72
+ depth + 1
73
+ ]);
74
+ });
75
+ }
76
+ return result;
77
+ }
78
+ function treeFlatFilter(tree, predicate, options = {}) {
79
+ const { strategy = "pre" } = options;
80
+ const utils = createTreeUtils(options);
81
+ const callback = (node, meta) => {
82
+ return predicate(node, meta) ? node : null;
83
+ };
84
+ switch (strategy) {
85
+ case "post": return postOrderTraverse(tree, callback, utils).filter(Boolean);
86
+ case "breadth": return breadthTraverse(tree, callback, utils).filter(Boolean);
87
+ case "pre":
88
+ default: return preOrderTraverse(tree, callback, utils).filter(Boolean);
89
+ }
90
+ }
91
+ function treeFilter(tree, predicate, options = {}) {
92
+ const utils = createTreeUtils(options);
93
+ const traverse = (nodes, parents = [], depth = 0) => {
94
+ const result = [];
95
+ for (let i = 0; i < nodes.length; i++) {
96
+ const node = nodes[i];
97
+ const meta = {
98
+ depth,
99
+ index: i,
100
+ parents
101
+ };
102
+ if (predicate(node, meta)) {
103
+ const newNode = { ...node };
104
+ if (utils.hasChildren(node, meta)) {
105
+ const children = traverse(utils.getChildren(node, meta), [...parents, node], depth + 1);
106
+ const childrenKey = utils.getChildrenKey(node, meta);
107
+ if (children.length > 0) newNode[childrenKey] = children;
108
+ else delete newNode[childrenKey];
109
+ }
110
+ result.push(newNode);
111
+ }
112
+ }
113
+ return result;
114
+ };
115
+ return traverse(tree);
116
+ }
117
+
118
+ //#endregion
119
+ export { treeFlatFilter as n, treeFilter as t };
@@ -0,0 +1,5 @@
1
+ import "./composables-DWipZHuF.js";
2
+ import "./tooltip-Bdt9-aQx.js";
3
+ import { n as dropdown_default } from "./button-B2ebQt7R.js";
4
+
5
+ export { dropdown_default as default };
@@ -1,4 +1,5 @@
1
- import { t as node_list_default } from "./node-list-YhpHXdM_.js";
1
+ import "./composables-DWipZHuF.js";
2
+ import { t as node_list_default } from "./node-list--v2wbxOo.js";
2
3
  import { createElementBlock, createVNode, defineComponent, mergeProps, openBlock } from "vue";
3
4
 
4
5
  //#region src/components/renderers/emphasis.vue?vue&type=script&setup=true&lang.ts
@@ -18,8 +19,8 @@ var emphasis_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defin
18
19
  type: Object,
19
20
  required: true
20
21
  },
21
- indexKey: {
22
- type: [Number, String],
22
+ nodeKey: {
23
+ type: String,
23
24
  required: true
24
25
  },
25
26
  controls: {
@@ -15,7 +15,8 @@ var button = {
15
15
  "rotateLeft": "Rotate Left",
16
16
  "rotateRight": "Rotate Right",
17
17
  "previous": "Previous",
18
- "next": "Next"
18
+ "next": "Next",
19
+ "back": "Back"
19
20
  };
20
21
  var error = {
21
22
  "vanilla": "Error",
@@ -1,4 +1,4 @@
1
- import { H as useContext, u as useI18n } from "./composables-yny5gJo3.js";
1
+ import { H as useContext, P as useI18n } from "./composables-DWipZHuF.js";
2
2
  import { computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, defineComponent, openBlock, renderSlot, resolveDynamicComponent, toDisplayString } from "vue";
3
3
 
4
4
  //#region src/components/error-component.vue?vue&type=script&setup=true&lang.ts
@@ -0,0 +1,4 @@
1
+ import "./composables-DWipZHuF.js";
2
+ import { t as error_component_default } from "./error-component-DSOVrE5J.js";
3
+
4
+ export { error_component_default as default };
@@ -0,0 +1,103 @@
1
+ import { H as useContext, P as useI18n } from "./composables-DWipZHuF.js";
2
+ import { t as node_list_default } from "./node-list--v2wbxOo.js";
3
+ import "./tooltip-Bdt9-aQx.js";
4
+ import { t as button_default } from "./button-B2ebQt7R.js";
5
+ import { computed, createElementBlock, createElementVNode, createVNode, defineComponent, mergeProps, openBlock, toDisplayString, unref } from "vue";
6
+
7
+ //#region src/components/renderers/footnote-definition.vue?vue&type=script&setup=true&lang.ts
8
+ const _hoisted_1 = ["id"];
9
+ const _hoisted_2 = { "data-stream-markdown": "footnote-definition-label" };
10
+ var footnote_definition_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
11
+ __name: "footnote-definition",
12
+ props: {
13
+ node: {
14
+ type: Object,
15
+ required: true
16
+ },
17
+ markdownParser: {
18
+ type: Object,
19
+ required: true
20
+ },
21
+ nodeRenderers: {
22
+ type: Object,
23
+ required: true
24
+ },
25
+ nodeKey: {
26
+ type: String,
27
+ required: true
28
+ },
29
+ controls: {
30
+ type: [Boolean, Object],
31
+ required: false
32
+ },
33
+ previewers: {
34
+ type: [Boolean, Object],
35
+ required: false
36
+ },
37
+ shikiOptions: {
38
+ type: Object,
39
+ required: false
40
+ },
41
+ mermaidOptions: {
42
+ type: Object,
43
+ required: false
44
+ },
45
+ katexOptions: {
46
+ type: Object,
47
+ required: false
48
+ },
49
+ hardenOptions: {
50
+ type: Object,
51
+ required: false
52
+ },
53
+ codeOptions: {
54
+ type: Object,
55
+ required: false
56
+ },
57
+ imageOptions: {
58
+ type: Object,
59
+ required: false
60
+ },
61
+ isDark: {
62
+ type: Boolean,
63
+ required: false
64
+ }
65
+ },
66
+ setup(__props) {
67
+ const props = __props;
68
+ const { t } = useI18n();
69
+ const { icons, getContainer } = useContext();
70
+ const id = computed(() => props.node.identifier);
71
+ const label = computed(() => props.node.label ?? id.value);
72
+ const title = computed(() => `${label.value}.`);
73
+ function scrollToReference() {
74
+ const footnoteElement = (getContainer() || document.body).querySelector(`#footnote-reference-${id.value}`);
75
+ if (!footnoteElement) return;
76
+ footnoteElement.scrollIntoView({ behavior: "smooth" });
77
+ }
78
+ return (_ctx, _cache) => {
79
+ return openBlock(), createElementBlock("a", {
80
+ id: `footnote-definition-${id.value}`,
81
+ "data-stream-markdown": "footnote-definition"
82
+ }, [
83
+ createElementVNode("span", _hoisted_2, toDisplayString(title.value), 1),
84
+ createVNode(node_list_default, mergeProps(props, { nodes: __props.node.children }), null, 16, ["nodes"]),
85
+ createVNode(button_default, {
86
+ "data-stream-markdown": "footnote-definition-button",
87
+ name: unref(t)("button.back"),
88
+ icon: unref(icons).cornerDownLeft,
89
+ "icon-style": { color: "var(--primary)" },
90
+ "button-style": { padding: "0.25rem" },
91
+ onClick: scrollToReference
92
+ }, null, 8, ["name", "icon"])
93
+ ], 8, _hoisted_1);
94
+ };
95
+ }
96
+ });
97
+
98
+ //#endregion
99
+ //#region src/components/renderers/footnote-definition.vue
100
+ var footnote_definition_default = footnote_definition_vue_vue_type_script_setup_true_lang_default;
101
+
102
+ //#endregion
103
+ export { footnote_definition_default as default };
@@ -0,0 +1,86 @@
1
+ import { H as useContext } from "./composables-DWipZHuF.js";
2
+ import { computed, createElementBlock, createElementVNode, defineComponent, openBlock, toDisplayString } from "vue";
3
+
4
+ //#region src/components/renderers/footnote-reference.vue?vue&type=script&setup=true&lang.ts
5
+ const _hoisted_1 = ["id"];
6
+ var footnote_reference_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
7
+ __name: "footnote-reference",
8
+ props: {
9
+ node: {
10
+ type: Object,
11
+ required: true
12
+ },
13
+ markdownParser: {
14
+ type: Object,
15
+ required: true
16
+ },
17
+ nodeRenderers: {
18
+ type: Object,
19
+ required: true
20
+ },
21
+ nodeKey: {
22
+ type: String,
23
+ required: true
24
+ },
25
+ controls: {
26
+ type: [Boolean, Object],
27
+ required: false
28
+ },
29
+ previewers: {
30
+ type: [Boolean, Object],
31
+ required: false
32
+ },
33
+ shikiOptions: {
34
+ type: Object,
35
+ required: false
36
+ },
37
+ mermaidOptions: {
38
+ type: Object,
39
+ required: false
40
+ },
41
+ katexOptions: {
42
+ type: Object,
43
+ required: false
44
+ },
45
+ hardenOptions: {
46
+ type: Object,
47
+ required: false
48
+ },
49
+ codeOptions: {
50
+ type: Object,
51
+ required: false
52
+ },
53
+ imageOptions: {
54
+ type: Object,
55
+ required: false
56
+ },
57
+ isDark: {
58
+ type: Boolean,
59
+ required: false
60
+ }
61
+ },
62
+ setup(__props) {
63
+ const props = __props;
64
+ const { getContainer } = useContext();
65
+ const id = computed(() => props.node.identifier);
66
+ const label = computed(() => props.node.label ?? id.value);
67
+ function scrollToFootnote() {
68
+ const footnoteElement = (getContainer() || document.body).querySelector(`#footnote-definition-${id.value}`);
69
+ if (!footnoteElement) return;
70
+ footnoteElement.scrollIntoView({ behavior: "smooth" });
71
+ }
72
+ return (_ctx, _cache) => {
73
+ return openBlock(), createElementBlock("sup", {
74
+ "data-stream-markdown": "footnote-reference",
75
+ onClick: scrollToFootnote
76
+ }, [createElementVNode("a", { id: `footnote-reference-${id.value}` }, "[" + toDisplayString(label.value) + "]", 9, _hoisted_1)]);
77
+ };
78
+ }
79
+ });
80
+
81
+ //#endregion
82
+ //#region src/components/renderers/footnote-reference.vue
83
+ var footnote_reference_default = footnote_reference_vue_vue_type_script_setup_true_lang_default;
84
+
85
+ //#endregion
86
+ export { footnote_reference_default as default };
@@ -1,4 +1,5 @@
1
- import { t as node_list_default } from "./node-list-YhpHXdM_.js";
1
+ import "./composables-DWipZHuF.js";
2
+ import { t as node_list_default } from "./node-list--v2wbxOo.js";
2
3
  import { computed, createBlock, createVNode, defineComponent, mergeProps, openBlock, resolveDynamicComponent, withCtx } from "vue";
3
4
 
4
5
  //#region src/components/renderers/heading.vue?vue&type=script&setup=true&lang.ts
@@ -17,8 +18,8 @@ var heading_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ define
17
18
  type: Object,
18
19
  required: true
19
20
  },
20
- indexKey: {
21
- type: [Number, String],
21
+ nodeKey: {
22
+ type: String,
22
23
  required: true
23
24
  },
24
25
  controls: {
@@ -17,8 +17,8 @@ var html_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineCom
17
17
  type: Object,
18
18
  required: true
19
19
  },
20
- indexKey: {
21
- type: [Number, String],
20
+ nodeKey: {
21
+ type: String,
22
22
  required: true
23
23
  },
24
24
  controls: {
@@ -1,102 +1,11 @@
1
- import { H as useContext, V as useControls, a as useMediumZoom, k as saveImage, u as useI18n } from "./composables-yny5gJo3.js";
2
- import { t as button_default } from "./button-BQhuT7wh.js";
3
- import { t as modal_default } from "./modal-Rc_RoeYA.js";
4
- import { t as zoom_container_default } from "./zoom-container-B1qbA-7z.js";
1
+ import { H as useContext, P as useI18n, V as useControls, j as saveImage, m as useMediumZoom } from "./composables-DWipZHuF.js";
2
+ import { n as treeFlatFilter } from "./dist-CYkm26BF.js";
3
+ import { t as button_default } from "./button-B2ebQt7R.js";
4
+ import { t as modal_default } from "./modal-CEqU9Ubu.js";
5
+ import { t as zoom_container_default } from "./zoom-container-f44XxzOI.js";
5
6
  import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createVNode, defineComponent, mergeProps, normalizeStyle, openBlock, ref, toRefs, unref, watch, withCtx } from "vue";
6
7
  import { useCycleList } from "@vueuse/core";
7
8
 
8
- //#region node_modules/.pnpm/treechop@0.1.2/node_modules/treechop/dist/index.js
9
- const DEFAULT_CHILDREN_KEY = "children";
10
- function createTreeUtils(options = {}) {
11
- const { childrenKey = DEFAULT_CHILDREN_KEY } = options;
12
- return {
13
- childrenKey,
14
- getChildrenKey(node, meta) {
15
- return typeof this.childrenKey === "function" ? this.childrenKey(node, meta) : this.childrenKey;
16
- },
17
- getChildren(node, meta) {
18
- return node[this.getChildrenKey(node, meta)] || [];
19
- },
20
- hasChildren(node, meta) {
21
- const children = this.getChildren(node, meta);
22
- return Array.isArray(children) && children.length > 0;
23
- }
24
- };
25
- }
26
- function preOrderTraverse(tree, callback, utils) {
27
- const result = [];
28
- const traverse = (nodes, parents = [], depth = 0) => {
29
- nodes.forEach((node, index) => {
30
- const meta = {
31
- depth,
32
- index,
33
- parents
34
- };
35
- result.push(callback(node, meta));
36
- if (utils.hasChildren(node, meta)) traverse(utils.getChildren(node, meta), [...parents, node], depth + 1);
37
- });
38
- };
39
- traverse(tree);
40
- return result;
41
- }
42
- function postOrderTraverse(tree, callback, utils) {
43
- const result = [];
44
- const traverse = (nodes, parents = [], depth = 0) => {
45
- nodes.forEach((node, index) => {
46
- const meta = {
47
- depth,
48
- index,
49
- parents
50
- };
51
- if (utils.hasChildren(node, meta)) traverse(utils.getChildren(node, meta), [...parents, node], depth + 1);
52
- result.push(callback(node, meta));
53
- });
54
- };
55
- traverse(tree);
56
- return result;
57
- }
58
- function breadthTraverse(tree, callback, utils) {
59
- const result = [];
60
- const queue = tree.map((node, index) => [
61
- node,
62
- index,
63
- [],
64
- 0
65
- ]);
66
- while (queue.length) {
67
- const [node, index, parents, depth] = queue.shift();
68
- const meta = {
69
- depth,
70
- index,
71
- parents
72
- };
73
- result.push(callback(node, meta));
74
- if (utils.hasChildren(node, meta)) utils.getChildren(node, meta).forEach((child, childIndex) => {
75
- queue.push([
76
- child,
77
- childIndex,
78
- [...parents, node],
79
- depth + 1
80
- ]);
81
- });
82
- }
83
- return result;
84
- }
85
- function treeFlatFilter(tree, predicate, options = {}) {
86
- const { strategy = "pre" } = options;
87
- const utils = createTreeUtils(options);
88
- const callback = (node, meta) => {
89
- return predicate(node, meta) ? node : null;
90
- };
91
- switch (strategy) {
92
- case "post": return postOrderTraverse(tree, callback, utils).filter(Boolean);
93
- case "breadth": return breadthTraverse(tree, callback, utils).filter(Boolean);
94
- case "pre":
95
- default: return preOrderTraverse(tree, callback, utils).filter(Boolean);
96
- }
97
- }
98
-
99
- //#endregion
100
9
  //#region src/components/image.vue?vue&type=script&setup=true&lang.ts
101
10
  const _hoisted_1 = [
102
11
  "src",
@@ -137,6 +46,10 @@ var image_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineCo
137
46
  type: [Boolean, Object],
138
47
  required: false,
139
48
  default: true
49
+ },
50
+ transformHardenUrl: {
51
+ type: Function,
52
+ required: false
140
53
  }
141
54
  },
142
55
  emits: ["load", "error"],
@@ -148,7 +61,9 @@ var image_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineCo
148
61
  const { icons, parsedNodes } = useContext();
149
62
  const { isControlEnabled, getControlValue } = useControls({ controls });
150
63
  const imageNodes = computed(() => treeFlatFilter(parsedNodes.value, (node) => node.type === "image" && !node.loading));
151
- const imageList = computed(() => [...new Set(imageNodes.value.map((node) => node.url))]);
64
+ const imageList = computed(() => {
65
+ return [...new Set(imageNodes.value.map((node) => node.url))].filter((url) => props.transformHardenUrl ? props.transformHardenUrl(url) : url).filter(Boolean);
66
+ });
152
67
  const { state: imageSrc, prev, next } = useCycleList(imageList, {
153
68
  initialValue: props.src,
154
69
  fallbackIndex: 0
@@ -1,11 +1,11 @@
1
- import { H as useContext, V as useControls, g as useHardenSanitizers, k as saveImage, u as useI18n } from "./composables-yny5gJo3.js";
2
- import "./tooltip-Bgbzbk4Q.js";
3
- import { t as button_default } from "./button-BQhuT7wh.js";
4
- import "./modal-Rc_RoeYA.js";
5
- import { t as error_component_default } from "./error-component-Bb0gIZsx.js";
6
- import { t as image_default$1 } from "./image-DvOGBhi-.js";
7
- import "./zoom-container-B1qbA-7z.js";
8
- import { t as spin_default } from "./spin--f5jNjBn.js";
1
+ import { H as useContext, P as useI18n, V as useControls, i as useSanitizers, j as saveImage } from "./composables-DWipZHuF.js";
2
+ import "./tooltip-Bdt9-aQx.js";
3
+ import { t as button_default } from "./button-B2ebQt7R.js";
4
+ import "./modal-CEqU9Ubu.js";
5
+ import { t as error_component_default } from "./error-component-DSOVrE5J.js";
6
+ import "./zoom-container-f44XxzOI.js";
7
+ import { t as image_default$1 } from "./image-BLlap3ce.js";
8
+ import { t as spin_default } from "./spin-D4Oi_m7j.js";
9
9
  import { computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, defineComponent, mergeProps, normalizeStyle, openBlock, ref, resolveDynamicComponent, toDisplayString, toRefs, unref, withCtx } from "vue";
10
10
 
11
11
  //#region src/components/renderers/image.vue?vue&type=script&setup=true&lang.ts
@@ -29,8 +29,8 @@ var image_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineCo
29
29
  type: Object,
30
30
  required: true
31
31
  },
32
- indexKey: {
33
- type: [Number, String],
32
+ nodeKey: {
33
+ type: String,
34
34
  required: true
35
35
  },
36
36
  controls: {
@@ -88,7 +88,7 @@ var image_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineCo
88
88
  return ((_props$imageOptions = props.imageOptions) === null || _props$imageOptions === void 0 ? void 0 : _props$imageOptions.fallback) ?? "";
89
89
  });
90
90
  const imageSrc = computed(() => fallbackAttempted.value && fallback.value ? fallback.value : props.node.url);
91
- const { transformedUrl, isHardenUrl } = useHardenSanitizers({
91
+ const { transformedUrl, isHardenUrl, transformHardenUrl } = useSanitizers({
92
92
  url: imageSrc,
93
93
  hardenOptions,
94
94
  loading: isLoading,
@@ -155,6 +155,7 @@ var image_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineCo
155
155
  title: title.value,
156
156
  preview: !fallbackAttempted.value && enablePreview.value,
157
157
  controls: unref(controls),
158
+ "transform-harden-url": unref(transformHardenUrl),
158
159
  onLoad: handleLoaded,
159
160
  onError: handleError
160
161
  }, null, 8, [
@@ -162,7 +163,8 @@ var image_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineCo
162
163
  "alt",
163
164
  "title",
164
165
  "preview",
165
- "controls"
166
+ "controls",
167
+ "transform-harden-url"
166
168
  ])) : unref(isHardenUrl) || loadError.value ? (openBlock(), createBlock(resolveDynamicComponent(Error.value), mergeProps({
167
169
  key: 3,
168
170
  variant: unref(isHardenUrl) ? "harden-image" : "image"
@@ -0,0 +1,8 @@
1
+ import "./composables-DWipZHuF.js";
2
+ import "./tooltip-Bdt9-aQx.js";
3
+ import "./button-B2ebQt7R.js";
4
+ import "./modal-CEqU9Ubu.js";
5
+ import "./zoom-container-f44XxzOI.js";
6
+ import { t as image_default } from "./image-BLlap3ce.js";
7
+
8
+ export { image_default as default };
package/dist/index.css CHANGED
@@ -591,6 +591,31 @@
591
591
  padding: 1rem;
592
592
  }
593
593
 
594
+ .stream-markdown [data-stream-markdown='footnote-reference'] {
595
+ color: var(--primary);
596
+ cursor: pointer;
597
+ }
598
+
599
+ .stream-markdown [data-stream-markdown='footnote-definition'] {
600
+ color: var(--muted-foreground);
601
+ }
602
+
603
+ .stream-markdown [data-stream-markdown='footnote-definition'] [data-stream-markdown='footnote-definition-label'] {
604
+ display: inline-block;
605
+ vertical-align: middle;
606
+ margin-right: 0.25rem;
607
+ }
608
+
609
+ .stream-markdown [data-stream-markdown='footnote-definition'] [data-stream-markdown='footnote-definition-button'] {
610
+ display: inline-block;
611
+ vertical-align: middle;
612
+ margin-left: 0.25rem;
613
+ }
614
+
615
+ .stream-markdown [data-stream-markdown='footnote-definition'] p {
616
+ display: inline;
617
+ }
618
+
594
619
  @media (max-width: 1024px) {
595
620
  .stream-markdown [data-stream-markdown='code-block-header'] {
596
621
  padding-inline: 0.75rem;