@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,136 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lyt.js Transition 内置过渡组件
|
|
3
|
+
*
|
|
4
|
+
* 控制 Vue 风格的进入/离开过渡效果。
|
|
5
|
+
* 支持 CSS 类名模式和 JS 钩子模式,支持 appear 首次挂载过渡,
|
|
6
|
+
* 支持 mode 过渡模式(in-out / out-in)。
|
|
7
|
+
* 纯原生实现,零外部依赖。
|
|
8
|
+
*/
|
|
9
|
+
import { type ComponentDefine } from '../define-component';
|
|
10
|
+
/** Transition 组件的 Props 接口 */
|
|
11
|
+
export interface TransitionProps {
|
|
12
|
+
/** CSS 类名前缀,如 "fade" → fade-enter-active/fade-leave-active */
|
|
13
|
+
name?: string;
|
|
14
|
+
/** 初始渲染时是否应用过渡 */
|
|
15
|
+
appear?: boolean;
|
|
16
|
+
/** 过渡模式:'in-out' 先进入再离开,'out-in' 先离开再进入 */
|
|
17
|
+
mode?: 'in-out' | 'out-in' | 'default';
|
|
18
|
+
/** 过渡持续时间(ms),用于超时回退 */
|
|
19
|
+
duration?: number;
|
|
20
|
+
/** 进入起始类名 */
|
|
21
|
+
enterFromClass?: string;
|
|
22
|
+
/** 进入激活类名 */
|
|
23
|
+
enterActiveClass?: string;
|
|
24
|
+
/** 进入结束类名 */
|
|
25
|
+
enterToClass?: string;
|
|
26
|
+
/** 离开起始类名 */
|
|
27
|
+
leaveFromClass?: string;
|
|
28
|
+
/** 离开激活类名 */
|
|
29
|
+
leaveActiveClass?: string;
|
|
30
|
+
/** 离开结束类名 */
|
|
31
|
+
leaveToClass?: string;
|
|
32
|
+
/** 进入前钩子 */
|
|
33
|
+
onBeforeEnter?: (el: any) => void;
|
|
34
|
+
/** 进入钩子(需调用 done 表示完成) */
|
|
35
|
+
onEnter?: (el: any, done: () => void) => void;
|
|
36
|
+
/** 进入完成钩子 */
|
|
37
|
+
onAfterEnter?: (el: any) => void;
|
|
38
|
+
/** 进入取消钩子 */
|
|
39
|
+
onEnterCancelled?: (el: any) => void;
|
|
40
|
+
/** 离开前钩子 */
|
|
41
|
+
onBeforeLeave?: (el: any) => void;
|
|
42
|
+
/** 离开钩子(需调用 done 表示完成) */
|
|
43
|
+
onLeave?: (el: any, done: () => void) => void;
|
|
44
|
+
/** 离开完成钩子 */
|
|
45
|
+
onAfterLeave?: (el: any) => void;
|
|
46
|
+
/** 离开取消钩子 */
|
|
47
|
+
onLeaveCancelled?: (el: any) => void;
|
|
48
|
+
}
|
|
49
|
+
/** 过渡信息 */
|
|
50
|
+
interface TransitionInfo {
|
|
51
|
+
/** 过渡类型:transition 或 animation */
|
|
52
|
+
type: string | null;
|
|
53
|
+
/** 过渡属性数量 */
|
|
54
|
+
propCount: number;
|
|
55
|
+
/** 过渡结束时间(ms) */
|
|
56
|
+
timeout: number;
|
|
57
|
+
/** 是否有过渡属性 */
|
|
58
|
+
hasTransform: boolean;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* 下一帧工具函数
|
|
62
|
+
*
|
|
63
|
+
* 使用 requestAnimationFrame 双帧确保浏览器完成重排。
|
|
64
|
+
* 第一帧:浏览器将 pending 的样式变更应用到 DOM
|
|
65
|
+
* 第二帧:确保样式已生效,可以安全地添加下一组类名
|
|
66
|
+
*
|
|
67
|
+
* @param fn - 在下一帧执行的回调函数
|
|
68
|
+
*/
|
|
69
|
+
export declare function nextFrame(fn: () => void): void;
|
|
70
|
+
/**
|
|
71
|
+
* 给元素添加过渡类名
|
|
72
|
+
*
|
|
73
|
+
* @param el - 目标 DOM 元素
|
|
74
|
+
* @param cls - 要添加的 CSS 类名
|
|
75
|
+
*/
|
|
76
|
+
export declare function addTransitionClass(el: Element, cls: string): void;
|
|
77
|
+
/**
|
|
78
|
+
* 移除元素的过渡类名
|
|
79
|
+
*
|
|
80
|
+
* @param el - 目标 DOM 元素
|
|
81
|
+
* @param cls - 要移除的 CSS 类名
|
|
82
|
+
*/
|
|
83
|
+
export declare function removeTransitionClass(el: Element, cls: string): void;
|
|
84
|
+
/**
|
|
85
|
+
* 获取元素的过渡属性信息
|
|
86
|
+
*
|
|
87
|
+
* 检测元素上 transition-duration 和 animation-duration,
|
|
88
|
+
* 返回最长的持续时间作为过渡结束时间。
|
|
89
|
+
*
|
|
90
|
+
* @param el - 目标 DOM 元素
|
|
91
|
+
* @param expectedType - 期望的过渡类型('transition' 或 'animation'),不指定则自动检测
|
|
92
|
+
* @returns 过渡信息对象
|
|
93
|
+
*/
|
|
94
|
+
export declare function getTransitionInfo(el: Element, expectedType?: string): TransitionInfo;
|
|
95
|
+
/**
|
|
96
|
+
* 等待过渡/动画结束
|
|
97
|
+
*
|
|
98
|
+
* 监听 transitionend / animationend 事件,或超时后强制完成。
|
|
99
|
+
* 处理了多属性过渡的情况(需要等待所有属性完成)。
|
|
100
|
+
*
|
|
101
|
+
* @param el - 目标 DOM 元素
|
|
102
|
+
* @param expectedType - 期望的过渡类型
|
|
103
|
+
* @param timeout - 超时时间(ms)
|
|
104
|
+
* @param cb - 过渡完成回调
|
|
105
|
+
*/
|
|
106
|
+
export declare function whenTransitionEnds(el: Element, expectedType: string | undefined, timeout: number, cb: () => void): void;
|
|
107
|
+
/**
|
|
108
|
+
* Transition 组件识别的 prop 键列表
|
|
109
|
+
*
|
|
110
|
+
* 用于框架在处理 Transition 组件时,识别哪些属性是 Transition 专有的,
|
|
111
|
+
* 不应传递给子组件。
|
|
112
|
+
*/
|
|
113
|
+
export declare const TransitionPropsKeys: string[];
|
|
114
|
+
/**
|
|
115
|
+
* Transition 内置过渡组件
|
|
116
|
+
*
|
|
117
|
+
* 控制单个子元素的进入/离开过渡效果。
|
|
118
|
+
* 必须只有一个子元素作为内容。
|
|
119
|
+
*
|
|
120
|
+
* @example
|
|
121
|
+
* ```ts
|
|
122
|
+
* // CSS 类名模式
|
|
123
|
+
* const FadeTransition = Transition;
|
|
124
|
+
* // 使用时传入 name="fade",CSS 中定义 .fade-enter-active, .fade-leave-active 等
|
|
125
|
+
*
|
|
126
|
+
* // JS 钩子模式
|
|
127
|
+
* <transition
|
|
128
|
+
* :onBeforeEnter="el => el.style.opacity = '0'"
|
|
129
|
+
* :onEnter="(el, done) => { el.style.transition = 'opacity 0.3s'; el.style.opacity = '1'; done(); }"
|
|
130
|
+
* :onLeave="(el, done) => { el.style.transition = 'opacity 0.3s'; el.style.opacity = '0'; done(); }"
|
|
131
|
+
* />
|
|
132
|
+
* ```
|
|
133
|
+
*/
|
|
134
|
+
export declare const Transition: ComponentDefine;
|
|
135
|
+
export {};
|
|
136
|
+
//# sourceMappingURL=transition.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transition.d.ts","sourceRoot":"","sources":["../../../../src/builtins/transition.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAEL,KAAK,eAAe,EAErB,MAAM,qBAAqB,CAAC;AAM7B,8BAA8B;AAC9B,MAAM,WAAW,eAAe;IAC9B,8DAA8D;IAC9D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kBAAkB;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,2CAA2C;IAC3C,IAAI,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;IACvC,wBAAwB;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa;IACb,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa;IACb,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,aAAa;IACb,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa;IACb,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa;IACb,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,aAAa;IACb,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY;IACZ,aAAa,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,KAAK,IAAI,CAAC;IAClC,0BAA0B;IAC1B,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;IAC9C,aAAa;IACb,YAAY,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,KAAK,IAAI,CAAC;IACjC,aAAa;IACb,gBAAgB,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,KAAK,IAAI,CAAC;IACrC,YAAY;IACZ,aAAa,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,KAAK,IAAI,CAAC;IAClC,0BAA0B;IAC1B,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;IAC9C,aAAa;IACb,YAAY,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,KAAK,IAAI,CAAC;IACjC,aAAa;IACb,gBAAgB,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,KAAK,IAAI,CAAC;CACtC;AAED,WAAW;AACX,UAAU,cAAc;IACtB,kCAAkC;IAClC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,aAAa;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc;IACd,YAAY,EAAE,OAAO,CAAC;CACvB;AAoBD;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,IAAI,CAI9C;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAIjE;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAIpE;AAED;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAC/B,EAAE,EAAE,OAAO,EACX,YAAY,CAAC,EAAE,MAAM,GACpB,cAAc,CA6ChB;AAwCD;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAChC,EAAE,EAAE,OAAO,EACX,YAAY,EAAE,MAAM,GAAG,SAAS,EAChC,OAAO,EAAE,MAAM,EACf,EAAE,EAAE,MAAM,IAAI,GACb,IAAI,CAsCN;AAMD;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,EAAE,MAAM,EAmBvC,CAAC;AA6IF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,UAAU,EAAE,eAqGvB,CAAC"}
|
|
@@ -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
|
+
* 基于 @lyt/reactivity 响应式系统实现 computed 和 watch。
|
|
7
|
+
*/
|
|
8
|
+
import { type WatchStopHandle } from '@lyt/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
|
+
/** 计算属性缓存(使用 @lyt/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"}
|