@lytjs/renderer 5.0.0 → 6.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (88) hide show
  1. package/README.md +371 -204
  2. package/dist/dom.cjs +12 -1
  3. package/dist/dom.cjs.map +1 -0
  4. package/dist/dom.d.cts +1 -0
  5. package/dist/dom.d.ts +1 -0
  6. package/dist/dom.mjs +3 -1
  7. package/dist/dom.mjs.map +1 -0
  8. package/dist/index.cjs +3312 -1
  9. package/dist/index.cjs.map +1 -0
  10. package/dist/index.d.cts +1004 -0
  11. package/dist/index.d.ts +1004 -0
  12. package/dist/index.mjs +3190 -1
  13. package/dist/index.mjs.map +1 -0
  14. package/dist/ssr.cjs +310 -1
  15. package/dist/ssr.cjs.map +1 -0
  16. package/dist/ssr.d.cts +21 -0
  17. package/dist/ssr.d.ts +21 -0
  18. package/dist/ssr.mjs +308 -1
  19. package/dist/ssr.mjs.map +1 -0
  20. package/package.json +35 -58
  21. package/dist/miniapp.cjs +0 -21
  22. package/dist/miniapp.mjs +0 -21
  23. package/dist/native.cjs +0 -1
  24. package/dist/native.mjs +0 -1
  25. package/dist/types/create-renderer.d.ts +0 -20
  26. package/dist/types/create-renderer.d.ts.map +0 -1
  27. package/dist/types/dom/dom-ops.d.ts +0 -74
  28. package/dist/types/dom/dom-ops.d.ts.map +0 -1
  29. package/dist/types/dom/dom-renderer.d.ts +0 -243
  30. package/dist/types/dom/dom-renderer.d.ts.map +0 -1
  31. package/dist/types/dom/index.d.ts +0 -17
  32. package/dist/types/dom/index.d.ts.map +0 -1
  33. package/dist/types/dom/patch-events.d.ts +0 -123
  34. package/dist/types/dom/patch-events.d.ts.map +0 -1
  35. package/dist/types/dom/patch-props.d.ts +0 -118
  36. package/dist/types/dom/patch-props.d.ts.map +0 -1
  37. package/dist/types/index.d.ts +0 -36
  38. package/dist/types/index.d.ts.map +0 -1
  39. package/dist/types/miniapp/index.d.ts +0 -21
  40. package/dist/types/miniapp/index.d.ts.map +0 -1
  41. package/dist/types/miniapp/miniapp-compiler.d.ts +0 -269
  42. package/dist/types/miniapp/miniapp-compiler.d.ts.map +0 -1
  43. package/dist/types/miniapp/miniapp-event-bridge.d.ts +0 -255
  44. package/dist/types/miniapp/miniapp-event-bridge.d.ts.map +0 -1
  45. package/dist/types/miniapp/miniapp-lifecycle.d.ts +0 -224
  46. package/dist/types/miniapp/miniapp-lifecycle.d.ts.map +0 -1
  47. package/dist/types/miniapp/miniapp-renderer.d.ts +0 -269
  48. package/dist/types/miniapp/miniapp-renderer.d.ts.map +0 -1
  49. package/dist/types/miniapp/miniapp-utils.d.ts +0 -168
  50. package/dist/types/miniapp/miniapp-utils.d.ts.map +0 -1
  51. package/dist/types/miniapp/shared-constants.d.ts +0 -28
  52. package/dist/types/miniapp/shared-constants.d.ts.map +0 -1
  53. package/dist/types/mount.d.ts +0 -32
  54. package/dist/types/mount.d.ts.map +0 -1
  55. package/dist/types/native/index.d.ts +0 -13
  56. package/dist/types/native/index.d.ts.map +0 -1
  57. package/dist/types/native/native-renderer.d.ts +0 -249
  58. package/dist/types/native/native-renderer.d.ts.map +0 -1
  59. package/dist/types/patch.d.ts +0 -23
  60. package/dist/types/patch.d.ts.map +0 -1
  61. package/dist/types/props.d.ts +0 -19
  62. package/dist/types/props.d.ts.map +0 -1
  63. package/dist/types/renderer-interfaces.d.ts +0 -157
  64. package/dist/types/renderer-interfaces.d.ts.map +0 -1
  65. package/dist/types/shared/abstract-renderer.d.ts +0 -74
  66. package/dist/types/shared/abstract-renderer.d.ts.map +0 -1
  67. package/dist/types/ssr/hydration.d.ts +0 -267
  68. package/dist/types/ssr/hydration.d.ts.map +0 -1
  69. package/dist/types/ssr/index.d.ts +0 -15
  70. package/dist/types/ssr/index.d.ts.map +0 -1
  71. package/dist/types/ssr/ssr-renderer.d.ts +0 -277
  72. package/dist/types/ssr/ssr-renderer.d.ts.map +0 -1
  73. package/dist/types/unmount.d.ts +0 -16
  74. package/dist/types/unmount.d.ts.map +0 -1
  75. package/dist/types/vapor/index.d.ts +0 -18
  76. package/dist/types/vapor/index.d.ts.map +0 -1
  77. package/dist/types/vapor/vapor-compiler.d.ts +0 -76
  78. package/dist/types/vapor/vapor-compiler.d.ts.map +0 -1
  79. package/dist/types/vapor/vapor-component.d.ts +0 -55
  80. package/dist/types/vapor/vapor-component.d.ts.map +0 -1
  81. package/dist/types/vapor/vapor-reactive.d.ts +0 -133
  82. package/dist/types/vapor/vapor-reactive.d.ts.map +0 -1
  83. package/dist/types/vapor/vapor-renderer.d.ts +0 -135
  84. package/dist/types/vapor/vapor-renderer.d.ts.map +0 -1
  85. package/dist/types/vnode.d.ts +0 -203
  86. package/dist/types/vnode.d.ts.map +0 -1
  87. package/dist/vapor.cjs +0 -1
  88. package/dist/vapor.mjs +0 -1
