@viewfly/core 0.0.1-alpha.12 → 0.0.1-alpha.13
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 +1 -1
- package/package.json +2 -5
- package/bundles/_utils/make-error.d.ts +0 -1
- package/bundles/foundation/_api.d.ts +0 -2
- package/bundles/foundation/_utils.d.ts +0 -9
- package/bundles/foundation/injection-tokens.d.ts +0 -17
- package/bundles/foundation/renderer.d.ts +0 -33
- package/bundles/index.esm.js +0 -1228
- package/bundles/index.js +0 -1257
- package/bundles/model/_api.d.ts +0 -3
- package/bundles/model/component.d.ts +0 -218
- package/bundles/model/jsx-element.d.ts +0 -31
- package/bundles/model/root.component.d.ts +0 -11
- package/bundles/public-api.d.ts +0 -6
- package/bundles/viewfly.d.ts +0 -37
package/bundles/model/_api.d.ts
DELETED
|
@@ -1,218 +0,0 @@
|
|
|
1
|
-
import { Provider, ReflectiveInjector, AbstractType, Type, InjectionToken, InjectFlags, Injector } from '@tanbo/di';
|
|
2
|
-
import { Props, JSXElement, Key, JSXTypeof } from './jsx-element';
|
|
3
|
-
export declare class JSXComponent {
|
|
4
|
-
createInstance: (injector: Component) => Component;
|
|
5
|
-
constructor(createInstance: (injector: Component) => Component);
|
|
6
|
-
}
|
|
7
|
-
export type JSXTemplate = JSXElement | JSXComponent | null | void;
|
|
8
|
-
export interface ComponentSetup<T extends Props<any> = Props<any>> {
|
|
9
|
-
(props?: T): () => JSXTemplate;
|
|
10
|
-
}
|
|
11
|
-
/**
|
|
12
|
-
* Viewfly 组件管理类,用于管理组件的生命周期,上下文等
|
|
13
|
-
*/
|
|
14
|
-
export declare class Component extends ReflectiveInjector implements JSXTypeof {
|
|
15
|
-
setup: ComponentSetup;
|
|
16
|
-
props: Props<any>;
|
|
17
|
-
key?: Key | undefined;
|
|
18
|
-
$$typeOf: ComponentSetup<Props<any>>;
|
|
19
|
-
destroyCallbacks: LifeCycleCallback[];
|
|
20
|
-
mountCallbacks: LifeCycleCallback[];
|
|
21
|
-
propsChangedCallbacks: PropsChangedCallback<any>[];
|
|
22
|
-
updatedCallbacks: LifeCycleCallback[];
|
|
23
|
-
get dirty(): boolean;
|
|
24
|
-
get changed(): boolean;
|
|
25
|
-
protected _dirty: boolean;
|
|
26
|
-
protected _changed: boolean;
|
|
27
|
-
private parentComponent;
|
|
28
|
-
private updatedDestroyCallbacks;
|
|
29
|
-
private propsChangedDestroyCallbacks;
|
|
30
|
-
private isFirstRending;
|
|
31
|
-
constructor(context: Injector, setup: ComponentSetup, props: Props<any>, key?: Key | undefined);
|
|
32
|
-
is(target: JSXTypeof): boolean;
|
|
33
|
-
addProvide<T>(providers: Provider<T> | Provider<T>[]): void;
|
|
34
|
-
init(): {
|
|
35
|
-
template: JSXTemplate;
|
|
36
|
-
render: () => JSXTemplate;
|
|
37
|
-
};
|
|
38
|
-
markAsDirtied(): void;
|
|
39
|
-
markAsChanged(): void;
|
|
40
|
-
rendered(): void;
|
|
41
|
-
invokePropsChangedHooks(newProps: Props<any>): void;
|
|
42
|
-
destroy(): void;
|
|
43
|
-
private invokeMountHooks;
|
|
44
|
-
private invokeUpdatedHooks;
|
|
45
|
-
}
|
|
46
|
-
export interface LifeCycleCallback {
|
|
47
|
-
(): void | (() => void);
|
|
48
|
-
}
|
|
49
|
-
export interface PropsChangedCallback<T extends Props<any>> {
|
|
50
|
-
(currentProps: T | null, oldProps: T | null): void | (() => void);
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* 当组件第一次渲染完成时触发
|
|
54
|
-
* @param callback
|
|
55
|
-
* ```tsx
|
|
56
|
-
* function App() {
|
|
57
|
-
* onMount(() => {
|
|
58
|
-
* console.log('App mounted!')
|
|
59
|
-
* })
|
|
60
|
-
* return () => <div>...</div>
|
|
61
|
-
* }
|
|
62
|
-
* ```
|
|
63
|
-
*/
|
|
64
|
-
export declare function onMounted(callback: LifeCycleCallback): void;
|
|
65
|
-
/**
|
|
66
|
-
* 当组件视图更新后调用
|
|
67
|
-
* @param callback
|
|
68
|
-
* ```tsx
|
|
69
|
-
* function App() {
|
|
70
|
-
* onUpdated(() => {
|
|
71
|
-
* console.log('App updated!')
|
|
72
|
-
* return () => {
|
|
73
|
-
* console.log('destroy prev update!')
|
|
74
|
-
* }
|
|
75
|
-
* })
|
|
76
|
-
* return () => <div>...</div>
|
|
77
|
-
* }
|
|
78
|
-
* ```
|
|
79
|
-
*/
|
|
80
|
-
export declare function onUpdated(callback: LifeCycleCallback): () => void;
|
|
81
|
-
/**
|
|
82
|
-
* 当组件 props 更新地调用
|
|
83
|
-
* @param callback
|
|
84
|
-
* @example
|
|
85
|
-
* ```tsx
|
|
86
|
-
* function YourComponent(props) {
|
|
87
|
-
* onPropsChanged((currentProps, prevProps) => {
|
|
88
|
-
* console.log(currentProps, prevProps)
|
|
89
|
-
*
|
|
90
|
-
* return () => {
|
|
91
|
-
* console.log('destroy prev changed!')
|
|
92
|
-
* }
|
|
93
|
-
* })
|
|
94
|
-
* return () => {
|
|
95
|
-
* return <div>xxx</div>
|
|
96
|
-
* }
|
|
97
|
-
* }
|
|
98
|
-
* ```
|
|
99
|
-
*/
|
|
100
|
-
export declare function onPropsChanged<T extends Props<any>>(callback: PropsChangedCallback<T>): () => void;
|
|
101
|
-
/**
|
|
102
|
-
* 当组件销毁时调用回调函数
|
|
103
|
-
* @param callback
|
|
104
|
-
*/
|
|
105
|
-
export declare function onDestroy(callback: () => void): void;
|
|
106
|
-
export interface RefListener<T> {
|
|
107
|
-
(current: T): void | (() => void);
|
|
108
|
-
}
|
|
109
|
-
export declare class Ref<T extends object> {
|
|
110
|
-
private callback;
|
|
111
|
-
private unBindMap;
|
|
112
|
-
private targetCaches;
|
|
113
|
-
constructor(callback: RefListener<T>);
|
|
114
|
-
bind(value: T): void;
|
|
115
|
-
unBind(value: T): void;
|
|
116
|
-
}
|
|
117
|
-
/**
|
|
118
|
-
* 用于节点渲染完成时获取 DOM 节点
|
|
119
|
-
* @param callback 获取 DOM 节点的回调函数
|
|
120
|
-
* @example
|
|
121
|
-
* ```tsx
|
|
122
|
-
* function App() {
|
|
123
|
-
* const ref = useRef(node => {
|
|
124
|
-
* function fn() {
|
|
125
|
-
* // do something...
|
|
126
|
-
* }
|
|
127
|
-
* node.addEventListener('click', fn)
|
|
128
|
-
* return () => {
|
|
129
|
-
* node.removeEventListener('click', fn)
|
|
130
|
-
* }
|
|
131
|
-
* })
|
|
132
|
-
* return () => {
|
|
133
|
-
* return <div ref={ref}>xxx</div>
|
|
134
|
-
* }
|
|
135
|
-
* }
|
|
136
|
-
* ```
|
|
137
|
-
*/
|
|
138
|
-
export declare function useRef<T extends object>(callback: RefListener<T>): Ref<T>;
|
|
139
|
-
declare const depsKey: unique symbol;
|
|
140
|
-
/**
|
|
141
|
-
* 组件状态实例,直接调用可以获取最新的状态,通过 set 方法可以更新状态
|
|
142
|
-
* ```
|
|
143
|
-
*/
|
|
144
|
-
export interface Signal<T> {
|
|
145
|
-
/**
|
|
146
|
-
* 直接调用一个 Signal 实例,可以获取最新状态
|
|
147
|
-
*/
|
|
148
|
-
(): T;
|
|
149
|
-
/**
|
|
150
|
-
* 更新组件状态的方法,可以传入最新的值
|
|
151
|
-
* @param newState
|
|
152
|
-
*/
|
|
153
|
-
set(newState: T): void;
|
|
154
|
-
[depsKey]: Set<LifeCycleCallback>;
|
|
155
|
-
}
|
|
156
|
-
/**
|
|
157
|
-
* 组件状态管理器
|
|
158
|
-
* @param state 初始状态
|
|
159
|
-
* @example
|
|
160
|
-
* ```tsx
|
|
161
|
-
* function App() {
|
|
162
|
-
* // 初始化状态
|
|
163
|
-
* const state = useSignal(1)
|
|
164
|
-
*
|
|
165
|
-
* return () => {
|
|
166
|
-
* <div>
|
|
167
|
-
* <div>当前值为:{state()}</div>
|
|
168
|
-
* <div>
|
|
169
|
-
* <button type="button" onClick={() => {
|
|
170
|
-
* // 当点击时更新状态
|
|
171
|
-
* state.set(state() + 1)
|
|
172
|
-
* }
|
|
173
|
-
* }>updateState</button>
|
|
174
|
-
* </div>
|
|
175
|
-
* </div>
|
|
176
|
-
* }
|
|
177
|
-
* }
|
|
178
|
-
*/
|
|
179
|
-
export declare function useSignal<T>(state: T): Signal<T>;
|
|
180
|
-
/**
|
|
181
|
-
* 使用派生值,Viewfly 会收集回调函数内同步执行时访问的 Signal,
|
|
182
|
-
* 并在你获取 useDerived 函数返回的 Signal 的值时,自动计算最新的值。
|
|
183
|
-
*
|
|
184
|
-
* @param callback
|
|
185
|
-
* @param isContinue 可选的停止函数,在每次值更新后调用,当返回值为 false 时,将不再监听依赖的变化
|
|
186
|
-
*/
|
|
187
|
-
export declare function useDerived<T>(callback: () => T, isContinue?: (data: T) => unknown): Signal<T>;
|
|
188
|
-
export interface EffectCallback<T, U> {
|
|
189
|
-
(newValue: T, oldValue: U): void | (() => void);
|
|
190
|
-
}
|
|
191
|
-
/**
|
|
192
|
-
* 监听状态变化,当任意一个状态发生变更时,触发回调。
|
|
193
|
-
* useEffect 会返回一个取消监听的函数,调用此函数,可以取消监听。
|
|
194
|
-
* 当在组件中调用时,组件销毁时会自动取消监听。
|
|
195
|
-
* @param deps 依赖的状态 Signal,可以是一个 Signal,只可以一个数包含 Signal 的数组,或者是一个求值函数
|
|
196
|
-
* @param effect 状态变更后的回调函数
|
|
197
|
-
*/
|
|
198
|
-
export declare function useEffect<T>(deps: Signal<T>, effect: EffectCallback<T, T>): () => void;
|
|
199
|
-
export declare function useEffect<T>(deps: [Signal<T>], effect: EffectCallback<[T], [T]>): () => void;
|
|
200
|
-
export declare function useEffect<T, T1>(deps: [Signal<T>, Signal<T1>], effect: EffectCallback<[T, T1], [T, T1]>): () => void;
|
|
201
|
-
export declare function useEffect<T, T1, T2>(deps: [Signal<T>, Signal<T1>, Signal<T2>], effect: EffectCallback<[T, T1, T2], [T, T1, T2]>): () => void;
|
|
202
|
-
export declare function useEffect<T, T1, T2, T3>(deps: [Signal<T>, Signal<T1>, Signal<T2>, Signal<T3>], effect: EffectCallback<[T, T1, T2, T3], [T, T1, T2, T3]>): () => void;
|
|
203
|
-
export declare function useEffect<T, T1, T2, T3, T4>(deps: [Signal<T>, Signal<T1>, Signal<T2>, Signal<T3>, Signal<T4>], effect: EffectCallback<[T, T1, T2, T3, T4], [T, T1, T2, T3, T4]>): () => void;
|
|
204
|
-
export declare function useEffect<T, T1, T2, T3, T4, T5>(deps: [Signal<T>, Signal<T1>, Signal<T2>, Signal<T3>, Signal<T4>, Signal<T5>], effect: EffectCallback<[T, T1, T2, T3, T4, T5], [T, T1, T2, T3, T4, T5]>): () => void;
|
|
205
|
-
export declare function useEffect<T, T1, T2, T3, T4, T5, T6>(deps: [Signal<T>, Signal<T1>, Signal<T2>, Signal<T3>, Signal<T4>, Signal<T5>, Signal<T6>], effect: EffectCallback<[T, T1, T2, T3, T4, T5, T6], [T, T1, T2, T3, T4, T5, T6]>): () => void;
|
|
206
|
-
export declare function useEffect<T, T1, T2, T3, T4, T5, T6, T7>(deps: [Signal<T>, Signal<T1>, Signal<T2>, Signal<T3>, Signal<T4>, Signal<T5>, Signal<T6>, Signal<T7>], effect: EffectCallback<[T, T1, T2, T3, T4, T5, T6, T7], [T, T1, T2, T3, T4, T5, T6, T7]>): () => void;
|
|
207
|
-
export declare function useEffect<T>(deps: () => T, effect: EffectCallback<T, T>): () => void;
|
|
208
|
-
export declare function useEffect<T = any>(deps: Signal<any>[], effect: EffectCallback<T[], T[]>): () => void;
|
|
209
|
-
/**
|
|
210
|
-
* 通过 IoC 容器当前组件提供上下文共享数据的方法
|
|
211
|
-
* @param provider
|
|
212
|
-
*/
|
|
213
|
-
export declare function provide(provider: Provider | Provider[]): Component;
|
|
214
|
-
/**
|
|
215
|
-
* 通过组件上下文获取 IoC 容器内数据的勾子方法
|
|
216
|
-
*/
|
|
217
|
-
export declare function inject<T>(token: Type<T> | AbstractType<T> | InjectionToken<T>, notFoundValue?: T, flags?: InjectFlags): T;
|
|
218
|
-
export {};
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import { JSXComponent, ComponentSetup } from './component';
|
|
2
|
-
export type JSXChildNode = JSXElement | JSXComponent | string | number | boolean | null | undefined | JSXChildNode[];
|
|
3
|
-
export interface Props<T = JSXChildNode | JSXChildNode[]> {
|
|
4
|
-
children?: T;
|
|
5
|
-
[key: string]: any;
|
|
6
|
-
[key: symbol]: any;
|
|
7
|
-
}
|
|
8
|
-
export declare const Fragment: () => never;
|
|
9
|
-
export type Key = number | string;
|
|
10
|
-
export declare function jsx<T extends JSXChildNode>(name: string, config: Props<T>, key?: Key): JSXElement;
|
|
11
|
-
export declare function jsx<T extends JSXChildNode>(setup: ComponentSetup, config: Props<T>, key?: Key): JSXComponent;
|
|
12
|
-
export declare function jsxs<T extends JSXChildNode[]>(name: string, config: Props<T>, key?: Key): JSXElement;
|
|
13
|
-
export declare function jsxs<T extends JSXChildNode[]>(setup: ComponentSetup, config: Props<T>, key?: Key): JSXComponent;
|
|
14
|
-
export interface JSXTypeof {
|
|
15
|
-
$$typeOf: string | ComponentSetup;
|
|
16
|
-
is(target: JSXTypeof): boolean;
|
|
17
|
-
}
|
|
18
|
-
export declare class JSXText implements JSXTypeof {
|
|
19
|
-
text: string;
|
|
20
|
-
$$typeOf: string;
|
|
21
|
-
constructor(text: string);
|
|
22
|
-
is(target: JSXTypeof): boolean;
|
|
23
|
-
}
|
|
24
|
-
export declare class JSXElement implements JSXTypeof {
|
|
25
|
-
name: string;
|
|
26
|
-
props: Props<any>;
|
|
27
|
-
key?: Key | undefined;
|
|
28
|
-
$$typeOf: string;
|
|
29
|
-
constructor(name: string, props: Props<any>, key?: Key | undefined);
|
|
30
|
-
is(target: JSXTypeof): boolean;
|
|
31
|
-
}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { Subject } from '@tanbo/stream';
|
|
2
|
-
import { NullInjector } from '@tanbo/di';
|
|
3
|
-
import { Component, ComponentSetup } from './component';
|
|
4
|
-
/**
|
|
5
|
-
* Viewfly 根组件,用于实现组件状态更新事件通知
|
|
6
|
-
*/
|
|
7
|
-
export declare class RootComponent extends Component {
|
|
8
|
-
changeEmitter: Subject<void>;
|
|
9
|
-
constructor(factory: ComponentSetup, parentInjector?: NullInjector);
|
|
10
|
-
markAsChanged(): void;
|
|
11
|
-
}
|
package/bundles/public-api.d.ts
DELETED
package/bundles/viewfly.d.ts
DELETED
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { Injector, Provider, ReflectiveInjector } from '@tanbo/di';
|
|
2
|
-
import { NativeNode } from './foundation/_api';
|
|
3
|
-
import { JSXComponent, JSXElement } from './model/_api';
|
|
4
|
-
export type RootNode = JSXElement | JSXComponent;
|
|
5
|
-
/**
|
|
6
|
-
* Viewfly 配置项
|
|
7
|
-
*/
|
|
8
|
-
export interface Config {
|
|
9
|
-
/** Viewfly IoC 容器中提供者集合 */
|
|
10
|
-
providers?: Provider[];
|
|
11
|
-
/** 是否自动更新视图 */
|
|
12
|
-
autoUpdate?: boolean;
|
|
13
|
-
/** 根节点 */
|
|
14
|
-
root: RootNode;
|
|
15
|
-
/** 根组件的上下文 */
|
|
16
|
-
context?: Injector;
|
|
17
|
-
}
|
|
18
|
-
/**
|
|
19
|
-
* Viewfly 核心类,用于启动一个 Viewfly 应用
|
|
20
|
-
*/
|
|
21
|
-
export declare class Viewfly extends ReflectiveInjector {
|
|
22
|
-
private config;
|
|
23
|
-
private destroyed;
|
|
24
|
-
private rootComponent;
|
|
25
|
-
private subscription;
|
|
26
|
-
constructor(config: Config);
|
|
27
|
-
/**
|
|
28
|
-
* 启动 Viewfly
|
|
29
|
-
* @param host 应用根节点
|
|
30
|
-
*/
|
|
31
|
-
mount(host: NativeNode): void;
|
|
32
|
-
/**
|
|
33
|
-
* 销毁 Viewfly 实例
|
|
34
|
-
*/
|
|
35
|
-
destroy(): void;
|
|
36
|
-
private createRootComponent;
|
|
37
|
-
}
|