@lytjs/component 4.0.5 → 4.2.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 ADDED
@@ -0,0 +1,288 @@
1
+ # @lytjs/component
2
+
3
+ Lyt.js 组件系统 - 提供 defineComponent、组件生命周期、插槽、内置组件等能力。
4
+
5
+ ## 安装
6
+
7
+ ```bash
8
+ npm install @lytjs/component
9
+
10
+ # 或使用 pnpm
11
+ pnpm add @lytjs/component
12
+ ```
13
+
14
+ ## 特性
15
+
16
+ - 📦 defineComponent
17
+ - 🔄 完整生命周期钩子
18
+ - 🎯 插槽系统
19
+ - 💾 KeepAlive 缓存
20
+ - ⏳ Suspense 异步
21
+ - 🎭 Teleport 传送门
22
+
23
+ ## 快速开始
24
+
25
+ ### 定义组件
26
+
27
+ ```javascript
28
+ import { defineComponent } from '@lytjs/component';
29
+
30
+ const MyComponent = defineComponent({
31
+ props: {
32
+ msg: {
33
+ type: String,
34
+ default: 'Hello'
35
+ }
36
+ },
37
+ emits: ['click'],
38
+ setup(props, { emit }) {
39
+ const handleClick = () => {
40
+ emit('click', props.msg);
41
+ };
42
+ return { handleClick };
43
+ },
44
+ template: `
45
+ <div>
46
+ <p>{{ msg }}</p>
47
+ <button @click="handleClick">Click me</button>
48
+ </div>
49
+ `
50
+ });
51
+ ```
52
+
53
+ ### 使用插槽
54
+
55
+ ```javascript
56
+ import { defineComponent } from '@lytjs/component';
57
+
58
+ const Layout = defineComponent({
59
+ template: `
60
+ <div class="layout">
61
+ <header>
62
+ <slot name="header">默认头部</slot>
63
+ </header>
64
+ <main>
65
+ <slot></slot>
66
+ </main>
67
+ <footer>
68
+ <slot name="footer"></slot>
69
+ </footer>
70
+ </div>
71
+ `
72
+ });
73
+ ```
74
+
75
+ ### 作用域插槽
76
+
77
+ ```javascript
78
+ import { defineComponent, ref } from '@lytjs/component';
79
+
80
+ const List = defineComponent({
81
+ props: ['items'],
82
+ template: `
83
+ <ul>
84
+ <li each="item in items" :key="item.id">
85
+ <slot name="item" :item="item" :index="index"></slot>
86
+ </li>
87
+ </ul>
88
+ `
89
+ });
90
+ ```
91
+
92
+ ## API 参考
93
+
94
+ ### 组件定义
95
+
96
+ | API | 说明 |
97
+ |------|------|
98
+ | `defineComponent(options)` | 定义组件 |
99
+ | `defineAsyncComponent(loader)` | 定义异步组件 |
100
+ | `resolveComponent(name)` | 解析组件 |
101
+ | `resolveDynamicComponent(component)` | 解析动态组件 |
102
+
103
+ ### 生命周期
104
+
105
+ | 钩子 | 说明 |
106
+ |------|------|
107
+ | `onBeforeMount` | 组件挂载前 |
108
+ | `onMounted` | 组件挂载后 |
109
+ | `onBeforeUpdate` | 组件更新前 |
110
+ | `onUpdated` | 组件更新后 |
111
+ | `onBeforeUnmount` | 组件卸载前 |
112
+ | `onUnmounted` | 组件卸载后 |
113
+ | `onActivated` | KeepAlive 激活时 |
114
+ | `onDeactivated` | KeepAlive 失活时 |
115
+ | `onErrorCaptured` | 捕获后代错误时 |
116
+
117
+ ### 内置组件
118
+
119
+ | 组件 | 说明 |
120
+ |------|------|
121
+ | `KeepAlive` | 缓存组件实例 |
122
+ | `Teleport` | 传送门 |
123
+ | `Transition` | 过渡动画 |
124
+ | `TransitionGroup` | 列表过渡 |
125
+ | `Suspense` | 异步依赖 |
126
+
127
+ ## 内置组件使用
128
+
129
+ ### KeepAlive
130
+
131
+ ```javascript
132
+ import { defineComponent, KeepAlive } from '@lytjs/component';
133
+
134
+ const App = defineComponent({
135
+ template: `
136
+ <KeepAlive :include="['Home,About">
137
+ <component :is="currentComponent"></component>
138
+ </KeepAlive>
139
+ `
140
+ });
141
+ ```
142
+
143
+ ### Teleport
144
+
145
+ ```javascript
146
+ import { defineComponent, Teleport } from '@lytjs/component';
147
+
148
+ const Modal = defineComponent({
149
+ props: ['show'],
150
+ template: `
151
+ <Teleport to="body">
152
+ <div v-if="show" class="modal">
153
+ <slot></slot>
154
+ </div>
155
+ </Teleport>
156
+ `
157
+ });
158
+ ```
159
+
160
+ ### Transition
161
+
162
+ ```javascript
163
+ import { defineComponent, Transition } from '@lytjs/component';
164
+
165
+ const App = defineComponent({
166
+ template: `
167
+ <Transition name="fade" mode="out-in">
168
+ <div v-if="show">Hello</div>
169
+ </Transition>
170
+ `
171
+ });
172
+ ```
173
+
174
+ ### Suspense
175
+
176
+ ```javascript
177
+ import { defineComponent, Suspense, defineAsyncComponent } from '@lytjs/component';
178
+
179
+ const AsyncComponent = defineAsyncComponent(() =>
180
+ import('./HeavyComponent.vue')
181
+ );
182
+
183
+ const App = defineComponent({
184
+ template: `
185
+ <Suspense>
186
+ <template #default>
187
+ <AsyncComponent />
188
+ </template>
189
+ <template #fallback>
190
+ <div>Loading...</div>
191
+ </template>
192
+ </Suspense>
193
+ `
194
+ });
195
+ ```
196
+
197
+ ## 示例
198
+
199
+ ### 完整组件示例
200
+
201
+ ```javascript
202
+ import { defineComponent, ref, computed } from '@lytjs/component';
203
+
204
+ const Counter = defineComponent({
205
+ props: {
206
+ initial: {
207
+ type: Number,
208
+ default: 0
209
+ }
210
+ },
211
+ emits: ['update:count'],
212
+ setup(props, { emit }) {
213
+ const count = ref(props.initial);
214
+
215
+ const doubled = computed(() => count.value * 2);
216
+
217
+ function increment() {
218
+ count.value++;
219
+ emit('update:count', count.value);
220
+ }
221
+
222
+ return { count, doubled, increment };
223
+ },
224
+ template: `
225
+ <div class="counter">
226
+ <p>Count: {{ count }}</p>
227
+ <p>Doubled: {{ doubled }}</p>
228
+ <button @click="increment">+1</button>
229
+ </div>
230
+ `
231
+ });
232
+ ```
233
+
234
+ ### 使用插槽示例
235
+
236
+ ```javascript
237
+ import { defineComponent } from '@lytjs/component';
238
+
239
+ const Card = defineComponent({
240
+ template: `
241
+ <div class="card">
242
+ <div class="card-header">
243
+ <slot name="header"></slot>
244
+ </div>
245
+ <div class="card-body">
246
+ <slot></slot>
247
+ </div>
248
+ <div class="card-footer">
249
+ <slot name="footer"></slot>
250
+ </div>
251
+ </div>
252
+ `
253
+ });
254
+
255
+ // 使用
256
+ const App = defineComponent({
257
+ components: { Card },
258
+ template: `
259
+ <Card>
260
+ <template #header>
261
+ <h2>标题</h2>
262
+ </template>
263
+ <p>内容</p>
264
+ <template #footer>
265
+ <button>确定</button>
266
+ </template>
267
+ </Card>
268
+ `
269
+ });
270
+ ```
271
+
272
+ ## 性能
273
+
274
+ - 体积:3.55 KB (ESM gzip)
275
+ - 零运行时依赖
276
+ - 高效的组件实例管理
277
+
278
+ ## 兼容性
279
+
280
+ - Node.js >= 18.0.0
281
+ - Chrome 64+
282
+ - Firefox 63+
283
+ - Safari 12+
284
+ - Edge 79+
285
+
286
+ ## License
287
+
288
+ MIT
package/dist/index.cjs CHANGED
@@ -1 +1 @@
1
- var j=Object.defineProperty;var be=Object.getOwnPropertyDescriptor;var xe=Object.getOwnPropertyNames;var ke=Object.prototype.hasOwnProperty;var Oe=(e,t)=>{for(var n in t)j(e,n,{get:t[n],enumerable:!0})},Pe=(e,t,n,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of xe(t))!ke.call(e,r)&&r!==n&&j(e,r,{get:()=>t[r],enumerable:!(o=be(t,r))||o.enumerable});return e};var Ce=e=>Pe(j({},"__esModule",{value:!0}),e);var Fe={};Oe(Fe,{LifecycleHook:()=>w,callLifecycleHook:()=>m,camelizeToHyphen:()=>C,compositionOnBeforeMount:()=>pe,compositionOnBeforeUnmount:()=>ae,compositionOnMounted:()=>ie,compositionOnUnmounted:()=>se,compositionOnUpdated:()=>le,createComponentInstance:()=>de,createLifecycleHook:()=>g,createSignalState:()=>N,createSignalStateProxy:()=>U,currentInstance:()=>h,defineComponent:()=>ye,disposeSignalState:()=>G,emit:()=>L,getCurrentInstance:()=>fe,getPropDefaultValue:()=>A,getSignalStateSnapshot:()=>Z,hasSlot:()=>re,hyphenToCamel:()=>J,initProps:()=>P,initSlots:()=>F,inject:()=>ce,mountComponent:()=>ge,normalizeEmits:()=>H,normalizePropsOptions:()=>T,normalizeSlotValue:()=>k,onBeforeUnmount:()=>te,onBeforeUpdate:()=>Y,onInit:()=>Q,onMounted:()=>X,onUnmounted:()=>ne,onUpdated:()=>ee,patchSignalState:()=>R,provide:()=>ue,renderSlot:()=>oe,runSetup:()=>v,setCurrentInstance:()=>E,setupComponent:()=>me,setupFunctionComponent:()=>K,setupStatefulComponent:()=>V,unmountComponent:()=>W,updateComponent:()=>Se,validateProp:()=>_});module.exports=Ce(Fe);var S=require("@lytjs/reactivity"),M=require("@lytjs/reactivity/signal");var q=require("@lytjs/reactivity/signal");function N(e){let t={},n=Object.keys(e);for(let o=0;o<n.length;o++){let r=n[o];t[r]=(0,q.signal)(e[r])}return t}function b(e){return typeof e=="function"&&e!==null&&"set"in e}function U(e){return new Proxy(e,{get(t,n){if(typeof n=="symbol")return t[n];let o=t[n];return b(o)?o():t[n]},set(t,n,o){if(typeof n=="symbol")return t[n]=o,!0;let r=t[n];return b(r)?r.set(o):t[n]=o,!0},has(t,n){return n in t},ownKeys(t){return Object.keys(t)},getOwnPropertyDescriptor(t,n){if(typeof n=="string"&&n in t)return{configurable:!0,enumerable:!0,get:()=>{let o=t[n];return b(o)?o():o},set:o=>{let r=t[n];b(r)?r.set(o):t[n]=o}}}})}function Z(e){let t={},n=Object.keys(e);for(let o=0;o<n.length;o++){let r=n[o],l=e[r];t[r]=b(l)?l():l}return t}function R(e,t){let n=Object.keys(t);for(let o=0;o<n.length;o++){let r=n[o],l=e[r];b(l)&&l.set(t[r])}}function G(e){}function he(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function D(e){return typeof e=="function"}function Ee(e){return typeof e=="string"}function Ie(e){return typeof e=="boolean"}function Ne(e){return typeof e=="number"&&!isNaN(e)}function x(e){return Array.isArray(e)}function Ue(e){return e!==null&&typeof e=="object"}function Re(e){return e===String?"String":e===Number?"Number":e===Boolean?"Boolean":e===Array?"Array":e===Object?"Object":e===Function?"Function":"unknown"}function T(e){if(!e)return{options:{},keys:[]};if(x(e)){let r={},l=[];for(let i=0;i<e.length;i++){let s=e[i];r[s]={type:null},l.push(s)}return{options:r,keys:l}}let t={},n=[],o=Object.keys(e);for(let r=0;r<o.length;r++){let l=o[r],i=e[l];i==null?t[l]={type:null}:i===String||i===Number||i===Boolean||i===Array||i===Object||i===Function?t[l]={type:i}:he(i)?t[l]={...i}:x(i)?t[l]={type:i}:t[l]={type:null},n.push(l)}return{options:t,keys:n}}function _(e,t,n){let{type:o,required:r,validator:l}=t;if(n==null)return!r;if(o!=null){let i=x(o)?o:[o],s=!1;for(let p=0;p<i.length;p++){let a=i[p],u=!1;if(a===String?u=Ee(n):a===Number?u=Ne(n):a===Boolean?u=Ie(n):a===Function?u=D(n):a===Array?u=x(n):a===Object&&(u=Ue(n)),u){s=!0;break}}if(!s){let p=i.map(Re).join(" | ");return!1}}if(l&&D(l))try{if(!l(n))return!1}catch(i){return!1}return!0}function A(e,t){let{default:n}=e;if(n!==void 0){if(D(n)){let o=e.type;if(!(o===Function||x(o)&&o.indexOf(Function)!==-1))return n()}return n}}function P(e,t){let{options:n,keys:o}=e.propsOptions,r={};for(let l=0;l<o.length;l++){let i=o[l],s=n[i],p=t?t[i]:void 0;p===void 0&&(p=A(s,i)),s.type!==null&&s.type!==void 0&&(x(s.type)?s.type:[s.type]).indexOf(Boolean)!==-1&&p===void 0&&(p=!1),_(i,s,p),r[i]=p}return e.props=r,r}function C(e){return e.replace(/([A-Z])/g,"-$1").toLowerCase()}function J(e){return e.replace(/-(\w)/g,(t,n)=>n.toUpperCase())}function $(e){return typeof e=="function"}function Te(e){return Array.isArray(e)}function H(e){if(!e)return{keys:[],validators:{}};let t=[],n={};if(Te(e)){for(let r=0;r<e.length;r++){let l=C(e[r]);t.push(l),n[l]=null}return{keys:t,validators:n}}let o=Object.keys(e);for(let r=0;r<o.length;r++){let l=o[r],i=C(l),s=e[l];t.push(i),$(s)?n[i]=s:n[i]=null}return{keys:t,validators:n}}function L(e,t,...n){let o=C(t),r=e.emitsOptions;if(r&&r.keys.length>0){let a=r.keys.indexOf(o)!==-1,u=r.validators[o];if($(u))try{if(!u(...n))return!1}catch(y){return!1}}let l="on"+o.charAt(0).toUpperCase()+o.slice(1),i=l.replace(/-([a-z])/g,(a,u)=>u.toUpperCase()),s=e.props||{},p=s[i]||s[l];return $(p)?(p(...n),!0):!1}var w=(i=>(i.INIT="init",i.MOUNTED="mounted",i.BEFORE_UPDATE="beforeUpdate",i.UPDATED="updated",i.BEFORE_UNMOUNT="beforeUnmount",i.UNMOUNTED="unmounted",i))(w||{}),h=null;function He(e){return typeof e=="function"}function E(e){let t=h;return h=e,t}function g(e){return function(n,o){if(!He(n))return;let r=o||h;r&&(r[e]||(r[e]=[]),r[e].push(n))}}function m(e,t,...n){let o=e[t];if(!(!o||o.length===0))for(let r=0;r<o.length;r++)try{o[r](...n)}catch(l){}}var Q=g("init"),X=g("mounted"),Y=g("beforeUpdate"),ee=g("updated"),te=g("beforeUnmount"),ne=g("unmounted");function z(e){return typeof e=="function"}function Le(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function k(e){return e==null?null:z(e)?e:Array.isArray(e)?e.length>0?e:null:e}function F(e,t){let n={};if(t==null)return e.slots=n,n;if(z(t)||Array.isArray(t))return n.default=k(t),e.slots=n,n;if(Le(t)){let o=Object.keys(t);for(let r=0;r<o.length;r++){let l=o[r],i=t[l];i!==void 0&&(n[l]=k(i))}return e.slots=n,n}return n.default=k(t),e.slots=n,n}function oe(e,t="default",n){let o=e[t];return o==null?null:z(o)?o(n):o}function re(e,t="default"){let n=e[t];return n!=null}var c=null;function ie(e){if(c){let t=c._lifecycleHooks||(c._lifecycleHooks={});(t.mounted||(t.mounted=[])).push(e)}}function se(e){if(c){let t=c._lifecycleHooks||(c._lifecycleHooks={});(t.unmounted||(t.unmounted=[])).push(e)}}function le(e){if(c){let t=c._lifecycleHooks||(c._lifecycleHooks={});(t.updated||(t.updated=[])).push(e)}}function pe(e){if(c){let t=c._lifecycleHooks||(c._lifecycleHooks={});(t.beforeMount||(t.beforeMount=[])).push(e)}}function ae(e){if(c){let t=c._lifecycleHooks||(c._lifecycleHooks={});(t.beforeUnmount||(t.beforeUnmount=[])).push(e)}}var B=new WeakMap;function ue(e,t){if(c){let n=B.get(c);n||(n=new Map,B.set(c,n)),n.set(e,t)}}function ce(e,t){if(c){let n=c;for(;n;){let o=B.get(n);if(o&&o.has(e))return o.get(e);n=n._parent}}return t}function v(e,t,n,o){c=t;try{return e(n,o)}finally{c=null}}function fe(){return c}var f=require("@lytjs/common");function ye(e){return{name:e.name,options:e,_isComponentDefine:!0}}function de(e){let t=e.options,n=T(t.props),o=H(t.emits),r={_isComponent:!0,type:t,name:e.name||t.name,propsOptions:n,emitsOptions:o,props:{},state:{},setupState:{},computedRefs:{},subTree:null,isMounted:!1,isUnmounted:!1,slots:{},watchStopHandles:[],renderProxy:null,emit:null};return r.emit=(l,...i)=>L(r,l,...i),r.renderProxy=we(r),r}function we(e){return{get $name(){return e.name},get $props(){return e.props},get $state(){return e.state},get $slots(){return e.slots},get $isMounted(){return e.isMounted},$emit:e.emit,$forceUpdate(){e.update&&e.update()},$unmount(){W(e)},$setState(n){e._signalState?R(e._signalState,n):(0,f.mergeObjects)(e.state,n),e.update&&e.update()}}}function me(e,t,n){P(e,t||null),F(e,n||null);let o=e.type;(0,f.isFunction)(o)&&!o._isComponentDefine?K(e):V(e)}function V(e){let{type:t}=e,n=t.reactivityMode==="signal",o=E(e);try{if((0,f.isFunction)(t.setup)){let i={attrs:e.props,slots:e.slots,emit:e.emit},s=v(t.setup,e,e.props,i);if((0,f.isFunction)(s))t.render=s;else if((0,f.isPlainObject)(s)){e.setupState={...s};let p=Object.keys(s);for(let a=0;a<p.length;a++)Object.defineProperty(e.renderProxy,p[a],{get(){return e.setupState[p[a]]},set(u){e.setupState[p[a]]=u},enumerable:!0})}}if((0,f.isFunction)(t.state)){let i=t.state();if((0,f.isPlainObject)(i))if(n){let s=N(i);e._signalState=s,e.state=U(s)}else e.state=(0,S.shallowReactive)({...i})}if(t.computed){let i=Object.keys(t.computed);for(let s=0;s<i.length;s++){let p=i[s],a=t.computed[p],u=typeof a=="function"?()=>a.call(e.renderProxy):()=>a.get.call(e.renderProxy),y=typeof a=="function"?void 0:O=>a.set.call(e.renderProxy,O),d;n?d=(0,M.computed)(u):y?d=(0,S.computed)({get:u,set:y}):d=(0,S.computed)(u),e.computedRefs[p]=d}}let r=t.methods;if((0,f.isPlainObject)(r)){let i=Object.keys(r);for(let s=0;s<i.length;s++){let p=i[s],a=r[p];(0,f.isFunction)(a)&&(e.renderProxy[p]=a.bind(e.renderProxy))}}if((0,f.isFunction)(t.init)){let i=t.init.call(e.renderProxy,e.props,e.state);if((0,f.isPlainObject)(i)){e.setupState={...e.setupState,...i};let s=Object.keys(i);for(let p=0;p<s.length;p++)Object.defineProperty(e.renderProxy,s[p],{get(){return e.setupState[s[p]]},set(a){e.setupState[s[p]]=a},enumerable:!0})}}let l=Object.keys(e.state);for(let i=0;i<l.length;i++){let s=l[i];Object.defineProperty(e.renderProxy,s,{get(){return e.state[s]},set(p){e.state[s]=p},enumerable:!0})}if(t.computed){let i=Object.keys(t.computed);for(let s=0;s<i.length;s++){let p=i[s],a=e.computedRefs[p];n?Object.defineProperty(e.renderProxy,p,{get(){return a()},enumerable:!0}):Object.defineProperty(e.renderProxy,p,{get(){return a.value},set(u){a.value=u},enumerable:!0})}}if(t.watch){let i=Object.keys(t.watch);for(let s=0;s<i.length;s++){let p=i[s],a=t.watch[p],u=()=>{let y=e.state[p];if(y!==void 0)return y;let d=e.props[p];return d!==void 0?d:e.renderProxy[p]};if(n){let y=(0,M.effect)(d=>{let O=u();a.handler.call(e.renderProxy,O,void 0)});e.watchStopHandles.push(y)}else{let y=(0,S.watch)(u,(d,O)=>{a.handler.call(e.renderProxy,d,O)},{immediate:!!a.immediate,deep:!!a.deep});e.watchStopHandles.push(y)}}}m(e,"init")}finally{E(o)}}function K(e){let t=e.type,n={slots:e.slots,emit:e.emit},o=t(e.props,n);e.subTree=o}function I(e,t){let n=e._lifecycleHooks;if(!n||!n[t])return;let o=n[t];for(let r=0;r<o.length;r++)try{o[r]()}catch(l){}}function ge(e,t){if(e.isMounted)return;I(e,"beforeMount");let{type:n}=e;(0,f.isFunction)(n.render)&&t&&(e.subTree=n.render.call(e.renderProxy,t,e)),e.isMounted=!0,m(e,"mounted"),I(e,"mounted")}function Se(e,t,n){if(e.isUnmounted)return;n&&P(e,n),m(e,"beforeUpdate");let{type:o}=e;(0,f.isFunction)(o.render)&&t&&(e.subTree=o.render.call(e.renderProxy,t,e)),m(e,"updated"),I(e,"updated")}function W(e){if(e.isUnmounted)return;m(e,"beforeUnmount"),I(e,"beforeUnmount"),e.isUnmounted=!0,e.isMounted=!1,e.subTree=null;for(let n of e.watchStopHandles)n();e.watchStopHandles=[],m(e,"unmounted"),I(e,"unmounted");let t=["init","mounted","beforeUpdate","updated","beforeUnmount","unmounted"];for(let n=0;n<t.length;n++)e[t[n]]=void 0;e._lifecycleHooks=void 0}
1
+ var j=Object.defineProperty;var ke=Object.getOwnPropertyDescriptor;var Oe=Object.getOwnPropertyNames;var Pe=Object.prototype.hasOwnProperty;var Ce=(e,t)=>{for(var n in t)j(e,n,{get:t[n],enumerable:!0})},he=(e,t,n,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of Oe(t))!Pe.call(e,r)&&r!==n&&j(e,r,{get:()=>t[r],enumerable:!(o=ke(t,r))||o.enumerable});return e};var Ee=e=>he(j({},"__esModule",{value:!0}),e);var Me={};Ce(Me,{LifecycleHook:()=>v,callLifecycleHook:()=>m,camelizeToHyphen:()=>C,compositionOnBeforeMount:()=>pe,compositionOnBeforeUnmount:()=>ue,compositionOnMounted:()=>se,compositionOnUnmounted:()=>le,compositionOnUpdated:()=>ae,createComponentInstance:()=>ge,createLifecycleHook:()=>g,createSignalState:()=>N,createSignalStateProxy:()=>U,currentInstance:()=>h,defineComponent:()=>de,defineEmits:()=>J,defineFunctionalComponent:()=>me,disposeSignalState:()=>G,emit:()=>L,getCurrentInstance:()=>ye,getPropDefaultValue:()=>_,getSignalStateSnapshot:()=>Z,hasSlot:()=>ie,hyphenToCamel:()=>Q,initProps:()=>P,initSlots:()=>F,inject:()=>fe,mountComponent:()=>xe,normalizeEmits:()=>H,normalizePropsOptions:()=>T,normalizeSlotValue:()=>k,onBeforeUnmount:()=>ne,onBeforeUpdate:()=>ee,onInit:()=>X,onMounted:()=>Y,onUnmounted:()=>oe,onUpdated:()=>te,patchSignalState:()=>R,provide:()=>ce,renderSlot:()=>re,runSetup:()=>w,setCurrentInstance:()=>E,setupComponent:()=>Se,setupFunctionComponent:()=>K,setupStatefulComponent:()=>V,unmountComponent:()=>W,updateComponent:()=>be,validateProp:()=>A});module.exports=Ee(Me);var S=require("@lytjs/reactivity"),M=require("@lytjs/reactivity/signal");var q=require("@lytjs/reactivity/signal");function N(e){let t={},n=Object.keys(e);for(let o=0;o<n.length;o++){let r=n[o];t[r]=(0,q.signal)(e[r])}return t}function x(e){return typeof e=="function"&&e!==null&&"set"in e}function U(e){return new Proxy(e,{get(t,n){if(typeof n=="symbol")return t[n];let o=t[n];return x(o)?o():t[n]},set(t,n,o){if(typeof n=="symbol")return t[n]=o,!0;let r=t[n];return x(r)?r.set(o):t[n]=o,!0},has(t,n){return n in t},ownKeys(t){return Object.keys(t)},getOwnPropertyDescriptor(t,n){if(typeof n=="string"&&n in t)return{configurable:!0,enumerable:!0,get:()=>{let o=t[n];return x(o)?o():o},set:o=>{let r=t[n];x(r)?r.set(o):t[n]=o}}}})}function Z(e){let t={},n=Object.keys(e);for(let o=0;o<n.length;o++){let r=n[o],l=e[r];t[r]=x(l)?l():l}return t}function R(e,t){let n=Object.keys(t);for(let o=0;o<n.length;o++){let r=n[o],l=e[r];x(l)&&l.set(t[r])}}function G(e){}function Ie(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function D(e){return typeof e=="function"}function Ne(e){return typeof e=="string"}function Ue(e){return typeof e=="boolean"}function Re(e){return typeof e=="number"&&!isNaN(e)}function b(e){return Array.isArray(e)}function Te(e){return e!==null&&typeof e=="object"}function He(e){return e===String?"String":e===Number?"Number":e===Boolean?"Boolean":e===Array?"Array":e===Object?"Object":e===Function?"Function":"unknown"}function T(e){if(!e)return{options:{},keys:[]};if(b(e)){let r={},l=[];for(let i=0;i<e.length;i++){let s=e[i];r[s]={type:null},l.push(s)}return{options:r,keys:l}}let t={},n=[],o=Object.keys(e);for(let r=0;r<o.length;r++){let l=o[r],i=e[l];i==null?t[l]={type:null}:i===String||i===Number||i===Boolean||i===Array||i===Object||i===Function?t[l]={type:i}:Ie(i)?t[l]={...i}:b(i)?t[l]={type:i}:t[l]={type:null},n.push(l)}return{options:t,keys:n}}function A(e,t,n){let{type:o,required:r,validator:l}=t;if(n==null)return!r;if(o!=null){let i=b(o)?o:[o],s=!1;for(let a=0;a<i.length;a++){let p=i[a],u=!1;if(p===String?u=Ne(n):p===Number?u=Re(n):p===Boolean?u=Ue(n):p===Function?u=D(n):p===Array?u=b(n):p===Object&&(u=Te(n)),u){s=!0;break}}if(!s){let a=i.map(He).join(" | ");return!1}}if(l&&D(l))try{if(!l(n))return!1}catch(i){return!1}return!0}function _(e,t){let{default:n}=e;if(n!==void 0){if(D(n)){let o=e.type;if(!(o===Function||b(o)&&o.indexOf(Function)!==-1))return n()}return n}}function P(e,t){let{options:n,keys:o}=e.propsOptions,r={};for(let l=0;l<o.length;l++){let i=o[l],s=n[i],a=t?t[i]:void 0;a===void 0&&(a=_(s,i)),s.type!==null&&s.type!==void 0&&(b(s.type)?s.type:[s.type]).indexOf(Boolean)!==-1&&a===void 0&&(a=!1),A(i,s,a),r[i]=a}return e.props=r,r}function J(e){return e}function C(e){return e.replace(/([A-Z])/g,"-$1").toLowerCase()}function Q(e){return e.replace(/-(\w)/g,(t,n)=>n.toUpperCase())}function $(e){return typeof e=="function"}function Le(e){return Array.isArray(e)}function H(e){if(!e)return{keys:[],validators:{}};let t=[],n={};if(Le(e)){for(let r=0;r<e.length;r++){let l=C(e[r]);t.push(l),n[l]=null}return{keys:t,validators:n}}let o=Object.keys(e);for(let r=0;r<o.length;r++){let l=o[r],i=C(l),s=e[l];t.push(i),$(s)?n[i]=s:n[i]=null}return{keys:t,validators:n}}function L(e,t,...n){let o=C(t),r=e.emitsOptions;if(r&&r.keys.length>0){let p=r.keys.indexOf(o)!==-1,u=r.validators[o];if($(u))try{if(!u(...n))return!1}catch(y){return!1}}let l="on"+o.charAt(0).toUpperCase()+o.slice(1),i=l.replace(/-([a-z])/g,(p,u)=>u.toUpperCase()),s=e.props||{},a=s[i]||s[l];return $(a)?(a(...n),!0):!1}var v=(i=>(i.INIT="init",i.MOUNTED="mounted",i.BEFORE_UPDATE="beforeUpdate",i.UPDATED="updated",i.BEFORE_UNMOUNT="beforeUnmount",i.UNMOUNTED="unmounted",i))(v||{}),h=null;function ve(e){return typeof e=="function"}function E(e){let t=h;return h=e,t}function g(e){return function(n,o){if(!ve(n))return;let r=o||h;r&&(r[e]||(r[e]=[]),r[e].push(n))}}function m(e,t,...n){let o=e[t];if(!(!o||o.length===0))for(let r=0;r<o.length;r++)try{o[r](...n)}catch(l){}}var X=g("init"),Y=g("mounted"),ee=g("beforeUpdate"),te=g("updated"),ne=g("beforeUnmount"),oe=g("unmounted");function z(e){return typeof e=="function"}function Fe(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function k(e){return e==null?null:z(e)?e:Array.isArray(e)?e.length>0?e:null:e}function F(e,t){let n={};if(t==null)return e.slots=n,n;if(z(t)||Array.isArray(t))return n.default=k(t),e.slots=n,n;if(Fe(t)){let o=Object.keys(t);for(let r=0;r<o.length;r++){let l=o[r],i=t[l];i!==void 0&&(n[l]=k(i))}return e.slots=n,n}return n.default=k(t),e.slots=n,n}function re(e,t="default",n){let o=e[t];return o==null?null:z(o)?o(n):o}function ie(e,t="default"){let n=e[t];return n!=null}var c=null;function se(e){if(c){let t=c._lifecycleHooks||(c._lifecycleHooks={});(t.mounted||(t.mounted=[])).push(e)}}function le(e){if(c){let t=c._lifecycleHooks||(c._lifecycleHooks={});(t.unmounted||(t.unmounted=[])).push(e)}}function ae(e){if(c){let t=c._lifecycleHooks||(c._lifecycleHooks={});(t.updated||(t.updated=[])).push(e)}}function pe(e){if(c){let t=c._lifecycleHooks||(c._lifecycleHooks={});(t.beforeMount||(t.beforeMount=[])).push(e)}}function ue(e){if(c){let t=c._lifecycleHooks||(c._lifecycleHooks={});(t.beforeUnmount||(t.beforeUnmount=[])).push(e)}}var B=new WeakMap;function ce(e,t){if(c){let n=B.get(c);n||(n=new Map,B.set(c,n)),n.set(e,t)}}function fe(e,t){if(c){let n=c;for(;n;){let o=B.get(n);if(o&&o.has(e))return o.get(e);n=n._parent}}return t}function w(e,t,n,o){c=t;try{return e(n,o)}finally{c=null}}function ye(){return c}var f=require("@lytjs/common");function de(e){return{name:e.name,options:e,_isComponentDefine:!0}}function me(e){return{options:e,_isComponentDefine:!0}}function ge(e){let t=e.options,n=T(t.props),o=H(t.emits),r={_isComponent:!0,type:t,name:e.name||t.name,propsOptions:n,emitsOptions:o,props:{},state:{},setupState:{},computedRefs:{},subTree:null,isMounted:!1,isUnmounted:!1,slots:{},watchStopHandles:[],renderProxy:null,emit:null};return r.emit=(l,...i)=>L(r,l,...i),r.renderProxy=we(r),r}function we(e){return{get $name(){return e.name},get $props(){return e.props},get $state(){return e.state},get $slots(){return e.slots},get $isMounted(){return e.isMounted},$emit:e.emit,$forceUpdate(){e.update&&e.update()},$unmount(){W(e)},$setState(n){e._signalState?R(e._signalState,n):(0,f.mergeObjects)(e.state,n),e.update&&e.update()}}}function Se(e,t,n){P(e,t||null),F(e,n||null);let o=e.type;(0,f.isFunction)(o)&&!o._isComponentDefine?K(e):V(e)}function V(e){let{type:t}=e,n=t.reactivityMode==="signal",o=E(e);try{if((0,f.isFunction)(t.setup)){let i={attrs:e.props,slots:e.slots,emit:e.emit},s=w(t.setup,e,e.props,i);if((0,f.isFunction)(s))t.render=s;else if((0,f.isPlainObject)(s)){e.setupState={...s};let a=Object.keys(s);for(let p=0;p<a.length;p++)Object.defineProperty(e.renderProxy,a[p],{get(){return e.setupState[a[p]]},set(u){e.setupState[a[p]]=u},enumerable:!0})}}if((0,f.isFunction)(t.state)){let i=t.state();if((0,f.isPlainObject)(i))if(n){let s=N(i);e._signalState=s,e.state=U(s)}else e.state=(0,S.shallowReactive)({...i})}if(t.computed){let i=Object.keys(t.computed);for(let s=0;s<i.length;s++){let a=i[s],p=t.computed[a],u=typeof p=="function"?()=>p.call(e.renderProxy):()=>p.get.call(e.renderProxy),y=typeof p=="function"?void 0:O=>p.set.call(e.renderProxy,O),d;n?d=(0,M.computed)(u):y?d=(0,S.computed)({get:u,set:y}):d=(0,S.computed)(u),e.computedRefs[a]=d}}let r=t.methods;if((0,f.isPlainObject)(r)){let i=Object.keys(r);for(let s=0;s<i.length;s++){let a=i[s],p=r[a];(0,f.isFunction)(p)&&(e.renderProxy[a]=p.bind(e.renderProxy))}}if((0,f.isFunction)(t.init)){let i=t.init.call(e.renderProxy,e.props,e.state);if((0,f.isPlainObject)(i)){e.setupState={...e.setupState,...i};let s=Object.keys(i);for(let a=0;a<s.length;a++)Object.defineProperty(e.renderProxy,s[a],{get(){return e.setupState[s[a]]},set(p){e.setupState[s[a]]=p},enumerable:!0})}}let l=Object.keys(e.state);for(let i=0;i<l.length;i++){let s=l[i];Object.defineProperty(e.renderProxy,s,{get(){return e.state[s]},set(a){e.state[s]=a},enumerable:!0})}if(t.computed){let i=Object.keys(t.computed);for(let s=0;s<i.length;s++){let a=i[s],p=e.computedRefs[a];n?Object.defineProperty(e.renderProxy,a,{get(){return p()},enumerable:!0}):Object.defineProperty(e.renderProxy,a,{get(){return p.value},set(u){p.value=u},enumerable:!0})}}if(t.watch){let i=Object.keys(t.watch);for(let s=0;s<i.length;s++){let a=i[s],p=t.watch[a],u=()=>{let y=e.state[a];if(y!==void 0)return y;let d=e.props[a];return d!==void 0?d:e.renderProxy[a]};if(n){let y=(0,M.effect)(d=>{let O=u();p.handler.call(e.renderProxy,O,void 0)});e.watchStopHandles.push(y)}else{let y=(0,S.watch)(u,(d,O)=>{p.handler.call(e.renderProxy,d,O)},{immediate:!!p.immediate,deep:!!p.deep});e.watchStopHandles.push(y)}}}m(e,"init")}finally{E(o)}}function K(e){let t=e.type,n={slots:e.slots,emit:e.emit},o=t(e.props,n);e.subTree=o}function I(e,t){let n=e._lifecycleHooks;if(!n||!n[t])return;let o=n[t];for(let r=0;r<o.length;r++)try{o[r]()}catch(l){}}function xe(e,t){if(e.isMounted)return;I(e,"beforeMount");let{type:n}=e;(0,f.isFunction)(n.render)&&t&&(e.subTree=n.render.call(e.renderProxy,t,e)),e.isMounted=!0,m(e,"mounted"),I(e,"mounted")}function be(e,t,n){if(e.isUnmounted)return;n&&P(e,n),m(e,"beforeUpdate");let{type:o}=e;(0,f.isFunction)(o.render)&&t&&(e.subTree=o.render.call(e.renderProxy,t,e)),m(e,"updated"),I(e,"updated")}function W(e){if(e.isUnmounted)return;m(e,"beforeUnmount"),I(e,"beforeUnmount"),e.isUnmounted=!0,e.isMounted=!1,e.subTree=null;for(let n of e.watchStopHandles)n();e.watchStopHandles=[],m(e,"unmounted"),I(e,"unmounted");let t=["init","mounted","beforeUpdate","updated","beforeUnmount","unmounted"];for(let n=0;n<t.length;n++)e[t[n]]=void 0;e._lifecycleHooks=void 0}
package/dist/index.mjs CHANGED
@@ -1 +1 @@
1
- import{shallowReactive as Oe,computed as z,watch as Pe}from"@lytjs/reactivity";import{computed as Ce,effect as he}from"@lytjs/reactivity/signal";import{signal as W}from"@lytjs/reactivity/signal";function N(e){let n={},t=Object.keys(e);for(let o=0;o<t.length;o++){let i=t[o];n[i]=W(e[i])}return n}function S(e){return typeof e=="function"&&e!==null&&"set"in e}function U(e){return new Proxy(e,{get(n,t){if(typeof t=="symbol")return n[t];let o=n[t];return S(o)?o():n[t]},set(n,t,o){if(typeof t=="symbol")return n[t]=o,!0;let i=n[t];return S(i)?i.set(o):n[t]=o,!0},has(n,t){return t in n},ownKeys(n){return Object.keys(n)},getOwnPropertyDescriptor(n,t){if(typeof t=="string"&&t in n)return{configurable:!0,enumerable:!0,get:()=>{let o=n[t];return S(o)?o():o},set:o=>{let i=n[t];S(i)?i.set(o):n[t]=o}}}})}function q(e){let n={},t=Object.keys(e);for(let o=0;o<t.length;o++){let i=t[o],l=e[i];n[i]=S(l)?l():l}return n}function R(e,n){let t=Object.keys(n);for(let o=0;o<t.length;o++){let i=t[o],l=e[i];S(l)&&l.set(n[i])}}function Z(e){}function G(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function T(e){return typeof e=="function"}function J(e){return typeof e=="string"}function Q(e){return typeof e=="boolean"}function X(e){return typeof e=="number"&&!isNaN(e)}function b(e){return Array.isArray(e)}function Y(e){return e!==null&&typeof e=="object"}function ee(e){return e===String?"String":e===Number?"Number":e===Boolean?"Boolean":e===Array?"Array":e===Object?"Object":e===Function?"Function":"unknown"}function H(e){if(!e)return{options:{},keys:[]};if(b(e)){let i={},l=[];for(let r=0;r<e.length;r++){let s=e[r];i[s]={type:null},l.push(s)}return{options:i,keys:l}}let n={},t=[],o=Object.keys(e);for(let i=0;i<o.length;i++){let l=o[i],r=e[l];r==null?n[l]={type:null}:r===String||r===Number||r===Boolean||r===Array||r===Object||r===Function?n[l]={type:r}:G(r)?n[l]={...r}:b(r)?n[l]={type:r}:n[l]={type:null},t.push(l)}return{options:n,keys:t}}function A(e,n,t){let{type:o,required:i,validator:l}=n;if(t==null)return!i;if(o!=null){let r=b(o)?o:[o],s=!1;for(let p=0;p<r.length;p++){let a=r[p],u=!1;if(a===String?u=J(t):a===Number?u=X(t):a===Boolean?u=Q(t):a===Function?u=T(t):a===Array?u=b(t):a===Object&&(u=Y(t)),u){s=!0;break}}if(!s){let p=r.map(ee).join(" | ");return!1}}if(l&&T(l))try{if(!l(t))return!1}catch(r){return!1}return!0}function $(e,n){let{default:t}=e;if(t!==void 0){if(T(t)){let o=e.type;if(!(o===Function||b(o)&&o.indexOf(Function)!==-1))return t()}return t}}function P(e,n){let{options:t,keys:o}=e.propsOptions,i={};for(let l=0;l<o.length;l++){let r=o[l],s=t[r],p=n?n[r]:void 0;p===void 0&&(p=$(s,r)),s.type!==null&&s.type!==void 0&&(b(s.type)?s.type:[s.type]).indexOf(Boolean)!==-1&&p===void 0&&(p=!1),A(r,s,p),i[r]=p}return e.props=i,i}function C(e){return e.replace(/([A-Z])/g,"-$1").toLowerCase()}function te(e){return e.replace(/-(\w)/g,(n,t)=>t.toUpperCase())}function L(e){return typeof e=="function"}function ne(e){return Array.isArray(e)}function w(e){if(!e)return{keys:[],validators:{}};let n=[],t={};if(ne(e)){for(let i=0;i<e.length;i++){let l=C(e[i]);n.push(l),t[l]=null}return{keys:n,validators:t}}let o=Object.keys(e);for(let i=0;i<o.length;i++){let l=o[i],r=C(l),s=e[l];n.push(r),L(s)?t[r]=s:t[r]=null}return{keys:n,validators:t}}function F(e,n,...t){let o=C(n),i=e.emitsOptions;if(i&&i.keys.length>0){let a=i.keys.indexOf(o)!==-1,u=i.validators[o];if(L(u))try{if(!u(...t))return!1}catch(f){return!1}}let l="on"+o.charAt(0).toUpperCase()+o.slice(1),r=l.replace(/-([a-z])/g,(a,u)=>u.toUpperCase()),s=e.props||{},p=s[r]||s[l];return L(p)?(p(...t),!0):!1}var v=(r=>(r.INIT="init",r.MOUNTED="mounted",r.BEFORE_UPDATE="beforeUpdate",r.UPDATED="updated",r.BEFORE_UNMOUNT="beforeUnmount",r.UNMOUNTED="unmounted",r))(v||{}),h=null;function oe(e){return typeof e=="function"}function E(e){let n=h;return h=e,n}function g(e){return function(t,o){if(!oe(t))return;let i=o||h;i&&(i[e]||(i[e]=[]),i[e].push(t))}}function d(e,n,...t){let o=e[n];if(!(!o||o.length===0))for(let i=0;i<o.length;i++)try{o[i](...t)}catch(l){}}var re=g("init"),ie=g("mounted"),se=g("beforeUpdate"),le=g("updated"),pe=g("beforeUnmount"),ae=g("unmounted");function M(e){return typeof e=="function"}function ue(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function k(e){return e==null?null:M(e)?e:Array.isArray(e)?e.length>0?e:null:e}function j(e,n){let t={};if(n==null)return e.slots=t,t;if(M(n)||Array.isArray(n))return t.default=k(n),e.slots=t,t;if(ue(n)){let o=Object.keys(n);for(let i=0;i<o.length;i++){let l=o[i],r=n[l];r!==void 0&&(t[l]=k(r))}return e.slots=t,t}return t.default=k(n),e.slots=t,t}function ce(e,n="default",t){let o=e[n];return o==null?null:M(o)?o(t):o}function fe(e,n="default"){let t=e[n];return t!=null}var c=null;function ye(e){if(c){let n=c._lifecycleHooks||(c._lifecycleHooks={});(n.mounted||(n.mounted=[])).push(e)}}function de(e){if(c){let n=c._lifecycleHooks||(c._lifecycleHooks={});(n.unmounted||(n.unmounted=[])).push(e)}}function me(e){if(c){let n=c._lifecycleHooks||(c._lifecycleHooks={});(n.updated||(n.updated=[])).push(e)}}function ge(e){if(c){let n=c._lifecycleHooks||(c._lifecycleHooks={});(n.beforeMount||(n.beforeMount=[])).push(e)}}function Se(e){if(c){let n=c._lifecycleHooks||(c._lifecycleHooks={});(n.beforeUnmount||(n.beforeUnmount=[])).push(e)}}var D=new WeakMap;function be(e,n){if(c){let t=D.get(c);t||(t=new Map,D.set(c,t)),t.set(e,n)}}function xe(e,n){if(c){let t=c;for(;t;){let o=D.get(t);if(o&&o.has(e))return o.get(e);t=t._parent}}return n}function _(e,n,t,o){c=n;try{return e(t,o)}finally{c=null}}function ke(){return c}import{isFunction as m,isPlainObject as I,mergeObjects as Ee}from"@lytjs/common";function Ie(e){return{name:e.name,options:e,_isComponentDefine:!0}}function Ne(e){let n=e.options,t=H(n.props),o=w(n.emits),i={_isComponent:!0,type:n,name:e.name||n.name,propsOptions:t,emitsOptions:o,props:{},state:{},setupState:{},computedRefs:{},subTree:null,isMounted:!1,isUnmounted:!1,slots:{},watchStopHandles:[],renderProxy:null,emit:null};return i.emit=(l,...r)=>F(i,l,...r),i.renderProxy=Ue(i),i}function Ue(e){return{get $name(){return e.name},get $props(){return e.props},get $state(){return e.state},get $slots(){return e.slots},get $isMounted(){return e.isMounted},$emit:e.emit,$forceUpdate(){e.update&&e.update()},$unmount(){K(e)},$setState(t){e._signalState?R(e._signalState,t):Ee(e.state,t),e.update&&e.update()}}}function Re(e,n,t){P(e,n||null),j(e,t||null);let o=e.type;m(o)&&!o._isComponentDefine?V(e):B(e)}function B(e){let{type:n}=e,t=n.reactivityMode==="signal",o=E(e);try{if(m(n.setup)){let r={attrs:e.props,slots:e.slots,emit:e.emit},s=_(n.setup,e,e.props,r);if(m(s))n.render=s;else if(I(s)){e.setupState={...s};let p=Object.keys(s);for(let a=0;a<p.length;a++)Object.defineProperty(e.renderProxy,p[a],{get(){return e.setupState[p[a]]},set(u){e.setupState[p[a]]=u},enumerable:!0})}}if(m(n.state)){let r=n.state();if(I(r))if(t){let s=N(r);e._signalState=s,e.state=U(s)}else e.state=Oe({...r})}if(n.computed){let r=Object.keys(n.computed);for(let s=0;s<r.length;s++){let p=r[s],a=n.computed[p],u=typeof a=="function"?()=>a.call(e.renderProxy):()=>a.get.call(e.renderProxy),f=typeof a=="function"?void 0:x=>a.set.call(e.renderProxy,x),y;t?y=Ce(u):f?y=z({get:u,set:f}):y=z(u),e.computedRefs[p]=y}}let i=n.methods;if(I(i)){let r=Object.keys(i);for(let s=0;s<r.length;s++){let p=r[s],a=i[p];m(a)&&(e.renderProxy[p]=a.bind(e.renderProxy))}}if(m(n.init)){let r=n.init.call(e.renderProxy,e.props,e.state);if(I(r)){e.setupState={...e.setupState,...r};let s=Object.keys(r);for(let p=0;p<s.length;p++)Object.defineProperty(e.renderProxy,s[p],{get(){return e.setupState[s[p]]},set(a){e.setupState[s[p]]=a},enumerable:!0})}}let l=Object.keys(e.state);for(let r=0;r<l.length;r++){let s=l[r];Object.defineProperty(e.renderProxy,s,{get(){return e.state[s]},set(p){e.state[s]=p},enumerable:!0})}if(n.computed){let r=Object.keys(n.computed);for(let s=0;s<r.length;s++){let p=r[s],a=e.computedRefs[p];t?Object.defineProperty(e.renderProxy,p,{get(){return a()},enumerable:!0}):Object.defineProperty(e.renderProxy,p,{get(){return a.value},set(u){a.value=u},enumerable:!0})}}if(n.watch){let r=Object.keys(n.watch);for(let s=0;s<r.length;s++){let p=r[s],a=n.watch[p],u=()=>{let f=e.state[p];if(f!==void 0)return f;let y=e.props[p];return y!==void 0?y:e.renderProxy[p]};if(t){let f=he(y=>{let x=u();a.handler.call(e.renderProxy,x,void 0)});e.watchStopHandles.push(f)}else{let f=Pe(u,(y,x)=>{a.handler.call(e.renderProxy,y,x)},{immediate:!!a.immediate,deep:!!a.deep});e.watchStopHandles.push(f)}}}d(e,"init")}finally{E(o)}}function V(e){let n=e.type,t={slots:e.slots,emit:e.emit},o=n(e.props,t);e.subTree=o}function O(e,n){let t=e._lifecycleHooks;if(!t||!t[n])return;let o=t[n];for(let i=0;i<o.length;i++)try{o[i]()}catch(l){}}function Te(e,n){if(e.isMounted)return;O(e,"beforeMount");let{type:t}=e;m(t.render)&&n&&(e.subTree=t.render.call(e.renderProxy,n,e)),e.isMounted=!0,d(e,"mounted"),O(e,"mounted")}function He(e,n,t){if(e.isUnmounted)return;t&&P(e,t),d(e,"beforeUpdate");let{type:o}=e;m(o.render)&&n&&(e.subTree=o.render.call(e.renderProxy,n,e)),d(e,"updated"),O(e,"updated")}function K(e){if(e.isUnmounted)return;d(e,"beforeUnmount"),O(e,"beforeUnmount"),e.isUnmounted=!0,e.isMounted=!1,e.subTree=null;for(let t of e.watchStopHandles)t();e.watchStopHandles=[],d(e,"unmounted"),O(e,"unmounted");let n=["init","mounted","beforeUpdate","updated","beforeUnmount","unmounted"];for(let t=0;t<n.length;t++)e[n[t]]=void 0;e._lifecycleHooks=void 0}export{v as LifecycleHook,d as callLifecycleHook,C as camelizeToHyphen,ge as compositionOnBeforeMount,Se as compositionOnBeforeUnmount,ye as compositionOnMounted,de as compositionOnUnmounted,me as compositionOnUpdated,Ne as createComponentInstance,g as createLifecycleHook,N as createSignalState,U as createSignalStateProxy,h as currentInstance,Ie as defineComponent,Z as disposeSignalState,F as emit,ke as getCurrentInstance,$ as getPropDefaultValue,q as getSignalStateSnapshot,fe as hasSlot,te as hyphenToCamel,P as initProps,j as initSlots,xe as inject,Te as mountComponent,w as normalizeEmits,H as normalizePropsOptions,k as normalizeSlotValue,pe as onBeforeUnmount,se as onBeforeUpdate,re as onInit,ie as onMounted,ae as onUnmounted,le as onUpdated,R as patchSignalState,be as provide,ce as renderSlot,_ as runSetup,E as setCurrentInstance,Re as setupComponent,V as setupFunctionComponent,B as setupStatefulComponent,K as unmountComponent,He as updateComponent,A as validateProp};
1
+ import{shallowReactive as Pe,computed as z,watch as Ce}from"@lytjs/reactivity";import{computed as he,effect as Ee}from"@lytjs/reactivity/signal";import{signal as W}from"@lytjs/reactivity/signal";function N(e){let n={},t=Object.keys(e);for(let o=0;o<t.length;o++){let i=t[o];n[i]=W(e[i])}return n}function S(e){return typeof e=="function"&&e!==null&&"set"in e}function U(e){return new Proxy(e,{get(n,t){if(typeof t=="symbol")return n[t];let o=n[t];return S(o)?o():n[t]},set(n,t,o){if(typeof t=="symbol")return n[t]=o,!0;let i=n[t];return S(i)?i.set(o):n[t]=o,!0},has(n,t){return t in n},ownKeys(n){return Object.keys(n)},getOwnPropertyDescriptor(n,t){if(typeof t=="string"&&t in n)return{configurable:!0,enumerable:!0,get:()=>{let o=n[t];return S(o)?o():o},set:o=>{let i=n[t];S(i)?i.set(o):n[t]=o}}}})}function q(e){let n={},t=Object.keys(e);for(let o=0;o<t.length;o++){let i=t[o],l=e[i];n[i]=S(l)?l():l}return n}function R(e,n){let t=Object.keys(n);for(let o=0;o<t.length;o++){let i=t[o],l=e[i];S(l)&&l.set(n[i])}}function Z(e){}function G(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function T(e){return typeof e=="function"}function J(e){return typeof e=="string"}function Q(e){return typeof e=="boolean"}function X(e){return typeof e=="number"&&!isNaN(e)}function x(e){return Array.isArray(e)}function Y(e){return e!==null&&typeof e=="object"}function ee(e){return e===String?"String":e===Number?"Number":e===Boolean?"Boolean":e===Array?"Array":e===Object?"Object":e===Function?"Function":"unknown"}function H(e){if(!e)return{options:{},keys:[]};if(x(e)){let i={},l=[];for(let r=0;r<e.length;r++){let s=e[r];i[s]={type:null},l.push(s)}return{options:i,keys:l}}let n={},t=[],o=Object.keys(e);for(let i=0;i<o.length;i++){let l=o[i],r=e[l];r==null?n[l]={type:null}:r===String||r===Number||r===Boolean||r===Array||r===Object||r===Function?n[l]={type:r}:G(r)?n[l]={...r}:x(r)?n[l]={type:r}:n[l]={type:null},t.push(l)}return{options:n,keys:t}}function _(e,n,t){let{type:o,required:i,validator:l}=n;if(t==null)return!i;if(o!=null){let r=x(o)?o:[o],s=!1;for(let a=0;a<r.length;a++){let p=r[a],u=!1;if(p===String?u=J(t):p===Number?u=X(t):p===Boolean?u=Q(t):p===Function?u=T(t):p===Array?u=x(t):p===Object&&(u=Y(t)),u){s=!0;break}}if(!s){let a=r.map(ee).join(" | ");return!1}}if(l&&T(l))try{if(!l(t))return!1}catch(r){return!1}return!0}function $(e,n){let{default:t}=e;if(t!==void 0){if(T(t)){let o=e.type;if(!(o===Function||x(o)&&o.indexOf(Function)!==-1))return t()}return t}}function P(e,n){let{options:t,keys:o}=e.propsOptions,i={};for(let l=0;l<o.length;l++){let r=o[l],s=t[r],a=n?n[r]:void 0;a===void 0&&(a=$(s,r)),s.type!==null&&s.type!==void 0&&(x(s.type)?s.type:[s.type]).indexOf(Boolean)!==-1&&a===void 0&&(a=!1),_(r,s,a),i[r]=a}return e.props=i,i}function te(e){return e}function C(e){return e.replace(/([A-Z])/g,"-$1").toLowerCase()}function ne(e){return e.replace(/-(\w)/g,(n,t)=>t.toUpperCase())}function L(e){return typeof e=="function"}function oe(e){return Array.isArray(e)}function v(e){if(!e)return{keys:[],validators:{}};let n=[],t={};if(oe(e)){for(let i=0;i<e.length;i++){let l=C(e[i]);n.push(l),t[l]=null}return{keys:n,validators:t}}let o=Object.keys(e);for(let i=0;i<o.length;i++){let l=o[i],r=C(l),s=e[l];n.push(r),L(s)?t[r]=s:t[r]=null}return{keys:n,validators:t}}function F(e,n,...t){let o=C(n),i=e.emitsOptions;if(i&&i.keys.length>0){let p=i.keys.indexOf(o)!==-1,u=i.validators[o];if(L(u))try{if(!u(...t))return!1}catch(f){return!1}}let l="on"+o.charAt(0).toUpperCase()+o.slice(1),r=l.replace(/-([a-z])/g,(p,u)=>u.toUpperCase()),s=e.props||{},a=s[r]||s[l];return L(a)?(a(...t),!0):!1}var w=(r=>(r.INIT="init",r.MOUNTED="mounted",r.BEFORE_UPDATE="beforeUpdate",r.UPDATED="updated",r.BEFORE_UNMOUNT="beforeUnmount",r.UNMOUNTED="unmounted",r))(w||{}),h=null;function re(e){return typeof e=="function"}function E(e){let n=h;return h=e,n}function g(e){return function(t,o){if(!re(t))return;let i=o||h;i&&(i[e]||(i[e]=[]),i[e].push(t))}}function d(e,n,...t){let o=e[n];if(!(!o||o.length===0))for(let i=0;i<o.length;i++)try{o[i](...t)}catch(l){}}var ie=g("init"),se=g("mounted"),le=g("beforeUpdate"),ae=g("updated"),pe=g("beforeUnmount"),ue=g("unmounted");function M(e){return typeof e=="function"}function ce(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function k(e){return e==null?null:M(e)?e:Array.isArray(e)?e.length>0?e:null:e}function j(e,n){let t={};if(n==null)return e.slots=t,t;if(M(n)||Array.isArray(n))return t.default=k(n),e.slots=t,t;if(ce(n)){let o=Object.keys(n);for(let i=0;i<o.length;i++){let l=o[i],r=n[l];r!==void 0&&(t[l]=k(r))}return e.slots=t,t}return t.default=k(n),e.slots=t,t}function fe(e,n="default",t){let o=e[n];return o==null?null:M(o)?o(t):o}function ye(e,n="default"){let t=e[n];return t!=null}var c=null;function de(e){if(c){let n=c._lifecycleHooks||(c._lifecycleHooks={});(n.mounted||(n.mounted=[])).push(e)}}function me(e){if(c){let n=c._lifecycleHooks||(c._lifecycleHooks={});(n.unmounted||(n.unmounted=[])).push(e)}}function ge(e){if(c){let n=c._lifecycleHooks||(c._lifecycleHooks={});(n.updated||(n.updated=[])).push(e)}}function Se(e){if(c){let n=c._lifecycleHooks||(c._lifecycleHooks={});(n.beforeMount||(n.beforeMount=[])).push(e)}}function xe(e){if(c){let n=c._lifecycleHooks||(c._lifecycleHooks={});(n.beforeUnmount||(n.beforeUnmount=[])).push(e)}}var D=new WeakMap;function be(e,n){if(c){let t=D.get(c);t||(t=new Map,D.set(c,t)),t.set(e,n)}}function ke(e,n){if(c){let t=c;for(;t;){let o=D.get(t);if(o&&o.has(e))return o.get(e);t=t._parent}}return n}function A(e,n,t,o){c=n;try{return e(t,o)}finally{c=null}}function Oe(){return c}import{isFunction as m,isPlainObject as I,mergeObjects as Ie}from"@lytjs/common";function Ne(e){return{name:e.name,options:e,_isComponentDefine:!0}}function Ue(e){return{options:e,_isComponentDefine:!0}}function Re(e){let n=e.options,t=H(n.props),o=v(n.emits),i={_isComponent:!0,type:n,name:e.name||n.name,propsOptions:t,emitsOptions:o,props:{},state:{},setupState:{},computedRefs:{},subTree:null,isMounted:!1,isUnmounted:!1,slots:{},watchStopHandles:[],renderProxy:null,emit:null};return i.emit=(l,...r)=>F(i,l,...r),i.renderProxy=Te(i),i}function Te(e){return{get $name(){return e.name},get $props(){return e.props},get $state(){return e.state},get $slots(){return e.slots},get $isMounted(){return e.isMounted},$emit:e.emit,$forceUpdate(){e.update&&e.update()},$unmount(){K(e)},$setState(t){e._signalState?R(e._signalState,t):Ie(e.state,t),e.update&&e.update()}}}function He(e,n,t){P(e,n||null),j(e,t||null);let o=e.type;m(o)&&!o._isComponentDefine?V(e):B(e)}function B(e){let{type:n}=e,t=n.reactivityMode==="signal",o=E(e);try{if(m(n.setup)){let r={attrs:e.props,slots:e.slots,emit:e.emit},s=A(n.setup,e,e.props,r);if(m(s))n.render=s;else if(I(s)){e.setupState={...s};let a=Object.keys(s);for(let p=0;p<a.length;p++)Object.defineProperty(e.renderProxy,a[p],{get(){return e.setupState[a[p]]},set(u){e.setupState[a[p]]=u},enumerable:!0})}}if(m(n.state)){let r=n.state();if(I(r))if(t){let s=N(r);e._signalState=s,e.state=U(s)}else e.state=Pe({...r})}if(n.computed){let r=Object.keys(n.computed);for(let s=0;s<r.length;s++){let a=r[s],p=n.computed[a],u=typeof p=="function"?()=>p.call(e.renderProxy):()=>p.get.call(e.renderProxy),f=typeof p=="function"?void 0:b=>p.set.call(e.renderProxy,b),y;t?y=he(u):f?y=z({get:u,set:f}):y=z(u),e.computedRefs[a]=y}}let i=n.methods;if(I(i)){let r=Object.keys(i);for(let s=0;s<r.length;s++){let a=r[s],p=i[a];m(p)&&(e.renderProxy[a]=p.bind(e.renderProxy))}}if(m(n.init)){let r=n.init.call(e.renderProxy,e.props,e.state);if(I(r)){e.setupState={...e.setupState,...r};let s=Object.keys(r);for(let a=0;a<s.length;a++)Object.defineProperty(e.renderProxy,s[a],{get(){return e.setupState[s[a]]},set(p){e.setupState[s[a]]=p},enumerable:!0})}}let l=Object.keys(e.state);for(let r=0;r<l.length;r++){let s=l[r];Object.defineProperty(e.renderProxy,s,{get(){return e.state[s]},set(a){e.state[s]=a},enumerable:!0})}if(n.computed){let r=Object.keys(n.computed);for(let s=0;s<r.length;s++){let a=r[s],p=e.computedRefs[a];t?Object.defineProperty(e.renderProxy,a,{get(){return p()},enumerable:!0}):Object.defineProperty(e.renderProxy,a,{get(){return p.value},set(u){p.value=u},enumerable:!0})}}if(n.watch){let r=Object.keys(n.watch);for(let s=0;s<r.length;s++){let a=r[s],p=n.watch[a],u=()=>{let f=e.state[a];if(f!==void 0)return f;let y=e.props[a];return y!==void 0?y:e.renderProxy[a]};if(t){let f=Ee(y=>{let b=u();p.handler.call(e.renderProxy,b,void 0)});e.watchStopHandles.push(f)}else{let f=Ce(u,(y,b)=>{p.handler.call(e.renderProxy,y,b)},{immediate:!!p.immediate,deep:!!p.deep});e.watchStopHandles.push(f)}}}d(e,"init")}finally{E(o)}}function V(e){let n=e.type,t={slots:e.slots,emit:e.emit},o=n(e.props,t);e.subTree=o}function O(e,n){let t=e._lifecycleHooks;if(!t||!t[n])return;let o=t[n];for(let i=0;i<o.length;i++)try{o[i]()}catch(l){}}function Le(e,n){if(e.isMounted)return;O(e,"beforeMount");let{type:t}=e;m(t.render)&&n&&(e.subTree=t.render.call(e.renderProxy,n,e)),e.isMounted=!0,d(e,"mounted"),O(e,"mounted")}function ve(e,n,t){if(e.isUnmounted)return;t&&P(e,t),d(e,"beforeUpdate");let{type:o}=e;m(o.render)&&n&&(e.subTree=o.render.call(e.renderProxy,n,e)),d(e,"updated"),O(e,"updated")}function K(e){if(e.isUnmounted)return;d(e,"beforeUnmount"),O(e,"beforeUnmount"),e.isUnmounted=!0,e.isMounted=!1,e.subTree=null;for(let t of e.watchStopHandles)t();e.watchStopHandles=[],d(e,"unmounted"),O(e,"unmounted");let n=["init","mounted","beforeUpdate","updated","beforeUnmount","unmounted"];for(let t=0;t<n.length;t++)e[n[t]]=void 0;e._lifecycleHooks=void 0}export{w as LifecycleHook,d as callLifecycleHook,C as camelizeToHyphen,Se as compositionOnBeforeMount,xe as compositionOnBeforeUnmount,de as compositionOnMounted,me as compositionOnUnmounted,ge as compositionOnUpdated,Re as createComponentInstance,g as createLifecycleHook,N as createSignalState,U as createSignalStateProxy,h as currentInstance,Ne as defineComponent,te as defineEmits,Ue as defineFunctionalComponent,Z as disposeSignalState,F as emit,Oe as getCurrentInstance,$ as getPropDefaultValue,q as getSignalStateSnapshot,ye as hasSlot,ne as hyphenToCamel,P as initProps,j as initSlots,ke as inject,Le as mountComponent,v as normalizeEmits,H as normalizePropsOptions,k as normalizeSlotValue,pe as onBeforeUnmount,le as onBeforeUpdate,ie as onInit,se as onMounted,ue as onUnmounted,ae as onUpdated,R as patchSignalState,be as provide,fe as renderSlot,A as runSetup,E as setCurrentInstance,He as setupComponent,V as setupFunctionComponent,B as setupStatefulComponent,K as unmountComponent,ve as updateComponent,_ as validateProp};
@@ -11,7 +11,6 @@ import { type NormalizedProps, type PropOptions, type PropType } from './props';
11
11
  import { type NormalizedEmitsOptions, type EmitsOptions } from './emit';
12
12
  import { type LifecycleInstance } from './lifecycle';
13
13
  import { type Slots, type SlotChildren } from './slots';
14
- import { type SetupFunction } from './composition-api';
15
14
  /** 组件渲染函数类型 */
16
15
  export type RenderFunction = (h: CreateElement, instance: ComponentInternalInstance) => any;
17
16
  /** 简易 createElement 函数类型 */
@@ -38,7 +37,7 @@ export interface WatchOptions {
38
37
  }
39
38
  /** 响应式模式 */
40
39
  export type ReactivityMode = 'proxy' | 'signal';
41
- /** 组件选项(选项式 API) */
40
+ /** 组件选项类型(保持向后兼容) */
42
41
  export interface ComponentOptions {
43
42
  /** 组件名称 */
44
43
  name?: string;
@@ -59,7 +58,11 @@ export interface ComponentOptions {
59
58
  /** 初始化函数(setup 阶段调用) */
60
59
  init?: (this: ComponentPublicInstance, props: Record<string, any>, state: Record<string, any>) => void | Record<string, any>;
61
60
  /** Composition API setup 函数 */
62
- setup?: SetupFunction;
61
+ setup?: (props: Record<string, any>, ctx: {
62
+ attrs: Record<string, any>;
63
+ slots: Slots;
64
+ emit: (event: string, ...args: any[]) => void;
65
+ }) => any;
63
66
  /** Emits 声明 */
64
67
  emits?: EmitsOptions;
65
68
  /** 默认插槽内容(由父组件传入) */
@@ -69,14 +72,14 @@ export interface ComponentOptions {
69
72
  /** 组件样式字符串 */
70
73
  styles?: string;
71
74
  }
72
- /** 函数组件类型 */
75
+ /** 函数组件类型(保持简单,向后兼容) */
73
76
  export type FunctionalComponent = (props: Record<string, any>, context: {
74
77
  slots: Slots;
75
- emit: EmitFunction;
78
+ emit: (event: string, ...args: any[]) => void;
76
79
  }) => any;
77
80
  /** emit 函数类型 */
78
81
  export type EmitFunction = (event: string, ...args: any[]) => boolean;
79
- /** 组件公共实例(对外暴露给用户的接口) */
82
+ /** 组件公共实例(保持简单,向后兼容) */
80
83
  export interface ComponentPublicInstance {
81
84
  /** 组件名称 */
82
85
  $name?: string;
@@ -96,6 +99,8 @@ export interface ComponentPublicInstance {
96
99
  $unmount: () => void;
97
100
  /** 设置状态 */
98
101
  $setState: (partial: Record<string, any>) => void;
102
+ /** 允许访问其他属性 */
103
+ [key: string]: any;
99
104
  }
100
105
  /** 组件内部实例(框架内部使用) */
101
106
  export interface ComponentInternalInstance extends LifecycleInstance {
@@ -140,7 +145,7 @@ export interface ComponentInternalInstance extends LifecycleInstance {
140
145
  /** Composition API 生命周期钩子 */
141
146
  _lifecycleHooks?: Record<string, Function[]>;
142
147
  }
143
- /** defineComponent 的返回类型 */
148
+ /** defineComponent 的返回类型(保持简单,向后兼容) */
144
149
  export interface ComponentDefine {
145
150
  /** 组件名称 */
146
151
  name?: string;
@@ -156,44 +161,51 @@ export interface ComponentDefine {
156
161
  *
157
162
  * 接收组件选项对象,返回标准化的组件定义。
158
163
  * 支持的选项:
159
- * - name: 组件名称
160
- * - props: 属性声明(数组或对象形式)
161
- * - state: 响应式数据工厂函数
162
- * - computed: 计算属性
163
- * - watch: 侦听器
164
- * - methods: 方法
165
- * - template: 模板字符串
166
- * - render: 渲染函数
167
- * - init: 初始化函数
168
- * - emits: 事件声明
169
- * - slots: 默认插槽
164
+ * - name: 组件名称
165
+ * - props: 属性声明(数组或对象形式)
166
+ * - state: 响应式数据工厂函数
167
+ * - computed: 计算属性
168
+ * - watch: 侦听器
169
+ * - methods: 方法
170
+ * - template: 模板字符串
171
+ * - render: 渲染函数
172
+ * - init: 初始化函数
173
+ * - emits: 事件声明
174
+ * - slots: 默认插槽
170
175
  *
171
176
  * @param options - 组件选项
172
177
  * @returns 组件定义对象
173
178
  *
174
179
  * @example
175
- * ```ts
176
- * const MyComponent = defineComponent({
177
- * name: 'MyComponent',
178
- * props: {
179
- * title: { type: String, default: 'Hello' },
180
- * count: { type: Number, required: true }
181
- * },
182
- * state() {
183
- * return { inner: 0 };
184
- * },
185
- * methods: {
186
- * increment() {
187
- * this.$setState({ inner: this.$state.inner + 1 });
180
+ * ```ts
181
+ * const MyComponent = defineComponent({
182
+ * name: 'MyComponent',
183
+ * props: {
184
+ * title: { type: String, default: 'Hello' },
185
+ * count: { type: Number, required: true }
186
+ * },
187
+ * state() {
188
+ * return { inner: 0 };
189
+ * },
190
+ * methods: {
191
+ * increment() {
192
+ * this.$setState({ inner: this.$state.inner + 1 });
193
+ * }
194
+ * },
195
+ * init(props, state) {
196
+ * console.log('组件初始化', props.title);
188
197
  * }
189
- * },
190
- * init(props, state) {
191
- * console.log('组件初始化', props.title);
192
- * }
193
- * });
194
- * ```
198
+ * });
199
+ * ```
195
200
  */
196
201
  export declare function defineComponent(options: ComponentOptions): ComponentDefine;
202
+ /**
203
+ * 定义函数组件
204
+ *
205
+ * @param fn - 函数组件
206
+ * @returns 组件定义对象
207
+ */
208
+ export declare function defineFunctionalComponent(fn: FunctionalComponent): ComponentDefine;
197
209
  /**
198
210
  * 创建组件内部实例
199
211
  *
@@ -1 +1 @@
1
- {"version":3,"file":"define-component.d.ts","sourceRoot":"","sources":["../../src/define-component.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"define-component.d.ts","sourceRoot":"","sources":["../../src/define-component.ts"],"names":[],"mappings":"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"}
@@ -21,6 +21,19 @@ export interface EmitInstance {
21
21
  /** 组件注册的事件处理函数映射(key 为短横线形式) */
22
22
  props?: Record<string, any>;
23
23
  }
24
+ /**
25
+ * 从事件处理器类型提取事件类型
26
+ * 例如:
27
+ * - { onClick: (e: MouseEvent) => void } → { click: (e: MouseEvent) => void }
28
+ */
29
+ export type ExtractEmitsFromHandlers<Handlers> = {
30
+ [K in keyof Handlers as K extends `on${infer E}` ? Uncapitalize<E> : never]: Handlers[K] extends (...args: infer Args) => any ? (...args: Args) => void : never;
31
+ };
32
+ /**
33
+ * 定义 emits 类型的工具函数
34
+ * 用于类型安全的事件声明
35
+ */
36
+ export declare function defineEmits<T extends EmitsOptions>(emits: T): T;
24
37
  /**
25
38
  * 将驼峰命名转为短横线命名
26
39
  *
@@ -1 +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"}
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;AAED;;;;GAIG;AACH,MAAM,MAAM,wBAAwB,CAAC,QAAQ,IAAI;KAC9C,CAAC,IAAI,MAAM,QAAQ,IAAI,CAAC,SAAS,KAAK,MAAM,CAAC,EAAE,GAC5C,YAAY,CAAC,CAAC,CAAC,GACf,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,MAAM,IAAI,KAAK,GAAG,GACtD,CAAC,GAAG,IAAI,EAAE,IAAI,KAAK,IAAI,GACvB,KAAK;CACZ,CAAC;AAEF;;;GAGG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,YAAY,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAE/D;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"}
@@ -4,12 +4,12 @@
4
4
  * 导出所有公共 API 和类型定义。
5
5
  * 纯原生实现,零外部依赖。
6
6
  */
7
- export { defineComponent, createComponentInstance, setupComponent, setupStatefulComponent, setupFunctionComponent, mountComponent, updateComponent, unmountComponent, } from './define-component';
7
+ export { defineComponent, defineFunctionalComponent, createComponentInstance, setupComponent, setupStatefulComponent, setupFunctionComponent, mountComponent, updateComponent, unmountComponent, } from './define-component';
8
8
  export type { ComponentOptions, ComponentDefine, ComponentPublicInstance, ComponentInternalInstance, RenderFunction, CreateElement, ComputedOptions, WatchOptions, FunctionalComponent, EmitFunction, ReactivityMode, } from './define-component';
9
9
  export { normalizePropsOptions, validateProp, initProps, getPropDefaultValue, } from './props';
10
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';
11
+ export { emit, normalizeEmits, camelizeToHyphen, hyphenToCamel, defineEmits, } from './emit';
12
+ export type { EmitsOptions, NormalizedEmitsOptions, EmitInstance, ExtractEmitsFromHandlers, } from './emit';
13
13
  export { LifecycleHook, createLifecycleHook, callLifecycleHook, setCurrentInstance, onInit, onMounted, onBeforeUpdate, onUpdated, onBeforeUnmount, onUnmounted, currentInstance, } from './lifecycle';
14
14
  export type { LifecycleHookCallback, LifecycleInstance, } from './lifecycle';
15
15
  export { initSlots, normalizeSlotValue, renderSlot, hasSlot, } from './slots';
@@ -1 +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;AAYjB,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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,EACL,eAAe,EACf,yBAAyB,EACzB,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,EACb,WAAW,GACZ,MAAM,QAAQ,CAAC;AAEhB,YAAY,EACV,YAAY,EACZ,sBAAsB,EACtB,YAAY,EACZ,wBAAwB,GACzB,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;AAYjB,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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lytjs/component",
3
- "version": "4.0.5",
3
+ "version": "4.2.0",
4
4
  "description": "Lyt.js 组件系统 - defineComponent、生命周期、插槽、KeepAlive、Suspense",
5
5
  "main": "./dist/index.cjs",
6
6
  "module": "./dist/index.mjs",
@@ -43,8 +43,8 @@
43
43
  "defineComponent"
44
44
  ],
45
45
  "dependencies": {
46
- "@lytjs/common": "^4.0.5",
47
- "@lytjs/reactivity": "^4.0.5"
46
+ "@lytjs/common": "^4.2.0",
47
+ "@lytjs/reactivity": "^4.2.0"
48
48
  },
49
49
  "engines": {
50
50
  "node": ">=18.0.0"