@@ -1,76 +0,0 @@
1
- /**
2
- * Lyt.js Vapor Mode - 模板编译器
3
- *
4
- * 将 HTML 模板编译为直接 DOM 操作的渲染函数。
5
- * 编译后的函数直接创建 DOM 元素并绑定信号,无需 VDOM 中间层。
6
- *
7
- * 支持的语法:
8
- * - 文本插值: {{ expression }}
9
- * - 事件绑定: on:event="handler"
10
- * - 属性绑定: :prop="expression"
11
- * - 条件渲染: v-if="expression"
12
- * - 列表渲染: v-each="item in expression"
13
- */
14
- import type { VaporElement } from './vapor-reactive';
15
- /** 编译后的渲染函数 */
16
- export type VaporRenderFunction = (ctx: Record<string, unknown>) => VaporElement;
17
- /** AST 节点类型 */
18
- type ASTNodeType = 'element' | 'text' | 'interpolation' | 'fragment';
19
- /** AST 节点 */
20
- interface ASTNode {
21
- type: ASTNodeType;
22
- tag?: string;
23
- text?: string;
24
- expression?: string;
25
- props?: Record<string, string>;
26
- events?: Record<string, string>;
27
- directives?: {
28
- if?: string;
29
- each?: {
30
- item: string;
31
- expression: string;
32
- };
33
- };
34
- children?: ASTNode[];
35
- }
36
- /** 编译结果 */
37
- export interface VaporCompileResult {
38
- /** 渲染函数 */
39
- render: VaporRenderFunction;
40
- /** AST(调试用) */
41
- ast: ASTNode;
42
- }
43
- /**
44
- * 简单的 HTML 模板解析器
45
- *
46
- * 将模板字符串解析为 AST 树。
47
- */
48
- declare function parseTemplate(template: string): ASTNode;
49
- /**
50
- * 将 AST 节点编译为渲染函数
51
- *
52
- * @param template HTML 模板字符串
53
- * @returns 编译结果
54
- */
55
- export declare function compileToVapor(template: string): VaporCompileResult;
56
- /**
57
- * 递归渲染 AST 节点为 DOM 元素
58
- */
59
- declare function renderASTNode(node: ASTNode, ctx: Record<string, unknown>, factory: (tag: string) => VaporElement): VaporElement;
60
- /**
61
- * 从上下文中解析表达式
62
- *
63
- * 支持简单属性访问和点号路径。
64
- * 如果解析结果是 Signal,返回 Signal 本身(不调用)。
65
- */
66
- declare function resolveExpression(ctx: Record<string, unknown>, expression: string): unknown;
67
- /**
68
- * 清理 Vapor 元素的所有 effect 绑定
69
- *
70
- * 在组件卸载或重新渲染时调用,停止所有响应式绑定以避免内存泄漏。
71
- *
72
- * @param el - 要清理的 Vapor 元素
73
- */
74
- export declare function cleanupVaporElement(el: VaporElement): void;
75
- export { parseTemplate, renderASTNode, resolveExpression };
76
- //# sourceMappingURL=vapor-compiler.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"vapor-compiler.d.ts","sourceRoot":"","sources":["../../../src/vapor/vapor-compiler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAWrD,eAAe;AACf,MAAM,MAAM,mBAAmB,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,YAAY,CAAA;AAEhF,eAAe;AACf,KAAK,WAAW,GAAG,SAAS,GAAG,MAAM,GAAG,eAAe,GAAG,UAAU,CAAA;AAEpE,aAAa;AACb,UAAU,OAAO;IACf,IAAI,EAAE,WAAW,CAAA;IACjB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/B,UAAU,CAAC,EAAE;QACX,EAAE,CAAC,EAAE,MAAM,CAAA;QACX,IAAI,CAAC,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,UAAU,EAAE,MAAM,CAAA;SAAE,CAAA;KAC5C,CAAA;IACD,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAA;CACrB;AAED,WAAW;AACX,MAAM,WAAW,kBAAkB;IACjC,WAAW;IACX,MAAM,EAAE,mBAAmB,CAAA;IAC3B,eAAe;IACf,GAAG,EAAE,OAAO,CAAA;CACb;AAMD;;;;GAIG;AACH,iBAAS,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CA8EhD;AA6GD;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,kBAAkB,CAInE;AAYD;;GAEG;AACH,iBAAS,aAAa,CACpB,IAAI,EAAE,OAAO,EACb,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5B,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,YAAY,GACrC,YAAY,CAmMd;AAED;;;;;GAKG;AACH,iBAAS,iBAAiB,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAgBpF;AA4BD;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,CAyC1D;AAMD,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,iBAAiB,EAAE,CAAC"}
@@ -1,55 +0,0 @@
1
- /**
2
- * Lyt.js Vapor Mode - 组件系统
3
- *
4
- * 提供 Vapor Mode 的组件定义和 App 创建功能。
5
- * 与标准 defineComponent 类似,但使用 Vapor 渲染器(无 VDOM)。
6
- */
7
- import type { VaporComponentOptions, VaporApp } from './vapor-renderer';
8
- import type { VaporElement } from './vapor-reactive';
9
- /** Vapor 组件实例 */
10
- export interface VaporComponentInstance {
11
- /** 组件选项 */
12
- options: VaporComponentOptions;
13
- /** 组件上下文(setup 返回值) */
14
- ctx: Record<string, unknown>;
15
- /** 根 DOM 元素 */
16
- el: VaporElement | null;
17
- /** 是否已挂载 */
18
- isMounted: boolean;
19
- /** 父组件实例 */
20
- parent: VaporComponentInstance | null;
21
- /** 子组件实例 */
22
- children: VaporComponentInstance[];
23
- /** 传递的 props */
24
- props: Record<string, unknown>;
25
- /** 卸载函数 */
26
- _unmount?: () => void;
27
- }
28
- /**
29
- * 定义 Vapor 组件
30
- *
31
- * 与 defineComponent 类似,但使用 Vapor Mode 渲染。
32
- * 不创建 VDOM,直接操作 DOM。
33
- *
34
- * @param options 组件选项
35
- * @returns 组件构造函数
36
- */
37
- export declare function defineVaporComponent(options: VaporComponentOptions): VaporComponentOptions;
38
- /**
39
- * 创建 Vapor Mode 应用
40
- *
41
- * 类似 createApp,但使用 Vapor 渲染器。
42
- *
43
- * @param rootComponent 根组件选项
44
- * @returns VaporApp 实例
45
- */
46
- export declare function createVaporApp(rootComponent: VaporComponentOptions): VaporApp;
47
- /**
48
- * 渲染 Vapor 组件为 DOM 元素
49
- *
50
- * @param component 组件选项
51
- * @param props 传递给组件的 props
52
- * @returns 渲染后的 DOM 元素
53
- */
54
- export declare function renderVaporComponent(component: VaporComponentOptions, props?: Record<string, unknown>): VaporElement;
55
- //# sourceMappingURL=vapor-component.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"vapor-component.d.ts","sourceRoot":"","sources":["../../../src/vapor/vapor-component.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAa,qBAAqB,EAAE,QAAQ,EAAkB,MAAM,kBAAkB,CAAC;AAEnG,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAOrD,iBAAiB;AACjB,MAAM,WAAW,sBAAsB;IACrC,WAAW;IACX,OAAO,EAAE,qBAAqB,CAAA;IAC9B,uBAAuB;IACvB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC5B,eAAe;IACf,EAAE,EAAE,YAAY,GAAG,IAAI,CAAA;IACvB,YAAY;IACZ,SAAS,EAAE,OAAO,CAAA;IAClB,YAAY;IACZ,MAAM,EAAE,sBAAsB,GAAG,IAAI,CAAA;IACrC,YAAY;IACZ,QAAQ,EAAE,sBAAsB,EAAE,CAAA;IAClC,gBAAgB;IAChB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC9B,WAAW;IACX,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;CACtB;AAMD;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,qBAAqB,GAAG,qBAAqB,CAI1F;AAMD;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,aAAa,EAAE,qBAAqB,GAAG,QAAQ,CAoD7E;AAMD;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,qBAAqB,EAChC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,YAAY,CAmCd"}
@@ -1,133 +0,0 @@
1
- /**
2
- * Lyt.js Vapor Mode - 响应式绑定
3
- *
4
- * 在 Vapor Mode 中,响应式信号直接绑定到 DOM 属性上,
5
- * 无需虚拟 DOM 中间层。当信号值变化时,直接更新对应的 DOM 节点。
6
- *
7
- * 每个绑定函数返回一个清理函数,用于在卸载时取消订阅。
8
- */
9
- import type { Signal } from '@lytjs/reactivity/signal';
10
- /** DOM 元素接口(兼容真实 DOM 和 Mock DOM) */
11
- export interface VaporElement {
12
- tagName: string;
13
- nodeType: number;
14
- textContent: string;
15
- className: string;
16
- childNodes: VaporElement[];
17
- parentNode: VaporElement | null;
18
- style: Record<string, string> | CSSStyleDeclaration;
19
- setAttribute(key: string, value: string): void;
20
- removeAttribute(key: string): void;
21
- addEventListener(event: string, handler: Function): void;
22
- removeEventListener(event: string, handler: Function): void;
23
- appendChild(child: VaporElement): void;
24
- insertBefore(child: VaporElement, ref: VaporElement | null): void;
25
- replaceChild(newChild: VaporElement, oldChild: VaporElement): VaporElement;
26
- removeChild(child: VaporElement): void;
27
- nextSibling: VaporElement | null;
28
- firstChild: VaporElement | null;
29
- innerHTML?: string;
30
- hidden?: boolean;
31
- value?: string;
32
- checked?: boolean;
33
- disabled?: boolean;
34
- [key: string]: unknown;
35
- }
36
- /** 绑定清理函数 */
37
- export type BindingCleanup = () => void;
38
- /**
39
- * 将信号值绑定到元素的 textContent
40
- *
41
- * @param el 目标 DOM 元素
42
- * @param sig 响应式信号
43
- * @returns 清理函数
44
- */
45
- export declare function bindText<T>(el: VaporElement, sig: Signal<T>): BindingCleanup;
46
- /**
47
- * 将信号值绑定到元素的 DOM 属性(如 value, checked, disabled 等)
48
- *
49
- * @param el 目标 DOM 元素
50
- * @param prop 属性名
51
- * @param sig 响应式信号
52
- * @returns 清理函数
53
- */
54
- export declare function bindProp<T>(el: VaporElement, prop: string, sig: Signal<T>): BindingCleanup;
55
- /**
56
- * 将信号值绑定到元素的 HTML 属性(通过 setAttribute)
57
- *
58
- * @param el 目标 DOM 元素
59
- * @param attr 属性名
60
- * @param sig 响应式信号
61
- * @returns 清理函数
62
- */
63
- export declare function bindAttr<T>(el: VaporElement, attr: string, sig: Signal<T>): BindingCleanup;
64
- /**
65
- * 将信号值绑定到元素的 className
66
- *
67
- * 支持三种形式:
68
- * - 字符串:直接设置为 className
69
- * - 对象:{ active: true, disabled: false } -> "active"
70
- * - 数组:["class-a", "class-b"] -> "class-a class-b"
71
- *
72
- * @param el 目标 DOM 元素
73
- * @param sig 响应式信号
74
- * @returns 清理函数
75
- */
76
- export declare function bindClass<T>(el: VaporElement, sig: Signal<T>): BindingCleanup;
77
- /**
78
- * 将事件处理器绑定到元素
79
- *
80
- * @param el 目标 DOM 元素
81
- * @param event 事件名
82
- * @param handler 事件处理函数
83
- * @returns 清理函数
84
- */
85
- export declare function bindEvent(el: VaporElement, event: string, handler: Function): BindingCleanup;
86
- /**
87
- * 将信号值绑定到元素的 style 属性
88
- *
89
- * 支持两种形式:
90
- * - 字符串:直接设置为 style.cssText
91
- * - 对象:{ color: 'red', fontSize: '14px' } -> 逐项设置
92
- *
93
- * @param el 目标 DOM 元素
94
- * @param sig 响应式信号
95
- * @returns 清理函数
96
- */
97
- export declare function bindStyle<T>(el: VaporElement, sig: Signal<T>): BindingCleanup;
98
- /**
99
- * 将信号值绑定到元素的 innerHTML
100
- *
101
- * ⚠️ 注意:使用 innerHTML 存在 XSS 风险,请确保数据来源可信。
102
- *
103
- * @param el 目标 DOM 元素
104
- * @param sig 响应式信号
105
- * @returns 清理函数
106
- */
107
- export declare function bindHTML<T>(el: VaporElement, sig: Signal<T>): BindingCleanup;
108
- /**
109
- * 根据信号值控制元素的插入/移除
110
- *
111
- * 当信号值为真值时插入元素到 DOM,假值时从 DOM 移除。
112
- * 使用注释节点作为锚点,保持 DOM 位置稳定。
113
- *
114
- * @param el 目标 DOM 元素
115
- * @param sig 响应式信号
116
- * @param anchor 可选的锚点元素,用于定位插入位置
117
- * @returns 清理函数
118
- */
119
- export declare function bindIf<T>(el: VaporElement, sig: Signal<T>, anchor?: VaporElement): BindingCleanup;
120
- /**
121
- * 根据信号数组渲染列表
122
- *
123
- * 当数组变化时,智能 diff 并更新 DOM。
124
- * 使用 key 进行高效的增删改操作。
125
- *
126
- * @param container 容器元素
127
- * @param sig 响应式信号(返回数组)
128
- * @param renderItem 渲染单项的函数,接收 (item, index) 返回 VaporElement
129
- * @param keyFn 可选的 key 提取函数,用于高效 diff
130
- * @returns 清理函数
131
- */
132
- export declare function bindEach<T>(container: VaporElement, sig: Signal<T[]>, renderItem: (item: T, index: number) => VaporElement, keyFn?: (item: T, index: number) => string | number): BindingCleanup;
133
- //# sourceMappingURL=vapor-reactive.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"vapor-reactive.d.ts","sourceRoot":"","sources":["../../../src/vapor/vapor-reactive.ts"],"names":[],"mappings":"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"}
@@ -1,135 +0,0 @@
1
- /**
2
- * Lyt.js Vapor Mode - 渲染器
3
- *
4
- * Vapor Mode 绕过虚拟 DOM,直接操作真实 DOM。
5
- * 每个 VaporNode 代表一个直接的 DOM 绑定关系,
6
- * 当响应式信号变化时,只更新受影响的 DOM 节点。
7
- *
8
- * 核心思想:
9
- * - 无 VNode 中间层,直接创建 DOM 元素
10
- * - 无 diff 算法,每个绑定精确知道要更新哪个 DOM 节点
11
- * - 信号变化时,直接操作对应的 DOM 属性
12
- */
13
- import type { Signal } from '@lytjs/reactivity/signal';
14
- import type { VaporElement, BindingCleanup } from './vapor-reactive';
15
- import { bindText, bindProp, bindAttr, bindClass, bindEvent, bindIf, bindEach, bindStyle, bindHTML } from './vapor-reactive';
16
- /** Vapor 绑定类型 */
17
- export type VaporBindingType = 'text' | 'prop' | 'attr' | 'class' | 'style' | 'event';
18
- /** Vapor 绑定描述 */
19
- export interface VaporBinding<T = unknown> {
20
- /** 绑定类型 */
21
- type: VaporBindingType;
22
- /** 目标属性名或事件名 */
23
- target: string;
24
- /** 绑定的响应式信号 */
25
- signal?: Signal<T>;
26
- /** 计算值表达式 */
27
- expression?: () => T;
28
- }
29
- /** Vapor 节点 — 代表一个直接 DOM 绑定 */
30
- export interface VaporNode {
31
- /** HTML 标签名 */
32
- tag: string;
33
- /** 关联的真实 DOM 元素 */
34
- el?: VaporElement;
35
- /** 子节点 */
36
- children: VaporNode[];
37
- /** 静态属性 */
38
- props: Record<string, unknown>;
39
- /** 事件处理器 */
40
- events: Record<string, Function>;
41
- /** 响应式绑定列表 */
42
- bindings: VaporBinding<unknown>[];
43
- /** 文本内容(静态) */
44
- text?: string;
45
- /** 节点 key(用于列表渲染) */
46
- key?: string | number;
47
- /** 内部:绑定清理函数列表(用于 patch 时清理旧绑定) */
48
- _bindingCleanups?: BindingCleanup[];
49
- }
50
- /** Vapor 挂载容器接口 */
51
- export interface VaporContainer {
52
- appendChild(child: VaporElement): void;
53
- removeChild(child: VaporElement): void;
54
- childNodes: VaporElement[];
55
- firstChild: VaporElement | null;
56
- }
57
- /** Vapor 组件选项 */
58
- export interface VaporComponentOptions {
59
- /** 组件名称 */
60
- name?: string;
61
- /** 初始化函数,返回组件上下文 */
62
- setup?: () => Record<string, unknown>;
63
- /** 渲染函数,接收上下文和 createElement 函数 */
64
- render?: (ctx: Record<string, unknown>, h: typeof createVaporElement) => VaporNode | VaporNode[];
65
- /** 模板字符串(需要编译器) */
66
- template?: string;
67
- /** 子组件 */
68
- components?: Record<string, VaporComponentOptions>;
69
- /** 挂载前 */
70
- beforeMount?: () => void;
71
- /** 挂载后 */
72
- mounted?: () => void;
73
- /** 卸载前 */
74
- beforeUnmount?: () => void;
75
- /** 卸载后 */
76
- unmounted?: () => void;
77
- }
78
- /** Vapor App 实例 */
79
- export interface VaporApp {
80
- /** 挂载到容器 */
81
- mount(container: VaporContainer | string): void;
82
- /** 卸载 */
83
- unmount(): void;
84
- }
85
- /**
86
- * 设置自定义 DOM 工厂函数(用于测试环境)
87
- */
88
- export declare function setVaporDOMFactory(factory: (tag: string) => VaporElement): void;
89
- /**
90
- * 获取当前 DOM 工厂函数
91
- */
92
- export declare function getVaporDOMFactory(): (tag: string) => VaporElement;
93
- /**
94
- * 创建 Vapor 元素
95
- *
96
- * 直接创建 DOM 元素并应用静态属性,不涉及 VNode。
97
- *
98
- * @param tag HTML 标签名
99
- * @param props 属性对象(可包含信号绑定)
100
- * @param children 子节点
101
- * @returns VaporNode
102
- */
103
- export declare function createVaporElement(tag: string, props?: Record<string, unknown>, ...children: (VaporNode | string)[]): VaporNode;
104
- /**
105
- * 将 VaporNode 渲染为真实 DOM 元素
106
- *
107
- * 直接创建 DOM 元素树,并建立信号绑定。
108
- *
109
- * @param node VaporNode
110
- * @returns 渲染后的 DOM 元素
111
- */
112
- export declare function renderVaporNode(node: VaporNode): VaporElement;
113
- /**
114
- * Vapor Patch — 直接 DOM 更新,无 VDOM diff
115
- *
116
- * 与传统 VDOM patch 不同,Vapor patch 直接操作 DOM:
117
- * - 如果 tag 相同,更新属性和绑定
118
- * - 如果 tag 不同,替换整个 DOM 元素
119
- *
120
- * @param oldNode 旧的 VaporNode
121
- * @param newNode 新的 VaporNode
122
- * @param parentEl 父 DOM 元素
123
- */
124
- export declare function vaporPatch(oldNode: VaporNode, newNode: VaporNode, parentEl: VaporElement): void;
125
- /**
126
- * 使用 Vapor Mode 挂载组件到容器
127
- *
128
- * @param container 挂载容器
129
- * @param component 组件选项
130
- * @returns 卸载函数
131
- */
132
- export declare function vaporMount(container: VaporContainer, component: VaporComponentOptions): () => void;
133
- export { bindText, bindProp, bindAttr, bindClass, bindEvent, bindIf, bindEach, bindStyle, bindHTML, };
134
- export type { VaporElement, BindingCleanup, };
135
- //# sourceMappingURL=vapor-renderer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"vapor-renderer.d.ts","sourceRoot":"","sources":["../../../src/vapor/vapor-renderer.ts"],"names":[],"mappings":"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"}
@@ -1,203 +0,0 @@
1
- /**
2
- * Lyt.js 渲染器 — VNode 最小接口定义与辅助类型
3
- *
4
- * 本模块定义了渲染器所需的 VNode 接口、形状标记、补丁标记,
5
- * 以及 Fragment/Text/Comment 类型标识符和辅助判断函数。
6
- */
7
- /**
8
- * VNode 最小接口
9
- *
10
- * 本地定义渲染器所需的 VNode 字段,不依赖 @lytjs/vdom 包。
11
- * 完整的 VNode 类型由 @lytjs/vdom 提供,此处仅声明渲染器使用到的字段。
12
- *
13
- * 在 monorepo 中,可以使用 import type 从 @lytjs/vdom 导入完整类型,
14
- * 但为了保持渲染器包的独立性,此处定义最小接口。
15
- */
16
- export interface VNode {
17
- /** 节点类型:HTML 标签字符串 | 组件对象 | Symbol(Fragment/Text/Comment) */
18
- type: string | object | symbol;
19
- /** 节点属性 */
20
- props: Record<string, unknown> | null;
21
- /** 子节点:文本字符串 | VNode 数组 | 插槽对象 */
22
- children: string | VNode[] | Record<string, unknown> | null;
23
- /** 节点的唯一标识,用于列表 diff */
24
- key: string | number | null;
25
- /** ref 回调或 ref 对象 */
26
- ref: ((el: unknown) => void) | {
27
- current: unknown;
28
- } | null;
29
- /** 形状标记,描述节点类型和子节点形态 */
30
- shapeFlag: number;
31
- /** PatchFlag,标记哪些 props 是动态的 */
32
- patchFlag: number;
33
- /** 动态子节点列表(Block Tree 优化) */
34
- dynamicChildren: VNode[] | null;
35
- /** 动态 props 的键名列表 */
36
- dynamicProps: string[] | null;
37
- /** 关联的组件实例 */
38
- component: {
39
- update?: () => void;
40
- subTree?: VNode;
41
- [key: string]: unknown;
42
- } | null;
43
- /** 应用上下文(用于 provide/inject 等跨层级通信) */
44
- appContext: Record<string, unknown> | null;
45
- /** 对应的真实 DOM 元素引用 */
46
- el: Element | Text | null;
47
- /** Fragment 锚点 */
48
- anchor: Element | Text | null;
49
- }
50
- /**
51
- * VNode 形状标记
52
- *
53
- * 使用位标记描述 VNode 的类型和子节点形态。
54
- * 与 @lytjs/vdom 的 ShapeFlags 保持一致。
55
- */
56
- export declare const enum ShapeFlags {
57
- /** 普通 HTML/SVG 元素 */
58
- ELEMENT = 1,
59
- /** 函数式组件 */
60
- FUNCTIONAL_COMPONENT = 2,
61
- /** 有状态组件 */
62
- STATEFUL_COMPONENT = 4,
63
- /** 子节点是纯文本 */
64
- TEXT_CHILDREN = 8,
65
- /** 子节点是数组 */
66
- ARRAY_CHILDREN = 16,
67
- /** 子节点是插槽 */
68
- SLOTS_CHILDREN = 32
69
- }
70
- /**
71
- * PatchFlag 位标记
72
- *
73
- * 与 @lytjs/vdom 的 PatchFlags 保持一致。
74
- */
75
- export declare const enum PatchFlags {
76
- /** 动态文本 */
77
- TEXT = 1,
78
- /** 动态 class */
79
- CLASS = 2,
80
- /** 动态 style */
81
- STYLE = 4,
82
- /** 动态 props */
83
- PROPS = 8,
84
- /** 动态 props,键名可能变化 */
85
- FULL_PROPS = 16,
86
- /** 稳定的 Fragment */
87
- STABLE_FRAGMENT = 32,
88
- /** 带 key 的 Fragment */
89
- KEYED_FRAGMENT = 64,
90
- /** 不带 key 的 Fragment */
91
- UNKEYED_FRAGMENT = 128,
92
- /** 需要 patch */
93
- NEED_PATCH = 256,
94
- /** 动态插槽 */
95
- DYNAMIC_SLOTS = 512,
96
- /** 静态提升 */
97
- HOISTED = -1,
98
- /** 退出优化 */
99
- BAIL = -2
100
- }
101
- /**
102
- * Fragment 类型标识符
103
- *
104
- * Fragment 用于表示一组没有父容器的子节点。
105
- * 本地定义以避免依赖 @lytjs/vdom 包。
106
- */
107
- export declare const Fragment: unique symbol;
108
- /**
109
- * Text 类型标识符
110
- */
111
- export declare const Text: unique symbol;
112
- /**
113
- * Comment 类型标识符
114
- */
115
- export declare const Comment: unique symbol;
116
- /**
117
- * 判断 VNode 是否为 Fragment 类型
118
- *
119
- * @param vnode - 待检测的虚拟节点
120
- * @returns 如果节点类型为 Fragment 则返回 true
121
- *
122
- * @example
123
- * ```ts
124
- * import { isFragment, Fragment, h } from '@lytjs/renderer'
125
- *
126
- * const vnode = h(Fragment, null, [h('div', null, 'A'), h('div', null, 'B')])
127
- * console.log(isFragment(vnode)) // true
128
- * ```
129
- */
130
- export declare function isFragment(vnode: VNode): boolean;
131
- /**
132
- * 判断 VNode 是否为文本类型
133
- *
134
- * @param vnode - 待检测的虚拟节点
135
- * @returns 如果节点类型为 Text 则返回 true
136
- *
137
- * @example
138
- * ```ts
139
- * import { isTextVNode, Text, h } from '@lytjs/renderer'
140
- *
141
- * const vnode = h(Text, null, 'hello')
142
- * console.log(isTextVNode(vnode)) // true
143
- * ```
144
- */
145
- export declare function isTextVNode(vnode: VNode): boolean;
146
- /**
147
- * 判断 VNode 是否为注释类型
148
- *
149
- * @param vnode - 待检测的虚拟节点
150
- * @returns 如果节点类型为 Comment 则返回 true
151
- *
152
- * @example
153
- * ```ts
154
- * import { isCommentVNode, Comment, h } from '@lytjs/renderer'
155
- *
156
- * const vnode = h(Comment, null, 'conditional comment')
157
- * console.log(isCommentVNode(vnode)) // true
158
- * ```
159
- */
160
- export declare function isCommentVNode(vnode: VNode): boolean;
161
- /**
162
- * 判断两个 VNode 是否为相同类型
163
- *
164
- * 相同类型的定义:type 相同且 key 相同。
165
- * 在 diff 算法中,只有相同类型的 VNode 才会进行 patch 复用。
166
- *
167
- * @param n1 - 第一个虚拟节点
168
- * @param n2 - 第二个虚拟节点
169
- * @returns 如果两个节点的 type 和 key 均相同则返回 true
170
- *
171
- * @example
172
- * ```ts
173
- * import { isSameVNodeType, h } from '@lytjs/renderer'
174
- *
175
- * const a = h('div', { key: 'x' }, 'hello')
176
- * const b = h('div', { key: 'x' }, 'world')
177
- * const c = h('span', { key: 'x' }, 'hello')
178
- *
179
- * console.log(isSameVNodeType(a, b)) // true(type 和 key 相同)
180
- * console.log(isSameVNodeType(a, c)) // false(type 不同)
181
- * ```
182
- */
183
- export declare function isSameVNodeType(n1: VNode, n2: VNode): boolean;
184
- /**
185
- * 判断 VNode 是否为 Block
186
- *
187
- * Block 的 dynamicChildren 是非 null 的数组。
188
- * Block Tree 优化允许跳过静态子树的 diff,仅更新 dynamicChildren 列表中的节点。
189
- *
190
- * @param vnode - 待检测的虚拟节点
191
- * @returns 如果节点是 Block 则返回 true
192
- *
193
- * @example
194
- * ```ts
195
- * import { isBlock, h, openBlock } from '@lytjs/renderer'
196
- *
197
- * // Block 节点在编译时通过 openBlock() 创建
198
- * const vnode = openBlock(() => h('div', null, h('span', null, 'dynamic')))
199
- * console.log(isBlock(vnode)) // true
200
- * ```
201
- */
202
- export declare function isBlock(vnode: VNode): boolean;
203
- //# sourceMappingURL=vnode.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"vnode.d.ts","sourceRoot":"","sources":["../../src/vnode.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH;;;;;;;;GAQG;AACH,MAAM,WAAW,KAAK;IACpB,6DAA6D;IAC7D,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAA;IAE9B,WAAW;IACX,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;IAErC,kCAAkC;IAClC,QAAQ,EAAE,MAAM,GAAG,KAAK,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;IAE3D,wBAAwB;IACxB,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAA;IAE3B,qBAAqB;IACrB,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,OAAO,KAAK,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI,CAAA;IAE1D,wBAAwB;IACxB,SAAS,EAAE,MAAM,CAAA;IAEjB,gCAAgC;IAChC,SAAS,EAAE,MAAM,CAAA;IAEjB,6BAA6B;IAC7B,eAAe,EAAE,KAAK,EAAE,GAAG,IAAI,CAAA;IAE/B,qBAAqB;IACrB,YAAY,EAAE,MAAM,EAAE,GAAG,IAAI,CAAA;IAE7B,cAAc;IACd,SAAS,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;QAAC,OAAO,CAAC,EAAE,KAAK,CAAC;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,GAAG,IAAI,CAAA;IAElF,sCAAsC;IACtC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;IAE1C,qBAAqB;IACrB,EAAE,EAAE,OAAO,GAAG,IAAI,GAAG,IAAI,CAAA;IAEzB,kBAAkB;IAClB,MAAM,EAAE,OAAO,GAAG,IAAI,GAAG,IAAI,CAAA;CAC9B;AAMD;;;;;GAKG;AACH,0BAAkB,UAAU;IAC1B,qBAAqB;IACrB,OAAO,IAAI;IAEX,YAAY;IACZ,oBAAoB,IAAI;IAExB,YAAY;IACZ,kBAAkB,IAAI;IAEtB,cAAc;IACd,aAAa,IAAI;IAEjB,aAAa;IACb,cAAc,KAAK;IAEnB,aAAa;IACb,cAAc,KAAK;CACpB;AAMD;;;;GAIG;AACH,0BAAkB,UAAU;IAC1B,WAAW;IACX,IAAI,IAAI;IACR,eAAe;IACf,KAAK,IAAI;IACT,eAAe;IACf,KAAK,IAAI;IACT,eAAe;IACf,KAAK,IAAI;IACT,sBAAsB;IACtB,UAAU,KAAK;IACf,mBAAmB;IACnB,eAAe,KAAK;IACpB,uBAAuB;IACvB,cAAc,KAAK;IACnB,wBAAwB;IACxB,gBAAgB,MAAM;IACtB,eAAe;IACf,UAAU,MAAM;IAChB,WAAW;IACX,aAAa,MAAM;IACnB,WAAW;IACX,OAAO,KAAK;IACZ,WAAW;IACX,IAAI,KAAK;CACV;AAMD;;;;;GAKG;AACH,eAAO,MAAM,QAAQ,eAAqB,CAAA;AAE1C;;GAEG;AACH,eAAO,MAAM,IAAI,eAAiB,CAAA;AAElC;;GAEG;AACH,eAAO,MAAM,OAAO,eAAoB,CAAA;AAMxC;;;;;;;;;;;;;GAaG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAEhD;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAEjD;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAEpD;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,GAAG,OAAO,CAE7D;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAE7C"}