@incremark/svelte 0.2.7 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/README.en.md +274 -0
  2. package/dist/ThemeProvider.svelte +4 -1
  3. package/dist/ThemeProvider.svelte.d.ts.map +1 -1
  4. package/dist/components/ConfigProvider.svelte +18 -0
  5. package/dist/components/ConfigProvider.svelte.d.ts +9 -0
  6. package/dist/components/ConfigProvider.svelte.d.ts.map +1 -0
  7. package/dist/components/Incremark.svelte +62 -71
  8. package/dist/components/Incremark.svelte.d.ts +4 -6
  9. package/dist/components/Incremark.svelte.d.ts.map +1 -1
  10. package/dist/components/IncremarkCode.svelte +20 -152
  11. package/dist/components/IncremarkCode.svelte.d.ts +4 -1
  12. package/dist/components/IncremarkCode.svelte.d.ts.map +1 -1
  13. package/dist/components/IncremarkCodeDefault.svelte +115 -0
  14. package/dist/components/IncremarkCodeDefault.svelte.d.ts +18 -0
  15. package/dist/components/IncremarkCodeDefault.svelte.d.ts.map +1 -0
  16. package/dist/components/IncremarkCodeMermaid.svelte +148 -0
  17. package/dist/components/IncremarkCodeMermaid.svelte.d.ts +14 -0
  18. package/dist/components/IncremarkCodeMermaid.svelte.d.ts.map +1 -0
  19. package/dist/components/IncremarkContent.svelte +13 -12
  20. package/dist/components/IncremarkContent.svelte.d.ts +1 -2
  21. package/dist/components/IncremarkContent.svelte.d.ts.map +1 -1
  22. package/dist/components/IncremarkFootnotes.svelte +4 -8
  23. package/dist/components/IncremarkFootnotes.svelte.d.ts.map +1 -1
  24. package/dist/components/IncremarkInline.svelte +3 -3
  25. package/dist/components/IncremarkRenderer.svelte +4 -0
  26. package/dist/components/IncremarkRenderer.svelte.d.ts +2 -0
  27. package/dist/components/IncremarkRenderer.svelte.d.ts.map +1 -1
  28. package/dist/components/IncremarkTable.svelte +6 -9
  29. package/dist/components/IncremarkTable.svelte.d.ts.map +1 -1
  30. package/dist/components/SvgIcon.svelte +25 -0
  31. package/dist/components/SvgIcon.svelte.d.ts +12 -0
  32. package/dist/components/SvgIcon.svelte.d.ts.map +1 -0
  33. package/dist/index.d.ts +7 -1
  34. package/dist/index.d.ts.map +1 -1
  35. package/dist/index.js +6 -1
  36. package/dist/stores/{useDevTools.d.ts → useDevTools.svelte.d.ts} +1 -1
  37. package/dist/stores/useDevTools.svelte.d.ts.map +1 -0
  38. package/dist/stores/{useDevTools.js → useDevTools.svelte.js} +8 -7
  39. package/dist/stores/useLocale.svelte.d.ts +29 -0
  40. package/dist/stores/useLocale.svelte.d.ts.map +1 -0
  41. package/dist/stores/useLocale.svelte.js +32 -0
  42. package/dist/stores/useShiki.svelte.d.ts.map +1 -1
  43. package/dist/stores/useShiki.svelte.js +17 -5
  44. package/package.json +13 -7
  45. package/dist/stores/useDevTools.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"IncremarkRenderer.svelte.d.ts","sourceRoot":"","sources":["../../src/components/IncremarkRenderer.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAQ,MAAM,OAAO,CAAA;AAW9C,OAA2B,EAAE,KAAK,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAGnF;;GAEG;AACH,UAAU,KAAK;IACb,aAAa;IACb,IAAI,EAAE,WAAW,GAAG,aAAa,CAAA;IACjC,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACtC,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACtC,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAA;IACzD,WAAW,CAAC,EAAE,SAAS,GAAG,QAAQ,GAAG,WAAW,CAAA;CACjD;AAwFH,QAAA,MAAM,iBAAiB,2CAAwC,CAAC;AAChE,KAAK,iBAAiB,GAAG,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC9D,eAAe,iBAAiB,CAAC"}
