@eternalheart/react-file-preview 1.5.0 → 1.5.1

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 (48) hide show
  1. package/lib/chunks/{index-FomaQSaL.mjs → index-BBYKNNLb.mjs} +2 -2
  2. package/lib/chunks/{index-FomaQSaL.mjs.map → index-BBYKNNLb.mjs.map} +1 -1
  3. package/lib/chunks/{index-Dc6q1OKl.mjs → index-BFh22D_W.mjs} +3 -3
  4. package/lib/chunks/{index-Dc6q1OKl.mjs.map → index-BFh22D_W.mjs.map} +1 -1
  5. package/lib/chunks/{index-_B5marES.mjs → index-BKXvtJh5.mjs} +2 -2
  6. package/lib/chunks/{index-_B5marES.mjs.map → index-BKXvtJh5.mjs.map} +1 -1
  7. package/lib/chunks/{index-CuWzRQZw.mjs → index-Bw3Fh4b5.mjs} +2 -2
  8. package/lib/chunks/{index-CuWzRQZw.mjs.map → index-Bw3Fh4b5.mjs.map} +1 -1
  9. package/lib/chunks/{index-D-Is8qvU.mjs → index-CEC_DHgr.mjs} +2 -2
  10. package/lib/chunks/{index-D-Is8qvU.mjs.map → index-CEC_DHgr.mjs.map} +1 -1
  11. package/lib/chunks/{index-CKdQL1Bk.mjs → index-COOUxB5e.mjs} +2 -2
  12. package/lib/chunks/{index-CKdQL1Bk.mjs.map → index-COOUxB5e.mjs.map} +1 -1
  13. package/lib/chunks/{index-Bdj8_B80.mjs → index-CU1Lc3lV.mjs} +3 -3
  14. package/lib/chunks/{index-Bdj8_B80.mjs.map → index-CU1Lc3lV.mjs.map} +1 -1
  15. package/lib/chunks/{index-Da3FN2-3.mjs → index-CgFv7B_G.mjs} +3 -3
  16. package/lib/chunks/{index-Da3FN2-3.mjs.map → index-CgFv7B_G.mjs.map} +1 -1
  17. package/lib/chunks/index-Cn4ZyhGM.mjs +587 -0
  18. package/lib/chunks/index-Cn4ZyhGM.mjs.map +1 -0
  19. package/lib/chunks/{index-OXjOFggq.mjs → index-DGNNEnWE.mjs} +2 -2
  20. package/lib/chunks/{index-OXjOFggq.mjs.map → index-DGNNEnWE.mjs.map} +1 -1
  21. package/lib/chunks/{index-CuTz7dbd.mjs → index-DLk08ylq.mjs} +2 -2
  22. package/lib/chunks/{index-CuTz7dbd.mjs.map → index-DLk08ylq.mjs.map} +1 -1
  23. package/lib/chunks/{index-WLepq2g2.mjs → index-DVtPyN-s.mjs} +3 -3
  24. package/lib/chunks/{index-WLepq2g2.mjs.map → index-DVtPyN-s.mjs.map} +1 -1
  25. package/lib/chunks/{index-Cz23v-TW.mjs → index-DreA69iU.mjs} +20 -20
  26. package/lib/chunks/{index-Cz23v-TW.mjs.map → index-DreA69iU.mjs.map} +1 -1
  27. package/lib/chunks/{index-CTghYlSh.mjs → index-Dta7iGov.mjs} +2 -2
  28. package/lib/chunks/{index-CTghYlSh.mjs.map → index-Dta7iGov.mjs.map} +1 -1
  29. package/lib/chunks/{index-CQYrhe7Z.mjs → index-fQGAUFAX.mjs} +2 -2
  30. package/lib/chunks/{index-CQYrhe7Z.mjs.map → index-fQGAUFAX.mjs.map} +1 -1
  31. package/lib/chunks/{index-DzCLf1Db.mjs → index-fSw6Hl5e.mjs} +2 -2
  32. package/lib/chunks/{index-DzCLf1Db.mjs.map → index-fSw6Hl5e.mjs.map} +1 -1
  33. package/lib/chunks/{index-2sX2d4iv.mjs → index-jvNrkVkp.mjs} +2 -2
  34. package/lib/chunks/{index-2sX2d4iv.mjs.map → index-jvNrkVkp.mjs.map} +1 -1
  35. package/lib/chunks/{index-CCcZzLUM.mjs → index-oVJyD-FV.mjs} +2 -2
  36. package/lib/chunks/{index-CCcZzLUM.mjs.map → index-oVJyD-FV.mjs.map} +1 -1
  37. package/lib/chunks/{index-CRZqNMQ7.mjs → index-vRLKumL8.mjs} +2 -2
  38. package/lib/chunks/{index-CRZqNMQ7.mjs.map → index-vRLKumL8.mjs.map} +1 -1
  39. package/lib/chunks/{useShikiHighlight-Bbs8Fbqs.mjs → useShikiHighlight-C6nJcETW.mjs} +2 -2
  40. package/lib/chunks/{useShikiHighlight-Bbs8Fbqs.mjs.map → useShikiHighlight-C6nJcETW.mjs.map} +1 -1
  41. package/lib/index.cjs +20 -20
  42. package/lib/index.cjs.map +1 -1
  43. package/lib/index.css +1 -1
  44. package/lib/index.mjs +1 -1
  45. package/lib/renderers/Audio/index.d.ts.map +1 -1
  46. package/package.json +1 -1
  47. package/lib/chunks/index-DoGKcq9y.mjs +0 -531
  48. package/lib/chunks/index-DoGKcq9y.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"useShikiHighlight-Bbs8Fbqs.mjs","sources":["../../src/hooks/useShikiHighlight.ts"],"sourcesContent":["import { useState, useEffect } from 'react';\nimport { codeToHtml, type ShikiTransformer } from 'shiki';\nimport { useResolvedTheme } from '../ThemeContext';\n\n/**\n * 用 shiki 把代码高亮成 HTML(与 vue-file-preview 同引擎、同主题,保证两端视觉一致)。\n *\n * - dark 主题用 `dark-plus`(VSCode Dark Plus)\n * - light 主题用 `github-light`(GitHub Light)\n *\n * shiki 输出的 <pre> 自带 inline 背景/前景色,主题切换时必须重新高亮,\n * 因此 resolvedTheme 进入依赖数组。\n *\n * @returns\n * - `html`: 完整的 shiki 输出 HTML(含 pre/code 包裹),markdown 等场景使用\n * - `lineHtmls`: 拆分后的每一行 HTML(用于双列行号布局)\n * - `loading`: 是否正在高亮\n */\nexport function useShikiHighlight(\n code: string,\n lang: string,\n): { html: string; lineHtmls: string[]; loading: boolean } {\n const resolvedTheme = useResolvedTheme();\n const [html, setHtml] = useState('');\n const [lineHtmls, setLineHtmls] = useState<string[]>([]);\n const [loading, setLoading] = useState(true);\n\n useEffect(() => {\n let cancelled = false;\n setLoading(true);\n\n const lineNumbersTransformer: ShikiTransformer = {\n name: 'line-numbers',\n line(node, line) {\n node.properties['data-line'] = line;\n this.addClassToHast(node, 'line');\n },\n };\n\n codeToHtml(code, {\n lang,\n theme: resolvedTheme === 'light' ? 'github-light' : 'dark-plus',\n transformers: [lineNumbersTransformer],\n })\n .then((out) => {\n if (!cancelled) {\n setHtml(out);\n setLineHtmls(extractLines(out));\n setLoading(false);\n }\n })\n .catch(() => {\n if (!cancelled) {\n setHtml('');\n setLineHtmls([]);\n setLoading(false);\n }\n });\n return () => {\n cancelled = true;\n };\n }, [code, lang, resolvedTheme]);\n\n return { html, lineHtmls, loading };\n}\n\n/**\n * 从 shiki 输出的 HTML 中提取每一行的内容(保留高亮标签)\n */\nfunction extractLines(html: string): string[] {\n if (typeof window === 'undefined' || !html) return [];\n const parser = new DOMParser();\n const doc = parser.parseFromString(html, 'text/html');\n const codeElement = doc.querySelector('code');\n if (!codeElement) return [];\n const lineElements = codeElement.querySelectorAll('.line');\n return Array.from(lineElements).map((line) => line.innerHTML);\n}\n"],"names":["useShikiHighlight","code","lang","resolvedTheme","useResolvedTheme","html","setHtml","useState","lineHtmls","setLineHtmls","loading","setLoading","useEffect","cancelled","codeToHtml","node","line","out","extractLines","codeElement","lineElements"],"mappings":";;;AAkBO,SAASA,EACdC,GACAC,GACyD;AACzD,QAAMC,IAAgBC,EAAA,GAChB,CAACC,GAAMC,CAAO,IAAIC,EAAS,EAAE,GAC7B,CAACC,GAAWC,CAAY,IAAIF,EAAmB,CAAA,CAAE,GACjD,CAACG,GAASC,CAAU,IAAIJ,EAAS,EAAI;AAE3C,SAAAK,EAAU,MAAM;AACd,QAAIC,IAAY;AAChB,WAAAF,EAAW,EAAI,GAUfG,EAAWb,GAAM;AAAA,MACf,MAAAC;AAAA,MACA,OAAOC,MAAkB,UAAU,iBAAiB;AAAA,MACpD,cAAc,CAXiC;AAAA,QAC/C,MAAM;AAAA,QACN,KAAKY,GAAMC,GAAM;AACf,UAAAD,EAAK,WAAW,WAAW,IAAIC,GAC/B,KAAK,eAAeD,GAAM,MAAM;AAAA,QAClC;AAAA,MAAA,CAMqC;AAAA,IAAA,CACtC,EACE,KAAK,CAACE,MAAQ;AACb,MAAKJ,MACHP,EAAQW,CAAG,GACXR,EAAaS,EAAaD,CAAG,CAAC,GAC9BN,EAAW,EAAK;AAAA,IAEpB,CAAC,EACA,MAAM,MAAM;AACX,MAAKE,MACHP,EAAQ,EAAE,GACVG,EAAa,CAAA,CAAE,GACfE,EAAW,EAAK;AAAA,IAEpB,CAAC,GACI,MAAM;AACX,MAAAE,IAAY;AAAA,IACd;AAAA,EACF,GAAG,CAACZ,GAAMC,GAAMC,CAAa,CAAC,GAEvB,EAAE,MAAAE,GAAM,WAAAG,GAAW,SAAAE,EAAA;AAC5B;AAKA,SAASQ,EAAab,GAAwB;AAC5C,MAAI,OAAO,SAAW,OAAe,CAACA,UAAa,CAAA;AAGnD,QAAMc,IAFS,IAAI,UAAA,EACA,gBAAgBd,GAAM,WAAW,EAC5B,cAAc,MAAM;AAC5C,MAAI,CAACc,EAAa,QAAO,CAAA;AACzB,QAAMC,IAAeD,EAAY,iBAAiB,OAAO;AACzD,SAAO,MAAM,KAAKC,CAAY,EAAE,IAAI,CAACJ,MAASA,EAAK,SAAS;AAC9D;"}
