@lytjs/component 5.0.1 → 6.4.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/README.md +509 -288
- package/dist/index.cjs +1945 -1
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +812 -0
- package/dist/index.d.ts +812 -0
- package/dist/index.mjs +1865 -1
- package/dist/index.mjs.map +1 -0
- package/package.json +27 -38
- package/dist/builtins-entry.cjs +0 -1
- package/dist/builtins-entry.mjs +0 -1
- package/dist/types/builtins/async-component.d.ts +0 -61
- package/dist/types/builtins/async-component.d.ts.map +0 -1
- package/dist/types/builtins/error-boundary.d.ts +0 -28
- package/dist/types/builtins/error-boundary.d.ts.map +0 -1
- package/dist/types/builtins/index.d.ts +0 -19
- package/dist/types/builtins/index.d.ts.map +0 -1
- package/dist/types/builtins/keep-alive.d.ts +0 -118
- package/dist/types/builtins/keep-alive.d.ts.map +0 -1
- package/dist/types/builtins/suspense.d.ts +0 -51
- package/dist/types/builtins/suspense.d.ts.map +0 -1
- package/dist/types/builtins/transition-group.d.ts +0 -40
- package/dist/types/builtins/transition-group.d.ts.map +0 -1
- package/dist/types/builtins/transition.d.ts +0 -136
- package/dist/types/builtins/transition.d.ts.map +0 -1
- package/dist/types/builtins-entry.d.ts +0 -9
- package/dist/types/builtins-entry.d.ts.map +0 -1
- package/dist/types/composition-api.d.ts +0 -116
- package/dist/types/composition-api.d.ts.map +0 -1
- package/dist/types/define-component.d.ts +0 -281
- package/dist/types/define-component.d.ts.map +0 -1
- package/dist/types/emit.d.ts +0 -92
- package/dist/types/emit.d.ts.map +0 -1
- package/dist/types/index.d.ts +0 -21
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/lifecycle.d.ts +0 -92
- package/dist/types/lifecycle.d.ts.map +0 -1
- package/dist/types/props.d.ts +0 -85
- package/dist/types/props.d.ts.map +0 -1
- package/dist/types/signal-state.d.ts +0 -58
- package/dist/types/signal-state.d.ts.map +0 -1
- package/dist/types/slots.d.ts +0 -80
- package/dist/types/slots.d.ts.map +0 -1
package/dist/builtins-entry.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{shallowReactive as se,computed as ie,watch as ae}from"@lytjs/reactivity";import{computed as pe,effect as ce}from"@lytjs/reactivity/signal";var K=null;function $(e){return typeof e=="function"}function h(e){return function(n,o){if(!$(n))return;let i=o||K;i&&(i[e]||(i[e]=[]),i[e].push(n))}}function _(e,t,...n){let o=e[t];if(!(!o||o.length===0))for(let i=0;i<o.length;i++)try{o[i](...n)}catch(u){}}var X=h("init"),Y=h("mounted"),Z=h("beforeUpdate"),ee=h("updated"),ne=h("beforeUnmount"),te=h("unmounted");import{isFunction as fe,isPlainObject as ye,mergeObjects as me}from"@lytjs/common";function g(e){return{name:e.name,options:e,_isComponentDefine:!0}}var D=g({name:"Transition",props:{name:{type:String,default:""},appear:{type:Boolean,default:!1},mode:{type:String,default:"default"},duration:{type:Number,default:void 0},enterFromClass:{type:String,default:void 0},enterActiveClass:{type:String,default:void 0},enterToClass:{type:String,default:void 0},leaveFromClass:{type:String,default:void 0},leaveActiveClass:{type:String,default:void 0},leaveToClass:{type:String,default:void 0}},state(){return{isTransitioning:!1,currentKey:null,hasAppeared:!1,oldChild:null,newChild:null}},init(e,t){t.hasAppeared=!1,t.isTransitioning=!1},render(e,t){let n=t.props,o=t.state,i=t.slots,u=i.default?i.default():null,s=Array.isArray(u)?u[0]:u;if(!s)return null;let f=s.key||"",c=o.currentKey!==null&&o.currentKey!==f;!o.hasAppeared&&n.appear&&(o.hasAppeared=!0,s.__transition_appear=!0),o.currentKey=f,c&&n.mode!=="default"&&(o.isTransitioning=!0);let y=s;return y&&typeof y=="object"&&(y.__transition={name:n.name,appear:n.appear,mode:n.mode,duration:n.duration,enterFromClass:n.enterFromClass,enterActiveClass:n.enterActiveClass,enterToClass:n.enterToClass,leaveFromClass:n.leaveFromClass,leaveActiveClass:n.leaveActiveClass,leaveToClass:n.leaveToClass,onBeforeEnter:n.onBeforeEnter,onEnter:n.onEnter,onAfterEnter:n.onAfterEnter,onEnterCancelled:n.onEnterCancelled,onBeforeLeave:n.onBeforeLeave,onLeave:n.onLeave,onAfterLeave:n.onAfterLeave,onLeaveCancelled:n.onLeaveCancelled}),y}});var w=g({name:"TransitionGroup",props:{name:{type:String,default:""},appear:{type:Boolean,default:!1},mode:{type:String,default:"default"},duration:{type:Number,default:void 0},enterFromClass:{type:String,default:void 0},enterActiveClass:{type:String,default:void 0},enterToClass:{type:String,default:void 0},leaveFromClass:{type:String,default:void 0},leaveActiveClass:{type:String,default:void 0},leaveToClass:{type:String,default:void 0},tag:{type:String,default:void 0},moveClass:{type:String,default:void 0}},state(){return{prevChildrenKeys:new Set,currentChildrenKeys:new Set,positions:[],hasAppeared:!1}},init(e,t){t.hasAppeared=!1,t.prevChildrenKeys=new Set,t.currentChildrenKeys=new Set,t.positions=[]},render(e,t){let n=t.props,o=t.state,i=t.slots,u=i.default?i.default():null,s=Array.isArray(u)?u:u!=null?[u]:[],f=new Set;for(let a=0;a<s.length;a++){let l=s[a];if(l&&typeof l=="object"){let m=l.key!==null&&l.key!==void 0?String(l.key):`__tg_${a}`;f.add(m)}}let c=new Set,y=new Set;o.prevChildrenKeys.forEach(a=>{f.has(a)||c.add(a)}),f.forEach(a=>{o.prevChildrenKeys.has(a)||y.add(a)}),o.prevChildrenKeys=new Set(f);let r=n.name||"",p=n.moveClass||(r?`${r}-move`:""),v=s.map((a,l)=>{if(!a||typeof a!="object")return a;let m=a.key!==null&&a.key!==void 0?String(a.key):`__tg_${l}`,C=y.has(m),b=c.has(m),T={...a};return T.__transition_group={name:r,appear:n.appear,duration:n.duration,enterFromClass:n.enterFromClass||(r?`${r}-enter-from`:""),enterActiveClass:n.enterActiveClass||(r?`${r}-enter-active`:""),enterToClass:n.enterToClass||(r?`${r}-enter-to`:""),leaveFromClass:n.leaveFromClass||(r?`${r}-leave-from`:""),leaveActiveClass:n.leaveActiveClass||(r?`${r}-leave-active`:""),leaveToClass:n.leaveToClass||(r?`${r}-leave-to`:""),moveClass:p,isEntering:C,isLeaving:b,onBeforeEnter:n.onBeforeEnter,onEnter:n.onEnter,onAfterEnter:n.onAfterEnter,onEnterCancelled:n.onEnterCancelled,onBeforeLeave:n.onBeforeLeave,onLeave:n.onLeave,onAfterLeave:n.onAfterLeave,onLeaveCancelled:n.onLeaveCancelled},T}),d=n.tag;return d?{tag:d,children:v,__transition_group_wrapper:!0}:v}});function H(e){return typeof e=="string"}function B(e){return e instanceof RegExp}function A(e,t){if(!t)return!1;if(H(t))return e===t;if(B(t))return t.test(e);if(Array.isArray(t)){for(let n=0;n<t.length;n++)if(A(e,t[n]))return!0;return!1}return!1}function E(e){if(e===null||typeof e!="object")return e;if(Array.isArray(e))return e.map(n=>E(n));let t={};for(let n of Object.keys(e))t[n]=E(e[n]);return t}function F(e){let t=["init","mounted","beforeUpdate","updated","beforeUnmount","unmounted"],n={};for(let o of t){let i=e[o];i&&i.length>0&&(n[o]=[...i])}return{state:E(e.state),setupState:E(e.setupState),computedRefs:e.computedRefs,subTree:e.subTree,isMounted:e.isMounted,watchStopHandles:e.watchStopHandles,lifecycleHooks:n}}function j(e,t){e.state=E(t.state),e.setupState=E(t.setupState),e.computedRefs=t.computedRefs,e.subTree=t.subTree,e.isMounted=t.isMounted,e.watchStopHandles=t.watchStopHandles;let n=["init","mounted","beforeUpdate","updated","beforeUnmount","unmounted"];for(let o of n){let i=t.lifecycleHooks[o];i&&(e[o]=[...i])}e.isUnmounted=!1}var O=g({name:"KeepAlive",props:{include:{type:[String,Array],default:void 0},exclude:{type:[String,Array],default:void 0},max:{type:Number,default:void 0}},state(){return{cache:new Map,activeKey:null}},init(e,t){t.cache=new Map,t.activeKey=null},render(e,t){let n=t.props,o=t.state,i=t.slots,u=i.default?i.default():null,s=Array.isArray(u)?u[0]:u;if(!s||typeof s!="object")return null;let f=s.name||s.type&&s.type.name||s.type&&s.type.options&&s.type.options.name||"",c=s.key!==null?String(s.key):f||"__default__",y=z(f,n),r=o.cache.get(c);if(r&&y){if(o.activeKey&&o.activeKey!==c){let p=o.cache.get(o.activeKey);p&&p.component&&(p.savedState=F(p.component),I(p.component))}return o.cache.delete(c),o.cache.set(c,r),o.activeKey=c,r.component&&r.savedState&&(j(r.component,r.savedState),r.savedState=null),r.component&&W(r.component),r.vnode}if(o.activeKey){let p=o.cache.get(o.activeKey);p&&p.component&&(p.savedState=F(p.component),I(p.component))}return s.__keepalive={cacheKey:c,shouldCache:y},o.activeKey=c,y&&(n.max&&o.cache.size>=n.max&&G(o.cache),o.cache.set(c,{vnode:s,component:null,key:c,savedState:null})),s}});function z(e,t){let{include:n,exclude:o}=t;return!(o&&A(e,o)||n&&!A(e,n))}function G(e){let t=e.keys().next().value;t!==void 0&&L(e,t)}function L(e,t){let n=e.get(t);n&&(n.component&&!n.component.isUnmounted&&I(n.component),e.delete(t))}function W(e){_(e,"activated"),e.renderProxy&&typeof e.renderProxy.onActivated=="function"&&e.renderProxy.onActivated()}function I(e){_(e,"deactivated"),e.renderProxy&&typeof e.renderProxy.onDeactivated=="function"&&e.renderProxy.onDeactivated()}function S(e){return typeof e=="function"}function V(e){if(!e||typeof e!="object")return!1;if(e.__asyncSetup||e.__suspense)return!0;let t=e.type;return!!(t&&(t.__asyncSetup||t.__suspense||t._isAsyncComponent)||t&&t.options&&S(t.options.setup)&&t.options.setup.__isAsync)}function q(e){if(!e)return null;if(e.__asyncPromise)return e.__asyncPromise;let t=e.type;return t&&t.__asyncPromise?t.__asyncPromise:e.__suspense&&e.__suspense.promise?e.__suspense.promise:null}var U=g({name:"Suspense",props:{fallback:{type:[Object,Function,Array],default:null},timeout:{type:Number,default:void 0},onPending:{type:Function,default:void 0},onResolve:{type:Function,default:void 0},onFallback:{type:Function,default:void 0}},state(){return{isPending:!1,isTimedOut:!1,isShowingFallback:!1,dependencies:new Map,timeoutId:null,mounted:!1,pendingDescendants:0}},init(e,t){t.isPending=!1,t.isTimedOut=!1,t.isShowingFallback=!1,t.dependencies=new Map,t.timeoutId=null,t.mounted=!1,t.pendingDescendants=0},render(e,t){let n=t.props,o=t.state,i=t.slots,u=i.default?i.default():null,s=Array.isArray(u)?u:u!=null?[u]:[],f=i.fallback?i.fallback():null,c=f!=null?Array.isArray(f)?f[0]:f:n.fallback,y=[],r=[];for(let d=0;d<s.length;d++){let a=s[d];V(a)?y.push(a):r.push(a)}if(y.length===0)return o.isPending&&(o.isPending=!1,o.isShowingFallback=!1,o.pendingDescendants=0,k(o,n)),s.length===1?s[0]:s;o.isPending||(o.isPending=!0,o.isTimedOut=!1,o.pendingDescendants=y.length,S(n.onPending)&&n.onPending(),n.timeout&&n.timeout>0&&(o.timeoutId=window.setTimeout(()=>{o.isPending&&(o.isTimedOut=!0,o.isShowingFallback||(o.isShowingFallback=!0,S(n.onFallback)&&n.onFallback()))},n.timeout)));let p=!0,v=[];for(let d=0;d<y.length;d++){let a=y[d],l=a.key||`__async_${d}`,m=o.dependencies.get(l);if(m&&m.isResolved){r.push(a);continue}p=!1;let C=q(a);if(C){let b=new Promise((T,N)=>{C.then(()=>{let P=o.dependencies.get(l);P&&(P.isResolved=!0),o.pendingDescendants=Math.max(0,o.pendingDescendants-1),T()}).catch(P=>{let x=o.dependencies.get(l);x&&(x.isRejected=!0,x.error=P),o.pendingDescendants=Math.max(0,o.pendingDescendants-1),N(P)})});o.dependencies.has(l)||o.dependencies.set(l,{key:l,isResolved:!1,isRejected:!1,resolve:()=>{},reject:()=>{}}),v.push(b)}}return p?(o.isPending=!1,o.isShowingFallback=!1,o.pendingDescendants=0,k(o,n),S(n.onResolve)&&n.onResolve(),s.length===1?s[0]:s):(v.length>0&&Promise.all(v).then(()=>{o.isPending=!1,o.isShowingFallback=!1,o.pendingDescendants=0,k(o,n),S(n.onResolve)&&n.onResolve(),t.renderProxy&&t.renderProxy.$forceUpdate&&t.renderProxy.$forceUpdate()}).catch(d=>{o.isPending=!1,o.isShowingFallback=!1,o.pendingDescendants=0,k(o,n)}),o.isShowingFallback=!0,S(n.onFallback)&&n.onFallback(),c!=null?c:null)}});function k(e,t){e.timeoutId!==null&&(window.clearTimeout(e.timeoutId),e.timeoutId=null),e.dependencies.forEach((n,o)=>{(n.isResolved||n.isRejected)&&e.dependencies.delete(o)})}function R(e){return typeof e=="function"}function J(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function Q(e){return e&&e._isComponentDefine?e:J(e)&&!R(e)?g(e):R(e)?e._isComponentDefine?e:g({render(t,n){return e(n.props,{slots:n.slots,emit:n.emit})}}):g({render(){return null}})}function M(e){let t;R(e)?t={loader:e}:t=e;let{loader:n,loadingComponent:o,errorComponent:i,delay:u=200,timeout:s,onError:f,suspensible:c=!0,retryCount:y=3}=t,r={status:"pending",resolvedComponent:null,error:null,isRetrying:!1,retryAttempts:0,loadingDelayId:null,timeoutId:null,loadPromise:null};function p(){if(r.loadPromise)return r.loadPromise;r.status="loading",r.isRetrying=!1;let a=n().then(l=>(r.status="resolved",r.resolvedComponent=Q(l),r.error=null,v(),r.resolvedComponent)).catch(l=>{if(r.error=l,f&&r.retryAttempts<y)return r.retryAttempts++,r.isRetrying=!0,r.loadPromise=null,f(l,()=>{p()},()=>{r.status="error",v()}),new Promise(()=>{});throw r.status="error",v(),l});return r.loadPromise=a,s&&s>0&&(r.timeoutId=window.setTimeout(()=>{(r.status==="loading"||r.status==="pending")&&(r.status="timeout",r.error=new Error(`[Lyt AsyncComponent] \u52A0\u8F7D\u8D85\u65F6 (${s}ms)`),v())},s)),a}function v(){r.loadingDelayId!==null&&(window.clearTimeout(r.loadingDelayId),r.loadingDelayId=null),r.timeoutId!==null&&(window.clearTimeout(r.timeoutId),r.timeoutId=null)}let d=g({name:"AsyncComponent",state(){return{...r}},init(a,l){Object.assign(l,r)},render(a,l){let m=l.state;if(m.status==="resolved"&&m.resolvedComponent){let C=m.resolvedComponent;return{tag:C,__asyncResolved:!0,__asyncComponent:C}}return(m.status==="error"||m.status==="timeout")&&i?{tag:i,__asyncError:!0,__asyncErrorInfo:{error:m.error,retry:()=>{r.status="pending",r.loadPromise=null,p()},isTimeout:m.status==="timeout"}}:m.status==="loading"||m.status==="pending"?c?(r.loadPromise||p(),{__suspense:!0,__asyncPromise:r.loadPromise,__asyncSetup:!0,_isAsyncComponent:!0}):(r.loadPromise||p(),o&&(u>0&&r.loadingDelayId===null&&(r.loadingDelayId=window.setTimeout(()=>{l.renderProxy&&l.renderProxy.$forceUpdate&&l.renderProxy.$forceUpdate()},u)),u<=0||r.loadingDelayId===null)?{tag:o,__asyncLoading:!0}:null):m.isRetrying&&o?{tag:o,__asyncRetrying:!0}:null}});return d._isAsyncComponent=!0,d.__asyncSetup=!0,d.__suspense=!0,d._asyncState=r,d._load=p,d._clearTimers=v,d}export{O as KeepAlive,U as Suspense,D as Transition,w as TransitionGroup,M as defineAsyncComponent};
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Lyt.js defineAsyncComponent - 异步组件定义
|
|
3
|
-
*
|
|
4
|
-
* 定义异步加载的组件,支持加载状态、错误处理、超时和重试。
|
|
5
|
-
* 可配合 Suspense 组件使用(suspensible 模式)。
|
|
6
|
-
* 纯原生实现,零外部依赖。
|
|
7
|
-
*/
|
|
8
|
-
import { type ComponentDefine } from '../define-component';
|
|
9
|
-
/** 异步组件配置选项 */
|
|
10
|
-
export interface AsyncComponentOptions {
|
|
11
|
-
/** 异步加载函数,返回 Promise<ComponentDefine | ComponentOptions> */
|
|
12
|
-
loader: () => Promise<any>;
|
|
13
|
-
/** 加载中显示的组件 */
|
|
14
|
-
loadingComponent?: any;
|
|
15
|
-
/** 加载失败显示的组件 */
|
|
16
|
-
errorComponent?: any;
|
|
17
|
-
/** 延迟显示 loading 的时间(ms),默认 200 */
|
|
18
|
-
delay?: number;
|
|
19
|
-
/** 超时时间(ms),超时后显示 errorComponent */
|
|
20
|
-
timeout?: number;
|
|
21
|
-
/** 错误回调 */
|
|
22
|
-
onError?: (error: Error, retry: () => void, fail: () => void) => void;
|
|
23
|
-
/** 是否配合 Suspense 使用,默认 true */
|
|
24
|
-
suspensible?: boolean;
|
|
25
|
-
/** 重试次数上限,默认 3 */
|
|
26
|
-
retryCount?: number;
|
|
27
|
-
}
|
|
28
|
-
/**
|
|
29
|
-
* 定义异步组件
|
|
30
|
-
*
|
|
31
|
-
* 返回一个包装组件,首次渲染时调用 loader 异步加载真实组件。
|
|
32
|
-
* 加载过程中可显示 loadingComponent,加载失败显示 errorComponent。
|
|
33
|
-
*
|
|
34
|
-
* @param options - 异步组件配置选项,或直接传入 loader 函数
|
|
35
|
-
* @returns 异步组件定义(ComponentDefine)
|
|
36
|
-
*
|
|
37
|
-
* @example
|
|
38
|
-
* ```ts
|
|
39
|
-
* // 简单用法:传入 loader 函数
|
|
40
|
-
* const AsyncComp = defineAsyncComponent(() => import('./MyComponent'));
|
|
41
|
-
*
|
|
42
|
-
* // 完整配置
|
|
43
|
-
* const AsyncComp = defineAsyncComponent({
|
|
44
|
-
* loader: () => import('./MyComponent'),
|
|
45
|
-
* loadingComponent: LoadingSpinner,
|
|
46
|
-
* errorComponent: ErrorDisplay,
|
|
47
|
-
* delay: 200, // 200ms 后才显示 loading
|
|
48
|
-
* timeout: 10000, // 10s 超时
|
|
49
|
-
* onError(error, retry, fail) {
|
|
50
|
-
* if (error.message.includes('network')) {
|
|
51
|
-
* retry(); // 网络错误时重试
|
|
52
|
-
* } else {
|
|
53
|
-
* fail(); // 其他错误直接失败
|
|
54
|
-
* }
|
|
55
|
-
* },
|
|
56
|
-
* suspensible: true, // 配合 Suspense 使用
|
|
57
|
-
* });
|
|
58
|
-
* ```
|
|
59
|
-
*/
|
|
60
|
-
export declare function defineAsyncComponent(options: AsyncComponentOptions | (() => Promise<any>)): ComponentDefine;
|
|
61
|
-
//# sourceMappingURL=async-component.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"async-component.d.ts","sourceRoot":"","sources":["../../../src/builtins/async-component.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAEL,KAAK,eAAe,EAErB,MAAM,qBAAqB,CAAC;AAM7B,eAAe;AACf,MAAM,WAAW,qBAAqB;IACpC,4DAA4D;IAE5D,MAAM,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC;IAC3B,eAAe;IAEf,gBAAgB,CAAC,EAAE,GAAG,CAAC;IACvB,gBAAgB;IAEhB,cAAc,CAAC,EAAE,GAAG,CAAC;IACrB,kCAAkC;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oCAAoC;IACpC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW;IACX,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,IAAI,EAAE,IAAI,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;IACtE,+BAA+B;IAC/B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,kBAAkB;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AA0FD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAgB,oBAAoB,CAElC,OAAO,EAAE,qBAAqB,GAAG,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,GACpD,eAAe,CAyQjB"}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Lyt.js ErrorBoundary 内置错误边界组件
|
|
3
|
-
*
|
|
4
|
-
* 捕获子组件渲染错误,显示降级 UI(fallback slot),
|
|
5
|
-
* 支持 onError 回调和错误状态管理。
|
|
6
|
-
* 支持同步和异步错误捕获、错误计数自动禁用、开发模式错误详情。
|
|
7
|
-
* 纯原生实现,零外部依赖。
|
|
8
|
-
*/
|
|
9
|
-
import { type ComponentDefine } from '../define-component';
|
|
10
|
-
/** ErrorBoundary 组件的 Props 接口 */
|
|
11
|
-
export interface ErrorBoundaryProps {
|
|
12
|
-
/** 降级 UI 内容(错误时显示) */
|
|
13
|
-
fallback?: any;
|
|
14
|
-
/** 最大错误记录数,默认 100 */
|
|
15
|
-
maxErrors?: number;
|
|
16
|
-
/** 错误回调 */
|
|
17
|
-
onError?: (error: Error, vm: any, info: string) => void;
|
|
18
|
-
/** 错误捕获回调,返回 true 阻止传播 */
|
|
19
|
-
onErrorCaptured?: (error: Error, vm: any, info: string) => boolean | void;
|
|
20
|
-
/** 错误状态变化回调 */
|
|
21
|
-
onErrorChange?: (hasError: boolean, error: Error | null) => void;
|
|
22
|
-
/** 重置回调(用户触发重置时调用) */
|
|
23
|
-
onReset?: () => void;
|
|
24
|
-
/** 自动禁用的最大错误次数,默认 Infinity(不自动禁用) */
|
|
25
|
-
maxErrorCount?: number;
|
|
26
|
-
}
|
|
27
|
-
export declare const ErrorBoundaryComponent: ComponentDefine;
|
|
28
|
-
//# sourceMappingURL=error-boundary.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"error-boundary.d.ts","sourceRoot":"","sources":["../../../src/builtins/error-boundary.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAEL,KAAK,eAAe,EACrB,MAAM,qBAAqB,CAAC;AAM7B,iCAAiC;AACjC,MAAM,WAAW,kBAAkB;IACjC,sBAAsB;IAEtB,QAAQ,CAAC,EAAE,GAAG,CAAA;IACd,qBAAqB;IACrB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,WAAW;IAEX,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACvD,0BAA0B;IAE1B,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,GAAG,IAAI,CAAA;IACzE,eAAe;IACf,aAAa,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,KAAK,IAAI,CAAA;IAChE,sBAAsB;IACtB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB,qCAAqC;IACrC,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB;AAeD,eAAO,MAAM,sBAAsB,EAAE,eA4NnC,CAAC"}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Lyt.js 内置组件 — 统一导出入口
|
|
3
|
-
*
|
|
4
|
-
* 导出所有内置组件和工具函数。
|
|
5
|
-
* 纯原生实现,零外部依赖。
|
|
6
|
-
*/
|
|
7
|
-
export { Transition, TransitionPropsKeys } from './transition';
|
|
8
|
-
export type { TransitionProps } from './transition';
|
|
9
|
-
export { TransitionGroup } from './transition-group';
|
|
10
|
-
export type { TransitionGroupProps } from './transition-group';
|
|
11
|
-
export { KeepAlive, pruneCacheEntry, pruneCache, registerKeepAliveInstance, attachCacheRef } from './keep-alive';
|
|
12
|
-
export type { KeepAliveProps } from './keep-alive';
|
|
13
|
-
export { Suspense } from './suspense';
|
|
14
|
-
export type { SuspenseProps } from './suspense';
|
|
15
|
-
export { ErrorBoundaryComponent } from './error-boundary';
|
|
16
|
-
export type { ErrorBoundaryProps } from './error-boundary';
|
|
17
|
-
export { defineAsyncComponent } from './async-component';
|
|
18
|
-
export type { AsyncComponentOptions } from './async-component';
|
|
19
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/builtins/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAC/D,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEpD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,YAAY,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE/D,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,UAAU,EAAE,yBAAyB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACjH,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEnD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,YAAY,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAE3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,YAAY,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -1,118 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Lyt.js KeepAlive 内置缓存组件
|
|
3
|
-
*
|
|
4
|
-
* 缓存组件实例,避免重复渲染和销毁。
|
|
5
|
-
* 支持 include/exclude 匹配规则和 max LRU 淘汰策略。
|
|
6
|
-
* 提供 activated/deactivated 生命周期钩子。
|
|
7
|
-
* 纯原生实现,零外部依赖。
|
|
8
|
-
*/
|
|
9
|
-
import { type ComponentDefine, type ComponentInternalInstance } from '../define-component';
|
|
10
|
-
/** KeepAlive 组件的 Props 接口 */
|
|
11
|
-
export interface KeepAliveProps {
|
|
12
|
-
/** 匹配的组件名缓存(字符串精确匹配或 RegExp 正则匹配) */
|
|
13
|
-
include?: string | RegExp | (string | RegExp)[];
|
|
14
|
-
/** 匹配的组件名不缓存 */
|
|
15
|
-
exclude?: string | RegExp | (string | RegExp)[];
|
|
16
|
-
/** 最大缓存数量,超过时使用 LRU 淘汰策略 */
|
|
17
|
-
max?: number;
|
|
18
|
-
}
|
|
19
|
-
/** 缓存条目 */
|
|
20
|
-
interface CacheEntry {
|
|
21
|
-
/** 缓存的 VNode(原始引用,非拷贝) */
|
|
22
|
-
vnode: any;
|
|
23
|
-
/** 缓存的组件实例 */
|
|
24
|
-
component: ComponentInternalInstance | null;
|
|
25
|
-
/** 缓存的 key(组件名) */
|
|
26
|
-
key: string;
|
|
27
|
-
/** 组件实例的完整状态快照(deactivate 时保存) */
|
|
28
|
-
savedState: SavedComponentState | null;
|
|
29
|
-
}
|
|
30
|
-
/** 组件实例状态快照 */
|
|
31
|
-
interface SavedComponentState {
|
|
32
|
-
/** 组件内部 state(reactive 对象的原始值) */
|
|
33
|
-
state: Record<string, any>;
|
|
34
|
-
/** 组件 setupState */
|
|
35
|
-
setupState: Record<string, any>;
|
|
36
|
-
/** 计算属性引用(@lytjs/reactivity ComputedRef) */
|
|
37
|
-
computedRefs: Record<string, {
|
|
38
|
-
value: any;
|
|
39
|
-
} | (() => any)>;
|
|
40
|
-
/** 子树 */
|
|
41
|
-
subTree: any;
|
|
42
|
-
/** 是否已挂载 */
|
|
43
|
-
isMounted: boolean;
|
|
44
|
-
/** watch 停止句柄列表 */
|
|
45
|
-
watchStopHandles: any[];
|
|
46
|
-
/** 生命周期钩子快照 */
|
|
47
|
-
lifecycleHooks: Partial<Record<string, any[]>>;
|
|
48
|
-
}
|
|
49
|
-
/**
|
|
50
|
-
* KeepAlive 内置缓存组件
|
|
51
|
-
*
|
|
52
|
-
* 缓存包裹的组件实例,切换时不会销毁组件而是移入缓存,
|
|
53
|
-
* 再次切换回来时从缓存恢复,避免重复创建和销毁。
|
|
54
|
-
*
|
|
55
|
-
* 缓存策略:
|
|
56
|
-
* - include:只有匹配的组件会被缓存
|
|
57
|
-
* - exclude:匹配的组件不会被缓存
|
|
58
|
-
* - max:最大缓存数量,使用 LRU(最近最少使用)策略淘汰
|
|
59
|
-
*
|
|
60
|
-
* 生命周期:
|
|
61
|
-
* - activated:从缓存恢复时触发
|
|
62
|
-
* - deactivated:移入缓存时触发
|
|
63
|
-
*
|
|
64
|
-
* @example
|
|
65
|
-
* ```ts
|
|
66
|
-
* // 基本用法
|
|
67
|
-
* <keep-alive>
|
|
68
|
-
* <component :is="currentComponent" />
|
|
69
|
-
* </keep-alive>
|
|
70
|
-
*
|
|
71
|
-
* // 配置 include/exclude
|
|
72
|
-
* <keep-alive include="Home" exclude="Login" :max="10">
|
|
73
|
-
* <component :is="currentComponent" />
|
|
74
|
-
* </keep-alive>
|
|
75
|
-
* ```
|
|
76
|
-
*/
|
|
77
|
-
export declare const KeepAlive: ComponentDefine;
|
|
78
|
-
/**
|
|
79
|
-
* 注册组件实例到 KeepAlive 缓存
|
|
80
|
-
*
|
|
81
|
-
* 当 KeepAlive 包裹的子组件完成挂载后,
|
|
82
|
-
* 渲染器应调用此方法将组件实例关联到对应的缓存条目。
|
|
83
|
-
*
|
|
84
|
-
* @param vnode - 子组件的 VNode
|
|
85
|
-
* @param component - 子组件的内部实例
|
|
86
|
-
*/
|
|
87
|
-
export declare function registerKeepAliveInstance(vnode: any, component: ComponentInternalInstance): void;
|
|
88
|
-
/**
|
|
89
|
-
* 将缓存 Map 引用关联到 VNode
|
|
90
|
-
*
|
|
91
|
-
* 在 KeepAlive render 时调用,使 registerKeepAliveInstance
|
|
92
|
-
* 能找到正确的缓存 Map。
|
|
93
|
-
*
|
|
94
|
-
* @param vnode - 子组件 VNode
|
|
95
|
-
* @param cache - KeepAlive 的缓存 Map
|
|
96
|
-
*/
|
|
97
|
-
export declare function attachCacheRef(vnode: any, cache: Map<string, CacheEntry>): void;
|
|
98
|
-
/**
|
|
99
|
-
* 淘汰指定缓存条目
|
|
100
|
-
*
|
|
101
|
-
* 从缓存中移除指定 key 的条目,
|
|
102
|
-
* 并触发该组件的 deactivated 钩子。
|
|
103
|
-
*
|
|
104
|
-
* @param cache - 缓存 Map
|
|
105
|
-
* @param key - 要淘汰的缓存 key
|
|
106
|
-
*/
|
|
107
|
-
export declare function pruneCacheEntry(cache: Map<string, CacheEntry>, key: string): void;
|
|
108
|
-
/**
|
|
109
|
-
* 根据 include/exclude 规则清理缓存
|
|
110
|
-
*
|
|
111
|
-
* 遍历所有缓存条目,移除不满足条件的条目。
|
|
112
|
-
*
|
|
113
|
-
* @param cache - 缓存 Map
|
|
114
|
-
* @param props - KeepAlive props
|
|
115
|
-
*/
|
|
116
|
-
export declare function pruneCache(cache: Map<string, CacheEntry>, props: KeepAliveProps): void;
|
|
117
|
-
export {};
|
|
118
|
-
//# sourceMappingURL=keep-alive.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"keep-alive.d.ts","sourceRoot":"","sources":["../../../src/builtins/keep-alive.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,yBAAyB,EAC/B,MAAM,qBAAqB,CAAC;AAa7B,6BAA6B;AAC7B,MAAM,WAAW,cAAc;IAC7B,qCAAqC;IACrC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IAChD,gBAAgB;IAChB,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IAChD,4BAA4B;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,WAAW;AACX,UAAU,UAAU;IAClB,0BAA0B;IAE1B,KAAK,EAAE,GAAG,CAAC;IACX,cAAc;IACd,SAAS,EAAE,yBAAyB,GAAG,IAAI,CAAC;IAC5C,mBAAmB;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,kCAAkC;IAClC,UAAU,EAAE,mBAAmB,GAAG,IAAI,CAAC;CACxC;AAED,eAAe;AACf,UAAU,mBAAmB;IAC3B,kCAAkC;IAElC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC3B,oBAAoB;IAEpB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAChC,4CAA4C;IAE5C,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,GAAG,CAAA;KAAE,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC3D,SAAS;IAET,OAAO,EAAE,GAAG,CAAC;IACb,YAAY;IACZ,SAAS,EAAE,OAAO,CAAC;IACnB,mBAAmB;IAEnB,gBAAgB,EAAE,GAAG,EAAE,CAAC;IACxB,eAAe;IAEf,cAAc,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;CAChD;AA+KD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,eAAO,MAAM,SAAS,EAAE,eAqItB,CAAC;AAMH;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,CAEvC,KAAK,EAAE,GAAG,EACV,SAAS,EAAE,yBAAyB,GACnC,IAAI,CAgBN;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAE5B,KAAK,EAAE,GAAG,EACV,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,GAC7B,IAAI,CAIN;AAiDD;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,EAC9B,GAAG,EAAE,MAAM,GACV,IAAI,CAWN;AAED;;;;;;;GAOG;AACH,wBAAgB,UAAU,CACxB,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,EAC9B,KAAK,EAAE,cAAc,GACpB,IAAI,CAaN"}
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Lyt.js Suspense 内置异步依赖等待组件
|
|
3
|
-
*
|
|
4
|
-
* 等待异步子组件加载完成后再显示真实内容,
|
|
5
|
-
* 加载过程中显示 fallback 占位内容。
|
|
6
|
-
* 支持多个异步子组件(全部完成后才切换),
|
|
7
|
-
* 支持超时处理和事件回调。
|
|
8
|
-
* 纯原生实现,零外部依赖。
|
|
9
|
-
*/
|
|
10
|
-
import { type ComponentDefine } from '../define-component';
|
|
11
|
-
/** Suspense 组件的 Props 接口 */
|
|
12
|
-
export interface SuspenseProps {
|
|
13
|
-
/** 异步加载时显示的占位内容 */
|
|
14
|
-
fallback?: any;
|
|
15
|
-
/** 超时时间(ms),超时后显示 fallback */
|
|
16
|
-
timeout?: number;
|
|
17
|
-
/** 等待开始回调 */
|
|
18
|
-
onPending?: () => void;
|
|
19
|
-
/** 异步组件全部加载完成回调 */
|
|
20
|
-
onResolve?: () => void;
|
|
21
|
-
/** 显示 fallback 回调 */
|
|
22
|
-
onFallback?: () => void;
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* Suspense 内置异步依赖等待组件
|
|
26
|
-
*
|
|
27
|
-
* 等待所有异步子组件加载完成后再显示真实内容。
|
|
28
|
-
* 加载过程中显示 fallback 占位内容。
|
|
29
|
-
*
|
|
30
|
-
* 工作流程:
|
|
31
|
-
* 1. 检测子组件是否为异步组件
|
|
32
|
-
* 2. 如果有异步组件,显示 fallback
|
|
33
|
-
* 3. 等待所有异步组件加载完成
|
|
34
|
-
* 4. 全部完成后切换为真实内容
|
|
35
|
-
* 5. 如果超时,显示 fallback 并触发超时处理
|
|
36
|
-
*
|
|
37
|
-
* @example
|
|
38
|
-
* ```ts
|
|
39
|
-
* // 基本用法
|
|
40
|
-
* <suspense :fallback="LoadingSpinner">
|
|
41
|
-
* <async-component />
|
|
42
|
-
* </suspense>
|
|
43
|
-
*
|
|
44
|
-
* // 带超时
|
|
45
|
-
* <suspense :fallback="LoadingSpinner" :timeout="3000" :onResolve="handleLoaded">
|
|
46
|
-
* <async-component />
|
|
47
|
-
* </suspense>
|
|
48
|
-
* ```
|
|
49
|
-
*/
|
|
50
|
-
export declare const Suspense: ComponentDefine;
|
|
51
|
-
//# sourceMappingURL=suspense.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"suspense.d.ts","sourceRoot":"","sources":["../../../src/builtins/suspense.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAEL,KAAK,eAAe,EACrB,MAAM,qBAAqB,CAAC;AAM7B,4BAA4B;AAC5B,MAAM,WAAW,aAAa;IAC5B,mBAAmB;IAEnB,QAAQ,CAAC,EAAE,GAAG,CAAC;IACf,8BAA8B;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa;IACb,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,mBAAmB;IACnB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,qBAAqB;IACrB,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;CACzB;AAqHD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,eAAO,MAAM,QAAQ,EAAE,eAmOrB,CAAC"}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Lyt.js TransitionGroup 内置列表过渡组件
|
|
3
|
-
*
|
|
4
|
-
* 继承 Transition 的所有功能,额外处理列表中元素的移动过渡(FLIP 动画技术)。
|
|
5
|
-
* 使用 getBoundingClientRect 记录元素位置,在 DOM 更新后计算位移并应用 transform 动画。
|
|
6
|
-
* 纯原生实现,零外部依赖。
|
|
7
|
-
*/
|
|
8
|
-
import { type ComponentDefine } from '../define-component';
|
|
9
|
-
import { type TransitionProps } from './transition';
|
|
10
|
-
/** TransitionGroup 组件的 Props 接口 */
|
|
11
|
-
export interface TransitionGroupProps extends TransitionProps {
|
|
12
|
-
/** 包裹标签名,默认不渲染包裹元素(Fragment) */
|
|
13
|
-
tag?: string;
|
|
14
|
-
/** 移动过渡类名 */
|
|
15
|
-
moveClass?: string;
|
|
16
|
-
}
|
|
17
|
-
/**
|
|
18
|
-
* TransitionGroup 内置列表过渡组件
|
|
19
|
-
*
|
|
20
|
-
* 处理列表中多个子元素的进入、离开和移动过渡。
|
|
21
|
-
* 继承 Transition 的 CSS 类名和 JS 钩子功能,
|
|
22
|
-
* 额外使用 FLIP 技术实现元素移动动画。
|
|
23
|
-
*
|
|
24
|
-
* @example
|
|
25
|
-
* ```ts
|
|
26
|
-
* // 列表过渡
|
|
27
|
-
* <transition-group name="list" tag="ul">
|
|
28
|
-
* <li v-for="item in items" :key="item.id">
|
|
29
|
-
* {{ item.text }}
|
|
30
|
-
* </li>
|
|
31
|
-
* </transition-group>
|
|
32
|
-
*
|
|
33
|
-
* // CSS 示例
|
|
34
|
-
* // .list-enter-active, .list-leave-active { transition: all 0.3s; }
|
|
35
|
-
* // .list-enter-from, .list-leave-to { opacity: 0; transform: translateX(30px); }
|
|
36
|
-
* // .list-move { transition: transform 0.3s; }
|
|
37
|
-
* ```
|
|
38
|
-
*/
|
|
39
|
-
export declare const TransitionGroup: ComponentDefine;
|
|
40
|
-
//# sourceMappingURL=transition-group.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"transition-group.d.ts","sourceRoot":"","sources":["../../../src/builtins/transition-group.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAEL,KAAK,eAAe,EACrB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,KAAK,eAAe,EAMrB,MAAM,cAAc,CAAC;AAMtB,mCAAmC;AACnC,MAAM,WAAW,oBAAqB,SAAQ,eAAe;IAC3D,gCAAgC;IAChC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,aAAa;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAyFD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,eAAe,EAAE,eA0I5B,CAAC"}
|
|
@@ -1,136 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"transition.d.ts","sourceRoot":"","sources":["../../../src/builtins/transition.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAEL,KAAK,eAAe,EACrB,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;IAEZ,aAAa,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,KAAK,IAAI,CAAC;IAClC,0BAA0B;IAE1B,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;IAC9C,aAAa;IAEb,YAAY,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,KAAK,IAAI,CAAC;IACjC,aAAa;IAEb,gBAAgB,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,KAAK,IAAI,CAAC;IACrC,YAAY;IAEZ,aAAa,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,KAAK,IAAI,CAAC;IAClC,0BAA0B;IAE1B,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;IAC9C,aAAa;IAEb,YAAY,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,KAAK,IAAI,CAAC;IACjC,aAAa;IAEb,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;AAqBD;;;;;;;;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,CA8ChB;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,eAyGvB,CAAC"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @lytjs/component/builtins — 内置组件子路径入口
|
|
3
|
-
*
|
|
4
|
-
* 按需导入内置组件 API:
|
|
5
|
-
* import { Transition, KeepAlive, Suspense, defineAsyncComponent } from '@lytjs/component/builtins'
|
|
6
|
-
*/
|
|
7
|
-
export { Transition, TransitionGroup, KeepAlive, Suspense, defineAsyncComponent, } from './builtins';
|
|
8
|
-
export type { TransitionProps, TransitionGroupProps, KeepAliveProps, SuspenseProps, AsyncComponentOptions, } from './builtins';
|
|
9
|
-
//# sourceMappingURL=builtins-entry.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"builtins-entry.d.ts","sourceRoot":"","sources":["../../src/builtins-entry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,UAAU,EACV,eAAe,EACf,SAAS,EACT,QAAQ,EACR,oBAAoB,GACrB,MAAM,YAAY,CAAA;AAEnB,YAAY,EACV,eAAe,EACf,oBAAoB,EACpB,cAAc,EACd,aAAa,EACb,qBAAqB,GACtB,MAAM,YAAY,CAAA"}
|
|
@@ -1,116 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
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,CAcpF;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,IAAI,GAAG,CAExC"}
|