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
package/package.json CHANGED
@@ -1,30 +1,31 @@
1
1
  {
2
2
  "name": "airx",
3
- "version": "0.2.0",
3
+ "version": "0.2.2",
4
4
  "description": "a front framework with jsx",
5
- "types": "./output/index.d.ts",
6
- "exports": {
7
- "default": [
8
- "./output/index.js"
9
- ]
10
- },
5
+ "main": "./output/umd/index.js",
6
+ "module": "./output/esm/index.js",
7
+ "types": "./output/esm/index.d.ts",
11
8
  "files": [
12
9
  "output/*"
13
10
  ],
14
11
  "scripts": {
15
- "build": "tsc",
16
- "dev": "tsc -w",
12
+ "dev": "rollup -c -w",
13
+ "build": "rollup -c",
17
14
  "lint": "eslint source"
18
15
  },
19
16
  "dependencies": {
20
- "csstype": "^3.1.2"
17
+ "csstype": "^3.1.3"
21
18
  },
22
19
  "devDependencies": {
23
- "@typescript-eslint/eslint-plugin": "^5.59.9",
24
- "@typescript-eslint/parser": "^5.59.9",
25
- "eslint": "^8.42.0",
26
- "typescript": "~5.0.0"
20
+ "@rollup/plugin-babel": "^6.0.4",
21
+ "@rollup/plugin-commonjs": "^25.0.7",
22
+ "@rollup/plugin-node-resolve": "^15.2.3",
23
+ "@typescript-eslint/eslint-plugin": "^7.7.0",
24
+ "@typescript-eslint/parser": "^7.7.0",
25
+ "eslint": "^8.57.0",
26
+ "rollup-plugin-typescript2": "^0.36.0",
27
+ "typescript": "^5.4.5"
27
28
  },
28
- "author": "",
29
+ "author": "yinxulai",
29
30
  "license": "MIT"
30
31
  }
