@lytjs/renderer 5.0.1 → 6.4.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 (98) 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 +3324 -1
  9. package/dist/index.cjs.map +1 -0
  10. package/dist/index.d.cts +965 -0
  11. package/dist/index.d.ts +965 -0
  12. package/dist/index.mjs +3202 -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/dist/vapor/vapor-app.cjs +334 -0
  21. package/dist/vapor/vapor-app.cjs.map +1 -0
  22. package/dist/vapor/vapor-app.d.cts +88 -0
  23. package/dist/vapor/vapor-app.d.ts +88 -0
  24. package/dist/vapor/vapor-app.mjs +330 -0
  25. package/dist/vapor/vapor-app.mjs.map +1 -0
  26. package/package.json +43 -56
  27. package/dist/miniapp.cjs +0 -27
  28. package/dist/miniapp.mjs +0 -27
  29. package/dist/native.cjs +0 -1
  30. package/dist/native.mjs +0 -1
  31. package/dist/types/create-renderer.d.ts +0 -20
  32. package/dist/types/create-renderer.d.ts.map +0 -1
  33. package/dist/types/dom/dom-ops.d.ts +0 -74
  34. package/dist/types/dom/dom-ops.d.ts.map +0 -1
  35. package/dist/types/dom/dom-renderer.d.ts +0 -243
  36. package/dist/types/dom/dom-renderer.d.ts.map +0 -1
  37. package/dist/types/dom/index.d.ts +0 -17
  38. package/dist/types/dom/index.d.ts.map +0 -1
  39. package/dist/types/dom/patch-events.d.ts +0 -123
  40. package/dist/types/dom/patch-events.d.ts.map +0 -1
  41. package/dist/types/dom/patch-props.d.ts +0 -118
  42. package/dist/types/dom/patch-props.d.ts.map +0 -1
  43. package/dist/types/index.d.ts +0 -36
  44. package/dist/types/index.d.ts.map +0 -1
  45. package/dist/types/miniapp/api-adapter.d.ts +0 -514
  46. package/dist/types/miniapp/api-adapter.d.ts.map +0 -1
  47. package/dist/types/miniapp/index.d.ts +0 -34
  48. package/dist/types/miniapp/index.d.ts.map +0 -1
  49. package/dist/types/miniapp/miniapp-compiler.d.ts +0 -269
  50. package/dist/types/miniapp/miniapp-compiler.d.ts.map +0 -1
  51. package/dist/types/miniapp/miniapp-event-bridge.d.ts +0 -255
  52. package/dist/types/miniapp/miniapp-event-bridge.d.ts.map +0 -1
  53. package/dist/types/miniapp/miniapp-lifecycle.d.ts +0 -224
  54. package/dist/types/miniapp/miniapp-lifecycle.d.ts.map +0 -1
  55. package/dist/types/miniapp/miniapp-renderer.d.ts +0 -269
  56. package/dist/types/miniapp/miniapp-renderer.d.ts.map +0 -1
  57. package/dist/types/miniapp/miniapp-utils.d.ts +0 -168
  58. package/dist/types/miniapp/miniapp-utils.d.ts.map +0 -1
  59. package/dist/types/miniapp/shared-constants.d.ts +0 -28
  60. package/dist/types/miniapp/shared-constants.d.ts.map +0 -1
  61. package/dist/types/miniapp/style-compiler.d.ts +0 -193
  62. package/dist/types/miniapp/style-compiler.d.ts.map +0 -1
  63. package/dist/types/mount.d.ts +0 -32
  64. package/dist/types/mount.d.ts.map +0 -1
  65. package/dist/types/native/index.d.ts +0 -13
  66. package/dist/types/native/index.d.ts.map +0 -1
  67. package/dist/types/native/native-renderer.d.ts +0 -249
  68. package/dist/types/native/native-renderer.d.ts.map +0 -1
  69. package/dist/types/patch.d.ts +0 -23
  70. package/dist/types/patch.d.ts.map +0 -1
  71. package/dist/types/props.d.ts +0 -19
  72. package/dist/types/props.d.ts.map +0 -1
  73. package/dist/types/renderer-interfaces.d.ts +0 -157
  74. package/dist/types/renderer-interfaces.d.ts.map +0 -1
  75. package/dist/types/shared/abstract-renderer.d.ts +0 -74
  76. package/dist/types/shared/abstract-renderer.d.ts.map +0 -1
  77. package/dist/types/ssr/hydration.d.ts +0 -267
  78. package/dist/types/ssr/hydration.d.ts.map +0 -1
  79. package/dist/types/ssr/index.d.ts +0 -15
  80. package/dist/types/ssr/index.d.ts.map +0 -1
  81. package/dist/types/ssr/ssr-renderer.d.ts +0 -277
  82. package/dist/types/ssr/ssr-renderer.d.ts.map +0 -1
  83. package/dist/types/unmount.d.ts +0 -16
  84. package/dist/types/unmount.d.ts.map +0 -1
  85. package/dist/types/vapor/index.d.ts +0 -18
  86. package/dist/types/vapor/index.d.ts.map +0 -1
  87. package/dist/types/vapor/vapor-compiler.d.ts +0 -76
  88. package/dist/types/vapor/vapor-compiler.d.ts.map +0 -1
  89. package/dist/types/vapor/vapor-component.d.ts +0 -55
  90. package/dist/types/vapor/vapor-component.d.ts.map +0 -1
  91. package/dist/types/vapor/vapor-reactive.d.ts +0 -133
  92. package/dist/types/vapor/vapor-reactive.d.ts.map +0 -1
  93. package/dist/types/vapor/vapor-renderer.d.ts +0 -135
  94. package/dist/types/vapor/vapor-renderer.d.ts.map +0 -1
  95. package/dist/types/vnode.d.ts +0 -203
  96. package/dist/types/vnode.d.ts.map +0 -1
  97. package/dist/vapor.cjs +0 -1
  98. package/dist/vapor.mjs +0 -1
