airx 0.2.0 → 0.2.2

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 (64) hide show
  1. package/README.md +42 -5
  2. package/output/{index.d.ts → esm/index.d.ts} +1 -0
  3. package/output/esm/index.js +1212 -0
  4. package/output/esm/index.js.map +1 -0
  5. package/output/esm/render/browser.d.ts +7 -0
  6. package/output/{render → esm/render}/common/index.d.ts +14 -12
  7. package/output/{render → esm/render}/index.d.ts +2 -1
  8. package/output/{render/browser.d.ts → esm/render/server.d.ts} +3 -2
  9. package/output/umd/element.d.ts +46 -0
  10. package/output/umd/index.d.ts +13 -0
  11. package/output/umd/index.js +1229 -0
  12. package/output/umd/index.js.map +1 -0
  13. package/output/umd/logger.d.ts +3 -0
  14. package/output/umd/reactive.d.ts +10 -0
  15. package/output/umd/render/browser.d.ts +7 -0
  16. package/output/umd/render/common/hooks.d.ts +10 -0
  17. package/output/umd/render/common/index.d.ts +62 -0
  18. package/output/umd/render/common/plugins/context.d.ts +5 -0
  19. package/output/umd/render/common/plugins/index.d.ts +19 -0
  20. package/output/umd/render/common/plugins/internal/basic.d.ts +10 -0
  21. package/output/umd/render/common/plugins/internal/inject.d.ts +6 -0
  22. package/output/umd/render/index.d.ts +4 -0
  23. package/output/umd/render/server.d.ts +5 -0
  24. package/output/umd/symbol.d.ts +2 -0
  25. package/output/umd/types.d.ts +1172 -0
  26. package/package.json +16 -15
  27. package/output/element.js +0 -27
  28. package/output/element.js.map +0 -1
  29. package/output/index.js +0 -21
  30. package/output/index.js.map +0 -1
  31. package/output/logger.js +0 -13
  32. package/output/logger.js.map +0 -1
  33. package/output/reactive.js +0 -64
  34. package/output/reactive.js.map +0 -1
  35. package/output/render/browser.js +0 -191
  36. package/output/render/browser.js.map +0 -1
  37. package/output/render/common/hooks.js +0 -22
  38. package/output/render/common/hooks.js.map +0 -1
  39. package/output/render/common/index.js +0 -372
  40. package/output/render/common/index.js.map +0 -1
  41. package/output/render/common/plugins/context.js +0 -12
  42. package/output/render/common/plugins/context.js.map +0 -1
  43. package/output/render/common/plugins/index.js +0 -2
  44. package/output/render/common/plugins/index.js.map +0 -1
  45. package/output/render/common/plugins/internal/basic.js +0 -158
  46. package/output/render/common/plugins/internal/basic.js.map +0 -1
  47. package/output/render/common/plugins/internal/inject.js +0 -25
  48. package/output/render/common/plugins/internal/inject.js.map +0 -1
  49. package/output/render/index.js +0 -4
  50. package/output/render/index.js.map +0 -1
  51. package/output/symbol.js +0 -3
  52. package/output/symbol.js.map +0 -1
  53. package/output/types.js +0 -2
  54. package/output/types.js.map +0 -1
  55. /package/output/{element.d.ts → esm/element.d.ts} +0 -0
  56. /package/output/{logger.d.ts → esm/logger.d.ts} +0 -0
  57. /package/output/{reactive.d.ts → esm/reactive.d.ts} +0 -0
  58. /package/output/{render → esm/render}/common/hooks.d.ts +0 -0
  59. /package/output/{render → esm/render}/common/plugins/context.d.ts +0 -0
  60. /package/output/{render → esm/render}/common/plugins/index.d.ts +0 -0
  61. /package/output/{render → esm/render}/common/plugins/internal/basic.d.ts +0 -0
  62. /package/output/{render → esm/render}/common/plugins/internal/inject.d.ts +0 -0
  63. /package/output/{symbol.d.ts → esm/symbol.d.ts} +0 -0
  64. /package/output/{types.d.ts → esm/types.d.ts} +0 -0