1
+ {"version":3,"file":"useShikiHighlight-C6nJcETW.mjs","sources":["../../src/hooks/useShikiHighlight.ts"],"sourcesContent":["import { useState, useEffect } from 'react';\nimport { codeToHtml, type ShikiTransformer } from 'shiki';\nimport { useResolvedTheme } from '../ThemeContext';\n\n/**\n * 用 shiki 把代码高亮成 HTML(与 vue-file-preview 同引擎、同主题,保证两端视觉一致)。\n *\n * - dark 主题用 `dark-plus`(VSCode Dark Plus)\n * - light 主题用 `github-light`(GitHub Light)\n *\n * shiki 输出的 <pre> 自带 inline 背景/前景色,主题切换时必须重新高亮,\n * 因此 resolvedTheme 进入依赖数组。\n *\n * @returns\n * - `html`: 完整的 shiki 输出 HTML(含 pre/code 包裹),markdown 等场景使用\n * - `lineHtmls`: 拆分后的每一行 HTML(用于双列行号布局)\n * - `loading`: 是否正在高亮\n */\nexport function useShikiHighlight(\n code: string,\n lang: string,\n): { html: string; lineHtmls: string[]; loading: boolean } {\n const resolvedTheme = useResolvedTheme();\n const [html, setHtml] = useState('');\n const [lineHtmls, setLineHtmls] = useState<string[]>([]);\n const [loading, setLoading] = useState(true);\n\n useEffect(() => {\n let cancelled = false;\n setLoading(true);\n\n const lineNumbersTransformer: ShikiTransformer = {\n name: 'line-numbers',\n line(node, line) {\n node.properties['data-line'] = line;\n this.addClassToHast(node, 'line');\n },\n };\n\n codeToHtml(code, {\n lang,\n theme: resolvedTheme === 'light' ? 'github-light' : 'dark-plus',\n transformers: [lineNumbersTransformer],\n })\n .then((out) => {\n if (!cancelled) {\n setHtml(out);\n setLineHtmls(extractLines(out));\n setLoading(false);\n }\n })\n .catch(() => {\n if (!cancelled) {\n setHtml('');\n setLineHtmls([]);\n setLoading(false);\n }\n });\n return () => {\n cancelled = true;\n };\n }, [code, lang, resolvedTheme]);\n\n return { html, lineHtmls, loading };\n}\n\n/**\n * 从 shiki 输出的 HTML 中提取每一行的内容(保留高亮标签)\n */\nfunction extractLines(html: string): string[] {\n if (typeof window === 'undefined' || !html) return [];\n const parser = new DOMParser();\n const doc = parser.parseFromString(html, 'text/html');\n const codeElement = doc.querySelector('code');\n if (!codeElement) return [];\n const lineElements = codeElement.querySelectorAll('.line');\n return Array.from(lineElements).map((line) => line.innerHTML);\n}\n"],"names":["useShikiHighlight","code","lang","resolvedTheme","useResolvedTheme","html","setHtml","useState","lineHtmls","setLineHtmls","loading","setLoading","useEffect","cancelled","codeToHtml","node","line","out","extractLines","codeElement","lineElements"],"mappings":";;;AAkBO,SAASA,EACdC,GACAC,GACyD;AACzD,QAAMC,IAAgBC,EAAA,GAChB,CAACC,GAAMC,CAAO,IAAIC,EAAS,EAAE,GAC7B,CAACC,GAAWC,CAAY,IAAIF,EAAmB,CAAA,CAAE,GACjD,CAACG,GAASC,CAAU,IAAIJ,EAAS,EAAI;AAE3C,SAAAK,EAAU,MAAM;AACd,QAAIC,IAAY;AAChB,WAAAF,EAAW,EAAI,GAUfG,EAAWb,GAAM;AAAA,MACf,MAAAC;AAAA,MACA,OAAOC,MAAkB,UAAU,iBAAiB;AAAA,MACpD,cAAc,CAXiC;AAAA,QAC/C,MAAM;AAAA,QACN,KAAKY,GAAMC,GAAM;AACf,UAAAD,EAAK,WAAW,WAAW,IAAIC,GAC/B,KAAK,eAAeD,GAAM,MAAM;AAAA,QAClC;AAAA,MAAA,CAMqC;AAAA,IAAA,CACtC,EACE,KAAK,CAACE,MAAQ;AACb,MAAKJ,MACHP,EAAQW,CAAG,GACXR,EAAaS,EAAaD,CAAG,CAAC,GAC9BN,EAAW,EAAK;AAAA,IAEpB,CAAC,EACA,MAAM,MAAM;AACX,MAAKE,MACHP,EAAQ,EAAE,GACVG,EAAa,CAAA,CAAE,GACfE,EAAW,EAAK;AAAA,IAEpB,CAAC,GACI,MAAM;AACX,MAAAE,IAAY;AAAA,IACd;AAAA,EACF,GAAG,CAACZ,GAAMC,GAAMC,CAAa,CAAC,GAEvB,EAAE,MAAAE,GAAM,WAAAG,GAAW,SAAAE,EAAA;AAC5B;AAKA,SAASQ,EAAab,GAAwB;AAC5C,MAAI,OAAO,SAAW,OAAe,CAACA,UAAa,CAAA;AAGnD,QAAMc,IAFS,IAAI,UAAA,EACA,gBAAgBd,GAAM,WAAW,EAC5B,cAAc,MAAM;AAC5C,MAAI,CAACc,EAAa,QAAO,CAAA;AACzB,QAAMC,IAAeD,EAAY,iBAAiB,OAAO;AACzD,SAAO,MAAM,KAAKC,CAAY,EAAE,IAAI,CAACJ,MAASA,EAAK,SAAS;AAC9D;"}