@@ -1,243 +0,0 @@
1
- /**
2
- * Lyt.js 渲染器 — DOM 渲染器实现
3
- *
4
- * 本模块实现了 LytRenderer 接口,将所有操作映射到浏览器原生 DOM API。
5
- * 这是 Lyt.js 在浏览器环境下的默认渲染器。
6
- *
7
- * 实现要点:
8
- * - createElement → document.createElement
9
- * - createText → document.createTextNode
10
- * - createComment → document.createComment
11
- * - setAttribute → el.setAttribute / el[key] = val(特殊处理 class/style/event)
12
- * - setStyle → el.style.cssText 或逐项设置
13
- * - setClass → el.className
14
- * - insert → parent.insertBefore(child, ref)
15
- * - remove → parent.removeChild(child)
16
- * - addEventListener → el.addEventListener
17
- * - nextTick → Promise.resolve().then()
18
- *
19
- * 同时实现了 PatchDOMOperations 接口,用于向 @lytjs/vdom 的 patch 系统注册。
20
- */
21
- import type { LytRenderer } from '../renderer-interfaces';
22
- /**
23
- * DOMRenderer — 浏览器 DOM 渲染器
24
- *
25
- * 实现 LytRenderer 接口,所有操作直接映射到浏览器 DOM API。
26
- * 同时提供 PatchDOMOperations 接口所需的方法,用于注册到 vdom 的 patch 系统。
27
- */
28
- export declare class DOMRenderer implements LytRenderer {
29
- /**
30
- * 创建元素节点
31
- *
32
- * @param tag HTML 标签名
33
- * @returns DOM 元素
34
- */
35
- createElement(tag: string): any;
36
- /**
37
- * 创建文本节点
38
- *
39
- * @param text 文本内容
40
- * @returns DOM 文本节点
41
- */
42
- createText(text: string): any;
43
- /**
44
- * 创建注释节点
45
- *
46
- * @param text 注释内容
47
- * @returns DOM 注释节点
48
- */
49
- createComment(text: string): any;
50
- /**
51
- * 设置元素属性
52
- *
53
- * 智能区分 property 和 attribute:
54
- * - class/style/event → 特殊处理
55
- * - 布尔属性 → el.setAttribute(key, '') 或 el.removeAttribute(key)
56
- * - DOM property → el[key] = val
57
- * - 其他 → el.setAttribute(key, val)
58
- *
59
- * @param el DOM 元素
60
- * @param key 属性名
61
- * @param val 属性值
62
- */
63
- setAttribute(el: any, key: string, val: any): void;
64
- /**
65
- * 移除元素属性
66
- *
67
- * @param el DOM 元素
68
- * @param key 属性名
69
- */
70
- removeAttribute(el: any, key: string): void;
71
- /**
72
- * 设置元素样式
73
- *
74
- * 支持字符串和对象两种形式:
75
- * - 字符串:'color: red; font-size: 14px' → el.style.cssText
76
- * - 对象:{ color: 'red', fontSize: '14px' } → 逐项设置
77
- *
78
- * @param el DOM 元素
79
- * @param style 样式值
80
- */
81
- setStyle(el: any, style: object): void;
82
- /**
83
- * 设置元素 class
84
- *
85
- * 支持字符串和对象两种形式:
86
- * - 字符串:'foo bar baz' → el.className
87
- * - 对象:{ foo: true, bar: false } → 规范化为字符串
88
- *
89
- * @param el DOM 元素
90
- * @param cls class 值
91
- */
92
- setClass(el: any, cls: string | object): void;
93
- /**
94
- * 将子节点插入到父节点中
95
- *
96
- * @param parent 父节点
97
- * @param child 子节点
98
- * @param ref 参考节点(插入到其前面),如果为 null 则追加到末尾
99
- */
100
- insert(parent: any, child: any, ref?: any): void;
101
- /**
102
- * 从 DOM 中移除节点
103
- *
104
- * @param child 要移除的节点
105
- */
106
- remove(child: any): void;
107
- /**
108
- * 替换子节点
109
- *
110
- * @param parent 父节点
111
- * @param oldChild 被替换的旧节点
112
- * @param newChild 替换的新节点
113
- */
114
- replace(parent: any, oldChild: any, newChild: any): void;
115
- /**
116
- * 添加事件监听器
117
- *
118
- * @param el DOM 元素
119
- * @param event 事件名
120
- * @param handler 事件处理函数
121
- * @param options 事件选项(可选)
122
- */
123
- addEventListener(el: unknown, event: string, handler: (...args: unknown[]) => void, options?: unknown): void;
124
- /**
125
- * 移除事件监听器
126
- *
127
- * @param el DOM 元素
128
- * @param event 事件名
129
- * @param handler 事件处理函数
130
- */
131
- removeEventListener(el: unknown, event: string, handler: (...args: unknown[]) => void): void;
132
- /**
133
- * 在下一个微任务中执行回调
134
- *
135
- * 使用 Promise.resolve().then() 实现微任务延迟。
136
- *
137
- * @param cb 回调函数
138
- */
139
- nextTick(cb: (...args: unknown[]) => void): void;
140
- /**
141
- * 获取父节点
142
- *
143
- * @param el DOM 元素
144
- * @returns 父节点,如果没有则返回 null
145
- */
146
- parentNode(el: any): any;
147
- /**
148
- * 获取下一个兄弟节点
149
- *
150
- * @param el DOM 元素
151
- * @returns 下一个兄弟节点,如果没有则返回 null
152
- */
153
- nextSibling(el: any): any;
154
- /**
155
- * 查询选择器
156
- *
157
- * @param selector CSS 选择器
158
- * @returns 匹配的第一个元素,如果没有则返回 null
159
- */
160
- querySelector(selector: string): any;
161
- /**
162
- * 设置元素的 class(带新旧值对比)
163
- *
164
- * @param el DOM 元素
165
- * @param value 新的 class 值
166
- * @param oldValue 旧的 class 值
167
- */
168
- setClassWithOld(el: any, value: any, oldValue: any): void;
169
- /**
170
- * 设置元素的 style(带新旧值对比)
171
- *
172
- * @param el DOM 元素
173
- * @param value 新的 style 值
174
- * @param oldValue 旧的 style 值
175
- */
176
- setStyleWithOld(el: any, value: any, oldValue: any): void;
177
- /**
178
- * 设置元素的 DOM 属性(带新旧值对比)
179
- *
180
- * @param el DOM 元素
181
- * @param key 属性名
182
- * @param value 新值
183
- * @param oldValue 旧值
184
- */
185
- setAttributeWithOld(el: any, key: string, value: any, oldValue: any): void;
186
- /**
187
- * 设置元素文本内容
188
- *
189
- * @param el DOM 元素
190
- * @param text 文本内容
191
- */
192
- setElementText(el: any, text: string): void;
193
- /**
194
- * 设置节点文本内容
195
- *
196
- * @param node 文本节点或注释节点
197
- * @param text 文本内容
198
- */
199
- setText(node: any, text: string): void;
200
- /**
201
- * 将元素插入到参考节点之前
202
- *
203
- * @param parent 父节点
204
- * @param child 子节点
205
- * @param anchor 参考节点
206
- */
207
- insertBefore(parent: any, child: any, anchor: any): void;
208
- /**
209
- * 从父容器中移除子节点
210
- *
211
- * @param parent 父节点
212
- * @param child 子节点
213
- */
214
- removeChild(parent: any, child: any): void;
215
- /**
216
- * 设置 VNode 的锚点
217
- *
218
- * @param vnode VNode
219
- * @param anchor 锚点 DOM 元素
220
- */
221
- setAnchor(vnode: any, anchor: any): void;
222
- /**
223
- * 获取下一个兄弟节点
224
- *
225
- * @param node DOM 节点
226
- * @returns 下一个兄弟节点
227
- */
228
- getNextSibling(node: any): any;
229
- /**
230
- * 移除节点上的所有事件监听
231
- *
232
- * @param el DOM 元素
233
- */
234
- cleanupEvents(el: any): void;
235
- }
236
- /**
237
- * 默认 DOM 渲染器实例(单例)
238
- *
239
- * 大多数场景下只需要一个 DOMRenderer 实例,
240
- * 因此导出一个预创建的单例供直接使用。
241
- */
242
- export declare const domRenderer: DOMRenderer;
243
- //# sourceMappingURL=dom-renderer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dom-renderer.d.ts","sourceRoot":"","sources":["../../../src/dom/dom-renderer.ts"],"names":[],"mappings":"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"}
@@ -1,17 +0,0 @@
1
- /**
2
- * Lyt.js DOM 渲染器 — 独立入口
3
- *
4
- * 仅包含浏览器 DOM 渲染相关的 API,适用于 Web 端按需引入。
5
- * 使用者可通过 `import '@lytjs/renderer/dom'` 仅加载 DOM 渲染器,
6
- * 避免引入 SSR / Native / MiniApp / Vapor 等平台代码。
7
- */
8
- export type { LytRenderer, RendererInstance } from '../renderer-interfaces';
9
- export type { VNode } from '../vnode';
10
- export { createRenderer, } from '../create-renderer';
11
- export { Fragment, Text, Comment, ShapeFlags, PatchFlags, } from '../vnode';
12
- export { DOMRenderer, domRenderer } from './dom-renderer';
13
- export { setDOMProp, removeDOMProp, patchDOMProps, isSVGElement, getSVGPropName, } from './dom-ops';
14
- export { patchClass, patchStyle, patchEventOnElement, patchDOMProp, patchProp, patchAllProps, patchElementProps, PatchFlags as PatchPropFlags, } from './patch-props';
15
- export { normalizeEventName, getEventKey, parseEventModifier, createInvoker, getEventInvokers, patchEvent, removeAllEventListeners, } from './patch-events';
16
- export type { ParsedEvent, EventInvoker } from './patch-events';
17
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/dom/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC5E,YAAY,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAGtC,OAAO,EACL,cAAc,GACf,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,QAAQ,EACR,IAAI,EACJ,OAAO,EACP,UAAU,EACV,UAAU,GACX,MAAM,UAAU,CAAC;AAGlB,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAG1D,OAAO,EACL,UAAU,EACV,aAAa,EACb,aAAa,EACb,YAAY,EACZ,cAAc,GACf,MAAM,WAAW,CAAC;AAGnB,OAAO,EACL,UAAU,EACV,UAAU,EACV,mBAAmB,EACnB,YAAY,EACZ,SAAS,EACT,aAAa,EACb,iBAAiB,EACjB,UAAU,IAAI,cAAc,GAC7B,MAAM,eAAe,CAAC;AAGvB,OAAO,EACL,kBAAkB,EAClB,WAAW,EACX,kBAAkB,EAClB,aAAa,EACb,gBAAgB,EAChB,UAAU,EACV,uBAAuB,GACxB,MAAM,gBAAgB,CAAC;AACxB,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC"}
@@ -1,123 +0,0 @@
1
- /**
2
- * Lyt.js 渲染器 — 事件系统
3
- *
4
- * 本模块实现了渲染器的事件处理系统,包括:
5
- * 1. 事件名规范化(@click → onclick, onClick → click)
6
- * 2. 事件修饰符解析与处理(.stop, .prevent, .capture, .once, .self, .passive)
7
- * 3. 事件缓存 invoker 模式 —— 每个元素一个事件 handler 对象
8
- *
9
- * 设计思路:
10
- * - 每个元素维护一个 el._vei(VNode Event Invoker)对象
11
- * - key 为事件名(如 'onClick'),value 为 invoker 函数
12
- * - invoker 函数内部调用实际的事件处理函数
13
- * - 更新事件时只需替换 invoker.value,无需重新 addEventListener
14
- */
15
- /**
16
- * 事件修饰符解析结果
17
- */
18
- export interface ParsedEvent {
19
- /** 原始事件名(如 'click', 'input') */
20
- name: string;
21
- /** 是否需要 stopPropagation */
22
- stop: boolean;
23
- /** 是否需要 preventDefault */
24
- prevent: boolean;
25
- /** 是否使用捕获模式 */
26
- capture: boolean;
27
- /** 是否只触发一次 */
28
- once: boolean;
29
- /** 是否只在 event.target === el 时触发 */
30
- self: boolean;
31
- /** 是否使用 passive 模式 */
32
- passive: boolean;
33
- }
34
- /**
35
- * 事件 Invoker 接口
36
- *
37
- * invoker 是一个函数,内部持有对实际事件处理函数的引用。
38
- * 更新事件时只需修改 invoker.value,无需重新绑定 DOM 事件。
39
- */
40
- export interface EventInvoker extends EventListener {
41
- /** 实际的事件处理函数 */
42
- value: Function | null;
43
- }
44
- /**
45
- * 规范化事件名
46
- *
47
- * 将各种形式的事件名统一转换为标准格式:
48
- * - @click → click
49
- * - onClick → click
50
- * - click → click
51
- * - @click.stop → click(修饰符在 parseEventModifier 中处理)
52
- *
53
- * @param rawName 原始事件名
54
- * @returns 标准事件名(小写)
55
- */
56
- export declare function normalizeEventName(rawName: string): string;
57
- /**
58
- * 将事件名转换为 invoker 的 key 格式
59
- *
60
- * 规则:
61
- * - 事件名首字母大写,前面加 'on'
62
- * - 例如:click → onClick, mouseenter → onMouseenter
63
- * - 这样做是为了与 Vue 3 的 props 事件命名保持一致
64
- *
65
- * @param rawName 原始事件名(可能带 @ 或 on 前缀)
66
- * @returns invoker key(如 'onClick')
67
- */
68
- export declare function getEventKey(rawName: string): string;
69
- /**
70
- * 解析事件修饰符
71
- *
72
- * 从事件名中提取修饰符,例如:
73
- * - 'click.stop.prevent' → { name: 'click', stop: true, prevent: true }
74
- * - 'input.once' → { name: 'input', once: true }
75
- * - 'keydown.enter' → { name: 'keydown.enter' }(enter 不是标准修饰符,保留在 name 中)
76
- *
77
- * @param rawEvent 原始事件名(可能包含修饰符)
78
- * @returns 解析后的结果
79
- */
80
- export declare function parseEventModifier(rawEvent: string): ParsedEvent;
81
- /**
82
- * 创建事件 invoker 函数
83
- *
84
- * invoker 是一个包装函数,它在被 DOM 事件触发时调用内部的 value 函数。
85
- * 通过替换 invoker.value 可以更新事件处理逻辑,而无需重新绑定 DOM 事件。
86
- *
87
- * @param initialValue 初始的事件处理函数
88
- * @returns invoker 函数(同时满足 EventListener 接口)
89
- */
90
- export declare function createInvoker(initialValue: Function): EventInvoker;
91
- /**
92
- * 获取元素上的事件 invoker 对象
93
- *
94
- * @param el DOM 元素
95
- * @returns invoker 对象,如果不存在则返回 null
96
- */
97
- export declare function getEventInvokers(el: Element): Record<string, EventInvoker> | null;
98
- /**
99
- * 更新元素上的事件监听
100
- *
101
- * 使用 invoker 缓存模式:
102
- * 1. 如果元素没有 invoker 对象,创建一个
103
- * 2. 如果 invoker 已存在且新值不为空,直接替换 invoker.value
104
- * 3. 如果 invoker 已存在但新值为空,移除事件监听
105
- * 4. 如果 invoker 不存在且新值不为空,创建 invoker 并添加事件监听
106
- *
107
- * @param el DOM 元素
108
- * @param rawName 原始事件名(如 'onClick', '@click')
109
- * @param nextValue 新的事件处理函数(null 表示移除)
110
- * @param prevValue 旧的事件处理函数(可选)
111
- * @param instance 组件实例(可选,用于事件作用域)
112
- */
113
- export declare function patchEvent(el: Element, rawName: string, nextValue: Function | null, _prevValue?: Function | null, _instance?: unknown): void;
114
- /**
115
- * 移除元素上的所有事件监听
116
- *
117
- * 遍历元素上的 invoker 对象,移除所有已绑定的事件。
118
- * 通常在元素卸载时调用。
119
- *
120
- * @param el DOM 元素
121
- */
122
- export declare function removeAllEventListeners(el: any): void;
123
- //# sourceMappingURL=patch-events.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"patch-events.d.ts","sourceRoot":"","sources":["../../../src/dom/patch-events.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAMH;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,gCAAgC;IAChC,IAAI,EAAE,MAAM,CAAA;IACZ,2BAA2B;IAC3B,IAAI,EAAE,OAAO,CAAA;IACb,0BAA0B;IAC1B,OAAO,EAAE,OAAO,CAAA;IAChB,eAAe;IACf,OAAO,EAAE,OAAO,CAAA;IAChB,cAAc;IACd,IAAI,EAAE,OAAO,CAAA;IACb,mCAAmC;IACnC,IAAI,EAAE,OAAO,CAAA;IACb,sBAAsB;IACtB,OAAO,EAAE,OAAO,CAAA;CACjB;AAED;;;;;GAKG;AACH,MAAM,WAAW,YAAa,SAAQ,aAAa;IACjD,gBAAgB;IAChB,KAAK,EAAE,QAAQ,GAAG,IAAI,CAAA;CACvB;AAYD;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAGnD;AAkBD;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW,CAyBhE;AAMD;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,YAAY,EAAE,QAAQ,GAAG,YAAY,CAWlE;AAWD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,GAAG,IAAI,CAGjF;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,UAAU,CACxB,EAAE,EAAE,OAAO,EACX,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,QAAQ,GAAG,IAAI,EAC1B,UAAU,CAAC,EAAE,QAAQ,GAAG,IAAI,EAC5B,SAAS,CAAC,EAAE,OAAO,GAClB,IAAI,CA+CN;AAED;;;;;;;GAOG;AAEH,wBAAgB,uBAAuB,CAAC,EAAE,EAAE,GAAG,GAAG,IAAI,CAerD"}
@@ -1,118 +0,0 @@
1
- /**
2
- * Lyt.js 渲染器 — 属性精确更新
3
- *
4
- * 本模块基于 PatchFlag 实现属性的精确更新,避免全量 diff。
5
- * 当编译器标记了 VNode 的 patchFlag 后,运行时只需更新标记的属性,
6
- * 大幅减少不必要的 DOM 操作。
7
- *
8
- * 提供的更新函数:
9
- * - patchClass(el, next, prev) — class 属性更新
10
- * - patchStyle(el, next, prev) — style 属性更新
11
- * - patchEvent(el, next, prev, instance) — 事件更新
12
- * - patchDOMProp(el, key, next, prev) — DOM 属性更新
13
- * - patchProp(el, key, next, prev, instance) — 统一属性更新入口
14
- */
15
- import { PatchFlags } from '@lytjs/vdom';
16
- export { PatchFlags };
17
- /**
18
- * 更新元素的 class 属性
19
- *
20
- * 支持多种形式的 class 值:
21
- * - 字符串:'foo bar baz'
22
- * - 对象:{ foo: true, bar: false, baz: true }
23
- * - 数组:['foo', 'bar', { baz: true }]
24
- * - null/undefined:清空 class
25
- *
26
- * @param el DOM 元素
27
- * @param next 新的 class 值
28
- * @param prev 旧的 class 值(可选,用于优化)
29
- */
30
- export declare function patchClass(el: any, next: any, prev?: any): void;
31
- /**
32
- * 更新元素的 style 属性
33
- *
34
- * 支持两种形式:
35
- * - 字符串:'color: red; font-size: 14px'
36
- * - 对象:{ color: 'red', fontSize: '14px' }
37
- *
38
- * 更新策略:
39
- * - 新旧都是字符串 → 直接替换 cssText
40
- * - 新旧都是对象 → 逐项 diff,只更新变化的部分
41
- * - 类型不同 → 清空旧值,设置新值
42
- * - 新值为 null → 清空 style
43
- *
44
- * @param el DOM 元素
45
- * @param next 新的 style 值
46
- * @param prev 旧的 style 值(可选)
47
- */
48
- export declare function patchStyle(el: any, next: any, prev?: any): void;
49
- /**
50
- * 更新元素的事件监听
51
- *
52
- * 委托给 patch-events 模块的 patchEvent 函数。
53
- * 此处提供统一的接口,与 class/style/DOMProp 保持一致的调用签名。
54
- *
55
- * @param el DOM 元素
56
- * @param next 新的事件处理函数
57
- * @param prev 旧的事件处理函数(可选)
58
- * @param instance 组件实例(可选)
59
- */
60
- export declare function patchEventOnElement(el: any, next: any, prev?: any, instance?: any): void;
61
- /**
62
- * 更新单个 DOM 属性
63
- *
64
- * 根据属性类型分发到不同的处理逻辑:
65
- * - class → patchClass
66
- * - style → patchStyle
67
- * - 事件 → patchEvent
68
- * - 其他 → setAttribute / el[key] = value
69
- *
70
- * @param el DOM 元素
71
- * @param key 属性名
72
- * @param next 新值
73
- * @param prev 旧值(可选)
74
- * @param instance 组件实例(可选)
75
- */
76
- export declare function patchDOMProp(el: any, key: string, next: any, prev?: any, instance?: any): void;
77
- /**
78
- * 统一的属性更新入口
79
- *
80
- * 根据 key 的类型自动分发到对应的更新函数。
81
- * 这是 patchElement 中更新单个 prop 的核心函数。
82
- *
83
- * @param el DOM 元素
84
- * @param key 属性名
85
- * @param next 新值
86
- * @param prev 旧值(可选)
87
- * @param instance 组件实例(可选)
88
- */
89
- export declare function patchProp(el: any, key: string, next: any, prev?: any, instance?: any): void;
90
- /**
91
- * 全量对比并更新所有属性
92
- *
93
- * 当 VNode 没有 patchFlag 或 patchFlag 包含 FULL_PROPS 时使用。
94
- * 遍历新旧 props,更新变化的部分,移除删除的部分。
95
- *
96
- * @param el DOM 元素
97
- * @param oldProps 旧属性对象
98
- * @param newProps 新属性对象
99
- * @param instance 组件实例(可选)
100
- */
101
- export declare function patchAllProps(el: any, oldProps: Record<string, any> | null, newProps: Record<string, any> | null, instance?: any): void;
102
- /**
103
- * 基于 PatchFlag 精确更新元素属性
104
- *
105
- * 根据 VNode 的 patchFlag 只更新标记为动态的属性:
106
- * - CLASS → 只更新 class
107
- * - STYLE → 只更新 style
108
- * - TEXT → 只更新文本内容
109
- * - PROPS → 只更新 dynamicProps 中指定的属性
110
- * - FULL_PROPS → 全量 diff
111
- *
112
- * @param el DOM 元素
113
- * @param oldVNode 旧 VNode
114
- * @param newVNode 新 VNode
115
- * @param instance 组件实例(可选)
116
- */
117
- export declare function patchElementProps(el: any, oldVNode: any, newVNode: any, instance?: any): void;
118
- //# sourceMappingURL=patch-props.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"patch-props.d.ts","sourceRoot":"","sources":["../../../src/dom/patch-props.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC,OAAO,EAAE,UAAU,EAAE,CAAC;AAMtB;;;;;;;;;;;;GAYG;AAEH,wBAAgB,UAAU,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,IAAI,CAO/D;AAgDD;;;;;;;;;;;;;;;;GAgBG;AAEH,wBAAgB,UAAU,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,IAAI,CAuD/D;AAmBD;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CAEjC,EAAE,EAAE,GAAG,EAEP,IAAI,EAAE,GAAG,EAET,IAAI,CAAC,EAAE,GAAG,EAEV,QAAQ,CAAC,EAAE,GAAG,GACb,IAAI,CAKN;AAuBD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,YAAY,CAE1B,EAAE,EAAE,GAAG,EACP,GAAG,EAAE,MAAM,EAEX,IAAI,EAAE,GAAG,EAET,IAAI,CAAC,EAAE,GAAG,EAEV,QAAQ,CAAC,EAAE,GAAG,GACb,IAAI,CA6BN;AAMD;;;;;;;;;;;GAWG;AACH,wBAAgB,SAAS,CAEvB,EAAE,EAAE,GAAG,EACP,GAAG,EAAE,MAAM,EAEX,IAAI,EAAE,GAAG,EAET,IAAI,CAAC,EAAE,GAAG,EAEV,QAAQ,CAAC,EAAE,GAAG,GACb,IAAI,CAEN;AAMD;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAE3B,EAAE,EAAE,GAAG,EAEP,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EAEpC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EAEpC,QAAQ,CAAC,EAAE,GAAG,GACb,IAAI,CAgCN;AAMD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,iBAAiB,CAE/B,EAAE,EAAE,GAAG,EAEP,QAAQ,EAAE,GAAG,EAEb,QAAQ,EAAE,GAAG,EAEb,QAAQ,CAAC,EAAE,GAAG,GACb,IAAI,CAyDN"}
@@ -1,36 +0,0 @@
1
- /**
2
- * Lyt.js 渲染器 — 统一导出入口(仅 DOM)
3
- *
4
- * 主入口仅导出浏览器 DOM 渲染相关的 API,适用于大多数 Web 端场景。
5
- * 其他平台(SSR/Native/MiniApp/Vapor)通过子路径独立引入:
6
- * - `@lytjs/renderer/ssr` — 服务端渲染
7
- * - `@lytjs/renderer/native` — 移动端原生渲染
8
- * - `@lytjs/renderer/miniapp`— 小程序渲染
9
- * - `@lytjs/renderer/vapor` — Vapor Mode(无虚拟 DOM)
10
- *
11
- * 使用示例:
12
- * ```ts
13
- * import {
14
- * LytRenderer,
15
- * createRenderer,
16
- * DOMRenderer,
17
- * domRenderer,
18
- * } from '@lytjs/renderer'
19
- *
20
- * // 使用默认 DOM 渲染器创建渲染器实例
21
- * const renderer = createRenderer(domRenderer)
22
- *
23
- * // 或者自定义渲染器
24
- * const customRenderer = createRenderer(new DOMRenderer())
25
- * ```
26
- */
27
- export type { LytRenderer, RendererInstance } from './renderer-interfaces';
28
- export type { VNode } from './vnode';
29
- export { createRenderer, } from './create-renderer';
30
- export { Fragment, Text, Comment, ShapeFlags, PatchFlags, } from './vnode';
31
- export { DOMRenderer, domRenderer } from './dom/dom-renderer';
32
- export { setDOMProp, removeDOMProp, patchDOMProps, isSVGElement, getSVGPropName, } from './dom/dom-ops';
33
- export { patchClass, patchStyle, patchEventOnElement, patchDOMProp, patchProp, patchAllProps, patchElementProps, PatchFlags as PatchPropFlags, } from './dom/patch-props';
34
- export { normalizeEventName, getEventKey, parseEventModifier, createInvoker, getEventInvokers, patchEvent, removeAllEventListeners, } from './dom/patch-events';
35
- export type { ParsedEvent, EventInvoker } from './dom/patch-events';
36
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAGH,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAC1E,YAAY,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAGpC,OAAO,EACL,cAAc,GACf,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EACL,QAAQ,EACR,IAAI,EACJ,OAAO,EACP,UAAU,EACV,UAAU,GACX,MAAM,SAAS,CAAA;AAGhB,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAG7D,OAAO,EACL,UAAU,EACV,aAAa,EACb,aAAa,EACb,YAAY,EACZ,cAAc,GACf,MAAM,eAAe,CAAA;AAGtB,OAAO,EACL,UAAU,EACV,UAAU,EACV,mBAAmB,EACnB,YAAY,EACZ,SAAS,EACT,aAAa,EACb,iBAAiB,EACjB,UAAU,IAAI,cAAc,GAC7B,MAAM,mBAAmB,CAAA;AAG1B,OAAO,EACL,kBAAkB,EAClB,WAAW,EACX,kBAAkB,EAClB,aAAa,EACb,gBAAgB,EAChB,UAAU,EACV,uBAAuB,GACxB,MAAM,oBAAoB,CAAA;AAC3B,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA"}