1
+ {"version":3,"file":"IncremarkRenderer.svelte.d.ts","sourceRoot":"","sources":["../../src/components/IncremarkRenderer.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAQ,MAAM,OAAO,CAAA;AAW9C,OAA2B,EAAE,KAAK,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAGnF;;GAEG;AACH,UAAU,KAAK;IACb,aAAa;IACb,IAAI,EAAE,WAAW,GAAG,aAAa,CAAA;IACjC,wBAAwB;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAChC,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACtC,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACtC,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAA;IACzD,WAAW,CAAC,EAAE,SAAS,GAAG,QAAQ,GAAG,WAAW,CAAA;CACjD;AAyFH,QAAA,MAAM,iBAAiB,2CAAwC,CAAC;AAChE,KAAK,iBAAiB,GAAG,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC9D,eAAe,iBAAiB,CAAC"}
@@ -28,15 +28,13 @@
28
28
  }
29
29
 
30
30
  /**
31
- * 获取单元格对齐方式
31
+ * 获取单元格对齐类名
32
32
  *
33
33
  * @param cellIndex - 单元格索引
34
- * @returns 对齐方式样式对象
34
+ * @returns 对齐方式类名
35
35
  */
36
- function getCellAlign(cellIndex: number): { textAlign: string } {
37
- return {
38
- textAlign: node.align?.[cellIndex] || 'left'
39
- }
36
+ function getCellAlignClass(cellIndex: number): string {
37
+ return `incremark-table-align-${node.align?.[cellIndex] || 'left'}`
40
38
  }
41
39
 
42
40
  /**
@@ -56,7 +54,7 @@
56
54
  {#if headerRow}
57
55
  <tr>
58
56
  {#each headerRow.children as cell, cellIndex (cellIndex)}
59
- <th style={getCellAlign(cellIndex)}>
57
+ <th class={getCellAlignClass(cellIndex)}>
60
58
  <IncremarkInline nodes={getCellContent(cell)} />
61
59
  </th>
62
60
  {/each}
@@ -67,7 +65,7 @@
67
65
  {#each bodyRows as row, rowIndex (rowIndex)}
68
66
  <tr>
69
67
  {#each row.children as cell, cellIndex (cellIndex)}
70
- <td style={getCellAlign(cellIndex)}>
68
+ <td class={getCellAlignClass(cellIndex)}>
71
69
  <IncremarkInline nodes={getCellContent(cell)} />
72
70
  </td>
73
71
  {/each}
@@ -76,4 +74,3 @@
76
74
  </tbody>
77
75
  </table>
78
76
  </div>
79
-
@@ -1 +1 @@
1
- {"version":3,"file":"IncremarkTable.svelte.d.ts","sourceRoot":"","sources":["../../src/components/IncremarkTable.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,KAAK,EAA8B,MAAM,OAAO,CAAA;AAI5D;;GAEG;AACH,UAAU,KAAK;IACb,WAAW;IACX,IAAI,EAAE,KAAK,CAAA;CACZ;AAyEH,QAAA,MAAM,cAAc,2CAAwC,CAAC;AAC7D,KAAK,cAAc,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AACxD,eAAe,cAAc,CAAC"}
1
+ {"version":3,"file":"IncremarkTable.svelte.d.ts","sourceRoot":"","sources":["../../src/components/IncremarkTable.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,KAAK,EAA8B,MAAM,OAAO,CAAA;AAI5D;;GAEG;AACH,UAAU,KAAK;IACb,WAAW;IACX,IAAI,EAAE,KAAK,CAAA;CACZ;AAsEH,QAAA,MAAM,cAAc,2CAAwC,CAAC;AAC7D,KAAK,cAAc,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AACxD,eAAe,cAAc,CAAC"}
@@ -0,0 +1,25 @@
1
+ <!--
2
+ SvgIcon 组件
3
+
4
+ 直接渲染 SVG 字符串
5
+ -->
6
+ <script lang="ts">
7
+ interface Props {
8
+ /** SVG 字符串内容 */
9
+ svg: string
10
+ /** 图标大小 class,如 incremark-icon--sm, incremark-icon--md 等 */
11
+ sizeClass?: string
12
+ /** 自定义类名 */
13
+ class?: string
14
+ }
15
+
16
+ let {
17
+ svg,
18
+ sizeClass,
19
+ class: className
20
+ }: Props = $props()
21
+ </script>
22
+
23
+ <span class="incremark-icon {sizeClass || ''} {className || ''}" aria-hidden="true">
24
+ {@html svg}
25
+ </span>
@@ -0,0 +1,12 @@
1
+ interface Props {
2
+ /** SVG 字符串内容 */
3
+ svg: string;
4
+ /** 图标大小 class,如 incremark-icon--sm, incremark-icon--md 等 */
5
+ sizeClass?: string;
6
+ /** 自定义类名 */
7
+ class?: string;
8
+ }
9
+ declare const SvgIcon: import("svelte").Component<Props, {}, "">;
10
+ type SvgIcon = ReturnType<typeof SvgIcon>;
11
+ export default SvgIcon;
12
+ //# sourceMappingURL=SvgIcon.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SvgIcon.svelte.d.ts","sourceRoot":"","sources":["../../src/components/SvgIcon.svelte.ts"],"names":[],"mappings":"AAGE,UAAU,KAAK;IACb,gBAAgB;IAChB,GAAG,EAAE,MAAM,CAAA;IACX,4DAA4D;IAC5D,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,YAAY;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAkBH,QAAA,MAAM,OAAO,2CAAwC,CAAC;AACtD,KAAK,OAAO,GAAG,UAAU,CAAC,OAAO,OAAO,CAAC,CAAC;AAC1C,eAAe,OAAO,CAAC"}
package/dist/index.d.ts CHANGED
@@ -3,13 +3,19 @@
3
3
  * @description Svelte 5 集成库的导出入口