@@ -1,372 +0,0 @@
1
- import { createLogger } from '../../logger';
2
- import { watchSignal, createCollector } from '../../reactive';
3
- import { createElement, isValidElement } from '../../element';
4
- import { globalContext } from './hooks';
5
- export class InnerAirxComponentContext {
6
- instance;
7
- disposers = new Set();
8
- providedMap = new Map();
9
- injectedMap = new Map();
10
- mountListeners = new Set();
11
- unmountedListeners = new Set();
12
- triggerMounted() {
13
- this.mountListeners.forEach(listener => {
14
- let disposer = undefined;
15
- try {
16
- disposer = listener();
17
- }
18
- catch (err) {
19
- console.error(err, listener);
20
- }
21
- if (typeof disposer === 'function') {
22
- this.addDisposer(disposer);
23
- }
24
- });
25
- // 生命周期只会调用一次
26
- this.mountListeners.clear();
27
- }
28
- triggerUnmounted() {
29
- // 递归的调用子 child 的 Unmounted
30
- if (this.instance?.child != null) {
31
- this.instance.child.context.triggerUnmounted();
32
- }
33
- // 处理自己
34
- this.unmountedListeners.forEach(listener => {
35
- try {
36
- listener();
37
- }
38
- catch (err) {
39
- console.error(err, listener);
40
- }
41
- });
42
- // 处理兄弟节点
43
- if (this.instance?.sibling != null) {
44
- this.instance.sibling.context.triggerUnmounted();
45
- }
46
- this.dispose();
47
- }
48
- onMounted(listener) {
49
- this.mountListeners.add(listener);
50
- }
51
- onUnmounted(listener) {
52
- this.unmountedListeners.add(listener);
53
- }
54
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
55
- provide(key, value) {
56
- this.providedMap.set(key, value);
57
- return v => this.providedMap.set(key, v);
58
- }
59
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
60
- inject(key) {
61
- const getProvideValueForParent = (instance, key) => {
62
- if (instance && instance.context) {
63
- const value = instance.context.providedMap.get(key);
64
- if (value != undefined)
65
- return value;
66
- if (instance.parent)
67
- return getProvideValueForParent(instance.parent, key);
68
- }
69
- return undefined;
70
- };
71
- const currentParentValue = getProvideValueForParent(this.instance.parent, key);
72
- this.injectedMap.set(key, currentParentValue); // 更新本地值
73
- return this.injectedMap.get(key);
74
- }
75
- addDisposer(...disposers) {
76
- disposers.forEach(disposer => {
77
- this.disposers.add(disposer);
78
- });
79
- }
80
- dispose() {
81
- this.disposers.forEach((disposer) => {
82
- try {
83
- disposer();
84
- }
85
- catch (err) {
86
- // eslint-disable-next-line no-console
87
- console.error(err, disposer);
88
- }
89
- });
90
- this.disposers.clear();
91
- this.injectedMap.clear();
92
- this.providedMap.clear();
93
- this.mountListeners.clear();
94
- this.unmountedListeners.clear();
95
- }
96
- /**
97
- * 当 context 传递给外部消费时,隐藏内部实现,仅暴露接口定义的内容
98
- * @returns 和 AirxComponentContext 接口完全一致的对象
99
- */
100
- getSafeContext() {
101
- return {
102
- inject: k => this.inject(k),
103
- provide: (k, v) => this.provide(k, v),
104
- onMounted: listener => this.onMounted(listener),
105
- onUnmounted: listener => this.onUnmounted(listener)
106
- };
107
- }
108
- }
109
- /**
110
- * 更新 children
111
- * @param parentInstance 当前正在处理的组件的实例
112
- * @param children 当前组件的子节点
113
- */
114
- export function reconcileChildren(appContext, parentInstance, childrenElementArray) {
115
- const logger = createLogger('reconcileChildren');
116
- logger.debug('reconcileChildren', parentInstance, childrenElementArray);
117
- // parentInstance ←--------
118
- // | ↑ ↑
119
- // child parent parent
120
- // ↓ | |
121
- // instance -sibling→ instance -→ ....
122
- /**
123
- * 内部通过 index 生成 element 的 key
124
- * 通过前缀来避免和用户手动设置的 key 发生冲突
125
- * @param index
126
- * @returns 生成的 key
127
- */
128
- function getInnerElementIndexKey(index) {
129
- return `airx-element-inner-key:${index}`;
130
- }
131
- /**
132
- * 将 children 实例链转成 Map 便于此处消费
133
- * @param firstChild children 实例的第一个元素
134
- * @returns 从 firstChild 开始之后的所有 sibling 实例组成的 Map
135
- */
136
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
137
- function getChildrenInstanceMap(firstChild) {
138
- // 不使用递归是因为递归容易爆栈
139
- let nextIndex = 0;
140
- let nextChild = firstChild;
141
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
142
- const map = new Map();
143
- while (nextChild) {
144
- /* 如果有 key,则将 key 作为 map key,否则将 index 作为 key */
145
- if (nextChild.element?.props.key != null) {
146
- map.set(nextChild.element?.props.key, nextChild);
147
- }
148
- else {
149
- map.set(getInnerElementIndexKey(nextIndex), nextChild);
150
- }
151
- nextChild = nextChild.sibling;
152
- nextIndex += 1;
153
- }
154
- return map;
155
- }
156
- const newChildrenInstanceArray = [];
157
- const childrenInstanceMap = getChildrenInstanceMap(parentInstance.child);
158
- function getChildInstance(child, index) {
159
- if (child.props.key != null) {
160
- const key = child.props.key;
161
- const instance = childrenInstanceMap.get(key) || null;
162
- return [instance, () => childrenInstanceMap.delete(key)];
163
- }
164
- const innerKey = getInnerElementIndexKey(index);
165
- const instance = childrenInstanceMap.get(innerKey) || null;
166
- return [instance, () => childrenInstanceMap.delete(innerKey)];
167
- }
168
- /** 是否复用实例 */
169
- function isReuseInstance(instance, nextElement) {
170
- for (const plugin of appContext.plugins) {
171
- if (typeof plugin.isReuseInstance === 'function') {
172
- const result = plugin.isReuseInstance(instance, nextElement);
173
- // 任意一个插件要求不复用就不复用
174
- if (result === false)
175
- return false;
176
- }
177
- }
178
- return true;
179
- }
180
- function updateMemoProps(instance) {
181
- if (instance.element == null)
182
- return;
183
- if (instance.memoProps == null)
184
- instance.memoProps = {};
185
- // 简单来说就是以下几件事情
186
- // 始终保持 props 的引用不变
187
- // 1. 创建一个新对象来保存 beforeElement props 的状态
188
- // 2. 将新的 element 上的 props 引用设置为之前的 props
189
- // 3. 将新的 element 上的 props 更新到之前的 props 上去
190
- if (instance.memoProps != null) {
191
- for (const key in instance.memoProps) {
192
- delete instance.memoProps[key];
193
- }
194
- }
195
- // 将新的 props 更新上去
196
- for (const key in instance.element.props) {
197
- const value = instance.element.props[key];
198
- instance.memoProps[key] = value;
199
- }
200
- }
201
- function isNeedReRender(instance) {
202
- for (const plugin of appContext.plugins) {
203
- if (typeof plugin.isReRender === 'function') {
204
- const result = plugin.isReRender(instance);
205
- // 任意一个插件要求重新渲染就重新渲染
206
- if (result === true)
207
- return true;
208
- }
209
- }
210
- return false;
211
- }
212
- function getElementNamespace(element) {
213
- const ns = Object.keys(element.props)
214
- .filter(key => (key === 'xmlns' || key.startsWith('xmlns:')))
215
- .sort((a, b) => a.length - b.length);
216
- if (ns.length > 1) {
217
- console.log('airx currently does not support setting multiple xmlns');
218
- return '';
219
- }
220
- if (ns.some(i => i.startsWith('xmlns:'))) {
221
- console.log('airx does not currently support setting named namespaces,only supports default');
222
- return '';
223
- }
224
- // 原则上来说 html 仅支持设置默认的 namespace
225
- return element.props[ns[0]];
226
- }
227
- // 依次遍历 child 并和 instance 对比
228
- for (let index = 0; index < childrenElementArray.length; index++) {
229
- const element = childrenElementArray[index];
230
- const [instance, seize] = getChildInstance(element, index);
231
- if (instance && isReuseInstance(instance, element)) {
232
- seize(); // 从 childrenInstanceMap 中释放
233
- newChildrenInstanceArray.push(instance);
234
- instance.beforeElement = instance.element;
235
- instance.element = element;
236
- updateMemoProps(instance);
237
- // 如果父组件更新了,子组件全部都要更新
238
- if (instance.needReRender !== true && typeof element.type === 'function') {
239
- instance.needReRender = parentInstance.needReRender || isNeedReRender(instance);
240
- }
241
- }
242
- else {
243
- const context = new InnerAirxComponentContext();
244
- const elementNamespace = getElementNamespace(element);
245
- const instance = { element, context, elementNamespace };
246
- newChildrenInstanceArray.push(instance);
247
- context.instance = instance;
248
- updateMemoProps(instance);
249
- // 添加 ref 处理
250
- if ('ref' in instance.memoProps) {
251
- context.onMounted(() => {
252
- if (instance.domRef) { // 如果组件有自己的 dom
253
- instance.memoProps.ref.value = instance.domRef;
254
- return () => instance.memoProps.ref.value = null;
255
- }
256
- });
257
- }
258
- }
259
- }
260
- // 新的 node
261
- for (let index = 0; index < newChildrenInstanceArray.length; index++) {
262
- const instance = newChildrenInstanceArray[index];
263
- // 确保链的干净
264
- instance.parent = parentInstance;
265
- if (index === 0)
266
- parentInstance.child = instance;
267
- if (index > 0)
268
- newChildrenInstanceArray[index - 1].sibling = instance;
269
- if (index === newChildrenInstanceArray.length - 1)
270
- delete instance.sibling;
271
- // 处理 ElementNS: 继承父级 namespace
272
- if (!instance.elementNamespace && instance.parent?.elementNamespace) {
273
- // SVG 中 foreignObject 代表外来对象,起到隔离 namespace 的作用
274
- if (instance.parent.element?.type !== 'foreignObject') {
275
- instance.elementNamespace = instance.parent.elementNamespace;
276
- }
277
- }
278
- }
279
- // 剩余的是需要移除的
280
- if (childrenInstanceMap.size > 0) {
281
- if (parentInstance.deletions == null) {
282
- parentInstance.deletions = new Set();
283
- }
284
- childrenInstanceMap.forEach(instance => {
285
- parentInstance.deletions?.add(instance);
286
- });
287
- }
288
- logger.debug('parentInstance', parentInstance);
289
- }
290
- /**
291
- * 处理单个 instance
292
- * @param instance 当前处理的实例
293
- * @returns 返回下一个需要处理的 instance
294
- */
295
- export function performUnitOfWork(pluginContext, instance, onUpdateRequire) {
296
- const element = instance.element;
297
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
298
- function childrenAsElements(children) {
299
- const childrenAsArray = Array.isArray(children) ? children : [children];
300
- function isComment(element) {
301
- if (element === '')
302
- return true;
303
- if (element == null)
304
- return true;
305
- if (element === false)
306
- return true;
307
- return false;
308
- }
309
- return childrenAsArray.flat(3).map(element => {
310
- if (isValidElement(element))
311
- return element;
312
- const elementType = isComment(element) ? 'comment' : 'text';
313
- const textContent = element === '' ? 'empty-string' : String(element);
314
- return createElement(elementType, { textContent });
315
- });
316
- }
317
- // airx 组件
318
- if (typeof element?.type === 'function') {
319
- const collector = createCollector();
320
- if (instance.render == null) {
321
- const component = element.type;
322
- const beforeContext = globalContext.current;
323
- globalContext.current = instance.context.getSafeContext();
324
- const componentReturnValue = collector.collect(() => component(instance.memoProps));
325
- if (typeof componentReturnValue !== 'function') {
326
- throw new Error('Component must return a render function');
327
- }
328
- globalContext.current = beforeContext;
329
- instance.render = componentReturnValue;
330
- const children = collector.collect(() => instance.render?.());
331
- reconcileChildren(pluginContext, instance, childrenAsElements(children));
332
- }
333
- if (instance.needReRender) {
334
- const children = collector.collect(() => instance.render?.());
335
- reconcileChildren(pluginContext, instance, childrenAsElements(children));
336
- delete instance.needReRender;
337
- }
338
- // 处理依赖触发的更新
339
- collector.complete().forEach(ref => {
340
- instance.context.addDisposer(watchSignal(ref, () => {
341
- instance.needReRender = true;
342
- onUpdateRequire?.(instance);
343
- }));
344
- });
345
- }
346
- // 浏览器组件/标签
347
- if (typeof element?.type === 'string') {
348
- if ('children' in element.props && Array.isArray(element.props.children)) {
349
- reconcileChildren(pluginContext, instance, childrenAsElements(element.props.children));
350
- }
351
- }
352
- // 优先处理 child
353
- if (instance.child) {
354
- return instance.child;
355
- }
356
- /**
357
- * 递归向上查找可用的兄弟 instance
358
- * @param instance
359
- * @returns 返回下一个需要处理的兄弟 instance
360
- */
361
- function returnSibling(instance) {
362
- if (instance.sibling) {
363
- return instance.sibling;
364
- }
365
- if (instance.parent) {
366
- return returnSibling(instance.parent);
367
- }
368
- return null;
369
- }
370
- return returnSibling(instance);
371
- }
372
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../source/render/common/index.ts"],"names":[],"mappings":"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"}
@@ -1,12 +0,0 @@
1
- import { BasicLogic } from './internal/basic';
2
- import { InjectSystem } from './internal/inject';
3
- export class PluginContext {
4
- plugins = [
5
- new BasicLogic(),
6
- new InjectSystem()
7
- ];
8
- registerPlugin(...plugins) {
9
- this.plugins.push(...plugins);
10
- }
11
- }
12
- //# sourceMappingURL=context.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../../../../source/render/common/plugins/context.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAEhD,MAAM,OAAO,aAAa;IACxB,OAAO,GAAa;QAClB,IAAI,UAAU,EAAE;QAChB,IAAI,YAAY,EAAE;KACnB,CAAA;IAED,cAAc,CAAC,GAAG,OAAiB;QACjC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAA;IAC/B,CAAC;CACF"}
@@ -1,2 +0,0 @@
1
- export { PluginContext } from './context';
2
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../source/render/common/plugins/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA"}
@@ -1,158 +0,0 @@
1
- import { createLogger } from '../../../../logger';
2
- export class BasicLogic {
3
- logger = createLogger('basicLogicPlugin');
4
- isSameProps(preProps, nextProps) {
5
- if (Object.is(nextProps, preProps)) {
6
- return true;
7
- }
8
- if (typeof preProps !== 'object'
9
- || typeof nextProps !== 'object'
10
- || preProps === null
11
- || nextProps === null) {
12
- this.logger.debug('props must be an object');
13
- return false;
14
- }
15
- // 对应 key 的值不相同返回 false
16
- const prevKeys = Object.keys(preProps);
17
- for (let index = 0; index < prevKeys.length; index++) {
18
- const key = prevKeys[index];
19
- if (key !== 'children' && key !== 'key') {
20
- if (!Object.hasOwn(nextProps, key))
21
- return false;
22
- if (!Object.is(preProps[key], nextProps[key]))
23
- return false;
24
- }
25
- if (key === 'children') {
26
- const prevChildren = preProps['children'];
27
- const nextChildren = nextProps['children'];
28
- // children 都是空的,则无需更新
29
- if (prevChildren.length === 0 && nextChildren.length === 0)
30
- return true;
31
- // 简单比较一下 child 的引用
32
- for (let index = 0; index < prevChildren.length; index++) {
33
- const prevChild = prevChildren[index];
34
- const nextChild = nextChildren[index];
35
- if (prevChild !== nextChild)
36
- return false;
37
- if (typeof prevChild !== typeof nextChild)
38
- return false;
39
- }
40
- }
41
- return true;
42
- }
43
- return false;
44
- }
45
- isReRender(instance) {
46
- const nextProps = instance.element?.props;
47
- const preProps = instance.beforeElement?.props;
48
- if (!this.isSameProps(preProps, nextProps))
49
- return true;
50
- }
51
- updateDom(dom, nextProps, prevProps = {}) {
52
- this.logger.debug('updateDom', dom, nextProps, prevProps);
53
- const isKey = (key) => key === 'key';
54
- const isRef = (key) => key === 'ref';
55
- const isStyle = (key) => key === 'style';
56
- const isClass = (key) => key === 'class';
57
- const isEvent = (key) => key.startsWith("on");
58
- const isChildren = (key) => key === 'children';
59
- const isGone = (_prev, next) => (key) => !(key in next);
60
- const isNew = (prev, next) => (key) => prev[key] !== next[key];
61
- const isProperty = (key) => !isChildren(key) && !isEvent(key) && !isStyle(key) && !isClass(key) && !isKey(key) && !isRef(key);
62
- // https://developer.mozilla.org/zh-CN/docs/Web/API/Node
63
- if (dom.nodeName === '#text' || dom.nodeName === '#comment') {
64
- const textNode = dom;
65
- if (textNode.nodeValue !== nextProps.textContent) {
66
- textNode.nodeValue = String(nextProps.textContent);
67
- }
68
- return;
69
- }
70
- // remove old style
71
- const oldStyle = prevProps?.style;
72
- if (typeof oldStyle === 'object' && oldStyle != null) {
73
- if (!('style' in dom) || !dom.style)
74
- return;
75
- Object.keys(oldStyle).forEach(key => {
76
- /* eslint-disable @typescript-eslint/no-explicit-any */
77
- if ('style' in dom && dom.style) {
78
- delete dom.style[key];
79
- /* eslint-enable @typescript-eslint/no-explicit-any */
80
- }
81
- });
82
- }
83
- // add new style
84
- const newStyle = nextProps?.style;
85
- if (typeof newStyle === 'object' && newStyle != null) {
86
- if (!('style' in dom) || !dom.style)
87
- return;
88
- Object.keys(newStyle).forEach((key) => {
89
- /* eslint-disable @typescript-eslint/no-explicit-any */
90
- const value = newStyle?.[key];
91
- dom.style[key] = value == null ? '' : value;
92
- /* eslint-enable @typescript-eslint/no-explicit-any */
93
- });
94
- }
95
- if (dom.className !== nextProps?.class) {
96
- if (!nextProps?.class) {
97
- dom.removeAttribute('class');
98
- }
99
- else if (typeof nextProps?.class === 'string') {
100
- dom.setAttribute('class', nextProps?.class);
101
- }
102
- }
103
- //Remove old or changed event listeners
104
- Object.keys(prevProps)
105
- .filter(isEvent)
106
- .filter(key => !(key in nextProps) ||
107
- isNew(prevProps, nextProps)(key))
108
- .forEach(name => {
109
- const eventType = name
110
- .toLowerCase()
111
- .substring(2);
112
- if (prevProps[name] == null)
113
- return;
114
- if (typeof prevProps[name] !== 'function') {
115
- console.error('EventListener is not a function');
116
- }
117
- else {
118
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
119
- dom.removeEventListener(eventType, prevProps[name]);
120
- }
121
- });
122
- // Add event listeners
123
- Object.keys(nextProps)
124
- .filter(isEvent)
125
- .filter(isNew(prevProps, nextProps))
126
- .forEach(name => {
127
- const eventType = name
128
- .toLowerCase()
129
- .substring(2);
130
- if (nextProps[name] == null)
131
- return;
132
- if (typeof nextProps[name] !== 'function') {
133
- console.error('EventListener is not a function');
134
- }
135
- else {
136
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
137
- dom.addEventListener(eventType, nextProps[name]);
138
- }
139
- });
140
- // Remove old properties
141
- Object.keys(prevProps)
142
- .filter(isProperty)
143
- .filter(isGone(prevProps, nextProps))
144
- .forEach(name => dom.setAttribute(name, ''));
145
- // Set new or changed properties
146
- Object.keys(nextProps)
147
- .filter(isProperty)
148
- .filter(isNew(prevProps, nextProps))
149
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
150
- .forEach(name => dom.setAttribute(name, nextProps[name]));
151
- }
152
- isReuseInstance(instance, nextElement) {
153
- if (instance && instance.element && instance.element.type !== nextElement.type) {
154
- return false;
155
- }
156
- }
157
- }
158
- //# sourceMappingURL=basic.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"basic.js","sourceRoot":"","sources":["../../../../../source/render/common/plugins/internal/basic.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAIjD,MAAM,OAAO,UAAU;IACb,MAAM,GAAG,YAAY,CAAC,kBAAkB,CAAC,CAAA;IAEzC,WAAW,CAAC,QAAe,EAAE,SAAgB;QACnD,IAAI,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE;YAClC,OAAO,IAAI,CAAA;SACZ;QAED,IACE,OAAO,QAAQ,KAAK,QAAQ;eACzB,OAAO,SAAS,KAAK,QAAQ;eAC7B,QAAQ,KAAK,IAAI;eACjB,SAAS,KAAK,IAAI,EACrB;YACA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAA;YAC5C,OAAO,KAAK,CAAA;SACb;QAED,uBAAuB;QACvB,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACtC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;YACpD,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;YAC3B,IAAI,GAAG,KAAK,UAAU,IAAI,GAAG,KAAK,KAAK,EAAE;gBACvC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,GAAG,CAAC;oBAAE,OAAO,KAAK,CAAA;gBAChD,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC;oBAAE,OAAO,KAAK,CAAA;aAC5D;YAED,IAAI,GAAG,KAAK,UAAU,EAAE;gBACtB,MAAM,YAAY,GAAG,QAAQ,CAAC,UAAU,CAAmB,CAAA;gBAC3D,MAAM,YAAY,GAAG,SAAS,CAAC,UAAU,CAAmB,CAAA;gBAC5D,sBAAsB;gBACtB,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC;oBAAE,OAAO,IAAI,CAAA;gBAEvE,mBAAmB;gBACnB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;oBACxD,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,CAAA;oBACrC,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,CAAA;oBAErC,IAAI,SAAS,KAAK,SAAS;wBAAE,OAAO,KAAK,CAAA;oBACzC,IAAI,OAAO,SAAS,KAAK,OAAO,SAAS;wBAAE,OAAO,KAAK,CAAA;iBACxD;aACF;YAED,OAAO,IAAI,CAAA;SACZ;QAED,OAAO,KAAK,CAAA;IACd,CAAC;IAED,UAAU,CAAC,QAAkB;QAC3B,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAA;QACzC,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,EAAE,KAAK,CAAA;QAC9C,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,SAAS,CAAC;YAAE,OAAO,IAAI,CAAA;IACzD,CAAC;IAED,SAAS,CAAC,GAAY,EAAE,SAAgB,EAAE,YAAmB,EAAE;QAC7D,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,GAAG,EAAE,SAAS,EAAE,SAAS,CAAC,CAAA;QACzD,MAAM,KAAK,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,GAAG,KAAK,KAAK,CAAA;QAC5C,MAAM,KAAK,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,GAAG,KAAK,KAAK,CAAA;QAC5C,MAAM,OAAO,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,GAAG,KAAK,OAAO,CAAA;QAChD,MAAM,OAAO,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,GAAG,KAAK,OAAO,CAAA;QAChD,MAAM,OAAO,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;QACrD,MAAM,UAAU,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,GAAG,KAAK,UAAU,CAAA;QACtD,MAAM,MAAM,GAAG,CAAC,KAAY,EAAE,IAAW,EAAE,EAAE,CAAC,CAAC,GAAW,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,CAAA;QAC7E,MAAM,KAAK,GAAG,CAAC,IAAW,EAAE,IAAW,EAAE,EAAE,CAAC,CAAC,GAAW,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,CAAA;QACpF,MAAM,UAAU,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAErI,wDAAwD;QACxD,IAAI,GAAG,CAAC,QAAQ,KAAK,OAAO,IAAI,GAAG,CAAC,QAAQ,KAAK,UAAU,EAAE;YAC3D,MAAM,QAAQ,GAAI,GAAiC,CAAA;YACnD,IAAI,QAAQ,CAAC,SAAS,KAAK,SAAS,CAAC,WAAW,EAAE;gBAChD,QAAQ,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,CAAA;aACnD;YACD,OAAM;SACP;QAED,mBAAmB;QACnB,MAAM,QAAQ,GAAG,SAAS,EAAE,KAAK,CAAA;QACjC,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,IAAI,IAAI,EAAE;YACpD,IAAI,CAAC,CAAC,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK;gBAAE,OAAM;YAC3C,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;gBAClC,uDAAuD;gBACvD,IAAI,OAAO,IAAI,GAAG,IAAI,GAAG,CAAC,KAAK,EAAE;oBAC/B,OAAQ,GAAG,CAAC,KAAa,CAAC,GAAU,CAAC,CAAA;oBACrC,sDAAsD;iBACvD;YACH,CAAC,CAAC,CAAA;SACH;QAED,gBAAgB;QAChB,MAAM,QAAQ,GAAG,SAAS,EAAE,KAAK,CAAA;QACjC,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,IAAI,IAAI,EAAE;YACpD,IAAI,CAAC,CAAC,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK;gBAAE,OAAM;YAC3C,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,GAAY,EAAE,EAAE;gBAC7C,uDAAuD;gBACvD,MAAM,KAAK,GAAI,QAAgB,EAAE,CAAC,GAAU,CAAC,CAAC;gBAC7C,GAAG,CAAC,KAAa,CAAC,GAAU,CAAC,GAAG,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAA;gBAC3D,sDAAsD;YACxD,CAAC,CAAC,CAAA;SACH;QAED,IAAI,GAAG,CAAC,SAAS,KAAK,SAAS,EAAE,KAAK,EAAE;YACtC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE;gBACrB,GAAG,CAAC,eAAe,CAAC,OAAO,CAAC,CAAA;aAC7B;iBAAM,IAAI,OAAO,SAAS,EAAE,KAAK,KAAK,QAAQ,EAAE;gBAC/C,GAAG,CAAC,YAAY,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,CAAA;aAC5C;SACF;QAED,uCAAuC;QACvC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;aACnB,MAAM,CAAC,OAAO,CAAC;aACf,MAAM,CACL,GAAG,CAAC,EAAE,CACJ,CAAC,CAAC,GAAG,IAAI,SAAS,CAAC;YACnB,KAAK,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,GAAG,CAAC,CACnC;aACA,OAAO,CAAC,IAAI,CAAC,EAAE;YACd,MAAM,SAAS,GAAG,IAAI;iBACnB,WAAW,EAAE;iBACb,SAAS,CAAC,CAAC,CAAC,CAAA;YAEf,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI;gBAAE,OAAM;YACnC,IAAI,OAAO,SAAS,CAAC,IAAI,CAAC,KAAK,UAAU,EAAE;gBACzC,OAAO,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAA;aACjD;iBAAM;gBACL,8DAA8D;gBAC9D,GAAG,CAAC,mBAAmB,CAAC,SAAgB,EAAE,SAAS,CAAC,IAAI,CAAQ,CAAC,CAAA;aAClE;QACH,CAAC,CAAC,CAAA;QAEJ,sBAAsB;QACtB,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;aACnB,MAAM,CAAC,OAAO,CAAC;aACf,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;aACnC,OAAO,CAAC,IAAI,CAAC,EAAE;YACd,MAAM,SAAS,GAAG,IAAI;iBACnB,WAAW,EAAE;iBACb,SAAS,CAAC,CAAC,CAAC,CAAA;YACf,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI;gBAAE,OAAM;YACnC,IAAI,OAAO,SAAS,CAAC,IAAI,CAAC,KAAK,UAAU,EAAE;gBACzC,OAAO,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAA;aACjD;iBAAM;gBACL,8DAA8D;gBAC9D,GAAG,CAAC,gBAAgB,CAAC,SAAgB,EAAE,SAAS,CAAC,IAAI,CAAQ,CAAC,CAAA;aAC/D;QACH,CAAC,CAAC,CAAA;QAEJ,wBAAwB;QACxB,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;aACnB,MAAM,CAAC,UAAU,CAAC;aAClB,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;aACpC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAA;QAE9C,gCAAgC;QAChC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;aACnB,MAAM,CAAC,UAAU,CAAC;aAClB,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;YACpC,8DAA8D;aAC7D,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAQ,CAAC,CAAC,CAAA;IACpE,CAAC;IAED,eAAe,CAAC,QAAkB,EAAE,WAAwB;QAC1D,IAAI,QAAQ,IAAI,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC,IAAI,KAAK,WAAW,CAAC,IAAI,EAAE;YAC9E,OAAO,KAAK,CAAA;SACb;IACH,CAAC;CACF"}
@@ -1,25 +0,0 @@
1
- export class InjectSystem {
2
- getProvideValueForParent(instance, key) {
3
- if (instance && instance.context) {
4
- const value = instance.context.providedMap.get(key);
5
- if (value != undefined)
6
- return value;
7
- if (instance.parent) {
8
- return this.getProvideValueForParent(instance.parent, key);
9
- }
10
- }
11
- return undefined;
12
- }
13
- isReuseInstance(instance) {
14
- const injectedKeys = [...instance.context.injectedMap.keys()];
15
- for (let index = 0; index < injectedKeys.length; index++) {
16
- const key = injectedKeys[index];
17
- const currentValue = instance.context.injectedMap.get(key);
18
- const parentValue = this.getProvideValueForParent(instance.parent, key);
19
- // 如果发现任何值发生变化,则重建实例
20
- if (parentValue !== currentValue)
21
- return false;
22
- }
23
- }
24
- }
25
- //# sourceMappingURL=inject.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"inject.js","sourceRoot":"","sources":["../../../../../source/render/common/plugins/internal/inject.ts"],"names":[],"mappings":"AAGA,MAAM,OAAO,YAAY;IACf,wBAAwB,CAAC,QAA8B,EAAE,GAAY;QAC3E,IAAI,QAAQ,IAAI,QAAQ,CAAC,OAAO,EAAE;YAChC,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;YACnD,IAAI,KAAK,IAAI,SAAS;gBAAE,OAAO,KAAK,CAAA;YACpC,IAAI,QAAQ,CAAC,MAAM,EAAE;gBACnB,OAAO,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;aAC3D;SACF;QAED,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,eAAe,CAAC,QAAkB;QAChC,MAAM,YAAY,GAAG,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAA;QAC7D,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;YACxD,MAAM,GAAG,GAAG,YAAY,CAAC,KAAK,CAAC,CAAA;YAC/B,MAAM,YAAY,GAAG,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;YAC1D,MAAM,WAAW,GAAG,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;YAEvE,oBAAoB;YACpB,IAAI,WAAW,KAAK,YAAY;gBAAE,OAAO,KAAK,CAAA;SAC/C;IACH,CAAC;CACF"}
@@ -1,4 +0,0 @@
1
- export { inject, provide, onMounted, onUnmounted } from './common/hooks';
2
- export { render } from './browser';
3
- export { PluginContext } from './common/plugins';
4
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../source/render/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,MAAM,EACN,OAAO,EACP,SAAS,EACT,WAAW,EACZ,MAAM,gBAAgB,CAAA;AAEvB,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAClC,OAAO,EAAU,aAAa,EAAE,MAAM,kBAAkB,CAAA"}
package/output/symbol.js DELETED
@@ -1,3 +0,0 @@
1
- export const airxElementSymbol = Symbol('airx-element');
2
- export const airxReactiveDependenciesSymbol = Symbol('airx-dependencies');
3
- //# sourceMappingURL=symbol.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"symbol.js","sourceRoot":"","sources":["../source/symbol.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC,cAAc,CAAC,CAAA;AACvD,MAAM,CAAC,MAAM,8BAA8B,GAAG,MAAM,CAAC,mBAAmB,CAAC,CAAA"}
package/output/types.js DELETED
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../source/types.ts"],"names":[],"mappings":""}
File without changes
File without changes
File without changes
File without changes