@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.
- package/README.en.md +274 -0
- package/dist/ThemeProvider.svelte +4 -1
- package/dist/ThemeProvider.svelte.d.ts.map +1 -1
- package/dist/components/ConfigProvider.svelte +18 -0
- package/dist/components/ConfigProvider.svelte.d.ts +9 -0
- package/dist/components/ConfigProvider.svelte.d.ts.map +1 -0
- package/dist/components/Incremark.svelte +62 -71
- package/dist/components/Incremark.svelte.d.ts +4 -6
- package/dist/components/Incremark.svelte.d.ts.map +1 -1
- package/dist/components/IncremarkCode.svelte +20 -152
- package/dist/components/IncremarkCode.svelte.d.ts +4 -1
- package/dist/components/IncremarkCode.svelte.d.ts.map +1 -1
- package/dist/components/IncremarkCodeDefault.svelte +115 -0
- package/dist/components/IncremarkCodeDefault.svelte.d.ts +18 -0
- package/dist/components/IncremarkCodeDefault.svelte.d.ts.map +1 -0
- package/dist/components/IncremarkCodeMermaid.svelte +148 -0
- package/dist/components/IncremarkCodeMermaid.svelte.d.ts +14 -0
- package/dist/components/IncremarkCodeMermaid.svelte.d.ts.map +1 -0
- package/dist/components/IncremarkContent.svelte +41 -10
- package/dist/components/IncremarkContent.svelte.d.ts +1 -2
- package/dist/components/IncremarkContent.svelte.d.ts.map +1 -1
- package/dist/components/IncremarkFootnotes.svelte +4 -8
- package/dist/components/IncremarkFootnotes.svelte.d.ts.map +1 -1
- package/dist/components/IncremarkInline.svelte +3 -3
- package/dist/components/IncremarkRenderer.svelte +4 -0
- package/dist/components/IncremarkRenderer.svelte.d.ts +2 -0
- package/dist/components/IncremarkRenderer.svelte.d.ts.map +1 -1
- package/dist/components/IncremarkTable.svelte +6 -9
- package/dist/components/IncremarkTable.svelte.d.ts.map +1 -1
- package/dist/components/SvgIcon.svelte +25 -0
- package/dist/components/SvgIcon.svelte.d.ts +12 -0
- package/dist/components/SvgIcon.svelte.d.ts.map +1 -0
- package/dist/index.d.ts +7 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -1
- package/dist/stores/{useDevTools.d.ts → useDevTools.svelte.d.ts} +1 -1
- package/dist/stores/useDevTools.svelte.d.ts.map +1 -0
- package/dist/stores/{useDevTools.js → useDevTools.svelte.js} +8 -7
- package/dist/stores/useIncremark.d.ts +4 -2
- package/dist/stores/useIncremark.d.ts.map +1 -1
- package/dist/stores/useIncremark.js +19 -0
- package/dist/stores/useLocale.svelte.d.ts +29 -0
- package/dist/stores/useLocale.svelte.d.ts.map +1 -0
- package/dist/stores/useLocale.svelte.js +32 -0
- package/dist/stores/useShiki.svelte.d.ts.map +1 -1
- package/dist/stores/useShiki.svelte.js +17 -5
- package/package.json +13 -7
- 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;
|
|
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
|
|
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
|
|
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
|
|
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;
|
|
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
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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,
|
|
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
|
-
|
|
43
|
+
// 使用 $effect 处理挂载和卸载
|
|
44
|
+
$effect(() => {
|
|
45
45
|
devtools.mount();
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
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
|
|
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
|
|
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":"AAAA;;;GAGG;AAEH,OAAO,EAAqB,KAAK,QAAQ,EAAE,KAAK,QAAQ,EAAE,MAAM,cAAc,CAAA;AAC9E,OAAO,EACL,qBAAqB,EACrB,KAAK,
|
|
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":"
|
|
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
|
-
|
|
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
|
|
89
|
+
const manager = getShikiManager();
|
|
90
|
+
const info = await manager.getHighlighter(currentTheme);
|
|
79
91
|
// 按需加载语言
|
|
80
92
|
if (!info.loadedLanguages.has(lang) && lang !== 'text') {
|
|
81
|
-
await
|
|
93
|
+
await manager.loadLanguage(currentTheme, lang);
|
|
82
94
|
}
|
|
83
95
|
// 按需加载主题
|
|
84
96
|
if (!info.loadedThemes.has(currentTheme)) {
|
|
85
|
-
await
|
|
97
|
+
await manager.loadTheme(currentTheme);
|
|
86
98
|
}
|
|
87
|
-
return await
|
|
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.
|
|
4
|
-
"description": "
|
|
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/
|
|
28
|
-
"@incremark/
|
|
29
|
-
"@incremark/shared": "0.
|
|
30
|
-
"@incremark/
|
|
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"}
|