@hejiayue/x-markdown-test 0.0.1-beta.151 → 0.0.1-beta.152

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 (136) hide show
  1. package/dist/style.css +438 -1
  2. package/dist/types/config.d.ts +33 -0
  3. package/dist/types/hooks/useMermaid.d.ts +1 -1
  4. package/dist/types/index.d.ts +2 -0
  5. package/dist/x-markdown.cjs.js +35 -1
  6. package/dist/x-markdown.cjs.js.map +1 -1
  7. package/dist/x-markdown.cjs10.js +52 -1
  8. package/dist/x-markdown.cjs10.js.map +1 -1
  9. package/dist/x-markdown.cjs11.js +57 -1
  10. package/dist/x-markdown.cjs11.js.map +1 -1
  11. package/dist/x-markdown.cjs12.js +18 -0
  12. package/dist/x-markdown.cjs12.js.map +1 -0
  13. package/dist/x-markdown.cjs14.js +92 -1
  14. package/dist/x-markdown.cjs14.js.map +1 -1
  15. package/dist/x-markdown.cjs15.js +36 -1
  16. package/dist/x-markdown.cjs15.js.map +1 -1
  17. package/dist/x-markdown.cjs16.js +9 -1
  18. package/dist/x-markdown.cjs16.js.map +1 -1
  19. package/dist/x-markdown.cjs17.js +10 -1
  20. package/dist/x-markdown.cjs17.js.map +1 -1
  21. package/dist/x-markdown.cjs18.js +11 -1
  22. package/dist/x-markdown.cjs18.js.map +1 -1
  23. package/dist/x-markdown.cjs19.js +11 -1
  24. package/dist/x-markdown.cjs19.js.map +1 -1
  25. package/dist/x-markdown.cjs2.js +86 -1
  26. package/dist/x-markdown.cjs2.js.map +1 -1
  27. package/dist/x-markdown.cjs20.js +211 -0
  28. package/dist/x-markdown.cjs20.js.map +1 -0
  29. package/dist/x-markdown.cjs22.js +13 -1
  30. package/dist/x-markdown.cjs22.js.map +1 -1
  31. package/dist/x-markdown.cjs23.js +79 -0
  32. package/dist/x-markdown.cjs23.js.map +1 -0
  33. package/dist/x-markdown.cjs25.js +409 -0
  34. package/dist/x-markdown.cjs25.js.map +1 -0
  35. package/dist/x-markdown.cjs27.js +199 -1
  36. package/dist/x-markdown.cjs27.js.map +1 -1
  37. package/dist/x-markdown.cjs28.js +135 -1
  38. package/dist/x-markdown.cjs28.js.map +1 -1
  39. package/dist/x-markdown.cjs3.js +97 -1
  40. package/dist/x-markdown.cjs3.js.map +1 -1
  41. package/dist/x-markdown.cjs30.js +11 -1
  42. package/dist/x-markdown.cjs30.js.map +1 -1
  43. package/dist/x-markdown.cjs31.js +122 -1
  44. package/dist/x-markdown.cjs31.js.map +1 -1
  45. package/dist/x-markdown.cjs32.js +11 -0
  46. package/dist/x-markdown.cjs32.js.map +1 -0
  47. package/dist/x-markdown.cjs33.js +128 -1
  48. package/dist/x-markdown.cjs33.js.map +1 -1
  49. package/dist/x-markdown.cjs4.js +153 -1
  50. package/dist/x-markdown.cjs4.js.map +1 -1
  51. package/dist/x-markdown.cjs5.js +43 -1
  52. package/dist/x-markdown.cjs5.js.map +1 -1
  53. package/dist/x-markdown.cjs6.js +27 -1
  54. package/dist/x-markdown.cjs6.js.map +1 -1
  55. package/dist/x-markdown.cjs7.js +310 -1
  56. package/dist/x-markdown.cjs7.js.map +1 -1
  57. package/dist/x-markdown.cjs8.js +30 -1
  58. package/dist/x-markdown.cjs8.js.map +1 -1
  59. package/dist/x-markdown.cjs9.js +435 -1
  60. package/dist/x-markdown.cjs9.js.map +1 -1
  61. package/dist/x-markdown.es.js +11 -28
  62. package/dist/x-markdown.es10.js +10 -10
  63. package/dist/x-markdown.es10.js.map +1 -1
  64. package/dist/x-markdown.es11.js +4 -5
  65. package/dist/x-markdown.es11.js.map +1 -1
  66. package/dist/x-markdown.es12.js +12 -0
  67. package/dist/x-markdown.es12.js.map +1 -0
  68. package/dist/x-markdown.es14.js +85 -29
  69. package/dist/x-markdown.es14.js.map +1 -1
  70. package/dist/x-markdown.es15.js +32 -4
  71. package/dist/x-markdown.es15.js.map +1 -1
  72. package/dist/x-markdown.es16.js +5 -5
  73. package/dist/x-markdown.es16.js.map +1 -1
  74. package/dist/x-markdown.es17.js +5 -6
  75. package/dist/x-markdown.es17.js.map +1 -1
  76. package/dist/x-markdown.es18.js +6 -6
  77. package/dist/x-markdown.es18.js.map +1 -1
  78. package/dist/x-markdown.es19.js +7 -206
  79. package/dist/x-markdown.es19.js.map +1 -1
  80. package/dist/x-markdown.es2.js +6 -7
  81. package/dist/x-markdown.es2.js.map +1 -1
  82. package/dist/x-markdown.es20.js +207 -0
  83. package/dist/x-markdown.es20.js.map +1 -0
  84. package/dist/x-markdown.es22.js +7 -72
  85. package/dist/x-markdown.es22.js.map +1 -1
  86. package/dist/x-markdown.es23.js +75 -0
  87. package/dist/x-markdown.es23.js.map +1 -0
  88. package/dist/{x-markdown.es24.js → x-markdown.es25.js} +12 -10
  89. package/dist/x-markdown.es25.js.map +1 -0
  90. package/dist/x-markdown.es27.js +182 -7
  91. package/dist/x-markdown.es27.js.map +1 -1
  92. package/dist/x-markdown.es28.js +7 -8
  93. package/dist/x-markdown.es28.js.map +1 -1
  94. package/dist/x-markdown.es3.js +7 -8
  95. package/dist/x-markdown.es3.js.map +1 -1
  96. package/dist/x-markdown.es30.js +7 -77
  97. package/dist/x-markdown.es30.js.map +1 -1
  98. package/dist/x-markdown.es31.js +112 -124
  99. package/dist/x-markdown.es31.js.map +1 -1
  100. package/dist/x-markdown.es32.js +7 -0
  101. package/dist/x-markdown.es32.js.map +1 -0
  102. package/dist/x-markdown.es33.js +124 -5
  103. package/dist/x-markdown.es33.js.map +1 -1
  104. package/dist/x-markdown.es4.js +5 -7
  105. package/dist/x-markdown.es4.js.map +1 -1
  106. package/dist/x-markdown.es5.js +9 -10
  107. package/dist/x-markdown.es5.js.map +1 -1
  108. package/dist/x-markdown.es6.js +5 -5
  109. package/dist/x-markdown.es6.js.map +1 -1
  110. package/dist/x-markdown.es7.js +61 -74
  111. package/dist/x-markdown.es7.js.map +1 -1
  112. package/dist/x-markdown.es8.js +4 -5
  113. package/dist/x-markdown.es8.js.map +1 -1
  114. package/dist/x-markdown.es9.js +22 -14
  115. package/dist/x-markdown.es9.js.map +1 -1
  116. package/package.json +3 -14
  117. package/dist/types/vite-plugin.d.ts +0 -29
  118. package/dist/vite-plugin.cjs +0 -128
  119. package/dist/vite-plugin.cjs.map +0 -1
  120. package/dist/vite-plugin.js +0 -128
  121. package/dist/vite-plugin.js.map +0 -1
  122. package/dist/x-markdown.cjs13.js +0 -2
  123. package/dist/x-markdown.cjs13.js.map +0 -1
  124. package/dist/x-markdown.cjs21.js +0 -2
  125. package/dist/x-markdown.cjs21.js.map +0 -1
  126. package/dist/x-markdown.cjs24.js +0 -2
  127. package/dist/x-markdown.cjs24.js.map +0 -1
  128. package/dist/x-markdown.cjs26.js +0 -2
  129. package/dist/x-markdown.cjs26.js.map +0 -1
  130. package/dist/x-markdown.es13.js +0 -89
  131. package/dist/x-markdown.es13.js.map +0 -1
  132. package/dist/x-markdown.es21.js +0 -11
  133. package/dist/x-markdown.es21.js.map +0 -1
  134. package/dist/x-markdown.es24.js.map +0 -1
  135. package/dist/x-markdown.es26.js +0 -160
  136. package/dist/x-markdown.es26.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"x-markdown.cjs11.js","sources":["../src/hooks/useTheme.ts"],"sourcesContent":["import { computed, isRef, ref, type Ref } from 'vue'\r\n\r\nexport type ThemeMode = 'light' | 'dark' | 'auto'\r\nexport type ShikiThemeName = string // Shiki 主题名称(字符串类型,支持动态导入)\r\n\r\n// 内置主题映射\r\nexport const themeMap = {\r\n light: 'vitesse-light',\r\n dark: 'vitesse-dark',\r\n} as const\r\n\r\nexport interface UseThemeOptions {\r\n mode?: ThemeMode | Ref<ThemeMode>\r\n theme?: ShikiThemeName | Ref<ShikiThemeName | undefined>\r\n lightTheme?: ShikiThemeName\r\n darkTheme?: ShikiThemeName\r\n}\r\n\r\nexport interface UseThemeReturn {\r\n mode: Ref<ThemeMode>\r\n isDark: Ref<boolean>\r\n actualTheme: Ref<ShikiThemeName>\r\n setMode: (mode: ThemeMode) => void\r\n toggleMode: () => void\r\n}\r\n\r\n/**\r\n * 主题管理 Hook\r\n * 支持 light/dark/auto 模式切换\r\n */\r\nexport function useTheme(options: UseThemeOptions = {}): UseThemeReturn {\r\n const { lightTheme = themeMap.light, darkTheme = themeMap.dark } = options\r\n\r\n // 内部 mode(用于 setMode/toggleMode 修改)\r\n const internalMode = ref<ThemeMode>(isRef(options.mode) ? options.mode.value : options.mode || 'auto')\r\n\r\n // 实际使用的 mode(优先使用外部传入的响应式值)\r\n const mode = computed<ThemeMode>({\r\n get: () => (isRef(options.mode) ? options.mode.value : internalMode.value),\r\n set: (val) => {\r\n internalMode.value = val\r\n },\r\n })\r\n\r\n // 系统是否为暗色模式\r\n const systemIsDark = ref(false)\r\n\r\n // 监听系统主题变化\r\n if (typeof window !== 'undefined') {\r\n const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)')\r\n systemIsDark.value = mediaQuery.matches\r\n\r\n mediaQuery.addEventListener('change', (e) => {\r\n systemIsDark.value = e.matches\r\n })\r\n }\r\n\r\n // 当前是否为暗色模式\r\n const isDark = computed(() => {\r\n if (mode.value === 'auto') {\r\n return systemIsDark.value\r\n }\r\n return mode.value === 'dark'\r\n })\r\n\r\n // 实际使用的 Shiki 主题\r\n const actualTheme = computed<ShikiThemeName>(() => {\r\n // 如果传入了具体的 theme,优先使用\r\n const customTheme = isRef(options.theme) ? options.theme.value : options.theme\r\n if (customTheme) return customTheme\r\n\r\n return isDark.value ? darkTheme : lightTheme\r\n })\r\n\r\n // 设置模式\r\n const setMode = (newMode: ThemeMode) => {\r\n internalMode.value = newMode\r\n }\r\n\r\n // 切换模式 (light -> dark -> auto -> light)\r\n const toggleMode = () => {\r\n const modes: ThemeMode[] = ['light', 'dark', 'auto']\r\n const currentIndex = modes.indexOf(mode.value)\r\n internalMode.value = modes[(currentIndex + 1) % modes.length]\r\n }\r\n\r\n return {\r\n mode,\r\n isDark,\r\n actualTheme,\r\n setMode,\r\n toggleMode,\r\n }\r\n}\r\n"],"names":["themeMap","light","dark","options","lightTheme","darkTheme","internalMode","ref","isRef","mode","value","computed","get","set","val","systemIsDark","window","mediaQuery","matchMedia","matches","addEventListener","e","isDark","actualTheme","theme","setMode","newMode","toggleMode","modes","currentIndex","indexOf","length"],"mappings":"uGAMaA,EAAW,CACtBC,MAAO,gBACPC,KAAM,oDAsBD,SAAkBC,EAA2B,IAClD,MAAMC,WAAEA,EAAaJ,EAASC,gBAAOI,EAAYL,EAASE,MAASC,EAG7DG,EAAeC,EAAAA,IAAeC,EAAAA,MAAML,EAAQM,MAAQN,EAAQM,KAAKC,MAAQP,EAAQM,MAAQ,QAGzFA,EAAOE,EAAAA,SAAoB,CAC/BC,IAAK,IAAOJ,QAAML,EAAQM,MAAQN,EAAQM,KAAKC,MAAQJ,EAAaI,MACpEG,IAAMC,IACJR,EAAaI,MAAQI,KAKnBC,EAAeR,EAAAA,KAAI,GAGzB,GAAsB,oBAAXS,OAAwB,CACjC,MAAMC,EAAaD,OAAOE,WAAW,gCACrCH,EAAaL,MAAQO,EAAWE,QAEhCF,EAAWG,iBAAiB,SAAWC,IACrCN,EAAaL,MAAQW,EAAEF,SAE3B,CAGA,MAAMG,EAASX,EAAAA,SAAS,IACH,SAAfF,EAAKC,MACAK,EAAaL,MAEA,SAAfD,EAAKC,OAIRa,EAAcZ,EAAAA,SAAyB,KAEvBH,QAAML,EAAQqB,OAASrB,EAAQqB,MAAMd,MAAQP,EAAQqB,SAGlEF,EAAOZ,MAAQL,EAAYD,IAepC,MAAO,CACLK,OACAa,SACAC,cACAE,QAfeC,IACfpB,EAAaI,MAAQgB,GAerBC,WAXiB,KACjB,MAAMC,EAAqB,CAAC,QAAS,OAAQ,QACvCC,EAAeD,EAAME,QAAQrB,EAAKC,OACxCJ,EAAaI,MAAQkB,GAAOC,EAAe,GAAKD,EAAMG,SAU1D"}
