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.
- package/README.md +6 -2
- package/output/element.d.ts +9 -7
- package/output/element.js +3 -0
- package/output/element.js.map +1 -1
- package/output/index.d.ts +5 -2
- package/output/index.js +9 -8
- package/output/index.js.map +1 -1
- package/output/reactive.d.ts +5 -4
- package/output/reactive.js +4 -3
- package/output/reactive.js.map +1 -1
- package/output/render/browser.d.ts +3 -8
- package/output/render/browser.js +7 -109
- package/output/render/browser.js.map +1 -1
- package/output/render/common/hooks.d.ts +10 -0
- package/output/render/common/hooks.js +22 -0
- package/output/render/common/hooks.js.map +1 -0
- package/output/render/common/index.d.ts +16 -20
- package/output/render/common/index.js +49 -124
- package/output/render/common/index.js.map +1 -1
- package/output/render/common/plugins/context.d.ts +5 -0
- package/output/render/common/plugins/context.js +12 -0
- package/output/render/common/plugins/context.js.map +1 -0
- package/output/render/common/plugins/index.d.ts +19 -0
- package/output/render/common/plugins/index.js +2 -0
- package/output/render/common/plugins/index.js.map +1 -0
- package/output/render/common/plugins/internal/basic.d.ts +10 -0
- package/output/render/common/plugins/internal/basic.js +158 -0
- package/output/render/common/plugins/internal/basic.js.map +1 -0
- package/output/render/common/plugins/internal/inject.d.ts +6 -0
- package/output/render/common/plugins/internal/inject.js +25 -0
- package/output/render/common/plugins/internal/inject.js.map +1 -0
- package/output/render/index.d.ts +3 -3
- package/output/render/index.js +3 -3
- package/output/render/index.js.map +1 -1
- package/package.json +1 -1
- package/output/plugin.d.ts +0 -2
- package/output/plugin.js +0 -2
- package/output/plugin.js.map +0 -1
- package/output/render/server.d.ts +0 -24
- package/output/render/server.js +0 -345
- package/output/render/server.js.map +0 -1
package/README.md
CHANGED
|
@@ -7,16 +7,20 @@ Arix is a front-end framework based on JSX, but it doesn't have hooks like React
|
|
|
7
7
|
```tsx
|
|
8
8
|
import * as airx from 'airx'
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
// create a reaction value
|
|
11
|
+
const outsideCount = airx.createSignal(1)
|
|
11
12
|
|
|
13
|
+
// define a component
|
|
12
14
|
function App() {
|
|
13
|
-
|
|
15
|
+
// create a reaction value
|
|
16
|
+
const innerCount = airx.createSignal(1)
|
|
14
17
|
|
|
15
18
|
const handleClick = () => {
|
|
16
19
|
innerCount.value += 1
|
|
17
20
|
outsideCount.value +=1
|
|
18
21
|
}
|
|
19
22
|
|
|
23
|
+
// return a render function
|
|
20
24
|
return () => (
|
|
21
25
|
<button onClick={handleClick}>
|
|
22
26
|
{innerCount.value}
|
package/output/element.d.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
import { Ref } from './reactive';
|
|
2
1
|
import * as symbol from './symbol';
|
|
3
2
|
type AirxElementType<P> = string | AirxComponent<P>;
|
|
3
|
+
export type Props = {
|
|
4
|
+
[propKey: string]: unknown;
|
|
5
|
+
};
|
|
4
6
|
/**
|
|
5
7
|
* AirxElement 表示一个 Airx 元素
|
|
6
8
|
* type 表示元素的类型,可能是一个 html 标签,
|
|
@@ -10,17 +12,16 @@ type AirxElementType<P> = string | AirxComponent<P>;
|
|
|
10
12
|
*/
|
|
11
13
|
export interface AirxElement<P = any> {
|
|
12
14
|
type: AirxElementType<P>;
|
|
13
|
-
props:
|
|
14
|
-
[propKey: string]: unknown;
|
|
15
|
-
} & P;
|
|
15
|
+
props: Props & P;
|
|
16
16
|
[symbol.airxElementSymbol]: true;
|
|
17
17
|
}
|
|
18
18
|
export type AirxChildren = null | string | number | boolean | undefined | AirxElement | Array<AirxChildren>;
|
|
19
19
|
/**
|
|
20
20
|
* 函数式组件接收自己的 props,并返回一个 AirxElement
|
|
21
21
|
*/
|
|
22
|
-
export type AirxComponent<P = unknown> = (props: P) => AirxComponentRender;
|
|
23
22
|
export type AirxComponentRender = () => AirxChildren;
|
|
23
|
+
export type AirxComponent<P = unknown> = ReactiveComponent<P>;
|
|
24
|
+
export type ReactiveComponent<P = unknown> = (props: P) => AirxComponentRender;
|
|
24
25
|
/**
|
|
25
26
|
* createElement 是用于创建 AirxElement 的工具函数
|
|
26
27
|
*/
|
|
@@ -38,7 +39,8 @@ export interface AirxComponentLifecycle {
|
|
|
38
39
|
onUnmounted: (listener: AirxComponentUnmountedListener) => void;
|
|
39
40
|
}
|
|
40
41
|
export type AirxComponentContext = AirxComponentLifecycle & {
|
|
41
|
-
provide: <T =
|
|
42
|
-
inject: <T =
|
|
42
|
+
provide: <T = unknown>(key: unknown, value: T) => (newValue: T) => void;
|
|
43
|
+
inject: <T = unknown>(key: unknown) => T | undefined;
|
|
43
44
|
};
|
|
45
|
+
export declare function component<P = unknown>(comp: AirxComponent<P>): AirxComponent<P>;
|
|
44
46
|
export {};
|
package/output/element.js
CHANGED
package/output/element.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"element.js","sourceRoot":"","sources":["../source/element.ts"],"names":[],"mappings":"
|
|
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.d.ts
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import { AirxElement } from './element';
|
|
2
|
+
import { Plugin } from './render';
|
|
2
3
|
export * from './types';
|
|
3
|
-
export {
|
|
4
|
-
export {
|
|
4
|
+
export { Plugin } from './render';
|
|
5
|
+
export { createSignal, Signal, watchSignal } from './reactive';
|
|
6
|
+
export { Fragment, component, createElement, AirxComponent, AirxElement, AirxChildren, AirxComponentContext } from './element';
|
|
5
7
|
export { inject, provide, onMounted, onUnmounted } from './render';
|
|
6
8
|
export interface AirxApp {
|
|
9
|
+
plugin: (...plugins: Plugin[]) => AirxApp;
|
|
7
10
|
mount: (container: HTMLElement) => AirxApp;
|
|
8
11
|
}
|
|
9
12
|
export declare function createApp(element: AirxElement<any>): AirxApp;
|
package/output/index.js
CHANGED
|
@@ -1,17 +1,18 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { PluginContext, render } from './render';
|
|
2
2
|
export * from './types';
|
|
3
|
-
export {
|
|
4
|
-
export { Fragment, createElement } from './element';
|
|
3
|
+
export { createSignal, watchSignal } from './reactive';
|
|
4
|
+
export { Fragment, component, createElement } from './element';
|
|
5
5
|
export { inject, provide, onMounted, onUnmounted } from './render';
|
|
6
6
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
7
7
|
export function createApp(element) {
|
|
8
|
+
const appContext = new PluginContext();
|
|
8
9
|
const app = {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
plugin: (...plugins) => {
|
|
11
|
+
appContext.registerPlugin(...plugins);
|
|
12
|
+
return app;
|
|
13
|
+
},
|
|
13
14
|
mount: (container) => {
|
|
14
|
-
|
|
15
|
+
render(appContext, element, container);
|
|
15
16
|
return app;
|
|
16
17
|
}
|
|
17
18
|
};
|
package/output/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../source/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,
|
|
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/reactive.d.ts
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
export declare function createCollector(): {
|
|
2
|
-
|
|
2
|
+
clear: () => void;
|
|
3
|
+
complete: () => Signal<unknown>[];
|
|
3
4
|
collect: <R = unknown>(process: () => R) => R;
|
|
4
5
|
};
|
|
5
|
-
export interface
|
|
6
|
+
export interface Signal<T = unknown> {
|
|
6
7
|
value: T;
|
|
7
8
|
}
|
|
8
|
-
export declare function
|
|
9
|
-
export declare function
|
|
9
|
+
export declare function watchSignal<T = unknown>(ref: Signal<T>, listener: () => unknown): () => void;
|
|
10
|
+
export declare function createSignal<T>(obj: T): Signal<T>;
|
package/output/reactive.js
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import * as symbol from './symbol';
|
|
2
|
-
/**
|
|
2
|
+
/** FIXME: 污染全局总是不好的 */
|
|
3
3
|
const globalContext = {
|
|
4
4
|
dependencies: new Set()
|
|
5
5
|
};
|
|
6
6
|
export function createCollector() {
|
|
7
7
|
const newDependencies = new Set();
|
|
8
8
|
return {
|
|
9
|
+
clear: () => newDependencies.clear(),
|
|
9
10
|
complete: () => [...newDependencies.values()],
|
|
10
11
|
collect: (process) => {
|
|
11
12
|
const beforeDeps = globalContext.dependencies;
|
|
@@ -34,12 +35,12 @@ function createRefObject(value) {
|
|
|
34
35
|
});
|
|
35
36
|
return object;
|
|
36
37
|
}
|
|
37
|
-
export function
|
|
38
|
+
export function watchSignal(ref, listener) {
|
|
38
39
|
const deps = Reflect.get(ref, symbol.airxReactiveDependenciesSymbol);
|
|
39
40
|
deps.add(listener);
|
|
40
41
|
return () => { deps.delete(listener); };
|
|
41
42
|
}
|
|
42
|
-
export function
|
|
43
|
+
export function createSignal(obj) {
|
|
43
44
|
const ref = createRefObject(obj);
|
|
44
45
|
if (!globalContext.dependencies.has(ref)) {
|
|
45
46
|
globalContext.dependencies.add(ref);
|
package/output/reactive.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reactive.js","sourceRoot":"","sources":["../source/reactive.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,UAAU,CAAA;AAElC,
|
|
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,9 +1,4 @@
|
|
|
1
1
|
import { AirxElement } from '../element';
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
ensureRendered: boolean;
|
|
6
|
-
}
|
|
7
|
-
export declare function innerRender(element: AirxElement, domRef: Element, options?: RenderOptions): Instance;
|
|
8
|
-
export declare function render(element: AirxElement, domRef: Element): Instance;
|
|
9
|
-
export {};
|
|
2
|
+
import { PluginContext } from './common/plugins';
|
|
3
|
+
import { Instance } from './common';
|
|
4
|
+
export declare function render(pluginContext: PluginContext, element: AirxElement, domRef: Element): Instance;
|
package/output/render/browser.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createLogger } from '../logger';
|
|
2
2
|
import { InnerAirxComponentContext, performUnitOfWork } from './common';
|
|
3
|
-
export function
|
|
3
|
+
export function render(pluginContext, element, domRef) {
|
|
4
4
|
const rootInstance = {
|
|
5
5
|
domRef,
|
|
6
6
|
context: new InnerAirxComponentContext()
|
|
@@ -9,7 +9,6 @@ export function innerRender(element, domRef, options) {
|
|
|
9
9
|
const context = {
|
|
10
10
|
rootInstance,
|
|
11
11
|
nextUnitOfWork: null,
|
|
12
|
-
firstRendered: false,
|
|
13
12
|
needCommitDom: false
|
|
14
13
|
};
|
|
15
14
|
const appInstance = {
|
|
@@ -28,104 +27,10 @@ export function innerRender(element, domRef, options) {
|
|
|
28
27
|
const logger = createLogger('commitDom');
|
|
29
28
|
logger.debug('commitDom', rootInstance);
|
|
30
29
|
function updateDomProperties(dom, nextProps, prevProps = {}) {
|
|
31
|
-
const
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
const isClass = (key) => key === 'class';
|
|
35
|
-
const isEvent = (key) => key.startsWith("on");
|
|
36
|
-
const isChildren = (key) => key === 'children';
|
|
37
|
-
const isGone = (_prev, next) => (key) => !(key in next);
|
|
38
|
-
const isNew = (prev, next) => (key) => prev[key] !== next[key];
|
|
39
|
-
const isProperty = (key) => !isChildren(key) && !isEvent(key) && !isStyle(key) && !isClass(key) && !isKey(key) && !isRef(key);
|
|
40
|
-
// https://developer.mozilla.org/zh-CN/docs/Web/API/Node
|
|
41
|
-
if (dom.nodeName === '#text' || dom.nodeName === '#comment') {
|
|
42
|
-
const textNode = dom;
|
|
43
|
-
if (textNode.nodeValue !== nextProps.textContent) {
|
|
44
|
-
textNode.nodeValue = String(nextProps.textContent);
|
|
45
|
-
}
|
|
46
|
-
return;
|
|
47
|
-
}
|
|
48
|
-
// remove old style
|
|
49
|
-
const oldStyle = prevProps?.style;
|
|
50
|
-
if (typeof oldStyle === 'object' && oldStyle != null) {
|
|
51
|
-
if (!('style' in dom) || !dom.style)
|
|
52
|
-
return;
|
|
53
|
-
Object.keys(oldStyle).forEach(key => {
|
|
54
|
-
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
55
|
-
if ('style' in dom && dom.style) {
|
|
56
|
-
delete dom.style[key];
|
|
57
|
-
/* eslint-enable @typescript-eslint/no-explicit-any */
|
|
58
|
-
}
|
|
59
|
-
});
|
|
60
|
-
}
|
|
61
|
-
// add new style
|
|
62
|
-
const newStyle = nextProps?.style;
|
|
63
|
-
if (typeof newStyle === 'object' && newStyle != null) {
|
|
64
|
-
if (!('style' in dom) || !dom.style)
|
|
65
|
-
return;
|
|
66
|
-
Object.keys(newStyle).forEach((key) => {
|
|
67
|
-
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
68
|
-
const value = newStyle?.[key];
|
|
69
|
-
dom.style[key] = value == null ? '' : value;
|
|
70
|
-
/* eslint-enable @typescript-eslint/no-explicit-any */
|
|
71
|
-
});
|
|
72
|
-
}
|
|
73
|
-
if (dom.className !== nextProps?.class) {
|
|
74
|
-
if (!nextProps?.class) {
|
|
75
|
-
dom.removeAttribute('class');
|
|
76
|
-
}
|
|
77
|
-
else if (typeof nextProps?.class === 'string') {
|
|
78
|
-
dom.setAttribute('class', nextProps?.class);
|
|
79
|
-
}
|
|
30
|
+
for (const plugin of pluginContext.plugins) {
|
|
31
|
+
if (plugin.updateDom)
|
|
32
|
+
plugin.updateDom(dom, nextProps, prevProps);
|
|
80
33
|
}
|
|
81
|
-
//Remove old or changed event listeners
|
|
82
|
-
Object.keys(prevProps)
|
|
83
|
-
.filter(isEvent)
|
|
84
|
-
.filter(key => !(key in nextProps) ||
|
|
85
|
-
isNew(prevProps, nextProps)(key))
|
|
86
|
-
.forEach(name => {
|
|
87
|
-
const eventType = name
|
|
88
|
-
.toLowerCase()
|
|
89
|
-
.substring(2);
|
|
90
|
-
if (prevProps[name] == null)
|
|
91
|
-
return;
|
|
92
|
-
if (typeof prevProps[name] !== 'function') {
|
|
93
|
-
console.error('EventListener is not a function');
|
|
94
|
-
}
|
|
95
|
-
else {
|
|
96
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
97
|
-
dom.removeEventListener(eventType, prevProps[name]);
|
|
98
|
-
}
|
|
99
|
-
});
|
|
100
|
-
// Add event listeners
|
|
101
|
-
Object.keys(nextProps)
|
|
102
|
-
.filter(isEvent)
|
|
103
|
-
.filter(isNew(prevProps, nextProps))
|
|
104
|
-
.forEach(name => {
|
|
105
|
-
const eventType = name
|
|
106
|
-
.toLowerCase()
|
|
107
|
-
.substring(2);
|
|
108
|
-
if (nextProps[name] == null)
|
|
109
|
-
return;
|
|
110
|
-
if (typeof nextProps[name] !== 'function') {
|
|
111
|
-
console.error('EventListener is not a function');
|
|
112
|
-
}
|
|
113
|
-
else {
|
|
114
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
115
|
-
dom.addEventListener(eventType, nextProps[name]);
|
|
116
|
-
}
|
|
117
|
-
});
|
|
118
|
-
// Remove old properties
|
|
119
|
-
Object.keys(prevProps)
|
|
120
|
-
.filter(isProperty)
|
|
121
|
-
.filter(isGone(prevProps, nextProps))
|
|
122
|
-
.forEach(name => dom.setAttribute(name, ''));
|
|
123
|
-
// Set new or changed properties
|
|
124
|
-
Object.keys(nextProps)
|
|
125
|
-
.filter(isProperty)
|
|
126
|
-
.filter(isNew(prevProps, nextProps))
|
|
127
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
128
|
-
.forEach(name => dom.setAttribute(name, nextProps[name]));
|
|
129
34
|
}
|
|
130
35
|
function getParentDom(instance) {
|
|
131
36
|
if (instance.parent?.domRef != null) {
|
|
@@ -267,18 +172,14 @@ export function innerRender(element, domRef, options) {
|
|
|
267
172
|
const logger = createLogger('workLoop');
|
|
268
173
|
while (context.nextUnitOfWork && !shouldYield) {
|
|
269
174
|
logger.debug('nextUnitOfWork', context.nextUnitOfWork);
|
|
270
|
-
context.nextUnitOfWork = performUnitOfWork(context.nextUnitOfWork, onUpdateRequire);
|
|
175
|
+
context.nextUnitOfWork = performUnitOfWork(pluginContext, context.nextUnitOfWork, onUpdateRequire);
|
|
271
176
|
if (context.nextUnitOfWork == null)
|
|
272
177
|
context.needCommitDom = true;
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
if (deadline)
|
|
276
|
-
shouldYield = deadline.timeRemaining() < 1;
|
|
277
|
-
}
|
|
178
|
+
if (deadline)
|
|
179
|
+
shouldYield = deadline.timeRemaining() < 1;
|
|
278
180
|
}
|
|
279
181
|
if (context.needCommitDom && context.rootInstance.child) {
|
|
280
182
|
commitDom(context.rootInstance.child, context.rootInstance.domRef?.firstChild || undefined);
|
|
281
|
-
context.firstRendered = true;
|
|
282
183
|
context.needCommitDom = false;
|
|
283
184
|
}
|
|
284
185
|
requestIdleCallback(workLoop);
|
|
@@ -287,7 +188,4 @@ export function innerRender(element, domRef, options) {
|
|
|
287
188
|
workLoop();
|
|
288
189
|
return context.rootInstance;
|
|
289
190
|
}
|
|
290
|
-
export function render(element, domRef) {
|
|
291
|
-
return innerRender(element, domRef);
|
|
292
|
-
}
|
|
293
191
|
//# sourceMappingURL=browser.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser.js","sourceRoot":"","sources":["../../source/render/browser.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"browser.js","sourceRoot":"","sources":["../../source/render/browser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { AirxComponentContext } from '../../element';
|
|
2
|
+
interface GlobalContext {
|
|
3
|
+
current: AirxComponentContext | null;
|
|
4
|
+
}
|
|
5
|
+
export declare const globalContext: GlobalContext;
|
|
6
|
+
export declare const onMounted: AirxComponentContext['onMounted'];
|
|
7
|
+
export declare const onUnmounted: AirxComponentContext['onUnmounted'];
|
|
8
|
+
export declare const inject: AirxComponentContext['inject'];
|
|
9
|
+
export declare const provide: AirxComponentContext['provide'];
|
|
10
|
+
export {};
|
|
@@ -0,0 +1,22 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -1,15 +1,11 @@
|
|
|
1
|
-
import { Ref } from '../../reactive';
|
|
2
1
|
import { AirxComponentContext, AirxComponentMountedListener, AirxComponentRender, AirxComponentUnmountedListener, AirxElement } from '../../element';
|
|
3
|
-
|
|
4
|
-
export declare const onUnmounted: AirxComponentContext['onUnmounted'];
|
|
5
|
-
export declare const inject: AirxComponentContext['inject'];
|
|
6
|
-
export declare const provide: AirxComponentContext['provide'];
|
|
2
|
+
import { PluginContext } from './plugins';
|
|
7
3
|
export type Disposer = () => void;
|
|
8
|
-
export declare class InnerAirxComponentContext
|
|
9
|
-
instance
|
|
4
|
+
export declare class InnerAirxComponentContext implements AirxComponentContext {
|
|
5
|
+
instance: Instance;
|
|
10
6
|
private disposers;
|
|
11
|
-
|
|
12
|
-
|
|
7
|
+
providedMap: Map<unknown, unknown>;
|
|
8
|
+
injectedMap: Map<unknown, unknown>;
|
|
13
9
|
private mountListeners;
|
|
14
10
|
private unmountedListeners;
|
|
15
11
|
triggerMounted(): void;
|
|
@@ -17,7 +13,7 @@ export declare class InnerAirxComponentContext<DOM = Element | string> implement
|
|
|
17
13
|
onMounted(listener: AirxComponentMountedListener): void;
|
|
18
14
|
onUnmounted(listener: AirxComponentUnmountedListener): void;
|
|
19
15
|
provide<T = unknown>(key: any, value: any): (v: T) => void;
|
|
20
|
-
inject<T = unknown>(key: any):
|
|
16
|
+
inject<T = unknown>(key: any): T | undefined;
|
|
21
17
|
addDisposer(...disposers: Disposer[]): void;
|
|
22
18
|
dispose(): void;
|
|
23
19
|
/**
|
|
@@ -34,18 +30,18 @@ export declare class InnerAirxComponentContext<DOM = Element | string> implement
|
|
|
34
30
|
* ↓ | |
|
|
35
31
|
* instance -sibling→ instance...
|
|
36
32
|
*/
|
|
37
|
-
export interface Instance
|
|
38
|
-
domRef?:
|
|
39
|
-
child?: Instance
|
|
40
|
-
parent?: Instance
|
|
41
|
-
sibling?: Instance
|
|
42
|
-
deletions?: Set<Instance
|
|
33
|
+
export interface Instance {
|
|
34
|
+
domRef?: Element;
|
|
35
|
+
child?: Instance;
|
|
36
|
+
parent?: Instance;
|
|
37
|
+
sibling?: Instance;
|
|
38
|
+
deletions?: Set<Instance>;
|
|
43
39
|
element?: AirxElement;
|
|
44
40
|
beforeElement?: AirxElement;
|
|
45
41
|
render?: AirxComponentRender;
|
|
46
|
-
|
|
42
|
+
needReRender?: boolean;
|
|
47
43
|
elementNamespace?: string;
|
|
48
|
-
context: InnerAirxComponentContext
|
|
44
|
+
context: InnerAirxComponentContext;
|
|
49
45
|
memoProps?: any;
|
|
50
46
|
}
|
|
51
47
|
/**
|
|
@@ -53,12 +49,12 @@ export interface Instance<DOM = Element | string> {
|
|
|
53
49
|
* @param parentInstance 当前正在处理的组件的实例
|
|
54
50
|
* @param children 当前组件的子节点
|
|
55
51
|
*/
|
|
56
|
-
export declare function reconcileChildren(parentInstance: Instance, childrenElementArray: AirxElement[]): void;
|
|
52
|
+
export declare function reconcileChildren(appContext: PluginContext, parentInstance: Instance, childrenElementArray: AirxElement[]): void;
|
|
57
53
|
type OnUpdateRequire = (instance: Instance) => void;
|
|
58
54
|
/**
|
|
59
55
|
* 处理单个 instance
|
|
60
56
|
* @param instance 当前处理的实例
|
|
61
57
|
* @returns 返回下一个需要处理的 instance
|
|
62
58
|
*/
|
|
63
|
-
export declare function performUnitOfWork(instance: Instance, onUpdateRequire?: OnUpdateRequire): Instance | null;
|
|
59
|
+
export declare function performUnitOfWork(pluginContext: PluginContext, instance: Instance, onUpdateRequire?: OnUpdateRequire): Instance | null;
|
|
64
60
|
export {};
|