package/output/element.js DELETED
@@ -1,27 +0,0 @@
1
- import * as symbol from './symbol';
2
- /**
3
- * createElement 是用于创建 AirxElement 的工具函数
4
- */
5
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
6
- export function createElement(type, props, ...children) {
7
- return {
8
- type,
9
- props: {
10
- ...props,
11
- children
12
- },
13
- [symbol.airxElementSymbol]: true
14
- };
15
- }
16
- export function isValidElement(element) {
17
- return typeof element === 'object'
18
- && element !== null
19
- && Reflect.get(element, symbol.airxElementSymbol);
20
- }
21
- export function Fragment(props) {
22
- return () => props.children;
23
- }
24
- export function component(comp) {
25
- return comp;
26
- }
27
- //# sourceMappingURL=element.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"element.js","sourceRoot":"","sources":["../source/element.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,UAAU,CAAA;AAoClC;;GAEG;AACH,8DAA8D;AAC9D,MAAM,UAAU,aAAa,CAC3B,IAAwB,EACxB,KAAqC,EACrC,GAAG,QAAwB;IAE3B,OAAO;QACL,IAAI;QACJ,KAAK,EAAE;YACL,GAAG,KAAK;YACR,QAAQ;SACT;QACD,CAAC,MAAM,CAAC,iBAAiB,CAAC,EAAE,IAAI;KACjC,CAAA;AACH,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,OAAgB;IAC7C,OAAO,OAAO,OAAO,KAAK,QAAQ;WAC7B,OAAO,KAAK,IAAI;WAChB,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,iBAAiB,CAAC,CAAA;AACrD,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,KAAgC;IACvD,OAAO,GAAG,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAA;AAC7B,CAAC;AAiBD,MAAM,UAAU,SAAS,CAAc,IAAsB;IAC3D,OAAO,IAAI,CAAA;AACb,CAAC"}
package/output/index.js DELETED
@@ -1,21 +0,0 @@
1
- import { PluginContext, render } from './render';
2
- export * from './types';
3
- export { createSignal, watchSignal } from './reactive';
4
- export { Fragment, component, createElement } from './element';
5
- export { inject, provide, onMounted, onUnmounted } from './render';
6
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
7
- export function createApp(element) {
8
- const appContext = new PluginContext();
9
- const app = {
10
- plugin: (...plugins) => {
11
- appContext.registerPlugin(...plugins);
12
- return app;
13
- },
14
- mount: (container) => {
15
- render(appContext, element, container);
16
- return app;
17
- }
18
- };
19
- return app;
20
- }
21
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../source/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAU,aAAa,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAExD,cAAc,SAAS,CAAA;AAEvB,OAAO,EAAE,YAAY,EAAU,WAAW,EAAE,MAAM,YAAY,CAAA;AAE9D,OAAO,EACL,QAAQ,EACR,SAAS,EACT,aAAa,EAKd,MAAM,WAAW,CAAA;AAElB,OAAO,EACL,MAAM,EACN,OAAO,EACP,SAAS,EACT,WAAW,EACZ,MAAM,UAAU,CAAA;AAOjB,8DAA8D;AAC9D,MAAM,UAAU,SAAS,CAAC,OAAyB;IACjD,MAAM,UAAU,GAAG,IAAI,aAAa,EAAE,CAAA;IACtC,MAAM,GAAG,GAAY;QACnB,MAAM,EAAE,CAAC,GAAG,OAAiB,EAAE,EAAE;YAC/B,UAAU,CAAC,cAAc,CAAC,GAAG,OAAO,CAAC,CAAA;YACrC,OAAO,GAAG,CAAA;QACZ,CAAC;QAED,KAAK,EAAE,CAAC,SAAsB,EAAE,EAAE;YAChC,MAAM,CAAC,UAAU,EAAE,OAAO,EAAE,SAAS,CAAC,CAAA;YACtC,OAAO,GAAG,CAAA;QACZ,CAAC;KACF,CAAA;IAED,OAAO,GAAG,CAAA;AACZ,CAAC"}
package/output/logger.js DELETED
@@ -1,13 +0,0 @@
1
- const isDev = localStorage.getItem('airx-dev');
2
- export function createLogger(name) {
3
- function getPrintPrefix() {
4
- const date = new Date().toLocaleString();
5
- return `[${date}][${name}]`;
6
- }
7
- function debug(...args) {
8
- if (isDev)
9
- console.log(getPrintPrefix(), ...args);
10
- }
11
- return { debug };
12
- }
13
- //# sourceMappingURL=logger.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"","sources":["../source/logger.ts"],"names":[],"mappings":"AAAA,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;AAC9C,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,SAAS,cAAc;QACrB,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC,cAAc,EAAE,CAAA;QACxC,OAAO,IAAI,IAAI,KAAK,IAAI,GAAG,CAAA;IAC7B,CAAC;IAED,SAAS,KAAK,CAAC,GAAG,IAAe;QAC/B,IAAI,KAAK;YAAE,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,EAAE,GAAG,IAAI,CAAC,CAAA;IACnD,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,CAAA;AAClB,CAAC"}
@@ -1,64 +0,0 @@
1
- import * as symbol from './symbol';
2
- /** FIXME: 污染全局总是不好的 */
3
- const globalContext = {
4
- dependencies: new Set()
5
- };
6
- export function createCollector() {
7
- const newDependencies = new Set();
8
- return {
9
- clear: () => newDependencies.clear(),
10
- complete: () => [...newDependencies.values()],
11
- collect: (process) => {
12
- const beforeDeps = globalContext.dependencies;
13
- globalContext.dependencies = newDependencies;
14
- const result = process();
15
- globalContext.dependencies = beforeDeps;
16
- return result;
17
- }
18
- };
19
- }
20
- function triggerRef(ref) {
21
- requestAnimationFrame(() => {
22
- const deps = Reflect.get(ref, symbol.airxReactiveDependenciesSymbol);
23
- for (const dep of deps) {
24
- dep();
25
- }
26
- });
27
- }
28
- function createRefObject(value) {
29
- const object = Object.create({ value });
30
- Reflect.defineProperty(object, symbol.airxReactiveDependenciesSymbol, {
31
- configurable: false,
32
- enumerable: false,
33
- writable: true,
34
- value: new Set()
35
- });
36
- return object;
37
- }
38
- export function watchSignal(ref, listener) {
39
- const deps = Reflect.get(ref, symbol.airxReactiveDependenciesSymbol);
40
- deps.add(listener);
41
- return () => { deps.delete(listener); };
42
- }
43
- export function createSignal(obj) {
44
- const ref = createRefObject(obj);
45
- if (!globalContext.dependencies.has(ref)) {
46
- globalContext.dependencies.add(ref);
47
- }
48
- let value = ref.value;
49
- Reflect.defineProperty(ref, 'value', {
50
- get() {
51
- if (!globalContext.dependencies.has(ref)) {
52
- globalContext.dependencies.add(ref);
53
- }
54
- return value;
55
- },
56
- set(newValue) {
57
- value = newValue;
58
- triggerRef(ref);
59
- return value;
60
- }
61
- });
62
- return ref;
63
- }
64
- //# sourceMappingURL=reactive.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"reactive.js","sourceRoot":"","sources":["../source/reactive.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,UAAU,CAAA;AAElC,uBAAuB;AACvB,MAAM,aAAa,GAAG;IACpB,YAAY,EAAE,IAAI,GAAG,EAAmB;CACzC,CAAA;AAED,MAAM,UAAU,eAAe;IAC7B,MAAM,eAAe,GAAG,IAAI,GAAG,EAAmB,CAAA;IAClD,OAAO;QACL,KAAK,EAAE,GAAG,EAAE,CAAC,eAAe,CAAC,KAAK,EAAE;QACpC,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,eAAe,CAAC,MAAM,EAAE,CAAC;QAC7C,OAAO,EAAE,CAAc,OAAgB,EAAE,EAAE;YACzC,MAAM,UAAU,GAAG,aAAa,CAAC,YAAY,CAAA;YAC7C,aAAa,CAAC,YAAY,GAAG,eAAe,CAAA;YAC5C,MAAM,MAAM,GAAG,OAAO,EAAE,CAAA;YACxB,aAAa,CAAC,YAAY,GAAG,UAAU,CAAA;YACvC,OAAO,MAAM,CAAA;QACf,CAAC;KACF,CAAA;AACH,CAAC;AAED,SAAS,UAAU,CAAc,GAAc;IAC7C,qBAAqB,CAAC,GAAG,EAAE;QACzB,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,8BAA8B,CAAC,CAAA;QACpE,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;YACtB,GAAG,EAAE,CAAA;SACN;IACH,CAAC,CAAC,CAAA;AACJ,CAAC;AAMD,SAAS,eAAe,CAAc,KAAQ;IAC5C,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;IAEvC,OAAO,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,8BAA8B,EAAE;QACpE,YAAY,EAAE,KAAK;QACnB,UAAU,EAAE,KAAK;QACjB,QAAQ,EAAE,IAAI;QACd,KAAK,EAAE,IAAI,GAAG,EAAE;KACjB,CAAC,CAAA;IAEF,OAAO,MAAM,CAAA;AACf,CAAC;AAED,MAAM,UAAU,WAAW,CAAc,GAAc,EAAE,QAAuB;IAC9E,MAAM,IAAI,GAAuB,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,8BAA8B,CAAC,CAAA;IACxF,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;IAClB,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA,CAAC,CAAC,CAAA;AACxC,CAAC;AAED,MAAM,UAAU,YAAY,CAAI,GAAM;IACpC,MAAM,GAAG,GAAG,eAAe,CAAC,GAAG,CAAC,CAAA;IAEhC,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;QACxC,aAAa,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;KACpC;IAED,IAAI,KAAK,GAAM,GAAG,CAAC,KAAK,CAAA;IAExB,OAAO,CAAC,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE;QACnC,GAAG;YACD,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;gBACxC,aAAa,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;aACpC;YACD,OAAO,KAAK,CAAA;QACd,CAAC;QACD,GAAG,CAAC,QAAQ;YACV,KAAK,GAAG,QAAQ,CAAA;YAChB,UAAU,CAAC,GAAG,CAAC,CAAA;YACf,OAAO,KAAK,CAAA;QACd,CAAC;KACF,CAAC,CAAA;IAEF,OAAO,GAAG,CAAA;AACZ,CAAC"}
@@ -1,191 +0,0 @@
1
- import { createLogger } from '../logger';
2
- import { InnerAirxComponentContext, performUnitOfWork } from './common';
3
- export function render(pluginContext, element, domRef) {
4
- const rootInstance = {
5
- domRef,
6
- context: new InnerAirxComponentContext()
7
- };
8
- rootInstance.context.instance = rootInstance;
9
- const context = {
10
- rootInstance,
11
- nextUnitOfWork: null,
12
- needCommitDom: false
13
- };
14
- const appInstance = {
15
- element,
16
- parent: context.rootInstance,
17
- memoProps: { ...element.props },
18
- context: new InnerAirxComponentContext()
19
- };
20
- appInstance.context.instance = appInstance;
21
- context.rootInstance.child = appInstance;
22
- context.nextUnitOfWork = appInstance;
23
- /**
24
- * 提交 Dom 变化
25
- */
26
- function commitDom(rootInstance, rootNode) {
27
- const logger = createLogger('commitDom');
28
- logger.debug('commitDom', rootInstance);
29
- function updateDomProperties(dom, nextProps, prevProps = {}) {
30
- for (const plugin of pluginContext.plugins) {
31
- if (plugin.updateDom)
32
- plugin.updateDom(dom, nextProps, prevProps);
33
- }
34
- }
35
- function getParentDom(instance) {
36
- if (instance.parent?.domRef != null) {
37
- return instance.parent.domRef;
38
- }
39
- if (instance.parent) {
40
- return getParentDom(instance.parent);
41
- }
42
- throw new Error('Cant find dom');
43
- }
44
- /**
45
- * 查找 instance 下所有的一级 dom
46
- * @param instance
47
- * @returns
48
- */
49
- function getChildDoms(instance) {
50
- const domList = [];
51
- const todoList = [instance];
52
- while (todoList.length > 0) {
53
- const current = todoList.pop();
54
- // 找到真实 dom 直接提交
55
- if (current?.domRef != null) {
56
- domList.push(current.domRef);
57
- }
58
- // 有子节点但是无真实 dom,向下继续查找
59
- if (current?.domRef == null) {
60
- if (current?.child != null) {
61
- todoList.push(current.child);
62
- }
63
- }
64
- // 可能有兄弟节点,则需要继续查找
65
- if (current?.sibling != null) {
66
- todoList.push(current.sibling);
67
- }
68
- }
69
- return domList;
70
- }
71
- function commitInstanceDom(nextInstance, oldNode) {
72
- // 移除标删元素
73
- if (nextInstance.deletions) {
74
- for (const deletion of nextInstance.deletions) {
75
- const domList = getChildDoms(deletion);
76
- for (let index = 0; index < domList.length; index++) {
77
- const dom = domList[index];
78
- if (dom && dom.parentNode)
79
- dom.parentNode.removeChild(dom);
80
- }
81
- deletion.context.triggerUnmounted();
82
- }
83
- nextInstance.deletions.clear();
84
- }
85
- // 创建 dom
86
- if (nextInstance.domRef == null) {
87
- if (nextInstance.element == null)
88
- throw new Error('???');
89
- if (typeof nextInstance.element.type === 'string') {
90
- if (nextInstance.element.type === 'text') {
91
- const textContent = nextInstance.element.props.textContent;
92
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
93
- nextInstance.domRef = document.createTextNode(textContent);
94
- }
95
- else if (nextInstance.element.type === 'comment') {
96
- const textContent = nextInstance.element.props.textContent;
97
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
98
- nextInstance.domRef = document.createComment(textContent);
99
- }
100
- else {
101
- nextInstance.domRef = nextInstance.elementNamespace
102
- ? document.createElementNS(nextInstance.elementNamespace, nextInstance.element.type)
103
- : document.createElement(nextInstance.element.type);
104
- }
105
- if (nextInstance.domRef) {
106
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
107
- nextInstance.domRef.airxInstance = nextInstance;
108
- }
109
- }
110
- }
111
- // 更新属性
112
- if (nextInstance.domRef != null && nextInstance.element != null) {
113
- updateDomProperties(nextInstance.domRef, nextInstance.element.props, nextInstance.beforeElement?.props);
114
- }
115
- // 插入 parent
116
- // TODO: 针对仅移动时优化
117
- if (nextInstance.domRef != null) {
118
- if (oldNode !== nextInstance.domRef) {
119
- if (nextInstance.domRef.parentNode) {
120
- nextInstance.domRef.parentNode.removeChild(nextInstance.domRef);
121
- }
122
- const parentDom = getParentDom(nextInstance);
123
- parentDom.appendChild(nextInstance.domRef);
124
- }
125
- }
126
- }
127
- function commitWalkV2(initInstance, initNode) {
128
- // 创建一个栈,将根节点压入栈中
129
- const stack = [[initInstance, initNode]];
130
- while (stack.length > 0) {
131
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
132
- const stackLayer = stack.pop();
133
- if (typeof stackLayer === 'function') {
134
- stackLayer();
135
- continue;
136
- }
137
- const [instance, node] = stackLayer;
138
- commitInstanceDom(instance, node);
139
- // stack 是先入后出
140
- // 实际上是先渲染 child
141
- // 这里然后再渲染 sibling
142
- // 执行生命周期的 Mount
143
- stack.push(() => instance.context.triggerMounted());
144
- // 更新下一个兄弟节点
145
- if (instance.sibling != null) {
146
- const siblingNode = instance.domRef
147
- ? instance.domRef.nextSibling
148
- : node?.nextSibling;
149
- stack.push([instance.sibling, siblingNode || undefined]);
150
- }
151
- // 更新下一个子节点
152
- if (instance.child != null) {
153
- const childNode = instance.domRef
154
- ? instance.domRef.firstChild
155
- : node;
156
- stack.push([instance.child, childNode || undefined]);
157
- }
158
- }
159
- }
160
- commitWalkV2(rootInstance, rootNode);
161
- }
162
- function onUpdateRequire() {
163
- if (context.nextUnitOfWork == null && context.rootInstance.child) {
164
- context.nextUnitOfWork = context.rootInstance.child;
165
- }
166
- }
167
- /**
168
- * 调度
169
- */
170
- function workLoop(deadline) {
171
- let shouldYield = false;
172
- const logger = createLogger('workLoop');
173
- while (context.nextUnitOfWork && !shouldYield) {
174
- logger.debug('nextUnitOfWork', context.nextUnitOfWork);
175
- context.nextUnitOfWork = performUnitOfWork(pluginContext, context.nextUnitOfWork, onUpdateRequire);
176
- if (context.nextUnitOfWork == null)
177
- context.needCommitDom = true;
178
- if (deadline)
179
- shouldYield = deadline.timeRemaining() < 1;
180
- }
181
- if (context.needCommitDom && context.rootInstance.child) {
182
- commitDom(context.rootInstance.child, context.rootInstance.domRef?.firstChild || undefined);
183
- context.needCommitDom = false;
184
- }
185
- requestIdleCallback(workLoop);
186
- }
187
- // 开始调度
188
- workLoop();
189
- return context.rootInstance;
190
- }
191
- //# sourceMappingURL=browser.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"browser.js","sourceRoot":"","sources":["../../source/render/browser.ts"],"names":[],"mappings":"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"}
@@ -1,22 +0,0 @@
1
- export const globalContext = {
2
- current: null
3
- };
4
- function useContext() {
5
- if (globalContext.current == null) {
6
- throw new Error('Unable to find a valid component context');
7
- }
8
- return globalContext.current;
9
- }
10
- export const onMounted = (listener) => {
11
- return useContext().onMounted(listener);
12
- };
13
- export const onUnmounted = (listener) => {
14
- return useContext().onUnmounted(listener);
15
- };
16
- export const inject = (key) => {
17
- return useContext().inject(key);
18
- };
19
- export const provide = (key, value) => {
20
- return useContext().provide(key, value);
21
- };
22
- //# sourceMappingURL=hooks.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../../source/render/common/hooks.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,MAAM,aAAa,GAAkB;IAC1C,OAAO,EAAE,IAAI;CACd,CAAA;AAED,SAAS,UAAU;IACjB,IAAI,aAAa,CAAC,OAAO,IAAI,IAAI,EAAE;QACjC,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAA;KAC5D;IAED,OAAO,aAAa,CAAC,OAAO,CAAA;AAC9B,CAAC;AAED,MAAM,CAAC,MAAM,SAAS,GAAsC,CAAC,QAAQ,EAAE,EAAE;IACvE,OAAO,UAAU,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;AACzC,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,WAAW,GAAwC,CAAC,QAAQ,EAAE,EAAE;IAC3E,OAAO,UAAU,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAA;AAC3C,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,MAAM,GAAmC,CAAC,GAAG,EAAE,EAAE;IAC5D,OAAO,UAAU,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;AACjC,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,OAAO,GAAoC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;IACrE,OAAO,UAAU,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;AACzC,CAAC,CAAA"}