1
+ {"version":3,"file":"x-markdown.cjs11.js","sources":["../src/hooks/useTheme.ts"],"sourcesContent":["import { computed, isRef, ref, type Ref } from 'vue'\r\n\r\nexport type ThemeMode = 'light' | 'dark' | 'auto'\r\nexport type ShikiThemeName = string // Shiki 主题名称(字符串类型,支持动态导入)\r\n\r\n// 内置主题映射\r\nexport const themeMap = {\r\n light: 'vitesse-light',\r\n dark: 'vitesse-dark',\r\n} as const\r\n\r\nexport interface UseThemeOptions {\r\n mode?: ThemeMode | Ref<ThemeMode>\r\n theme?: ShikiThemeName | Ref<ShikiThemeName | undefined>\r\n lightTheme?: ShikiThemeName\r\n darkTheme?: ShikiThemeName\r\n}\r\n\r\nexport interface UseThemeReturn {\r\n mode: Ref<ThemeMode>\r\n isDark: Ref<boolean>\r\n actualTheme: Ref<ShikiThemeName>\r\n setMode: (mode: ThemeMode) => void\r\n toggleMode: () => void\r\n}\r\n\r\n/**\r\n * 主题管理 Hook\r\n * 支持 light/dark/auto 模式切换\r\n */\r\nexport function useTheme(options: UseThemeOptions = {}): UseThemeReturn {\r\n const { lightTheme = themeMap.light, darkTheme = themeMap.dark } = options\r\n\r\n // 内部 mode(用于 setMode/toggleMode 修改)\r\n const internalMode = ref<ThemeMode>(isRef(options.mode) ? options.mode.value : options.mode || 'auto')\r\n\r\n // 实际使用的 mode(优先使用外部传入的响应式值)\r\n const mode = computed<ThemeMode>({\r\n get: () => (isRef(options.mode) ? options.mode.value : internalMode.value),\r\n set: (val) => {\r\n internalMode.value = val\r\n },\r\n })\r\n\r\n // 系统是否为暗色模式\r\n const systemIsDark = ref(false)\r\n\r\n // 监听系统主题变化\r\n if (typeof window !== 'undefined') {\r\n const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)')\r\n systemIsDark.value = mediaQuery.matches\r\n\r\n mediaQuery.addEventListener('change', (e) => {\r\n systemIsDark.value = e.matches\r\n })\r\n }\r\n\r\n // 当前是否为暗色模式\r\n const isDark = computed(() => {\r\n if (mode.value === 'auto') {\r\n return systemIsDark.value\r\n }\r\n return mode.value === 'dark'\r\n })\r\n\r\n // 实际使用的 Shiki 主题\r\n const actualTheme = computed<ShikiThemeName>(() => {\r\n // 如果传入了具体的 theme,优先使用\r\n const customTheme = isRef(options.theme) ? options.theme.value : options.theme\r\n if (customTheme) return customTheme\r\n\r\n return isDark.value ? darkTheme : lightTheme\r\n })\r\n\r\n // 设置模式\r\n const setMode = (newMode: ThemeMode) => {\r\n internalMode.value = newMode\r\n }\r\n\r\n // 切换模式 (light -> dark -> auto -> light)\r\n const toggleMode = () => {\r\n const modes: ThemeMode[] = ['light', 'dark', 'auto']\r\n const currentIndex = modes.indexOf(mode.value)\r\n internalMode.value = modes[(currentIndex + 1) % modes.length]\r\n }\r\n\r\n return {\r\n mode,\r\n isDark,\r\n actualTheme,\r\n setMode,\r\n toggleMode,\r\n }\r\n}\r\n"],"names":["ref","isRef","computed"],"mappings":";;;;;;AAMO,MAAM,QAAA,GAAW;AAAA,EACtB,KAAA,EAAO,eAAA;AAAA,EACP,IAAA,EAAM;AACR;AAqBO,SAAS,QAAA,CAAS,OAAA,GAA2B,EAAC,EAAmB;AACtE,EAAA,MAAM,EAAE,UAAA,GAAa,QAAA,CAAS,OAAO,SAAA,GAAY,QAAA,CAAS,MAAK,GAAI,OAAA;AAGnE,EAAA,MAAM,YAAA,GAAeA,OAAA,CAAeC,SAAA,CAAM,OAAA,CAAQ,IAAI,CAAA,GAAI,OAAA,CAAQ,IAAA,CAAK,KAAA,GAAQ,OAAA,CAAQ,IAAA,IAAQ,MAAM,CAAA;AAGrG,EAAA,MAAM,OAAOC,YAAA,CAAoB;AAAA,IAC/B,GAAA,EAAK,MAAOD,SAAA,CAAM,OAAA,CAAQ,IAAI,CAAA,GAAI,OAAA,CAAQ,IAAA,CAAK,KAAA,GAAQ,YAAA,CAAa,KAAA;AAAA,IACpE,GAAA,EAAK,CAAC,GAAA,KAAQ;AACZ,MAAA,YAAA,CAAa,KAAA,GAAQ,GAAA;AAAA,IACvB;AAAA,GACD,CAAA;AAGD,EAAA,MAAM,YAAA,GAAeD,QAAI,KAAK,CAAA;AAG9B,EAAA,IAAI,OAAO,WAAW,WAAA,EAAa;AACjC,IAAA,MAAM,UAAA,GAAa,MAAA,CAAO,UAAA,CAAW,8BAA8B,CAAA;AACnE,IAAA,YAAA,CAAa,QAAQ,UAAA,CAAW,OAAA;AAEhC,IAAA,UAAA,CAAW,gBAAA,CAAiB,QAAA,EAAU,CAAC,CAAA,KAAM;AAC3C,MAAA,YAAA,CAAa,QAAQ,CAAA,CAAE,OAAA;AAAA,IACzB,CAAC,CAAA;AAAA,EACH;AAGA,EAAA,MAAM,MAAA,GAASE,aAAS,MAAM;AAC5B,IAAA,IAAI,IAAA,CAAK,UAAU,MAAA,EAAQ;AACzB,MAAA,OAAO,YAAA,CAAa,KAAA;AAAA,IACtB;AACA,IAAA,OAAO,KAAK,KAAA,KAAU,MAAA;AAAA,EACxB,CAAC,CAAA;AAGD,EAAA,MAAM,WAAA,GAAcA,aAAyB,MAAM;AAEjD,IAAA,MAAM,WAAA,GAAcD,UAAM,OAAA,CAAQ,KAAK,IAAI,OAAA,CAAQ,KAAA,CAAM,QAAQ,OAAA,CAAQ,KAAA;AACzE,IAAA,IAAI,aAAa,OAAO,WAAA;AAExB,IAAA,OAAO,MAAA,CAAO,QAAQ,SAAA,GAAY,UAAA;AAAA,EACpC,CAAC,CAAA;AAGD,EAAA,MAAM,OAAA,GAAU,CAAC,OAAA,KAAuB;AACtC,IAAA,YAAA,CAAa,KAAA,GAAQ,OAAA;AAAA,EACvB,CAAA;AAGA,EAAA,MAAM,aAAa,MAAM;AACvB,IAAA,MAAM,KAAA,GAAqB,CAAC,OAAA,EAAS,MAAA,EAAQ,MAAM,CAAA;AACnD,IAAA,MAAM,YAAA,GAAe,KAAA,CAAM,OAAA,CAAQ,IAAA,CAAK,KAAK,CAAA;AAC7C,IAAA,YAAA,CAAa,KAAA,GAAQ,KAAA,CAAA,CAAO,YAAA,GAAe,CAAA,IAAK,MAAM,MAAM,CAAA;AAAA,EAC9D,CAAA;AAEA,EAAA,OAAO;AAAA,IACL,IAAA;AAAA,IACA,MAAA;AAAA,IACA,WAAA;AAAA,IACA,OAAA;AAAA,IACA;AAAA,GACF;AACF;;;;;"}
@@ -0,0 +1,18 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
+
5
+ const vue = require('vue');
6
+
7
+ const X_MARKDOWN_CONFIG_KEY = Symbol("x-markdown-config");
8
+ function provideXMarkdown(options) {
9
+ vue.provide(X_MARKDOWN_CONFIG_KEY, options);
10
+ }
11
+ function useXMarkdownConfig() {
12
+ return vue.inject(X_MARKDOWN_CONFIG_KEY, {});
13
+ }
14
+
15
+ exports.X_MARKDOWN_CONFIG_KEY = X_MARKDOWN_CONFIG_KEY;
16
+ exports.provideXMarkdown = provideXMarkdown;
17
+ exports.useXMarkdownConfig = useXMarkdownConfig;
18
+ //# sourceMappingURL=x-markdown.cjs12.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"x-markdown.cjs12.js","sources":["../src/config.ts"],"sourcesContent":["import { type InjectionKey, inject, provide } from 'vue'\n\nexport interface XMarkdownOptions {\n /**\n * Shiki 加载函数\n * @example () => import('shiki')\n */\n shiki?: () => Promise<any>\n /**\n * Shiki Stream 加载函数\n * @example () => import('shiki-stream')\n */\n shikiStream?: () => Promise<any>\n /**\n * Mermaid 加载函数\n * @example () => import('mermaid')\n */\n mermaid?: () => Promise<any>\n /**\n * 是否显示控制台提示\n * @default true\n */\n showConsoleHints?: boolean\n}\n\nexport const X_MARKDOWN_CONFIG_KEY: InjectionKey<XMarkdownOptions> = Symbol('x-markdown-config')\n\n/**\n * 提供 x-markdown 全局配置\n * @param options 配置选项\n */\nexport function provideXMarkdown(options: XMarkdownOptions) {\n provide(X_MARKDOWN_CONFIG_KEY, options)\n}\n\n/**\n * 获取 x-markdown 全局配置\n */\nexport function useXMarkdownConfig() {\n return inject(X_MARKDOWN_CONFIG_KEY, {})\n}\n"],"names":["provide","inject"],"mappings":";;;;;;AAyBO,MAAM,qBAAA,GAAwD,OAAO,mBAAmB;AAMxF,SAAS,iBAAiB,OAAA,EAA2B;AAC1D,EAAAA,WAAA,CAAQ,uBAAuB,OAAO,CAAA;AACxC;AAKO,SAAS,kBAAA,GAAqB;AACnC,EAAA,OAAOC,UAAA,CAAO,qBAAA,EAAuB,EAAE,CAAA;AACzC;;;;;;"}
@@ -1,2 +1,93 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("unist-util-visit");exports.rehypeAnimatedPlugin=function(){return t=>{e.visit(t,"element",e=>{if(["p","h1","h2","h3","h4","h5","h6","li","strong","th","td"].includes(e.tagName)&&e.children){const t=[];for(const n of e.children)if("text"===n.type){const e=Intl.Segmenter;("function"==typeof e?[...new e("zh",{granularity:"word"}).segment(n.value)].map(e=>e.segment).filter(Boolean):Array.from(n.value).filter(Boolean)).forEach(e=>{t.push({children:[{type:"text",value:e}],properties:{className:"x-md-animated-word"},tagName:"span",type:"element"})})}else t.push(n);e.children=t}})}};
1
+ 'use strict';
2
+
3
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } });
4
+
5
+ const vue = require('vue');
6
+ const index$1 = require('./x-markdown.cjs18.js');
7
+ const index = require('./x-markdown.cjs19.js');
8
+
9
+ const Mermaid = vue.defineAsyncComponent(() => Promise.resolve().then(() => require('./x-markdown.cjs17.js')));
10
+ const _sfc_main = vue.defineComponent({
11
+ props: {
12
+ raw: { type: Object, default: () => ({}) },
13
+ codeXRender: { type: Object, default: () => ({}) },
14
+ isDark: { type: Boolean, default: false },
15
+ shikiTheme: {
16
+ type: Array,
17
+ default: () => ["vitesse-light", "vitesse-dark"]
18
+ },
19
+ showCodeBlockHeader: { type: Boolean, default: true },
20
+ stickyCodeBlockHeader: { type: Boolean, default: true },
21
+ codeMaxHeight: { type: String, default: void 0 },
22
+ enableAnimate: { type: Boolean, default: false },
23
+ codeBlockActions: { type: Array, default: void 0 },
24
+ mermaidActions: { type: Array, default: void 0 },
25
+ mermaidConfig: { type: Object, default: void 0 }
26
+ },
27
+ setup(props, { slots }) {
28
+ const { codeXRender } = props;
29
+ return () => {
30
+ if (props.raw.inline) {
31
+ if (codeXRender && codeXRender.inline) {
32
+ const renderer = codeXRender.inline;
33
+ if (typeof renderer === "function") {
34
+ return renderer(props);
35
+ }
36
+ return vue.h(renderer, props);
37
+ }
38
+ return vue.h(index.default, {
39
+ raw: props.raw,
40
+ isDark: props.isDark,
41
+ shikiTheme: props.shikiTheme,
42
+ enableAnimate: props.enableAnimate
43
+ });
44
+ }
45
+ const { language } = props.raw;
46
+ if (codeXRender && codeXRender[language]) {
47
+ const renderer = codeXRender[language];
48
+ if (typeof renderer === "function") {
49
+ return renderer(props);
50
+ }
51
+ return vue.h(renderer, props);
52
+ }
53
+ if (language === "mermaid") {
54
+ const mermaidSlots = {};
55
+ Object.keys(slots).forEach((key) => {
56
+ if (key.startsWith("mermaid")) {
57
+ mermaidSlots[key] = slots[key];
58
+ }
59
+ });
60
+ return vue.h(
61
+ Mermaid,
62
+ {
63
+ raw: props.raw,
64
+ isDark: props.isDark,
65
+ shikiTheme: props.shikiTheme,
66
+ mermaidActions: props.mermaidActions,
67
+ config: props.mermaidConfig
68
+ },
69
+ mermaidSlots
70
+ );
71
+ }
72
+ return vue.h(
73
+ index$1.default,
74
+ {
75
+ code: props.raw.content || "",
76
+ language: props.raw.language || "text",
77
+ isDark: props.isDark,
78
+ lightTheme: props.shikiTheme[0],
79
+ darkTheme: props.shikiTheme[1],
80
+ showCodeBlockHeader: props.showCodeBlockHeader,
81
+ stickyCodeBlockHeader: props.stickyCodeBlockHeader,
82
+ codeMaxHeight: props.codeMaxHeight,
83
+ enableAnimate: props.enableAnimate,
84
+ codeBlockActions: props.codeBlockActions
85
+ },
86
+ slots
87
+ );
88
+ };
89
+ }
90
+ });
91
+
92
+ exports.default = _sfc_main;
2
93
  //# sourceMappingURL=x-markdown.cjs14.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"x-markdown.cjs14.js","sources":["../src/plugins/rehypePlugin.ts"],"sourcesContent":["// Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\r\n// SPDX-License-Identifier: MIT\r\nimport type { Element, ElementContent, Root } from 'hast'\r\nimport type { BuildVisitor } from 'unist-util-visit'\r\nimport { visit } from 'unist-util-visit'\r\n\r\nexport function rehypeAnimatedPlugin() {\r\n return (tree: Root) => {\r\n visit(tree, 'element', ((node: Element) => {\r\n if (\r\n ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'li', 'strong', 'th', 'td'].includes(node.tagName) &&\r\n node.children\r\n ) {\r\n const newChildren: Array<ElementContent> = []\n for (const child of node.children) {\n if (child.type === 'text') {\n const Segmenter = (Intl as any).Segmenter as\n | (new (locales?: string | string[], options?: { granularity?: string }) => {\n segment: (input: string) => Iterable<{ segment: string }>\n })\n | undefined\n\n const words =\n typeof Segmenter === 'function'\n ? [...new Segmenter('zh', { granularity: 'word' }).segment(child.value)]\n .map((segment) => segment.segment)\n .filter(Boolean)\n : Array.from(child.value).filter(Boolean)\n\n words.forEach((word: string) => {\n newChildren.push({\n children: [{ type: 'text', value: word }],\n properties: {\n className: 'x-md-animated-word',\n },\r\n tagName: 'span',\r\n type: 'element',\r\n })\r\n })\r\n } else {\r\n newChildren.push(child)\r\n }\r\n }\r\n node.children = newChildren\r\n }\r\n }) as BuildVisitor<Root, 'element'>)\r\n }\r\n}\r\n"],"names":["tree","visit","node","includes","tagName","children","newChildren","child","type","Segmenter","Intl","granularity","segment","value","map","filter","Boolean","Array","from","forEach","word","push","properties","className"],"mappings":"iJAMO,WACL,OAAQA,IACNC,EAAAA,MAAMD,EAAM,UAAaE,IACvB,GACE,CAAC,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,SAAU,KAAM,MAAMC,SAASD,EAAKE,UACpFF,EAAKG,SACL,CACA,MAAMC,EAAqC,GAC3C,IAAA,MAAWC,KAASL,EAAKG,SACvB,GAAmB,SAAfE,EAAMC,KAAiB,CACzB,MAAMC,EAAaC,KAAaD,WAOT,mBAAdA,EACH,IAAI,IAAIA,EAAU,KAAM,CAAEE,YAAa,SAAUC,QAAQL,EAAMM,QAC5DC,IAAKF,GAAYA,EAAQA,SACzBG,OAAOC,SACVC,MAAMC,KAAKX,EAAMM,OAAOE,OAAOC,UAE/BG,QAASC,IACbd,EAAYe,KAAK,CACfhB,SAAU,CAAC,CAAEG,KAAM,OAAQK,MAAOO,IAClCE,WAAY,CACVC,UAAW,sBAEbnB,QAAS,OACTI,KAAM,aAGZ,MACEF,EAAYe,KAAKd,GAGrBL,EAAKG,SAAWC,CAClB,IAGN"}