4
4
  */
5
5
  export { useIncremark, type UseIncremarkOptions, type UseIncremarkReturn, type TypewriterOptions, type TypewriterControls } from './stores/useIncremark';
6
- export { useDevTools, type UseDevToolsOptions } from './stores/useDevTools';
6
+ export { useDevTools, type UseDevToolsOptions } from './stores/useDevTools.svelte';
7
7
  export { useBlockTransformer, type UseBlockTransformerOptions, type UseBlockTransformerReturn } from './stores/useBlockTransformer';
8
+ export { useLocale, type UseLocaleReturn } from './stores/useLocale.svelte';
8
9
  export { setDefinitionsContext, getDefinitionsContext, type DefinitionsContextValue } from './context/definitionsContext';
9
10
  export { Incremark, IncremarkContent, IncremarkParagraph, IncremarkInline, IncremarkHeading, IncremarkCode, IncremarkList, IncremarkTable, IncremarkBlockquote, IncremarkThematicBreak, IncremarkMath, IncremarkHtmlElement, IncremarkFootnotes, IncremarkDefault, IncremarkRenderer, type ComponentMap, type RenderableBlock, type IncremarkContentProps, type CodeBlockConfig } from './components';
10
11
  export { default as AutoScrollContainer } from './components/AutoScrollContainer.svelte';
11
12
  export { default as ThemeProvider } from './ThemeProvider.svelte';
13
+ export { default as ConfigProvider } from './components/ConfigProvider.svelte';
12
14
  export type { ParsedBlock, IncrementalUpdate, ParserOptions, BlockStatus, Root, RootContent, SourceBlock, DisplayBlock, TransformerPlugin, TransformerOptions, TransformerState, AnimationEffect } from '@incremark/core';
13
15
  export { BlockTransformer, createBlockTransformer, countChars, sliceAst, cloneNode, codeBlockPlugin, mermaidPlugin, imagePlugin, mathPlugin, thematicBreakPlugin, defaultPlugins, allPlugins, createPlugin } from '@incremark/core';
