vue-stream-markdown 0.1.3 → 0.1.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 (193) hide show
  1. package/README.md +3 -1
  2. package/dist/arrow-left-C5s0Sn8o.js +25 -0
  3. package/dist/{blockquote-DdEg2gww.js → blockquote-bkADuiGm.js} +1 -9
  4. package/dist/{button-CJyeXWq2.js → button-BQhuT7wh.js} +2 -3
  5. package/dist/button-JYC8d-B-.js +5 -0
  6. package/dist/{code-CJ4tMt6L.js → code-DF8PTNol.js} +10 -18
  7. package/dist/code-block-BhMDz2ZL.js +9 -0
  8. package/dist/{code-block-CQ4lgva1.js → code-block-Dm2wl0cb.js} +87 -77
  9. package/dist/{composables-Cj6_jbwr.js → composables-yny5gJo3.js} +570 -234
  10. package/dist/{delete-BdWzKJCy.js → delete-D17YBeI-.js} +1 -9
  11. package/dist/dropdown-Y5_Z4a_u.js +5 -0
  12. package/dist/{emphasis-CTuGt1Ok.js → emphasis-B-2R_0Q5.js} +1 -9
  13. package/dist/{en-US-Bfc50l3I.js → en-US-Kw2LYAMk.js} +7 -1
  14. package/dist/{error-component-ClGLfmwy.js → error-component-Bb0gIZsx.js} +4 -3
  15. package/dist/error-component-DEIWb6kB.js +4 -0
  16. package/dist/flip-horizontal-BFWjqDbQ.js +25 -0
  17. package/dist/{heading-2vpQQtTH.js → heading-DyJIwNrN.js} +1 -9
  18. package/dist/{html-DL0PcUXX.js → html-DXNqMvt_.js} +0 -8
  19. package/dist/{image-xeiC5YFM.js → image-BPhFn1xp.js} +40 -76
  20. package/dist/image-DXBD47sF.js +8 -0
  21. package/dist/image-DvOGBhi-.js +327 -0
  22. package/dist/index.css +44 -64
  23. package/dist/index.d.ts +155 -81
  24. package/dist/index.js +55 -63
  25. package/dist/{inline-code-CBoqhfz7.js → inline-code-C44UJ2TH.js} +0 -8
  26. package/dist/{inline-math-C2NUSasr.js → inline-math-wO1rMt9T.js} +2 -10
  27. package/dist/{link-BceXudNH.js → link-sGo7CEll.js} +3 -11
  28. package/dist/{list-BCiFKGaz.js → list-C0I1ysSI.js} +1 -9
  29. package/dist/{list-item-p-OLUR_9.js → list-item-BoC2wKBL.js} +1 -9
  30. package/dist/{math-DXOLG3Xg.js → math-BlqtUf2r.js} +2 -10
  31. package/dist/{mermaid-CU4hpB6S.js → mermaid-Ka1jnXrR.js} +6 -14
  32. package/dist/modal-Duhc-vVa.js +4 -0
  33. package/dist/modal-Rc_RoeYA.js +94 -0
  34. package/dist/node-list-C1je2nLd.js +3 -0
  35. package/dist/{node-list-CGr_EVtn.js → node-list-YhpHXdM_.js} +0 -16
  36. package/dist/{paragraph-DYjqr_Sa.js → paragraph-BN-4-Dn7.js} +1 -9
  37. package/dist/previewers-D0VVcdjL.js +10 -0
  38. package/dist/rotate-ccw-square-C2KVFUF3.js +24 -0
  39. package/dist/{segmented-CF6exjdD.js → segmented-CaC54iz_.js} +1 -1
  40. package/dist/segmented-XdoLnuuq.js +6 -0
  41. package/dist/{shiki-BlfngIRi.js → shiki-sJNZTn1K.js} +4 -12
  42. package/dist/spin-wM2KE8mO.js +3 -0
  43. package/dist/{strong-CvOjLZiq.js → strong-NdAS3VjP.js} +1 -9
  44. package/dist/{table-C5VHgkTQ.js → table-CWX5B2i1.js} +14 -18
  45. package/dist/table-R9gmCXm_.js +3 -0
  46. package/dist/{text-DuONUqRA.js → text-DpleLvNh.js} +0 -8
  47. package/dist/{thematic-break-CcNPEI9Y.js → thematic-break-D5GvzU5S.js} +0 -8
  48. package/dist/tooltip-BJDs-A8d.js +4 -0
  49. package/dist/tooltip-Bgbzbk4Q.js +68 -0
  50. package/dist/{vanilla-D5DzB31q.js → vanilla-BTOVqKl7.js} +1 -1
  51. package/dist/vanilla-DA5bwIkr.js +4 -0
  52. package/dist/{yaml-DJHrmzSe.js → yaml-y0snrPRx.js} +1 -9
  53. package/dist/{zh-CN-CL1XGe0H.js → zh-CN-Dfow4Yn2.js} +7 -1
  54. package/dist/zoom-container-B1qbA-7z.js +153 -0
  55. package/dist/zoom-container-KztuE4ri.js +6 -0
  56. package/package.json +9 -10
  57. package/dist/button-2wMU7qkH.js +0 -5
  58. package/dist/code-block-BucFZooo.js +0 -9
  59. package/dist/dropdown-dsCfq0Hl.js +0 -5
  60. package/dist/error-component-B0mmLhh6.js +0 -4
  61. package/dist/modal-CuQR21UD.js +0 -71
  62. package/dist/modal-DcpxxDDX.js +0 -3
  63. package/dist/node-list-lgY1wbfQ.js +0 -3
  64. package/dist/previewers-qHMi6xZ3.js +0 -10
  65. package/dist/segmented-BeHqXuFx.js +0 -6
  66. package/dist/spin-Bz4zGBEo.js +0 -3
  67. package/dist/table-CZLbUHiJ.js +0 -3
  68. package/dist/tooltip-BzVZqo7w.js +0 -4
  69. package/dist/tooltip-gxsqaBNg.js +0 -71
  70. package/dist/vanilla-CKj7EQLx.js +0 -4
  71. package/dist/zoom-container-CwEDlKRx.js +0 -6
  72. package/dist/zoom-container-D_fBClW2.js +0 -111
  73. /package/dist/{angular-Chs-UKBr.js → angular-Mip1mspI.js} +0 -0
  74. /package/dist/{angular-component-Cc_FANXU.js → angular-component-Cq5UbX7R.js} +0 -0
  75. /package/dist/{apache-COYnc6xR.js → apache-BSq7fX32.js} +0 -0
  76. /package/dist/{asciidoc-BabXBDAL.js → asciidoc-DS-PMOLv.js} +0 -0
  77. /package/dist/{assembly-CDqKhexW.js → assembly-BPatlOM7.js} +0 -0
  78. /package/dist/{astro-C9kftzFG.js → astro-CSD_ZjXp.js} +0 -0
  79. /package/dist/{bash-Ce4pNIkV.js → bash-RITislE1.js} +0 -0
  80. /package/dist/{batch-CHQBRjFL.js → batch-DWPShYhN.js} +0 -0
  81. /package/dist/{bicep-8jxWtuBF.js → bicep-C6BEHfP6.js} +0 -0
  82. /package/dist/{c-FBUef746.js → c-DNo3tsNy.js} +0 -0
  83. /package/dist/{check-C4xOk8um.js → check-BfpxIITS.js} +0 -0
  84. /package/dist/{chevron-down-cnOJ4h1g.js → chevron-down-LeNeemjn.js} +0 -0
  85. /package/dist/{circle-alert-CLX-h5rZ.js → circle-alert-BjDuIzgc.js} +0 -0
  86. /package/dist/{clojure-BulUroSy.js → clojure-C1DEYHW0.js} +0 -0
  87. /package/dist/{cmake-CW3vz1Mo.js → cmake-B69mdXcH.js} +0 -0
  88. /package/dist/{cobol-CIn3oFju.js → cobol-qmL-zIWi.js} +0 -0
  89. /package/dist/{code-D8LSp8rK.js → code-D9CiymEK.js} +0 -0
  90. /package/dist/{codeowners-CJggXF_b.js → codeowners-Crklt5nF.js} +0 -0
  91. /package/dist/{coffeescript-CBrVvzGY.js → coffeescript-k3huSp23.js} +0 -0
  92. /package/dist/{copy-Cabve0xf.js → copy-C4580J93.js} +0 -0
  93. /package/dist/{cpp-BTKeuyd-.js → cpp-Cn3MB35e.js} +0 -0
  94. /package/dist/{crystal-DyIYvZbm.js → crystal-D5aGETSx.js} +0 -0
  95. /package/dist/{csharp-NqZ1vyF9.js → csharp-CgkTkbPx.js} +0 -0
  96. /package/dist/{css-BpR5Lajb.js → css-DRH4n_IV.js} +0 -0
  97. /package/dist/{csv-eCMFnKKK.js → csv-D5nNTIzO.js} +0 -0
  98. /package/dist/{cue-TY97dGOQ.js → cue-B5mC88-N.js} +0 -0
  99. /package/dist/{d-NftUsdTd.js → d-BdQRMgma.js} +0 -0
  100. /package/dist/{dart-DJpwZZbk.js → dart-BGnfn0NN.js} +0 -0
  101. /package/dist/{database-aZwE71Px.js → database-Ca1VGX7u.js} +0 -0
  102. /package/dist/{diff-CYRzypaU.js → diff-DVaTsnqu.js} +0 -0
  103. /package/dist/{docker-CxHBuukH.js → docker-E47qYlmL.js} +0 -0
  104. /package/dist/{download-Bnn7rtYw.js → download-DytrK56a.js} +0 -0
  105. /package/dist/{elixir-BKSxVc1h.js → elixir-C-jqqu6q.js} +0 -0
  106. /package/dist/{elm-DScuAf3X.js → elm-CmeHvaWl.js} +0 -0
  107. /package/dist/{env-CDAKsodl.js → env-Ck1BHoxR.js} +0 -0
  108. /package/dist/{erlang-D2M1ZL3m.js → erlang-CIP8kpGJ.js} +0 -0
  109. /package/dist/{eye-CdeX8PhP.js → eye-TaEwQS2Z.js} +0 -0
  110. /package/dist/{fortran-CORyQ0wt.js → fortran-DJVP2s7V.js} +0 -0
  111. /package/dist/{fsharp-BJz_Jgpl.js → fsharp-Bp6mUcG0.js} +0 -0
  112. /package/dist/{git-DgrlTr1E.js → git-BDcqJ1Gp.js} +0 -0
  113. /package/dist/{gleam-t_xad9Kw.js → gleam-JLiZVlev.js} +0 -0
  114. /package/dist/{go-Cvlh1xtL.js → go-ClcCiS7e.js} +0 -0
  115. /package/dist/{graphql-ApIm0mDD.js → graphql-D2RDo-DF.js} +0 -0
  116. /package/dist/{groovy-CaLnK8PV.js → groovy-DLZBw8xE.js} +0 -0
  117. /package/dist/{haml-MwijEO_6.js → haml-Da74jRwZ.js} +0 -0
  118. /package/dist/{handlebars-CKdUPI9h.js → handlebars-CNgS57Sz.js} +0 -0
  119. /package/dist/{haskell-NPOXEnck.js → haskell-DCvfD6VB.js} +0 -0
  120. /package/dist/{haxe-DyKBMsDE.js → haxe-CHVK1TId.js} +0 -0
  121. /package/dist/{html-CMgES1dE.js → html-Du4235Z-.js} +0 -0
  122. /package/dist/{http-B9FFNmUr.js → http-B8VAFeQ5.js} +0 -0
  123. /package/dist/{image-CMZAakWu.js → image-D8MZj4W5.js} +0 -0
  124. /package/dist/{java-iU-L9wJz.js → java-CoSdnK1N.js} +0 -0
  125. /package/dist/{javascript-DtnWdTFC.js → javascript-BCDeVll0.js} +0 -0
  126. /package/dist/{jinja-CoWszo_D.js → jinja-DYbiqZy0.js} +0 -0
  127. /package/dist/{json-C80qKCnh.js → json-CdzCyWJA.js} +0 -0
  128. /package/dist/{julia-DG2BCBLx.js → julia-pswJGtpP.js} +0 -0
  129. /package/dist/{kdl-7twRfIlJ.js → kdl-M8rfQ85l.js} +0 -0
  130. /package/dist/{kotlin-BjrOgP7R.js → kotlin-CfCV33oB.js} +0 -0
  131. /package/dist/{latex-DIQfUvG8.js → latex-DK8DFhTm.js} +0 -0
  132. /package/dist/{less-BJ1yEAWt.js → less-BFnNZiIs.js} +0 -0
  133. /package/dist/{link-DeV4CQOB.js → link-C7eU_yi-.js} +0 -0
  134. /package/dist/{liquid-BqKFZ1wQ.js → liquid-C8h46DoX.js} +0 -0
  135. /package/dist/{lisp-oekhB2ti.js → lisp-C3FbGuD1.js} +0 -0
  136. /package/dist/{log-D1XEqR9q.js → log-D-O3FXf2.js} +0 -0
  137. /package/dist/{lua-C5Q97-1D.js → lua-BC_aR1_i.js} +0 -0
  138. /package/dist/{luau-BT8KwqZ2.js → luau-DFUOrNN7.js} +0 -0
  139. /package/dist/{makefile-B4a0ciG4.js → makefile-Ck67veVV.js} +0 -0
  140. /package/dist/{markdown-DvNyKsiJ.js → markdown-BX13X3kd.js} +0 -0
  141. /package/dist/{marko-BzsIf6bg.js → marko-CQE8YTCc.js} +0 -0
  142. /package/dist/{matlab-cMBkmDhQ.js → matlab-Bd9O2Ml3.js} +0 -0
  143. /package/dist/{maximize-4PIqBONS.js → maximize-CDZ9rnYF.js} +0 -0
  144. /package/dist/{mermaid-8JIH2gkQ.js → mermaid-Dv-Pr0W-.js} +0 -0
  145. /package/dist/{minimize-BJ8htyDF.js → minimize-B9ER7p2X.js} +0 -0
  146. /package/dist/{nextflow-DNmqU1xg.js → nextflow-D3lDq1Yi.js} +0 -0
  147. /package/dist/{nginx-DDfYF_rj.js → nginx-CgsqCL4l.js} +0 -0
  148. /package/dist/{nim-D9xEmy4k.js → nim-BJdSu3c6.js} +0 -0
  149. /package/dist/{nix-BV1Deshw.js → nix-B7K_D6CN.js} +0 -0
  150. /package/dist/{ocaml-BkFn4LL3.js → ocaml-gYS1Y45s.js} +0 -0
  151. /package/dist/{perl-BytUHDE7.js → perl-DXFhFWhI.js} +0 -0
  152. /package/dist/{php-BImJJtNM.js → php-We35bF4E.js} +0 -0
  153. /package/dist/{postcss-CrZ9_0sT.js → postcss-BWovY_YV.js} +0 -0
  154. /package/dist/{powershell-DYSGu7TM.js → powershell-C6teiBsq.js} +0 -0
  155. /package/dist/{prisma-BhRvcOFY.js → prisma-UyJEg0_X.js} +0 -0
  156. /package/dist/{prolog-DuaCKek_.js → prolog-YZsPgdnw.js} +0 -0
  157. /package/dist/{properties-BbIJwuP-.js → properties-DaPbL0e2.js} +0 -0
  158. /package/dist/{proto-CE0aVW11.js → proto-1LIwu2O1.js} +0 -0
  159. /package/dist/{pug-B1-IC-Tc.js → pug-CzkUK-Ec.js} +0 -0
  160. /package/dist/{puppet-8nYquiMG.js → puppet-CNhB1MHb.js} +0 -0
  161. /package/dist/{python-DhRyfBrD.js → python-B_hgEobv.js} +0 -0
  162. /package/dist/{r-Cjje17IA.js → r-CVeKYmPK.js} +0 -0
  163. /package/dist/{racket-Dx0gMnpg.js → racket-D5UfvXuw.js} +0 -0
  164. /package/dist/{razor-DPht_bdD.js → razor-RIKaANTN.js} +0 -0
  165. /package/dist/{ruby-B8RxtCzI.js → ruby-C8wV0pMO.js} +0 -0
  166. /package/dist/{rust-Cjtli6yf.js → rust-75Gei1mP.js} +0 -0
  167. /package/dist/{sass-Dv3DMzjs.js → sass-Cq68xmQ4.js} +0 -0
  168. /package/dist/{scala-B7bZGKXq.js → scala-C_E5rjSc.js} +0 -0
  169. /package/dist/{scheme-B2PsEdVN.js → scheme-Bm-q-nLL.js} +0 -0
  170. /package/dist/{shader-BZzu3zGr.js → shader-DPaRkMCs.js} +0 -0
  171. /package/dist/{shiki-token-renderer-D164wC7Y.js → shiki-token-renderer-CLmUjKa3.js} +0 -0
  172. /package/dist/{solidity-CLieFYpL.js → solidity-DvHG_0CD.js} +0 -0
  173. /package/dist/{spin-Ds5W7qC_.js → spin--f5jNjBn.js} +0 -0
  174. /package/dist/{stata-C0yUiO47.js → stata-DoVloJLm.js} +0 -0
  175. /package/dist/{svelte-rtF4yNGL.js → svelte-tlbA11de.js} +0 -0
  176. /package/dist/{swift-CzvYoIM0.js → swift-BZn5eRnK.js} +0 -0
  177. /package/dist/{table-4ec9FVB_.js → table-CaUMjs4M.js} +0 -0
  178. /package/dist/{terraform-CD_BZGb-.js → terraform-c5-k7yB1.js} +0 -0
  179. /package/dist/{text-D1-vbZ7l.js → text-DPCGWvDK.js} +0 -0
  180. /package/dist/{toml-C6jUF0Xd.js → toml-DdLGBe1A.js} +0 -0
  181. /package/dist/{twig-C4dfP84J.js → twig-D_jzZxh6.js} +0 -0
  182. /package/dist/{typescript-Bk-pp-cK.js → typescript-B95hq2ns.js} +0 -0
  183. /package/dist/{typst-DPCpaVSH.js → typst-CSAEQ4yK.js} +0 -0
  184. /package/dist/{v-nRGMJ2Ki.js → v-BAhebuOB.js} +0 -0
  185. /package/dist/{vala-B78bKcY0.js → vala-RAu83-lp.js} +0 -0
  186. /package/dist/{verilog-CRpkl76S.js → verilog-BgmTn52U.js} +0 -0
  187. /package/dist/{vim-DpKnut7b.js → vim-c8oTCLkH.js} +0 -0
  188. /package/dist/{vue-D5eadhjo.js → vue-TGT6HTBA.js} +0 -0
  189. /package/dist/{xml-Dvx5F-hl.js → xml-C1HDr874.js} +0 -0
  190. /package/dist/{yaml-n1S8nAOh.js → yaml-BO7FjFQZ.js} +0 -0
  191. /package/dist/{zig-R-iFzxfW.js → zig-qANBp1SU.js} +0 -0
  192. /package/dist/{zoomIn-CEukuh3x.js → zoomIn-iVMAUxIz.js} +0 -0
  193. /package/dist/{zoomOut-qlzQyQli.js → zoomOut-Cxq1_dIQ.js} +0 -0