1
+ {"version":3,"file":"x-markdown.cjs14.js","sources":["../src/components/CodeX/index.vue"],"sourcesContent":["<script lang=\"ts\">\r\nimport { defineComponent, h, type PropType, defineAsyncComponent } from 'vue'\r\nimport type { CodeBlockAction } from '../CodeBlock/types'\r\nimport type { MermaidAction } from '../Mermaid/types'\r\nimport CodeBlock from '../CodeBlock/index.vue'\r\nimport CodeLine from '../CodeLine/index.vue'\r\n// Mermaid 组件改为动态导入,实现按需加载\r\nconst Mermaid = defineAsyncComponent(() => import('../Mermaid/index.vue'))\r\n\r\nexport default defineComponent({\r\n props: {\r\n raw: { type: Object, default: () => ({}) },\r\n codeXRender: { type: Object, default: () => ({}) },\r\n isDark: { type: Boolean, default: false },\r\n shikiTheme: {\r\n type: Array as unknown as PropType<[string, string]>,\r\n default: () => ['vitesse-light', 'vitesse-dark'] as [string, string],\r\n },\r\n showCodeBlockHeader: { type: Boolean, default: true },\r\n stickyCodeBlockHeader: { type: Boolean, default: true },\r\n codeMaxHeight: { type: String, default: undefined },\r\n enableAnimate: { type: Boolean, default: false },\r\n codeBlockActions: { type: Array as PropType<CodeBlockAction[]>, default: undefined },\r\n mermaidActions: { type: Array as PropType<MermaidAction[]>, default: undefined },\r\n mermaidConfig: { type: Object as PropType<Record<string, any>>, default: undefined },\r\n },\r\n setup(props, { slots }) {\r\n const { codeXRender } = props\r\n\r\n return (): ReturnType<typeof h> | null => {\r\n // 处理行内代码\r\n if (props.raw.inline) {\r\n if (codeXRender && codeXRender.inline) {\r\n const renderer = codeXRender.inline\r\n if (typeof renderer === 'function') {\r\n return renderer(props)\r\n }\r\n return h(renderer, props)\r\n }\r\n // 传递完整的配置给 CodeLine,包括主题和动画设置\r\n return h(CodeLine, {\r\n raw: props.raw,\r\n isDark: props.isDark,\r\n shikiTheme: props.shikiTheme,\r\n enableAnimate: props.enableAnimate,\r\n })\r\n }\r\n\r\n const { language } = props.raw\r\n\r\n // 处理自定义渲染器\r\n if (codeXRender && codeXRender[language]) {\r\n const renderer = codeXRender[language]\r\n if (typeof renderer === 'function') {\r\n return renderer(props)\r\n }\r\n return h(renderer, props)\r\n }\r\n\r\n // 处理 Mermaid 图表\r\n if (language === 'mermaid') {\r\n const mermaidSlots: Record<string, any> = {}\r\n Object.keys(slots).forEach((key) => {\r\n if (key.startsWith('mermaid')) {\r\n mermaidSlots[key] = slots[key]\r\n }\r\n })\r\n\r\n return h(\r\n Mermaid,\r\n {\r\n raw: props.raw,\r\n isDark: props.isDark,\r\n shikiTheme: props.shikiTheme,\r\n mermaidActions: props.mermaidActions,\r\n config: props.mermaidConfig,\r\n },\r\n mermaidSlots,\r\n )\r\n }\r\n\r\n // 渲染标准代码块\r\n return h(\r\n CodeBlock,\r\n {\r\n code: props.raw.content || '',\r\n language: props.raw.language || 'text',\r\n isDark: props.isDark,\r\n lightTheme: props.shikiTheme[0],\r\n darkTheme: props.shikiTheme[1],\r\n showCodeBlockHeader: props.showCodeBlockHeader,\r\n stickyCodeBlockHeader: props.stickyCodeBlockHeader,\r\n codeMaxHeight: props.codeMaxHeight,\r\n enableAnimate: props.enableAnimate,\r\n codeBlockActions: props.codeBlockActions,\r\n },\r\n slots,\r\n )\r\n }\r\n },\r\n})\r\n</script>\r\n"],"names":["defineAsyncComponent","defineComponent","h","CodeLine","CodeBlock"],"mappings":"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"}
@@ -1,2 +1,37 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./x-markdown.cjs13.js");exports.default=e.default;
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
+
5
+ const unistUtilVisit = require('unist-util-visit');
6
+
7
+ function rehypeAnimatedPlugin() {
8
+ return (tree) => {
9
+ unistUtilVisit.visit(tree, "element", (node) => {
10
+ if (["p", "h1", "h2", "h3", "h4", "h5", "h6", "li", "strong", "th", "td"].includes(node.tagName) && node.children) {
11
+ const newChildren = [];
12
+ for (const child of node.children) {
13
+ if (child.type === "text") {
14
+ const Segmenter = Intl.Segmenter;
15
+ const words = typeof Segmenter === "function" ? [...new Segmenter("zh", { granularity: "word" }).segment(child.value)].map((segment) => segment.segment).filter(Boolean) : Array.from(child.value).filter(Boolean);
16
+ words.forEach((word) => {
17
+ newChildren.push({
18
+ children: [{ type: "text", value: word }],
19
+ properties: {
20
+ className: "x-md-animated-word"
21
+ },
22
+ tagName: "span",
23
+ type: "element"
24
+ });
25
+ });
26
+ } else {
27
+ newChildren.push(child);
28
+ }
29
+ }
30
+ node.children = newChildren;
31
+ }
32
+ });
33
+ };
34
+ }
35
+
36
+ exports.rehypeAnimatedPlugin = rehypeAnimatedPlugin;
2
37
  //# sourceMappingURL=x-markdown.cjs15.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"x-markdown.cjs15.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
