@incremark/svelte 0.2.7 → 0.3.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/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 +41 -10
  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/useIncremark.d.ts +4 -2
  40. package/dist/stores/useIncremark.d.ts.map +1 -1
  41. package/dist/stores/useIncremark.js +19 -0
  42. package/dist/stores/useLocale.svelte.d.ts +29 -0
  43. package/dist/stores/useLocale.svelte.d.ts.map +1 -0
  44. package/dist/stores/useLocale.svelte.js +32 -0
  45. package/dist/stores/useShiki.svelte.d.ts.map +1 -1
  46. package/dist/stores/useShiki.svelte.js +17 -5
  47. package/package.json +13 -7
  48. package/dist/stores/useDevTools.d.ts.map +0 -1
@@ -23,6 +23,8 @@
23
23
  interface Props {
24
24
  /** 要渲染的节点 */
25
25
  node: RootContent | ContainerNode
26
+ /** 自定义组件映射,key 为节点类型 */
27
+ components?: Record<string, any>
26
28
  customContainers?: Record<string, any>
27
29
  customCodeBlocks?: Record<string, any>
28
30
  codeBlockConfigs?: Record<string, { takeOver?: boolean }>
@@ -31,6 +33,7 @@
31
33
 
32
34
  let {
33
35
  node,
36
+ components,
34
37
  customContainers,
35
38
  customCodeBlocks,
36
39
  codeBlockConfigs,
@@ -95,6 +98,7 @@
95
98
  customCodeBlocks={customCodeBlocks}
96
99
  codeBlockConfigs={codeBlockConfigs}
97
100
  blockStatus={blockStatus}
101
+ defaultCodeComponent={components?.['code']}
98
102
  />
99
103
  {:else}
100
104
  <!-- 其他节点:使用对应组件 -->
@@ -6,6 +6,8 @@ import { type ContainerNode } from './IncremarkContainer.svelte';
6
6
  interface Props {
7
7
  /** 要渲染的节点 */
8
8
  node: RootContent | ContainerNode;
9
+ /** 自定义组件映射,key 为节点类型 */
10
+ components?: Record<string, any>;
9
11
  customContainers?: Record<string, any>;
10
12
  customCodeBlocks?: Record<string, any>;
11
13
  codeBlockConfigs?: Record<string, {
@@ -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
  }
@@ -3,7 +3,7 @@
3
3
  * @description Svelte 5 Store: Incremark 流式 Markdown 解析器
4
4
  */
5
5
  import { type Writable, type Readable } from 'svelte/store';
6
- import { createIncremarkParser, type ParserOptions, type ParsedBlock, type IncrementalUpdate, type Root, type TransformerPlugin, type AnimationEffect } from '@incremark/core';
6
+ import { createIncremarkParser, type IncremarkParserOptions, type ParsedBlock, type IncrementalUpdate, type Root, type TransformerPlugin, type AnimationEffect } from '@incremark/core';
7
7
  /**
8
8
  * 打字机效果配置
9
9
  */
@@ -26,7 +26,7 @@ export interface TypewriterOptions {
26
26
  /**
27
27
  * useIncremark 选项
28
28
  */
29
- export interface UseIncremarkOptions extends ParserOptions {
29
+ export interface UseIncremarkOptions extends IncremarkParserOptions {
30
30
  /** 打字机配置,传入即创建 transformer(可通过 enabled 控制是否启用) */
31
31
  typewriter?: TypewriterOptions;
32
32
  }
@@ -93,6 +93,8 @@ export interface UseIncremarkReturn {
93
93
  reset: () => void;
94
94
  /** 一次性渲染(reset + append + finalize) */
95
95
  render: (content: string) => IncrementalUpdate;
96
+ /** 更新解析器配置(动态更新,不需要重建 parser 实例) */
97
+ updateOptions: (options: Partial<IncremarkParserOptions>) => void;
96
98
  /** 解析器实例 */
97
99
  parser: ReturnType<typeof createIncremarkParser>;
98
100
  /** 打字机控制 */
@@ -1 +1 @@
1
- {"version":3,"file":"useIncremark.d.ts","sourceRoot":"","sources":["../../src/stores/useIncremark.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useIncremark.d.ts","sourceRoot":"","sources":["../../src/stores/useIncremark.ts"],"names":[],"mappings":"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"}
@@ -168,6 +168,24 @@ export function useIncremark(options = {}) {
168
168
  setFootnoteReferenceOrder(update.footnoteReferenceOrder);
169
169
  return update;
170
170
  }
171
+ /**
172
+ * 更新解析器配置(动态更新,不需要重建 parser 实例)
173
+ *
174
+ * 注意:更新配置后会自动重置状态
175
+ *
176
+ * @param newOptions - 部分配置选项(包括 astBuilder,可以动态切换引擎)
177
+ */
178
+ function updateOptions(newOptions) {
179
+ parser.updateOptions(newOptions);
180
+ // 同步 Svelte 状态
181
+ completedBlocks.set([]);
182
+ pendingBlocks.set([]);
183
+ markdown.set('');
184
+ isLoading.set(false);
185
+ isFinalized.set(false);
186
+ footnoteReferenceOrder.set([]);
187
+ transformer?.reset();
188
+ }
171
189
  return {
172
190
  markdown,
173
191
  completedBlocks,
@@ -183,6 +201,7 @@ export function useIncremark(options = {}) {
183
201
  abort,
184
202
  reset,
185
203
  render,
204
+ updateOptions,
186
205
  parser,
187
206
  typewriter
188
207
  };
@@ -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.1",
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.1",
28
+ "@incremark/icons": "0.3.1",
29
+ "@incremark/shared": "0.3.1",
30
+ "@incremark/devtools": "0.3.1",
31
+ "@incremark/theme": "0.3.1"
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"}