@@ -1,10 +1,6 @@
1
- import { computed, defineAsyncComponent, inject, onBeforeUnmount, provide, ref, toValue, unref, watch, watchEffect } from "vue";
2
- import { useStyleTag } from "@vueuse/core";
3
- import { setDefaultProps } from "vue-tippy";
4
- import "tippy.js/dist/tippy.css";
5
- import "tippy.js/themes/light.css";
6
- import "tippy.js/dist/border.css";
7
- import "tippy.js/dist/svg-arrow.css";
1
+ import { computed, defineAsyncComponent, inject, nextTick, onBeforeUnmount, provide, ref, toValue, unref, watch, watchEffect } from "vue";
2
+ import { autoUpdate, flip, offset, shift, useFloating } from "@floating-ui/vue";
3
+ import { useEventListener, useStyleTag } from "@vueuse/core";
8
4
 
9
5
  //#region src/composables/use-code-options.ts
10
6
  function useCodeOptions(options) {
@@ -36,7 +32,9 @@ function useCodeOptions(options) {
36
32
  const CONTEXT_KEY = Symbol("stream-markdown-context");
37
33
  function useContext() {
38
34
  const context = injectContext();
35
+ const icons = computed(() => unref(context.icons) ?? {});
39
36
  const isDark = computed(() => unref(context.isDark) ?? false);
37
+ const parsedNodes = computed(() => unref(context.parsedNodes) ?? []);
40
38
  function provideContext(ctx) {
41
39
  provide(CONTEXT_KEY, {
42
40
  ...injectContext(),
@@ -50,7 +48,9 @@ function useContext() {
50
48
  context,
51
49
  provideContext,
52
50
  injectContext,
51
+ icons,
53
52
  isDark,
53
+ parsedNodes,
54
54
  get getContainer() {
55
55
  return context.getContainer || (() => void 0);
56
56
  },
@@ -92,6 +92,122 @@ function useControls(options) {
92
92
  };
93
93
  }
94
94
 
95
+ //#endregion
96
+ //#region src/composables/use-floating-element.ts
97
+ function useFloatingElement(options) {
98
+ const trigger = computed(() => unref(options.trigger) ?? "hover");
99
+ const placement = computed(() => unref(options.placement) ?? "top");
100
+ const delay = computed(() => unref(options.delay) ?? [100, 100]);
101
+ const referenceEl = ref();
102
+ const floatingEl = ref();
103
+ let showTimer = null;
104
+ let hideTimer = null;
105
+ const open = ref(false);
106
+ const parentEl = computed(() => {
107
+ var _referenceEl$value;
108
+ return ((_referenceEl$value = referenceEl.value) === null || _referenceEl$value === void 0 ? void 0 : _referenceEl$value.parentElement) || null;
109
+ });
110
+ const appendTo = computed(() => {
111
+ var _options$getContainer;
112
+ return parentEl.value || ((_options$getContainer = options.getContainer) === null || _options$getContainer === void 0 ? void 0 : _options$getContainer.call(options)) || "body";
113
+ });
114
+ const { x, y, strategy, update } = useFloating(referenceEl, floatingEl, {
115
+ placement,
116
+ middleware: [
117
+ offset(6),
118
+ flip(),
119
+ shift({ padding: 5 })
120
+ ],
121
+ whileElementsMounted: autoUpdate
122
+ });
123
+ const floatingStyle = computed(() => ({
124
+ position: strategy.value,
125
+ top: `${y.value ?? 0}px`,
126
+ left: `${x.value ?? 0}px`
127
+ }));
128
+ function show() {
129
+ clearTimers();
130
+ const { show: showDelay } = getDelay();
131
+ showTimer = window.setTimeout(() => {
132
+ open.value = true;
133
+ update();
134
+ }, showDelay);
135
+ }
136
+ function hide() {
137
+ clearTimers();
138
+ const { hide: hideDelay } = getDelay();
139
+ hideTimer = window.setTimeout(() => {
140
+ open.value = false;
141
+ }, hideDelay);
142
+ }
143
+ function toggle() {
144
+ open.value = !open.value;
145
+ update();
146
+ }
147
+ function onMouseEnter() {
148
+ if (trigger.value === "hover") show();
149
+ }
150
+ function onMouseLeave() {
151
+ if (trigger.value === "hover") hide();
152
+ }
153
+ function onClick() {
154
+ if (trigger.value === "click") toggle();
155
+ }
156
+ function getDelay() {
157
+ if (Array.isArray(delay.value)) return {
158
+ show: delay.value[0] ?? 0,
159
+ hide: delay.value[1] ?? 0
160
+ };
161
+ return {
162
+ show: delay.value ?? 0,
163
+ hide: delay.value ?? 0
164
+ };
165
+ }
166
+ function handleClickOutside(event) {
167
+ var _referenceEl$value2, _floatingEl$value;
168
+ if (trigger.value !== "click" || !open.value) return;
169
+ const target = event.target;
170
+ if (!(((_referenceEl$value2 = referenceEl.value) === null || _referenceEl$value2 === void 0 ? void 0 : _referenceEl$value2.contains(target)) || ((_floatingEl$value = floatingEl.value) === null || _floatingEl$value === void 0 ? void 0 : _floatingEl$value.contains(target)))) open.value = false;
171
+ }
172
+ function onFloatingEnter() {
173
+ if (hideTimer) {
174
+ clearTimeout(hideTimer);
175
+ hideTimer = null;
176
+ }
177
+ }
178
+ function onFloatingLeave() {
179
+ const { hide: hideDelay } = getDelay();
180
+ if (trigger.value === "hover") hideTimer = window.setTimeout(() => {
181
+ hide();
182
+ }, hideDelay);
183
+ }
184
+ function clearTimers() {
185
+ if (showTimer) {
186
+ clearTimeout(showTimer);
187
+ showTimer = null;
188
+ }
189
+ if (hideTimer) {
190
+ clearTimeout(hideTimer);
191
+ hideTimer = null;
192
+ }
193
+ }
194
+ useEventListener(document, "click", handleClickOutside);
195
+ return {
196
+ referenceEl,
197
+ floatingEl,
198
+ open,
199
+ appendTo,
200
+ floatingStyle,
201
+ show,
202
+ hide,
203
+ onMouseEnter,
204
+ onMouseLeave,
205
+ onClick,
206
+ onFloatingEnter,
207
+ onFloatingLeave
208
+ };
209
+ }
210
+
95
211
  //#endregion
96
212
  //#region src/constants/code.ts
97
213
  const DEFAULT_LIGHT_THEME = "github-light";
@@ -406,182 +522,182 @@ const LANGUAGE_EXTENSIONS = {
406
522
  "文言": "wy"
407
523
  };
408
524
  const LANGUAGE_ICONS = {
409
- "adoc": defineAsyncComponent(() => import("./asciidoc-BabXBDAL.js")),
410
- "angular-html": defineAsyncComponent(() => import("./angular-Chs-UKBr.js")),
411
- "angular-ts": defineAsyncComponent(() => import("./angular-component-Cc_FANXU.js")),
412
- "apache": defineAsyncComponent(() => import("./apache-COYnc6xR.js")),
413
- "asciidoc": defineAsyncComponent(() => import("./asciidoc-BabXBDAL.js")),
414
- "asm": defineAsyncComponent(() => import("./assembly-CDqKhexW.js")),
415
- "astro": defineAsyncComponent(() => import("./astro-C9kftzFG.js")),
416
- "bash": defineAsyncComponent(() => import("./bash-Ce4pNIkV.js")),
417
- "bat": defineAsyncComponent(() => import("./batch-CHQBRjFL.js")),
418
- "batch": defineAsyncComponent(() => import("./batch-CHQBRjFL.js")),
419
- "bicep": defineAsyncComponent(() => import("./bicep-8jxWtuBF.js")),
420
- "c": defineAsyncComponent(() => import("./c-FBUef746.js")),
421
- "c#": defineAsyncComponent(() => import("./csharp-NqZ1vyF9.js")),
422
- "c++": defineAsyncComponent(() => import("./cpp-BTKeuyd-.js")),
423
- "cjs": defineAsyncComponent(() => import("./javascript-DtnWdTFC.js")),
424
- "clj": defineAsyncComponent(() => import("./clojure-BulUroSy.js")),
425
- "clojure": defineAsyncComponent(() => import("./clojure-BulUroSy.js")),
426
- "cmake": defineAsyncComponent(() => import("./cmake-CW3vz1Mo.js")),
427
- "cmd": defineAsyncComponent(() => import("./batch-CHQBRjFL.js")),
428
- "cobol": defineAsyncComponent(() => import("./cobol-CIn3oFju.js")),
429
- "codeowners": defineAsyncComponent(() => import("./codeowners-CJggXF_b.js")),
430
- "coffee": defineAsyncComponent(() => import("./coffeescript-CBrVvzGY.js")),
431
- "coffeescript": defineAsyncComponent(() => import("./coffeescript-CBrVvzGY.js")),
432
- "cpp": defineAsyncComponent(() => import("./cpp-BTKeuyd-.js")),
433
- "crystal": defineAsyncComponent(() => import("./crystal-DyIYvZbm.js")),
434
- "cs": defineAsyncComponent(() => import("./csharp-NqZ1vyF9.js")),
435
- "csharp": defineAsyncComponent(() => import("./csharp-NqZ1vyF9.js")),
436
- "css": defineAsyncComponent(() => import("./css-BpR5Lajb.js")),
437
- "csv": defineAsyncComponent(() => import("./csv-eCMFnKKK.js")),
438
- "cts": defineAsyncComponent(() => import("./typescript-Bk-pp-cK.js")),
439
- "cue": defineAsyncComponent(() => import("./cue-TY97dGOQ.js")),
440
- "d": defineAsyncComponent(() => import("./d-NftUsdTd.js")),
441
- "dart": defineAsyncComponent(() => import("./dart-DJpwZZbk.js")),
442
- "diff": defineAsyncComponent(() => import("./diff-CYRzypaU.js")),
443
- "docker": defineAsyncComponent(() => import("./docker-CxHBuukH.js")),
444
- "dockerfile": defineAsyncComponent(() => import("./docker-CxHBuukH.js")),
445
- "dotenv": defineAsyncComponent(() => import("./env-CDAKsodl.js")),
446
- "elixir": defineAsyncComponent(() => import("./elixir-BKSxVc1h.js")),
447
- "elm": defineAsyncComponent(() => import("./elm-DScuAf3X.js")),
448
- "erb": defineAsyncComponent(() => import("./ruby-B8RxtCzI.js")),
449
- "erl": defineAsyncComponent(() => import("./erlang-D2M1ZL3m.js")),
450
- "erlang": defineAsyncComponent(() => import("./erlang-D2M1ZL3m.js")),
451
- "f": defineAsyncComponent(() => import("./fortran-CORyQ0wt.js")),
452
- "f#": defineAsyncComponent(() => import("./fsharp-BJz_Jgpl.js")),
453
- "f03": defineAsyncComponent(() => import("./fortran-CORyQ0wt.js")),
454
- "f08": defineAsyncComponent(() => import("./fortran-CORyQ0wt.js")),
455
- "f18": defineAsyncComponent(() => import("./fortran-CORyQ0wt.js")),
456
- "f77": defineAsyncComponent(() => import("./fortran-CORyQ0wt.js")),
457
- "f90": defineAsyncComponent(() => import("./fortran-CORyQ0wt.js")),
458
- "f95": defineAsyncComponent(() => import("./fortran-CORyQ0wt.js")),
459
- "for": defineAsyncComponent(() => import("./fortran-CORyQ0wt.js")),
460
- "fortran-fixed-form": defineAsyncComponent(() => import("./fortran-CORyQ0wt.js")),
461
- "fortran-free-form": defineAsyncComponent(() => import("./fortran-CORyQ0wt.js")),
462
- "fs": defineAsyncComponent(() => import("./fsharp-BJz_Jgpl.js")),
463
- "fsharp": defineAsyncComponent(() => import("./fsharp-BJz_Jgpl.js")),
464
- "git-commit": defineAsyncComponent(() => import("./git-DgrlTr1E.js")),
465
- "git-rebase": defineAsyncComponent(() => import("./git-DgrlTr1E.js")),
466
- "gleam": defineAsyncComponent(() => import("./gleam-t_xad9Kw.js")),
467
- "go": defineAsyncComponent(() => import("./go-Cvlh1xtL.js")),
468
- "gql": defineAsyncComponent(() => import("./graphql-ApIm0mDD.js")),
469
- "graphql": defineAsyncComponent(() => import("./graphql-ApIm0mDD.js")),
470
- "groovy": defineAsyncComponent(() => import("./groovy-CaLnK8PV.js")),
471
- "haml": defineAsyncComponent(() => import("./haml-MwijEO_6.js")),
472
- "handlebars": defineAsyncComponent(() => import("./handlebars-CKdUPI9h.js")),
473
- "haskell": defineAsyncComponent(() => import("./haskell-NPOXEnck.js")),
474
- "haxe": defineAsyncComponent(() => import("./haxe-DyKBMsDE.js")),
475
- "hbs": defineAsyncComponent(() => import("./handlebars-CKdUPI9h.js")),
476
- "hs": defineAsyncComponent(() => import("./haskell-NPOXEnck.js")),
477
- "html": defineAsyncComponent(() => import("./html-CMgES1dE.js")),
478
- "http": defineAsyncComponent(() => import("./http-B9FFNmUr.js")),
479
- "jade": defineAsyncComponent(() => import("./pug-B1-IC-Tc.js")),
480
- "java": defineAsyncComponent(() => import("./java-iU-L9wJz.js")),
481
- "javascript": defineAsyncComponent(() => import("./javascript-DtnWdTFC.js")),
482
- "jinja": defineAsyncComponent(() => import("./jinja-CoWszo_D.js")),
483
- "jl": defineAsyncComponent(() => import("./julia-DG2BCBLx.js")),
484
- "js": defineAsyncComponent(() => import("./javascript-DtnWdTFC.js")),
485
- "json": defineAsyncComponent(() => import("./json-C80qKCnh.js")),
486
- "json5": defineAsyncComponent(() => import("./json-C80qKCnh.js")),
487
- "jsonc": defineAsyncComponent(() => import("./json-C80qKCnh.js")),
488
- "jsonl": defineAsyncComponent(() => import("./json-C80qKCnh.js")),
489
- "jsx": defineAsyncComponent(() => import("./javascript-DtnWdTFC.js")),
490
- "julia": defineAsyncComponent(() => import("./julia-DG2BCBLx.js")),
491
- "kdl": defineAsyncComponent(() => import("./kdl-7twRfIlJ.js")),
492
- "kotlin": defineAsyncComponent(() => import("./kotlin-BjrOgP7R.js")),
493
- "kt": defineAsyncComponent(() => import("./kotlin-BjrOgP7R.js")),
494
- "kts": defineAsyncComponent(() => import("./kotlin-BjrOgP7R.js")),
495
- "latex": defineAsyncComponent(() => import("./latex-DIQfUvG8.js")),
496
- "less": defineAsyncComponent(() => import("./less-BJ1yEAWt.js")),
497
- "liquid": defineAsyncComponent(() => import("./liquid-BqKFZ1wQ.js")),
498
- "lisp": defineAsyncComponent(() => import("./lisp-oekhB2ti.js")),
499
- "log": defineAsyncComponent(() => import("./log-D1XEqR9q.js")),
500
- "lua": defineAsyncComponent(() => import("./lua-C5Q97-1D.js")),
501
- "luau": defineAsyncComponent(() => import("./luau-BT8KwqZ2.js")),
502
- "make": defineAsyncComponent(() => import("./makefile-B4a0ciG4.js")),
503
- "makefile": defineAsyncComponent(() => import("./makefile-B4a0ciG4.js")),
504
- "markdown": defineAsyncComponent(() => import("./markdown-DvNyKsiJ.js")),
505
- "marko": defineAsyncComponent(() => import("./marko-BzsIf6bg.js")),
506
- "matlab": defineAsyncComponent(() => import("./matlab-cMBkmDhQ.js")),
507
- "md": defineAsyncComponent(() => import("./markdown-DvNyKsiJ.js")),
508
- "mdc": defineAsyncComponent(() => import("./markdown-DvNyKsiJ.js")),
509
- "mdx": defineAsyncComponent(() => import("./markdown-DvNyKsiJ.js")),
510
- "mermaid": defineAsyncComponent(() => import("./mermaid-8JIH2gkQ.js")),
511
- "mjs": defineAsyncComponent(() => import("./javascript-DtnWdTFC.js")),
512
- "mmd": defineAsyncComponent(() => import("./mermaid-8JIH2gkQ.js")),
513
- "mts": defineAsyncComponent(() => import("./typescript-Bk-pp-cK.js")),
514
- "nextflow": defineAsyncComponent(() => import("./nextflow-DNmqU1xg.js")),
515
- "nf": defineAsyncComponent(() => import("./nextflow-DNmqU1xg.js")),
516
- "nginx": defineAsyncComponent(() => import("./nginx-DDfYF_rj.js")),
517
- "nim": defineAsyncComponent(() => import("./nim-D9xEmy4k.js")),
518
- "nix": defineAsyncComponent(() => import("./nix-BV1Deshw.js")),
519
- "ocaml": defineAsyncComponent(() => import("./ocaml-BkFn4LL3.js")),
520
- "perl": defineAsyncComponent(() => import("./perl-BytUHDE7.js")),
521
- "php": defineAsyncComponent(() => import("./php-BImJJtNM.js")),
522
- "postcss": defineAsyncComponent(() => import("./postcss-CrZ9_0sT.js")),
523
- "powershell": defineAsyncComponent(() => import("./powershell-DYSGu7TM.js")),
524
- "prisma": defineAsyncComponent(() => import("./prisma-BhRvcOFY.js")),
525
- "prolog": defineAsyncComponent(() => import("./prolog-DuaCKek_.js")),
526
- "properties": defineAsyncComponent(() => import("./properties-BbIJwuP-.js")),
527
- "proto": defineAsyncComponent(() => import("./proto-CE0aVW11.js")),
528
- "protobuf": defineAsyncComponent(() => import("./proto-CE0aVW11.js")),
529
- "ps": defineAsyncComponent(() => import("./powershell-DYSGu7TM.js")),
530
- "ps1": defineAsyncComponent(() => import("./powershell-DYSGu7TM.js")),
531
- "pug": defineAsyncComponent(() => import("./pug-B1-IC-Tc.js")),
532
- "puppet": defineAsyncComponent(() => import("./puppet-8nYquiMG.js")),
533
- "py": defineAsyncComponent(() => import("./python-DhRyfBrD.js")),
534
- "python": defineAsyncComponent(() => import("./python-DhRyfBrD.js")),
535
- "r": defineAsyncComponent(() => import("./r-Cjje17IA.js")),
536
- "racket": defineAsyncComponent(() => import("./racket-Dx0gMnpg.js")),
537
- "razor": defineAsyncComponent(() => import("./razor-DPht_bdD.js")),
538
- "rb": defineAsyncComponent(() => import("./ruby-B8RxtCzI.js")),
539
- "rs": defineAsyncComponent(() => import("./rust-Cjtli6yf.js")),
540
- "ruby": defineAsyncComponent(() => import("./ruby-B8RxtCzI.js")),
541
- "rust": defineAsyncComponent(() => import("./rust-Cjtli6yf.js")),
542
- "sass": defineAsyncComponent(() => import("./sass-Dv3DMzjs.js")),
543
- "scala": defineAsyncComponent(() => import("./scala-B7bZGKXq.js")),
544
- "scheme": defineAsyncComponent(() => import("./scheme-B2PsEdVN.js")),
545
- "scss": defineAsyncComponent(() => import("./sass-Dv3DMzjs.js")),
546
- "sh": defineAsyncComponent(() => import("./bash-Ce4pNIkV.js")),
547
- "shader": defineAsyncComponent(() => import("./shader-BZzu3zGr.js")),
548
- "shell": defineAsyncComponent(() => import("./bash-Ce4pNIkV.js")),
549
- "shellscript": defineAsyncComponent(() => import("./bash-Ce4pNIkV.js")),
550
- "solidity": defineAsyncComponent(() => import("./solidity-CLieFYpL.js")),
551
- "sql": defineAsyncComponent(() => import("./database-aZwE71Px.js")),
552
- "stata": defineAsyncComponent(() => import("./stata-C0yUiO47.js")),
553
- "styl": defineAsyncComponent(() => import("./sass-Dv3DMzjs.js")),
554
- "stylus": defineAsyncComponent(() => import("./sass-Dv3DMzjs.js")),
555
- "svelte": defineAsyncComponent(() => import("./svelte-rtF4yNGL.js")),
556
- "swift": defineAsyncComponent(() => import("./swift-CzvYoIM0.js")),
557
- "terraform": defineAsyncComponent(() => import("./terraform-CD_BZGb-.js")),
558
- "tex": defineAsyncComponent(() => import("./latex-DIQfUvG8.js")),
559
- "text": defineAsyncComponent(() => import("./text-D1-vbZ7l.js")),
560
- "tf": defineAsyncComponent(() => import("./terraform-CD_BZGb-.js")),
561
- "tfvars": defineAsyncComponent(() => import("./terraform-CD_BZGb-.js")),
562
- "toml": defineAsyncComponent(() => import("./toml-C6jUF0Xd.js")),
563
- "ts": defineAsyncComponent(() => import("./typescript-Bk-pp-cK.js")),
564
- "tsv": defineAsyncComponent(() => import("./csv-eCMFnKKK.js")),
565
- "tsx": defineAsyncComponent(() => import("./typescript-Bk-pp-cK.js")),
566
- "twig": defineAsyncComponent(() => import("./twig-C4dfP84J.js")),
567
- "typ": defineAsyncComponent(() => import("./typst-DPCpaVSH.js")),
568
- "typescript": defineAsyncComponent(() => import("./typescript-Bk-pp-cK.js")),
569
- "typst": defineAsyncComponent(() => import("./typst-DPCpaVSH.js")),
570
- "v": defineAsyncComponent(() => import("./v-nRGMJ2Ki.js")),
571
- "vala": defineAsyncComponent(() => import("./vala-B78bKcY0.js")),
572
- "verilog": defineAsyncComponent(() => import("./verilog-CRpkl76S.js")),
573
- "vim": defineAsyncComponent(() => import("./vim-DpKnut7b.js")),
574
- "viml": defineAsyncComponent(() => import("./vim-DpKnut7b.js")),
575
- "vimscript": defineAsyncComponent(() => import("./vim-DpKnut7b.js")),
576
- "vue-html": defineAsyncComponent(() => import("./vue-D5eadhjo.js")),
577
- "vue-vine": defineAsyncComponent(() => import("./vue-D5eadhjo.js")),
578
- "vue": defineAsyncComponent(() => import("./vue-D5eadhjo.js")),
579
- "xml": defineAsyncComponent(() => import("./xml-Dvx5F-hl.js")),
580
- "xsl": defineAsyncComponent(() => import("./xml-Dvx5F-hl.js")),
581
- "yaml": defineAsyncComponent(() => import("./yaml-n1S8nAOh.js")),
582
- "yml": defineAsyncComponent(() => import("./yaml-n1S8nAOh.js")),
583
- "zig": defineAsyncComponent(() => import("./zig-R-iFzxfW.js")),
584
- "zsh": defineAsyncComponent(() => import("./bash-Ce4pNIkV.js"))
525
+ "adoc": defineAsyncComponent(() => import("./asciidoc-DS-PMOLv.js")),
526
+ "angular-html": defineAsyncComponent(() => import("./angular-Mip1mspI.js")),
527
+ "angular-ts": defineAsyncComponent(() => import("./angular-component-Cq5UbX7R.js")),
528
+ "apache": defineAsyncComponent(() => import("./apache-BSq7fX32.js")),
529
+ "asciidoc": defineAsyncComponent(() => import("./asciidoc-DS-PMOLv.js")),
530
+ "asm": defineAsyncComponent(() => import("./assembly-BPatlOM7.js")),
531
+ "astro": defineAsyncComponent(() => import("./astro-CSD_ZjXp.js")),
532
+ "bash": defineAsyncComponent(() => import("./bash-RITislE1.js")),
533
+ "bat": defineAsyncComponent(() => import("./batch-DWPShYhN.js")),
534
+ "batch": defineAsyncComponent(() => import("./batch-DWPShYhN.js")),
535
+ "bicep": defineAsyncComponent(() => import("./bicep-C6BEHfP6.js")),
536
+ "c": defineAsyncComponent(() => import("./c-DNo3tsNy.js")),
537
+ "c#": defineAsyncComponent(() => import("./csharp-CgkTkbPx.js")),
538
+ "c++": defineAsyncComponent(() => import("./cpp-Cn3MB35e.js")),
539
+ "cjs": defineAsyncComponent(() => import("./javascript-BCDeVll0.js")),
540
+ "clj": defineAsyncComponent(() => import("./clojure-C1DEYHW0.js")),
541
+ "clojure": defineAsyncComponent(() => import("./clojure-C1DEYHW0.js")),
542
+ "cmake": defineAsyncComponent(() => import("./cmake-B69mdXcH.js")),
543
+ "cmd": defineAsyncComponent(() => import("./batch-DWPShYhN.js")),
544
+ "cobol": defineAsyncComponent(() => import("./cobol-qmL-zIWi.js")),
545
+ "codeowners": defineAsyncComponent(() => import("./codeowners-Crklt5nF.js")),
546
+ "coffee": defineAsyncComponent(() => import("./coffeescript-k3huSp23.js")),
547
+ "coffeescript": defineAsyncComponent(() => import("./coffeescript-k3huSp23.js")),
548
+ "cpp": defineAsyncComponent(() => import("./cpp-Cn3MB35e.js")),
549
+ "crystal": defineAsyncComponent(() => import("./crystal-D5aGETSx.js")),
550
+ "cs": defineAsyncComponent(() => import("./csharp-CgkTkbPx.js")),
551
+ "csharp": defineAsyncComponent(() => import("./csharp-CgkTkbPx.js")),
552
+ "css": defineAsyncComponent(() => import("./css-DRH4n_IV.js")),
553
+ "csv": defineAsyncComponent(() => import("./csv-D5nNTIzO.js")),
554
+ "cts": defineAsyncComponent(() => import("./typescript-B95hq2ns.js")),
555
+ "cue": defineAsyncComponent(() => import("./cue-B5mC88-N.js")),
556
+ "d": defineAsyncComponent(() => import("./d-BdQRMgma.js")),
557
+ "dart": defineAsyncComponent(() => import("./dart-BGnfn0NN.js")),
558
+ "diff": defineAsyncComponent(() => import("./diff-DVaTsnqu.js")),
559
+ "docker": defineAsyncComponent(() => import("./docker-E47qYlmL.js")),
560
+ "dockerfile": defineAsyncComponent(() => import("./docker-E47qYlmL.js")),
561
+ "dotenv": defineAsyncComponent(() => import("./env-Ck1BHoxR.js")),
562
+ "elixir": defineAsyncComponent(() => import("./elixir-C-jqqu6q.js")),
563
+ "elm": defineAsyncComponent(() => import("./elm-CmeHvaWl.js")),
564
+ "erb": defineAsyncComponent(() => import("./ruby-C8wV0pMO.js")),
565
+ "erl": defineAsyncComponent(() => import("./erlang-CIP8kpGJ.js")),
566
+ "erlang": defineAsyncComponent(() => import("./erlang-CIP8kpGJ.js")),
567
+ "f": defineAsyncComponent(() => import("./fortran-DJVP2s7V.js")),
568
+ "f#": defineAsyncComponent(() => import("./fsharp-Bp6mUcG0.js")),
569
+ "f03": defineAsyncComponent(() => import("./fortran-DJVP2s7V.js")),
570
+ "f08": defineAsyncComponent(() => import("./fortran-DJVP2s7V.js")),
571
+ "f18": defineAsyncComponent(() => import("./fortran-DJVP2s7V.js")),
572
+ "f77": defineAsyncComponent(() => import("./fortran-DJVP2s7V.js")),
573
+ "f90": defineAsyncComponent(() => import("./fortran-DJVP2s7V.js")),
574
+ "f95": defineAsyncComponent(() => import("./fortran-DJVP2s7V.js")),
575
+ "for": defineAsyncComponent(() => import("./fortran-DJVP2s7V.js")),
576
+ "fortran-fixed-form": defineAsyncComponent(() => import("./fortran-DJVP2s7V.js")),
577
+ "fortran-free-form": defineAsyncComponent(() => import("./fortran-DJVP2s7V.js")),
578
+ "fs": defineAsyncComponent(() => import("./fsharp-Bp6mUcG0.js")),
579
+ "fsharp": defineAsyncComponent(() => import("./fsharp-Bp6mUcG0.js")),
580
+ "git-commit": defineAsyncComponent(() => import("./git-BDcqJ1Gp.js")),
581
+ "git-rebase": defineAsyncComponent(() => import("./git-BDcqJ1Gp.js")),
582
+ "gleam": defineAsyncComponent(() => import("./gleam-JLiZVlev.js")),
583
+ "go": defineAsyncComponent(() => import("./go-ClcCiS7e.js")),
584
+ "gql": defineAsyncComponent(() => import("./graphql-D2RDo-DF.js")),
585
+ "graphql": defineAsyncComponent(() => import("./graphql-D2RDo-DF.js")),
586
+ "groovy": defineAsyncComponent(() => import("./groovy-DLZBw8xE.js")),
587
+ "haml": defineAsyncComponent(() => import("./haml-Da74jRwZ.js")),
588
+ "handlebars": defineAsyncComponent(() => import("./handlebars-CNgS57Sz.js")),
589
+ "haskell": defineAsyncComponent(() => import("./haskell-DCvfD6VB.js")),
590
+ "haxe": defineAsyncComponent(() => import("./haxe-CHVK1TId.js")),
591
+ "hbs": defineAsyncComponent(() => import("./handlebars-CNgS57Sz.js")),
592
+ "hs": defineAsyncComponent(() => import("./haskell-DCvfD6VB.js")),
593
+ "html": defineAsyncComponent(() => import("./html-Du4235Z-.js")),
594
+ "http": defineAsyncComponent(() => import("./http-B8VAFeQ5.js")),
595
+ "jade": defineAsyncComponent(() => import("./pug-CzkUK-Ec.js")),
596
+ "java": defineAsyncComponent(() => import("./java-CoSdnK1N.js")),
597
+ "javascript": defineAsyncComponent(() => import("./javascript-BCDeVll0.js")),
598
+ "jinja": defineAsyncComponent(() => import("./jinja-DYbiqZy0.js")),
599
+ "jl": defineAsyncComponent(() => import("./julia-pswJGtpP.js")),
600
+ "js": defineAsyncComponent(() => import("./javascript-BCDeVll0.js")),
601
+ "json": defineAsyncComponent(() => import("./json-CdzCyWJA.js")),
602
+ "json5": defineAsyncComponent(() => import("./json-CdzCyWJA.js")),
603
+ "jsonc": defineAsyncComponent(() => import("./json-CdzCyWJA.js")),
604
+ "jsonl": defineAsyncComponent(() => import("./json-CdzCyWJA.js")),
605
+ "jsx": defineAsyncComponent(() => import("./javascript-BCDeVll0.js")),
606
+ "julia": defineAsyncComponent(() => import("./julia-pswJGtpP.js")),
607
+ "kdl": defineAsyncComponent(() => import("./kdl-M8rfQ85l.js")),
608
+ "kotlin": defineAsyncComponent(() => import("./kotlin-CfCV33oB.js")),
609
+ "kt": defineAsyncComponent(() => import("./kotlin-CfCV33oB.js")),
610
+ "kts": defineAsyncComponent(() => import("./kotlin-CfCV33oB.js")),
611
+ "latex": defineAsyncComponent(() => import("./latex-DK8DFhTm.js")),
612
+ "less": defineAsyncComponent(() => import("./less-BFnNZiIs.js")),
613
+ "liquid": defineAsyncComponent(() => import("./liquid-C8h46DoX.js")),
614
+ "lisp": defineAsyncComponent(() => import("./lisp-C3FbGuD1.js")),
615
+ "log": defineAsyncComponent(() => import("./log-D-O3FXf2.js")),
616
+ "lua": defineAsyncComponent(() => import("./lua-BC_aR1_i.js")),
617
+ "luau": defineAsyncComponent(() => import("./luau-DFUOrNN7.js")),
618
+ "make": defineAsyncComponent(() => import("./makefile-Ck67veVV.js")),
619
+ "makefile": defineAsyncComponent(() => import("./makefile-Ck67veVV.js")),
620
+ "markdown": defineAsyncComponent(() => import("./markdown-BX13X3kd.js")),
621
+ "marko": defineAsyncComponent(() => import("./marko-CQE8YTCc.js")),
622
+ "matlab": defineAsyncComponent(() => import("./matlab-Bd9O2Ml3.js")),
623
+ "md": defineAsyncComponent(() => import("./markdown-BX13X3kd.js")),
624
+ "mdc": defineAsyncComponent(() => import("./markdown-BX13X3kd.js")),
625
+ "mdx": defineAsyncComponent(() => import("./markdown-BX13X3kd.js")),
626
+ "mermaid": defineAsyncComponent(() => import("./mermaid-Dv-Pr0W-.js")),
627
+ "mjs": defineAsyncComponent(() => import("./javascript-BCDeVll0.js")),
628
+ "mmd": defineAsyncComponent(() => import("./mermaid-Dv-Pr0W-.js")),
629
+ "mts": defineAsyncComponent(() => import("./typescript-B95hq2ns.js")),
630
+ "nextflow": defineAsyncComponent(() => import("./nextflow-D3lDq1Yi.js")),
631
+ "nf": defineAsyncComponent(() => import("./nextflow-D3lDq1Yi.js")),
632
+ "nginx": defineAsyncComponent(() => import("./nginx-CgsqCL4l.js")),
633
+ "nim": defineAsyncComponent(() => import("./nim-BJdSu3c6.js")),
634
+ "nix": defineAsyncComponent(() => import("./nix-B7K_D6CN.js")),
635
+ "ocaml": defineAsyncComponent(() => import("./ocaml-gYS1Y45s.js")),
636
+ "perl": defineAsyncComponent(() => import("./perl-DXFhFWhI.js")),
637
+ "php": defineAsyncComponent(() => import("./php-We35bF4E.js")),
638
+ "postcss": defineAsyncComponent(() => import("./postcss-BWovY_YV.js")),
639
+ "powershell": defineAsyncComponent(() => import("./powershell-C6teiBsq.js")),
640
+ "prisma": defineAsyncComponent(() => import("./prisma-UyJEg0_X.js")),
641
+ "prolog": defineAsyncComponent(() => import("./prolog-YZsPgdnw.js")),
642
+ "properties": defineAsyncComponent(() => import("./properties-DaPbL0e2.js")),
643
+ "proto": defineAsyncComponent(() => import("./proto-1LIwu2O1.js")),
644
+ "protobuf": defineAsyncComponent(() => import("./proto-1LIwu2O1.js")),
645
+ "ps": defineAsyncComponent(() => import("./powershell-C6teiBsq.js")),
646
+ "ps1": defineAsyncComponent(() => import("./powershell-C6teiBsq.js")),
647
+ "pug": defineAsyncComponent(() => import("./pug-CzkUK-Ec.js")),
648
+ "puppet": defineAsyncComponent(() => import("./puppet-CNhB1MHb.js")),
649
+ "py": defineAsyncComponent(() => import("./python-B_hgEobv.js")),
650
+ "python": defineAsyncComponent(() => import("./python-B_hgEobv.js")),
651
+ "r": defineAsyncComponent(() => import("./r-CVeKYmPK.js")),
652
+ "racket": defineAsyncComponent(() => import("./racket-D5UfvXuw.js")),
653
+ "razor": defineAsyncComponent(() => import("./razor-RIKaANTN.js")),
654
+ "rb": defineAsyncComponent(() => import("./ruby-C8wV0pMO.js")),
655
+ "rs": defineAsyncComponent(() => import("./rust-75Gei1mP.js")),
656
+ "ruby": defineAsyncComponent(() => import("./ruby-C8wV0pMO.js")),
657
+ "rust": defineAsyncComponent(() => import("./rust-75Gei1mP.js")),
658
+ "sass": defineAsyncComponent(() => import("./sass-Cq68xmQ4.js")),
659
+ "scala": defineAsyncComponent(() => import("./scala-C_E5rjSc.js")),
660
+ "scheme": defineAsyncComponent(() => import("./scheme-Bm-q-nLL.js")),
661
+ "scss": defineAsyncComponent(() => import("./sass-Cq68xmQ4.js")),
662
+ "sh": defineAsyncComponent(() => import("./bash-RITislE1.js")),
663
+ "shader": defineAsyncComponent(() => import("./shader-DPaRkMCs.js")),
664
+ "shell": defineAsyncComponent(() => import("./bash-RITislE1.js")),
665
+ "shellscript": defineAsyncComponent(() => import("./bash-RITislE1.js")),
666
+ "solidity": defineAsyncComponent(() => import("./solidity-DvHG_0CD.js")),
667
+ "sql": defineAsyncComponent(() => import("./database-Ca1VGX7u.js")),
668
+ "stata": defineAsyncComponent(() => import("./stata-DoVloJLm.js")),
669
+ "styl": defineAsyncComponent(() => import("./sass-Cq68xmQ4.js")),
670
+ "stylus": defineAsyncComponent(() => import("./sass-Cq68xmQ4.js")),
671
+ "svelte": defineAsyncComponent(() => import("./svelte-tlbA11de.js")),
672
+ "swift": defineAsyncComponent(() => import("./swift-BZn5eRnK.js")),
673
+ "terraform": defineAsyncComponent(() => import("./terraform-c5-k7yB1.js")),
674
+ "tex": defineAsyncComponent(() => import("./latex-DK8DFhTm.js")),
675
+ "text": defineAsyncComponent(() => import("./text-DPCGWvDK.js")),
676
+ "tf": defineAsyncComponent(() => import("./terraform-c5-k7yB1.js")),
677
+ "tfvars": defineAsyncComponent(() => import("./terraform-c5-k7yB1.js")),
678
+ "toml": defineAsyncComponent(() => import("./toml-DdLGBe1A.js")),
679
+ "ts": defineAsyncComponent(() => import("./typescript-B95hq2ns.js")),
680
+ "tsv": defineAsyncComponent(() => import("./csv-D5nNTIzO.js")),
681
+ "tsx": defineAsyncComponent(() => import("./typescript-B95hq2ns.js")),
682
+ "twig": defineAsyncComponent(() => import("./twig-D_jzZxh6.js")),
683
+ "typ": defineAsyncComponent(() => import("./typst-CSAEQ4yK.js")),
684
+ "typescript": defineAsyncComponent(() => import("./typescript-B95hq2ns.js")),
685
+ "typst": defineAsyncComponent(() => import("./typst-CSAEQ4yK.js")),
686
+ "v": defineAsyncComponent(() => import("./v-BAhebuOB.js")),
687
+ "vala": defineAsyncComponent(() => import("./vala-RAu83-lp.js")),
688
+ "verilog": defineAsyncComponent(() => import("./verilog-BgmTn52U.js")),
689
+ "vim": defineAsyncComponent(() => import("./vim-c8oTCLkH.js")),
690
+ "viml": defineAsyncComponent(() => import("./vim-c8oTCLkH.js")),
691
+ "vimscript": defineAsyncComponent(() => import("./vim-c8oTCLkH.js")),
692
+ "vue-html": defineAsyncComponent(() => import("./vue-TGT6HTBA.js")),
693
+ "vue-vine": defineAsyncComponent(() => import("./vue-TGT6HTBA.js")),
694
+ "vue": defineAsyncComponent(() => import("./vue-TGT6HTBA.js")),
695
+ "xml": defineAsyncComponent(() => import("./xml-C1HDr874.js")),
696
+ "xsl": defineAsyncComponent(() => import("./xml-C1HDr874.js")),
697
+ "yaml": defineAsyncComponent(() => import("./yaml-BO7FjFQZ.js")),
698
+ "yml": defineAsyncComponent(() => import("./yaml-BO7FjFQZ.js")),
699
+ "zig": defineAsyncComponent(() => import("./zig-qANBp1SU.js")),
700
+ "zsh": defineAsyncComponent(() => import("./bash-RITislE1.js"))
585
701
  };
586
702
 
587
703
  //#endregion
@@ -596,20 +712,23 @@ const DEFAULT_HARDEN_OPTIONS = {
596
712
  //#endregion
597
713
  //#region src/constants/icons.ts
598
714
  const ICONS = {
599
- check: defineAsyncComponent(() => import("./check-C4xOk8um.js")),
600
- code: defineAsyncComponent(() => import("./code-D8LSp8rK.js")),
601
- collapse: defineAsyncComponent(() => import("./chevron-down-cnOJ4h1g.js")),
602
- copy: defineAsyncComponent(() => import("./copy-Cabve0xf.js")),
603
- download: defineAsyncComponent(() => import("./download-Bnn7rtYw.js")),
604
- error: defineAsyncComponent(() => import("./circle-alert-CLX-h5rZ.js")),
605
- image: defineAsyncComponent(() => import("./image-CMZAakWu.js")),
606
- link: defineAsyncComponent(() => import("./link-DeV4CQOB.js")),
607
- maximize: defineAsyncComponent(() => import("./maximize-4PIqBONS.js")),
608
- mermaid: defineAsyncComponent(() => import("./mermaid-8JIH2gkQ.js")),
609
- minimize: defineAsyncComponent(() => import("./minimize-BJ8htyDF.js")),
610
- preview: defineAsyncComponent(() => import("./eye-CdeX8PhP.js")),
611
- zoomIn: defineAsyncComponent(() => import("./zoomIn-CEukuh3x.js")),
612
- zoomOut: defineAsyncComponent(() => import("./zoomOut-qlzQyQli.js"))
715
+ arrowLeft: defineAsyncComponent(() => import("./arrow-left-C5s0Sn8o.js")),
716
+ check: defineAsyncComponent(() => import("./check-BfpxIITS.js")),
717
+ code: defineAsyncComponent(() => import("./code-D9CiymEK.js")),
718
+ collapse: defineAsyncComponent(() => import("./chevron-down-LeNeemjn.js")),
719
+ copy: defineAsyncComponent(() => import("./copy-C4580J93.js")),
720
+ download: defineAsyncComponent(() => import("./download-DytrK56a.js")),
721
+ error: defineAsyncComponent(() => import("./circle-alert-BjDuIzgc.js")),
722
+ flipHorizontal: defineAsyncComponent(() => import("./flip-horizontal-BFWjqDbQ.js")),
723
+ image: defineAsyncComponent(() => import("./image-D8MZj4W5.js")),
724
+ link: defineAsyncComponent(() => import("./link-C7eU_yi-.js")),
725
+ maximize: defineAsyncComponent(() => import("./maximize-CDZ9rnYF.js")),
726
+ mermaid: defineAsyncComponent(() => import("./mermaid-Dv-Pr0W-.js")),
727
+ minimize: defineAsyncComponent(() => import("./minimize-B9ER7p2X.js")),
728
+ preview: defineAsyncComponent(() => import("./eye-TaEwQS2Z.js")),
729
+ rotateLeft: defineAsyncComponent(() => import("./rotate-ccw-square-C2KVFUF3.js")),
730
+ zoomIn: defineAsyncComponent(() => import("./zoomIn-iVMAUxIz.js")),
731
+ zoomOut: defineAsyncComponent(() => import("./zoomOut-Cxq1_dIQ.js"))
613
732
  };
614
733
 
615
734
  //#endregion
@@ -732,6 +851,7 @@ function transformUrl(url, allowedPrefixes, defaultOrigin, allowDataImages = fal
732
851
 
733
852
  //#endregion
734
853
  //#region src/utils/helper.ts
854
+ const fileExtensionPattern = /\.[^/.]+$/;
735
855
  function flow(fns) {
736
856
  return (input) => fns.reduce((acc, fn) => fn(acc), input);
737
857
  }
@@ -746,6 +866,25 @@ function save(filename, content, mimeType) {
746
866
  document.body.removeChild(a);
747
867
  URL.revokeObjectURL(url);
748
868
  }
869
+ async function saveImage(url, alt) {
870
+ const blob = await (await fetch(url)).blob();
871
+ const originalFilename = new URL(url, window.location.origin).pathname.split("/").pop() || "";
872
+ const extension = originalFilename.split(".").pop();
873
+ const hasExtension = originalFilename.includes(".") && extension !== void 0 && extension.length <= 4;
874
+ let filename = "";
875
+ if (hasExtension) filename = originalFilename;
876
+ else {
877
+ const mimeType = blob.type;
878
+ let fileExtension = "png";
879
+ if (mimeType.includes("jpeg") || mimeType.includes("jpg")) fileExtension = "jpg";
880
+ else if (mimeType.includes("png")) fileExtension = "png";
881
+ else if (mimeType.includes("svg")) fileExtension = "svg";
882
+ else if (mimeType.includes("gif")) fileExtension = "gif";
883
+ else if (mimeType.includes("webp")) fileExtension = "webp";
884
+ filename = `${(alt || originalFilename || "image").replace(fileExtensionPattern, "")}.${fileExtension}`;
885
+ }
886
+ save(filename, blob, blob.type);
887
+ }
749
888
  function svgToPngBlob(svgString, options) {
750
889
  const scale = (options === null || options === void 0 ? void 0 : options.scale) ?? 5;
751
890
  return new Promise((resolve, reject) => {
@@ -997,8 +1136,8 @@ function useHardenSanitizers(options) {
997
1136
  //#region src/locales/index.ts
998
1137
  const SUPPORT_LANGUAGES = ["en-US", "zh-CN"];
999
1138
  const localesGlob = {
1000
- "./en-US.json": () => import("./en-US-Bfc50l3I.js"),
1001
- "./zh-CN.json": () => import("./zh-CN-CL1XGe0H.js")
1139
+ "./en-US.json": () => import("./en-US-Kw2LYAMk.js"),
1140
+ "./zh-CN.json": () => import("./zh-CN-Dfow4Yn2.js")
1002
1141
  };
1003
1142
  const localeMessages = ref();
1004
1143
  const currentLocale = ref("en-US");
@@ -1320,6 +1459,155 @@ function useMathRenderer(options) {
1320
1459
  };
1321
1460
  }
1322
1461
 
1462
+ //#endregion
1463
+ //#region src/composables/use-medium-zoom.ts
1464
+ function useMediumZoom(options) {
1465
+ const margin = computed(() => unref(options.margin) ?? 0);
1466
+ const elementRef = ref();
1467
+ const clonedElementRef = ref();
1468
+ const zoomElementRef = ref();
1469
+ const isAnimating = ref(false);
1470
+ const showClonedElement = ref(false);
1471
+ const initialTransform = ref("");
1472
+ const targetTransform = ref("");
1473
+ const elementStyle = computed(() => ({ opacity: showClonedElement.value ? 0 : 1 }));
1474
+ function cloneElement() {
1475
+ const original = elementRef.value;
1476
+ if (!original) return;
1477
+ const cloned = original.cloneNode(true);
1478
+ const rect = original.getBoundingClientRect();
1479
+ cloned.style.position = "fixed";
1480
+ cloned.style.top = `${rect.top}px`;
1481
+ cloned.style.left = `${rect.left}px`;
1482
+ cloned.style.width = `${rect.width}px`;
1483
+ cloned.style.height = `${rect.height}px`;
1484
+ cloned.style.margin = "0";
1485
+ cloned.style.padding = "0";
1486
+ cloned.style.pointerEvents = "none";
1487
+ cloned.style.zIndex = "10000";
1488
+ cloned.style.willChange = "transform";
1489
+ cloned.style.transformOrigin = "top left";
1490
+ if (original instanceof HTMLImageElement && original.currentSrc) cloned.src = original.currentSrc;
1491
+ return cloned;
1492
+ }
1493
+ function calculateTransforms() {
1494
+ const original = elementRef.value;
1495
+ if (!original || !clonedElementRef.value) return;
1496
+ const rect = original.getBoundingClientRect();
1497
+ const viewportWidth = window.innerWidth;
1498
+ const viewportHeight = window.innerHeight;
1499
+ const naturalWidth = original.naturalWidth || rect.width;
1500
+ const naturalHeight = original.naturalHeight || rect.height;
1501
+ const maxWidth = viewportWidth - margin.value * 2;
1502
+ const maxHeight = viewportHeight - margin.value * 2;
1503
+ const scaleX = Math.min(maxWidth / rect.width, naturalWidth / rect.width);
1504
+ const scaleY = Math.min(maxHeight / rect.height, naturalHeight / rect.height);
1505
+ const scale = Math.min(scaleX, scaleY, 1);
1506
+ const targetX = (viewportWidth - rect.width * scale) / 2;
1507
+ const targetY = (viewportHeight - rect.height * scale) / 2;
1508
+ const translateX = targetX - rect.left;
1509
+ const translateY = targetY - rect.top;
1510
+ initialTransform.value = `translate3d(0, 0, 0) scale(1)`;
1511
+ targetTransform.value = `translate3d(${translateX}px, ${translateY}px, 0) scale(${scale})`;
1512
+ }
1513
+ async function zoomIn() {
1514
+ var _clonedElementRef$val, _options$open;
1515
+ const el = elementRef.value;
1516
+ if (!el) return;
1517
+ const cloned = cloneElement();
1518
+ if (!cloned) return;
1519
+ el.style.visibility = "hidden";
1520
+ document.body.appendChild(cloned);
1521
+ clonedElementRef.value = cloned;
1522
+ showClonedElement.value = true;
1523
+ await nextTick();
1524
+ calculateTransforms();
1525
+ if (clonedElementRef.value) {
1526
+ clonedElementRef.value.style.transform = initialTransform.value;
1527
+ clonedElementRef.value.style.transition = "none";
1528
+ }
1529
+ (_clonedElementRef$val = clonedElementRef.value) === null || _clonedElementRef$val === void 0 || _clonedElementRef$val.offsetHeight;
1530
+ await nextTick();
1531
+ isAnimating.value = true;
1532
+ if (clonedElementRef.value) {
1533
+ clonedElementRef.value.style.transition = "transform 0.3s cubic-bezier(0.2, 0, 0.2, 1)";
1534
+ clonedElementRef.value.style.transform = targetTransform.value;
1535
+ }
1536
+ (_options$open = options.open) === null || _options$open === void 0 || _options$open.call(options);
1537
+ const handleAnimationEnd = () => {
1538
+ isAnimating.value = false;
1539
+ if (clonedElementRef.value) clonedElementRef.value.style.opacity = "0";
1540
+ showClonedElement.value = false;
1541
+ cloned.removeEventListener("transitionend", handleAnimationEnd);
1542
+ };
1543
+ cloned.addEventListener("transitionend", handleAnimationEnd, { once: true });
1544
+ }
1545
+ async function zoomOut() {
1546
+ if (!clonedElementRef.value) {
1547
+ var _options$close;
1548
+ (_options$close = options.close) === null || _options$close === void 0 || _options$close.call(options);
1549
+ return;
1550
+ }
1551
+ await nextTick();
1552
+ showClonedElement.value = true;
1553
+ if (clonedElementRef.value) clonedElementRef.value.style.opacity = "1";
1554
+ await nextTick();
1555
+ if (!clonedElementRef.value) return;
1556
+ const el = elementRef.value;
1557
+ const zoomEl = zoomElementRef.value;
1558
+ if (!el || !zoomEl) return;
1559
+ const originalRect = el.getBoundingClientRect();
1560
+ const zoomRect = zoomEl.getBoundingClientRect();
1561
+ const cloned = clonedElementRef.value;
1562
+ const currentTransform = window.getComputedStyle(zoomEl).transform || "none";
1563
+ const currentCenterX = zoomRect.left + zoomRect.width / 2;
1564
+ const currentCenterY = zoomRect.top + zoomRect.height / 2;
1565
+ const targetCenterX = originalRect.left + originalRect.width / 2;
1566
+ const targetCenterY = originalRect.top + originalRect.height / 2;
1567
+ const scale = Math.min(originalRect.width / zoomRect.width, originalRect.height / zoomRect.height);
1568
+ cloned.style.top = `${zoomRect.top}px`;
1569
+ cloned.style.left = `${zoomRect.left}px`;
1570
+ cloned.style.width = `${zoomRect.width}px`;
1571
+ cloned.style.height = `${zoomRect.height}px`;
1572
+ cloned.style.transform = currentTransform !== "none" ? currentTransform : "translate3d(0, 0, 0) scale(1)";
1573
+ cloned.style.transformOrigin = "center center";
1574
+ cloned.style.transition = "none";
1575
+ cloned.offsetHeight;
1576
+ await nextTick();
1577
+ isAnimating.value = true;
1578
+ const translateX = targetCenterX - currentCenterX;
1579
+ const translateY = targetCenterY - currentCenterY;
1580
+ cloned.style.transition = "transform 0.3s cubic-bezier(0.2, 0, 0.2, 1)";
1581
+ if (currentTransform !== "none") try {
1582
+ const inverseMatrix = new DOMMatrix(currentTransform).inverse();
1583
+ const transformedPoint = new DOMPoint(translateX, translateY).matrixTransform(inverseMatrix);
1584
+ cloned.style.transform = `${currentTransform} translate3d(${transformedPoint.x}px, ${transformedPoint.y}px, 0) scale(${scale})`;
1585
+ } catch {
1586
+ cloned.style.transform = `${currentTransform} translate3d(${translateX}px, ${translateY}px, 0) scale(${scale})`;
1587
+ }
1588
+ else cloned.style.transform = `translate3d(${translateX}px, ${translateY}px, 0) scale(${scale})`;
1589
+ const handleAnimationEnd = () => {
1590
+ var _options$close2;
1591
+ const cloned$1 = clonedElementRef.value;
1592
+ if (cloned$1 && cloned$1.parentNode) cloned$1.parentNode.removeChild(cloned$1);
1593
+ clonedElementRef.value = void 0;
1594
+ if (elementRef.value) elementRef.value.style.visibility = "visible";
1595
+ (_options$close2 = options.close) === null || _options$close2 === void 0 || _options$close2.call(options);
1596
+ isAnimating.value = false;
1597
+ showClonedElement.value = false;
1598
+ };
1599
+ cloned.addEventListener("transitionend", handleAnimationEnd, { once: true });
1600
+ }
1601
+ return {
1602
+ isAnimating,
1603
+ elementStyle,
1604
+ elementRef,
1605
+ zoomElementRef,
1606
+ zoomIn,
1607
+ zoomOut
1608
+ };
1609
+ }
1610
+
1323
1611
  //#endregion
1324
1612
  //#region src/composables/use-mermaid.ts
1325
1613
  let mermaid = null;
@@ -1426,13 +1714,21 @@ function useShiki(options) {
1426
1714
  });
1427
1715
  const lightTheme = computed(() => shikiTheme.value[0] ?? DEFAULT_LIGHT_THEME);
1428
1716
  const darkTheme = computed(() => shikiTheme.value[1] ?? DEFAULT_DARK_THEME);
1429
- const langAlias = computed(() => {
1717
+ const langs = computed(() => {
1430
1718
  var _unref2;
1431
- return ((_unref2 = unref(options === null || options === void 0 ? void 0 : options.shikiOptions)) === null || _unref2 === void 0 ? void 0 : _unref2.langAlias) ?? {};
1719
+ return ((_unref2 = unref(options === null || options === void 0 ? void 0 : options.shikiOptions)) === null || _unref2 === void 0 ? void 0 : _unref2.langs) ?? [];
1432
1720
  });
1433
- const codeToTokenOptions = computed(() => {
1721
+ const langAlias = computed(() => {
1434
1722
  var _unref3;
1435
- return ((_unref3 = unref(options === null || options === void 0 ? void 0 : options.shikiOptions)) === null || _unref3 === void 0 ? void 0 : _unref3.codeToTokenOptions) ?? {};
1723
+ const data = ((_unref3 = unref(options === null || options === void 0 ? void 0 : options.shikiOptions)) === null || _unref3 === void 0 ? void 0 : _unref3.langAlias) ?? {};
1724
+ return {
1725
+ ...LANGUAGE_ALIAS,
1726
+ ...data
1727
+ };
1728
+ });
1729
+ const codeToTokenOptions = computed(() => {
1730
+ var _unref4;
1731
+ return ((_unref4 = unref(options === null || options === void 0 ? void 0 : options.shikiOptions)) === null || _unref4 === void 0 ? void 0 : _unref4.codeToTokenOptions) ?? {};
1436
1732
  });
1437
1733
  const isDark = computed(() => unref(options === null || options === void 0 ? void 0 : options.isDark) ?? false);
1438
1734
  async function getThemes() {
@@ -1446,7 +1742,7 @@ function useShiki(options) {
1446
1742
  return theme.id;
1447
1743
  }
1448
1744
  async function getLanguage() {
1449
- if (LANGUAGE_ALIAS[lang.value]) return LANGUAGE_ALIAS[lang.value];
1745
+ if (langAlias.value[lang.value]) return langAlias.value[lang.value];
1450
1746
  const { bundledLanguagesInfo } = await import("shiki");
1451
1747
  const language = bundledLanguagesInfo.find((l) => {
1452
1748
  var _l$aliases;
@@ -1473,11 +1769,8 @@ function useShiki(options) {
1473
1769
  const { createHighlighter } = await import("shiki");
1474
1770
  return createHighlighter({
1475
1771
  themes: [await getTheme()],
1476
- langs: [await getLanguage()],
1477
- langAlias: {
1478
- ...LANGUAGE_ALIAS,
1479
- ...langAlias.value
1480
- }
1772
+ langs: langs.value,
1773
+ langAlias: langAlias.value
1481
1774
  });
1482
1775
  })();
1483
1776
  highlighter = await createHighlighterPromise;
@@ -1558,28 +1851,6 @@ function useTailwindV3Theme(options) {
1558
1851
  };
1559
1852
  }
1560
1853
 
1561
- //#endregion
1562
- //#region src/composables/use-tippy.ts
1563
- function useTippy(options) {
1564
- const isDark = computed(() => unref(options === null || options === void 0 ? void 0 : options.isDark) ?? false);
1565
- const tippyOptions = computed(() => unref(options === null || options === void 0 ? void 0 : options.options) ?? {});
1566
- function initTippy() {
1567
- setDefaultProps({
1568
- allowHTML: true,
1569
- delay: [100, 100],
1570
- theme: isDark.value ? "" : "light",
1571
- ...tippyOptions
1572
- });
1573
- watchEffect(() => {
1574
- setDefaultProps({
1575
- theme: isDark.value ? "" : "light",
1576
- ...tippyOptions.value
1577
- });
1578
- });
1579
- }
1580
- return { initTippy };
1581
- }
1582
-
1583
1854
  //#endregion
1584
1855
  //#region src/composables/use-zoom.ts
1585
1856
  function useZoom(options = {}) {
@@ -1592,6 +1863,8 @@ function useZoom(options = {}) {
1592
1863
  x: 0,
1593
1864
  y: 0
1594
1865
  });
1866
+ const isPinching = ref(false);
1867
+ const touchZoomState = ref(null);
1595
1868
  const transformStyle = computed(() => ({ transform: `translate(${translateX.value}px, ${translateY.value}px) scale(${zoom.value})` }));
1596
1869
  function zoomIn() {
1597
1870
  if (zoom.value < maxZoom) zoom.value = Math.min(zoom.value + zoomStep, maxZoom);
@@ -1608,6 +1881,7 @@ function useZoom(options = {}) {
1608
1881
  zoom.value = Math.min(Math.max(value, minZoom), maxZoom);
1609
1882
  }
1610
1883
  function startDrag(e) {
1884
+ if (isPinching.value) return;
1611
1885
  isDragging.value = true;
1612
1886
  dragStart.value = {
1613
1887
  x: e.clientX - translateX.value,
@@ -1618,7 +1892,7 @@ function useZoom(options = {}) {
1618
1892
  }
1619
1893
  }
1620
1894
  function onDrag(e) {
1621
- if (!isDragging.value) return;
1895
+ if (!isDragging.value || isPinching.value) return;
1622
1896
  translateX.value = e.clientX - dragStart.value.x;
1623
1897
  translateY.value = e.clientY - dragStart.value.y;
1624
1898
  }
@@ -1646,6 +1920,65 @@ function useZoom(options = {}) {
1646
1920
  }
1647
1921
  }
1648
1922
  }
1923
+ function getTouchDistance(touch1, touch2) {
1924
+ const dx = touch1.clientX - touch2.clientX;
1925
+ const dy = touch1.clientY - touch2.clientY;
1926
+ return Math.sqrt(dx * dx + dy * dy);
1927
+ }
1928
+ function handleTouchStart(event, containerElement) {
1929
+ if (event.touches.length === 2) {
1930
+ event.preventDefault();
1931
+ isPinching.value = true;
1932
+ const touch1 = event.touches[0];
1933
+ const touch2 = event.touches[1];
1934
+ const distance = getTouchDistance(touch1, touch2);
1935
+ const centerX = (touch1.clientX + touch2.clientX) / 2;
1936
+ const centerY = (touch1.clientY + touch2.clientY) / 2;
1937
+ const rect = containerElement.getBoundingClientRect();
1938
+ const containerCenterX = rect.width / 2;
1939
+ const containerCenterY = rect.height / 2;
1940
+ const offsetX = centerX - rect.left - containerCenterX;
1941
+ const offsetY = centerY - rect.top - containerCenterY;
1942
+ touchZoomState.value = {
1943
+ initialDistance: distance,
1944
+ initialZoom: zoom.value,
1945
+ initialTranslateX: translateX.value,
1946
+ initialTranslateY: translateY.value,
1947
+ centerX: offsetX,
1948
+ centerY: offsetY
1949
+ };
1950
+ }
1951
+ }
1952
+ function handleTouchMove(event, containerElement) {
1953
+ if (event.touches.length === 2 && touchZoomState.value) {
1954
+ event.preventDefault();
1955
+ const touch1 = event.touches[0];
1956
+ const touch2 = event.touches[1];
1957
+ const scale = getTouchDistance(touch1, touch2) / touchZoomState.value.initialDistance;
1958
+ const newZoom = touchZoomState.value.initialZoom * scale;
1959
+ const clampedZoom = Math.min(Math.max(newZoom, minZoom), maxZoom);
1960
+ if (clampedZoom !== zoom.value) {
1961
+ const centerX = (touch1.clientX + touch2.clientX) / 2;
1962
+ const centerY = (touch1.clientY + touch2.clientY) / 2;
1963
+ const rect = containerElement.getBoundingClientRect();
1964
+ const containerCenterX = rect.width / 2;
1965
+ const containerCenterY = rect.height / 2;
1966
+ const offsetX = centerX - rect.left - containerCenterX;
1967
+ const offsetY = centerY - rect.top - containerCenterY;
1968
+ const contentFocalX = (touchZoomState.value.centerX - touchZoomState.value.initialTranslateX) / touchZoomState.value.initialZoom;
1969
+ const contentFocalY = (touchZoomState.value.centerY - touchZoomState.value.initialTranslateY) / touchZoomState.value.initialZoom;
1970
+ zoom.value = clampedZoom;
1971
+ translateX.value = offsetX - contentFocalX * clampedZoom;
1972
+ translateY.value = offsetY - contentFocalY * clampedZoom;
1973
+ }
1974
+ }
1975
+ }
1976
+ function handleTouchEnd(event) {
1977
+ if (event.touches.length < 2) {
1978
+ touchZoomState.value = null;
1979
+ isPinching.value = false;
1980
+ }
1981
+ }
1649
1982
  function getState() {
1650
1983
  return {
1651
1984
  zoom: zoom.value,
@@ -1673,9 +2006,12 @@ function useZoom(options = {}) {
1673
2006
  stopDrag,
1674
2007
  handleWheel,
1675
2008
  getState,
1676
- setState
2009
+ setState,
2010
+ handleTouchStart,
2011
+ handleTouchMove,
2012
+ handleTouchEnd
1677
2013
  };
1678
2014
  }
1679
2015
 
1680
2016
  //#endregion
1681
- export { transformUrl as A, useContext as B, findNodeParent as C, flow as D, hasShiki as E, DEFAULT_LIGHT_THEME as F, LANGUAGE_ALIAS as I, LANGUAGE_EXTENSIONS as L, ICONS as M, DEFAULT_HARDEN_OPTIONS as N, save as O, DEFAULT_DARK_THEME as P, LANGUAGE_ICONS as R, findLastLeafNode as S, hasMermaid as T, useCodeOptions as V, escapeMarkdownTableCell as _, useMermaid as a, tableDataToMarkdown as b, _defineProperty as c, SUPPORT_LANGUAGES as d, currentLocale as f, useHardenSanitizers as g, localesGlob as h, useShiki as i, SHADCN_SCHEMAS as j, svgToPngBlob as k, useKatex as l, localeMessages as m, useTippy as n, useMathRenderer as o, loadLocaleMessages as p, useTailwindV3Theme as r, throttle as s, useZoom as t, useI18n as u, extractTableDataFromElement as v, hasKatex as w, tableDataToTSV as x, tableDataToCSV as y, useControls as z };
2017
+ export { svgToPngBlob as A, useFloatingElement as B, findNodeParent as C, flow as D, hasShiki as E, DEFAULT_DARK_THEME as F, useContext as H, DEFAULT_LIGHT_THEME as I, LANGUAGE_ALIAS as L, SHADCN_SCHEMAS as M, ICONS as N, save as O, DEFAULT_HARDEN_OPTIONS as P, LANGUAGE_EXTENSIONS as R, findLastLeafNode as S, hasMermaid as T, useCodeOptions as U, useControls as V, escapeMarkdownTableCell as _, useMediumZoom as a, tableDataToMarkdown as b, _defineProperty as c, SUPPORT_LANGUAGES as d, currentLocale as f, useHardenSanitizers as g, localesGlob as h, useMermaid as i, transformUrl as j, saveImage as k, useKatex as l, localeMessages as m, useTailwindV3Theme as n, useMathRenderer as o, loadLocaleMessages as p, useShiki as r, throttle as s, useZoom as t, useI18n as u, extractTableDataFromElement as v, hasKatex as w, tableDataToTSV as x, tableDataToCSV as y, LANGUAGE_ICONS as z };