1
+ {"version":3,"file":"x-markdown.cjs15.js","sources":["../src/plugins/rehypePlugin.ts"],"sourcesContent":["// Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\r\n// SPDX-License-Identifier: MIT\r\nimport type { Element, ElementContent, Root } from 'hast'\r\nimport type { BuildVisitor } from 'unist-util-visit'\r\nimport { visit } from 'unist-util-visit'\r\n\r\nexport function rehypeAnimatedPlugin() {\r\n return (tree: Root) => {\r\n visit(tree, 'element', ((node: Element) => {\r\n if (\r\n ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'li', 'strong', 'th', 'td'].includes(node.tagName) &&\r\n node.children\r\n ) {\r\n const newChildren: Array<ElementContent> = []\n for (const child of node.children) {\n if (child.type === 'text') {\n const Segmenter = (Intl as any).Segmenter as\n | (new (locales?: string | string[], options?: { granularity?: string }) => {\n segment: (input: string) => Iterable<{ segment: string }>\n })\n | undefined\n\n const words =\n typeof Segmenter === 'function'\n ? [...new Segmenter('zh', { granularity: 'word' }).segment(child.value)]\n .map((segment) => segment.segment)\n .filter(Boolean)\n : Array.from(child.value).filter(Boolean)\n\n words.forEach((word: string) => {\n newChildren.push({\n children: [{ type: 'text', value: word }],\n properties: {\n className: 'x-md-animated-word',\n },\r\n tagName: 'span',\r\n type: 'element',\r\n })\r\n })\r\n } else {\r\n newChildren.push(child)\r\n }\r\n }\r\n node.children = newChildren\r\n }\r\n }) as BuildVisitor<Root, 'element'>)\r\n }\r\n}\r\n"],"names":["visit"],"mappings":";;;;;;AAMO,SAAS,oBAAA,GAAuB;AACrC,EAAA,OAAO,CAAC,IAAA,KAAe;AACrB,IAAAA,oBAAA,CAAM,IAAA,EAAM,SAAA,EAAY,CAAC,IAAA,KAAkB;AACzC,MAAA,IACE,CAAC,GAAA,EAAK,IAAA,EAAM,MAAM,IAAA,EAAM,IAAA,EAAM,MAAM,IAAA,EAAM,IAAA,EAAM,QAAA,EAAU,IAAA,EAAM,IAAI,CAAA,CAAE,QAAA,CAAS,KAAK,OAAO,CAAA,IAC3F,KAAK,QAAA,EACL;AACA,QAAA,MAAM,cAAqC,EAAC;AAC5C,QAAA,KAAA,MAAW,KAAA,IAAS,KAAK,QAAA,EAAU;AACjC,UAAA,IAAI,KAAA,CAAM,SAAS,MAAA,EAAQ;AACzB,YAAA,MAAM,YAAa,IAAA,CAAa,SAAA;AAMhC,YAAA,MAAM,KAAA,GACJ,OAAO,SAAA,KAAc,UAAA,GACjB,CAAC,GAAG,IAAI,SAAA,CAAU,IAAA,EAAM,EAAE,WAAA,EAAa,MAAA,EAAQ,CAAA,CAAE,QAAQ,KAAA,CAAM,KAAK,CAAC,CAAA,CAClE,GAAA,CAAI,CAAC,OAAA,KAAY,OAAA,CAAQ,OAAO,CAAA,CAChC,MAAA,CAAO,OAAO,CAAA,GACjB,MAAM,IAAA,CAAK,KAAA,CAAM,KAAK,CAAA,CAAE,OAAO,OAAO,CAAA;AAE5C,YAAA,KAAA,CAAM,OAAA,CAAQ,CAAC,IAAA,KAAiB;AAC9B,cAAA,WAAA,CAAY,IAAA,CAAK;AAAA,gBACf,UAAU,CAAC,EAAE,MAAM,MAAA,EAAQ,KAAA,EAAO,MAAM,CAAA;AAAA,gBACxC,UAAA,EAAY;AAAA,kBACV,SAAA,EAAW;AAAA,iBACb;AAAA,gBACA,OAAA,EAAS,MAAA;AAAA,gBACT,IAAA,EAAM;AAAA,eACP,CAAA;AAAA,YACH,CAAC,CAAA;AAAA,UACH,CAAA,MAAO;AACL,YAAA,WAAA,CAAY,KAAK,KAAK,CAAA;AAAA,UACxB;AAAA,QACF;AACA,QAAA,IAAA,CAAK,QAAA,GAAW,WAAA;AAAA,MAClB;AAAA,IACF,CAAmC,CAAA;AAAA,EACrC,CAAA;AACF;;;;"}
@@ -1,2 +1,10 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./x-markdown.cjs24.js");,/* empty css */exports.default=e.default;
1
+ 'use strict';
2
+
3
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } });
4
+
5
+ const index_vue_vue_type_script_lang = require('./x-markdown.cjs14.js');
6
+
7
+
8
+
9
+ exports.default = index_vue_vue_type_script_lang.default;
2
10
  //# sourceMappingURL=x-markdown.cjs16.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"x-markdown.cjs16.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
