@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.
- 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 +13 -12
- 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/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
|
@@ -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
|
}
|
|
@@ -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.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/
|
|
28
|
-
"@incremark/
|
|
29
|
-
"@incremark/
|
|
30
|
-
"@incremark/
|
|
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"}
|