@incremark/svelte 0.3.1 → 0.3.3
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/dist/components/CachedCodeRenderer.svelte +125 -0
- package/dist/components/CachedCodeRenderer.svelte.d.ts +10 -0
- package/dist/components/CachedCodeRenderer.svelte.d.ts.map +1 -0
- package/dist/components/ConfigProvider.svelte +5 -4
- package/dist/components/ConfigProvider.svelte.d.ts +1 -1
- package/dist/components/ConfigProvider.svelte.d.ts.map +1 -1
- package/dist/components/Incremark.svelte +10 -37
- package/dist/components/Incremark.svelte.d.ts +1 -1
- package/dist/components/Incremark.svelte.d.ts.map +1 -1
- package/dist/components/IncremarkCode.svelte +8 -6
- package/dist/components/IncremarkCode.svelte.d.ts.map +1 -1
- package/dist/components/IncremarkCodeDefault.svelte +60 -31
- package/dist/components/IncremarkCodeDefault.svelte.d.ts +2 -0
- package/dist/components/IncremarkCodeDefault.svelte.d.ts.map +1 -1
- package/dist/components/IncremarkContent.svelte +14 -18
- package/dist/components/IncremarkContent.svelte.d.ts.map +1 -1
- package/dist/components/IncremarkFootnotes.svelte +3 -6
- package/dist/components/IncremarkFootnotes.svelte.d.ts.map +1 -1
- package/dist/components/IncremarkInline.svelte +9 -10
- package/dist/components/IncremarkInline.svelte.d.ts.map +1 -1
- package/dist/components/IncremarkMath.svelte +1 -1
- package/dist/components/types.d.ts +1 -1
- package/dist/components/types.d.ts.map +1 -1
- package/dist/context/{definitionsContext.d.ts → definitionsContext.svelte.d.ts} +13 -11
- package/dist/context/definitionsContext.svelte.d.ts.map +1 -0
- package/dist/context/{definitionsContext.js → definitionsContext.svelte.js} +18 -15
- package/dist/index.d.ts +6 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -5
- package/dist/stores/{useBlockTransformer.d.ts → useBlockTransformer.svelte.d.ts} +33 -35
- package/dist/stores/useBlockTransformer.svelte.d.ts.map +1 -0
- package/dist/stores/useBlockTransformer.svelte.js +106 -0
- package/dist/stores/useDevTools.svelte.d.ts +1 -1
- package/dist/stores/useDevTools.svelte.d.ts.map +1 -1
- package/dist/stores/{useIncremark.d.ts → useIncremark.svelte.d.ts} +31 -34
- package/dist/stores/useIncremark.svelte.d.ts.map +1 -0
- package/dist/stores/useIncremark.svelte.js +226 -0
- package/dist/stores/useLocale.svelte.d.ts.map +1 -1
- package/dist/stores/useLocale.svelte.js +3 -2
- package/dist/stores/useShiki.svelte.d.ts +26 -0
- package/dist/stores/useShiki.svelte.d.ts.map +1 -1
- package/dist/stores/useShiki.svelte.js +27 -0
- package/dist/stores/useTypewriter.svelte.d.ts +49 -0
- package/dist/stores/useTypewriter.svelte.d.ts.map +1 -0
- package/dist/stores/useTypewriter.svelte.js +212 -0
- package/dist/utils/cursor.d.ts.map +1 -1
- package/dist/utils/cursor.js +8 -0
- package/package.json +9 -6
- package/dist/context/definitionsContext.d.ts.map +0 -1
- package/dist/stores/useBlockTransformer.d.ts.map +0 -1
- package/dist/stores/useBlockTransformer.js +0 -110
- package/dist/stores/useIncremark.d.ts.map +0 -1
- package/dist/stores/useIncremark.js +0 -208
- package/dist/stores/useTypewriter.d.ts +0 -44
- package/dist/stores/useTypewriter.d.ts.map +0 -1
- package/dist/stores/useTypewriter.js +0 -163
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import type { Component } from 'svelte';
|
|
6
6
|
import type { ParsedBlock } from '@incremark/core';
|
|
7
|
-
import type { UseIncremarkOptions } from '../stores/useIncremark';
|
|
7
|
+
import type { UseIncremarkOptions } from '../stores/useIncremark.svelte.ts';
|
|
8
8
|
/**
|
|
9
9
|
* 组件映射类型
|
|
10
10
|
* 使用 any 以支持不同类型的组件
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/components/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AACvC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAClD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/components/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AACvC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAClD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAA;AAE3E;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAA;AAEvD;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,WAAW,GAAG;IAAE,aAAa,CAAC,EAAE,OAAO,CAAA;CAAE,CAAA;AAEvE;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,qCAAqC;IACrC,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,MAAM,CAAC,EAAE,MAAM,cAAc,CAAC,MAAM,CAAC,CAAA;IACrC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,UAAU,CAAC,EAAE,YAAY,CAAA;IACzB,+CAA+C;IAC/C,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAA;IACjD,oDAAoD;IACpD,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAA;IACjD,0BAA0B;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;IAClD,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,gBAAgB,CAAC,EAAE,mBAAmB,CAAA;IACtC,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,eAAe,CAAC,EAAE,OAAO,CAAA;CAC1B"}
|
|
@@ -1,25 +1,25 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @file Definitions Context - Svelte Context 实现
|
|
3
|
-
* @description 管理 definitions 和 footnotes
|
|
3
|
+
* @description 管理 definitions 和 footnotes 的共享状态,使用 Svelte 5 runes 语法
|
|
4
4
|
*/
|
|
5
|
-
import { type Writable } from 'svelte/store';
|
|
6
5
|
import type { Definition, FootnoteDefinition } from 'mdast';
|
|
7
6
|
/**
|
|
8
|
-
* Definitions Context
|
|
7
|
+
* Definitions Context 值类型(使用 getter 函数)
|
|
9
8
|
*/
|
|
10
9
|
export interface DefinitionsContextValue {
|
|
11
|
-
/** Definitions 映射 */
|
|
12
|
-
|
|
13
|
-
/** Footnote definitions 映射 */
|
|
14
|
-
|
|
15
|
-
/** Footnote 引用顺序 */
|
|
16
|
-
|
|
10
|
+
/** 获取 Definitions 映射 */
|
|
11
|
+
getDefinations: () => Record<string, Definition>;
|
|
12
|
+
/** 获取 Footnote definitions 映射 */
|
|
13
|
+
getFootnoteDefinitions: () => Record<string, FootnoteDefinition>;
|
|
14
|
+
/** 获取 Footnote 引用顺序 */
|
|
15
|
+
getFootnoteReferenceOrder: () => string[];
|
|
17
16
|
}
|
|
18
17
|
/**
|
|
19
18
|
* 设置 Definitions Context
|
|
20
19
|
*
|
|
21
20
|
* @description
|
|
22
21
|
* 在父组件中调用,为子组件提供 definitions context
|
|
22
|
+
* 使用 $state 实现响应式状态
|
|
23
23
|
*
|
|
24
24
|
* @returns 返回设置函数,用于更新 context 值
|
|
25
25
|
*
|
|
@@ -56,9 +56,11 @@ export declare function setDefinitionsContext(): {
|
|
|
56
56
|
* <script>
|
|
57
57
|
* import { getDefinitionsContext } from '@incremark/svelte'
|
|
58
58
|
*
|
|
59
|
-
* const
|
|
59
|
+
* const context = getDefinitionsContext()
|
|
60
|
+
* // 使用 getter 获取值(在模板或 $derived 中使用会自动追踪依赖)
|
|
61
|
+
* const definitions = $derived(context.getDefinations())
|
|
60
62
|
* </script>
|
|
61
63
|
* ```
|
|
62
64
|
*/
|
|
63
65
|
export declare function getDefinitionsContext(): DefinitionsContextValue;
|
|
64
|
-
//# sourceMappingURL=definitionsContext.d.ts.map
|
|
66
|
+
//# sourceMappingURL=definitionsContext.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"definitionsContext.svelte.d.ts","sourceRoot":"","sources":["../../src/context/definitionsContext.svelte.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,OAAO,CAAA;AAE3D;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,wBAAwB;IACxB,cAAc,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;IAChD,iCAAiC;IACjC,sBAAsB,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAA;IAChE,uBAAuB;IACvB,yBAAyB,EAAE,MAAM,MAAM,EAAE,CAAA;CAC1C;AAOD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,qBAAqB;kCAiBE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC;0CAOlB,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC;uCAOrC,MAAM,EAAE;;;;;EA2CnD;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,qBAAqB,IAAI,uBAAuB,CAQ/D"}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @file Definitions Context - Svelte Context 实现
|
|
3
|
-
* @description 管理 definitions 和 footnotes
|
|
3
|
+
* @description 管理 definitions 和 footnotes 的共享状态,使用 Svelte 5 runes 语法
|
|
4
4
|
*/
|
|
5
5
|
import { setContext, getContext } from 'svelte';
|
|
6
|
-
import { writable } from 'svelte/store';
|
|
7
6
|
/**
|
|
8
7
|
* Context key
|
|
9
8
|
*/
|
|
@@ -13,6 +12,7 @@ const DEFINITIONS_CONTEXT_KEY = Symbol('definitionsContext');
|
|
|
13
12
|
*
|
|
14
13
|
* @description
|
|
15
14
|
* 在父组件中调用,为子组件提供 definitions context
|
|
15
|
+
* 使用 $state 实现响应式状态
|
|
16
16
|
*
|
|
17
17
|
* @returns 返回设置函数,用于更新 context 值
|
|
18
18
|
*
|
|
@@ -26,50 +26,51 @@ const DEFINITIONS_CONTEXT_KEY = Symbol('definitionsContext');
|
|
|
26
26
|
* ```
|
|
27
27
|
*/
|
|
28
28
|
export function setDefinitionsContext() {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
29
|
+
// 使用 $state 实现响应式状态(每个组件实例有独立的状态)
|
|
30
|
+
let definationsState = $state({});
|
|
31
|
+
let footnoteDefinitionsState = $state({});
|
|
32
|
+
let footnoteReferenceOrderState = $state([]);
|
|
32
33
|
const contextValue = {
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
34
|
+
getDefinations: () => definationsState,
|
|
35
|
+
getFootnoteDefinitions: () => footnoteDefinitionsState,
|
|
36
|
+
getFootnoteReferenceOrder: () => footnoteReferenceOrderState
|
|
36
37
|
};
|
|
37
38
|
setContext(DEFINITIONS_CONTEXT_KEY, contextValue);
|
|
38
39
|
/**
|
|
39
40
|
* 设置 definitions
|
|
40
41
|
*/
|
|
41
42
|
function setDefinations(definitions) {
|
|
42
|
-
|
|
43
|
+
definationsState = definitions;
|
|
43
44
|
}
|
|
44
45
|
/**
|
|
45
46
|
* 设置 footnote definitions
|
|
46
47
|
*/
|
|
47
48
|
function setFootnoteDefinitions(definitions) {
|
|
48
|
-
|
|
49
|
+
footnoteDefinitionsState = definitions;
|
|
49
50
|
}
|
|
50
51
|
/**
|
|
51
52
|
* 设置 footnote 引用顺序
|
|
52
53
|
*/
|
|
53
54
|
function setFootnoteReferenceOrder(order) {
|
|
54
|
-
|
|
55
|
+
footnoteReferenceOrderState = order;
|
|
55
56
|
}
|
|
56
57
|
/**
|
|
57
58
|
* 清空 definitions
|
|
58
59
|
*/
|
|
59
60
|
function clearDefinations() {
|
|
60
|
-
|
|
61
|
+
definationsState = {};
|
|
61
62
|
}
|
|
62
63
|
/**
|
|
63
64
|
* 清空 footnote definitions
|
|
64
65
|
*/
|
|
65
66
|
function clearFootnoteDefinitions() {
|
|
66
|
-
|
|
67
|
+
footnoteDefinitionsState = {};
|
|
67
68
|
}
|
|
68
69
|
/**
|
|
69
70
|
* 清空 footnote 引用顺序
|
|
70
71
|
*/
|
|
71
72
|
function clearFootnoteReferenceOrder() {
|
|
72
|
-
|
|
73
|
+
footnoteReferenceOrderState = [];
|
|
73
74
|
}
|
|
74
75
|
/**
|
|
75
76
|
* 清空所有 definitions
|
|
@@ -104,7 +105,9 @@ export function setDefinitionsContext() {
|
|
|
104
105
|
* <script>
|
|
105
106
|
* import { getDefinitionsContext } from '@incremark/svelte'
|
|
106
107
|
*
|
|
107
|
-
* const
|
|
108
|
+
* const context = getDefinitionsContext()
|
|
109
|
+
* // 使用 getter 获取值(在模板或 $derived 中使用会自动追踪依赖)
|
|
110
|
+
* const definitions = $derived(context.getDefinations())
|
|
108
111
|
* </script>
|
|
109
112
|
* ```
|
|
110
113
|
*/
|
package/dist/index.d.ts
CHANGED
|
@@ -2,16 +2,17 @@
|
|
|
2
2
|
* @file @incremark/svelte 主入口文件
|
|
3
3
|
* @description Svelte 5 集成库的导出入口
|
|
4
4
|
*/
|
|
5
|
-
export { useIncremark, type UseIncremarkOptions, type UseIncremarkReturn, type TypewriterOptions, type TypewriterControls } from './stores/useIncremark';
|
|
6
|
-
export { useDevTools, type UseDevToolsOptions } from './stores/useDevTools.svelte';
|
|
7
|
-
export { useBlockTransformer, type UseBlockTransformerOptions, type UseBlockTransformerReturn } from './stores/useBlockTransformer';
|
|
8
|
-
export { useLocale, type UseLocaleReturn } from './stores/useLocale.svelte';
|
|
9
|
-
export { setDefinitionsContext, getDefinitionsContext, type DefinitionsContextValue } from './context/definitionsContext';
|
|
5
|
+
export { useIncremark, type UseIncremarkOptions, type UseIncremarkReturn, type TypewriterOptions, type TypewriterControls } from './stores/useIncremark.svelte.ts';
|
|
6
|
+
export { useDevTools, type UseDevToolsOptions } from './stores/useDevTools.svelte.ts';
|
|
7
|
+
export { useBlockTransformer, type UseBlockTransformerOptions, type UseBlockTransformerReturn } from './stores/useBlockTransformer.svelte.ts';
|
|
8
|
+
export { useLocale, type UseLocaleReturn } from './stores/useLocale.svelte.ts';
|
|
9
|
+
export { setDefinitionsContext, getDefinitionsContext, type DefinitionsContextValue } from './context/definitionsContext.svelte.ts';
|
|
10
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';
|
|
11
11
|
export { default as AutoScrollContainer } from './components/AutoScrollContainer.svelte';
|
|
12
12
|
export { default as ThemeProvider } from './ThemeProvider.svelte';
|
|
13
13
|
export { default as ConfigProvider } from './components/ConfigProvider.svelte';
|
|
14
14
|
export type { ParsedBlock, IncrementalUpdate, ParserOptions, BlockStatus, Root, RootContent, SourceBlock, DisplayBlock, TransformerPlugin, TransformerOptions, TransformerState, AnimationEffect } from '@incremark/core';
|
|
15
|
+
export type { Root as MdastRoot, Parent, Heading, Paragraph, Code, Blockquote, List, ListItem, Table, TableCell, ThematicBreak, Text, PhrasingContent, InlineCode, Link, LinkReference, Image, ImageReference, HTML, Definition, FootnoteDefinition } from 'mdast';
|
|
15
16
|
export { BlockTransformer, createBlockTransformer, countChars, sliceAst, cloneNode, codeBlockPlugin, mermaidPlugin, imagePlugin, mathPlugin, thematicBreakPlugin, defaultPlugins, allPlugins, createPlugin } from '@incremark/core';
|
|
16
17
|
export { type DesignTokens, defaultTheme, darkTheme, generateCSSVars, mergeTheme, applyTheme } from '@incremark/theme';
|
|
17
18
|
import { en as enShared, zhCN as zhCNShared } from '@incremark/shared';
|
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,
|
|
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,iCAAiC,CAAA;AAClK,OAAO,EAAE,WAAW,EAAE,KAAK,kBAAkB,EAAE,MAAM,gCAAgC,CAAA;AACrF,OAAO,EACL,mBAAmB,EACnB,KAAK,0BAA0B,EAC/B,KAAK,yBAAyB,EAC/B,MAAM,wCAAwC,CAAA;AAC/C,OAAO,EAAE,SAAS,EAAE,KAAK,eAAe,EAAE,MAAM,8BAA8B,CAAA;AAG9E,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,KAAK,uBAAuB,EAAE,MAAM,wCAAwC,CAAA;AAGnI,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,YAAY,EACV,IAAI,IAAI,SAAS,EACjB,MAAM,EAEN,OAAO,EACP,SAAS,EACT,IAAI,EACJ,UAAU,EACV,IAAI,EACJ,QAAQ,EACR,KAAK,EACL,SAAS,EACT,aAAa,EAEb,IAAI,EACJ,eAAe,EACf,UAAU,EACV,IAAI,EACJ,aAAa,EACb,KAAK,EACL,cAAc,EAEd,IAAI,EAEJ,UAAU,EACV,kBAAkB,EACnB,MAAM,OAAO,CAAA;AAGd,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
|
@@ -3,12 +3,12 @@
|
|
|
3
3
|
* @description Svelte 5 集成库的导出入口
|
|
4
4
|
*/
|
|
5
5
|
// Stores/Utilities
|
|
6
|
-
export { useIncremark } from './stores/useIncremark';
|
|
7
|
-
export { useDevTools } from './stores/useDevTools.svelte';
|
|
8
|
-
export { useBlockTransformer } from './stores/useBlockTransformer';
|
|
9
|
-
export { useLocale } from './stores/useLocale.svelte';
|
|
6
|
+
export { useIncremark } from './stores/useIncremark.svelte.ts';
|
|
7
|
+
export { useDevTools } from './stores/useDevTools.svelte.ts';
|
|
8
|
+
export { useBlockTransformer } from './stores/useBlockTransformer.svelte.ts';
|
|
9
|
+
export { useLocale } from './stores/useLocale.svelte.ts';
|
|
10
10
|
// Context
|
|
11
|
-
export { setDefinitionsContext, getDefinitionsContext } from './context/definitionsContext';
|
|
11
|
+
export { setDefinitionsContext, getDefinitionsContext } from './context/definitionsContext.svelte.ts';
|
|
12
12
|
// Components
|
|
13
13
|
export { Incremark, IncremarkContent, IncremarkParagraph, IncremarkInline, IncremarkHeading, IncremarkCode, IncremarkList, IncremarkTable, IncremarkBlockquote, IncremarkThematicBreak, IncremarkMath, IncremarkHtmlElement, IncremarkFootnotes, IncremarkDefault, IncremarkRenderer } from './components';
|
|
14
14
|
// Additional Components
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @file useBlockTransformer
|
|
3
|
-
* @description 用于控制 blocks
|
|
2
|
+
* @file useBlockTransformer - 块转换器
|
|
3
|
+
* @description 用于控制 blocks 的逐步显示(打字机效果),使用 Svelte 5 runes 语法
|
|
4
4
|
*/
|
|
5
|
-
import { type
|
|
6
|
-
import { BlockTransformer, type TransformerOptions, type DisplayBlock, type SourceBlock, type AnimationEffect } from '@incremark/core';
|
|
5
|
+
import { type TransformerOptions, type DisplayBlock, type SourceBlock, type AnimationEffect, type BlockTransformer } from '@incremark/core';
|
|
7
6
|
/**
|
|
8
7
|
* useBlockTransformer 选项
|
|
9
8
|
*/
|
|
@@ -13,14 +12,16 @@ export interface UseBlockTransformerOptions extends Omit<TransformerOptions, 'on
|
|
|
13
12
|
* useBlockTransformer 返回值
|
|
14
13
|
*/
|
|
15
14
|
export interface UseBlockTransformerReturn<T = unknown> {
|
|
16
|
-
/** 用于渲染的 display blocks */
|
|
17
|
-
displayBlocks:
|
|
18
|
-
/**
|
|
19
|
-
isProcessing:
|
|
20
|
-
/**
|
|
21
|
-
isPaused:
|
|
22
|
-
/**
|
|
23
|
-
effect:
|
|
15
|
+
/** 用于渲染的 display blocks(getter) */
|
|
16
|
+
readonly displayBlocks: DisplayBlock<T>[];
|
|
17
|
+
/** 是否正在处理中(getter) */
|
|
18
|
+
readonly isProcessing: boolean;
|
|
19
|
+
/** 是否已暂停(getter) */
|
|
20
|
+
readonly isPaused: boolean;
|
|
21
|
+
/** 当前动画效果(getter) */
|
|
22
|
+
readonly effect: AnimationEffect;
|
|
23
|
+
/** 推入新的 source blocks */
|
|
24
|
+
push: (blocks: SourceBlock<T>[]) => void;
|
|
24
25
|
/** 跳过所有动画 */
|
|
25
26
|
skip: () => void;
|
|
26
27
|
/** 重置状态 */
|
|
@@ -35,11 +36,11 @@ export interface UseBlockTransformerReturn<T = unknown> {
|
|
|
35
36
|
transformer: BlockTransformer<T>;
|
|
36
37
|
}
|
|
37
38
|
/**
|
|
38
|
-
* Svelte 5
|
|
39
|
+
* Svelte 5 Composable: Block Transformer
|
|
39
40
|
*
|
|
40
41
|
* @description
|
|
41
42
|
* 用于控制 blocks 的逐步显示(打字机效果)
|
|
42
|
-
*
|
|
43
|
+
* 作为解析器和渲染器之间的中间层,使用 Svelte 5 runes 语法
|
|
43
44
|
*
|
|
44
45
|
* 特性:
|
|
45
46
|
* - 使用 requestAnimationFrame 实现流畅动画
|
|
@@ -47,7 +48,6 @@ export interface UseBlockTransformerReturn<T = unknown> {
|
|
|
47
48
|
* - 支持动画效果 `effect: 'typing'`
|
|
48
49
|
* - 页面不可见时自动暂停
|
|
49
50
|
*
|
|
50
|
-
* @param sourceBlocks - 源 blocks store
|
|
51
51
|
* @param options - 转换器选项
|
|
52
52
|
* @returns 转换器状态和控制对象
|
|
53
53
|
*
|
|
@@ -55,35 +55,33 @@ export interface UseBlockTransformerReturn<T = unknown> {
|
|
|
55
55
|
* ```svelte
|
|
56
56
|
* <script>
|
|
57
57
|
* import { useIncremark, useBlockTransformer, defaultPlugins } from '@incremark/svelte'
|
|
58
|
-
* import { derived } from 'svelte/store'
|
|
59
58
|
*
|
|
60
|
-
* const
|
|
61
|
-
*
|
|
62
|
-
* // 使用 completedBlocks 作为输入(ID 稳定)
|
|
63
|
-
* const sourceBlocks = derived(completedBlocks, ($blocks) =>
|
|
64
|
-
* $blocks.map(b => ({
|
|
65
|
-
* id: b.id,
|
|
66
|
-
* node: b.node,
|
|
67
|
-
* status: b.status
|
|
68
|
-
* }))
|
|
69
|
-
* )
|
|
59
|
+
* const incremark = useIncremark()
|
|
70
60
|
*
|
|
71
61
|
* // 添加打字机效果
|
|
72
|
-
* const
|
|
62
|
+
* const blockTransformer = useBlockTransformer({
|
|
73
63
|
* charsPerTick: [1, 3],
|
|
74
64
|
* tickInterval: 30,
|
|
75
65
|
* effect: 'typing',
|
|
76
66
|
* plugins: defaultPlugins
|
|
77
67
|
* })
|
|
68
|
+
*
|
|
69
|
+
* // 当 blocks 变化时推入
|
|
70
|
+
* $effect(() => {
|
|
71
|
+
* const sourceBlocks = incremark.completedBlocks.map(b => ({
|
|
72
|
+
* id: b.id,
|
|
73
|
+
* node: b.node,
|
|
74
|
+
* status: b.status
|
|
75
|
+
* }))
|
|
76
|
+
* blockTransformer.push(sourceBlocks)
|
|
77
|
+
* })
|
|
78
78
|
* </script>
|
|
79
79
|
*
|
|
80
|
-
* <
|
|
81
|
-
*
|
|
82
|
-
* {
|
|
83
|
-
*
|
|
84
|
-
* {/if}
|
|
85
|
-
* </template>
|
|
80
|
+
* <Incremark blocks={blockTransformer.displayBlocks} />
|
|
81
|
+
* {#if blockTransformer.isProcessing}
|
|
82
|
+
* <button onclick={blockTransformer.skip}>跳过</button>
|
|
83
|
+
* {/if}
|
|
86
84
|
* ```
|
|
87
85
|
*/
|
|
88
|
-
export declare function useBlockTransformer<T = unknown>(
|
|
89
|
-
//# sourceMappingURL=useBlockTransformer.d.ts.map
|
|
86
|
+
export declare function useBlockTransformer<T = unknown>(options?: UseBlockTransformerOptions): UseBlockTransformerReturn<T>;
|
|
87
|
+
//# sourceMappingURL=useBlockTransformer.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useBlockTransformer.svelte.d.ts","sourceRoot":"","sources":["../../src/stores/useBlockTransformer.svelte.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAEL,KAAK,kBAAkB,EACvB,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACtB,MAAM,iBAAiB,CAAA;AAExB;;GAEG;AACH,MAAM,WAAW,0BAA2B,SAAQ,IAAI,CAAC,kBAAkB,EAAE,UAAU,CAAC;CAAG;AAE3F;;GAEG;AACH,MAAM,WAAW,yBAAyB,CAAC,CAAC,GAAG,OAAO;IACpD,mCAAmC;IACnC,QAAQ,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,CAAA;IACzC,sBAAsB;IACtB,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAA;IAC9B,oBAAoB;IACpB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAA;IAC1B,qBAAqB;IACrB,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAA;IAChC,yBAAyB;IACzB,IAAI,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAA;IACxC,aAAa;IACb,IAAI,EAAE,MAAM,IAAI,CAAA;IAChB,WAAW;IACX,KAAK,EAAE,MAAM,IAAI,CAAA;IACjB,WAAW;IACX,KAAK,EAAE,MAAM,IAAI,CAAA;IACjB,WAAW;IACX,MAAM,EAAE,MAAM,IAAI,CAAA;IAClB,aAAa;IACb,UAAU,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,kBAAkB,EAAE,cAAc,GAAG,cAAc,GAAG,QAAQ,GAAG,eAAe,CAAC,CAAC,KAAK,IAAI,CAAA;IAC9H,6BAA6B;IAC7B,WAAW,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAA;CACjC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,GAAG,OAAO,EAC7C,OAAO,GAAE,0BAA+B,GACvC,yBAAyB,CAAC,CAAC,CAAC,CAwD9B"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file useBlockTransformer - 块转换器
|
|
3
|
+
* @description 用于控制 blocks 的逐步显示(打字机效果),使用 Svelte 5 runes 语法
|
|
4
|
+
*/
|
|
5
|
+
import { createBlockTransformer } from '@incremark/core';
|
|
6
|
+
/**
|
|
7
|
+
* Svelte 5 Composable: Block Transformer
|
|
8
|
+
*
|
|
9
|
+
* @description
|
|
10
|
+
* 用于控制 blocks 的逐步显示(打字机效果)
|
|
11
|
+
* 作为解析器和渲染器之间的中间层,使用 Svelte 5 runes 语法
|
|
12
|
+
*
|
|
13
|
+
* 特性:
|
|
14
|
+
* - 使用 requestAnimationFrame 实现流畅动画
|
|
15
|
+
* - 支持随机步长 `charsPerTick: [1, 3]`
|
|
16
|
+
* - 支持动画效果 `effect: 'typing'`
|
|
17
|
+
* - 页面不可见时自动暂停
|
|
18
|
+
*
|
|
19
|
+
* @param options - 转换器选项
|
|
20
|
+
* @returns 转换器状态和控制对象
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* ```svelte
|
|
24
|
+
* <script>
|
|
25
|
+
* import { useIncremark, useBlockTransformer, defaultPlugins } from '@incremark/svelte'
|
|
26
|
+
*
|
|
27
|
+
* const incremark = useIncremark()
|
|
28
|
+
*
|
|
29
|
+
* // 添加打字机效果
|
|
30
|
+
* const blockTransformer = useBlockTransformer({
|
|
31
|
+
* charsPerTick: [1, 3],
|
|
32
|
+
* tickInterval: 30,
|
|
33
|
+
* effect: 'typing',
|
|
34
|
+
* plugins: defaultPlugins
|
|
35
|
+
* })
|
|
36
|
+
*
|
|
37
|
+
* // 当 blocks 变化时推入
|
|
38
|
+
* $effect(() => {
|
|
39
|
+
* const sourceBlocks = incremark.completedBlocks.map(b => ({
|
|
40
|
+
* id: b.id,
|
|
41
|
+
* node: b.node,
|
|
42
|
+
* status: b.status
|
|
43
|
+
* }))
|
|
44
|
+
* blockTransformer.push(sourceBlocks)
|
|
45
|
+
* })
|
|
46
|
+
* </script>
|
|
47
|
+
*
|
|
48
|
+
* <Incremark blocks={blockTransformer.displayBlocks} />
|
|
49
|
+
* {#if blockTransformer.isProcessing}
|
|
50
|
+
* <button onclick={blockTransformer.skip}>跳过</button>
|
|
51
|
+
* {/if}
|
|
52
|
+
* ```
|
|
53
|
+
*/
|
|
54
|
+
export function useBlockTransformer(options = {}) {
|
|
55
|
+
// 使用 $state runes
|
|
56
|
+
let displayBlocksState = $state([]);
|
|
57
|
+
let isProcessingState = $state(false);
|
|
58
|
+
let isPausedState = $state(false);
|
|
59
|
+
let effectState = $state(options.effect ?? 'none');
|
|
60
|
+
const transformer = createBlockTransformer({
|
|
61
|
+
...options,
|
|
62
|
+
onChange: (blocks) => {
|
|
63
|
+
displayBlocksState = blocks;
|
|
64
|
+
isProcessingState = transformer.isProcessing();
|
|
65
|
+
isPausedState = transformer.isPausedState();
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
/**
|
|
69
|
+
* 推入新的 source blocks
|
|
70
|
+
*/
|
|
71
|
+
function push(blocks) {
|
|
72
|
+
transformer.push(blocks);
|
|
73
|
+
// 处理正在显示的 block 内容更新
|
|
74
|
+
const currentDisplaying = displayBlocksState.find((b) => !b.isDisplayComplete);
|
|
75
|
+
if (currentDisplaying) {
|
|
76
|
+
const updated = blocks.find((b) => b.id === currentDisplaying.id);
|
|
77
|
+
if (updated) {
|
|
78
|
+
transformer.update(updated);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
return {
|
|
83
|
+
get displayBlocks() { return displayBlocksState; },
|
|
84
|
+
get isProcessing() { return isProcessingState; },
|
|
85
|
+
get isPaused() { return isPausedState; },
|
|
86
|
+
get effect() { return effectState; },
|
|
87
|
+
push,
|
|
88
|
+
skip: () => transformer.skip(),
|
|
89
|
+
reset: () => transformer.reset(),
|
|
90
|
+
pause: () => {
|
|
91
|
+
transformer.pause();
|
|
92
|
+
isPausedState = true;
|
|
93
|
+
},
|
|
94
|
+
resume: () => {
|
|
95
|
+
transformer.resume();
|
|
96
|
+
isPausedState = false;
|
|
97
|
+
},
|
|
98
|
+
setOptions: (opts) => {
|
|
99
|
+
transformer.setOptions(opts);
|
|
100
|
+
if (opts.effect !== undefined) {
|
|
101
|
+
effectState = opts.effect;
|
|
102
|
+
}
|
|
103
|
+
},
|
|
104
|
+
transformer
|
|
105
|
+
};
|
|
106
|
+
}
|
|
@@ -1 +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,
|
|
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,0BAA0B,CAAA;AAElE;;GAEG;AACH,MAAM,WAAW,kBAAmB,SAAQ,eAAe;CAAG;AAE9D;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,WAAW,CACzB,SAAS,EAAE,kBAAkB,EAC7B,OAAO,GAAE,kBAAuB,mDAkCjC"}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @file useIncremark
|
|
3
|
-
* @description Svelte 5
|
|
2
|
+
* @file useIncremark - 核心 Composable
|
|
3
|
+
* @description Svelte 5 Composable: Incremark 流式 Markdown 解析器(使用 runes 语法)
|
|
4
4
|
*/
|
|
5
|
-
import { type Writable, type Readable } from 'svelte/store';
|
|
6
5
|
import { createIncremarkParser, type IncremarkParserOptions, type ParsedBlock, type IncrementalUpdate, type Root, type TransformerPlugin, type AnimationEffect } from '@incremark/core';
|
|
7
6
|
/**
|
|
8
7
|
* 打字机效果配置
|
|
@@ -37,16 +36,16 @@ export type RenderableBlock = ParsedBlock & {
|
|
|
37
36
|
* 打字机控制对象
|
|
38
37
|
*/
|
|
39
38
|
export interface TypewriterControls {
|
|
40
|
-
/**
|
|
41
|
-
enabled:
|
|
39
|
+
/** 是否启用(只读 getter) */
|
|
40
|
+
readonly enabled: boolean;
|
|
42
41
|
/** 设置是否启用 */
|
|
43
42
|
setEnabled: (enabled: boolean) => void;
|
|
44
43
|
/** 是否正在处理中 */
|
|
45
|
-
isProcessing:
|
|
44
|
+
readonly isProcessing: boolean;
|
|
46
45
|
/** 是否已暂停 */
|
|
47
|
-
isPaused:
|
|
46
|
+
readonly isPaused: boolean;
|
|
48
47
|
/** 当前动画效果 */
|
|
49
|
-
effect:
|
|
48
|
+
readonly effect: AnimationEffect;
|
|
50
49
|
/** 跳过动画,直接显示全部 */
|
|
51
50
|
skip: () => void;
|
|
52
51
|
/** 暂停动画 */
|
|
@@ -60,29 +59,29 @@ export interface TypewriterControls {
|
|
|
60
59
|
* useIncremark 返回值
|
|
61
60
|
*/
|
|
62
61
|
export interface UseIncremarkReturn {
|
|
63
|
-
/** 已收集的完整 Markdown
|
|
64
|
-
markdown:
|
|
65
|
-
/**
|
|
66
|
-
completedBlocks:
|
|
67
|
-
/**
|
|
68
|
-
pendingBlocks:
|
|
69
|
-
/** 当前完整的 AST */
|
|
70
|
-
ast:
|
|
71
|
-
/** 用于渲染的 blocks
|
|
72
|
-
blocks:
|
|
73
|
-
/**
|
|
74
|
-
isLoading:
|
|
75
|
-
/** 是否已完成(finalize) */
|
|
76
|
-
isFinalized:
|
|
62
|
+
/** 已收集的完整 Markdown 字符串(getter) */
|
|
63
|
+
readonly markdown: string;
|
|
64
|
+
/** 已完成的块列表(getter) */
|
|
65
|
+
readonly completedBlocks: ParsedBlock[];
|
|
66
|
+
/** 待处理的块列表(getter) */
|
|
67
|
+
readonly pendingBlocks: ParsedBlock[];
|
|
68
|
+
/** 当前完整的 AST(getter) */
|
|
69
|
+
readonly ast: Root;
|
|
70
|
+
/** 用于渲染的 blocks(getter,根据打字机设置自动处理) */
|
|
71
|
+
readonly blocks: Array<RenderableBlock>;
|
|
72
|
+
/** 是否正在加载(getter) */
|
|
73
|
+
readonly isLoading: boolean;
|
|
74
|
+
/** 是否已完成(finalize)(getter) */
|
|
75
|
+
readonly isFinalized: boolean;
|
|
77
76
|
/**
|
|
78
|
-
*
|
|
77
|
+
* 内容是否完全显示完成(getter)
|
|
79
78
|
* - 无打字机:等于 isFinalized
|
|
80
79
|
* - 有打字机:isFinalized + 动画播放完成
|
|
81
80
|
* 适用于控制 footnote 等需要在内容完全显示后才出现的元素
|
|
82
81
|
*/
|
|
83
|
-
isDisplayComplete:
|
|
84
|
-
/**
|
|
85
|
-
footnoteReferenceOrder:
|
|
82
|
+
readonly isDisplayComplete: boolean;
|
|
83
|
+
/** 脚注引用的出现顺序(getter) */
|
|
84
|
+
readonly footnoteReferenceOrder: string[];
|
|
86
85
|
/** 追加内容 */
|
|
87
86
|
append: (chunk: string) => IncrementalUpdate;
|
|
88
87
|
/** 完成解析 */
|
|
@@ -101,10 +100,10 @@ export interface UseIncremarkReturn {
|
|
|
101
100
|
typewriter: TypewriterControls;
|
|
102
101
|
}
|
|
103
102
|
/**
|
|
104
|
-
* Svelte 5
|
|
103
|
+
* Svelte 5 Composable: Incremark 流式 Markdown 解析器
|
|
105
104
|
*
|
|
106
105
|
* @description
|
|
107
|
-
* 核心
|
|
106
|
+
* 核心 composable,管理解析器状态和操作,使用 Svelte 5 runes 语法
|
|
108
107
|
*
|
|
109
108
|
* @param options - 解析器选项
|
|
110
109
|
* @returns 解析器状态和控制对象
|
|
@@ -115,10 +114,10 @@ export interface UseIncremarkReturn {
|
|
|
115
114
|
* import { useIncremark, Incremark } from '@incremark/svelte'
|
|
116
115
|
*
|
|
117
116
|
* // 基础用法
|
|
118
|
-
* const
|
|
117
|
+
* const incremark = useIncremark()
|
|
119
118
|
*
|
|
120
119
|
* // 启用打字机效果
|
|
121
|
-
* const
|
|
120
|
+
* const incremark = useIncremark({
|
|
122
121
|
* typewriter: {
|
|
123
122
|
* enabled: true,
|
|
124
123
|
* charsPerTick: [1, 3],
|
|
@@ -129,10 +128,8 @@ export interface UseIncremarkReturn {
|
|
|
129
128
|
* })
|
|
130
129
|
* </script>
|
|
131
130
|
*
|
|
132
|
-
* <
|
|
133
|
-
* <Incremark blocks={$blocks} />
|
|
134
|
-
* </template>
|
|
131
|
+
* <Incremark blocks={incremark.blocks} />
|
|
135
132
|
* ```
|
|
136
133
|
*/
|
|
137
134
|
export declare function useIncremark(options?: UseIncremarkOptions): UseIncremarkReturn;
|
|
138
|
-
//# sourceMappingURL=useIncremark.d.ts.map
|
|
135
|
+
//# sourceMappingURL=useIncremark.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useIncremark.svelte.d.ts","sourceRoot":"","sources":["../../src/stores/useIncremark.svelte.ts"],"names":[],"mappings":"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"}
|