1
+ {"version":3,"file":"x-markdown.cjs16.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;"}
@@ -1,2 +1,11 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./x-markdown.cjs19.js");;/* empty css */const r=require("./x-markdown.cjs21.js").default(e.default,[["__scopeId","data-v-5e8d09a0"]]);exports.default=r;
1
+ 'use strict';
2
+
3
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } });
4
+
5
+ const index_vue_vue_type_script_setup_true_lang = require('./x-markdown.cjs25.js');
6
+ ;/* empty css */
7
+
8
+
9
+
10
+ exports.default = index_vue_vue_type_script_setup_true_lang.default;
2
11
  //# sourceMappingURL=x-markdown.cjs17.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"x-markdown.cjs17.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
1
+ {"version":3,"file":"x-markdown.cjs17.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;"}
@@ -1,2 +1,12 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./x-markdown.cjs22.js");;/* empty css */const r=require("./x-markdown.cjs21.js").default(e.default,[["__scopeId","data-v-d2fd90dc"]]);exports.default=r;
1
+ 'use strict';
2
+
3
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } });
4
+
5
+ const index_vue_vue_type_script_setup_true_lang = require('./x-markdown.cjs20.js');
6
+ ;/* empty css */
7
+ const _pluginVue_exportHelper = require('./x-markdown.cjs22.js');
8
+
9
+ const CodeBlock = /* @__PURE__ */ _pluginVue_exportHelper.default(index_vue_vue_type_script_setup_true_lang.default, [["__scopeId", "data-v-5e8d09a0"]]);
10
+
11
+ exports.default = CodeBlock;
2
12
  //# sourceMappingURL=x-markdown.cjs18.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"x-markdown.cjs18.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
