airx 0.2.1 → 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/output/esm/index.js +1212 -0
  2. package/output/esm/index.js.map +1 -0
  3. package/output/umd/element.d.ts +46 -0
  4. package/output/umd/index.d.ts +13 -0
  5. package/output/umd/index.js +1229 -0
  6. package/output/umd/index.js.map +1 -0
  7. package/output/umd/logger.d.ts +3 -0
  8. package/output/umd/reactive.d.ts +10 -0
  9. package/output/umd/render/browser.d.ts +7 -0
  10. package/output/umd/render/common/hooks.d.ts +10 -0
  11. package/output/umd/render/common/index.d.ts +62 -0
  12. package/output/umd/render/common/plugins/context.d.ts +5 -0
  13. package/output/umd/render/common/plugins/index.d.ts +19 -0
  14. package/output/umd/render/common/plugins/internal/basic.d.ts +10 -0
  15. package/output/umd/render/common/plugins/internal/inject.d.ts +6 -0
  16. package/output/{render/index.js → umd/render/index.d.ts} +1 -2
  17. package/output/umd/render/server.d.ts +5 -0
  18. package/output/umd/symbol.d.ts +2 -0
  19. package/output/umd/types.d.ts +1172 -0
  20. package/package.json +16 -15
  21. package/output/element.js +0 -27
  22. package/output/element.js.map +0 -1
  23. package/output/index.js +0 -27
  24. package/output/index.js.map +0 -1
  25. package/output/logger.js +0 -13
  26. package/output/logger.js.map +0 -1
  27. package/output/reactive.js +0 -64
  28. package/output/reactive.js.map +0 -1
  29. package/output/render/browser.js +0 -194
  30. package/output/render/browser.js.map +0 -1
  31. package/output/render/common/hooks.js +0 -22
  32. package/output/render/common/hooks.js.map +0 -1
  33. package/output/render/common/index.js +0 -372
  34. package/output/render/common/index.js.map +0 -1
  35. package/output/render/common/plugins/context.js +0 -12
  36. package/output/render/common/plugins/context.js.map +0 -1
  37. package/output/render/common/plugins/index.js +0 -2
  38. package/output/render/common/plugins/index.js.map +0 -1
  39. package/output/render/common/plugins/internal/basic.js +0 -158
  40. package/output/render/common/plugins/internal/basic.js.map +0 -1
  41. package/output/render/common/plugins/internal/inject.js +0 -25
  42. package/output/render/common/plugins/internal/inject.js.map +0 -1
  43. package/output/render/index.js.map +0 -1
  44. package/output/render/server.js +0 -314
  45. package/output/render/server.js.map +0 -1
  46. package/output/symbol.js +0 -3
  47. package/output/symbol.js.map +0 -1
  48. package/output/types.js +0 -2
  49. package/output/types.js.map +0 -1
  50. /package/output/{element.d.ts → esm/element.d.ts} +0 -0
  51. /package/output/{index.d.ts → esm/index.d.ts} +0 -0
  52. /package/output/{logger.d.ts → esm/logger.d.ts} +0 -0
  53. /package/output/{reactive.d.ts → esm/reactive.d.ts} +0 -0
  54. /package/output/{render → esm/render}/browser.d.ts +0 -0
  55. /package/output/{render → esm/render}/common/hooks.d.ts +0 -0
  56. /package/output/{render → esm/render}/common/index.d.ts +0 -0
  57. /package/output/{render → esm/render}/common/plugins/context.d.ts +0 -0
  58. /package/output/{render → esm/render}/common/plugins/index.d.ts +0 -0
  59. /package/output/{render → esm/render}/common/plugins/internal/basic.d.ts +0 -0
  60. /package/output/{render → esm/render}/common/plugins/internal/inject.d.ts +0 -0
  61. /package/output/{render → esm/render}/index.d.ts +0 -0
  62. /package/output/{render → esm/render}/server.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.1",
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,27 +0,0 @@
1
- import { PluginContext } from './render';
2
- import { browserRender, serverRender } from './render';
3
- export * from './types';
4
- export { createSignal, watchSignal } from './reactive';
5
- export { Fragment, component, createElement } from './element';
6
- export { inject, provide, onMounted, onUnmounted } from './render';
7
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
8
- export function createApp(element) {
9
- const appContext = new PluginContext();
10
- const app = {
11
- plugin: (...plugins) => {
12
- appContext.registerPlugin(...plugins);
13
- return app;
14
- },
15
- mount: (container) => {
16
- browserRender(appContext, element, container);
17
- return app;
18
- },
19
- renderToHTML: () => {
20
- return new Promise(resolve => {
21
- serverRender(appContext, element, resolve);
22
- });
23
- }
24
- };
25
- return app;
26
- }
27
- //# 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,UAAU,CAAA;AAChD,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAEtD,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;AAQjB,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,aAAa,CAAC,UAAU,EAAE,OAAO,EAAE,SAAS,CAAC,CAAA;YAC7C,OAAO,GAAG,CAAA;QACZ,CAAC;QACD,YAAY,EAAE,GAAoB,EAAE;YAClC,OAAO,IAAI,OAAO,CAAS,OAAO,CAAC,EAAE;gBACnC,YAAY,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;YAC5C,CAAC,CAAC,CAAA;QACJ,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,194 +0,0 @@
1
- import { createLogger } from '../logger';
2
- import { InnerAirxComponentContext, performUnitOfWork } from './common';
3
- class BrowserElement extends Element {
4
- }
5
- export function render(pluginContext, element, domRef) {
6
- const rootInstance = {
7
- domRef,
8
- context: new InnerAirxComponentContext()
9
- };
10
- rootInstance.context.instance = rootInstance;
11
- const context = {
12
- rootInstance,
13
- nextUnitOfWork: null,
14
- needCommitDom: false
15
- };
16
- const appInstance = {
17
- element,
18
- parent: context.rootInstance,
19
- memoProps: { ...element.props },
20
- context: new InnerAirxComponentContext()
21
- };
22
- appInstance.context.instance = appInstance;
23
- context.rootInstance.child = appInstance;
24
- context.nextUnitOfWork = appInstance;
25
- /**
26
- * 提交 Dom 变化
27
- */
28
- function commitDom(rootInstance, rootNode) {
29
- const logger = createLogger('commitDom');
30
- logger.debug('commitDom', rootInstance);
31
- function updateDomProperties(dom, nextProps, prevProps = {}) {
32
- for (const plugin of pluginContext.plugins) {
33
- if (plugin.updateDom)
34
- plugin.updateDom(dom, nextProps, prevProps);
35
- }
36
- }
37
- function getParentDom(instance) {
38
- if (instance.parent?.domRef != null) {
39
- return instance.parent.domRef;
40
- }
41
- if (instance.parent) {
42
- return getParentDom(instance.parent);
43
- }
44
- throw new Error('Cant find dom');
45
- }
46
- /**
47
- * 查找 instance 下所有的一级 dom
48
- * @param instance
49
- * @returns
50
- */
51
- function getChildDoms(instance) {
52
- const domList = [];
53
- const todoList = [instance];
54
- while (todoList.length > 0) {
55
- const current = todoList.pop();
56
- // 找到真实 dom 直接提交
57
- if (current?.domRef != null) {
58
- domList.push(current.domRef);
59
- }
60
- // 有子节点但是无真实 dom,向下继续查找
61
- if (current?.domRef == null) {
62
- if (current?.child != null) {
63
- todoList.push(current.child);
64
- }
65
- }
66
- // 可能有兄弟节点,则需要继续查找
67
- if (current?.sibling != null) {
68
- todoList.push(current.sibling);
69
- }
70
- }
71
- return domList;
72
- }
73
- function commitInstanceDom(nextInstance, oldNode) {
74
- // 移除标删元素
75
- if (nextInstance.deletions) {
76
- for (const deletion of nextInstance.deletions) {
77
- const domList = getChildDoms(deletion);
78
- for (let index = 0; index < domList.length; index++) {
79
- const dom = domList[index];
80
- if (dom && dom.parentNode)
81
- dom.parentNode.removeChild(dom);
82
- }
83
- deletion.context.triggerUnmounted();
84
- }
85
- nextInstance.deletions.clear();
86
- }
87
- // 创建 dom
88
- if (nextInstance.domRef == null) {
89
- if (nextInstance.element == null)
90
- throw new Error('???');
91
- if (typeof nextInstance.element.type === 'string') {
92
- if (nextInstance.element.type === 'text') {
93
- const textContent = nextInstance.element.props.textContent;
94
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
95
- nextInstance.domRef = document.createTextNode(textContent);
96
- }
97
- else if (nextInstance.element.type === 'comment') {
98
- const textContent = nextInstance.element.props.textContent;
99
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
100
- nextInstance.domRef = document.createComment(textContent);
101
- }
102
- else {
103
- nextInstance.domRef = nextInstance.elementNamespace
104
- ? document.createElementNS(nextInstance.elementNamespace, nextInstance.element.type)
105
- : document.createElement(nextInstance.element.type);
106
- }
107
- if (nextInstance.domRef) {
108
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
109
- nextInstance.domRef.airxInstance = nextInstance;
110
- }
111
- }
112
- }
113
- // 更新属性
114
- if (nextInstance.domRef != null && nextInstance.element != null) {
115
- updateDomProperties(nextInstance.domRef, nextInstance.element.props, nextInstance.beforeElement?.props);
116
- }
117
- // 插入 parent
118
- // TODO: 针对仅移动时优化
119
- if (nextInstance.domRef != null) {
120
- if (oldNode !== nextInstance.domRef) {
121
- if (nextInstance.domRef.parentNode) {
122
- nextInstance.domRef.parentNode.removeChild(nextInstance.domRef);
123
- }
124
- const parentDom = getParentDom(nextInstance);
125
- parentDom.appendChild(nextInstance.domRef);
126
- }
127
- }
128
- }
129
- function commitWalkV2(initInstance, initNode) {
130
- // 创建一个栈,将根节点压入栈中
131
- const stack = [[initInstance, initNode]];
132
- while (stack.length > 0) {
133
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
134
- const stackLayer = stack.pop();
135
- if (typeof stackLayer === 'function') {
136
- stackLayer();
137
- continue;
138
- }
139
- const [instance, node] = stackLayer;
140
- commitInstanceDom(instance, node);
141
- // stack 是先入后出
142
- // 实际上是先渲染 child
143
- // 这里然后再渲染 sibling
144
- // 执行生命周期的 Mount
145
- stack.push(() => instance.context.triggerMounted());
146
- // 更新下一个兄弟节点
147
- if (instance.sibling != null) {
148
- const siblingNode = instance.domRef
149
- ? instance.domRef.nextSibling
150
- : node?.nextSibling;
151
- stack.push([instance.sibling, siblingNode || undefined]);
152
- }
153
- // 更新下一个子节点
154
- if (instance.child != null) {
155
- const childNode = instance.domRef
156
- ? instance.domRef.firstChild
157
- : node;
158
- stack.push([instance.child, childNode || undefined]);
159
- }
160
- }
161
- }
162
- commitWalkV2(rootInstance, rootNode);
163
- }
164
- function onUpdateRequire() {
165
- if (context.nextUnitOfWork == null && context.rootInstance.child) {
166
- context.nextUnitOfWork = context.rootInstance.child;
167
- }
168
- }
169
- /**
170
- * 调度
171
- */
172
- function workLoop(deadline) {
173
- let shouldYield = false;
174
- const logger = createLogger('workLoop');
175
- while (context.nextUnitOfWork && !shouldYield) {
176
- logger.debug('nextUnitOfWork', context.nextUnitOfWork);
177
- context.nextUnitOfWork = performUnitOfWork(pluginContext, context.nextUnitOfWork, onUpdateRequire);
178
- if (context.nextUnitOfWork == null)
179
- context.needCommitDom = true;
180
- if (deadline)
181
- shouldYield = deadline.timeRemaining() < 1;
182
- }
183
- if (context.needCommitDom && context.rootInstance.child) {
184
- commitDom(context.rootInstance.child, context.rootInstance.domRef?.firstChild || undefined);
185
- context.needCommitDom = false;
186
- }
187
- // TODO: 兼容性
188
- requestIdleCallback(workLoop);
189
- }
190
- // 开始调度
191
- workLoop();
192
- return context.rootInstance;
193
- }
194
- //# 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"}