@viewfly/core 0.0.27 → 0.0.29

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,7 +1,7 @@
1
1
  export * from './component';
2
+ export * from './injection-tokens';
2
3
  export * from './jsx-element';
3
4
  export * from './memo';
5
+ export * from './renderer';
4
6
  export * from './root.component';
5
7
  export * from './types';
6
- export * from './injection-tokens';
7
- export * from './renderer';
@@ -1,6 +1,4 @@
1
- import { Component } from './component';
2
- import { JSXElement, JSXText, Props } from './jsx-element';
3
- import { JSXInternal } from './types';
1
+ import { JSXComponent, JSXElement, JSXText } from './jsx-element';
4
2
  import { NativeNode } from './injection-tokens';
5
3
  export interface ListenDelegate {
6
4
  delegate: () => any;
@@ -16,7 +14,7 @@ export declare function getObjectChanges(newProps: Record<string, any>, oldProps
16
14
  export declare function classToString(config: unknown): string;
17
15
  export declare function styleToObject(style: string | Record<string, any>): Record<string, any>;
18
16
  export interface Atom {
19
- jsxNode: JSXElement | JSXText | Component;
17
+ jsxNode: JSXElement | JSXText | JSXComponent;
20
18
  parent: Atom | null;
21
19
  nativeNode: NativeNode | null;
22
20
  child: Atom | null;
@@ -24,8 +22,6 @@ export interface Atom {
24
22
  }
25
23
  export interface ComponentView {
26
24
  atom: Atom;
27
- template: JSXInternal.JSXNode;
28
25
  host: NativeNode;
29
26
  isParent: boolean;
30
- render(newProps: Props, oldProps: Props): JSXInternal.JSXNode;
31
27
  }
@@ -1,45 +1,28 @@
1
1
  import { AbstractType, InjectFlags, InjectionToken, Injector, Provider, ReflectiveInjector, Type } from '../di/_api';
2
- import { JSXTypeof, Key, Props } from './jsx-element';
3
- import { ComponentView } from './_utils';
2
+ import { JSXComponent, Key, Props } from './jsx-element';
4
3
  import { JSXInternal } from './types';
5
- export declare class JSXComponent {
6
- props: Props;
7
- private factory;
8
- constructor(props: Props, factory: (injector: Component, props: Props) => Component);
9
- createInstance(injector: Component): Component;
10
- }
11
4
  /**
12
5
  * Viewfly 组件管理类,用于管理组件的生命周期,上下文等
13
6
  */
14
- export declare class Component extends ReflectiveInjector implements JSXTypeof {
15
- type: JSXInternal.ComponentConstructor;
7
+ export declare class Component extends ReflectiveInjector {
8
+ jsxNode: JSXComponent;
16
9
  props: Props;
17
10
  key?: Key | undefined;
18
- $$typeOf: JSXInternal.ComponentConstructor<any>;
19
- $$view: ComponentView;
20
11
  destroyCallbacks: LifeCycleCallback[];
21
12
  mountCallbacks: LifeCycleCallback[];
22
13
  propsChangedCallbacks: PropsChangedCallback<any>[];
23
14
  updatedCallbacks: LifeCycleCallback[];
24
- changedSubComponents: Set<Component>;
25
- get dirty(): boolean;
26
- get changed(): boolean;
27
- protected _dirty: boolean;
28
- protected _changed: boolean;
29
- private parentComponent;
15
+ instance: JSXInternal.ComponentInstance<Props>;
16
+ template: JSXInternal.JSXNode;
30
17
  private updatedDestroyCallbacks;
31
18
  private propsChangedDestroyCallbacks;
32
19
  private unWatch?;
33
20
  private isFirstRending;
34
- constructor(context: Injector, type: JSXInternal.ComponentConstructor, props: Props, key?: Key | undefined);
35
- is(target: JSXTypeof): boolean;
21
+ private refs;
22
+ constructor(context: Injector, jsxNode: JSXComponent, props: Props, key?: Key | undefined);
23
+ render(): any;
24
+ update(newProps: Props, forceUpdate?: boolean): any;
36
25
  provide<T>(providers: Provider<T> | Provider<T>[]): void;
37
- setup(): {
38
- template: any;
39
- render: (newProps: Props, oldProps: Props) => any;
40
- };
41
- markAsDirtied(): void;
42
- markAsChanged(changedComponent?: Component): void;
43
26
  rendered(): void;
44
27
  destroy(): void;
45
28
  private invokePropsChangedHooks;
@@ -1,6 +1,6 @@
1
- import { JSXComponent } from './component';
1
+ import { Component } from './component';
2
2
  import { JSXInternal } from './types';
3
- import { ListenDelegate } from './_utils';
3
+ import { ComponentView, ListenDelegate } from './_utils';
4
4
  export interface Props {
5
5
  children?: JSXInternal.JSXNode | JSXInternal.JSXNode[];
6
6
  [key: string]: any;
@@ -9,10 +9,10 @@ export interface Props {
9
9
  export declare function Fragment(props: Props): () => any;
10
10
  export type Key = number | string;
11
11
  export declare function jsx(name: string, props: Props, key?: Key): JSXElement;
12
- export declare function jsx(setup: JSXInternal.ComponentConstructor, props: Props, key?: Key): JSXComponent;
12
+ export declare function jsx(setup: JSXInternal.ComponentSetup, props: Props, key?: Key): JSXComponent;
13
13
  export declare const jsxs: typeof jsx;
14
14
  export interface JSXTypeof {
15
- $$typeOf: string | JSXInternal.ComponentConstructor;
15
+ $$typeOf: string | JSXInternal.ComponentSetup;
16
16
  is(target: JSXTypeof): boolean;
17
17
  }
18
18
  export declare class JSXText implements JSXTypeof {
@@ -31,3 +31,24 @@ export declare class JSXElement implements JSXTypeof {
31
31
  constructor(type: string, props: Props, key?: Key | undefined);
32
32
  is(target: JSXTypeof): boolean;
33
33
  }
34
+ export declare class JSXComponent implements JSXTypeof {
35
+ type: JSXInternal.ComponentSetup;
36
+ readonly props: Props;
37
+ private factory;
38
+ readonly key?: Key | undefined;
39
+ $$typeOf: JSXInternal.ComponentSetup<any>;
40
+ $$view: ComponentView;
41
+ parentComponent: JSXComponent | null;
42
+ instance: Component;
43
+ changedSubComponents: Set<JSXComponent>;
44
+ get dirty(): boolean;
45
+ get changed(): boolean;
46
+ protected _dirty: boolean;
47
+ protected _changed: boolean;
48
+ constructor(type: JSXInternal.ComponentSetup, props: Props, factory: (parentComponent: Component, jsxNode: JSXComponent) => Component, key?: Key | undefined);
49
+ markAsDirtied(): void;
50
+ markAsChanged(changedComponent?: JSXComponent): void;
51
+ reset(): void;
52
+ is(target: JSXTypeof): boolean;
53
+ createInstance(injector: Component): Component;
54
+ }
@@ -1,3 +1,3 @@
1
1
  import { Props } from './jsx-element';
2
2
  import { JSXInternal } from './types';
3
- export declare function withMemo<T extends Props = Props>(shouldUpdate: JSXInternal.ComponentInstance<T>['$shouldUpdate'], render: () => JSXInternal.JSXNode): JSXInternal.ComponentInstance<T>;
3
+ export declare function withMemo<T extends Props = Props>(canUseMemo: JSXInternal.ComponentInstance<T>['$useMemo'], render: () => JSXInternal.JSXNode): JSXInternal.ComponentInstance<T>;
@@ -1,3 +1,4 @@
1
1
  import { NativeNode, NativeRenderer } from './injection-tokens';
2
+ import { JSXComponent } from './jsx-element';
2
3
  import { Component } from './component';
3
- export declare function createRenderer(component: Component, nativeRenderer: NativeRenderer): (host: NativeNode) => void;
4
+ export declare function createRenderer(jsxComponent: JSXComponent, nativeRenderer: NativeRenderer, parentComponent: Component): (host: NativeNode) => void;
@@ -1,11 +1,10 @@
1
- import { Component } from './component';
2
1
  import { JSXInternal } from './types';
3
- import { Injector } from '../di/_api';
2
+ import { JSXComponent } from './jsx-element';
4
3
  /**
5
4
  * Viewfly 根组件,用于实现组件状态更新事件通知
6
5
  */
7
- export declare class RootComponent extends Component {
6
+ export declare class RootComponent extends JSXComponent {
8
7
  onChange: (() => void) | null;
9
- constructor(parentInjector: Injector, factory: JSXInternal.ComponentConstructor);
10
- markAsChanged(changedComponent?: Component): void;
8
+ constructor(factory: JSXInternal.ComponentSetup, {}: {});
9
+ markAsChanged(changedComponent?: JSXComponent): void;
11
10
  }
@@ -2,14 +2,14 @@ import { Key } from './jsx-element';
2
2
  import { ExtractInstanceType, Ref } from './component';
3
3
  export type JSXNode = JSXInternal.JSXNode;
4
4
  export declare namespace JSXInternal {
5
- type ClassNames = string | Record<string, unknown> | ClassNames[];
5
+ type ClassNames = string | Record<string, unknown> | false | null | undefined | ClassNames[];
6
6
  interface ComponentInstance<P> {
7
7
  $render(): JSXNode;
8
- $shouldUpdate?(currentProps: P, prevProps: P): boolean;
8
+ $useMemo?(currentProps: P, prevProps: P): boolean;
9
9
  }
10
10
  type JSXNode = Element | JSXInternal.ElementClass | string | number | boolean | null | undefined | JSXNode[];
11
- type ComponentConstructor<P = any> = (props: P) => (() => Element) | ComponentInstance<P>;
12
- type Element<P = any, C extends string | ComponentConstructor<P> = string | ComponentConstructor<P>> = C extends string ? IntrinsicElements[C] : (() => Element) | ComponentInstance<P>;
11
+ type ComponentSetup<P = any> = (props: P) => (() => Element) | ComponentInstance<P>;
12
+ type Element<P = any, C extends string | ComponentSetup<P> = string | ComponentSetup<P>> = C extends string ? IntrinsicElements[C] : (() => Element) | ComponentInstance<P>;
13
13
  interface IntrinsicAttributes {
14
14
  key?: Key;
15
15
  ref?: any;