1
+ {"version":3,"file":"x-markdown.cjs18.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;"}
@@ -1,2 +1,12 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),o=require("./x-markdown.cjs26.js"),l=require("./x-markdown.cjs27.js"),a={class:"x-md-code-header"},t={class:"x-md-code-header__left"},c=["title"],n={class:"x-md-code-lang"},d={class:"x-md-code-header__right"},r=["title","disabled","onClick"],s={key:0,class:"x-md-copy-icon",width:"16",height:"16",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},i={key:1,class:"x-md-copy-icon",width:"16",height:"16",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},u=e.defineComponent({name:"CodeBlock",__name:"index",props:{code:{},language:{},lightTheme:{default:"vitesse-light"},darkTheme:{default:"vitesse-dark"},isDark:{type:Boolean,default:!1},colorReplacements:{},codeMaxHeight:{},showCodeBlockHeader:{type:Boolean,default:!0},enableAnimate:{type:Boolean,default:!1},codeBlockActions:{default:void 0},stickyCodeBlockHeader:{type:Boolean,default:!0}},setup(u,{expose:m}){const{copy:p,copied:k}=o.useClipboard({copiedDuring:2e3}),h=e.ref(!1),v=e.ref(null),g=()=>{h.value=!h.value},f=u,x=e.computed(()=>f.code.trim()),y=e.computed(()=>f.language||"text"),B=e.computed(()=>f.codeBlockActions||[]),C=e.computed(()=>B.value.filter(e=>!e.show||e.show(b.value))),b=e.computed(()=>({language:y.value,code:x.value,copy:p,copied:k.value,collapsed:h.value,toggleCollapse:g}));function w(o){if(!o.icon)return null;if("string"==typeof o.icon)return e.h("span",{class:"x-md-action-icon",innerHTML:o.icon});if("function"==typeof o.icon){try{const e=o.icon(b.value);if(e&&"object"==typeof e&&"__v_isVNode"in e)return e}catch{}return e.h(o.icon)}return e.h(o.icon)}return m({copy:p,copied:k,collapsed:h,toggleCollapse:g,syntaxCodeBlockRef:v}),(o,m)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["x-md-code-block",{"x-md-code-block--dark":f.isDark}])},[u.showCodeBlockHeader?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["x-md-code-header-wrapper",[{"x-md-code-header-wrapper--sticky":f.stickyCodeBlockHeader},{"x-md-code-header-wrapper--collapsed":h.value}]])},[e.createElementVNode("div",a,[e.renderSlot(o.$slots,"codeHeader",{language:y.value,code:x.value,copy:e.unref(p),copied:e.unref(k),collapsed:h.value,toggleCollapse:g},()=>[e.createElementVNode("div",t,[e.createElementVNode("button",{class:e.normalizeClass(["x-md-collapse-btn",{"x-md-collapse-btn--collapsed":h.value}]),onClick:g,title:h.value?"展开代码":"折叠代码"},[...m[1]||(m[1]=[e.createElementVNode("svg",{class:"x-md-collapse-icon",viewBox:"0 0 24 24",width:"14",height:"14",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[e.createElementVNode("polyline",{points:"6 9 12 15 18 9"})],-1)])],10,c),e.createElementVNode("span",n,e.toDisplayString(y.value),1)]),e.createElementVNode("div",d,[e.renderSlot(o.$slots,"codeActions",{code:x.value,copy:e.unref(p),copied:e.unref(k)},()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(C.value,o=>(e.openBlock(),e.createElementBlock("button",{key:o.key,class:e.normalizeClass(["x-md-action-btn",[o.class,{"x-md-action-btn--disabled":o.disabled}]]),style:e.normalizeStyle(o.style),title:o.title,disabled:o.disabled,onClick:e=>function(e){e.disabled||e.onClick?.(b.value)}(o)},[o.icon?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(w(o)),{key:0})):e.createCommentVNode("",!0)],14,r))),128)),e.createElementVNode("button",{class:e.normalizeClass(["x-md-copy-btn",{"x-md-copy-btn--copied":e.unref(k)}]),onClick:m[0]||(m[0]=o=>e.unref(p)(x.value))},[e.unref(k)?(e.openBlock(),e.createElementBlock("svg",s,[...m[2]||(m[2]=[e.createElementVNode("path",{fill:"currentColor",d:"M406.656 706.944 195.84 496.256a32 32 0 1 0-45.248 45.248l256 256 512-512a32 32 0 0 0-45.248-45.248L406.592 706.944z"},null,-1)])])):(e.openBlock(),e.createElementBlock("svg",i,[...m[3]||(m[3]=[e.createElementVNode("path",{fill:"currentColor",d:"M768 832a128 128 0 0 1-128 128H192A128 128 0 0 1 64 832V384a128 128 0 0 1 128-128v64a64 64 0 0 0-64 64v448a64 64 0 0 0 64 64h448a64 64 0 0 0 64-64z"},null,-1),e.createElementVNode("path",{fill:"currentColor",d:"M384 128a64 64 0 0 0-64 64v448a64 64 0 0 0 64 64h448a64 64 0 0 0 64-64V192a64 64 0 0 0-64-64zm0-64h448a128 128 0 0 1 128 128v448a128 128 0 0 1-128 128H384a128 128 0 0 1-128-128V192A128 128 0 0 1 384 64"},null,-1)])]))],2)],!0)])],!0)])],2)):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass(["x-md-code-body",{"x-md-code-body--collapsed":h.value}])},[e.createVNode(l.default,{ref_key:"syntaxCodeBlockRef",ref:v,code:x.value,language:y.value,"light-theme":f.lightTheme,"dark-theme":f.darkTheme,"is-dark":f.isDark,"color-replacements":f.colorReplacements,"code-max-height":f.codeMaxHeight,"enable-animate":f.enableAnimate},null,8,["code","language","light-theme","dark-theme","is-dark","color-replacements","code-max-height","enable-animate"])],2)],2))}});exports.default=u;
1
+ 'use strict';
2
+
3
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } });
4
+
5
+ const index_vue_vue_type_script_setup_true_lang = require('./x-markdown.cjs23.js');
6
+ ;/* empty css */
7
+ const _pluginVue_exportHelper = require('./x-markdown.cjs22.js');
8
+
9
+ const CodeLine = /* @__PURE__ */ _pluginVue_exportHelper.default(index_vue_vue_type_script_setup_true_lang.default, [["__scopeId", "data-v-d2fd90dc"]]);
10
+
11
+ exports.default = CodeLine;
2
12
  //# sourceMappingURL=x-markdown.cjs19.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"x-markdown.cjs19.js","sources":["../src/components/CodeBlock/index.vue"],"sourcesContent":["<template>\r\n <div class=\"x-md-code-block\" :class=\"{ 'x-md-code-block--dark': props.isDark }\">\r\n <!-- 头部区域:支持完全自定义或默认渲染 -->\r\n <div\r\n v-if=\"showCodeBlockHeader\"\r\n class=\"x-md-code-header-wrapper\"\r\n :class=\"[{'x-md-code-header-wrapper--sticky': props.stickyCodeBlockHeader }, { 'x-md-code-header-wrapper--collapsed': collapsed }]\"\r\n >\r\n <div class=\"x-md-code-header\">\r\n <slot\r\n name=\"codeHeader\"\r\n :language=\"language\"\r\n :code=\"code\"\r\n :copy=\"copy\"\r\n :copied=\"copied\"\r\n :collapsed=\"collapsed\"\r\n :toggleCollapse=\"toggleCollapse\"\r\n >\r\n <div class=\"x-md-code-header__left\">\r\n <button\r\n class=\"x-md-collapse-btn\"\r\n :class=\"{ 'x-md-collapse-btn--collapsed': collapsed }\"\r\n @click=\"toggleCollapse\"\r\n :title=\"collapsed ? '展开代码' : '折叠代码'\"\r\n >\r\n <svg\r\n class=\"x-md-collapse-icon\"\r\n viewBox=\"0 0 24 24\"\r\n width=\"14\"\r\n height=\"14\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n >\r\n <polyline points=\"6 9 12 15 18 9\"></polyline>\r\n </svg>\r\n </button>\r\n <span class=\"x-md-code-lang\">{{ language }}</span>\r\n </div>\r\n <div class=\"x-md-code-header__right\">\r\n <slot name=\"codeActions\" :code=\"code\" :copy=\"copy\" :copied=\"copied\">\r\n <button\r\n v-for=\"action in filteredActions\"\r\n :key=\"action.key\"\r\n class=\"x-md-action-btn\"\r\n :class=\"[action.class, { 'x-md-action-btn--disabled': action.disabled }]\"\r\n :style=\"action.style\"\r\n :title=\"action.title\"\r\n :disabled=\"action.disabled\"\r\n @click=\"handleActionClick(action)\"\r\n >\r\n <component :is=\"renderActionIcon(action)\" v-if=\"action.icon\" />\r\n </button>\r\n <button class=\"x-md-copy-btn\" :class=\"{ 'x-md-copy-btn--copied': copied }\" @click=\"copy(code)\">\r\n <svg\r\n v-if=\"copied\"\r\n class=\"x-md-copy-icon\"\r\n width=\"16\"\r\n height=\"16\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 1024 1024\"\r\n >\r\n <path\r\n fill=\"currentColor\"\r\n d=\"M406.656 706.944 195.84 496.256a32 32 0 1 0-45.248 45.248l256 256 512-512a32 32 0 0 0-45.248-45.248L406.592 706.944z\"\r\n />\r\n </svg>\r\n <svg\r\n v-else\r\n class=\"x-md-copy-icon\"\r\n width=\"16\"\r\n height=\"16\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 1024 1024\"\r\n >\r\n <path\r\n fill=\"currentColor\"\r\n d=\"M768 832a128 128 0 0 1-128 128H192A128 128 0 0 1 64 832V384a128 128 0 0 1 128-128v64a64 64 0 0 0-64 64v448a64 64 0 0 0 64 64h448a64 64 0 0 0 64-64z\"\r\n />\r\n <path\r\n fill=\"currentColor\"\r\n d=\"M384 128a64 64 0 0 0-64 64v448a64 64 0 0 0 64 64h448a64 64 0 0 0 64-64V192a64 64 0 0 0-64-64zm0-64h448a128 128 0 0 1 128 128v448a128 128 0 0 1-128 128H384a128 128 0 0 1-128-128V192A128 128 0 0 1 384 64\"\r\n />\r\n </svg>\r\n </button>\r\n </slot>\r\n </div>\r\n </slot>\r\n </div>\r\n </div>\r\n <div class=\"x-md-code-body\" :class=\"{ 'x-md-code-body--collapsed': collapsed }\">\r\n <SyntaxCodeBlock\r\n ref=\"syntaxCodeBlockRef\"\r\n :code=\"code\"\r\n :language=\"language\"\r\n :light-theme=\"props.lightTheme\"\r\n :dark-theme=\"props.darkTheme\"\r\n :is-dark=\"props.isDark\"\r\n :color-replacements=\"props.colorReplacements\"\r\n :code-max-height=\"props.codeMaxHeight\"\r\n :enable-animate=\"props.enableAnimate\"\r\n />\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { computed, ref, h, type VNode } from 'vue'\r\nimport { useClipboard } from '@vueuse/core'\r\nimport type { CodeBlockProps, CodeBlockAction, CodeBlockSlotProps } from './types'\r\nimport SyntaxCodeBlock from './SyntaxCodeBlock.vue'\r\n\r\ndefineOptions({\r\n name: 'CodeBlock',\r\n})\r\n\r\nconst { copy, copied } = useClipboard({ copiedDuring: 2000 })\r\n\r\nconst collapsed = ref(false)\r\n\r\nconst syntaxCodeBlockRef = ref<InstanceType<typeof SyntaxCodeBlock> | null>(null)\r\n\r\nconst toggleCollapse = () => {\r\n collapsed.value = !collapsed.value\r\n}\r\n\r\nconst props = withDefaults(defineProps<CodeBlockProps>(), {\r\n lightTheme: 'vitesse-light',\r\n darkTheme: 'vitesse-dark',\r\n isDark: false,\r\n showCodeBlockHeader: true,\r\n enableAnimate: false,\r\n codeBlockActions: undefined,\r\n stickyCodeBlockHeader: true,\r\n})\r\n\r\nconst code = computed(() => props.code.trim())\r\n\r\nconst language = computed(() => props.language || 'text')\r\n\r\nconst normalizedActions = computed<CodeBlockAction[]>(() => {\r\n return props.codeBlockActions || []\r\n})\r\n\r\nconst filteredActions = computed<CodeBlockAction[]>(() => {\r\n return normalizedActions.value.filter((action) => {\r\n if (!action.show) return true\r\n return action.show(slotProps.value)\r\n })\r\n})\r\n\r\nconst slotProps = computed<CodeBlockSlotProps>(() => ({\r\n language: language.value,\r\n code: code.value,\r\n copy,\r\n copied: copied.value,\r\n collapsed: collapsed.value,\r\n toggleCollapse,\r\n}))\r\n\r\nfunction renderActionIcon(action: CodeBlockAction): VNode | null {\r\n if (!action.icon) return null\r\n\r\n if (typeof action.icon === 'string') {\r\n return h('span', {\r\n class: 'x-md-action-icon',\r\n innerHTML: action.icon,\r\n })\r\n }\r\n\r\n if (typeof action.icon === 'function') {\r\n try {\r\n const result = (action.icon as (props: CodeBlockSlotProps) => VNode)(slotProps.value)\r\n if (result && typeof result === 'object' && '__v_isVNode' in result) {\r\n return result\r\n }\r\n } catch {\r\n // ignore\r\n }\r\n return h(action.icon as any)\r\n }\r\n\r\n return h(action.icon as any)\r\n}\r\n\r\nfunction handleActionClick(action: CodeBlockAction) {\r\n if (action.disabled) return\r\n action.onClick?.(slotProps.value)\r\n}\r\n\r\ndefineExpose({\r\n copy,\r\n copied,\r\n collapsed,\r\n toggleCollapse,\r\n syntaxCodeBlockRef,\r\n})\r\n</script>\r\n\r\n<style scoped>\r\n.x-md-code-block {\r\n border-radius: 8px;\r\n overflow: hidden;\r\n font-size: 0;\r\n background: rgba(0, 0, 0, 0.03);\r\n}\r\n\r\n.x-md-code-block.x-md-code-block--dark {\r\n background: rgba(255, 255, 255, 0.13);\r\n}\r\n\r\n.x-md-code-header-wrapper--sticky {\r\n background: #fff;\r\n position: sticky;\r\n top: 0;\r\n}\r\n\r\n.x-md-code-block.x-md-code-block--dark .x-md-code-header-wrapper--sticky {\r\n background: #1a1a1a;\r\n}\r\n\r\n.x-md-code-header {\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n padding: 8px 16px;\r\n background: rgba(0, 0, 0, 0.05);\r\n color: #333;\r\n}\r\n\r\n.x-md-code-block .x-md-code-header-wrapper--sticky .x-md-code-header{\r\n background: rgba(235, 235, 235);\r\n border-radius: 8px 8px 0 0;\r\n}\r\n\r\n.x-md-code-block:has(.x-md-code-header-wrapper--sticky) {\r\n overflow: visible;\r\n}\r\n\r\n.x-md-code-block.x-md-code-block--dark .x-md-code-header {\r\n background: rgba(0, 0, 0, 0.25);\r\n color: #fff;\r\n}\r\n\r\n.x-md-code-block.x-md-code-block--dark .x-md-code-header-wrapper--sticky .x-md-code-header {\r\n background: rgba(44, 44, 44);\r\n}\r\n\r\n.x-md-code-block .x-md-code-header-wrapper--collapsed .x-md-code-header {\r\n border-radius: 8px;\r\n}\r\n\r\n.x-md-code-header__left,\r\n.x-md-code-header__right {\r\n display: flex;\r\n align-items: center;\r\n gap: 8px;\r\n}\r\n\r\n.x-md-code-lang {\r\n font-size: 12px;\r\n font-weight: 500;\r\n opacity: 0.6;\r\n text-transform: lowercase;\r\n}\r\n\r\n.x-md-copy-btn {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n width: 28px;\r\n height: 28px;\r\n padding: 0;\r\n border: none;\r\n border-radius: 4px;\r\n background: transparent;\r\n color: inherit;\r\n cursor: pointer;\r\n opacity: 0.7;\r\n transition: all 0.2s ease;\r\n}\r\n\r\n.x-md-copy-btn:hover {\r\n opacity: 1;\r\n background: rgba(0, 0, 0, 0.08);\r\n}\r\n\r\n.x-md-code-block.x-md-code-block--dark .x-md-copy-btn:hover {\r\n background: rgba(255, 255, 255, 0.1);\r\n}\r\n\r\n.x-md-copy-btn.x-md-copy-btn--copied {\r\n opacity: 1;\r\n color: #22c55e;\r\n}\r\n\r\n.x-md-copy-icon {\r\n flex-shrink: 0;\r\n}\r\n\r\n.x-md-action-btn {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n width: 28px;\r\n height: 28px;\r\n padding: 0;\r\n border: none;\r\n border-radius: 4px;\r\n background: transparent;\r\n color: inherit;\r\n cursor: pointer;\r\n opacity: 0.7;\r\n transition: all 0.2s ease;\r\n}\r\n\r\n.x-md-action-btn:hover {\r\n opacity: 1;\r\n background: rgba(0, 0, 0, 0.08);\r\n}\r\n\r\n.x-md-code-block.x-md-code-block--dark .x-md-action-btn:hover {\r\n background: rgba(255, 255, 255, 0.1);\r\n}\r\n\r\n.x-md-action-btn.x-md-action-btn--disabled {\r\n opacity: 0.3;\r\n cursor: not-allowed;\r\n pointer-events: none;\r\n}\r\n\r\n.x-md-action-icon {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n}\r\n\r\n.x-md-action-icon :deep(svg) {\r\n width: 16px;\r\n height: 16px;\r\n flex-shrink: 0;\r\n}\r\n\r\n.x-md-collapse-btn {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n width: 20px;\r\n height: 20px;\r\n padding: 0;\r\n border: none;\r\n border-radius: 4px;\r\n background: transparent;\r\n color: inherit;\r\n cursor: pointer;\r\n opacity: 0.5;\r\n transition: all 0.2s ease;\r\n}\r\n\r\n.x-md-collapse-btn:hover {\r\n opacity: 1;\r\n background: rgba(0, 0, 0, 0.08);\r\n}\r\n\r\n.x-md-code-block.x-md-code-block--dark .x-md-collapse-btn:hover {\r\n background: rgba(255, 255, 255, 0.1);\r\n}\r\n\r\n.x-md-collapse-icon {\r\n transition: transform 0.2s ease;\r\n}\r\n\r\n.x-md-collapse-btn--collapsed .x-md-collapse-icon {\r\n transform: rotate(-90deg);\r\n}\r\n\r\n.x-md-code-body {\r\n overflow: hidden;\r\n transition:\r\n max-height 0.3s ease,\r\n opacity 0.2s ease;\r\n}\r\n\r\n.x-md-code-body--collapsed {\r\n max-height: 0 !important;\r\n opacity: 0;\r\n}\r\n</style>"],"names":["copy","copied","useClipboard","copiedDuring","collapsed","ref","syntaxCodeBlockRef","toggleCollapse","value","props","__props","code","computed","trim","language","normalizedActions","codeBlockActions","filteredActions","filter","action","show","slotProps","renderActionIcon","icon","h","class","innerHTML","result","__expose","_createElementBlock","_normalizeClass","isDark","showCodeBlockHeader","stickyCodeBlockHeader","_createElementVNode","_hoisted_1","_renderSlot","_ctx","$slots","_unref","_hoisted_2","onClick","title","viewBox","width","height","fill","stroke","points","_hoisted_4","_toDisplayString","_hoisted_5","_Fragment","_renderList","key","disabled","style","_normalizeStyle","$event","handleActionClick","_createBlock","_resolveDynamicComponent","_cache","_openBlock","_hoisted_7","d","_hoisted_8","_createVNode","SyntaxCodeBlock","lightTheme","darkTheme","colorReplacements","codeMaxHeight","enableAnimate"],"mappings":"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"}