14
16
  export { type DesignTokens, defaultTheme, darkTheme, generateCSSVars, mergeTheme, applyTheme } from '@incremark/theme';
17
+ import { en as enShared, zhCN as zhCNShared } from '@incremark/shared';
18
+ import type { IncremarkLocale } from '@incremark/shared';
19
+ export { enShared as en, zhCNShared as zhCN };
20
+ export type { IncremarkLocale };
15
21
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,YAAY,EAAE,KAAK,mBAAmB,EAAE,KAAK,kBAAkB,EAAE,KAAK,iBAAiB,EAAE,KAAK,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AACxJ,OAAO,EAAE,WAAW,EAAE,KAAK,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AAC3E,OAAO,EACL,mBAAmB,EACnB,KAAK,0BAA0B,EAC/B,KAAK,yBAAyB,EAC/B,MAAM,8BAA8B,CAAA;AAGrC,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,KAAK,uBAAuB,EAAE,MAAM,8BAA8B,CAAA;AAGzH,OAAO,EACL,SAAS,EACT,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EACf,gBAAgB,EAChB,aAAa,EACb,aAAa,EACb,cAAc,EACd,mBAAmB,EACnB,sBAAsB,EACtB,aAAa,EACb,oBAAoB,EACpB,kBAAkB,EAClB,gBAAgB,EAChB,iBAAiB,EACjB,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,qBAAqB,EAC1B,KAAK,eAAe,EACrB,MAAM,cAAc,CAAA;AAGrB,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,yCAAyC,CAAA;AACxF,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,wBAAwB,CAAA;AAGjE,YAAY,EACV,WAAW,EACX,iBAAiB,EACjB,aAAa,EACb,WAAW,EACX,IAAI,EACJ,WAAW,EAEX,WAAW,EACX,YAAY,EACZ,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EAChB,MAAM,iBAAiB,CAAA;AAGxB,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,UAAU,EACV,QAAQ,EACR,SAAS,EACT,eAAe,EACf,aAAa,EACb,WAAW,EACX,UAAU,EACV,mBAAmB,EACnB,cAAc,EACd,UAAU,EACV,YAAY,EACb,MAAM,iBAAiB,CAAA;AAGxB,OAAO,EACL,KAAK,YAAY,EACjB,YAAY,EACZ,SAAS,EACT,eAAe,EACf,UAAU,EACV,UAAU,EACX,MAAM,kBAAkB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,YAAY,EAAE,KAAK,mBAAmB,EAAE,KAAK,kBAAkB,EAAE,KAAK,iBAAiB,EAAE,KAAK,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AACxJ,OAAO,EAAE,WAAW,EAAE,KAAK,kBAAkB,EAAE,MAAM,6BAA6B,CAAA;AAClF,OAAO,EACL,mBAAmB,EACnB,KAAK,0BAA0B,EAC/B,KAAK,yBAAyB,EAC/B,MAAM,8BAA8B,CAAA;AACrC,OAAO,EAAE,SAAS,EAAE,KAAK,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAG3E,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,KAAK,uBAAuB,EAAE,MAAM,8BAA8B,CAAA;AAGzH,OAAO,EACL,SAAS,EACT,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EACf,gBAAgB,EAChB,aAAa,EACb,aAAa,EACb,cAAc,EACd,mBAAmB,EACnB,sBAAsB,EACtB,aAAa,EACb,oBAAoB,EACpB,kBAAkB,EAClB,gBAAgB,EAChB,iBAAiB,EACjB,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,qBAAqB,EAC1B,KAAK,eAAe,EACrB,MAAM,cAAc,CAAA;AAGrB,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,yCAAyC,CAAA;AACxF,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,wBAAwB,CAAA;AACjE,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,oCAAoC,CAAA;AAG9E,YAAY,EACV,WAAW,EACX,iBAAiB,EACjB,aAAa,EACb,WAAW,EACX,IAAI,EACJ,WAAW,EAEX,WAAW,EACX,YAAY,EACZ,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EAChB,MAAM,iBAAiB,CAAA;AAGxB,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,UAAU,EACV,QAAQ,EACR,SAAS,EACT,eAAe,EACf,aAAa,EACb,WAAW,EACX,UAAU,EACV,mBAAmB,EACnB,cAAc,EACd,UAAU,EACV,YAAY,EACb,MAAM,iBAAiB,CAAA;AAGxB,OAAO,EACL,KAAK,YAAY,EACjB,YAAY,EACZ,SAAS,EACT,eAAe,EACf,UAAU,EACV,UAAU,EACX,MAAM,kBAAkB,CAAA;AAGzB,OAAO,EAAE,EAAE,IAAI,QAAQ,EAAE,IAAI,IAAI,UAAU,EAAE,MAAM,mBAAmB,CAAA;AACtE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAExD,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,UAAU,IAAI,IAAI,EAAE,CAAA;AAC7C,YAAY,EAAE,eAAe,EAAE,CAAA"}
package/dist/index.js CHANGED
@@ -4,8 +4,9 @@
4
4
  */
