@lytjs/component 3.1.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/dist/index.cjs +1 -0
- package/dist/index.mjs +1 -0
- package/dist/types/builtins/async-component.d.ts +61 -0
- package/dist/types/builtins/async-component.d.ts.map +1 -0
- package/dist/types/builtins/error-boundary.d.ts +28 -0
- package/dist/types/builtins/error-boundary.d.ts.map +1 -0
- package/dist/types/builtins/index.d.ts +19 -0
- package/dist/types/builtins/index.d.ts.map +1 -0
- package/dist/types/builtins/keep-alive.d.ts +118 -0
- package/dist/types/builtins/keep-alive.d.ts.map +1 -0
- package/dist/types/builtins/suspense.d.ts +51 -0
- package/dist/types/builtins/suspense.d.ts.map +1 -0
- package/dist/types/builtins/transition-group.d.ts +40 -0
- package/dist/types/builtins/transition-group.d.ts.map +1 -0
- package/dist/types/builtins/transition.d.ts +136 -0
- package/dist/types/builtins/transition.d.ts.map +1 -0
- package/dist/types/composition-api.d.ts +116 -0
- package/dist/types/composition-api.d.ts.map +1 -0
- package/dist/types/define-component.d.ts +265 -0
- package/dist/types/define-component.d.ts.map +1 -0
- package/dist/types/emit.d.ts +79 -0
- package/dist/types/emit.d.ts.map +1 -0
- package/dist/types/index.d.ts +23 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/lifecycle.d.ts +92 -0
- package/dist/types/lifecycle.d.ts.map +1 -0
- package/dist/types/props.d.ts +85 -0
- package/dist/types/props.d.ts.map +1 -0
- package/dist/types/signal-state.d.ts +58 -0
- package/dist/types/signal-state.d.ts.map +1 -0
- package/dist/types/slots.d.ts +80 -0
- package/dist/types/slots.d.ts.map +1 -0
- package/dist/types/src/builtins/async-component.d.ts +61 -0
- package/dist/types/src/builtins/async-component.d.ts.map +1 -0
- package/dist/types/src/builtins/error-boundary.d.ts +28 -0
- package/dist/types/src/builtins/error-boundary.d.ts.map +1 -0
- package/dist/types/src/builtins/index.d.ts +19 -0
- package/dist/types/src/builtins/index.d.ts.map +1 -0
- package/dist/types/src/builtins/keep-alive.d.ts +118 -0
- package/dist/types/src/builtins/keep-alive.d.ts.map +1 -0
- package/dist/types/src/builtins/suspense.d.ts +51 -0
- package/dist/types/src/builtins/suspense.d.ts.map +1 -0
- package/dist/types/src/builtins/transition-group.d.ts +40 -0
- package/dist/types/src/builtins/transition-group.d.ts.map +1 -0
- package/dist/types/src/builtins/transition.d.ts +136 -0
- package/dist/types/src/builtins/transition.d.ts.map +1 -0
- package/dist/types/src/composition-api.d.ts +116 -0
- package/dist/types/src/composition-api.d.ts.map +1 -0
- package/dist/types/src/define-component.d.ts +265 -0
- package/dist/types/src/define-component.d.ts.map +1 -0
- package/dist/types/src/emit.d.ts +79 -0
- package/dist/types/src/emit.d.ts.map +1 -0
- package/dist/types/src/index.d.ts +23 -0
- package/dist/types/src/index.d.ts.map +1 -0
- package/dist/types/src/lifecycle.d.ts +92 -0
- package/dist/types/src/lifecycle.d.ts.map +1 -0
- package/dist/types/src/props.d.ts +85 -0
- package/dist/types/src/props.d.ts.map +1 -0
- package/dist/types/src/signal-state.d.ts +58 -0
- package/dist/types/src/signal-state.d.ts.map +1 -0
- package/dist/types/src/slots.d.ts +80 -0
- package/dist/types/src/slots.d.ts.map +1 -0
- package/package.json +44 -0
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lyt.js Composition API
|
|
3
|
+
*
|
|
4
|
+
* 提供 setup() 函数式组件编写能力,包括:
|
|
5
|
+
* - 生命周期钩子(onMounted / onUnmounted / onUpdated / onBeforeMount / onBeforeUnmount)
|
|
6
|
+
* - 依赖注入(provide / inject)
|
|
7
|
+
* - setup 执行器(runSetup)
|
|
8
|
+
* - 当前实例访问(getCurrentInstance)
|
|
9
|
+
*
|
|
10
|
+
* 纯原生实现,零外部依赖。
|
|
11
|
+
*/
|
|
12
|
+
/** 生命周期钩子回调函数类型 */
|
|
13
|
+
type LifecycleHook = () => void;
|
|
14
|
+
/** setup 函数类型 */
|
|
15
|
+
export type SetupFunction = (props: any, ctx: any) => object | Function;
|
|
16
|
+
/**
|
|
17
|
+
* 注册挂载完成钩子
|
|
18
|
+
*
|
|
19
|
+
* 在组件挂载到 DOM 后调用。必须在 setup() 函数内调用。
|
|
20
|
+
*
|
|
21
|
+
* @param hook - 钩子回调函数
|
|
22
|
+
*/
|
|
23
|
+
export declare function onMounted(hook: LifecycleHook): void;
|
|
24
|
+
/**
|
|
25
|
+
* 注册卸载完成钩子
|
|
26
|
+
*
|
|
27
|
+
* 在组件从 DOM 移除后调用。必须在 setup() 函数内调用。
|
|
28
|
+
*
|
|
29
|
+
* @param hook - 钩子回调函数
|
|
30
|
+
*/
|
|
31
|
+
export declare function onUnmounted(hook: LifecycleHook): void;
|
|
32
|
+
/**
|
|
33
|
+
* 注册更新完成钩子
|
|
34
|
+
*
|
|
35
|
+
* 在组件响应式数据变化导致 DOM 更新后调用。必须在 setup() 函数内调用。
|
|
36
|
+
*
|
|
37
|
+
* @param hook - 钩子回调函数
|
|
38
|
+
*/
|
|
39
|
+
export declare function onUpdated(hook: LifecycleHook): void;
|
|
40
|
+
/**
|
|
41
|
+
* 注册挂载前钩子
|
|
42
|
+
*
|
|
43
|
+
* 在组件挂载到 DOM 前调用。必须在 setup() 函数内调用。
|
|
44
|
+
*
|
|
45
|
+
* @param hook - 钩子回调函数
|
|
46
|
+
*/
|
|
47
|
+
export declare function onBeforeMount(hook: LifecycleHook): void;
|
|
48
|
+
/**
|
|
49
|
+
* 注册卸载前钩子
|
|
50
|
+
*
|
|
51
|
+
* 在组件从 DOM 移除前调用。必须在 setup() 函数内调用。
|
|
52
|
+
*
|
|
53
|
+
* @param hook - 钩子回调函数
|
|
54
|
+
*/
|
|
55
|
+
export declare function onBeforeUnmount(hook: LifecycleHook): void;
|
|
56
|
+
/**
|
|
57
|
+
* 提供依赖
|
|
58
|
+
*
|
|
59
|
+
* 在祖先组件的 setup() 中调用,为后代组件提供数据。
|
|
60
|
+
*
|
|
61
|
+
* @param key - 依赖的唯一标识
|
|
62
|
+
* @param value - 要提供的值
|
|
63
|
+
*
|
|
64
|
+
* @example
|
|
65
|
+
* ```ts
|
|
66
|
+
* setup(props, ctx) {
|
|
67
|
+
* provide('theme', 'dark')
|
|
68
|
+
* provide('config', reactive({ debug: true }))
|
|
69
|
+
* }
|
|
70
|
+
* ```
|
|
71
|
+
*/
|
|
72
|
+
export declare function provide<T>(key: string | symbol, value: T): void;
|
|
73
|
+
/**
|
|
74
|
+
* 注入依赖
|
|
75
|
+
*
|
|
76
|
+
* 在后代组件的 setup() 中调用,从祖先组件查找并获取提供的数据。
|
|
77
|
+
* 沿着组件实例的 _parent 链向上查找,直到找到匹配的 key 或到达根组件。
|
|
78
|
+
*
|
|
79
|
+
* @param key - 依赖的唯一标识
|
|
80
|
+
* @param defaultValue - 找不到时的默认值(可选)
|
|
81
|
+
* @returns 注入的值或默认值
|
|
82
|
+
*
|
|
83
|
+
* @example
|
|
84
|
+
* ```ts
|
|
85
|
+
* setup(props, ctx) {
|
|
86
|
+
* const theme = inject<string>('theme') // 'dark'
|
|
87
|
+
* const config = inject('config', { debug: false }) // 使用默认值
|
|
88
|
+
* }
|
|
89
|
+
* ```
|
|
90
|
+
*/
|
|
91
|
+
export declare function inject<T>(key: string | symbol, defaultValue?: T): T | undefined;
|
|
92
|
+
/**
|
|
93
|
+
* 执行 setup 函数
|
|
94
|
+
*
|
|
95
|
+
* 在组件初始化阶段调用,设置当前实例上下文后执行用户定义的 setup 函数。
|
|
96
|
+
* setup 可以返回:
|
|
97
|
+
* - 对象:属性合并到组件上下文(renderProxy)
|
|
98
|
+
* - 函数:作为组件的渲染函数
|
|
99
|
+
*
|
|
100
|
+
* @param setupFn - 用户定义的 setup 函数
|
|
101
|
+
* @param instance - 组件内部实例
|
|
102
|
+
* @param props - 组件 props
|
|
103
|
+
* @param ctx - 组件上下文(包含 attrs、slots、emit 等)
|
|
104
|
+
* @returns setup 返回值(对象或函数)
|
|
105
|
+
*/
|
|
106
|
+
export declare function runSetup(setupFn: Function, instance: any, props: any, ctx: any): any;
|
|
107
|
+
/**
|
|
108
|
+
* 获取当前正在执行的 setup 对应的组件实例
|
|
109
|
+
*
|
|
110
|
+
* 只能在 setup() 执行期间调用,其他时候返回 null。
|
|
111
|
+
*
|
|
112
|
+
* @returns 当前组件实例或 null
|
|
113
|
+
*/
|
|
114
|
+
export declare function getCurrentInstance(): any;
|
|
115
|
+
export {};
|
|
116
|
+
//# sourceMappingURL=composition-api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"composition-api.d.ts","sourceRoot":"","sources":["../../src/composition-api.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAMH,mBAAmB;AACnB,KAAK,aAAa,GAAG,MAAM,IAAI,CAAA;AAE/B,iBAAiB;AACjB,MAAM,MAAM,aAAa,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,KAAK,MAAM,GAAG,QAAQ,CAAA;AAavE;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI,CAMnD;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI,CAMrD;AAED;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI,CAMnD;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI,CAMvD;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI,CAMzD;AASD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,CAS/D;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,YAAY,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,SAAS,CAY/E;AAMD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,CAQpF;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,IAAI,GAAG,CAExC"}
|
|
@@ -0,0 +1,265 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lyt.js 组件定义系统
|
|
3
|
+
*
|
|
4
|
+
* 提供组件定义(defineComponent)、内部实例创建与初始化能力。
|
|
5
|
+
* 支持有状态组件(选项式)和函数组件两种模式。
|
|
6
|
+
* 基于 @lytjs/reactivity 响应式系统实现 computed 和 watch。
|
|
7
|
+
*/
|
|
8
|
+
import { type WatchStopHandle } from '@lytjs/reactivity';
|
|
9
|
+
import { type SignalState } from './signal-state';
|
|
10
|
+
import { type NormalizedProps, type PropOptions, type PropType } from './props';
|
|
11
|
+
import { type NormalizedEmitsOptions, type EmitsOptions } from './emit';
|
|
12
|
+
import { type LifecycleInstance } from './lifecycle';
|
|
13
|
+
import { type Slots, type SlotChildren } from './slots';
|
|
14
|
+
import { type SetupFunction } from './composition-api';
|
|
15
|
+
/** 组件渲染函数类型 */
|
|
16
|
+
export type RenderFunction = (h: CreateElement, instance: ComponentInternalInstance) => any;
|
|
17
|
+
/** 简易 createElement 函数类型 */
|
|
18
|
+
export type CreateElement = (tag: string | Function, props?: Record<string, any>, children?: any[]) => any;
|
|
19
|
+
/** 计算属性定义 */
|
|
20
|
+
export interface ComputedOptions {
|
|
21
|
+
[key: string]: (() => any) | {
|
|
22
|
+
/** 计算属性的 getter */
|
|
23
|
+
get: () => any;
|
|
24
|
+
/** 计算属性的 setter(可选) */
|
|
25
|
+
set?: (value: any) => void;
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
/** 侦听器选项 */
|
|
29
|
+
export interface WatchOptions {
|
|
30
|
+
[key: string]: {
|
|
31
|
+
/** 要侦听的状态/props 路径 */
|
|
32
|
+
handler: (newValue: any, oldValue: any) => void;
|
|
33
|
+
/** 是否立即执行 */
|
|
34
|
+
immediate?: boolean;
|
|
35
|
+
/** 是否深度侦听 */
|
|
36
|
+
deep?: boolean;
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
/** 响应式模式 */
|
|
40
|
+
export type ReactivityMode = 'proxy' | 'signal';
|
|
41
|
+
/** 组件选项(选项式 API) */
|
|
42
|
+
export interface ComponentOptions {
|
|
43
|
+
/** 组件名称 */
|
|
44
|
+
name?: string;
|
|
45
|
+
/** Props 声明 */
|
|
46
|
+
props?: string[] | Record<string, PropOptions | PropType | PropType[]>;
|
|
47
|
+
/** 组件内部状态(响应式数据) */
|
|
48
|
+
state?: () => Record<string, any>;
|
|
49
|
+
/** 计算属性 */
|
|
50
|
+
computed?: ComputedOptions;
|
|
51
|
+
/** 侦听器 */
|
|
52
|
+
watch?: WatchOptions;
|
|
53
|
+
/** 方法 */
|
|
54
|
+
methods?: Record<string, (...args: any[]) => any>;
|
|
55
|
+
/** 模板字符串 */
|
|
56
|
+
template?: string;
|
|
57
|
+
/** 渲染函数(优先于 template) */
|
|
58
|
+
render?: RenderFunction;
|
|
59
|
+
/** 初始化函数(setup 阶段调用) */
|
|
60
|
+
init?: (this: ComponentPublicInstance, props: Record<string, any>, state: Record<string, any>) => void | Record<string, any>;
|
|
61
|
+
/** Composition API setup 函数 */
|
|
62
|
+
setup?: SetupFunction;
|
|
63
|
+
/** Emits 声明 */
|
|
64
|
+
emits?: EmitsOptions;
|
|
65
|
+
/** 默认插槽内容(由父组件传入) */
|
|
66
|
+
slots?: SlotChildren;
|
|
67
|
+
/** 响应式模式:'proxy'(默认,基于 Proxy)或 'signal'(基于 Signal) */
|
|
68
|
+
reactivityMode?: ReactivityMode;
|
|
69
|
+
}
|
|
70
|
+
/** 函数组件类型 */
|
|
71
|
+
export type FunctionalComponent = (props: Record<string, any>, context: {
|
|
72
|
+
slots: Slots;
|
|
73
|
+
emit: EmitFunction;
|
|
74
|
+
}) => any;
|
|
75
|
+
/** emit 函数类型 */
|
|
76
|
+
export type EmitFunction = (event: string, ...args: any[]) => boolean;
|
|
77
|
+
/** 组件公共实例(对外暴露给用户的接口) */
|
|
78
|
+
export interface ComponentPublicInstance {
|
|
79
|
+
/** 组件名称 */
|
|
80
|
+
$name?: string;
|
|
81
|
+
/** 组件 props(只读) */
|
|
82
|
+
$props: Record<string, any>;
|
|
83
|
+
/** 组件内部状态 */
|
|
84
|
+
$state: Record<string, any>;
|
|
85
|
+
/** 组件插槽 */
|
|
86
|
+
$slots: Slots;
|
|
87
|
+
/** 组件是否已挂载 */
|
|
88
|
+
$isMounted: boolean;
|
|
89
|
+
/** 触发事件 */
|
|
90
|
+
$emit: EmitFunction;
|
|
91
|
+
/** 强制更新 */
|
|
92
|
+
$forceUpdate: () => void;
|
|
93
|
+
/** 卸载组件 */
|
|
94
|
+
$unmount: () => void;
|
|
95
|
+
/** 设置状态 */
|
|
96
|
+
$setState: (partial: Record<string, any>) => void;
|
|
97
|
+
}
|
|
98
|
+
/** 组件内部实例(框架内部使用) */
|
|
99
|
+
export interface ComponentInternalInstance extends LifecycleInstance {
|
|
100
|
+
/** 组件类型标记 */
|
|
101
|
+
_isComponent: true;
|
|
102
|
+
/** 组件定义选项 */
|
|
103
|
+
type: ComponentOptions;
|
|
104
|
+
/** 组件名称 */
|
|
105
|
+
name?: string;
|
|
106
|
+
/** 标准化后的 props 选项 */
|
|
107
|
+
propsOptions: NormalizedProps;
|
|
108
|
+
/** 标准化后的 emits 选项 */
|
|
109
|
+
emitsOptions?: NormalizedEmitsOptions;
|
|
110
|
+
/** 组件 props */
|
|
111
|
+
props: Record<string, any>;
|
|
112
|
+
/** 组件内部状态(proxy 模式为 shallowReactive,signal 模式为 SignalStateProxy) */
|
|
113
|
+
state: Record<string, any>;
|
|
114
|
+
/** Signal 模式下的原始 Signal 状态(仅 signal 模式存在) */
|
|
115
|
+
_signalState?: SignalState;
|
|
116
|
+
/** setup 返回的状态(合并到 renderProxy) */
|
|
117
|
+
setupState: Record<string, any>;
|
|
118
|
+
/** 计算属性缓存(使用 @lytjs/reactivity 的 ComputedRef) */
|
|
119
|
+
computedRefs: Record<string, {
|
|
120
|
+
value: any;
|
|
121
|
+
} | (() => any)>;
|
|
122
|
+
/** 渲染代理(公共实例,用户通过 this 访问) */
|
|
123
|
+
renderProxy: ComponentPublicInstance;
|
|
124
|
+
/** 渲染结果子树 */
|
|
125
|
+
subTree: any;
|
|
126
|
+
/** 是否已挂载 */
|
|
127
|
+
isMounted: boolean;
|
|
128
|
+
/** 是否已卸载 */
|
|
129
|
+
isUnmounted: boolean;
|
|
130
|
+
/** 组件插槽 */
|
|
131
|
+
slots: Slots;
|
|
132
|
+
/** watch 停止句柄列表(用于卸载时清理) */
|
|
133
|
+
watchStopHandles: WatchStopHandle[];
|
|
134
|
+
/** emit 函数的绑定引用 */
|
|
135
|
+
emit: EmitFunction;
|
|
136
|
+
/** 更新回调(由渲染器设置) */
|
|
137
|
+
update?: () => void;
|
|
138
|
+
/** Composition API 生命周期钩子 */
|
|
139
|
+
_lifecycleHooks?: Record<string, Function[]>;
|
|
140
|
+
}
|
|
141
|
+
/** defineComponent 的返回类型 */
|
|
142
|
+
export interface ComponentDefine {
|
|
143
|
+
/** 组件名称 */
|
|
144
|
+
name?: string;
|
|
145
|
+
/** 组件选项 */
|
|
146
|
+
options: ComponentOptions;
|
|
147
|
+
/** 标记为组件定义 */
|
|
148
|
+
_isComponentDefine: true;
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* 定义组件(选项式 API)
|
|
152
|
+
*
|
|
153
|
+
* 接收组件选项对象,返回标准化的组件定义。
|
|
154
|
+
* 支持的选项:
|
|
155
|
+
* - name: 组件名称
|
|
156
|
+
* - props: 属性声明(数组或对象形式)
|
|
157
|
+
* - state: 响应式数据工厂函数
|
|
158
|
+
* - computed: 计算属性
|
|
159
|
+
* - watch: 侦听器
|
|
160
|
+
* - methods: 方法
|
|
161
|
+
* - template: 模板字符串
|
|
162
|
+
* - render: 渲染函数
|
|
163
|
+
* - init: 初始化函数
|
|
164
|
+
* - emits: 事件声明
|
|
165
|
+
* - slots: 默认插槽
|
|
166
|
+
*
|
|
167
|
+
* @param options - 组件选项
|
|
168
|
+
* @returns 组件定义对象
|
|
169
|
+
*
|
|
170
|
+
* @example
|
|
171
|
+
* ```ts
|
|
172
|
+
* const MyComponent = defineComponent({
|
|
173
|
+
* name: 'MyComponent',
|
|
174
|
+
* props: {
|
|
175
|
+
* title: { type: String, default: 'Hello' },
|
|
176
|
+
* count: { type: Number, required: true }
|
|
177
|
+
* },
|
|
178
|
+
* state() {
|
|
179
|
+
* return { inner: 0 };
|
|
180
|
+
* },
|
|
181
|
+
* methods: {
|
|
182
|
+
* increment() {
|
|
183
|
+
* this.$setState({ inner: this.$state.inner + 1 });
|
|
184
|
+
* }
|
|
185
|
+
* },
|
|
186
|
+
* init(props, state) {
|
|
187
|
+
* console.log('组件初始化', props.title);
|
|
188
|
+
* }
|
|
189
|
+
* });
|
|
190
|
+
* ```
|
|
191
|
+
*/
|
|
192
|
+
export declare function defineComponent(options: ComponentOptions): ComponentDefine;
|
|
193
|
+
/**
|
|
194
|
+
* 创建组件内部实例
|
|
195
|
+
*
|
|
196
|
+
* 根据组件定义创建内部实例对象,但不执行初始化。
|
|
197
|
+
*
|
|
198
|
+
* @param component - 组件定义
|
|
199
|
+
* @returns 组件内部实例
|
|
200
|
+
*/
|
|
201
|
+
export declare function createComponentInstance(component: ComponentDefine): ComponentInternalInstance;
|
|
202
|
+
/**
|
|
203
|
+
* 初始化组件
|
|
204
|
+
*
|
|
205
|
+
* 根据组件类型执行不同的初始化流程:
|
|
206
|
+
* - 有状态组件(ComponentOptions)→ setupStatefulComponent
|
|
207
|
+
* - 函数组件(Function)→ setupFunctionComponent
|
|
208
|
+
*
|
|
209
|
+
* @param instance - 组件内部实例
|
|
210
|
+
* @param rawProps - 父组件传入的原始 props
|
|
211
|
+
* @param children - 父组件传入的子节点 / 插槽
|
|
212
|
+
*/
|
|
213
|
+
export declare function setupComponent(instance: ComponentInternalInstance, rawProps?: Record<string, any> | null, children?: SlotChildren | null): void;
|
|
214
|
+
/**
|
|
215
|
+
* 有状态组件初始化
|
|
216
|
+
*
|
|
217
|
+
* 初始化流程:
|
|
218
|
+
* 1. 设置当前实例上下文
|
|
219
|
+
* 2. 初始化 state(调用 state 工厂函数)
|
|
220
|
+
* 3. 初始化 computed(标记为脏)
|
|
221
|
+
* 4. 初始化 methods(绑定到 renderProxy)
|
|
222
|
+
* 5. 调用 init 函数(用户自定义初始化逻辑)
|
|
223
|
+
* 6. 将 methods 和 setupState 合并到 renderProxy
|
|
224
|
+
* 7. 调用 onInit 生命周期钩子
|
|
225
|
+
* 8. 恢复之前的实例上下文
|
|
226
|
+
*
|
|
227
|
+
* @param instance - 组件内部实例
|
|
228
|
+
*/
|
|
229
|
+
export declare function setupStatefulComponent(instance: ComponentInternalInstance): void;
|
|
230
|
+
/**
|
|
231
|
+
* 函数组件初始化
|
|
232
|
+
*
|
|
233
|
+
* 函数组件没有内部状态,直接将 props 和 slots 传递给渲染函数。
|
|
234
|
+
*
|
|
235
|
+
* @param instance - 组件内部实例
|
|
236
|
+
*/
|
|
237
|
+
export declare function setupFunctionComponent(instance: ComponentInternalInstance): void;
|
|
238
|
+
/**
|
|
239
|
+
* 挂载组件
|
|
240
|
+
*
|
|
241
|
+
* 调用渲染函数生成子树,标记为已挂载,触发 onMounted 钩子。
|
|
242
|
+
*
|
|
243
|
+
* @param instance - 组件内部实例
|
|
244
|
+
* @param h - createElement 函数(可选,用于渲染函数)
|
|
245
|
+
*/
|
|
246
|
+
export declare function mountComponent(instance: ComponentInternalInstance, h?: CreateElement): void;
|
|
247
|
+
/**
|
|
248
|
+
* 更新组件
|
|
249
|
+
*
|
|
250
|
+
* 触发 beforeUpdate → 重新渲染 → updated 生命周期。
|
|
251
|
+
*
|
|
252
|
+
* @param instance - 组件内部实例
|
|
253
|
+
* @param h - createElement 函数
|
|
254
|
+
* @param newProps - 新的 props(可选)
|
|
255
|
+
*/
|
|
256
|
+
export declare function updateComponent(instance: ComponentInternalInstance, h?: CreateElement, newProps?: Record<string, any>): void;
|
|
257
|
+
/**
|
|
258
|
+
* 卸载组件
|
|
259
|
+
*
|
|
260
|
+
* 触发 beforeUnmount → 标记已卸载 → unmounted 生命周期。
|
|
261
|
+
*
|
|
262
|
+
* @param instance - 组件内部实例
|
|
263
|
+
*/
|
|
264
|
+
export declare function unmountComponent(instance: ComponentInternalInstance): void;
|
|
265
|
+
//# sourceMappingURL=define-component.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"define-component.d.ts","sourceRoot":"","sources":["../../src/define-component.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lyt.js 事件发射系统
|
|
3
|
+
*
|
|
4
|
+
* 提供组件自定义事件的声明、标准化与发射能力。
|
|
5
|
+
* 支持驼峰命名自动转短横线、emits 声明校验。
|
|
6
|
+
* 纯原生实现,零外部依赖。
|
|
7
|
+
*/
|
|
8
|
+
/** emits 声明形式:字符串数组或带验证器的对象 */
|
|
9
|
+
export type EmitsOptions = string[] | Record<string, ((...args: any[]) => boolean) | null>;
|
|
10
|
+
/** 标准化后的 emits 配置 */
|
|
11
|
+
export interface NormalizedEmitsOptions {
|
|
12
|
+
/** 已声明的事件名集合(短横线形式) */
|
|
13
|
+
keys: string[];
|
|
14
|
+
/** 事件名 → 验证函数映射(无验证器则为 null) */
|
|
15
|
+
validators: Record<string, ((...args: any[]) => boolean) | null>;
|
|
16
|
+
}
|
|
17
|
+
/** 组件实例所需的最小 emit 接口 */
|
|
18
|
+
export interface EmitInstance {
|
|
19
|
+
/** 组件的 emits 声明(标准化后) */
|
|
20
|
+
emitsOptions?: NormalizedEmitsOptions;
|
|
21
|
+
/** 组件注册的事件处理函数映射(key 为短横线形式) */
|
|
22
|
+
props?: Record<string, any>;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* 将驼峰命名转为短横线命名
|
|
26
|
+
*
|
|
27
|
+
* 示例:
|
|
28
|
+
* - handleChange → change
|
|
29
|
+
* - updateValue → update-value
|
|
30
|
+
* - myCustomEvent → my-custom-event
|
|
31
|
+
*
|
|
32
|
+
* @param str - 驼峰命名的字符串
|
|
33
|
+
* @returns 短横线命名的字符串
|
|
34
|
+
*/
|
|
35
|
+
export declare function camelizeToHyphen(str: string): string;
|
|
36
|
+
/**
|
|
37
|
+
* 将短横线命名转为驼峰命名
|
|
38
|
+
*
|
|
39
|
+
* 示例:
|
|
40
|
+
* - update-value → updateValue
|
|
41
|
+
* - my-custom-event → myCustomEvent
|
|
42
|
+
*
|
|
43
|
+
* @param str - 短横线命名的字符串
|
|
44
|
+
* @returns 驼峰命名的字符串
|
|
45
|
+
*/
|
|
46
|
+
export declare function hyphenToCamel(str: string): string;
|
|
47
|
+
/**
|
|
48
|
+
* 标准化 emits 声明
|
|
49
|
+
*
|
|
50
|
+
* 支持两种形式:
|
|
51
|
+
* - 数组形式:['change', 'update'] → 每个事件无验证器
|
|
52
|
+
* - 对象形式:{ change: null, update: (val) => val > 0 } → 可附带验证器
|
|
53
|
+
*
|
|
54
|
+
* 所有事件名统一转为短横线形式。
|
|
55
|
+
*
|
|
56
|
+
* @param emits - 组件 options 中传入的 emits 声明
|
|
57
|
+
* @returns 标准化后的 emits 配置
|
|
58
|
+
*/
|
|
59
|
+
export declare function normalizeEmits(emits: EmitsOptions | undefined | null): NormalizedEmitsOptions;
|
|
60
|
+
/**
|
|
61
|
+
* 组件事件发射
|
|
62
|
+
*
|
|
63
|
+
* 流程:
|
|
64
|
+
* 1. 将事件名转为短横线形式
|
|
65
|
+
* 2. 如果组件声明了 emits,校验事件是否已声明
|
|
66
|
+
* 3. 如果该事件有验证器,执行验证
|
|
67
|
+
* 4. 在实例 props 中查找对应的处理函数并调用
|
|
68
|
+
*
|
|
69
|
+
* 事件处理函数命名约定:
|
|
70
|
+
* - 事件 "change" 对应处理函数 "onChange"
|
|
71
|
+
* - 事件 "update-value" 对应处理函数 "onUpdateValue"
|
|
72
|
+
*
|
|
73
|
+
* @param instance - 组件实例
|
|
74
|
+
* @param event - 事件名(支持驼峰或短横线形式)
|
|
75
|
+
* @param args - 传递给事件处理函数的参数
|
|
76
|
+
* @returns 事件是否有对应的处理函数被调用
|
|
77
|
+
*/
|
|
78
|
+
export declare function emit(instance: EmitInstance, event: string, ...args: any[]): boolean;
|
|
79
|
+
//# sourceMappingURL=emit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"emit.d.ts","sourceRoot":"","sources":["../../src/emit.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,+BAA+B;AAC/B,MAAM,MAAM,YAAY,GAAG,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;AAE3F,qBAAqB;AACrB,MAAM,WAAW,sBAAsB;IACrC,uBAAuB;IACvB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,gCAAgC;IAChC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;CAClE;AAED,wBAAwB;AACxB,MAAM,WAAW,YAAY;IAC3B,yBAAyB;IACzB,YAAY,CAAC,EAAE,sBAAsB,CAAC;IACtC,gCAAgC;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC7B;AAMD;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEjD;AA2BD;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,YAAY,GAAG,SAAS,GAAG,IAAI,GACrC,sBAAsB,CAmCxB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,IAAI,CAClB,QAAQ,EAAE,YAAY,EACtB,KAAK,EAAE,MAAM,EACb,GAAG,IAAI,EAAE,GAAG,EAAE,GACb,OAAO,CAqDT"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lyt.js 组件系统 — 统一导出入口
|
|
3
|
+
*
|
|
4
|
+
* 导出所有公共 API 和类型定义。
|
|
5
|
+
* 纯原生实现,零外部依赖。
|
|
6
|
+
*/
|
|
7
|
+
export { defineComponent, createComponentInstance, setupComponent, setupStatefulComponent, setupFunctionComponent, mountComponent, updateComponent, unmountComponent, } from './define-component';
|
|
8
|
+
export type { ComponentOptions, ComponentDefine, ComponentPublicInstance, ComponentInternalInstance, RenderFunction, CreateElement, ComputedOptions, WatchOptions, FunctionalComponent, EmitFunction, ReactivityMode, } from './define-component';
|
|
9
|
+
export { normalizePropsOptions, validateProp, initProps, getPropDefaultValue, } from './props';
|
|
10
|
+
export type { PropType, PropOptions, NormalizedPropsOptions, NormalizedProps, } from './props';
|
|
11
|
+
export { emit, normalizeEmits, camelizeToHyphen, hyphenToCamel, } from './emit';
|
|
12
|
+
export type { EmitsOptions, NormalizedEmitsOptions, EmitInstance, } from './emit';
|
|
13
|
+
export { LifecycleHook, createLifecycleHook, callLifecycleHook, setCurrentInstance, onInit, onMounted, onBeforeUpdate, onUpdated, onBeforeUnmount, onUnmounted, currentInstance, } from './lifecycle';
|
|
14
|
+
export type { LifecycleHookCallback, LifecycleInstance, } from './lifecycle';
|
|
15
|
+
export { initSlots, normalizeSlotValue, renderSlot, hasSlot, } from './slots';
|
|
16
|
+
export type { SlotValue, Slots, SlotChildren, SlotsInstance, } from './slots';
|
|
17
|
+
export { Transition, TransitionGroup, KeepAlive, Suspense, defineAsyncComponent, } from './builtins';
|
|
18
|
+
export type { TransitionProps, TransitionGroupProps, KeepAliveProps, SuspenseProps, AsyncComponentOptions, } from './builtins';
|
|
19
|
+
export { onMounted as compositionOnMounted, onUnmounted as compositionOnUnmounted, onUpdated as compositionOnUpdated, onBeforeMount as compositionOnBeforeMount, onBeforeUnmount as compositionOnBeforeUnmount, provide, inject, getCurrentInstance, runSetup, } from './composition-api';
|
|
20
|
+
export type { SetupFunction, } from './composition-api';
|
|
21
|
+
export { createSignalState, createSignalStateProxy, getSignalStateSnapshot, patchSignalState, disposeSignalState, } from './signal-state';
|
|
22
|
+
export type { SignalState, SignalStateProxy, } from './signal-state';
|
|
23
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,EACL,eAAe,EACf,uBAAuB,EACvB,cAAc,EACd,sBAAsB,EACtB,sBAAsB,EACtB,cAAc,EACd,eAAe,EACf,gBAAgB,GACjB,MAAM,oBAAoB,CAAC;AAE5B,YAAY,EACV,gBAAgB,EAChB,eAAe,EACf,uBAAuB,EACvB,yBAAyB,EACzB,cAAc,EACd,aAAa,EACb,eAAe,EACf,YAAY,EACZ,mBAAmB,EACnB,YAAY,EACZ,cAAc,GACf,MAAM,oBAAoB,CAAC;AAM5B,OAAO,EACL,qBAAqB,EACrB,YAAY,EACZ,SAAS,EACT,mBAAmB,GACpB,MAAM,SAAS,CAAC;AAEjB,YAAY,EACV,QAAQ,EACR,WAAW,EACX,sBAAsB,EACtB,eAAe,GAChB,MAAM,SAAS,CAAC;AAMjB,OAAO,EACL,IAAI,EACJ,cAAc,EACd,gBAAgB,EAChB,aAAa,GACd,MAAM,QAAQ,CAAC;AAEhB,YAAY,EACV,YAAY,EACZ,sBAAsB,EACtB,YAAY,GACb,MAAM,QAAQ,CAAC;AAMhB,OAAO,EACL,aAAa,EACb,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EAClB,MAAM,EACN,SAAS,EACT,cAAc,EACd,SAAS,EACT,eAAe,EACf,WAAW,EACX,eAAe,GAChB,MAAM,aAAa,CAAC;AAErB,YAAY,EACV,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,aAAa,CAAC;AAMrB,OAAO,EACL,SAAS,EACT,kBAAkB,EAClB,UAAU,EACV,OAAO,GACR,MAAM,SAAS,CAAC;AAEjB,YAAY,EACV,SAAS,EACT,KAAK,EACL,YAAY,EACZ,aAAa,GACd,MAAM,SAAS,CAAC;AAMjB,OAAO,EACL,UAAU,EACV,eAAe,EACf,SAAS,EACT,QAAQ,EACR,oBAAoB,GACrB,MAAM,YAAY,CAAC;AAEpB,YAAY,EACV,eAAe,EACf,oBAAoB,EACpB,cAAc,EACd,aAAa,EACb,qBAAqB,GACtB,MAAM,YAAY,CAAC;AAMpB,OAAO,EACL,SAAS,IAAI,oBAAoB,EACjC,WAAW,IAAI,sBAAsB,EACrC,SAAS,IAAI,oBAAoB,EACjC,aAAa,IAAI,wBAAwB,EACzC,eAAe,IAAI,0BAA0B,EAC7C,OAAO,EACP,MAAM,EACN,kBAAkB,EAClB,QAAQ,GACT,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EACV,aAAa,GACd,MAAM,mBAAmB,CAAC;AAM3B,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,sBAAsB,EACtB,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,gBAAgB,CAAC;AAExB,YAAY,EACV,WAAW,EACX,gBAAgB,GACjB,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lyt.js 生命周期系统
|
|
3
|
+
*
|
|
4
|
+
* 提供组件生命周期钩子的注册、管理与调用能力。
|
|
5
|
+
* 支持 onInit / onMounted / onBeforeUpdate / onUpdated / onBeforeUnmount / onUnmounted。
|
|
6
|
+
* 包含当前实例管理(currentInstance / setCurrentInstance),
|
|
7
|
+
* 可在 setup 阶段自动收集生命周期钩子。
|
|
8
|
+
* 纯原生实现,零外部依赖。
|
|
9
|
+
*/
|
|
10
|
+
/** 生命周期钩子名称枚举 */
|
|
11
|
+
export declare enum LifecycleHook {
|
|
12
|
+
/** 初始化阶段(组件实例创建后,props/state 初始化完成) */
|
|
13
|
+
INIT = "init",
|
|
14
|
+
/** 挂载完成(组件首次渲染到 DOM 后) */
|
|
15
|
+
MOUNTED = "mounted",
|
|
16
|
+
/** 更新前(响应式数据变化后,DOM 更新前) */
|
|
17
|
+
BEFORE_UPDATE = "beforeUpdate",
|
|
18
|
+
/** 更新完成(DOM 更新后) */
|
|
19
|
+
UPDATED = "updated",
|
|
20
|
+
/** 卸载前(组件从 DOM 移除前) */
|
|
21
|
+
BEFORE_UNMOUNT = "beforeUnmount",
|
|
22
|
+
/** 卸载完成(组件从 DOM 移除后) */
|
|
23
|
+
UNMOUNTED = "unmounted"
|
|
24
|
+
}
|
|
25
|
+
/** 生命周期钩子回调函数类型 */
|
|
26
|
+
export type LifecycleHookCallback = (...args: any[]) => void;
|
|
27
|
+
/** 组件实例所需的最小生命周期接口 */
|
|
28
|
+
export interface LifecycleInstance {
|
|
29
|
+
/** 生命周期钩子注册表:hookName → 回调函数数组 */
|
|
30
|
+
[LifecycleHook.INIT]?: LifecycleHookCallback[];
|
|
31
|
+
[LifecycleHook.MOUNTED]?: LifecycleHookCallback[];
|
|
32
|
+
[LifecycleHook.BEFORE_UPDATE]?: LifecycleHookCallback[];
|
|
33
|
+
[LifecycleHook.UPDATED]?: LifecycleHookCallback[];
|
|
34
|
+
[LifecycleHook.BEFORE_UNMOUNT]?: LifecycleHookCallback[];
|
|
35
|
+
[LifecycleHook.UNMOUNTED]?: LifecycleHookCallback[];
|
|
36
|
+
}
|
|
37
|
+
/** 当前正在初始化的组件实例 */
|
|
38
|
+
export declare let currentInstance: LifecycleInstance | null;
|
|
39
|
+
/**
|
|
40
|
+
* 设置当前正在初始化的组件实例
|
|
41
|
+
*
|
|
42
|
+
* 在组件 setup 阶段调用,使生命周期钩子能自动注册到正确的实例。
|
|
43
|
+
*
|
|
44
|
+
* @param instance - 组件实例,传 null 表示退出 setup 上下文
|
|
45
|
+
* @returns 之前的当前实例(用于嵌套场景恢复)
|
|
46
|
+
*/
|
|
47
|
+
export declare function setCurrentInstance(instance: LifecycleInstance | null): LifecycleInstance | null;
|
|
48
|
+
/**
|
|
49
|
+
* 创建生命周期钩子注册函数
|
|
50
|
+
*
|
|
51
|
+
* 返回一个函数,调用该函数即可注册对应生命周期的回调。
|
|
52
|
+
* 如果当前有 activeInstance,回调注册到该实例;
|
|
53
|
+
* 否则注册到指定的 target 实例。
|
|
54
|
+
*
|
|
55
|
+
* @param hook - 生命周期钩子名称
|
|
56
|
+
* @returns 钩子注册函数
|
|
57
|
+
*
|
|
58
|
+
* @example
|
|
59
|
+
* ```ts
|
|
60
|
+
* const onMounted = createLifecycleHook(LifecycleHook.MOUNTED);
|
|
61
|
+
*
|
|
62
|
+
* // 在 setup 中使用
|
|
63
|
+
* onMounted(() => {
|
|
64
|
+
* console.log('组件已挂载');
|
|
65
|
+
* });
|
|
66
|
+
* ```
|
|
67
|
+
*/
|
|
68
|
+
export declare function createLifecycleHook(hook: LifecycleHook): (callback: LifecycleHookCallback, target?: LifecycleInstance) => void;
|
|
69
|
+
/**
|
|
70
|
+
* 调用组件的生命周期钩子
|
|
71
|
+
*
|
|
72
|
+
* 按注册顺序依次执行指定生命周期名称下的所有回调。
|
|
73
|
+
* 如果某个回调抛出异常,会捕获并警告,但不影响后续回调执行。
|
|
74
|
+
*
|
|
75
|
+
* @param instance - 组件实例
|
|
76
|
+
* @param hook - 要调用的生命周期钩子名称
|
|
77
|
+
* @param args - 传递给回调函数的参数
|
|
78
|
+
*/
|
|
79
|
+
export declare function callLifecycleHook(instance: LifecycleInstance, hook: LifecycleHook, ...args: any[]): void;
|
|
80
|
+
/** 注册初始化钩子 */
|
|
81
|
+
export declare const onInit: (callback: LifecycleHookCallback, target?: LifecycleInstance) => void;
|
|
82
|
+
/** 注册挂载完成钩子 */
|
|
83
|
+
export declare const onMounted: (callback: LifecycleHookCallback, target?: LifecycleInstance) => void;
|
|
84
|
+
/** 注册更新前钩子 */
|
|
85
|
+
export declare const onBeforeUpdate: (callback: LifecycleHookCallback, target?: LifecycleInstance) => void;
|
|
86
|
+
/** 注册更新完成钩子 */
|
|
87
|
+
export declare const onUpdated: (callback: LifecycleHookCallback, target?: LifecycleInstance) => void;
|
|
88
|
+
/** 注册卸载前钩子 */
|
|
89
|
+
export declare const onBeforeUnmount: (callback: LifecycleHookCallback, target?: LifecycleInstance) => void;
|
|
90
|
+
/** 注册卸载完成钩子 */
|
|
91
|
+
export declare const onUnmounted: (callback: LifecycleHookCallback, target?: LifecycleInstance) => void;
|
|
92
|
+
//# sourceMappingURL=lifecycle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../../src/lifecycle.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,iBAAiB;AACjB,oBAAY,aAAa;IACvB,uCAAuC;IACvC,IAAI,SAAS;IACb,0BAA0B;IAC1B,OAAO,YAAY;IACnB,4BAA4B;IAC5B,aAAa,iBAAiB;IAC9B,oBAAoB;IACpB,OAAO,YAAY;IACnB,uBAAuB;IACvB,cAAc,kBAAkB;IAChC,wBAAwB;IACxB,SAAS,cAAc;CACxB;AAED,mBAAmB;AACnB,MAAM,MAAM,qBAAqB,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;AAE7D,sBAAsB;AACtB,MAAM,WAAW,iBAAiB;IAChC,kCAAkC;IAClC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,EAAE,qBAAqB,EAAE,CAAC;IAC/C,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,EAAE,qBAAqB,EAAE,CAAC;IAClD,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,EAAE,qBAAqB,EAAE,CAAC;IACxD,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,EAAE,qBAAqB,EAAE,CAAC;IAClD,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC,EAAE,qBAAqB,EAAE,CAAC;IACzD,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,EAAE,qBAAqB,EAAE,CAAC;CACrD;AAED,mBAAmB;AACnB,eAAO,IAAI,eAAe,EAAE,iBAAiB,GAAG,IAAW,CAAC;AAiB5D;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,iBAAiB,GAAG,IAAI,GACjC,iBAAiB,GAAG,IAAI,CAI1B;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,aAAa,GAClB,CAAC,QAAQ,EAAE,qBAAqB,EAAE,MAAM,CAAC,EAAE,iBAAiB,KAAK,IAAI,CA6BvE;AAED;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,iBAAiB,EAC3B,IAAI,EAAE,aAAa,EACnB,GAAG,IAAI,EAAE,GAAG,EAAE,GACb,IAAI,CAiBN;AAMD,cAAc;AACd,eAAO,MAAM,MAAM,aArEL,qBAAqB,WAAW,iBAAiB,KAAK,IAqEP,CAAC;AAE9D,eAAe;AACf,eAAO,MAAM,SAAS,aAxER,qBAAqB,WAAW,iBAAiB,KAAK,IAwED,CAAC;AAEpE,cAAc;AACd,eAAO,MAAM,cAAc,aA3Eb,qBAAqB,WAAW,iBAAiB,KAAK,IA2EU,CAAC;AAE/E,eAAe;AACf,eAAO,MAAM,SAAS,aA9ER,qBAAqB,WAAW,iBAAiB,KAAK,IA8ED,CAAC;AAEpE,cAAc;AACd,eAAO,MAAM,eAAe,aAjFd,qBAAqB,WAAW,iBAAiB,KAAK,IAiFY,CAAC;AAEjF,eAAe;AACf,eAAO,MAAM,WAAW,aApFV,qBAAqB,WAAW,iBAAiB,KAAK,IAoFG,CAAC"}
|