1
+ {"version":3,"file":"x-markdown.cjs19.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;"}
@@ -1,2 +1,87 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),s=require("./x-markdown.cjs4.js"),t=require("./x-markdown.cjs5.js"),r={markdown:{type:String,default:""},customAttrs:{type:Object,default:()=>({})},remarkPlugins:{type:Array,default:()=>[]},rehypePlugins:{type:Array,default:()=>[]},rehypeOptions:{type:Object,default:()=>({})},sanitize:{type:Boolean,default:!1},sanitizeOptions:{type:Object,default:()=>({})}},n=e.defineComponent({name:"VueMarkdown",props:r,setup(r,{slots:n,attrs:a}){const{markdown:o,remarkPlugins:u,rehypePlugins:i,rehypeOptions:l,sanitize:p,sanitizeOptions:y,customAttrs:c}=e.toRefs(r),{processor:d}=t.useMarkdownProcessor({remarkPlugins:u,rehypePlugins:i,rehypeOptions:l,sanitize:p,sanitizeOptions:y});return()=>{const e=d.value.parse(o.value),t=d.value.runSync(e);return s.render(t,a,n,c.value)}}}),a=e.defineComponent({name:"VueMarkdownAsync",props:r,async setup(r,{slots:n,attrs:a}){const{markdown:o,remarkPlugins:u,rehypePlugins:i,rehypeOptions:l,sanitize:p,sanitizeOptions:y,customAttrs:c}=e.toRefs(r),{processor:d}=t.useMarkdownProcessor({remarkPlugins:u,rehypePlugins:i,rehypeOptions:l,sanitize:p,sanitizeOptions:y}),m=e.shallowRef(null),k=async()=>{const e=d.value.parse(o.value);m.value=await d.value.run(e)};return e.watch(()=>[o.value,d.value],k,{flush:"sync"}),await k(),()=>m.value?s.render(m.value,a,n,c.value):null}});exports.VueMarkdown=n,exports.VueMarkdownAsync=a;
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
+
5
+ const vue = require('vue');
6
+ const hastToVnode = require('./x-markdown.cjs4.js');
7
+ const useProcessor = require('./x-markdown.cjs5.js');
8
+
9
+ const sharedProps = {
10
+ markdown: {
11
+ type: String,
12
+ default: ""
13
+ },
14
+ customAttrs: {
15
+ type: Object,
16
+ default: () => ({})
17
+ },
18
+ remarkPlugins: {
19
+ type: Array,
20
+ default: () => []
21
+ },
22
+ rehypePlugins: {
23
+ type: Array,
24
+ default: () => []
25
+ },
26
+ rehypeOptions: {
27
+ type: Object,
28
+ default: () => ({})
29
+ },
30
+ sanitize: {
31
+ type: Boolean,
32
+ default: false
33
+ },
34
+ sanitizeOptions: {
35
+ type: Object,
36
+ default: () => ({})
37
+ }
38
+ };
39
+ const vueMarkdownImpl = vue.defineComponent({
40
+ name: "VueMarkdown",
41
+ props: sharedProps,
42
+ setup(props, { slots, attrs }) {
43
+ const { markdown, remarkPlugins, rehypePlugins, rehypeOptions, sanitize, sanitizeOptions, customAttrs } = vue.toRefs(props);
44
+ const { processor } = useProcessor.useMarkdownProcessor({
45
+ remarkPlugins,
46
+ rehypePlugins,
47
+ rehypeOptions,
48
+ sanitize,
49
+ sanitizeOptions
50
+ });
51
+ return () => {
52
+ const mdast = processor.value.parse(markdown.value);
53
+ const hast = processor.value.runSync(mdast);
54
+ return hastToVnode.render(hast, attrs, slots, customAttrs.value);
55
+ };
56
+ }
57
+ });
58
+ const vueMarkdownAsyncImpl = vue.defineComponent({
59
+ name: "VueMarkdownAsync",
60
+ props: sharedProps,
61
+ async setup(props, { slots, attrs }) {
62
+ const { markdown, remarkPlugins, rehypePlugins, rehypeOptions, sanitize, sanitizeOptions, customAttrs } = vue.toRefs(props);
63
+ const { processor } = useProcessor.useMarkdownProcessor({
64
+ remarkPlugins,
65
+ rehypePlugins,
66
+ rehypeOptions,
67
+ sanitize,
68
+ sanitizeOptions
69
+ });
70
+ const hast = vue.shallowRef(null);
71
+ const process = async () => {
72
+ const mdast = processor.value.parse(markdown.value);
73
+ hast.value = await processor.value.run(mdast);
74
+ };
75
+ vue.watch(() => [markdown.value, processor.value], process, { flush: "sync" });
76
+ await process();
77
+ return () => {
78
+ return hast.value ? hastToVnode.render(hast.value, attrs, slots, customAttrs.value) : null;
79
+ };
80
+ }
81
+ });
82
+ const VueMarkdown = vueMarkdownImpl;
83
+ const VueMarkdownAsync = vueMarkdownAsyncImpl;
84
+
85
+ exports.VueMarkdown = VueMarkdown;
86
+ exports.VueMarkdownAsync = VueMarkdownAsync;
2
87
  //# sourceMappingURL=x-markdown.cjs2.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"x-markdown.cjs2.js","sources":["../src/core/components.ts"],"sourcesContent":["import type { Root } from 'hast'\r\nimport type { Options as TRehypeOptions } from 'mdast-util-to-hast'\r\nimport type { PluggableList } from 'unified'\r\nimport type { PropType } from 'vue'\r\n\r\nimport type { CustomAttrs, SanitizeOptions, TVueMarkdown } from './types'\r\nimport { defineComponent, shallowRef, toRefs, watch } from 'vue'\r\n// import { useMarkdownContext } from '../components/MarkdownProvider';\r\nimport { render } from './hast-to-vnode'\r\nimport { useMarkdownProcessor } from './useProcessor'\r\n\r\nexport type { CustomAttrs, SanitizeOptions, TVueMarkdown }\r\n\r\nconst sharedProps = {\r\n markdown: {\r\n type: String as PropType<string>,\r\n default: '',\r\n },\r\n customAttrs: {\r\n type: Object as PropType<CustomAttrs>,\r\n default: () => ({}),\r\n },\r\n remarkPlugins: {\r\n type: Array as PropType<PluggableList>,\r\n default: () => [],\r\n },\r\n rehypePlugins: {\r\n type: Array as PropType<PluggableList>,\r\n default: () => [],\r\n },\r\n rehypeOptions: {\r\n type: Object as PropType<Omit<TRehypeOptions, 'file'>>,\r\n default: () => ({}),\r\n },\r\n sanitize: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n sanitizeOptions: {\r\n type: Object as PropType<SanitizeOptions>,\r\n default: () => ({}),\r\n },\r\n}\r\nconst vueMarkdownImpl = defineComponent({\r\n name: 'VueMarkdown',\r\n props: sharedProps,\r\n setup(props, { slots, attrs }) {\r\n const { markdown, remarkPlugins, rehypePlugins, rehypeOptions, sanitize, sanitizeOptions, customAttrs } =\r\n toRefs(props)\r\n\r\n const { processor } = useMarkdownProcessor({\r\n remarkPlugins,\r\n rehypePlugins,\r\n rehypeOptions,\r\n sanitize,\r\n sanitizeOptions,\r\n })\r\n\r\n return () => {\r\n const mdast = processor.value.parse(markdown.value)\r\n const hast = processor.value.runSync(mdast) as Root\r\n return render(hast, attrs, slots, customAttrs.value)\r\n }\r\n },\r\n})\r\n\r\nconst vueMarkdownAsyncImpl = defineComponent({\r\n name: 'VueMarkdownAsync',\r\n props: sharedProps,\r\n async setup(props, { slots, attrs }) {\r\n const { markdown, remarkPlugins, rehypePlugins, rehypeOptions, sanitize, sanitizeOptions, customAttrs } =\r\n toRefs(props)\r\n const { processor } = useMarkdownProcessor({\r\n remarkPlugins,\r\n rehypePlugins,\r\n rehypeOptions,\r\n sanitize,\r\n sanitizeOptions,\r\n })\r\n\r\n const hast = shallowRef<Root | null>(null)\r\n const process = async (): Promise<void> => {\r\n const mdast = processor.value.parse(markdown.value)\r\n hast.value = (await processor.value.run(mdast)) as Root\r\n }\r\n\r\n watch(() => [markdown.value, processor.value], process, { flush: 'sync' })\r\n\r\n await process()\r\n\r\n return () => {\r\n return hast.value ? render(hast.value, attrs, slots, customAttrs.value) : null\r\n }\r\n },\r\n})\r\n\r\n// export the public type for h/tsx inference\r\n// also to avoid inline import() in generated d.ts files\r\nexport const VueMarkdown: TVueMarkdown = vueMarkdownImpl as any\r\n\r\n// export the public type for h/tsx inference\r\n// also to avoid inline import() in generated d.ts files\r\nexport const VueMarkdownAsync: TVueMarkdown = vueMarkdownAsyncImpl as any\r\n"],"names":["sharedProps","markdown","type","String","default","customAttrs","Object","remarkPlugins","Array","rehypePlugins","rehypeOptions","sanitize","Boolean","sanitizeOptions","VueMarkdown","defineComponent","name","props","setup","slots","attrs","toRefs","processor","useMarkdownProcessor","mdast","value","parse","hast","runSync","render","VueMarkdownAsync","shallowRef","process","async","run","watch","flush"],"mappings":"2KAaMA,EAAc,CAClBC,SAAU,CACRC,KAAMC,OACNC,QAAS,IAEXC,YAAa,CACXH,KAAMI,OACNF,QAAS,MAAO,IAElBG,cAAe,CACbL,KAAMM,MACNJ,QAAS,IAAM,IAEjBK,cAAe,CACbP,KAAMM,MACNJ,QAAS,IAAM,IAEjBM,cAAe,CACbR,KAAMI,OACNF,QAAS,MAAO,IAElBO,SAAU,CACRT,KAAMU,QACNR,SAAS,GAEXS,gBAAiB,CACfX,KAAMI,OACNF,QAAS,MAAO,KA0DPU,EAvDWC,EAAAA,gBAAgB,CACtCC,KAAM,cACNC,MAAOjB,EACP,KAAAkB,CAAMD,GAAOE,MAAEA,EAAAC,MAAOA,IACpB,MAAMnB,SAAEA,EAAAM,cAAUA,EAAAE,cAAeA,EAAAC,cAAeA,EAAAC,SAAeA,EAAAE,gBAAUA,EAAAR,YAAiBA,GACxFgB,EAAAA,OAAOJ,IAEHK,UAAEA,GAAcC,uBAAqB,CACzChB,gBACAE,gBACAC,gBACAC,WACAE,oBAGF,MAAO,KACL,MAAMW,EAAQF,EAAUG,MAAMC,MAAMzB,EAASwB,OACvCE,EAAOL,EAAUG,MAAMG,QAAQJ,GACrC,OAAOK,EAAAA,OAAOF,EAAMP,EAAOD,EAAOd,EAAYoB,OAElD,IAuCWK,EApCgBf,EAAAA,gBAAgB,CAC3CC,KAAM,mBACNC,MAAOjB,EACP,WAAMkB,CAAMD,GAAOE,MAAEA,EAAAC,MAAOA,IAC1B,MAAMnB,SAAEA,EAAAM,cAAUA,EAAAE,cAAeA,EAAAC,cAAeA,EAAAC,SAAeA,EAAAE,gBAAUA,EAAAR,YAAiBA,GACxFgB,EAAAA,OAAOJ,IACHK,UAAEA,GAAcC,uBAAqB,CACzChB,gBACAE,gBACAC,gBACAC,WACAE,oBAGIc,EAAOI,EAAAA,WAAwB,MAC/BC,EAAUC,UACd,MAAMT,EAAQF,EAAUG,MAAMC,MAAMzB,EAASwB,OAC7CE,EAAKF,YAAeH,EAAUG,MAAMS,IAAIV,IAO1C,OAJAW,EAAAA,MAAM,IAAM,CAAClC,EAASwB,MAAOH,EAAUG,OAAQO,EAAS,CAAEI,MAAO,eAE3DJ,IAEC,IACEL,EAAKF,MAAQI,EAAAA,OAAOF,EAAKF,MAAOL,EAAOD,EAAOd,EAAYoB,OAAS,IAE9E"}
