@variojs/vue 0.0.1
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 +916 -0
- package/dist/bindings.d.ts +48 -0
- package/dist/bindings.d.ts.map +1 -0
- package/dist/bindings.js +199 -0
- package/dist/bindings.js.map +1 -0
- package/dist/composable.d.ts +84 -0
- package/dist/composable.d.ts.map +1 -0
- package/dist/composable.js +386 -0
- package/dist/composable.js.map +1 -0
- package/dist/features/attrs-builder.d.ts +38 -0
- package/dist/features/attrs-builder.d.ts.map +1 -0
- package/dist/features/attrs-builder.js +143 -0
- package/dist/features/attrs-builder.js.map +1 -0
- package/dist/features/children-resolver.d.ts +36 -0
- package/dist/features/children-resolver.d.ts.map +1 -0
- package/dist/features/children-resolver.js +171 -0
- package/dist/features/children-resolver.js.map +1 -0
- package/dist/features/component-resolver.d.ts +31 -0
- package/dist/features/component-resolver.d.ts.map +1 -0
- package/dist/features/component-resolver.js +110 -0
- package/dist/features/component-resolver.js.map +1 -0
- package/dist/features/computed.d.ts +35 -0
- package/dist/features/computed.d.ts.map +1 -0
- package/dist/features/computed.js +161 -0
- package/dist/features/computed.js.map +1 -0
- package/dist/features/event-handler.d.ts +34 -0
- package/dist/features/event-handler.d.ts.map +1 -0
- package/dist/features/event-handler.js +103 -0
- package/dist/features/event-handler.js.map +1 -0
- package/dist/features/expression-evaluator.d.ts +18 -0
- package/dist/features/expression-evaluator.d.ts.map +1 -0
- package/dist/features/expression-evaluator.js +28 -0
- package/dist/features/expression-evaluator.js.map +1 -0
- package/dist/features/lifecycle-wrapper.d.ts +19 -0
- package/dist/features/lifecycle-wrapper.d.ts.map +1 -0
- package/dist/features/lifecycle-wrapper.js +102 -0
- package/dist/features/lifecycle-wrapper.js.map +1 -0
- package/dist/features/loop-handler.d.ts +38 -0
- package/dist/features/loop-handler.d.ts.map +1 -0
- package/dist/features/loop-handler.js +168 -0
- package/dist/features/loop-handler.js.map +1 -0
- package/dist/features/path-resolver.d.ts +50 -0
- package/dist/features/path-resolver.d.ts.map +1 -0
- package/dist/features/path-resolver.js +171 -0
- package/dist/features/path-resolver.js.map +1 -0
- package/dist/features/provide-inject.d.ts +38 -0
- package/dist/features/provide-inject.d.ts.map +1 -0
- package/dist/features/provide-inject.js +139 -0
- package/dist/features/provide-inject.js.map +1 -0
- package/dist/features/refs.d.ts +45 -0
- package/dist/features/refs.d.ts.map +1 -0
- package/dist/features/refs.js +113 -0
- package/dist/features/refs.js.map +1 -0
- package/dist/features/teleport.d.ts +23 -0
- package/dist/features/teleport.d.ts.map +1 -0
- package/dist/features/teleport.js +32 -0
- package/dist/features/teleport.js.map +1 -0
- package/dist/features/validators.d.ts +43 -0
- package/dist/features/validators.d.ts.map +1 -0
- package/dist/features/validators.js +297 -0
- package/dist/features/validators.js.map +1 -0
- package/dist/features/watch.d.ts +26 -0
- package/dist/features/watch.d.ts.map +1 -0
- package/dist/features/watch.js +154 -0
- package/dist/features/watch.js.map +1 -0
- package/dist/index.d.ts +24 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +24 -0
- package/dist/index.js.map +1 -0
- package/dist/renderer.d.ts +72 -0
- package/dist/renderer.d.ts.map +1 -0
- package/dist/renderer.js +244 -0
- package/dist/renderer.js.map +1 -0
- package/dist/types.d.ts +128 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +16 -0
- package/dist/types.js.map +1 -0
- package/package.json +41 -0
package/dist/renderer.js
ADDED
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Vue renderer implementation
|
|
3
|
+
*
|
|
4
|
+
* 功能:
|
|
5
|
+
* - Schema → VNode 转换
|
|
6
|
+
* - 通用组件解析(支持全局注册的组件)
|
|
7
|
+
* - 双向绑定处理
|
|
8
|
+
* - 控制流转换(cond/show/loop)
|
|
9
|
+
* - 事件处理
|
|
10
|
+
* - 表达式求值
|
|
11
|
+
*/
|
|
12
|
+
import { h, Fragment, Transition, KeepAlive } from 'vue';
|
|
13
|
+
import { attachRef, RefsRegistry } from './features/refs.js';
|
|
14
|
+
import { createTeleport, shouldTeleport } from './features/teleport.js';
|
|
15
|
+
import { ModelPathResolver } from './features/path-resolver.js';
|
|
16
|
+
import { ComponentResolver } from './features/component-resolver.js';
|
|
17
|
+
import { ExpressionEvaluator } from './features/expression-evaluator.js';
|
|
18
|
+
import { EventHandler } from './features/event-handler.js';
|
|
19
|
+
import { AttrsBuilder } from './features/attrs-builder.js';
|
|
20
|
+
import { LoopHandler } from './features/loop-handler.js';
|
|
21
|
+
import { ChildrenResolver } from './features/children-resolver.js';
|
|
22
|
+
import { LifecycleWrapper } from './features/lifecycle-wrapper.js';
|
|
23
|
+
/**
|
|
24
|
+
* Vue 渲染器
|
|
25
|
+
* 将 Vario Schema 转换为 Vue VNode
|
|
26
|
+
*/
|
|
27
|
+
export class VueRenderer {
|
|
28
|
+
refsRegistry;
|
|
29
|
+
getState;
|
|
30
|
+
// 功能模块
|
|
31
|
+
pathResolver;
|
|
32
|
+
componentResolver;
|
|
33
|
+
expressionEvaluator;
|
|
34
|
+
eventHandler;
|
|
35
|
+
attrsBuilder;
|
|
36
|
+
loopHandler;
|
|
37
|
+
childrenResolver;
|
|
38
|
+
lifecycleWrapper;
|
|
39
|
+
constructor(options = {}) {
|
|
40
|
+
this.getState = options.getState;
|
|
41
|
+
this.refsRegistry = options.refsRegistry || new RefsRegistry();
|
|
42
|
+
// modelPath 选项保留于 API,供后续路径解析扩展使用
|
|
43
|
+
// 初始化功能模块
|
|
44
|
+
// 优先级:components > app._context.components > instance?.appContext?.components
|
|
45
|
+
const globalComponents = options.components ||
|
|
46
|
+
options.app?._context?.components ||
|
|
47
|
+
options.instance?.appContext?.components ||
|
|
48
|
+
{};
|
|
49
|
+
this.componentResolver = new ComponentResolver(globalComponents);
|
|
50
|
+
this.expressionEvaluator = new ExpressionEvaluator();
|
|
51
|
+
this.eventHandler = new EventHandler((expr, ctx) => this.expressionEvaluator.evaluateExpr(expr, ctx));
|
|
52
|
+
this.pathResolver = new ModelPathResolver((expr, ctx) => this.expressionEvaluator.evaluateExpr(expr, ctx));
|
|
53
|
+
this.attrsBuilder = new AttrsBuilder(this.getState, this.pathResolver, this.eventHandler);
|
|
54
|
+
this.lifecycleWrapper = new LifecycleWrapper();
|
|
55
|
+
// LoopHandler 和 ChildrenResolver 需要 createVNode 方法,使用箭头函数绑定 this
|
|
56
|
+
const createVNodeFn = (schema, ctx, modelPathStack) => this.createVNode(schema, ctx, modelPathStack || []);
|
|
57
|
+
this.loopHandler = new LoopHandler(this.pathResolver, createVNodeFn, (expr, ctx) => this.expressionEvaluator.evaluateExpr(expr, ctx));
|
|
58
|
+
this.childrenResolver = new ChildrenResolver(createVNodeFn, this.expressionEvaluator);
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* 渲染 Schema 为 VNode
|
|
62
|
+
*/
|
|
63
|
+
render(schema, ctx) {
|
|
64
|
+
const vnode = this.createVNode(schema, ctx);
|
|
65
|
+
// 如果返回 null,返回一个空的 Fragment 作为占位符
|
|
66
|
+
// Vue 需要有效的 VNode,不能是 null
|
|
67
|
+
if (vnode === null || vnode === undefined) {
|
|
68
|
+
return h(Fragment, null, []);
|
|
69
|
+
}
|
|
70
|
+
return vnode;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* 创建 VNode
|
|
74
|
+
* @param schema Schema 节点
|
|
75
|
+
* @param ctx 运行时上下文
|
|
76
|
+
* @param modelPathStack 当前 model 路径栈(用于自动路径拼接)
|
|
77
|
+
*/
|
|
78
|
+
createVNode(schema, ctx, modelPathStack = []) {
|
|
79
|
+
// 验证 schema 基本结构
|
|
80
|
+
if (!schema || typeof schema !== 'object') {
|
|
81
|
+
return h('div', { style: 'color: red; padding: 10px;' }, 'Invalid schema');
|
|
82
|
+
}
|
|
83
|
+
if (!schema.type) {
|
|
84
|
+
return h('div', { style: 'color: red; padding: 10px;' }, 'Schema missing type property');
|
|
85
|
+
}
|
|
86
|
+
// 处理条件渲染(优化:提前返回,避免不必要的处理)
|
|
87
|
+
if (schema.cond) {
|
|
88
|
+
try {
|
|
89
|
+
const condition = this.expressionEvaluator.evaluateExpr(schema.cond, ctx);
|
|
90
|
+
if (!condition) {
|
|
91
|
+
// 条件不满足,返回 null(Vue 会正确处理 null VNode)
|
|
92
|
+
return null;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
catch (error) {
|
|
96
|
+
// 表达式求值错误,返回错误提示节点
|
|
97
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
98
|
+
return h('div', {
|
|
99
|
+
style: 'color: red; padding: 10px; border: 1px solid red;'
|
|
100
|
+
}, `Condition evaluation error: ${errorMessage}`);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
// 处理列表渲染
|
|
104
|
+
if (schema.loop) {
|
|
105
|
+
const loopVNode = this.loopHandler.createLoopVNode(schema, ctx, modelPathStack);
|
|
106
|
+
return loopVNode || null;
|
|
107
|
+
}
|
|
108
|
+
// 解析组件(先解析,用于双向绑定的自动检测)
|
|
109
|
+
const component = this.componentResolver.resolveComponent(schema.type);
|
|
110
|
+
// 确保 component 有效
|
|
111
|
+
if (!component) {
|
|
112
|
+
return h('div', { style: 'color: red; padding: 10px;' }, `Component "${schema.type}" not found`);
|
|
113
|
+
}
|
|
114
|
+
// 处理 Vue 特有的扩展
|
|
115
|
+
const vueSchema = schema;
|
|
116
|
+
// 处理 model 路径(更新路径栈,供子级使用)
|
|
117
|
+
// model 为 string 或 object+scope 时压栈
|
|
118
|
+
let currentModelPathStack = [...modelPathStack];
|
|
119
|
+
const scopePath = this.pathResolver.getScopePath(schema.model);
|
|
120
|
+
if (scopePath) {
|
|
121
|
+
currentModelPathStack = this.pathResolver.updateModelPathStack(scopePath, modelPathStack, ctx, schema);
|
|
122
|
+
}
|
|
123
|
+
// 构建属性(传入 component 和路径栈用于自动检测)
|
|
124
|
+
// buildAttrs 中会解析 model 路径,这里传入当前路径栈
|
|
125
|
+
let attrs = this.attrsBuilder.buildAttrs(schema, ctx, component, modelPathStack, (props, ctx) => this.childrenResolver.evalProps(props, ctx));
|
|
126
|
+
// 解析子节点(支持作用域插槽,传递路径栈)
|
|
127
|
+
let children = this.childrenResolver.resolveChildren(schema, ctx, currentModelPathStack);
|
|
128
|
+
// 处理可见性控制(v-show,优化:错误处理)
|
|
129
|
+
if (schema.show) {
|
|
130
|
+
try {
|
|
131
|
+
const isVisible = this.expressionEvaluator.evaluateExpr(schema.show, ctx);
|
|
132
|
+
if (!isVisible) {
|
|
133
|
+
// 确保 style 是对象格式
|
|
134
|
+
const currentStyle = attrs.style;
|
|
135
|
+
if (typeof currentStyle === 'string') {
|
|
136
|
+
// 如果 style 是字符串,转换为对象
|
|
137
|
+
const styleObj = {};
|
|
138
|
+
currentStyle.split(';').forEach(rule => {
|
|
139
|
+
const [key, value] = rule.split(':').map(s => s.trim());
|
|
140
|
+
if (key && value) {
|
|
141
|
+
styleObj[key] = value;
|
|
142
|
+
}
|
|
143
|
+
});
|
|
144
|
+
attrs.style = { ...styleObj, display: 'none' };
|
|
145
|
+
}
|
|
146
|
+
else {
|
|
147
|
+
// style 已经是对象或未定义
|
|
148
|
+
attrs.style = { ...(currentStyle || {}), display: 'none' };
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
catch (error) {
|
|
153
|
+
// 表达式求值错误,隐藏元素并显示错误提示
|
|
154
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
155
|
+
console.warn(`Show expression evaluation error: ${errorMessage}`, schema);
|
|
156
|
+
// 默认隐藏元素
|
|
157
|
+
attrs.style = { ...(attrs.style || {}), display: 'none' };
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
// 确保 attrs 是对象(避免 undefined 导致的问题)
|
|
161
|
+
const safeAttrs = attrs || {};
|
|
162
|
+
// 处理 children:Vue 3 组件推荐使用函数插槽以获得更好的性能
|
|
163
|
+
let finalAttrs = safeAttrs;
|
|
164
|
+
let finalChildren = null;
|
|
165
|
+
if (children && typeof children === 'object' && !Array.isArray(children)) {
|
|
166
|
+
// 作用域插槽对象(已经是函数),直接使用
|
|
167
|
+
finalChildren = children;
|
|
168
|
+
}
|
|
169
|
+
else if (children !== undefined && children !== null) {
|
|
170
|
+
// 普通 children:对于组件,包装成函数插槽以避免警告
|
|
171
|
+
// 对于原生 DOM 元素,可以直接使用数组
|
|
172
|
+
const isNativeElement = typeof component === 'string';
|
|
173
|
+
if (isNativeElement) {
|
|
174
|
+
finalChildren = children;
|
|
175
|
+
}
|
|
176
|
+
else {
|
|
177
|
+
// Vue 3 组件推荐使用函数插槽
|
|
178
|
+
finalChildren = { default: () => children };
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
// 检查是否需要组件包装(生命周期、provide/inject 都需要在 setup 中处理)
|
|
182
|
+
const hasLifecycle = vueSchema.onMounted || vueSchema.onUnmounted || vueSchema.onUpdated ||
|
|
183
|
+
vueSchema.onBeforeMount || vueSchema.onBeforeUnmount || vueSchema.onBeforeUpdate;
|
|
184
|
+
const hasProvideInject = (vueSchema.provide && Object.keys(vueSchema.provide).length > 0) ||
|
|
185
|
+
(vueSchema.inject && (Array.isArray(vueSchema.inject) ? vueSchema.inject.length > 0 : Object.keys(vueSchema.inject).length > 0));
|
|
186
|
+
let vnode;
|
|
187
|
+
if (hasLifecycle || hasProvideInject) {
|
|
188
|
+
vnode = this.lifecycleWrapper.createComponentWithLifecycle(component, finalAttrs, finalChildren, vueSchema, ctx);
|
|
189
|
+
}
|
|
190
|
+
else {
|
|
191
|
+
try {
|
|
192
|
+
vnode = h(component, finalAttrs, finalChildren);
|
|
193
|
+
}
|
|
194
|
+
catch (error) {
|
|
195
|
+
return h('div', { style: 'color: red; padding: 10px;' }, `Failed to render "${schema.type}": ${error}`);
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
// 处理 ref
|
|
199
|
+
if (vueSchema.ref) {
|
|
200
|
+
vnode = attachRef(vnode, vueSchema, this.refsRegistry);
|
|
201
|
+
}
|
|
202
|
+
// 处理 keep-alive
|
|
203
|
+
if (vueSchema.keepAlive) {
|
|
204
|
+
const keepAliveProps = typeof vueSchema.keepAlive === 'object'
|
|
205
|
+
? vueSchema.keepAlive
|
|
206
|
+
: {};
|
|
207
|
+
vnode = h(KeepAlive, keepAliveProps, () => vnode);
|
|
208
|
+
}
|
|
209
|
+
// 处理 transition
|
|
210
|
+
if (vueSchema.transition) {
|
|
211
|
+
const transitionProps = typeof vueSchema.transition === 'string'
|
|
212
|
+
? { name: vueSchema.transition }
|
|
213
|
+
: {
|
|
214
|
+
...vueSchema.transition,
|
|
215
|
+
// 确保 duration 符合类型要求
|
|
216
|
+
duration: vueSchema.transition.duration && typeof vueSchema.transition.duration === 'object'
|
|
217
|
+
? (vueSchema.transition.duration.enter && vueSchema.transition.duration.leave
|
|
218
|
+
? { enter: vueSchema.transition.duration.enter, leave: vueSchema.transition.duration.leave }
|
|
219
|
+
: undefined)
|
|
220
|
+
: vueSchema.transition.duration
|
|
221
|
+
};
|
|
222
|
+
vnode = h(Transition, transitionProps, () => vnode);
|
|
223
|
+
}
|
|
224
|
+
// 处理 teleport(必须在最外层)
|
|
225
|
+
if (shouldTeleport(vueSchema.teleport)) {
|
|
226
|
+
vnode = createTeleport(vueSchema.teleport, vnode);
|
|
227
|
+
}
|
|
228
|
+
return vnode;
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* 清除组件解析缓存
|
|
232
|
+
* 用于组件注册变更后的缓存失效
|
|
233
|
+
*/
|
|
234
|
+
clearComponentCache() {
|
|
235
|
+
this.componentResolver.clearComponentCache();
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* 使特定组件的缓存失效
|
|
239
|
+
*/
|
|
240
|
+
invalidateComponentCache(type) {
|
|
241
|
+
this.componentResolver.invalidateComponentCache(type);
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
//# sourceMappingURL=renderer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"renderer.js","sourceRoot":"","sources":["../src/renderer.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Vue 特有的类型定义
|
|
3
|
+
*
|
|
4
|
+
* 扩展 SchemaNode 以支持 Vue 的特性:
|
|
5
|
+
* - ref: 模板引用(声明映射到 Vue ref)
|
|
6
|
+
* - 生命周期钩子(声明映射到 Vue 钩子)
|
|
7
|
+
* - provide/inject: 依赖注入(声明映射到 Vue API)
|
|
8
|
+
* - teleport: 传送
|
|
9
|
+
* - transition: 过渡动画
|
|
10
|
+
* - keep-alive: 缓存
|
|
11
|
+
*
|
|
12
|
+
* 注意:computed 和 watch 不在 Schema 中定义,
|
|
13
|
+
* 应该在 Vue 组件中使用原生 API 定义,然后通过 useVario 的 computed 选项传入
|
|
14
|
+
*/
|
|
15
|
+
import type { SchemaNode } from '@variojs/schema';
|
|
16
|
+
/**
|
|
17
|
+
* Vue 特有的 SchemaNode 扩展
|
|
18
|
+
* 深度集成 Vue 3 的 Composition API 特性
|
|
19
|
+
*/
|
|
20
|
+
export interface VueSchemaNode extends SchemaNode {
|
|
21
|
+
/**
|
|
22
|
+
* 模板引用名称(类似 Vue 的 ref)
|
|
23
|
+
* 在 useVario 返回的 refs 对象中可以通过此名称访问组件实例
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* // Schema 中
|
|
27
|
+
* { type: 'ElInput', ref: 'inputRef' }
|
|
28
|
+
*
|
|
29
|
+
* // 使用
|
|
30
|
+
* const { refs } = useVario(schema, options)
|
|
31
|
+
* refs.inputRef.value?.focus() // 访问组件实例
|
|
32
|
+
*/
|
|
33
|
+
readonly ref?: string;
|
|
34
|
+
/**
|
|
35
|
+
* 组件挂载后调用(引用 methods 中的方法名)
|
|
36
|
+
*/
|
|
37
|
+
readonly onMounted?: string;
|
|
38
|
+
/**
|
|
39
|
+
* 组件卸载前调用(引用 methods 中的方法名)
|
|
40
|
+
*/
|
|
41
|
+
readonly onUnmounted?: string;
|
|
42
|
+
/**
|
|
43
|
+
* 组件更新后调用(引用 methods 中的方法名)
|
|
44
|
+
*/
|
|
45
|
+
readonly onUpdated?: string;
|
|
46
|
+
/**
|
|
47
|
+
* 组件挂载前调用(引用 methods 中的方法名)
|
|
48
|
+
*/
|
|
49
|
+
readonly onBeforeMount?: string;
|
|
50
|
+
/**
|
|
51
|
+
* 组件卸载前调用(引用 methods 中的方法名)
|
|
52
|
+
*/
|
|
53
|
+
readonly onBeforeUnmount?: string;
|
|
54
|
+
/**
|
|
55
|
+
* 组件更新前调用(引用 methods 中的方法名)
|
|
56
|
+
*/
|
|
57
|
+
readonly onBeforeUpdate?: string;
|
|
58
|
+
/**
|
|
59
|
+
* Provide 值(向下传递数据)
|
|
60
|
+
*
|
|
61
|
+
* 支持表达式:值为字符串时会尝试作为表达式求值
|
|
62
|
+
*
|
|
63
|
+
* @example
|
|
64
|
+
* { type: 'div', provide: { theme: 'dark', locale: 'currentLocale' } }
|
|
65
|
+
*/
|
|
66
|
+
readonly provide?: Record<string, any>;
|
|
67
|
+
/**
|
|
68
|
+
* Inject 依赖(从父组件获取数据)
|
|
69
|
+
*
|
|
70
|
+
* 支持三种形式:
|
|
71
|
+
* - 数组: ['theme', 'locale']
|
|
72
|
+
* - 简单映射: { myTheme: 'theme' }
|
|
73
|
+
* - 完整配置: { myTheme: { from: 'theme', default: 'light' } }
|
|
74
|
+
*
|
|
75
|
+
* @example
|
|
76
|
+
* { type: 'ElButton', inject: ['theme', 'locale'] }
|
|
77
|
+
* { type: 'ElButton', inject: { myTheme: { from: 'theme', default: 'light' } } }
|
|
78
|
+
*/
|
|
79
|
+
readonly inject?: string[] | Record<string, string | {
|
|
80
|
+
from?: string;
|
|
81
|
+
default?: any;
|
|
82
|
+
}>;
|
|
83
|
+
/**
|
|
84
|
+
* Teleport 目标(将组件传送到指定 DOM 节点)
|
|
85
|
+
*
|
|
86
|
+
* @example
|
|
87
|
+
* { type: 'div', teleport: 'body' } // 传送到 body
|
|
88
|
+
* { type: 'div', teleport: '#modal' } // 传送到 #modal
|
|
89
|
+
*/
|
|
90
|
+
readonly teleport?: string | boolean;
|
|
91
|
+
/**
|
|
92
|
+
* Transition 配置(过渡动画)
|
|
93
|
+
*
|
|
94
|
+
* @example
|
|
95
|
+
* {
|
|
96
|
+
* type: 'div',
|
|
97
|
+
* transition: 'fade', // 使用预设过渡
|
|
98
|
+
* // 或
|
|
99
|
+
* transition: {
|
|
100
|
+
* name: 'fade',
|
|
101
|
+
* appear: true,
|
|
102
|
+
* mode: 'out-in'
|
|
103
|
+
* }
|
|
104
|
+
* }
|
|
105
|
+
*/
|
|
106
|
+
readonly transition?: string | {
|
|
107
|
+
name?: string;
|
|
108
|
+
appear?: boolean;
|
|
109
|
+
mode?: 'default' | 'in-out' | 'out-in';
|
|
110
|
+
duration?: number | {
|
|
111
|
+
enter?: number;
|
|
112
|
+
leave?: number;
|
|
113
|
+
};
|
|
114
|
+
};
|
|
115
|
+
/**
|
|
116
|
+
* Keep-alive 配置(缓存组件状态)
|
|
117
|
+
*
|
|
118
|
+
* @example
|
|
119
|
+
* { type: 'div', keepAlive: true }
|
|
120
|
+
* { type: 'div', keepAlive: { include: 'ComponentA', exclude: 'ComponentB' } }
|
|
121
|
+
*/
|
|
122
|
+
readonly keepAlive?: boolean | {
|
|
123
|
+
include?: string | RegExp | Array<string | RegExp>;
|
|
124
|
+
exclude?: string | RegExp | Array<string | RegExp>;
|
|
125
|
+
max?: number;
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAEjD;;;GAGG;AACH,MAAM,WAAW,aAAc,SAAQ,UAAU;IAC/C;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAA;IAErB;;OAEG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B;;OAEG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B;;OAEG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B;;OAEG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAA;IAC/B;;OAEG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAA;IACjC;;OAEG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAA;IAEhC;;;;;;;OAOG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAEtC;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,GAAG,CAAA;KAAE,CAAC,CAAA;IAEtF;;;;;;OAMG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;IAEpC;;;;;;;;;;;;;;OAcG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG;QAC7B,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,MAAM,CAAC,EAAE,OAAO,CAAA;QAChB,IAAI,CAAC,EAAE,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAA;QACtC,QAAQ,CAAC,EAAE,MAAM,GAAG;YAAE,KAAK,CAAC,EAAE,MAAM,CAAC;YAAC,KAAK,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;KACvD,CAAA;IAED;;;;;;OAMG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,GAAG;QAC7B,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAAA;QAClD,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAAA;QAClD,GAAG,CAAC,EAAE,MAAM,CAAA;KACb,CAAA;CACF"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Vue 特有的类型定义
|
|
3
|
+
*
|
|
4
|
+
* 扩展 SchemaNode 以支持 Vue 的特性:
|
|
5
|
+
* - ref: 模板引用(声明映射到 Vue ref)
|
|
6
|
+
* - 生命周期钩子(声明映射到 Vue 钩子)
|
|
7
|
+
* - provide/inject: 依赖注入(声明映射到 Vue API)
|
|
8
|
+
* - teleport: 传送
|
|
9
|
+
* - transition: 过渡动画
|
|
10
|
+
* - keep-alive: 缓存
|
|
11
|
+
*
|
|
12
|
+
* 注意:computed 和 watch 不在 Schema 中定义,
|
|
13
|
+
* 应该在 Vue 组件中使用原生 API 定义,然后通过 useVario 的 computed 选项传入
|
|
14
|
+
*/
|
|
15
|
+
export {};
|
|
16
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG"}
|
package/package.json
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@variojs/vue",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"description": "Vario Vue Renderer - Vue 3 integration for Vario Schema rendering",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"module": "./dist/index.js",
|
|
8
|
+
"types": "./dist/index.d.ts",
|
|
9
|
+
"exports": {
|
|
10
|
+
".": {
|
|
11
|
+
"import": "./dist/index.js",
|
|
12
|
+
"types": "./dist/index.d.ts"
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
"scripts": {
|
|
16
|
+
"build": "tsc",
|
|
17
|
+
"dev": "tsc --watch",
|
|
18
|
+
"test": "NODE_OPTIONS=--max-old-space-size=4096 vitest run",
|
|
19
|
+
"test:perf": "NODE_OPTIONS=--max-old-space-size=8192 vitest run __tests__/performance.test.ts",
|
|
20
|
+
"test:comprehensive": "NODE_OPTIONS=--max-old-space-size=4096 vitest run __tests__/model-path-comprehensive.test.ts",
|
|
21
|
+
"test:watch": "vitest",
|
|
22
|
+
"clean": "rm -rf dist"
|
|
23
|
+
},
|
|
24
|
+
"dependencies": {
|
|
25
|
+
"@variojs/core": "^0.0.1",
|
|
26
|
+
"@variojs/schema": "^0.0.1"
|
|
27
|
+
},
|
|
28
|
+
"devDependencies": {
|
|
29
|
+
"typescript": "^5.3.3",
|
|
30
|
+
"vitest": "^1.2.0",
|
|
31
|
+
"vue": "^3.4.0",
|
|
32
|
+
"element-plus": "^2.4.0"
|
|
33
|
+
},
|
|
34
|
+
"files": [
|
|
35
|
+
"dist",
|
|
36
|
+
"README.md"
|
|
37
|
+
],
|
|
38
|
+
"publishConfig": {
|
|
39
|
+
"access": "public"
|
|
40
|
+
}
|
|
41
|
+
}
|