5
5
  // Stores/Utilities
6
6
  export { useIncremark } from './stores/useIncremark';
7
- export { useDevTools } from './stores/useDevTools';
7
+ export { useDevTools } from './stores/useDevTools.svelte';
8
8
  export { useBlockTransformer } from './stores/useBlockTransformer';
9
+ export { useLocale } from './stores/useLocale.svelte';
9
10
  // Context
10
11
  export { setDefinitionsContext, getDefinitionsContext } from './context/definitionsContext';
11
12
  // Components
@@ -13,7 +14,11 @@ export { Incremark, IncremarkContent, IncremarkParagraph, IncremarkInline, Incre
13
14
  // Additional Components
14
15
  export { default as AutoScrollContainer } from './components/AutoScrollContainer.svelte';
15
16
  export { default as ThemeProvider } from './ThemeProvider.svelte';
17
+ export { default as ConfigProvider } from './components/ConfigProvider.svelte';
16
18
  // Re-export transformer utilities and plugins
17
19
  export { BlockTransformer, createBlockTransformer, countChars, sliceAst, cloneNode, codeBlockPlugin, mermaidPlugin, imagePlugin, mathPlugin, thematicBreakPlugin, defaultPlugins, allPlugins, createPlugin } from '@incremark/core';
18
20
  // Re-export theme utilities
19
21
  export { defaultTheme, darkTheme, generateCSSVars, mergeTheme, applyTheme } from '@incremark/theme';
22
+ // Re-export i18n utilities
23
+ import { en as enShared, zhCN as zhCNShared } from '@incremark/shared';
24
+ export { enShared as en, zhCNShared as zhCN };
@@ -30,4 +30,4 @@ export interface UseDevToolsOptions extends DevToolsOptions {
30
30
  * ```
31
31
  */
32
32
  export declare function useDevTools(incremark: UseIncremarkReturn, options?: UseDevToolsOptions): import("@incremark/devtools").IncremarkDevTools;
33
- //# sourceMappingURL=useDevTools.d.ts.map
33
+ //# sourceMappingURL=useDevTools.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDevTools.svelte.d.ts","sourceRoot":"","sources":["../../src/stores/useDevTools.svelte.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAkB,KAAK,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAC1E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AAExD;;GAEG;AACH,MAAM,WAAW,kBAAmB,SAAQ,eAAe;CAAG;AAE9D;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,WAAW,CACzB,SAAS,EAAE,kBAAkB,EAC7B,OAAO,GAAE,kBAAuB,mDAkCjC"}
@@ -2,7 +2,6 @@
2
2
  * @file useDevTools Store - DevTools 集成
3
3
  * @description Svelte 5 DevTools 一行接入
4
4
  */
5
- import { onMount, onDestroy } from 'svelte';
6
5
  import { createDevTools } from '@incremark/devtools';
7
6
  /**
8
7
  * Svelte 5 DevTools 一行接入
@@ -41,13 +40,15 @@ export function useDevTools(incremark, options = {}) {
41
40
  isLoading: state.pendingBlocks.length > 0
42
41
  });
43
42
  });
44
- onMount(() => {
43
+ // 使用 $effect 处理挂载和卸载
44
+ $effect(() => {
45
45
  devtools.mount();
46
- });
47
- onDestroy(() => {
48
- devtools.unmount();
49
- // 清理回调
50
- incremark.parser.setOnChange(undefined);
46
+ // 返回清理函数
47
+ return () => {
48
+ devtools.unmount();
49
+ // 清理回调
50
+ incremark.parser.setOnChange(undefined);
51
+ };
51
52
  });
52
53
  return devtools;
53
54
  }
@@ -0,0 +1,29 @@
1
+ import type { IncremarkLocale } from '@incremark/shared';
2
+ /**
3
+ * Locale Context 值类型
4
+ * 使用函数返回 locale,以支持响应式更新
5
+ */
6
+ export interface LocaleContextValue {
7
+ /** 获取当前 locale 的函数(支持响应式) */
8
+ getLocale: () => IncremarkLocale;
9
+ }
10
+ /**
11
+ * Svelte 国际化 Composable
12
+ */
13
+ export interface UseLocaleReturn {
14
+ /** 翻译函数 */
15
+ t: (key: string) => string;
16
+ }
17
+ /**
18
+ * 提供 locale context
19
+ * 必须在组件初始化时同步调用(script 顶层)
20
+ *
21
+ * @param getLocale - 获取 locale 的函数,支持响应式
22
+ */
23
+ export declare function provideLocale(getLocale: () => IncremarkLocale): void;
24
+ /**
25
+ * 使用 locale
26
+ * 在子组件中调用以获取翻译函数
27
+ */
28
+ export declare function useLocale(): UseLocaleReturn;
29
+ //# sourceMappingURL=useLocale.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useLocale.svelte.d.ts","sourceRoot":"","sources":["../../src/stores/useLocale.svelte.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAKxD;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,6BAA6B;IAC7B,SAAS,EAAE,MAAM,eAAe,CAAA;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,WAAW;IACX,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAA;CAC3B;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,eAAe,QAG7D;AAED;;;GAGG;AACH,wBAAgB,SAAS,IAAI,eAAe,CAiB3C"}
@@ -0,0 +1,32 @@
1
+ import { setContext, getContext } from 'svelte';
2
+ import { en } from '../index';
3
+ const LOCALE_KEY = Symbol('incremark-locale');
4
+ /**
5
+ * 提供 locale context
6
+ * 必须在组件初始化时同步调用(script 顶层)
7
+ *
8
+ * @param getLocale - 获取 locale 的函数,支持响应式
9
+ */
10
+ export function provideLocale(getLocale) {
11
+ const contextValue = { getLocale };
12
+ setContext(LOCALE_KEY, contextValue);
13
+ }
14
+ /**
15
+ * 使用 locale
16
+ * 在子组件中调用以获取翻译函数
17
+ */
18
+ export function useLocale() {
19
+ const context = getContext(LOCALE_KEY);
20
+ // 获取当前 locale(支持响应式更新)
21
+ const getLocale = context?.getLocale ?? (() => en);
22
+ const t = (key) => {
23
+ const locale = getLocale();
24
+ const keys = key.split('.');
25
+ let value = locale;
26
+ for (const k of keys) {
27
+ value = value?.[k];
28
+ }
29
+ return value || key;
30
+ };
31
+ return { t };
32
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"useShiki.svelte.d.ts","sourceRoot":"","sources":["../../src/stores/useShiki.svelte.ts"],"names":[],"mappings":"AAkFA;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,WAAW,EAAE,MAAM,MAAM;;sBAOjB,MAAM,QAAQ,MAAM,iBAAiB,MAAM,KAAG,OAAO,CAAC,MAAM,CAAC;EA+B7F"}
1
+ {"version":3,"file":"useShiki.svelte.d.ts","sourceRoot":"","sources":["../../src/stores/useShiki.svelte.ts"],"names":[],"mappings":"AA+FA;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,WAAW,EAAE,MAAM,MAAM;;sBAOjB,MAAM,QAAQ,MAAM,iBAAiB,MAAM,KAAG,OAAO,CAAC,MAAM,CAAC;EAgC7F"}
@@ -57,7 +57,18 @@ class ShikiManager {
57
57
  });
58
58
  }
59
59
  }
60
- const shikiManager = ShikiManager.getInstance();
60
+ // ============ 延迟初始化单例 ============
61
+ let shikiManagerInstance = null;
62
+ /**
63
+ * 获取 ShikiManager 单例(延迟初始化)
64
+ * 避免模块加载时立即创建实例,支持 SSR
65
+ */
66
+ function getShikiManager() {
67
+ if (!shikiManagerInstance) {
68
+ shikiManagerInstance = ShikiManager.getInstance();
69
+ }
70
+ return shikiManagerInstance;
71
+ }
61
72
  // ============ Svelte 5 Composable ============
62
73
  /**
63
74
  * 使用 Shiki Highlighter
@@ -75,16 +86,17 @@ export function useShiki(themeGetter) {
75
86
  const currentFallback = fallbackTheme;
76
87
  isHighlighting = true;
77
88
  try {
78
- const info = await shikiManager.getHighlighter(currentTheme);
89
+ const manager = getShikiManager();
90
+ const info = await manager.getHighlighter(currentTheme);
79
91
  // 按需加载语言
80
92
  if (!info.loadedLanguages.has(lang) && lang !== 'text') {
81
- await shikiManager.loadLanguage(currentTheme, lang);
93
+ await manager.loadLanguage(currentTheme, lang);
82
94
  }
83
95
  // 按需加载主题
84
96
  if (!info.loadedThemes.has(currentTheme)) {
85
- await shikiManager.loadTheme(currentTheme);
97
+ await manager.loadTheme(currentTheme);
86
98
  }
87
- return await shikiManager.codeToHtml(currentTheme, code, lang, currentFallback);
99
+ return await manager.codeToHtml(currentTheme, code, lang, currentFallback);
88
100
  }
89
101
  finally {
90
102
  isHighlighting = false;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@incremark/svelte",
3
- "version": "0.2.7",
4
- "description": "Incremark Svelte 5 集成",
3
+ "version": "0.3.0",
4
+ "description": "High-performance streaming markdown renderer for Svelte 5 ecosystem.",
5
5
  "type": "module",
6
6
  "svelte": "./dist/index.js",
7
7
  "main": "./dist/index.js",
@@ -24,10 +24,11 @@
24
24
  ],
25
25
  "dependencies": {
26
26
  "shiki": "^3.20.0",
27
- "@incremark/devtools": "0.2.7",
28
- "@incremark/core": "0.2.7",
29
- "@incremark/shared": "0.2.7",
30
- "@incremark/theme": "0.2.7"
27
+ "@incremark/core": "0.3.0",
28
+ "@incremark/devtools": "0.3.0",
29
+ "@incremark/icons": "0.3.0",
30
+ "@incremark/shared": "0.3.0",
31
+ "@incremark/theme": "0.3.0"
31
32
  },
32
33
  "peerDependencies": {
33
34
  "svelte": "^5.0.0",
@@ -54,7 +55,12 @@
54
55
  "svelte",
55
56
  "svelte5",
56
57
  "streaming",
57
- "ai"
58
+ "ai",
59
+ "chatgpt",
60
+ "llm",
61
+ "typewriter",
62
+ "i18n",
63
+ "a11y"
58
64
  ],
59
65
  "license": "MIT",
60
66
  "repository": {
@@ -1 +0,0 @@
1
- {"version":3,"file":"useDevTools.d.ts","sourceRoot":"","sources":["../../src/stores/useDevTools.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAkB,KAAK,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAC1E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AAExD;;GAEG;AACH,MAAM,WAAW,kBAAmB,SAAQ,eAAe;CAAG;AAE9D;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,WAAW,CACzB,SAAS,EAAE,kBAAkB,EAC7B,OAAO,GAAE,kBAAuB,mDAgCjC"}