1
+ {"version":3,"file":"x-markdown.cjs2.js","sources":["../src/core/components.ts"],"sourcesContent":["import type { Root } from 'hast'\r\nimport type { Options as TRehypeOptions } from 'mdast-util-to-hast'\r\nimport type { PluggableList } from 'unified'\r\nimport type { PropType } from 'vue'\r\n\r\nimport type { CustomAttrs, SanitizeOptions, TVueMarkdown } from './types'\r\nimport { defineComponent, shallowRef, toRefs, watch } from 'vue'\r\n// import { useMarkdownContext } from '../components/MarkdownProvider';\r\nimport { render } from './hast-to-vnode'\r\nimport { useMarkdownProcessor } from './useProcessor'\r\n\r\nexport type { CustomAttrs, SanitizeOptions, TVueMarkdown }\r\n\r\nconst sharedProps = {\r\n markdown: {\r\n type: String as PropType<string>,\r\n default: '',\r\n },\r\n customAttrs: {\r\n type: Object as PropType<CustomAttrs>,\r\n default: () => ({}),\r\n },\r\n remarkPlugins: {\r\n type: Array as PropType<PluggableList>,\r\n default: () => [],\r\n },\r\n rehypePlugins: {\r\n type: Array as PropType<PluggableList>,\r\n default: () => [],\r\n },\r\n rehypeOptions: {\r\n type: Object as PropType<Omit<TRehypeOptions, 'file'>>,\r\n default: () => ({}),\r\n },\r\n sanitize: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n sanitizeOptions: {\r\n type: Object as PropType<SanitizeOptions>,\r\n default: () => ({}),\r\n },\r\n}\r\nconst vueMarkdownImpl = defineComponent({\r\n name: 'VueMarkdown',\r\n props: sharedProps,\r\n setup(props, { slots, attrs }) {\r\n const { markdown, remarkPlugins, rehypePlugins, rehypeOptions, sanitize, sanitizeOptions, customAttrs } =\r\n toRefs(props)\r\n\r\n const { processor } = useMarkdownProcessor({\r\n remarkPlugins,\r\n rehypePlugins,\r\n rehypeOptions,\r\n sanitize,\r\n sanitizeOptions,\r\n })\r\n\r\n return () => {\r\n const mdast = processor.value.parse(markdown.value)\r\n const hast = processor.value.runSync(mdast) as Root\r\n return render(hast, attrs, slots, customAttrs.value)\r\n }\r\n },\r\n})\r\n\r\nconst vueMarkdownAsyncImpl = defineComponent({\r\n name: 'VueMarkdownAsync',\r\n props: sharedProps,\r\n async setup(props, { slots, attrs }) {\r\n const { markdown, remarkPlugins, rehypePlugins, rehypeOptions, sanitize, sanitizeOptions, customAttrs } =\r\n toRefs(props)\r\n const { processor } = useMarkdownProcessor({\r\n remarkPlugins,\r\n rehypePlugins,\r\n rehypeOptions,\r\n sanitize,\r\n sanitizeOptions,\r\n })\r\n\r\n const hast = shallowRef<Root | null>(null)\r\n const process = async (): Promise<void> => {\r\n const mdast = processor.value.parse(markdown.value)\r\n hast.value = (await processor.value.run(mdast)) as Root\r\n }\r\n\r\n watch(() => [markdown.value, processor.value], process, { flush: 'sync' })\r\n\r\n await process()\r\n\r\n return () => {\r\n return hast.value ? render(hast.value, attrs, slots, customAttrs.value) : null\r\n }\r\n },\r\n})\r\n\r\n// export the public type for h/tsx inference\r\n// also to avoid inline import() in generated d.ts files\r\nexport const VueMarkdown: TVueMarkdown = vueMarkdownImpl as any\r\n\r\n// export the public type for h/tsx inference\r\n// also to avoid inline import() in generated d.ts files\r\nexport const VueMarkdownAsync: TVueMarkdown = vueMarkdownAsyncImpl as any\r\n"],"names":["defineComponent","toRefs","useMarkdownProcessor","render","shallowRef","watch"],"mappings":"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"}