airx 0.1.7 → 0.2.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 (41) hide show
  1. package/README.md +6 -2
  2. package/output/element.d.ts +9 -7
  3. package/output/element.js +3 -0
  4. package/output/element.js.map +1 -1
  5. package/output/index.d.ts +5 -2
  6. package/output/index.js +9 -8
  7. package/output/index.js.map +1 -1
  8. package/output/reactive.d.ts +5 -4
  9. package/output/reactive.js +4 -3
  10. package/output/reactive.js.map +1 -1
  11. package/output/render/browser.d.ts +3 -8
  12. package/output/render/browser.js +7 -109
  13. package/output/render/browser.js.map +1 -1
  14. package/output/render/common/hooks.d.ts +10 -0
  15. package/output/render/common/hooks.js +22 -0
  16. package/output/render/common/hooks.js.map +1 -0
  17. package/output/render/common/index.d.ts +16 -20
  18. package/output/render/common/index.js +49 -124
  19. package/output/render/common/index.js.map +1 -1
  20. package/output/render/common/plugins/context.d.ts +5 -0
  21. package/output/render/common/plugins/context.js +12 -0
  22. package/output/render/common/plugins/context.js.map +1 -0
  23. package/output/render/common/plugins/index.d.ts +19 -0
  24. package/output/render/common/plugins/index.js +2 -0
  25. package/output/render/common/plugins/index.js.map +1 -0
  26. package/output/render/common/plugins/internal/basic.d.ts +10 -0
  27. package/output/render/common/plugins/internal/basic.js +158 -0
  28. package/output/render/common/plugins/internal/basic.js.map +1 -0
  29. package/output/render/common/plugins/internal/inject.d.ts +6 -0
  30. package/output/render/common/plugins/internal/inject.js +25 -0
  31. package/output/render/common/plugins/internal/inject.js.map +1 -0
  32. package/output/render/index.d.ts +3 -3
  33. package/output/render/index.js +3 -3
  34. package/output/render/index.js.map +1 -1
  35. package/package.json +1 -1
  36. package/output/plugin.d.ts +0 -2
  37. package/output/plugin.js +0 -2
  38. package/output/plugin.js.map +0 -1
  39. package/output/render/server.d.ts +0 -24
  40. package/output/render/server.js +0 -345
  41. package/output/render/server.js.map +0 -1
