airx 0.1.7 → 0.1.8

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.
@@ -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,9 +12,7 @@ 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>;
@@ -38,7 +38,7 @@ export interface AirxComponentLifecycle {
38
38
  onUnmounted: (listener: AirxComponentUnmountedListener) => void;
39
39
  }
40
40
  export type AirxComponentContext = AirxComponentLifecycle & {
41
- provide: <T = any>(key: any, value: T) => (newValue: T) => void;
42
- inject: <T = any>(key: any) => Ref<T | null>;
41
+ provide: <T = unknown>(key: unknown, value: T) => (newValue: T) => void;
42
+ inject: <T = unknown>(key: unknown) => T | undefined;
43
43
  };
44
44
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"element.js","sourceRoot":"","sources":["../source/element.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,MAAM,UAAU,CAAA;AAiClC;;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"}
1
+ {"version":3,"file":"element.js","sourceRoot":"","sources":["../source/element.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,MAAM,UAAU,CAAA;AAmClC;;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"}
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';
4
+ export { Plugin } from './render';
3
5
  export { createRef, Ref, watch } from './reactive';
4
6
  export { Fragment, 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 { renderToDom } from './render';
1
+ import { PluginContext, render } from './render';
2
2
  export * from './types';
3
3
  export { createRef, watch } from './reactive';
4
4
  export { Fragment, 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
- // plugin: (plugins) => {
10
- // console.log(plugins)
11
- // return app
12
- // },
10
+ plugin: (...plugins) => {
11
+ appContext.registerPlugin(...plugins);
12
+ return app;
13
+ },
13
14
  mount: (container) => {
14
- renderToDom(element, container);
15
+ render(appContext, element, container);
15
16
  return app;
16
17
  }
17
18
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../source/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAEtC,cAAc,SAAS,CAAA;AAEvB,OAAO,EAAE,SAAS,EAAO,KAAK,EAAE,MAAM,YAAY,CAAA;AAElD,OAAO,EACL,QAAQ,EACR,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,GAAG,GAAY;QACnB,yBAAyB;QACzB,yBAAyB;QACzB,eAAe;QACf,KAAK;QAEL,KAAK,EAAE,CAAC,SAAsB,EAAE,EAAE;YAChC,WAAW,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA;YAC/B,OAAO,GAAG,CAAA;QACZ,CAAC;KACF,CAAA;IAED,OAAO,GAAG,CAAA;AACZ,CAAC"}
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,SAAS,EAAO,KAAK,EAAE,MAAM,YAAY,CAAA;AAElD,OAAO,EACL,QAAQ,EACR,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"}
@@ -1,9 +1,4 @@
1
1
  import { AirxElement } from '../element';
2
- import { Instance as BaseInstance } from './common';
3
- type Instance = BaseInstance<Element>;
4
- interface RenderOptions {
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;
@@ -1,6 +1,6 @@
1
1
  import { createLogger } from '../logger';
2
2
  import { InnerAirxComponentContext, performUnitOfWork } from './common';
3
- export function innerRender(element, domRef, options) {
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 isKey = (key) => key === 'key';
32
- const isRef = (key) => key === 'ref';
33
- const isStyle = (key) => key === 'style';
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
- // 强制要求首次渲染完成的的情况下必须要等 firstRendered 为 true 再进入时间片剩余检查
274
- if (options?.ensureRendered !== true && context.firstRendered != true) {
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":"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"}
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
- export declare const onMounted: AirxComponentContext['onMounted'];
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<DOM = Element | string> implements AirxComponentContext {
9
- instance?: Instance<DOM>;
4
+ export declare class InnerAirxComponentContext implements AirxComponentContext {
5
+ instance: Instance;
10
6
  private disposers;
11
- private providedMap;
12
- private injectedMap;
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): Ref<T | null>;
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<DOM = Element | string> {
38
- domRef?: DOM;
39
- child?: Instance<DOM>;
40
- parent?: Instance<DOM>;
41
- sibling?: Instance<DOM>;
42
- deletions?: Set<Instance<DOM>>;
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
- requiredUpdate?: boolean;
42
+ needReRender?: boolean;
47
43
  elementNamespace?: string;
48
- context: InnerAirxComponentContext<DOM>;
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 {};
@@ -1,27 +1,7 @@
1
1
  import { createLogger } from '../../logger';
2
- import { watch, createRef, createCollector } from '../../reactive';
2
+ import { watch, createCollector } from '../../reactive';
3
3
  import { createElement, isValidElement } from '../../element';
4
- const globalContext = {
5
- current: null
6
- };
7
- function useContext() {
8
- if (globalContext.current == null) {
9
- throw new Error('Unable to find a valid component context');
10
- }
11
- return globalContext.current;
12
- }
13
- export const onMounted = (listener) => {
14
- return useContext().onMounted(listener);
15
- };
16
- export const onUnmounted = (listener) => {
17
- return useContext().onUnmounted(listener);
18
- };
19
- export const inject = (key) => {
20
- return useContext().inject(key);
21
- };
22
- export const provide = (key, value) => {
23
- return useContext().provide(key, value);
24
- };
4
+ import { globalContext } from './hooks';
25
5
  export class InnerAirxComponentContext {
26
6
  instance;
27
7
  disposers = new Set();
@@ -73,48 +53,24 @@ export class InnerAirxComponentContext {
73
53
  }
74
54
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
75
55
  provide(key, value) {
76
- if (!this.providedMap.has(key)) {
77
- this.providedMap.set(key, createRef(value));
78
- }
79
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
80
- const ref = this.providedMap.get(key);
81
- ref.value = value;
82
- return newValue => ref.value = newValue;
56
+ this.providedMap.set(key, value);
57
+ return v => this.providedMap.set(key, v);
83
58
  }
84
59
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
85
60
  inject(key) {
86
- if (!this.injectedMap.has(key)) {
87
- this.injectedMap.set(key, createRef(null));
88
- }
89
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
90
- const resultRef = this.injectedMap.get(key);
91
- /**
92
- * 从当前组件开始向上查找
93
- * @returns 返回找到的值的 Ref 和提供该值的实例
94
- */
95
- const getResultOfContext = () => {
96
- let provider = null;
97
- let result = null;
98
- let nextParentInstance = this.instance;
99
- while (nextParentInstance != null) {
100
- provider = nextParentInstance;
101
- result = nextParentInstance.context.providedMap.get(key) || null;
102
- if (result != null)
103
- break;
104
- nextParentInstance = nextParentInstance.parent;
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);
105
68
  }
106
- return { result, provider };
69
+ return undefined;
107
70
  };
108
- const { result, provider } = getResultOfContext();
109
- if (result != null && provider != null) {
110
- // 每当值发生变化,同步到当前的 Ref 上
111
- this.addDisposer(watch(result, () => {
112
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
113
- resultRef.value = result.value;
114
- }));
115
- }
116
- resultRef.value = result?.value;
117
- return resultRef;
71
+ const currentParentValue = getProvideValueForParent(this.instance.parent, key);
72
+ this.injectedMap.set(key, currentParentValue); // 更新本地值
73
+ return this.injectedMap.get(key);
118
74
  }
119
75
  addDisposer(...disposers) {
120
76
  disposers.forEach(disposer => {
@@ -155,7 +111,7 @@ export class InnerAirxComponentContext {
155
111
  * @param parentInstance 当前正在处理的组件的实例
156
112
  * @param children 当前组件的子节点
157
113
  */
158
- export function reconcileChildren(parentInstance, childrenElementArray) {
114
+ export function reconcileChildren(appContext, parentInstance, childrenElementArray) {
159
115
  const logger = createLogger('reconcileChildren');
160
116
  logger.debug('reconcileChildren', parentInstance, childrenElementArray);
161
117
  // parentInstance ←--------
@@ -209,18 +165,16 @@ export function reconcileChildren(parentInstance, childrenElementArray) {
209
165
  const instance = childrenInstanceMap.get(innerKey) || null;
210
166
  return [instance, () => childrenInstanceMap.delete(innerKey)];
211
167
  }
212
- /**
213
- * 浅比较 props 是否相等
214
- * @param prev 之前的 props
215
- * @param next 下一个 props
216
- */
217
- function isSameElementType(instance, nextElement) {
218
- if (instance == null)
219
- return false;
220
- if (instance.element == null)
221
- return false;
222
- if (instance.element.type !== nextElement.type)
223
- return false;
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
+ }
224
178
  return true;
225
179
  }
226
180
  function updateMemoProps(instance) {
@@ -244,48 +198,16 @@ export function reconcileChildren(parentInstance, childrenElementArray) {
244
198
  instance.memoProps[key] = value;
245
199
  }
246
200
  }
247
- function shouldUpdate(instance) {
248
- const nextProps = instance.element?.props;
249
- const preProps = instance.beforeElement?.props;
250
- if (Object.is(nextProps, preProps)) {
251
- return false;
252
- }
253
- if (typeof preProps !== 'object'
254
- || typeof nextProps !== 'object'
255
- || preProps === null
256
- || nextProps === null) {
257
- logger.debug('props must be an object');
258
- return true;
259
- }
260
- // 对应 key 的值不相同返回 false
261
- const prevKeys = Object.keys(preProps);
262
- for (let index = 0; index < prevKeys.length; index++) {
263
- const key = prevKeys[index];
264
- if (key !== 'children' && key !== 'key') {
265
- if (!Object.hasOwn(nextProps, key))
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)
266
207
  return true;
267
- if (!Object.is(preProps[key], nextProps[key]))
268
- return true;
269
- }
270
- if (key === 'children') {
271
- const prevChildren = preProps['children'];
272
- const nextChildren = nextProps['children'];
273
- // children 都是空的,则无需更新
274
- if (prevChildren.length === 0 && nextChildren.length === 0)
275
- return false;
276
- // 简单比较一下 child 的引用
277
- for (let index = 0; index < prevChildren.length; index++) {
278
- const prevChild = prevChildren[index];
279
- const nextChild = nextChildren[index];
280
- if (prevChild !== nextChild)
281
- return true;
282
- if (typeof prevChild !== typeof nextChild)
283
- return true;
284
- }
285
208
  }
286
- return false;
287
209
  }
288
- return true;
210
+ return false;
289
211
  }
290
212
  function getElementNamespace(element) {
291
213
  const ns = Object.keys(element.props)
@@ -306,16 +228,15 @@ export function reconcileChildren(parentInstance, childrenElementArray) {
306
228
  for (let index = 0; index < childrenElementArray.length; index++) {
307
229
  const element = childrenElementArray[index];
308
230
  const [instance, seize] = getChildInstance(element, index);
309
- const isSameType = instance && isSameElementType(instance, element);
310
- if (isSameType) {
231
+ if (instance && isReuseInstance(instance, element)) {
311
232
  seize(); // 从 childrenInstanceMap 中释放
312
233
  newChildrenInstanceArray.push(instance);
313
234
  instance.beforeElement = instance.element;
314
235
  instance.element = element;
315
236
  updateMemoProps(instance);
316
237
  // 如果父组件更新了,子组件全部都要更新
317
- if (instance.requiredUpdate !== true && typeof element.type === 'function') {
318
- instance.requiredUpdate = parentInstance.requiredUpdate || shouldUpdate(instance);
238
+ if (instance.needReRender !== true && typeof element.type === 'function') {
239
+ instance.needReRender = parentInstance.needReRender || isNeedReRender(instance);
319
240
  }
320
241
  }
321
242
  else {
@@ -371,7 +292,7 @@ export function reconcileChildren(parentInstance, childrenElementArray) {
371
292
  * @param instance 当前处理的实例
372
293
  * @returns 返回下一个需要处理的 instance
373
294
  */
374
- export function performUnitOfWork(instance, onUpdateRequire) {
295
+ export function performUnitOfWork(pluginContext, instance, onUpdateRequire) {
375
296
  const element = instance.element;
376
297
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
377
298
  function childrenAsElements(children) {
@@ -403,17 +324,17 @@ export function performUnitOfWork(instance, onUpdateRequire) {
403
324
  instance.render = collector.collect(() => component(instance.memoProps));
404
325
  globalContext.current = beforeContext;
405
326
  const children = collector.collect(() => instance.render?.());
406
- reconcileChildren(instance, childrenAsElements(children));
327
+ reconcileChildren(pluginContext, instance, childrenAsElements(children));
407
328
  }
408
- if (instance.requiredUpdate) {
329
+ if (instance.needReRender) {
409
330
  const children = collector.collect(() => instance.render?.());
410
- reconcileChildren(instance, childrenAsElements(children));
411
- delete instance.requiredUpdate;
331
+ reconcileChildren(pluginContext, instance, childrenAsElements(children));
332
+ delete instance.needReRender;
412
333
  }
413
334
  // 处理依赖触发的更新
414
335
  collector.complete().forEach(ref => {
415
336
  instance.context.addDisposer(watch(ref, () => {
416
- instance.requiredUpdate = true;
337
+ instance.needReRender = true;
417
338
  onUpdateRequire?.(instance);
418
339
  }));
419
340
  });
@@ -421,7 +342,7 @@ export function performUnitOfWork(instance, onUpdateRequire) {
421
342
  // 浏览器组件/标签
422
343
  if (typeof element?.type === 'string') {
423
344
  if ('children' in element.props && Array.isArray(element.props.children)) {
424
- reconcileChildren(instance, childrenAsElements(element.props.children));
345
+ reconcileChildren(pluginContext, instance, childrenAsElements(element.props.children));
425
346
  }
426
347
  }
427
348
  // 优先处理 child
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../source/render/common/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../source/render/common/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAC3C,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AACvD,OAAO,EAAsI,aAAa,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAEjM,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAIvC,MAAM,OAAO,yBAAyB;IAC7B,QAAQ,CAAW;IAClB,SAAS,GAAG,IAAI,GAAG,EAAY,CAAA;IAChC,WAAW,GAAG,IAAI,GAAG,EAAoB,CAAA;IACzC,WAAW,GAAG,IAAI,GAAG,EAAoB,CAAA;IACxC,cAAc,GAAG,IAAI,GAAG,EAAgC,CAAA;IACxD,kBAAkB,GAAG,IAAI,GAAG,EAAkC,CAAA;IAE/D,cAAc;QACnB,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;YACrC,IAAI,QAAQ,GAAoB,SAAS,CAAA;YAEzC,IAAI;gBACF,QAAQ,GAAG,QAAQ,EAAE,CAAA;aACtB;YAAC,OAAO,GAAY,EAAE;gBACrB,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;aAC7B;YAED,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;gBAClC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAA;aAC3B;QACH,CAAC,CAAC,CAAA;QACF,aAAa;QACb,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAA;IAC7B,CAAC;IAEM,gBAAgB;QACrB,2BAA2B;QAC3B,IAAI,IAAI,CAAC,QAAQ,EAAE,KAAK,IAAI,IAAI,EAAE;YAChC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAA;SAC/C;QAED,OAAO;QACP,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;YACzC,IAAI;gBACF,QAAQ,EAAE,CAAA;aACX;YAAC,OAAO,GAAY,EAAE;gBACrB,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;aAC7B;QACH,CAAC,CAAC,CAAA;QAEF,SAAS;QACT,IAAI,IAAI,CAAC,QAAQ,EAAE,OAAO,IAAI,IAAI,EAAE;YAClC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAA;SACjD;QAED,IAAI,CAAC,OAAO,EAAE,CAAA;IAChB,CAAC;IAEM,SAAS,CAAC,QAAsC;QACrD,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;IACnC,CAAC;IAEM,WAAW,CAAC,QAAwC;QACzD,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;IACvC,CAAC;IAED,8DAA8D;IACvD,OAAO,CAAc,GAAQ,EAAE,KAAU;QAC9C,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;QAChC,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;IAC1C,CAAC;IAED,8DAA8D;IACvD,MAAM,CAAc,GAAQ;QACjC,MAAM,wBAAwB,GAAG,CAAC,QAA8B,EAAE,GAAY,EAAW,EAAE;YACzF,IAAI,QAAQ,IAAI,QAAQ,CAAC,OAAO,EAAE;gBAChC,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;gBACnD,IAAI,KAAK,IAAI,SAAS;oBAAE,OAAO,KAAK,CAAA;gBACpC,IAAI,QAAQ,CAAC,MAAM;oBAAE,OAAO,wBAAwB,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;aAC3E;YAED,OAAO,SAAS,CAAA;QAClB,CAAC,CAAA;QAED,MAAM,kBAAkB,GAAG,wBAAwB,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;QAC9E,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,kBAAkB,CAAC,CAAA,CAAC,QAAQ;QACtD,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAM,CAAA;IACvC,CAAC;IAED,WAAW,CAAC,GAAG,SAAqB;QAClC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;YAC3B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QAC9B,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,OAAO;QACL,IAAI,CAAC,SAAS,CAAC,OAAO,CACpB,CAAC,QAAkB,EAAE,EAAE;YACrB,IAAI;gBACF,QAAQ,EAAE,CAAA;aACX;YAAC,OAAO,GAAY,EAAE;gBACrB,sCAAsC;gBACtC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;aAC7B;QACH,CAAC,CACF,CAAA;QAED,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAA;QACtB,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAA;QACxB,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAA;QACxB,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAA;QAC3B,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAA;IACjC,CAAC;IAED;;;OAGG;IACI,cAAc;QACnB,OAAO;YACL,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;YAC3B,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;YACrC,SAAS,EAAE,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;YAC/C,WAAW,EAAE,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;SACpD,CAAA;IACH,CAAC;CACF;AA+BD;;;;KAIK;AACL,MAAM,UAAU,iBAAiB,CAAC,UAAyB,EAAE,cAAwB,EAAE,oBAAmC;IACxH,MAAM,MAAM,GAAG,YAAY,CAAC,mBAAmB,CAAC,CAAA;IAChD,MAAM,CAAC,KAAK,CAAC,mBAAmB,EAAE,cAAc,EAAE,oBAAoB,CAAC,CAAA;IACvE,4BAA4B;IAC5B,4BAA4B;IAC5B,+BAA+B;IAC/B,4BAA4B;IAC5B,wCAAwC;IAExC;;;;;OAKG;IACH,SAAS,uBAAuB,CAAC,KAAa;QAC5C,OAAO,0BAA0B,KAAK,EAAE,CAAA;IAC1C,CAAC;IAED;;;;OAIG;IACH,8DAA8D;IAC9D,SAAS,sBAAsB,CAAC,UAAqB;QACnD,iBAAiB;QACjB,IAAI,SAAS,GAAG,CAAC,CAAA;QACjB,IAAI,SAAS,GAAG,UAAU,CAAA;QAC1B,8DAA8D;QAC9D,MAAM,GAAG,GAAG,IAAI,GAAG,EAAiB,CAAA;QAEpC,OAAO,SAAS,EAAE;YAChB,gDAAgD;YAChD,IAAI,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,IAAI,IAAI,EAAE;gBACxC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,EAAE,SAAS,CAAC,CAAA;aACjD;iBAAM;gBACL,GAAG,CAAC,GAAG,CAAC,uBAAuB,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC,CAAA;aACvD;YAED,SAAS,GAAG,SAAS,CAAC,OAAO,CAAA;YAC7B,SAAS,IAAI,CAAC,CAAA;SACf;QAED,OAAO,GAAG,CAAA;IACZ,CAAC;IAED,MAAM,wBAAwB,GAAe,EAAE,CAAA;IAC/C,MAAM,mBAAmB,GAAG,sBAAsB,CAAC,cAAc,CAAC,KAAK,CAAC,CAAA;IAExE,SAAS,gBAAgB,CAAC,KAAkB,EAAE,KAAa;QACzD,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,EAAE;YAC3B,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAA;YAC3B,MAAM,QAAQ,GAAG,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,CAAA;YACrD,OAAO,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,mBAAmB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;SACzD;QAED,MAAM,QAAQ,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAA;QAC/C,MAAM,QAAQ,GAAG,mBAAmB,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAA;QAC1D,OAAO,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,mBAAmB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAA;IAC/D,CAAC;IAED,aAAa;IACb,SAAS,eAAe,CAAC,QAAkB,EAAE,WAAwB;QACnE,KAAK,MAAM,MAAM,IAAI,UAAU,CAAC,OAAO,EAAE;YACvC,IAAI,OAAO,MAAM,CAAC,eAAe,KAAK,UAAU,EAAE;gBAChD,MAAM,MAAM,GAAG,MAAM,CAAC,eAAe,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAA;gBAC5D,kBAAkB;gBAClB,IAAI,MAAM,KAAK,KAAK;oBAAE,OAAO,KAAK,CAAA;aACnC;SACF;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,SAAS,eAAe,CAAC,QAAkB;QACzC,IAAI,QAAQ,CAAC,OAAO,IAAI,IAAI;YAAE,OAAM;QACpC,IAAI,QAAQ,CAAC,SAAS,IAAI,IAAI;YAAE,QAAQ,CAAC,SAAS,GAAG,EAAE,CAAA;QACvD,eAAe;QACf,mBAAmB;QACnB,wCAAwC;QACxC,yCAAyC;QACzC,0CAA0C;QAE1C,IAAI,QAAQ,CAAC,SAAS,IAAI,IAAI,EAAE;YAC9B,KAAK,MAAM,GAAG,IAAI,QAAQ,CAAC,SAAS,EAAE;gBACpC,OAAO,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;aAC/B;SACF;QAED,iBAAiB;QACjB,KAAK,MAAM,GAAG,IAAI,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE;YACxC,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YACzC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;SAChC;IACH,CAAC;IAED,SAAS,cAAc,CAAC,QAAkB;QACxC,KAAK,MAAM,MAAM,IAAI,UAAU,CAAC,OAAO,EAAE;YACvC,IAAI,OAAO,MAAM,CAAC,UAAU,KAAK,UAAU,EAAE;gBAC3C,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAA;gBAC1C,oBAAoB;gBACpB,IAAI,MAAM,KAAK,IAAI;oBAAE,OAAO,IAAI,CAAA;aACjC;SACF;QAED,OAAO,KAAK,CAAA;IACd,CAAC;IAED,SAAS,mBAAmB,CAAC,OAAoB;QAC/C,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;aAClC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,OAAO,IAAI,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;aAC5D,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,CAAA;QAEtC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE;YACjB,OAAO,CAAC,GAAG,CAAC,wDAAwD,CAAC,CAAA;YACrE,OAAO,EAAE,CAAA;SACV;QAED,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,EAAE;YACxC,OAAO,CAAC,GAAG,CAAC,gFAAgF,CAAC,CAAA;YAC7F,OAAO,EAAE,CAAA;SACV;QAED,gCAAgC;QAChC,OAAO,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;IAC7B,CAAC;IAED,4BAA4B;IAC5B,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,oBAAoB,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;QAChE,MAAM,OAAO,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAA;QAC3C,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,gBAAgB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;QAE1D,IAAI,QAAQ,IAAI,eAAe,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE;YAClD,KAAK,EAAE,CAAA,CAAC,4BAA4B;YACpC,wBAAwB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;YACvC,QAAQ,CAAC,aAAa,GAAG,QAAQ,CAAC,OAAO,CAAA;YACzC,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAA;YAC1B,eAAe,CAAC,QAAQ,CAAC,CAAA;YAEzB,qBAAqB;YACrB,IAAI,QAAQ,CAAC,YAAY,KAAK,IAAI,IAAI,OAAO,OAAO,CAAC,IAAI,KAAK,UAAU,EAAE;gBACxE,QAAQ,CAAC,YAAY,GAAG,cAAc,CAAC,YAAY,IAAI,cAAc,CAAC,QAAQ,CAAC,CAAA;aAChF;SACF;aAAM;YACL,MAAM,OAAO,GAAG,IAAI,yBAAyB,EAAE,CAAA;YAC/C,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAA;YACrD,MAAM,QAAQ,GAAa,EAAE,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAA;YACjE,wBAAwB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;YACvC,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAA;YAC3B,eAAe,CAAC,QAAQ,CAAC,CAAA;YAEzB,YAAY;YACZ,IAAI,KAAK,IAAI,QAAQ,CAAC,SAAS,EAAE;gBAC/B,OAAO,CAAC,SAAS,CAAC,GAAG,EAAE;oBACrB,IAAI,QAAQ,CAAC,MAAM,EAAE,EAAE,eAAe;wBACpC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAA;wBAC9C,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,CAAA;qBACjD;gBACH,CAAC,CAAC,CAAA;aACH;SACF;KACF;IAED,UAAU;IACV,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,wBAAwB,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;QACpE,MAAM,QAAQ,GAAG,wBAAwB,CAAC,KAAK,CAAC,CAAA;QAEhD,SAAS;QACT,QAAQ,CAAC,MAAM,GAAG,cAAc,CAAA;QAChC,IAAI,KAAK,KAAK,CAAC;YAAE,cAAc,CAAC,KAAK,GAAG,QAAQ,CAAA;QAChD,IAAI,KAAK,GAAG,CAAC;YAAE,wBAAwB,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,OAAO,GAAG,QAAQ,CAAA;QACrE,IAAI,KAAK,KAAK,wBAAwB,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,QAAQ,CAAC,OAAO,CAAA;QAE1E,+BAA+B;QAC/B,IAAI,CAAC,QAAQ,CAAC,gBAAgB,IAAI,QAAQ,CAAC,MAAM,EAAE,gBAAgB,EAAE;YACnE,gDAAgD;YAChD,IAAI,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,KAAK,eAAe,EAAE;gBACrD,QAAQ,CAAC,gBAAgB,GAAG,QAAQ,CAAC,MAAM,CAAC,gBAAgB,CAAA;aAC7D;SACF;KACF;IAED,YAAY;IACZ,IAAI,mBAAmB,CAAC,IAAI,GAAG,CAAC,EAAE;QAChC,IAAI,cAAc,CAAC,SAAS,IAAI,IAAI,EAAE;YACpC,cAAc,CAAC,SAAS,GAAG,IAAI,GAAG,EAAE,CAAA;SACrC;QAED,mBAAmB,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;YACrC,cAAc,CAAC,SAAS,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAA;QACzC,CAAC,CAAC,CAAA;KACH;IAED,MAAM,CAAC,KAAK,CAAC,gBAAgB,EAAE,cAAc,CAAC,CAAA;AAChD,CAAC;AAID;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,aAA4B,EAAE,QAAkB,EAAE,eAAiC;IACnH,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAA;IAEhC,8DAA8D;IAC9D,SAAS,kBAAkB,CAAC,QAAsB;QAChD,MAAM,eAAe,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAA;QACvE,SAAS,SAAS,CAAC,OAAqB;YACtC,IAAI,OAAO,KAAK,EAAE;gBAAE,OAAO,IAAI,CAAA;YAC/B,IAAI,OAAO,IAAI,IAAI;gBAAE,OAAO,IAAI,CAAA;YAChC,IAAI,OAAO,KAAK,KAAK;gBAAE,OAAO,IAAI,CAAA;YAClC,OAAO,KAAK,CAAA;QACd,CAAC;QAED,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;YAC3C,IAAI,cAAc,CAAC,OAAO,CAAC;gBAAE,OAAO,OAAO,CAAA;YAC3C,MAAM,WAAW,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAA;YAC3D,MAAM,WAAW,GAAG,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;YACrE,OAAO,aAAa,CAAC,WAAW,EAAE,EAAE,WAAW,EAAE,CAAC,CAAA;QACpD,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,UAAU;IACV,IAAI,OAAO,OAAO,EAAE,IAAI,KAAK,UAAU,EAAE;QACvC,MAAM,SAAS,GAAG,eAAe,EAAE,CAAA;QAEnC,IAAI,QAAQ,CAAC,MAAM,IAAI,IAAI,EAAE;YAC3B,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAA;YAC9B,MAAM,aAAa,GAAG,aAAa,CAAC,OAAO,CAAA;YAC3C,aAAa,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,cAAc,EAAE,CAAA;YACzD,QAAQ,CAAC,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAA;YACxE,aAAa,CAAC,OAAO,GAAG,aAAa,CAAA;YAErC,MAAM,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;YAC7D,iBAAiB,CAAC,aAAa,EAAE,QAAQ,EAAE,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAA;SACzE;QAED,IAAI,QAAQ,CAAC,YAAY,EAAE;YACzB,MAAM,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;YAC7D,iBAAiB,CAAC,aAAa,EAAE,QAAQ,EAAE,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAA;YACxE,OAAO,QAAQ,CAAC,YAAY,CAAA;SAC7B;QAED,YAAY;QACZ,SAAS,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YACjC,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE;gBAC3C,QAAQ,CAAC,YAAY,GAAG,IAAI,CAAA;gBAC5B,eAAe,EAAE,CAAC,QAAQ,CAAC,CAAA;YAC7B,CAAC,CAAC,CAAC,CAAA;QACL,CAAC,CAAC,CAAA;KACH;IAED,WAAW;IACX,IAAI,OAAO,OAAO,EAAE,IAAI,KAAK,QAAQ,EAAE;QACrC,IAAI,UAAU,IAAI,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE;YACxE,iBAAiB,CAAC,aAAa,EAAE,QAAQ,EAAE,kBAAkB,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAA;SACvF;KACF;IAED,aAAa;IACb,IAAI,QAAQ,CAAC,KAAK,EAAE;QAClB,OAAO,QAAQ,CAAC,KAAK,CAAA;KACtB;IAED;;;;OAIG;IACH,SAAS,aAAa,CAAC,QAAkB;QACvC,IAAI,QAAQ,CAAC,OAAO,EAAE;YACpB,OAAO,QAAQ,CAAC,OAAO,CAAA;SACxB;QACD,IAAI,QAAQ,CAAC,MAAM,EAAE;YACnB,OAAO,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;SACtC;QAED,OAAO,IAAI,CAAA;IACb,CAAC;IAED,OAAO,aAAa,CAAC,QAAQ,CAAC,CAAA;AAChC,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { Plugin } from '.';
2
+ export declare class PluginContext {
3
+ plugins: Plugin[];
4
+ registerPlugin(...plugins: Plugin[]): void;
5
+ }
@@ -0,0 +1,9 @@
1
+ import { BasicLogic } from './internal/basic';
2
+ import { InjectSystem } from './internal/inject';
3
+ export class PluginContext {
4
+ plugins = [new BasicLogic(), new InjectSystem()];
5
+ registerPlugin(...plugins) {
6
+ this.plugins.push(...plugins);
7
+ }
8
+ }
9
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
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,CAAC,IAAI,UAAU,EAAE,EAAE,IAAI,YAAY,EAAE,CAAC,CAAA;IAE1D,cAAc,CAAC,GAAG,OAAiB;QACjC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAA;IAC/B,CAAC;CACF"}
@@ -0,0 +1,19 @@
1
+ import type { Instance } from '..';
2
+ import { AirxElement, Props } from '../../../element';
3
+ export { PluginContext } from './context';
4
+ export interface Plugin {
5
+ /**
6
+ * 检查是否需要重新渲染
7
+ * 只要任意一个插件返回了 true,就一定会重新渲染,如果返回 void,则继续交给其他插件判断
8
+ */
9
+ isReRender?(instance: Instance): true | void;
10
+ /**
11
+ * dom 更新方法
12
+ */
13
+ updateDom?(dom: Element, nextProps: Props, prevProps?: Props): void;
14
+ /**
15
+ * 检查是否需要重新创建实例
16
+ * 只要任意一个插件返回了 false,就一定会重新创建实例,如果返回 void,则继续交给其他插件判断
17
+ */
18
+ isReuseInstance?(instance: Instance, nextElement: AirxElement): false | void;
19
+ }
@@ -0,0 +1,2 @@
1
+ export { PluginContext } from './context';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../source/render/common/plugins/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA"}
@@ -0,0 +1,10 @@
1
+ import { AirxElement, Props } from '../../../../element';
2
+ import { Instance } from '../../index';
3
+ import { Plugin } from '../index';
4
+ export declare class BasicLogic implements Plugin {
5
+ private logger;
6
+ private isSameProps;
7
+ isReRender(instance: Instance): true | void;
8
+ updateDom(dom: Element, nextProps: Props, prevProps?: Props): void;
9
+ isReuseInstance(instance: Instance, nextElement: AirxElement): false | void;
10
+ }
@@ -0,0 +1,158 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"basic.js","sourceRoot":"","sources":["../../../../../source/render/common/plugins/internal/basic.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { Plugin } from '..';
2
+ import { Instance } from '../..';
3
+ export declare class InjectSystem implements Plugin {
4
+ private getProvideValueForParent;
5
+ isReuseInstance(instance: Instance): false | undefined;
6
+ }
@@ -0,0 +1,25 @@
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
@@ -0,0 +1 @@
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,3 +1,3 @@
1
- export { inject, provide, onMounted, onUnmounted } from './common';
2
- export { render as renderToDom } from './browser';
3
- export { render as renderToString } from './server';
1
+ export { inject, provide, onMounted, onUnmounted } from './common/hooks';
2
+ export { render } from './browser';
3
+ export { Plugin, PluginContext } from './common/plugins';
@@ -1,4 +1,4 @@
1
- export { inject, provide, onMounted, onUnmounted } from './common';
2
- export { render as renderToDom } from './browser';
3
- export { render as renderToString } from './server';
1
+ export { inject, provide, onMounted, onUnmounted } from './common/hooks';
2
+ export { render } from './browser';
3
+ export { PluginContext } from './common/plugins';
4
4
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
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,UAAU,CAAA;AAEjB,OAAO,EAAE,MAAM,IAAI,WAAW,EAAE,MAAM,WAAW,CAAA;AACjD,OAAO,EAAE,MAAM,IAAI,cAAc,EAAE,MAAM,UAAU,CAAA"}
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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "airx",
3
- "version": "0.1.7",
3
+ "version": "0.1.8",
4
4
  "description": "a front framework with jsx",
5
5
  "types": "./output/index.d.ts",
6
6
  "exports": {