@@ -1,24 +0,0 @@
1
- import { CSSProperties } from '..';
2
- import { AirxElement } from '../element';
3
- declare class SsrHTMLElement {
4
- nodeName: string;
5
- static createTextNode(content: string): SsrHTMLElement;
6
- static createComment(content: string): SsrHTMLElement;
7
- static createElement(tag: string): SsrHTMLElement;
8
- constructor(nodeName: string);
9
- readonly firstChild?: SsrHTMLElement;
10
- readonly nextSibling?: SsrHTMLElement;
11
- readonly parentNode?: SsrHTMLElement;
12
- readonly className: string;
13
- readonly style: CSSProperties;
14
- private content;
15
- private children;
16
- private attributes;
17
- removeChild(dom: SsrHTMLElement): void;
18
- appendChild(dom: SsrHTMLElement): void;
19
- setAttribute(name: string, value: any): any;
20
- removeAttribute(name: string): void;
21
- toString(): string;
22
- }
23
- export declare function render(element: AirxElement, domRef?: SsrHTMLElement): string | undefined;
24
- export {};
@@ -1,345 +0,0 @@
1
- import { createLogger } from '../logger';
2
- import { InnerAirxComponentContext, performUnitOfWork } from './common';
3
- function camelToKebab(str) {
4
- return str.replace(/([A-Z])/g, (match, p1, offset) => {
5
- if (offset === 0) {
6
- return p1.toLowerCase();
7
- }
8
- else {
9
- return '-' + p1.toLowerCase();
10
- }
11
- });
12
- }
13
- class SsrHTMLElement {
14
- nodeName;
15
- static createTextNode(content) {
16
- const dom = new SsrHTMLElement('#text');
17
- dom.content = content;
18
- return dom;
19
- }
20
- static createComment(content) {
21
- const dom = new SsrHTMLElement('#comment');
22
- dom.content = content;
23
- return dom;
24
- }
25
- static createElement(tag) {
26
- return new SsrHTMLElement(tag);
27
- }
28
- constructor(nodeName) {
29
- this.nodeName = nodeName;
30
- this.style = {};
31
- this.content = '';
32
- this.children = [];
33
- this.className = '';
34
- this.attributes = new Map();
35
- }
36
- firstChild;
37
- nextSibling;
38
- parentNode;
39
- className;
40
- style;
41
- content;
42
- children;
43
- attributes;
44
- removeChild(dom) {
45
- /* eslint-disable @typescript-eslint/ban-ts-comment */
46
- const index = this.children.findIndex(v => v === dom);
47
- if (index != -1)
48
- this.children.splice(index, 1);
49
- // @ts-ignore
50
- this.firstChild = undefined;
51
- // @ts-ignore
52
- this.nextSibling = undefined;
53
- // @ts-ignore
54
- this.parentNode = undefined;
55
- /* eslint-enable @typescript-eslint/ban-ts-comment */
56
- }
57
- appendChild(dom) {
58
- /* eslint-disable @typescript-eslint/ban-ts-comment */
59
- // @ts-ignore
60
- dom.parentNode = this;
61
- if (this.children.length > 0) {
62
- // @ts-ignore
63
- this.children[this.children.length - 1].nextSibling = dom;
64
- }
65
- // @ts-ignore
66
- this.firstChild = this.children[0];
67
- this.children.push(dom);
68
- /* eslint-enable @typescript-eslint/ban-ts-comment */
69
- }
70
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
71
- setAttribute(name, value) {
72
- if (value === '')
73
- return this.attributes.delete(name);
74
- /* eslint-disable @typescript-eslint/ban-ts-comment */
75
- // @ts-ignore
76
- if (name === 'class')
77
- return this.className = value;
78
- // @ts-ignore
79
- if (name === 'style')
80
- return this.style = value;
81
- /* eslint-enable @typescript-eslint/ban-ts-comment */
82
- this.attributes.set(name, value);
83
- }
84
- removeAttribute(name) {
85
- this.attributes.delete(name);
86
- }
87
- toString() {
88
- if (this.nodeName === '#text')
89
- return this.content;
90
- if (this.nodeName === '#comment')
91
- return this.content;
92
- const className = this.className.length > 0 ? `class="${this.className}"` : '';
93
- const styleString = Object.entries(this.style).map(([key, value]) => `${camelToKebab(key)}:${value}`).join(';');
94
- const style = styleString.length > 0 ? `style="${styleString}"` : '';
95
- const attributes = Array.from(this.attributes.entries()).map(([name, value]) => `${name}="${value}"`).join(' ');
96
- return `<${this.nodeName} ${className} ${style} ${attributes}>${this.children.map(child => child.toString()).join('')}</${this.nodeName}>`;
97
- }
98
- }
99
- export function render(element, domRef) {
100
- const rootInstance = {
101
- domRef: SsrHTMLElement.createElement('div') || domRef,
102
- context: new InnerAirxComponentContext()
103
- };
104
- rootInstance.context.instance = rootInstance;
105
- const context = {
106
- rootInstance,
107
- nextUnitOfWork: null,
108
- needCommitDom: false
109
- };
110
- const appInstance = {
111
- element,
112
- parent: context.rootInstance,
113
- memoProps: { ...element.props },
114
- context: new InnerAirxComponentContext()
115
- };
116
- appInstance.context.instance = appInstance;
117
- context.rootInstance.child = appInstance;
118
- context.nextUnitOfWork = appInstance;
119
- /**
120
- * 提交 Dom 变化
121
- */
122
- function commitDom(rootInstance, rootNode) {
123
- const logger = createLogger('commitDom');
124
- logger.debug('commitDom', rootInstance);
125
- function updateDomProperties(dom, nextProps, prevProps = {}) {
126
- const isKey = (key) => key === 'key';
127
- const isRef = (key) => key === 'ref';
128
- const isStyle = (key) => key === 'style';
129
- const isClass = (key) => key === 'class';
130
- const isEvent = (key) => key.startsWith("on");
131
- const isChildren = (key) => key === 'children';
132
- const isGone = (_prev, next) => (key) => !(key in next);
133
- const isNew = (prev, next) => (key) => prev[key] !== next[key];
134
- const isProperty = (key) => !isChildren(key) && !isEvent(key) && !isStyle(key) && !isClass(key) && !isKey(key) && !isRef(key);
135
- // https://developer.mozilla.org/zh-CN/docs/Web/API/Node
136
- if (dom.nodeName === '#text' || dom.nodeName === '#comment') {
137
- const textNode = dom;
138
- if (textNode.nodeValue !== nextProps.textContent) {
139
- textNode.nodeValue = String(nextProps.textContent);
140
- }
141
- return;
142
- }
143
- // remove old style
144
- const oldStyle = prevProps?.style;
145
- if (typeof oldStyle === 'object' && oldStyle != null) {
146
- Object.keys(oldStyle).forEach(key => {
147
- /* eslint-disable @typescript-eslint/no-explicit-any */
148
- delete dom.style[key];
149
- /* eslint-enable @typescript-eslint/no-explicit-any */
150
- });
151
- }
152
- // add new style
153
- const newStyle = nextProps?.style;
154
- if (typeof newStyle === 'object' && newStyle != null) {
155
- Object.keys(newStyle).forEach((key) => {
156
- /* eslint-disable @typescript-eslint/no-explicit-any */
157
- const value = newStyle?.[key];
158
- dom.style[key] = value == null ? '' : value;
159
- /* eslint-enable @typescript-eslint/no-explicit-any */
160
- });
161
- }
162
- if (dom.className !== nextProps?.class) {
163
- if (!nextProps?.class) {
164
- dom.removeAttribute('class');
165
- }
166
- else if (typeof nextProps?.class === 'string') {
167
- dom.setAttribute('class', nextProps?.class);
168
- }
169
- }
170
- // //Remove old or changed event listeners
171
- // Object.keys(prevProps)
172
- // .filter(isEvent)
173
- // .filter(
174
- // key =>
175
- // !(key in nextProps) ||
176
- // isNew(prevProps, nextProps)(key)
177
- // )
178
- // .forEach(name => {
179
- // const eventType = name
180
- // .toLowerCase()
181
- // .substring(2)
182
- // if (prevProps[name] == null) return
183
- // if (typeof prevProps[name] !== 'function') {
184
- // console.error('EventListener is not a function')
185
- // } else {
186
- // // eslint-disable-next-line @typescript-eslint/no-explicit-any
187
- // dom.removeEventListener(eventType as any, prevProps[name] as any)
188
- // }
189
- // })
190
- // // Add event listeners
191
- // Object.keys(nextProps)
192
- // .filter(isEvent)
193
- // .filter(isNew(prevProps, nextProps))
194
- // .forEach(name => {
195
- // const eventType = name
196
- // .toLowerCase()
197
- // .substring(2)
198
- // if (nextProps[name] == null) return
199
- // if (typeof nextProps[name] !== 'function') {
200
- // console.error('EventListener is not a function')
201
- // } else {
202
- // // eslint-disable-next-line @typescript-eslint/no-explicit-any
203
- // dom.addEventListener(eventType as any, nextProps[name] as any)
204
- // }
205
- // })
206
- // Remove old properties
207
- Object.keys(prevProps)
208
- .filter(isProperty)
209
- .filter(isGone(prevProps, nextProps))
210
- .forEach(name => dom.setAttribute(name, ''));
211
- // Set new or changed properties
212
- Object.keys(nextProps)
213
- .filter(isProperty)
214
- .filter(isNew(prevProps, nextProps))
215
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
216
- .forEach(name => dom.setAttribute(name, nextProps[name]));
217
- }
218
- function getParentDom(instance) {
219
- if (instance.parent?.domRef != null) {
220
- return instance.parent.domRef;
221
- }
222
- if (instance.parent) {
223
- return getParentDom(instance.parent);
224
- }
225
- throw new Error('Cant find dom');
226
- }
227
- /**
228
- * 查找 instance 下所有的一级 dom
229
- * @param instance
230
- * @returns
231
- */
232
- function getChildDoms(instance) {
233
- const domList = [];
234
- const todoList = [instance];
235
- while (todoList.length > 0) {
236
- const current = todoList.pop();
237
- // 找到真实 dom 直接提交
238
- if (current?.domRef != null) {
239
- domList.push(current.domRef);
240
- }
241
- // 有子节点但是无真实 dom,向下继续查找
242
- if (current?.domRef == null) {
243
- if (current?.child != null) {
244
- todoList.push(current.child);
245
- }
246
- }
247
- // 可能有兄弟节点,则需要继续查找
248
- if (current?.sibling != null) {
249
- todoList.push(current.sibling);
250
- }
251
- }
252
- return domList;
253
- }
254
- function commitInstanceDom(nextInstance, oldNode) {
255
- // 移除标删元素
256
- if (nextInstance.deletions) {
257
- for (const deletion of nextInstance.deletions) {
258
- const domList = getChildDoms(deletion);
259
- for (let index = 0; index < domList.length; index++) {
260
- const dom = domList[index];
261
- if (dom && dom.parentNode)
262
- dom.parentNode.removeChild(dom);
263
- }
264
- deletion.context.triggerUnmounted();
265
- }
266
- nextInstance.deletions.clear();
267
- }
268
- // 创建 dom
269
- if (nextInstance.domRef == null) {
270
- if (nextInstance.element == null)
271
- throw new Error('???');
272
- if (typeof nextInstance.element.type === 'string') {
273
- if (nextInstance.element.type === 'text') {
274
- const textContent = nextInstance.element.props.textContent;
275
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
276
- nextInstance.domRef = SsrHTMLElement.createTextNode(textContent);
277
- }
278
- else if (nextInstance.element.type === 'comment') {
279
- const textContent = nextInstance.element.props.textContent;
280
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
281
- nextInstance.domRef = SsrHTMLElement.createComment(textContent);
282
- }
283
- else {
284
- nextInstance.domRef = SsrHTMLElement.createElement(nextInstance.element.type);
285
- }
286
- }
287
- }
288
- // 更新属性
289
- if (nextInstance.domRef != null && nextInstance.element != null) {
290
- updateDomProperties(nextInstance.domRef, nextInstance.element.props, nextInstance.beforeElement?.props);
291
- }
292
- // 插入 parent
293
- // TODO: 针对仅移动时优化
294
- if (nextInstance.domRef != null) {
295
- if (oldNode !== nextInstance.domRef) {
296
- if (nextInstance.domRef.parentNode) {
297
- nextInstance.domRef.parentNode.removeChild(nextInstance.domRef);
298
- }
299
- const parentDom = getParentDom(nextInstance);
300
- parentDom.appendChild(nextInstance.domRef);
301
- }
302
- }
303
- }
304
- function commitWalkV2(initInstance, initNode) {
305
- // 创建一个栈,将根节点压入栈中
306
- const stack = [[initInstance, initNode]];
307
- while (stack.length > 0) {
308
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
309
- const stackLayer = stack.pop();
310
- if (typeof stackLayer === 'function') {
311
- stackLayer();
312
- continue;
313
- }
314
- const [instance, node] = stackLayer;
315
- commitInstanceDom(instance, node);
316
- // stack 是先入后出
317
- // 实际上是先渲染 child
318
- // 这里然后再渲染 sibling
319
- // 执行生命周期的 Mount
320
- stack.push(() => instance.context.triggerMounted());
321
- // 更新下一个兄弟节点
322
- if (instance.sibling != null) {
323
- const siblingNode = instance.domRef
324
- ? instance.domRef.nextSibling
325
- : node?.nextSibling;
326
- stack.push([instance.sibling, siblingNode || undefined]);
327
- }
328
- // 更新下一个子节点
329
- if (instance.child != null) {
330
- const childNode = instance.domRef
331
- ? instance.domRef.firstChild
332
- : node;
333
- stack.push([instance.child, childNode || undefined]);
334
- }
335
- }
336
- }
337
- commitWalkV2(rootInstance, rootNode);
338
- }
339
- while (context.nextUnitOfWork) {
340
- context.nextUnitOfWork = performUnitOfWork(context.nextUnitOfWork);
341
- }
342
- commitDom(context.rootInstance.child, context.rootInstance.domRef?.firstChild || undefined);
343
- return context.rootInstance.domRef?.toString();
344
- }
345
- //# sourceMappingURL=server.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../source/render/server.ts"],"names":[],"mappings":"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"}