@vobs/vobs 1.2.1 → 1.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/app.cjs +38 -319
- package/dist/app.cjs.map +1 -1
- package/dist/app.js +10 -313
- package/dist/app.js.map +1 -1
- package/dist/context.cjs +38 -136
- package/dist/context.cjs.map +1 -1
- package/dist/context.js +11 -131
- package/dist/context.js.map +1 -1
- package/dist/index.cjs +173 -1813
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +126 -1726
- package/dist/index.js.map +1 -1
- package/dist/jsx-dev-runtime.cjs +40 -578
- package/dist/jsx-dev-runtime.cjs.map +1 -1
- package/dist/jsx-dev-runtime.js +15 -568
- package/dist/jsx-dev-runtime.js.map +1 -1
- package/dist/jsx-runtime.cjs +37 -575
- package/dist/jsx-runtime.cjs.map +1 -1
- package/dist/jsx-runtime.js +13 -568
- package/dist/jsx-runtime.js.map +1 -1
- package/package.json +4 -4
package/dist/index.cjs
CHANGED
|
@@ -1,1742 +1,119 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
var __VOBS_CJS_FILE_URL = require("url").pathToFileURL(__filename).href;
|
|
2
|
+
"use strict";
|
|
3
3
|
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
4
7
|
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
var signalNames = /* @__PURE__ */ new WeakMap();
|
|
9
|
-
function setDebugHooks(hooks) {
|
|
10
|
-
const previous = activeDebugHooks;
|
|
11
|
-
activeDebugHooks = hooks;
|
|
12
|
-
return previous;
|
|
13
|
-
}
|
|
14
|
-
__name(setDebugHooks, "setDebugHooks");
|
|
15
|
-
function getDebugHooks() {
|
|
16
|
-
return activeDebugHooks;
|
|
17
|
-
}
|
|
18
|
-
__name(getDebugHooks, "getDebugHooks");
|
|
19
|
-
function hasDebugHooks() {
|
|
20
|
-
return activeDebugHooks !== null;
|
|
21
|
-
}
|
|
22
|
-
__name(hasDebugHooks, "hasDebugHooks");
|
|
23
|
-
function setSignalDebugName(signal, name) {
|
|
24
|
-
signalNames.set(signal, name);
|
|
25
|
-
invokeDebug("signalNamed", signal, name);
|
|
26
|
-
}
|
|
27
|
-
__name(setSignalDebugName, "setSignalDebugName");
|
|
28
|
-
function getSignalDebugName(signal) {
|
|
29
|
-
return signalNames.get(signal);
|
|
30
|
-
}
|
|
31
|
-
__name(getSignalDebugName, "getSignalDebugName");
|
|
32
|
-
function invokeDebug(name, ...args) {
|
|
33
|
-
const callback = activeDebugHooks?.[name];
|
|
34
|
-
if (!callback) return;
|
|
35
|
-
try {
|
|
36
|
-
callback(...args);
|
|
37
|
-
} catch {
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
__name(invokeDebug, "invokeDebug");
|
|
41
|
-
|
|
42
|
-
// packages/reactivity/src/owner.ts
|
|
43
|
-
var currentOwner = null;
|
|
44
|
-
var nextOwnerId = 1;
|
|
45
|
-
var ownerNames = /* @__PURE__ */ new WeakMap();
|
|
46
|
-
function createOwner() {
|
|
47
|
-
const parent = currentOwner;
|
|
48
|
-
let disposed = parent?.disposed ?? false;
|
|
49
|
-
const children = [];
|
|
50
|
-
const cleanups = [];
|
|
51
|
-
const errorHandlers = /* @__PURE__ */ new Set();
|
|
52
|
-
const owner = {
|
|
53
|
-
id: `owner-${nextOwnerId++}`,
|
|
54
|
-
parent,
|
|
55
|
-
children,
|
|
56
|
-
depth: (parent?.depth ?? -1) + 1,
|
|
57
|
-
get disposed() {
|
|
58
|
-
return disposed;
|
|
59
|
-
},
|
|
60
|
-
run(fn) {
|
|
61
|
-
if (disposed) throw new Error("Vobs: \u5DF2\u9500\u6BC1\u7684 Owner \u4E0D\u80FD\u7EE7\u7EED\u8FD0\u884C");
|
|
62
|
-
const previous = currentOwner;
|
|
63
|
-
currentOwner = owner;
|
|
64
|
-
try {
|
|
65
|
-
return fn();
|
|
66
|
-
} finally {
|
|
67
|
-
currentOwner = previous;
|
|
68
|
-
}
|
|
69
|
-
},
|
|
70
|
-
addCleanup(cleanup) {
|
|
71
|
-
if (disposed) {
|
|
72
|
-
cleanup();
|
|
73
|
-
return;
|
|
74
|
-
}
|
|
75
|
-
cleanups.push(cleanup);
|
|
76
|
-
},
|
|
77
|
-
onDispose(cleanup) {
|
|
78
|
-
owner.addCleanup(cleanup);
|
|
79
|
-
},
|
|
80
|
-
onError(handler) {
|
|
81
|
-
errorHandlers.add(handler);
|
|
82
|
-
const remove = /* @__PURE__ */ __name(() => errorHandlers.delete(handler), "remove");
|
|
83
|
-
owner.addCleanup(remove);
|
|
84
|
-
return remove;
|
|
85
|
-
},
|
|
86
|
-
handleError(error) {
|
|
87
|
-
for (const handler of [...errorHandlers].reverse()) {
|
|
88
|
-
try {
|
|
89
|
-
handler(error);
|
|
90
|
-
return true;
|
|
91
|
-
} catch (handlerError) {
|
|
92
|
-
return parent?.handleError(handlerError) ?? false;
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
return parent?.handleError(error) ?? false;
|
|
96
|
-
},
|
|
97
|
-
dispose() {
|
|
98
|
-
if (disposed) return;
|
|
99
|
-
disposed = true;
|
|
100
|
-
for (const child of [...children]) child.dispose();
|
|
101
|
-
children.length = 0;
|
|
102
|
-
let firstError;
|
|
103
|
-
for (let index = cleanups.length - 1; index >= 0; index--) {
|
|
104
|
-
try {
|
|
105
|
-
cleanups[index]();
|
|
106
|
-
} catch (error) {
|
|
107
|
-
firstError ?? (firstError = error);
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
cleanups.length = 0;
|
|
111
|
-
if (parent) {
|
|
112
|
-
const index = parent.children.indexOf(owner);
|
|
113
|
-
if (index >= 0) parent.children.splice(index, 1);
|
|
114
|
-
}
|
|
115
|
-
if (hasDebugHooks()) invokeDebug("ownerDisposed", owner);
|
|
116
|
-
if (firstError) throw firstError;
|
|
117
|
-
}
|
|
118
|
-
};
|
|
119
|
-
if (parent && !parent.disposed) parent.children.push(owner);
|
|
120
|
-
if (hasDebugHooks()) invokeDebug("ownerCreated", owner);
|
|
121
|
-
return owner;
|
|
122
|
-
}
|
|
123
|
-
__name(createOwner, "createOwner");
|
|
124
|
-
function setOwnerDebugName(owner, name) {
|
|
125
|
-
ownerNames.set(owner, name);
|
|
126
|
-
if (hasDebugHooks()) invokeDebug("ownerNamed", owner, name);
|
|
127
|
-
}
|
|
128
|
-
__name(setOwnerDebugName, "setOwnerDebugName");
|
|
129
|
-
function getOwnerDebugName(owner) {
|
|
130
|
-
return ownerNames.get(owner);
|
|
131
|
-
}
|
|
132
|
-
__name(getOwnerDebugName, "getOwnerDebugName");
|
|
133
|
-
function getCurrentOwner() {
|
|
134
|
-
return currentOwner;
|
|
135
|
-
}
|
|
136
|
-
__name(getCurrentOwner, "getCurrentOwner");
|
|
137
|
-
function runWithOwner(owner, fn) {
|
|
138
|
-
return owner.run(fn);
|
|
139
|
-
}
|
|
140
|
-
__name(runWithOwner, "runWithOwner");
|
|
141
|
-
function onDispose(cleanup) {
|
|
142
|
-
const owner = getCurrentOwner();
|
|
143
|
-
if (!owner) throw new Error("Vobs: onDispose \u5FC5\u987B\u5728 Owner \u4F5C\u7528\u57DF\u5185\u8C03\u7528");
|
|
144
|
-
owner.onDispose(cleanup);
|
|
145
|
-
}
|
|
146
|
-
__name(onDispose, "onDispose");
|
|
147
|
-
|
|
148
|
-
// packages/reactivity/src/signal.ts
|
|
149
|
-
var currentSubscriber = null;
|
|
150
|
-
function getCurrentSubscriber() {
|
|
151
|
-
return currentSubscriber;
|
|
152
|
-
}
|
|
153
|
-
__name(getCurrentSubscriber, "getCurrentSubscriber");
|
|
154
|
-
function setCurrentSubscriber(subscriber) {
|
|
155
|
-
currentSubscriber = subscriber;
|
|
156
|
-
}
|
|
157
|
-
__name(setCurrentSubscriber, "setCurrentSubscriber");
|
|
158
|
-
function untrack(fn) {
|
|
159
|
-
const previous = currentSubscriber;
|
|
160
|
-
currentSubscriber = null;
|
|
161
|
-
try {
|
|
162
|
-
return fn();
|
|
163
|
-
} finally {
|
|
164
|
-
currentSubscriber = previous;
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
__name(untrack, "untrack");
|
|
168
|
-
function trackDependency(dependency) {
|
|
169
|
-
if (!currentSubscriber || currentSubscriber.disposed) return;
|
|
170
|
-
const added = !currentSubscriber.dependencies.has(dependency);
|
|
171
|
-
currentSubscriber.dependencies.add(dependency);
|
|
172
|
-
if (added && hasDebugHooks()) invokeDebug("dependencyTracked", dependency, currentSubscriber);
|
|
173
|
-
}
|
|
174
|
-
__name(trackDependency, "trackDependency");
|
|
175
|
-
function state(initialValue, debugName) {
|
|
176
|
-
let value = initialValue;
|
|
177
|
-
let disposed = false;
|
|
178
|
-
const subscribers = /* @__PURE__ */ new Set();
|
|
179
|
-
const signalInstance = {
|
|
180
|
-
get value() {
|
|
181
|
-
const subscriber = getCurrentSubscriber();
|
|
182
|
-
if (subscriber && !subscriber.disposed) {
|
|
183
|
-
subscribers.add(subscriber);
|
|
184
|
-
if (hasDebugHooks()) invokeDebug("signalRead", signalInstance, subscriber);
|
|
185
|
-
trackDependency(signalInstance);
|
|
186
|
-
}
|
|
187
|
-
return value;
|
|
188
|
-
},
|
|
189
|
-
set value(nextValue) {
|
|
190
|
-
if (disposed || Object.is(value, nextValue)) return;
|
|
191
|
-
const previousValue = value;
|
|
192
|
-
value = nextValue;
|
|
193
|
-
if (hasDebugHooks()) invokeDebug("signalChanged", signalInstance, previousValue, nextValue);
|
|
194
|
-
for (const subscriber of [...subscribers]) subscriber.notify();
|
|
195
|
-
},
|
|
196
|
-
unsubscribe(subscriber) {
|
|
197
|
-
subscribers.delete(subscriber);
|
|
198
|
-
},
|
|
199
|
-
// 与 `.value =` 赋值同一条路径:判等短路、debug hook、notify 全部一致。
|
|
200
|
-
// 以闭包实现,可安全地作为回调直接传递(无 this 绑定问题)。
|
|
201
|
-
set(next) {
|
|
202
|
-
signalInstance.value = next;
|
|
203
|
-
},
|
|
204
|
-
dispose() {
|
|
205
|
-
if (disposed) return;
|
|
206
|
-
disposed = true;
|
|
207
|
-
subscribers.clear();
|
|
208
|
-
if (hasDebugHooks()) invokeDebug("signalDisposed", signalInstance);
|
|
209
|
-
}
|
|
210
|
-
};
|
|
211
|
-
const owner = getCurrentOwner();
|
|
212
|
-
owner?.addCleanup(signalInstance.dispose);
|
|
213
|
-
if (hasDebugHooks()) invokeDebug("signalCreated", signalInstance, owner);
|
|
214
|
-
if (debugName?.trim()) setSignalDebugName(signalInstance, debugName.trim());
|
|
215
|
-
return signalInstance;
|
|
216
|
-
}
|
|
217
|
-
__name(state, "state");
|
|
218
|
-
|
|
219
|
-
// packages/reactivity/src/scheduler.ts
|
|
220
|
-
var _Scheduler = class _Scheduler {
|
|
221
|
-
constructor() {
|
|
222
|
-
this.dirtyEffects = /* @__PURE__ */ new Set();
|
|
223
|
-
this.lowPriorityEffects = /* @__PURE__ */ new Set();
|
|
224
|
-
// flush 不可重入(flushing 标志保证),缓冲数组可在轮次间安全复用,避免每轮分配。
|
|
225
|
-
this.normalBuffer = [];
|
|
226
|
-
this.lowBuffer = [];
|
|
227
|
-
this.flushing = false;
|
|
228
|
-
this.scheduled = false;
|
|
229
|
-
this.batchDepth = 0;
|
|
230
|
-
}
|
|
231
|
-
schedule(effect2) {
|
|
232
|
-
if (effect2.disposed) return;
|
|
233
|
-
this.dirtyEffects.add(effect2);
|
|
234
|
-
this.lowPriorityEffects.delete(effect2);
|
|
235
|
-
this.ensureScheduled();
|
|
236
|
-
}
|
|
237
|
-
/** Queue an effect behind normal updates while preserving deterministic order. */
|
|
238
|
-
scheduleLow(effect2) {
|
|
239
|
-
if (effect2.disposed) return;
|
|
240
|
-
if (!this.dirtyEffects.has(effect2)) this.lowPriorityEffects.add(effect2);
|
|
241
|
-
this.ensureScheduled();
|
|
242
|
-
}
|
|
243
|
-
ensureScheduled() {
|
|
244
|
-
if (this.batchDepth === 0 && !this.flushing && !this.scheduled) {
|
|
245
|
-
this.scheduled = true;
|
|
246
|
-
queueMicrotask(() => {
|
|
247
|
-
this.scheduled = false;
|
|
248
|
-
this.flush();
|
|
249
|
-
});
|
|
250
|
-
}
|
|
251
|
-
}
|
|
252
|
-
remove(effect2) {
|
|
253
|
-
this.dirtyEffects.delete(effect2);
|
|
254
|
-
this.lowPriorityEffects.delete(effect2);
|
|
255
|
-
}
|
|
256
|
-
batch(fn) {
|
|
257
|
-
this.batchDepth++;
|
|
258
|
-
try {
|
|
259
|
-
return fn();
|
|
260
|
-
} finally {
|
|
261
|
-
this.batchDepth--;
|
|
262
|
-
if (this.batchDepth === 0) this.flush();
|
|
263
|
-
}
|
|
264
|
-
}
|
|
265
|
-
flush() {
|
|
266
|
-
if (this.flushing || this.batchDepth > 0) return;
|
|
267
|
-
this.flushing = true;
|
|
268
|
-
const debugEnabled = hasDebugHooks();
|
|
269
|
-
if (debugEnabled) invokeDebug("flushStart");
|
|
270
|
-
let rounds = 0;
|
|
271
|
-
let firstError;
|
|
272
|
-
let hasError = false;
|
|
273
|
-
try {
|
|
274
|
-
while (this.dirtyEffects.size > 0 || this.lowPriorityEffects.size > 0) {
|
|
275
|
-
if (++rounds > 100) {
|
|
276
|
-
this.dirtyEffects.clear();
|
|
277
|
-
this.lowPriorityEffects.clear();
|
|
278
|
-
throw new Error("Vobs: \u54CD\u5E94\u5F0F\u66F4\u65B0\u8D85\u8FC7 100 \u8F6E\uFF0C\u53EF\u80FD\u5B58\u5728\u5FAA\u73AF\u4F9D\u8D56");
|
|
279
|
-
}
|
|
280
|
-
this.collectRunnable(this.dirtyEffects, this.normalBuffer);
|
|
281
|
-
this.collectRunnable(this.lowPriorityEffects, this.lowBuffer);
|
|
282
|
-
sortEffects(this.normalBuffer);
|
|
283
|
-
sortEffects(this.lowBuffer);
|
|
284
|
-
for (const effect2 of this.normalBuffer) {
|
|
285
|
-
try {
|
|
286
|
-
effect2.run();
|
|
287
|
-
} catch (error) {
|
|
288
|
-
if (!hasError) {
|
|
289
|
-
firstError = error;
|
|
290
|
-
hasError = true;
|
|
291
|
-
}
|
|
292
|
-
}
|
|
293
|
-
}
|
|
294
|
-
for (const effect2 of this.lowBuffer) {
|
|
295
|
-
try {
|
|
296
|
-
effect2.run();
|
|
297
|
-
} catch (error) {
|
|
298
|
-
if (!hasError) {
|
|
299
|
-
firstError = error;
|
|
300
|
-
hasError = true;
|
|
301
|
-
}
|
|
302
|
-
}
|
|
303
|
-
}
|
|
304
|
-
this.normalBuffer.length = 0;
|
|
305
|
-
this.lowBuffer.length = 0;
|
|
306
|
-
}
|
|
307
|
-
} finally {
|
|
308
|
-
this.normalBuffer.length = 0;
|
|
309
|
-
this.lowBuffer.length = 0;
|
|
310
|
-
this.flushing = false;
|
|
311
|
-
if (debugEnabled) invokeDebug("flushEnd");
|
|
312
|
-
}
|
|
313
|
-
if (hasError) throw firstError;
|
|
314
|
-
}
|
|
315
|
-
/** 收集未 disposed 的 effect 并清空源集合;run() 期间新调度的 effect 留给下一轮。 */
|
|
316
|
-
collectRunnable(source, target) {
|
|
317
|
-
for (const effect2 of source) {
|
|
318
|
-
if (!effect2.disposed) target.push(effect2);
|
|
319
|
-
}
|
|
320
|
-
source.clear();
|
|
321
|
-
}
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
322
11
|
};
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
}
|
|
329
|
-
}
|
|
330
|
-
__name(sortEffects, "sortEffects");
|
|
331
|
-
var scheduler = new Scheduler();
|
|
332
|
-
function batch(fn) {
|
|
333
|
-
return scheduler.batch(fn);
|
|
334
|
-
}
|
|
335
|
-
__name(batch, "batch");
|
|
336
|
-
function scheduleLow(effect2) {
|
|
337
|
-
effect2.scheduleLow();
|
|
338
|
-
}
|
|
339
|
-
__name(scheduleLow, "scheduleLow");
|
|
340
|
-
|
|
341
|
-
// packages/reactivity/src/effect.ts
|
|
342
|
-
var nextEffectOrder = 1;
|
|
343
|
-
function cleanupDependencies(subscriber) {
|
|
344
|
-
for (const dependency of subscriber.dependencies) {
|
|
345
|
-
dependency.unsubscribe(subscriber);
|
|
346
|
-
if (hasDebugHooks()) invokeDebug("dependencyUntracked", dependency, subscriber);
|
|
347
|
-
}
|
|
348
|
-
subscriber.dependencies.clear();
|
|
349
|
-
}
|
|
350
|
-
__name(cleanupDependencies, "cleanupDependencies");
|
|
351
|
-
function effect(callback) {
|
|
352
|
-
const owner = getCurrentOwner();
|
|
353
|
-
let cleanup;
|
|
354
|
-
let dirty = true;
|
|
355
|
-
let disposed = false;
|
|
356
|
-
const eff = {
|
|
357
|
-
order: nextEffectOrder++,
|
|
358
|
-
depth: owner?.depth ?? 0,
|
|
359
|
-
dependencies: /* @__PURE__ */ new Set(),
|
|
360
|
-
get disposed() {
|
|
361
|
-
return disposed;
|
|
362
|
-
},
|
|
363
|
-
notify() {
|
|
364
|
-
if (disposed || dirty) return;
|
|
365
|
-
dirty = true;
|
|
366
|
-
if (hasDebugHooks()) invokeDebug("effectInvalidated", eff);
|
|
367
|
-
scheduler.schedule(eff);
|
|
368
|
-
},
|
|
369
|
-
run() {
|
|
370
|
-
if (disposed || !dirty) return;
|
|
371
|
-
dirty = false;
|
|
372
|
-
const previousCleanup = cleanup;
|
|
373
|
-
cleanup = void 0;
|
|
374
|
-
let cleanupError;
|
|
375
|
-
if (previousCleanup) {
|
|
376
|
-
try {
|
|
377
|
-
previousCleanup();
|
|
378
|
-
} catch (error) {
|
|
379
|
-
const handled2 = owner?.handleError(error) ?? false;
|
|
380
|
-
if (!handled2) cleanupError = error;
|
|
381
|
-
}
|
|
382
|
-
}
|
|
383
|
-
cleanupDependencies(eff);
|
|
384
|
-
const previous = getCurrentSubscriber();
|
|
385
|
-
setCurrentSubscriber(eff);
|
|
386
|
-
let thrown;
|
|
387
|
-
let handled = false;
|
|
388
|
-
if (hasDebugHooks()) invokeDebug("effectRunStart", eff);
|
|
389
|
-
try {
|
|
390
|
-
const result = owner ? owner.run(callback) : callback();
|
|
391
|
-
cleanup = typeof result === "function" ? result : void 0;
|
|
392
|
-
} catch (error) {
|
|
393
|
-
thrown = error;
|
|
394
|
-
handled = owner?.handleError(error) ?? false;
|
|
395
|
-
if (!handled) throw error;
|
|
396
|
-
} finally {
|
|
397
|
-
setCurrentSubscriber(previous);
|
|
398
|
-
if (hasDebugHooks()) invokeDebug("effectRunEnd", eff, thrown, handled);
|
|
399
|
-
}
|
|
400
|
-
if (cleanupError && !thrown) throw cleanupError;
|
|
401
|
-
},
|
|
402
|
-
scheduleLow() {
|
|
403
|
-
if (disposed || dirty) return;
|
|
404
|
-
dirty = true;
|
|
405
|
-
scheduler.scheduleLow(eff);
|
|
406
|
-
},
|
|
407
|
-
dispose() {
|
|
408
|
-
if (disposed) return;
|
|
409
|
-
disposed = true;
|
|
410
|
-
dirty = false;
|
|
411
|
-
scheduler.remove(eff);
|
|
412
|
-
const previousCleanup = cleanup;
|
|
413
|
-
cleanup = void 0;
|
|
414
|
-
let cleanupError;
|
|
415
|
-
if (previousCleanup) {
|
|
416
|
-
try {
|
|
417
|
-
previousCleanup();
|
|
418
|
-
} catch (error) {
|
|
419
|
-
const handled = owner?.handleError(error) ?? false;
|
|
420
|
-
if (!handled) cleanupError = error;
|
|
421
|
-
}
|
|
422
|
-
}
|
|
423
|
-
cleanupDependencies(eff);
|
|
424
|
-
if (hasDebugHooks()) invokeDebug("effectDisposed", eff);
|
|
425
|
-
if (cleanupError) throw cleanupError;
|
|
426
|
-
}
|
|
427
|
-
};
|
|
428
|
-
owner?.addCleanup(eff.dispose);
|
|
429
|
-
if (hasDebugHooks()) invokeDebug("effectCreated", eff, owner);
|
|
430
|
-
eff.run();
|
|
431
|
-
return eff;
|
|
432
|
-
}
|
|
433
|
-
__name(effect, "effect");
|
|
434
|
-
var renderEffect = effect;
|
|
435
|
-
|
|
436
|
-
// packages/reactivity/src/memo.ts
|
|
437
|
-
function memo(compute) {
|
|
438
|
-
let cached;
|
|
439
|
-
let dirty = true;
|
|
440
|
-
let disposed = false;
|
|
441
|
-
const subscribers = /* @__PURE__ */ new Set();
|
|
442
|
-
const memoSubscriber = {
|
|
443
|
-
dependencies: /* @__PURE__ */ new Set(),
|
|
444
|
-
get disposed() {
|
|
445
|
-
return disposed;
|
|
446
|
-
},
|
|
447
|
-
notify() {
|
|
448
|
-
if (disposed || dirty) return;
|
|
449
|
-
dirty = true;
|
|
450
|
-
if (hasDebugHooks()) invokeDebug("memoInvalidated", memoSignal);
|
|
451
|
-
for (const subscriber of [...subscribers]) subscriber.notify();
|
|
452
|
-
}
|
|
453
|
-
};
|
|
454
|
-
const memoSignal = {
|
|
455
|
-
get value() {
|
|
456
|
-
const subscriber = getCurrentSubscriber();
|
|
457
|
-
if (subscriber && !subscriber.disposed) {
|
|
458
|
-
subscribers.add(subscriber);
|
|
459
|
-
trackDependency(memoSignal);
|
|
460
|
-
}
|
|
461
|
-
if (dirty) {
|
|
462
|
-
cleanupDependencies(memoSubscriber);
|
|
463
|
-
const previous = getCurrentSubscriber();
|
|
464
|
-
setCurrentSubscriber(memoSubscriber);
|
|
465
|
-
try {
|
|
466
|
-
cached = compute();
|
|
467
|
-
dirty = false;
|
|
468
|
-
} finally {
|
|
469
|
-
setCurrentSubscriber(previous);
|
|
470
|
-
}
|
|
471
|
-
}
|
|
472
|
-
return cached;
|
|
473
|
-
},
|
|
474
|
-
set value(_) {
|
|
475
|
-
throw new Error("memo: \u6D3E\u751F\u503C\u4E0D\u80FD\u76F4\u63A5\u8D4B\u503C");
|
|
476
|
-
},
|
|
477
|
-
unsubscribe(subscriber) {
|
|
478
|
-
subscribers.delete(subscriber);
|
|
479
|
-
},
|
|
480
|
-
dispose() {
|
|
481
|
-
if (disposed) return;
|
|
482
|
-
disposed = true;
|
|
483
|
-
subscribers.clear();
|
|
484
|
-
cleanupDependencies(memoSubscriber);
|
|
485
|
-
if (hasDebugHooks()) invokeDebug("signalDisposed", memoSignal);
|
|
486
|
-
}
|
|
487
|
-
};
|
|
488
|
-
const owner = getCurrentOwner();
|
|
489
|
-
owner?.addCleanup(memoSignal.dispose);
|
|
490
|
-
if (hasDebugHooks()) {
|
|
491
|
-
invokeDebug("signalCreated", memoSignal, owner);
|
|
492
|
-
invokeDebug("memoCreated", memoSignal, memoSubscriber, owner);
|
|
493
|
-
}
|
|
494
|
-
return memoSignal;
|
|
495
|
-
}
|
|
496
|
-
__name(memo, "memo");
|
|
497
|
-
|
|
498
|
-
// packages/reactivity/src/id.ts
|
|
499
|
-
var rootCounters = /* @__PURE__ */ new WeakMap();
|
|
500
|
-
var detachedCounter = 0;
|
|
501
|
-
function createId(prefix = "vobs") {
|
|
502
|
-
const owner = getCurrentOwner();
|
|
503
|
-
let root = owner;
|
|
504
|
-
while (root?.parent) root = root.parent;
|
|
505
|
-
const counter = root ? (rootCounters.get(root) ?? 0) + 1 : ++detachedCounter;
|
|
506
|
-
if (root) rootCounters.set(root, counter);
|
|
507
|
-
const normalized = String(prefix).trim().replace(/[^a-zA-Z0-9_-]+/g, "-") || "vobs";
|
|
508
|
-
return `${normalized}-${counter.toString(36)}`;
|
|
509
|
-
}
|
|
510
|
-
__name(createId, "createId");
|
|
511
|
-
var useId = createId;
|
|
512
|
-
|
|
513
|
-
// packages/dom/src/renderer.ts
|
|
514
|
-
function createDOMRenderer() {
|
|
515
|
-
return {
|
|
516
|
-
createText(content) {
|
|
517
|
-
return document.createTextNode(content);
|
|
518
|
-
},
|
|
519
|
-
createElement(tag) {
|
|
520
|
-
return document.createElement(tag);
|
|
521
|
-
},
|
|
522
|
-
createComment(content) {
|
|
523
|
-
return document.createComment(content);
|
|
524
|
-
},
|
|
525
|
-
insertBefore(parent, child, anchor) {
|
|
526
|
-
parent.insertBefore(child, anchor);
|
|
527
|
-
},
|
|
528
|
-
removeChild(parent, child) {
|
|
529
|
-
parent.removeChild(child);
|
|
530
|
-
},
|
|
531
|
-
setTextContent(node, content) {
|
|
532
|
-
node.textContent = content;
|
|
533
|
-
},
|
|
534
|
-
setProperty(node, key, value) {
|
|
535
|
-
Reflect.set(node, key, value);
|
|
536
|
-
},
|
|
537
|
-
setAttribute(node, key, value) {
|
|
538
|
-
node.setAttribute(key, value);
|
|
539
|
-
},
|
|
540
|
-
addEventListener(node, event, handler) {
|
|
541
|
-
node.addEventListener(event, handler);
|
|
542
|
-
},
|
|
543
|
-
removeEventListener(node, event, handler) {
|
|
544
|
-
node.removeEventListener(event, handler);
|
|
545
|
-
},
|
|
546
|
-
nextSibling(node) {
|
|
547
|
-
return node.nextSibling;
|
|
548
|
-
},
|
|
549
|
-
clear(container) {
|
|
550
|
-
container.textContent = "";
|
|
551
|
-
}
|
|
552
|
-
};
|
|
553
|
-
}
|
|
554
|
-
__name(createDOMRenderer, "createDOMRenderer");
|
|
555
|
-
|
|
556
|
-
// packages/runtime/src/debug.ts
|
|
557
|
-
var activeRuntimeDebugHooks = null;
|
|
558
|
-
var activeRuntimeDebugContext = null;
|
|
559
|
-
function setRuntimeDebugHooks(hooks) {
|
|
560
|
-
const previous = activeRuntimeDebugHooks;
|
|
561
|
-
activeRuntimeDebugHooks = hooks;
|
|
562
|
-
return previous;
|
|
563
|
-
}
|
|
564
|
-
__name(setRuntimeDebugHooks, "setRuntimeDebugHooks");
|
|
565
|
-
function getRuntimeDebugHooks() {
|
|
566
|
-
return activeRuntimeDebugHooks;
|
|
567
|
-
}
|
|
568
|
-
__name(getRuntimeDebugHooks, "getRuntimeDebugHooks");
|
|
569
|
-
function getRuntimeDebugContext() {
|
|
570
|
-
return activeRuntimeDebugContext;
|
|
571
|
-
}
|
|
572
|
-
__name(getRuntimeDebugContext, "getRuntimeDebugContext");
|
|
573
|
-
function runWithRuntimeDebugContext(context, task) {
|
|
574
|
-
const previous = activeRuntimeDebugContext;
|
|
575
|
-
const next = { ...previous, ...context };
|
|
576
|
-
activeRuntimeDebugContext = next;
|
|
577
|
-
let result;
|
|
578
|
-
try {
|
|
579
|
-
result = task();
|
|
580
|
-
} catch (error) {
|
|
581
|
-
activeRuntimeDebugContext = previous;
|
|
582
|
-
throw error;
|
|
583
|
-
}
|
|
584
|
-
if (isPromiseLike(result)) {
|
|
585
|
-
return Promise.resolve(result).finally(() => {
|
|
586
|
-
if (activeRuntimeDebugContext === next) activeRuntimeDebugContext = previous;
|
|
587
|
-
});
|
|
588
|
-
}
|
|
589
|
-
activeRuntimeDebugContext = previous;
|
|
590
|
-
return result;
|
|
591
|
-
}
|
|
592
|
-
__name(runWithRuntimeDebugContext, "runWithRuntimeDebugContext");
|
|
593
|
-
function pushRuntimeDebugContext(context) {
|
|
594
|
-
const previous = activeRuntimeDebugContext;
|
|
595
|
-
activeRuntimeDebugContext = { ...previous, ...context };
|
|
596
|
-
let restored = false;
|
|
597
|
-
return () => {
|
|
598
|
-
if (restored) return;
|
|
599
|
-
restored = true;
|
|
600
|
-
activeRuntimeDebugContext = previous;
|
|
601
|
-
};
|
|
602
|
-
}
|
|
603
|
-
__name(pushRuntimeDebugContext, "pushRuntimeDebugContext");
|
|
604
|
-
function invokeRuntimeDebug(name, ...args) {
|
|
605
|
-
const callback = activeRuntimeDebugHooks?.[name];
|
|
606
|
-
if (!callback) return;
|
|
607
|
-
try {
|
|
608
|
-
callback(...args);
|
|
609
|
-
} catch {
|
|
610
|
-
}
|
|
611
|
-
}
|
|
612
|
-
__name(invokeRuntimeDebug, "invokeRuntimeDebug");
|
|
613
|
-
function readDebugValue(read) {
|
|
614
|
-
try {
|
|
615
|
-
return read();
|
|
616
|
-
} catch {
|
|
617
|
-
return "[Uninspectable]";
|
|
618
|
-
}
|
|
619
|
-
}
|
|
620
|
-
__name(readDebugValue, "readDebugValue");
|
|
621
|
-
function isPromiseLike(value) {
|
|
622
|
-
return Boolean(value) && (typeof value === "object" || typeof value === "function") && typeof value.then === "function";
|
|
623
|
-
}
|
|
624
|
-
__name(isPromiseLike, "isPromiseLike");
|
|
625
|
-
function describeDebugNode(node) {
|
|
626
|
-
if (!node || typeof node !== "object") return "node";
|
|
627
|
-
const value = node;
|
|
628
|
-
const name = typeof value.tagName === "string" ? value.tagName.toLowerCase() : typeof value.nodeName === "string" ? value.nodeName.toLowerCase() : "node";
|
|
629
|
-
const id = typeof value.id === "string" && value.id ? `#${value.id}` : "";
|
|
630
|
-
const className = typeof value.className === "string" && value.className ? `.${value.className.trim().split(/\s+/).filter(Boolean).join(".")}` : "";
|
|
631
|
-
return `${name}${id}${className}`;
|
|
632
|
-
}
|
|
633
|
-
__name(describeDebugNode, "describeDebugNode");
|
|
634
|
-
|
|
635
|
-
// packages/runtime/src/hmr.ts
|
|
636
|
-
var globalTarget = globalThis;
|
|
637
|
-
var hmrGlobal = globalTarget.__VOBS_HMR__ ?? { modules: /* @__PURE__ */ new Map() };
|
|
638
|
-
globalTarget.__VOBS_HMR__ = hmrGlobal;
|
|
639
|
-
function resolveComponent(component, moduleId, exportName) {
|
|
640
|
-
const module = getModule(moduleId);
|
|
641
|
-
const existing = module.components.get(exportName);
|
|
642
|
-
if (existing) return existing;
|
|
643
|
-
const proxy = /* @__PURE__ */ __name(((props) => {
|
|
644
|
-
const current = proxy.current;
|
|
645
|
-
return current(props);
|
|
646
|
-
}), "proxy");
|
|
647
|
-
proxy.current = component;
|
|
648
|
-
Object.defineProperties(proxy, {
|
|
649
|
-
displayName: { configurable: true, value: component.name || exportName },
|
|
650
|
-
hmrKey: { configurable: false, value: `${moduleId}:${exportName}` }
|
|
651
|
-
});
|
|
652
|
-
module.components.set(exportName, proxy);
|
|
653
|
-
return proxy;
|
|
654
|
-
}
|
|
655
|
-
__name(resolveComponent, "resolveComponent");
|
|
656
|
-
function updateHmrModule(_moduleId, nextModule) {
|
|
657
|
-
const modules = [...hmrGlobal.modules.values()];
|
|
658
|
-
for (const module of modules) {
|
|
659
|
-
let changed = false;
|
|
660
|
-
for (const [name, proxy] of module.components) {
|
|
661
|
-
const next = nextModule[name];
|
|
662
|
-
if (typeof next !== "function") continue;
|
|
663
|
-
const hmrProxy = proxy;
|
|
664
|
-
hmrProxy.current = next;
|
|
665
|
-
Object.defineProperty(hmrProxy, "displayName", { configurable: true, value: next.name || name });
|
|
666
|
-
changed = true;
|
|
667
|
-
}
|
|
668
|
-
if (!changed) continue;
|
|
669
|
-
for (const instance of module.instances) {
|
|
670
|
-
try {
|
|
671
|
-
instance.refresh();
|
|
672
|
-
} catch {
|
|
673
|
-
}
|
|
674
|
-
}
|
|
675
|
-
}
|
|
676
|
-
}
|
|
677
|
-
__name(updateHmrModule, "updateHmrModule");
|
|
678
|
-
function disposeHmrModule(_moduleId) {
|
|
679
|
-
}
|
|
680
|
-
__name(disposeHmrModule, "disposeHmrModule");
|
|
681
|
-
function createHmrStateStore(moduleId) {
|
|
682
|
-
const state2 = getModule(moduleId).state;
|
|
683
|
-
return {
|
|
684
|
-
get(key, initial) {
|
|
685
|
-
if (!state2.has(key)) state2.set(key, typeof initial === "function" ? initial() : initial);
|
|
686
|
-
return state2.get(key);
|
|
687
|
-
},
|
|
688
|
-
set(key, value) {
|
|
689
|
-
state2.set(key, value);
|
|
690
|
-
},
|
|
691
|
-
has: /* @__PURE__ */ __name((key) => state2.has(key), "has"),
|
|
692
|
-
delete: /* @__PURE__ */ __name((key) => {
|
|
693
|
-
state2.delete(key);
|
|
694
|
-
}, "delete"),
|
|
695
|
-
clear: /* @__PURE__ */ __name(() => {
|
|
696
|
-
state2.clear();
|
|
697
|
-
}, "clear")
|
|
698
|
-
};
|
|
699
|
-
}
|
|
700
|
-
__name(createHmrStateStore, "createHmrStateStore");
|
|
701
|
-
function registerHmrInstance(moduleId, instance) {
|
|
702
|
-
const instances = getModule(moduleId).instances;
|
|
703
|
-
instances.add(instance);
|
|
704
|
-
return () => instances.delete(instance);
|
|
705
|
-
}
|
|
706
|
-
__name(registerHmrInstance, "registerHmrInstance");
|
|
707
|
-
function markHmrInstanceMounted(node, parent) {
|
|
708
|
-
const instance = hmrInstances.get(node);
|
|
709
|
-
if (instance) instance.parent = parent;
|
|
710
|
-
}
|
|
711
|
-
__name(markHmrInstanceMounted, "markHmrInstanceMounted");
|
|
712
|
-
function getModule(moduleId) {
|
|
713
|
-
let module = hmrGlobal.modules.get(moduleId);
|
|
714
|
-
if (!module) {
|
|
715
|
-
module = { components: /* @__PURE__ */ new Map(), state: /* @__PURE__ */ new Map(), instances: /* @__PURE__ */ new Set() };
|
|
716
|
-
hmrGlobal.modules.set(moduleId, module);
|
|
717
|
-
}
|
|
718
|
-
return module;
|
|
719
|
-
}
|
|
720
|
-
__name(getModule, "getModule");
|
|
721
|
-
var hmrInstances = /* @__PURE__ */ new WeakMap();
|
|
722
|
-
function associateHmrInstance(node, instance) {
|
|
723
|
-
hmrInstances.set(node, instance);
|
|
724
|
-
}
|
|
725
|
-
__name(associateHmrInstance, "associateHmrInstance");
|
|
726
|
-
|
|
727
|
-
// packages/runtime/src/ref.ts
|
|
728
|
-
function ref(initialValue = null) {
|
|
729
|
-
return { current: initialValue };
|
|
730
|
-
}
|
|
731
|
-
__name(ref, "ref");
|
|
732
|
-
function setRef(node, target) {
|
|
733
|
-
if (!isRefTarget(target)) return;
|
|
734
|
-
if (isSSRNode(node)) return;
|
|
735
|
-
const owner = getCurrentOwner();
|
|
736
|
-
assignRef(target, node);
|
|
737
|
-
owner?.onDispose(() => {
|
|
738
|
-
if (isObjectRef(target) && target.current !== node) return;
|
|
739
|
-
assignRef(target, null);
|
|
740
|
-
});
|
|
741
|
-
}
|
|
742
|
-
__name(setRef, "setRef");
|
|
743
|
-
function isSSRNode(value) {
|
|
744
|
-
const type = value.type;
|
|
745
|
-
return (type === "element" || type === "text" || type === "comment") && !("nodeType" in value);
|
|
746
|
-
}
|
|
747
|
-
__name(isSSRNode, "isSSRNode");
|
|
748
|
-
function isObjectRef(value) {
|
|
749
|
-
return Boolean(value && typeof value === "object" && "current" in value);
|
|
750
|
-
}
|
|
751
|
-
__name(isObjectRef, "isObjectRef");
|
|
752
|
-
function isRefTarget(value) {
|
|
753
|
-
return isObjectRef(value) || typeof value === "function";
|
|
754
|
-
}
|
|
755
|
-
__name(isRefTarget, "isRefTarget");
|
|
756
|
-
function assignRef(target, value) {
|
|
757
|
-
try {
|
|
758
|
-
if (typeof target === "function") target(value);
|
|
759
|
-
else target.current = value;
|
|
760
|
-
} catch {
|
|
761
|
-
}
|
|
762
|
-
}
|
|
763
|
-
__name(assignRef, "assignRef");
|
|
764
|
-
|
|
765
|
-
// packages/runtime/src/ops.ts
|
|
766
|
-
var currentRenderer = null;
|
|
767
|
-
var nodeOwners = /* @__PURE__ */ new WeakMap();
|
|
768
|
-
var eventBindings = /* @__PURE__ */ new WeakMap();
|
|
769
|
-
function setRenderer(renderer) {
|
|
770
|
-
currentRenderer = renderer;
|
|
771
|
-
}
|
|
772
|
-
__name(setRenderer, "setRenderer");
|
|
773
|
-
function getRenderer() {
|
|
774
|
-
if (!currentRenderer) {
|
|
775
|
-
throw new Error("\u6E32\u67D3\u5668\u672A\u521D\u59CB\u5316");
|
|
776
|
-
}
|
|
777
|
-
return currentRenderer;
|
|
778
|
-
}
|
|
779
|
-
__name(getRenderer, "getRenderer");
|
|
780
|
-
function createText(content) {
|
|
781
|
-
return getRenderer().createText(content);
|
|
782
|
-
}
|
|
783
|
-
__name(createText, "createText");
|
|
784
|
-
function createElement(tag) {
|
|
785
|
-
return getRenderer().createElement(tag);
|
|
786
|
-
}
|
|
787
|
-
__name(createElement, "createElement");
|
|
788
|
-
function createComment(content) {
|
|
789
|
-
return getRenderer().createComment(content);
|
|
790
|
-
}
|
|
791
|
-
__name(createComment, "createComment");
|
|
792
|
-
function insertBefore(parent, child, anchor) {
|
|
793
|
-
if (isVobsFragment(child)) {
|
|
794
|
-
child.mount(parent, isVobsFragment(anchor) ? anchor.start : anchor);
|
|
795
|
-
return;
|
|
796
|
-
}
|
|
797
|
-
getRenderer().insertBefore(parent, child, isVobsFragment(anchor) ? anchor.start : anchor);
|
|
798
|
-
markHmrInstanceMounted(child, parent);
|
|
799
|
-
if (getRuntimeDebugHooks()) {
|
|
800
|
-
invokeRuntimeDebug("domMutation", {
|
|
801
|
-
operation: "insert",
|
|
802
|
-
target: describeDebugNode(child),
|
|
803
|
-
parent: describeDebugNode(parent)
|
|
804
|
-
});
|
|
805
|
-
}
|
|
806
|
-
}
|
|
807
|
-
__name(insertBefore, "insertBefore");
|
|
808
|
-
function removeChild(parent, child) {
|
|
809
|
-
disposeNodeOwner(child);
|
|
810
|
-
if (isVobsFragment(child)) {
|
|
811
|
-
child.unmount(parent);
|
|
812
|
-
return;
|
|
813
|
-
}
|
|
814
|
-
getRenderer().removeChild(parent, child);
|
|
815
|
-
if (getRuntimeDebugHooks()) {
|
|
816
|
-
invokeRuntimeDebug("domMutation", {
|
|
817
|
-
operation: "remove",
|
|
818
|
-
target: describeDebugNode(child),
|
|
819
|
-
parent: describeDebugNode(parent)
|
|
820
|
-
});
|
|
821
|
-
}
|
|
822
|
-
}
|
|
823
|
-
__name(removeChild, "removeChild");
|
|
824
|
-
function setTextContent(node, content) {
|
|
825
|
-
const previousValue = getRuntimeDebugHooks() ? readDebugValue(() => node.textContent) : void 0;
|
|
826
|
-
getRenderer().setTextContent(node, content);
|
|
827
|
-
if (getRuntimeDebugHooks()) {
|
|
828
|
-
invokeRuntimeDebug("domMutation", {
|
|
829
|
-
operation: "text",
|
|
830
|
-
target: describeDebugNode(node),
|
|
831
|
-
previousValue,
|
|
832
|
-
nextValue: content
|
|
833
|
-
});
|
|
834
|
-
}
|
|
835
|
-
}
|
|
836
|
-
__name(setTextContent, "setTextContent");
|
|
837
|
-
function setProperty(node, key, value) {
|
|
838
|
-
const previousValue = getRuntimeDebugHooks() ? readDebugValue(() => Reflect.get(node, key)) : void 0;
|
|
839
|
-
getRenderer().setProperty(node, key, value);
|
|
840
|
-
if (getRuntimeDebugHooks()) {
|
|
841
|
-
invokeRuntimeDebug("domMutation", {
|
|
842
|
-
operation: "property",
|
|
843
|
-
target: describeDebugNode(node),
|
|
844
|
-
key,
|
|
845
|
-
previousValue,
|
|
846
|
-
nextValue: value
|
|
847
|
-
});
|
|
848
|
-
}
|
|
849
|
-
}
|
|
850
|
-
__name(setProperty, "setProperty");
|
|
851
|
-
function setAttribute(node, key, value) {
|
|
852
|
-
const previousValue = getRuntimeDebugHooks() ? readDebugValue(() => typeof node.getAttribute === "function" ? node.getAttribute(key) : void 0) : void 0;
|
|
853
|
-
getRenderer().setAttribute(node, key, value);
|
|
854
|
-
if (getRuntimeDebugHooks()) {
|
|
855
|
-
invokeRuntimeDebug("domMutation", {
|
|
856
|
-
operation: "attribute",
|
|
857
|
-
target: describeDebugNode(node),
|
|
858
|
-
key,
|
|
859
|
-
previousValue,
|
|
860
|
-
nextValue: value
|
|
861
|
-
});
|
|
862
|
-
}
|
|
863
|
-
}
|
|
864
|
-
__name(setAttribute, "setAttribute");
|
|
865
|
-
function spreadProps(node, props) {
|
|
866
|
-
for (const [key, value] of Object.entries(props)) {
|
|
867
|
-
if (key === "key" || value === null || value === void 0) continue;
|
|
868
|
-
if (key === "ref") {
|
|
869
|
-
setRef(node, value);
|
|
870
|
-
continue;
|
|
871
|
-
}
|
|
872
|
-
if (key.startsWith("on") && typeof value === "function") addEventListener(node, key.slice(2).toLowerCase(), value);
|
|
873
|
-
else if (isPropertyKey(key)) setProperty(node, key, value);
|
|
874
|
-
else if (value === false) continue;
|
|
875
|
-
else setAttribute(node, key === "className" ? "class" : key, key === "style" && isStyleObject(value) ? formatStyle(value) : String(value));
|
|
876
|
-
}
|
|
877
|
-
}
|
|
878
|
-
__name(spreadProps, "spreadProps");
|
|
879
|
-
function setStaticProps(node, props) {
|
|
880
|
-
for (const [key, value] of Object.entries(props)) {
|
|
881
|
-
if (key === "key" || key === "ref" || key.startsWith("on")) continue;
|
|
882
|
-
if (value === null || value === void 0) continue;
|
|
883
|
-
if (isPropertyKey(key)) setProperty(node, key, value);
|
|
884
|
-
else if (value === false) continue;
|
|
885
|
-
else setAttribute(node, key === "className" ? "class" : key, key === "style" && isStyleObject(value) ? formatStyle(value) : String(value));
|
|
886
|
-
}
|
|
887
|
-
}
|
|
888
|
-
__name(setStaticProps, "setStaticProps");
|
|
889
|
-
function isPropertyKey(key) {
|
|
890
|
-
return key === "value" || key === "checked" || key === "selected" || key === "disabled" || key === "multiple" || key === "readOnly" || key === "required" || key === "autofocus" || key === "hidden" || key === "tabIndex";
|
|
891
|
-
}
|
|
892
|
-
__name(isPropertyKey, "isPropertyKey");
|
|
893
|
-
function isStyleObject(value) {
|
|
894
|
-
return Boolean(value) && typeof value === "object" && !Array.isArray(value);
|
|
895
|
-
}
|
|
896
|
-
__name(isStyleObject, "isStyleObject");
|
|
897
|
-
function formatStyle(value) {
|
|
898
|
-
return Object.entries(value).filter(([, entry]) => entry !== null && entry !== void 0 && entry !== false).map(([key, entry]) => `${key.replace(/[A-Z]/gu, (match) => `-${match.toLowerCase()}`)}:${String(entry)}`).join(";");
|
|
899
|
-
}
|
|
900
|
-
__name(formatStyle, "formatStyle");
|
|
901
|
-
function addEventListener(node, event, handler) {
|
|
902
|
-
const renderer = getRenderer();
|
|
903
|
-
const owner = getCurrentOwner();
|
|
904
|
-
let bindings = eventBindings.get(node);
|
|
905
|
-
if (!bindings) {
|
|
906
|
-
bindings = /* @__PURE__ */ new Map();
|
|
907
|
-
eventBindings.set(node, bindings);
|
|
908
|
-
}
|
|
909
|
-
const previous = bindings.get(event);
|
|
910
|
-
if (previous && previous.original === handler && previous.owner === owner) return;
|
|
911
|
-
if (previous) renderer.removeEventListener(node, event, previous.handler);
|
|
912
|
-
const listener = owner ? (reason) => {
|
|
913
|
-
try {
|
|
914
|
-
owner.run(() => handler(reason));
|
|
915
|
-
} catch (error) {
|
|
916
|
-
const handled = owner.handleError(error);
|
|
917
|
-
invokeRuntimeDebug("error", {
|
|
918
|
-
error,
|
|
919
|
-
owner,
|
|
920
|
-
phase: "event",
|
|
921
|
-
handled,
|
|
922
|
-
recovery: handled ? "handled" : "propagated"
|
|
923
|
-
});
|
|
924
|
-
if (!handled) throw error;
|
|
925
|
-
}
|
|
926
|
-
} : handler;
|
|
927
|
-
const binding = { handler: listener, owner, original: handler };
|
|
928
|
-
bindings.set(event, binding);
|
|
929
|
-
renderer.addEventListener(node, event, listener);
|
|
930
|
-
owner?.onDispose(() => {
|
|
931
|
-
if (bindings?.get(event) !== binding) return;
|
|
932
|
-
bindings.delete(event);
|
|
933
|
-
renderer.removeEventListener(node, event, listener);
|
|
934
|
-
});
|
|
935
|
-
}
|
|
936
|
-
__name(addEventListener, "addEventListener");
|
|
937
|
-
function removeEventListener(node, event, handler) {
|
|
938
|
-
const renderer = getRenderer();
|
|
939
|
-
const binding = eventBindings.get(node)?.get(event);
|
|
940
|
-
renderer.removeEventListener(node, event, binding?.handler ?? handler);
|
|
941
|
-
eventBindings.get(node)?.delete(event);
|
|
942
|
-
}
|
|
943
|
-
__name(removeEventListener, "removeEventListener");
|
|
944
|
-
function clear(container) {
|
|
945
|
-
getRenderer().clear(container);
|
|
946
|
-
}
|
|
947
|
-
__name(clear, "clear");
|
|
948
|
-
function createComponent(component, props, source) {
|
|
949
|
-
const owner = createOwner();
|
|
950
|
-
const componentName = component.displayName || component.name || "anonymous";
|
|
951
|
-
setOwnerDebugName(owner, source ? `${componentName} (${source.file}:${source.line}:${source.column})` : componentName);
|
|
952
|
-
owner.onError((reason) => {
|
|
953
|
-
attachSourceLocation(reason, source);
|
|
954
|
-
attachComponentContext(reason, componentName, owner.id);
|
|
955
|
-
throw reason;
|
|
956
|
-
});
|
|
957
|
-
let node;
|
|
958
|
-
try {
|
|
959
|
-
node = owner.run(() => component(props));
|
|
960
|
-
} catch (error) {
|
|
961
|
-
owner.dispose();
|
|
962
|
-
attachSourceLocation(error, source);
|
|
963
|
-
attachComponentContext(error, componentName, owner.id);
|
|
964
|
-
throw error;
|
|
965
|
-
}
|
|
966
|
-
associateNodeOwner(node, owner);
|
|
967
|
-
const hmrKey = component.hmrKey;
|
|
968
|
-
if (hmrKey) {
|
|
969
|
-
const instance = {
|
|
970
|
-
node,
|
|
971
|
-
parent: null,
|
|
972
|
-
refresh() {
|
|
973
|
-
const previous = instance.node;
|
|
974
|
-
const next = owner.run(() => component(props));
|
|
975
|
-
if (instance.parent && !isVobsFragment(previous) && !isVobsFragment(next)) {
|
|
976
|
-
getRenderer().insertBefore(instance.parent, next, previous);
|
|
977
|
-
getRenderer().removeChild(instance.parent, previous);
|
|
978
|
-
}
|
|
979
|
-
nodeOwners.delete(previous);
|
|
980
|
-
nodeOwners.set(next, owner);
|
|
981
|
-
associateHmrInstance(next, instance);
|
|
982
|
-
instance.node = next;
|
|
983
|
-
}
|
|
984
|
-
};
|
|
985
|
-
associateHmrInstance(node, instance);
|
|
986
|
-
const separator = hmrKey.lastIndexOf(":");
|
|
987
|
-
const moduleId = separator < 0 ? hmrKey : hmrKey.slice(0, separator);
|
|
988
|
-
const cleanup = registerHmrInstance(moduleId, instance);
|
|
989
|
-
owner.onDispose(cleanup);
|
|
990
|
-
}
|
|
991
|
-
return node;
|
|
992
|
-
}
|
|
993
|
-
__name(createComponent, "createComponent");
|
|
994
|
-
function attachSourceLocation(reason, source) {
|
|
995
|
-
if (!source || (!reason || typeof reason !== "object" && typeof reason !== "function")) return;
|
|
996
|
-
const error = reason;
|
|
997
|
-
if (error.vobsSource) return;
|
|
998
|
-
try {
|
|
999
|
-
Object.defineProperty(error, "vobsSource", {
|
|
1000
|
-
configurable: true,
|
|
1001
|
-
enumerable: false,
|
|
1002
|
-
value: source,
|
|
1003
|
-
writable: false
|
|
1004
|
-
});
|
|
1005
|
-
} catch {
|
|
1006
|
-
}
|
|
1007
|
-
}
|
|
1008
|
-
__name(attachSourceLocation, "attachSourceLocation");
|
|
1009
|
-
function attachComponentContext(reason, component, ownerId) {
|
|
1010
|
-
if (!reason || typeof reason !== "object" && typeof reason !== "function") return;
|
|
1011
|
-
const error = reason;
|
|
1012
|
-
try {
|
|
1013
|
-
if (!error.vobsComponent) Object.defineProperty(error, "vobsComponent", { configurable: true, enumerable: false, value: component, writable: false });
|
|
1014
|
-
if (!error.vobsOwnerId) Object.defineProperty(error, "vobsOwnerId", { configurable: true, enumerable: false, value: ownerId, writable: false });
|
|
1015
|
-
} catch {
|
|
1016
|
-
}
|
|
1017
|
-
}
|
|
1018
|
-
__name(attachComponentContext, "attachComponentContext");
|
|
1019
|
-
function createBlock(factory) {
|
|
1020
|
-
const owner = createOwner();
|
|
1021
|
-
setOwnerDebugName(owner, "dynamic");
|
|
1022
|
-
let node;
|
|
1023
|
-
try {
|
|
1024
|
-
node = owner.run(factory);
|
|
1025
|
-
} catch (error) {
|
|
1026
|
-
owner.dispose();
|
|
1027
|
-
throw error;
|
|
1028
|
-
}
|
|
1029
|
-
if (!node) {
|
|
1030
|
-
owner.dispose();
|
|
1031
|
-
return null;
|
|
1032
|
-
}
|
|
1033
|
-
associateNodeOwner(node, owner);
|
|
1034
|
-
return node;
|
|
1035
|
-
}
|
|
1036
|
-
__name(createBlock, "createBlock");
|
|
1037
|
-
function associateNodeOwner(node, owner) {
|
|
1038
|
-
nodeOwners.set(node, owner);
|
|
1039
|
-
}
|
|
1040
|
-
__name(associateNodeOwner, "associateNodeOwner");
|
|
1041
|
-
function disposeNodeOwner(node) {
|
|
1042
|
-
const owner = nodeOwners.get(node);
|
|
1043
|
-
if (!owner) return;
|
|
1044
|
-
nodeOwners.delete(node);
|
|
1045
|
-
owner.dispose();
|
|
1046
|
-
}
|
|
1047
|
-
__name(disposeNodeOwner, "disposeNodeOwner");
|
|
1048
|
-
|
|
1049
|
-
// packages/runtime/src/fragment.ts
|
|
1050
|
-
function createFragment(factory) {
|
|
1051
|
-
const start = createComment("vobs:fragment:start");
|
|
1052
|
-
const end = createComment("vobs:fragment:end");
|
|
1053
|
-
let parent = null;
|
|
1054
|
-
let initialized = false;
|
|
1055
|
-
const owner = getCurrentOwner();
|
|
1056
|
-
const fragment = {
|
|
1057
|
-
kind: "vobs-fragment",
|
|
1058
|
-
start,
|
|
1059
|
-
end,
|
|
1060
|
-
mount(nextParent, anchor) {
|
|
1061
|
-
if (parent && parent !== nextParent) {
|
|
1062
|
-
throw new Error("Vobs Fragment: \u4E0D\u80FD\u8DE8\u7236\u8282\u70B9\u79FB\u52A8 Fragment");
|
|
1063
|
-
}
|
|
1064
|
-
if (initialized) {
|
|
1065
|
-
moveRange(nextParent, start, end, anchor);
|
|
1066
|
-
return;
|
|
1067
|
-
}
|
|
1068
|
-
const renderer = getRenderer();
|
|
1069
|
-
renderer.insertBefore(nextParent, start, anchor);
|
|
1070
|
-
renderer.insertBefore(nextParent, end, anchor);
|
|
1071
|
-
parent = nextParent;
|
|
1072
|
-
initialized = true;
|
|
1073
|
-
if (owner) owner.run(() => factory(nextParent, end));
|
|
1074
|
-
else factory(nextParent, end);
|
|
1075
|
-
},
|
|
1076
|
-
unmount(nextParent) {
|
|
1077
|
-
if (!initialized || parent !== nextParent) {
|
|
1078
|
-
throw new Error("Vobs Fragment: Fragment \u4E0D\u5C5E\u4E8E\u6307\u5B9A\u7236\u8282\u70B9");
|
|
1079
|
-
}
|
|
1080
|
-
const renderer = getRenderer();
|
|
1081
|
-
let current = renderer.nextSibling(start);
|
|
1082
|
-
while (current && current !== end) {
|
|
1083
|
-
const next = renderer.nextSibling(current);
|
|
1084
|
-
renderer.removeChild(nextParent, current);
|
|
1085
|
-
current = next;
|
|
1086
|
-
}
|
|
1087
|
-
renderer.removeChild(nextParent, start);
|
|
1088
|
-
renderer.removeChild(nextParent, end);
|
|
1089
|
-
parent = null;
|
|
1090
|
-
initialized = false;
|
|
1091
|
-
}
|
|
1092
|
-
};
|
|
1093
|
-
return fragment;
|
|
1094
|
-
}
|
|
1095
|
-
__name(createFragment, "createFragment");
|
|
1096
|
-
function isVobsFragment(value) {
|
|
1097
|
-
return Boolean(value) && typeof value === "object" && value.kind === "vobs-fragment";
|
|
1098
|
-
}
|
|
1099
|
-
__name(isVobsFragment, "isVobsFragment");
|
|
1100
|
-
function moveRange(parent, start, end, anchor) {
|
|
1101
|
-
const renderer = getRenderer();
|
|
1102
|
-
const nodes = [start];
|
|
1103
|
-
let current = renderer.nextSibling(start);
|
|
1104
|
-
while (current) {
|
|
1105
|
-
nodes.push(current);
|
|
1106
|
-
if (current === end) break;
|
|
1107
|
-
current = renderer.nextSibling(current);
|
|
1108
|
-
}
|
|
1109
|
-
if (nodes[nodes.length - 1] !== end) {
|
|
1110
|
-
throw new Error("Vobs Fragment: \u627E\u4E0D\u5230\u7ED3\u675F\u951A\u70B9");
|
|
1111
|
-
}
|
|
1112
|
-
for (const node of nodes) renderer.insertBefore(parent, node, anchor);
|
|
1113
|
-
}
|
|
1114
|
-
__name(moveRange, "moveRange");
|
|
1115
|
-
|
|
1116
|
-
// packages/runtime/src/bind.ts
|
|
1117
|
-
function readSource(source) {
|
|
1118
|
-
return typeof source === "function" ? source() : source.value;
|
|
1119
|
-
}
|
|
1120
|
-
__name(readSource, "readSource");
|
|
1121
|
-
function bindText(node, source) {
|
|
1122
|
-
effect(() => {
|
|
1123
|
-
const value = readSource(source);
|
|
1124
|
-
setTextContent(node, value === null || value === void 0 || typeof value === "boolean" ? "" : String(value));
|
|
1125
|
-
});
|
|
1126
|
-
}
|
|
1127
|
-
__name(bindText, "bindText");
|
|
1128
|
-
function bindAttribute(node, key, source) {
|
|
1129
|
-
effect(() => {
|
|
1130
|
-
const value = readSource(source);
|
|
1131
|
-
setAttribute(node, key, key === "style" && value && typeof value === "object" && !Array.isArray(value) ? Object.entries(value).filter(([, entry]) => entry !== null && entry !== void 0 && entry !== false).map(([name, entry]) => `${name.replace(/[A-Z]/gu, (match) => `-${match.toLowerCase()}`)}:${String(entry)}`).join(";") : String(value));
|
|
1132
|
-
});
|
|
1133
|
-
}
|
|
1134
|
-
__name(bindAttribute, "bindAttribute");
|
|
1135
|
-
function bindProperty(node, key, source) {
|
|
1136
|
-
effect(() => {
|
|
1137
|
-
setProperty(node, key, readSource(source));
|
|
1138
|
-
});
|
|
1139
|
-
}
|
|
1140
|
-
__name(bindProperty, "bindProperty");
|
|
1141
|
-
|
|
1142
|
-
// packages/runtime/src/dynamic.ts
|
|
1143
|
-
function insertDynamic(parent, anchor, factory) {
|
|
1144
|
-
const marker = createComment("vobs:dynamic");
|
|
1145
|
-
insertBefore(parent, marker, anchor);
|
|
1146
|
-
let current = null;
|
|
1147
|
-
effect(() => {
|
|
1148
|
-
const next = createBlock(factory);
|
|
1149
|
-
if (next === current) return;
|
|
1150
|
-
if (current) removeChild(parent, current);
|
|
1151
|
-
current = next;
|
|
1152
|
-
if (current) insertBefore(parent, current, marker);
|
|
1153
|
-
});
|
|
1154
|
-
}
|
|
1155
|
-
__name(insertDynamic, "insertDynamic");
|
|
1156
|
-
function insertDynamicValue(parent, anchor, factory) {
|
|
1157
|
-
const marker = createComment("vobs:value");
|
|
1158
|
-
insertBefore(parent, marker, anchor);
|
|
1159
|
-
let current = null;
|
|
1160
|
-
let scope = null;
|
|
1161
|
-
effect(() => {
|
|
1162
|
-
const nextScope = createOwner();
|
|
1163
|
-
const next = nextScope.run(() => normalizeDynamicChild(factory()));
|
|
1164
|
-
if (next === current) {
|
|
1165
|
-
nextScope.dispose();
|
|
1166
|
-
return;
|
|
1167
|
-
}
|
|
1168
|
-
if (current) removeChild(parent, current);
|
|
1169
|
-
scope?.dispose();
|
|
1170
|
-
scope = nextScope;
|
|
1171
|
-
current = next;
|
|
1172
|
-
if (current) insertBefore(parent, current, marker);
|
|
1173
|
-
});
|
|
1174
|
-
}
|
|
1175
|
-
__name(insertDynamicValue, "insertDynamicValue");
|
|
1176
|
-
function normalizeDynamicChild(value) {
|
|
1177
|
-
if (value === null || value === void 0 || typeof value === "boolean") return null;
|
|
1178
|
-
if (typeof value === "string" || typeof value === "number") return createText(String(value));
|
|
1179
|
-
if (isVobsFragment(value) || isHostNode(value)) return value;
|
|
1180
|
-
if (Array.isArray(value)) {
|
|
1181
|
-
const children = value;
|
|
1182
|
-
if (children.length === 0) return null;
|
|
1183
|
-
return createFragment((parent, anchor) => {
|
|
1184
|
-
for (const child of children) {
|
|
1185
|
-
const node = normalizeDynamicChild(child);
|
|
1186
|
-
if (node) insertBefore(parent, node, anchor);
|
|
1187
|
-
}
|
|
1188
|
-
});
|
|
1189
|
-
}
|
|
1190
|
-
return null;
|
|
1191
|
-
}
|
|
1192
|
-
__name(normalizeDynamicChild, "normalizeDynamicChild");
|
|
1193
|
-
function isHostNode(value) {
|
|
1194
|
-
return Boolean(value && typeof value === "object" && ("nodeType" in value || (value.type === "element" || value.type === "text" || value.type === "comment")));
|
|
1195
|
-
}
|
|
1196
|
-
__name(isHostNode, "isHostNode");
|
|
1197
|
-
function insertList(parent, anchor, source, renderItem, keyOf) {
|
|
1198
|
-
const marker = createComment("vobs:list");
|
|
1199
|
-
insertBefore(parent, marker, anchor);
|
|
1200
|
-
let entries = [];
|
|
1201
|
-
const tracksIndex = renderItem.length >= 2;
|
|
1202
|
-
effect(() => {
|
|
1203
|
-
const items = source();
|
|
1204
|
-
let keys = null;
|
|
1205
|
-
if (keyOf) {
|
|
1206
|
-
keys = new Array(items.length);
|
|
1207
|
-
let allKeyed = items.length > 0;
|
|
1208
|
-
for (let index = 0; index < items.length; index++) {
|
|
1209
|
-
const key = keyOf(items[index], index);
|
|
1210
|
-
if (key == null) {
|
|
1211
|
-
allKeyed = false;
|
|
1212
|
-
break;
|
|
1213
|
-
}
|
|
1214
|
-
keys[index] = key;
|
|
1215
|
-
}
|
|
1216
|
-
if (!allKeyed) keys = null;
|
|
1217
|
-
}
|
|
1218
|
-
const nextEntries = keys ? reconcileKeyed(items, keys, entries, renderItem) : reconcileIndexed(items, entries, renderItem);
|
|
1219
|
-
const refreshed = tracksIndex ? /* @__PURE__ */ new Set() : null;
|
|
1220
|
-
for (let index = 0; index < nextEntries.length; index++) {
|
|
1221
|
-
const entry = nextEntries[index];
|
|
1222
|
-
if (tracksIndex) {
|
|
1223
|
-
if (entry.index !== index) {
|
|
1224
|
-
refreshListEntry(parent, entry, index, renderItem);
|
|
1225
|
-
refreshed.add(entry);
|
|
1226
|
-
}
|
|
1227
|
-
} else {
|
|
1228
|
-
entry.index = index;
|
|
1229
|
-
}
|
|
1230
|
-
}
|
|
1231
|
-
const retained = new Set(nextEntries);
|
|
1232
|
-
for (const entry of entries) {
|
|
1233
|
-
if (!retained.has(entry)) disposeEntry(parent, entry);
|
|
1234
|
-
}
|
|
1235
|
-
reorderListEntries(parent, marker, entries, nextEntries, refreshed);
|
|
1236
|
-
entries = nextEntries;
|
|
1237
|
-
});
|
|
1238
|
-
}
|
|
1239
|
-
__name(insertList, "insertList");
|
|
1240
|
-
function reorderListEntries(parent, marker, previous, nextEntries, forceInsert) {
|
|
1241
|
-
const count = nextEntries.length;
|
|
1242
|
-
if (count === 0) return;
|
|
1243
|
-
if (previous.length === 0) {
|
|
1244
|
-
let reference2 = marker;
|
|
1245
|
-
for (let index = count - 1; index >= 0; index--) {
|
|
1246
|
-
const node = nextEntries[index].node;
|
|
1247
|
-
insertBefore(parent, node, reference2);
|
|
1248
|
-
reference2 = node;
|
|
1249
|
-
}
|
|
1250
|
-
return;
|
|
1251
|
-
}
|
|
1252
|
-
const oldIndexOf = /* @__PURE__ */ new Map();
|
|
1253
|
-
for (let index = 0; index < previous.length; index++) oldIndexOf.set(previous[index], index);
|
|
1254
|
-
const seq = new Array(count);
|
|
1255
|
-
for (let index = 0; index < count; index++) {
|
|
1256
|
-
const entry = nextEntries[index];
|
|
1257
|
-
seq[index] = forceInsert?.has(entry) ? -1 : oldIndexOf.get(entry) ?? -1;
|
|
1258
|
-
}
|
|
1259
|
-
const keep = computeKeptByLis(seq);
|
|
1260
|
-
let reference = marker;
|
|
1261
|
-
for (let index = count - 1; index >= 0; index--) {
|
|
1262
|
-
const node = nextEntries[index].node;
|
|
1263
|
-
if (keep[index]) {
|
|
1264
|
-
reference = node;
|
|
1265
|
-
continue;
|
|
1266
|
-
}
|
|
1267
|
-
insertBefore(parent, node, reference);
|
|
1268
|
-
reference = node;
|
|
1269
|
-
}
|
|
1270
|
-
}
|
|
1271
|
-
__name(reorderListEntries, "reorderListEntries");
|
|
1272
|
-
function computeKeptByLis(seq) {
|
|
1273
|
-
const count = seq.length;
|
|
1274
|
-
const keep = new Array(count).fill(false);
|
|
1275
|
-
const tailsIndex = [];
|
|
1276
|
-
const tailsValue = [];
|
|
1277
|
-
const prev = new Array(count).fill(-1);
|
|
1278
|
-
for (let i = 0; i < count; i++) {
|
|
1279
|
-
const value = seq[i];
|
|
1280
|
-
if (value < 0) continue;
|
|
1281
|
-
let lo = 0;
|
|
1282
|
-
let hi = tailsValue.length;
|
|
1283
|
-
while (lo < hi) {
|
|
1284
|
-
const mid = lo + hi >> 1;
|
|
1285
|
-
if (tailsValue[mid] < value) lo = mid + 1;
|
|
1286
|
-
else hi = mid;
|
|
1287
|
-
}
|
|
1288
|
-
if (lo === tailsValue.length) {
|
|
1289
|
-
tailsValue.push(value);
|
|
1290
|
-
tailsIndex.push(i);
|
|
1291
|
-
} else {
|
|
1292
|
-
tailsValue[lo] = value;
|
|
1293
|
-
tailsIndex[lo] = i;
|
|
1294
|
-
}
|
|
1295
|
-
prev[i] = lo > 0 ? tailsIndex[lo - 1] : -1;
|
|
1296
|
-
}
|
|
1297
|
-
let cursor = tailsIndex.length > 0 ? tailsIndex[tailsIndex.length - 1] : -1;
|
|
1298
|
-
while (cursor >= 0) {
|
|
1299
|
-
keep[cursor] = true;
|
|
1300
|
-
cursor = prev[cursor];
|
|
1301
|
-
}
|
|
1302
|
-
return keep;
|
|
1303
|
-
}
|
|
1304
|
-
__name(computeKeptByLis, "computeKeptByLis");
|
|
1305
|
-
function reconcileKeyed(items, keys, entries, renderItem) {
|
|
1306
|
-
const previous = new Map(entries.map((entry) => [entry.key, entry]));
|
|
1307
|
-
const seen = /* @__PURE__ */ new Set();
|
|
1308
|
-
const nextEntries = [];
|
|
1309
|
-
for (let index = 0; index < items.length; index++) {
|
|
1310
|
-
const item = items[index];
|
|
1311
|
-
const key = keys[index];
|
|
1312
|
-
if (seen.has(key)) {
|
|
1313
|
-
console.warn(`Vobs: \u68C0\u6D4B\u5230\u91CD\u590D\u7684\u5217\u8868 key: ${String(key)}`);
|
|
1314
|
-
}
|
|
1315
|
-
seen.add(key);
|
|
1316
|
-
const entry = previous.get(key);
|
|
1317
|
-
if (entry) {
|
|
1318
|
-
previous.delete(key);
|
|
1319
|
-
if (isPrimitiveItem(item) && !Object.is(entry.value, item)) {
|
|
1320
|
-
nextEntries.push(createListEntry(item, index, key, renderItem));
|
|
1321
|
-
continue;
|
|
1322
|
-
}
|
|
1323
|
-
entry.item.value = item;
|
|
1324
|
-
entry.value = item;
|
|
1325
|
-
nextEntries.push(entry);
|
|
1326
|
-
continue;
|
|
1327
|
-
}
|
|
1328
|
-
nextEntries.push(createListEntry(item, index, key, renderItem));
|
|
1329
|
-
}
|
|
1330
|
-
return nextEntries;
|
|
1331
|
-
}
|
|
1332
|
-
__name(reconcileKeyed, "reconcileKeyed");
|
|
1333
|
-
function reconcileIndexed(items, entries, renderItem) {
|
|
1334
|
-
const nextEntries = [];
|
|
1335
|
-
for (let index = 0; index < items.length; index++) {
|
|
1336
|
-
const item = items[index];
|
|
1337
|
-
const entry = entries[index];
|
|
1338
|
-
if (entry && isPrimitiveItem(item) && !Object.is(entry.value, item)) {
|
|
1339
|
-
nextEntries.push(createListEntry(item, index, index, renderItem));
|
|
1340
|
-
continue;
|
|
1341
|
-
}
|
|
1342
|
-
if (entry) {
|
|
1343
|
-
entry.item.value = item;
|
|
1344
|
-
entry.value = item;
|
|
1345
|
-
nextEntries.push(entry);
|
|
1346
|
-
continue;
|
|
1347
|
-
}
|
|
1348
|
-
nextEntries.push(createListEntry(item, index, index, renderItem));
|
|
1349
|
-
}
|
|
1350
|
-
return nextEntries;
|
|
1351
|
-
}
|
|
1352
|
-
__name(reconcileIndexed, "reconcileIndexed");
|
|
1353
|
-
function isPrimitiveItem(item) {
|
|
1354
|
-
return item === null || typeof item !== "object";
|
|
1355
|
-
}
|
|
1356
|
-
__name(isPrimitiveItem, "isPrimitiveItem");
|
|
1357
|
-
function createListEntry(item, index, key, renderItem) {
|
|
1358
|
-
const owner = createOwner();
|
|
1359
|
-
let itemSignal;
|
|
1360
|
-
let viewOwner;
|
|
1361
|
-
let node;
|
|
1362
|
-
owner.run(() => {
|
|
1363
|
-
itemSignal = state(item);
|
|
1364
|
-
viewOwner = createOwner();
|
|
1365
|
-
node = viewOwner.run(() => renderItem(toReactiveItem(itemSignal, item), index));
|
|
1366
|
-
});
|
|
1367
|
-
associateNodeOwner(node, viewOwner);
|
|
1368
|
-
return { key, node, owner, viewOwner, item: itemSignal, value: item, index };
|
|
1369
|
-
}
|
|
1370
|
-
__name(createListEntry, "createListEntry");
|
|
1371
|
-
function refreshListEntry(parent, entry, index, renderItem) {
|
|
1372
|
-
removeChild(parent, entry.node);
|
|
1373
|
-
entry.index = index;
|
|
1374
|
-
const previousView = entry.viewOwner;
|
|
1375
|
-
entry.owner.run(() => {
|
|
1376
|
-
entry.viewOwner = createOwner();
|
|
1377
|
-
entry.node = entry.viewOwner.run(() => renderItem(
|
|
1378
|
-
toReactiveItem(entry.item, entry.value),
|
|
1379
|
-
index
|
|
1380
|
-
));
|
|
1381
|
-
});
|
|
1382
|
-
previousView.dispose();
|
|
1383
|
-
associateNodeOwner(entry.node, entry.viewOwner);
|
|
1384
|
-
}
|
|
1385
|
-
__name(refreshListEntry, "refreshListEntry");
|
|
1386
|
-
function toReactiveItem(item, initialValue) {
|
|
1387
|
-
if (typeof initialValue !== "object" || initialValue === null) {
|
|
1388
|
-
return initialValue;
|
|
1389
|
-
}
|
|
1390
|
-
return new Proxy(initialValue, {
|
|
1391
|
-
get(_target, property, receiver) {
|
|
1392
|
-
return Reflect.get(item.value, property, receiver);
|
|
1393
|
-
},
|
|
1394
|
-
has(_target, property) {
|
|
1395
|
-
return property in item.value;
|
|
1396
|
-
},
|
|
1397
|
-
ownKeys() {
|
|
1398
|
-
return Reflect.ownKeys(item.value);
|
|
1399
|
-
},
|
|
1400
|
-
getOwnPropertyDescriptor(_target, property) {
|
|
1401
|
-
return Object.getOwnPropertyDescriptor(item.value, property);
|
|
1402
|
-
}
|
|
1403
|
-
});
|
|
1404
|
-
}
|
|
1405
|
-
__name(toReactiveItem, "toReactiveItem");
|
|
1406
|
-
function disposeEntry(parent, entry) {
|
|
1407
|
-
removeChild(parent, entry.node);
|
|
1408
|
-
entry.owner.dispose();
|
|
1409
|
-
}
|
|
1410
|
-
__name(disposeEntry, "disposeEntry");
|
|
1411
|
-
|
|
1412
|
-
// packages/runtime/src/template.ts
|
|
1413
|
-
var templateCache = /* @__PURE__ */ new Map();
|
|
1414
|
-
function createTemplate(html) {
|
|
1415
|
-
let template = templateCache.get(html);
|
|
1416
|
-
if (!template) {
|
|
1417
|
-
template = document.createElement("template");
|
|
1418
|
-
template.innerHTML = html;
|
|
1419
|
-
templateCache.set(html, template);
|
|
1420
|
-
}
|
|
1421
|
-
return template;
|
|
1422
|
-
}
|
|
1423
|
-
__name(createTemplate, "createTemplate");
|
|
1424
|
-
function cloneTemplate(template) {
|
|
1425
|
-
const root = template.content.firstElementChild;
|
|
1426
|
-
if (!root) throw new Error("Vobs: \u9759\u6001\u6A21\u677F\u7F3A\u5C11\u6839\u5143\u7D20\uFF0C\u8BF7\u68C0\u67E5\u7F16\u8BD1\u4EA7\u7269");
|
|
1427
|
-
return root.cloneNode(true);
|
|
1428
|
-
}
|
|
1429
|
-
__name(cloneTemplate, "cloneTemplate");
|
|
1430
|
-
|
|
1431
|
-
// packages/runtime/src/error.ts
|
|
1432
|
-
var _VobsError = class _VobsError extends Error {
|
|
1433
|
-
constructor(options) {
|
|
1434
|
-
super(options.message);
|
|
1435
|
-
this.name = "VobsError";
|
|
1436
|
-
this.code = options.code;
|
|
1437
|
-
this.severity = options.severity ?? "error";
|
|
1438
|
-
this.layer = options.layer ?? "runtime";
|
|
1439
|
-
this.cause = options.cause;
|
|
1440
|
-
this.fix = options.fix;
|
|
1441
|
-
this.location = options.location;
|
|
1442
|
-
this.trace = options.trace;
|
|
1443
|
-
this.example = options.example;
|
|
1444
|
-
this.docs = options.docs;
|
|
1445
|
-
this.codeFrame = options.codeFrame;
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
1446
17
|
}
|
|
18
|
+
return to;
|
|
1447
19
|
};
|
|
1448
|
-
|
|
1449
|
-
var
|
|
1450
|
-
function createVobsError(options) {
|
|
1451
|
-
return new VobsError(options);
|
|
1452
|
-
}
|
|
1453
|
-
__name(createVobsError, "createVobsError");
|
|
1454
|
-
function isVobsError(value) {
|
|
1455
|
-
return value instanceof VobsError || Boolean(value && typeof value === "object" && typeof value.code === "string" && typeof value.message === "string" && typeof value.layer === "string");
|
|
1456
|
-
}
|
|
1457
|
-
__name(isVobsError, "isVobsError");
|
|
1458
|
-
function normalizeVobsError(value, defaults = {}) {
|
|
1459
|
-
if (value instanceof VobsError) return value;
|
|
1460
|
-
if (value instanceof Error) {
|
|
1461
|
-
const metadata = value;
|
|
1462
|
-
const code = defaults.code ?? (typeof metadata.vobsCode === "string" ? metadata.vobsCode : void 0);
|
|
1463
|
-
if (code) defineErrorMetadata(value, "code", code);
|
|
1464
|
-
defineErrorMetadata(value, "severity", defaults.severity ?? "error");
|
|
1465
|
-
defineErrorMetadata(value, "layer", defaults.layer ?? "runtime");
|
|
1466
|
-
const fix = defaults.fix ?? (typeof metadata.vobsHint === "string" ? metadata.vobsHint : void 0);
|
|
1467
|
-
if (fix) defineErrorMetadata(value, "fix", fix);
|
|
1468
|
-
const source = metadata.vobsSource;
|
|
1469
|
-
if (source && typeof source === "object" && typeof source.file === "string" && typeof source.line === "number" && typeof source.column === "number") {
|
|
1470
|
-
defineErrorMetadata(value, "location", source);
|
|
1471
|
-
}
|
|
1472
|
-
return value;
|
|
1473
|
-
}
|
|
1474
|
-
if (isVobsError(value)) {
|
|
1475
|
-
const candidate = value;
|
|
1476
|
-
return new VobsError({
|
|
1477
|
-
code: candidate.code,
|
|
1478
|
-
message: candidate.message,
|
|
1479
|
-
severity: candidate.severity ?? defaults.severity,
|
|
1480
|
-
layer: candidate.layer ?? defaults.layer,
|
|
1481
|
-
cause: candidate.cause,
|
|
1482
|
-
fix: candidate.fix ?? defaults.fix,
|
|
1483
|
-
location: candidate.location,
|
|
1484
|
-
trace: candidate.trace,
|
|
1485
|
-
example: candidate.example,
|
|
1486
|
-
docs: candidate.docs,
|
|
1487
|
-
codeFrame: candidate.codeFrame
|
|
1488
|
-
});
|
|
1489
|
-
}
|
|
1490
|
-
const message = String(value);
|
|
1491
|
-
return new VobsError({
|
|
1492
|
-
code: defaults.code ?? "VOBS_UNKNOWN",
|
|
1493
|
-
message,
|
|
1494
|
-
severity: defaults.severity ?? "error",
|
|
1495
|
-
layer: defaults.layer ?? "runtime",
|
|
1496
|
-
cause: void 0,
|
|
1497
|
-
fix: defaults.fix
|
|
1498
|
-
});
|
|
1499
|
-
}
|
|
1500
|
-
__name(normalizeVobsError, "normalizeVobsError");
|
|
1501
|
-
function defineErrorMetadata(target, key, value) {
|
|
1502
|
-
if (key in target) return;
|
|
1503
|
-
try {
|
|
1504
|
-
Object.defineProperty(target, key, { configurable: true, enumerable: false, value, writable: true });
|
|
1505
|
-
} catch {
|
|
1506
|
-
}
|
|
1507
|
-
}
|
|
1508
|
-
__name(defineErrorMetadata, "defineErrorMetadata");
|
|
1509
|
-
function formatVobsError(value, options = {}) {
|
|
1510
|
-
const error = normalizeVobsError(value);
|
|
1511
|
-
const code = error.code || "VOBS_UNKNOWN";
|
|
1512
|
-
const severity = error.severity || "error";
|
|
1513
|
-
if (options.environment === "production") return `[Vobs ${code}] ${error.message}`;
|
|
1514
|
-
const lines = [`[Vobs ${capitalize(severity)}] ${error.message}`, `Code: ${code}`];
|
|
1515
|
-
if (error.location) lines.push(`Location: ${error.location.file}:${error.location.line}:${error.location.column}`);
|
|
1516
|
-
if (error.codeFrame) lines.push("", error.codeFrame);
|
|
1517
|
-
if (error.cause !== void 0) lines.push(`Cause: ${formatCause(error.cause)}`);
|
|
1518
|
-
if (error.trace?.length) lines.push("", `Trace: ${error.trace.join(" \u2192 ")}`);
|
|
1519
|
-
if (error.fix) lines.push("", `Fix: ${error.fix}`);
|
|
1520
|
-
if (error.example) lines.push("", `Example:
|
|
1521
|
-
${error.example}`);
|
|
1522
|
-
if (error.docs) lines.push(`Docs: ${error.docs}`);
|
|
1523
|
-
if (options.includeStack && error.stack) lines.push("", error.stack);
|
|
1524
|
-
return lines.join("\n");
|
|
1525
|
-
}
|
|
1526
|
-
__name(formatVobsError, "formatVobsError");
|
|
1527
|
-
function formatCause(value) {
|
|
1528
|
-
return value instanceof Error ? `${value.name}: ${value.message}` : String(value);
|
|
1529
|
-
}
|
|
1530
|
-
__name(formatCause, "formatCause");
|
|
1531
|
-
function capitalize(value) {
|
|
1532
|
-
return value.slice(0, 1).toUpperCase() + value.slice(1);
|
|
1533
|
-
}
|
|
1534
|
-
__name(capitalize, "capitalize");
|
|
20
|
+
var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
|
|
21
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
1535
22
|
|
|
1536
|
-
// packages/
|
|
1537
|
-
|
|
1538
|
-
|
|
1539
|
-
|
|
1540
|
-
|
|
1541
|
-
|
|
1542
|
-
|
|
1543
|
-
|
|
1544
|
-
|
|
1545
|
-
|
|
1546
|
-
|
|
1547
|
-
|
|
1548
|
-
|
|
1549
|
-
|
|
1550
|
-
|
|
1551
|
-
|
|
1552
|
-
|
|
1553
|
-
|
|
1554
|
-
|
|
1555
|
-
|
|
1556
|
-
|
|
1557
|
-
|
|
1558
|
-
|
|
1559
|
-
|
|
1560
|
-
|
|
1561
|
-
|
|
1562
|
-
|
|
1563
|
-
|
|
1564
|
-
|
|
1565
|
-
|
|
1566
|
-
|
|
1567
|
-
|
|
1568
|
-
|
|
1569
|
-
|
|
1570
|
-
|
|
1571
|
-
|
|
1572
|
-
|
|
1573
|
-
|
|
1574
|
-
|
|
1575
|
-
|
|
1576
|
-
|
|
1577
|
-
|
|
1578
|
-
|
|
1579
|
-
|
|
1580
|
-
|
|
1581
|
-
|
|
1582
|
-
|
|
1583
|
-
|
|
1584
|
-
|
|
1585
|
-
|
|
1586
|
-
|
|
1587
|
-
|
|
1588
|
-
|
|
1589
|
-
|
|
1590
|
-
|
|
1591
|
-
|
|
1592
|
-
|
|
1593
|
-
|
|
1594
|
-
|
|
1595
|
-
|
|
1596
|
-
|
|
1597
|
-
|
|
1598
|
-
|
|
1599
|
-
|
|
1600
|
-
|
|
1601
|
-
|
|
1602
|
-
|
|
23
|
+
// packages/vobs/src/index.ts
|
|
24
|
+
var src_exports = {};
|
|
25
|
+
__export(src_exports, {
|
|
26
|
+
AsyncBoundary: () => import_runtime16.AsyncBoundary,
|
|
27
|
+
ErrorBoundary: () => import_runtime15.ErrorBoundary,
|
|
28
|
+
Fragment: () => Fragment,
|
|
29
|
+
Profiler: () => import_runtime16.Profiler,
|
|
30
|
+
Vobs: () => Vobs,
|
|
31
|
+
VobsError: () => import_runtime12.VobsError,
|
|
32
|
+
addEventListener: () => import_runtime7.addEventListener,
|
|
33
|
+
bindAttribute: () => import_runtime8.bindAttribute,
|
|
34
|
+
bindProperty: () => import_runtime8.bindProperty,
|
|
35
|
+
bindText: () => import_runtime8.bindText,
|
|
36
|
+
clear: () => import_runtime7.clear,
|
|
37
|
+
cloneTemplate: () => import_runtime11.cloneTemplate,
|
|
38
|
+
createComment: () => import_runtime7.createComment,
|
|
39
|
+
createComponent: () => import_runtime7.createComponent,
|
|
40
|
+
createDOMRenderer: () => import_dom2.createDOMRenderer,
|
|
41
|
+
createElement: () => import_runtime7.createElement,
|
|
42
|
+
createFragment: () => import_runtime7.createFragment,
|
|
43
|
+
createHmrStateStore: () => import_runtime13.createHmrStateStore,
|
|
44
|
+
createInjectionKey: () => createInjectionKey,
|
|
45
|
+
createTemplate: () => import_runtime11.createTemplate,
|
|
46
|
+
createText: () => import_runtime7.createText,
|
|
47
|
+
createVobs: () => createVobs,
|
|
48
|
+
createVobsError: () => import_runtime12.createVobsError,
|
|
49
|
+
disposeHmrModule: () => import_runtime13.disposeHmrModule,
|
|
50
|
+
disposeNodeOwner: () => import_runtime7.disposeNodeOwner,
|
|
51
|
+
formatVobsError: () => import_runtime12.formatVobsError,
|
|
52
|
+
getRenderer: () => import_runtime7.getRenderer,
|
|
53
|
+
getRuntimeDebugContext: () => import_runtime6.getRuntimeDebugContext,
|
|
54
|
+
getRuntimeDebugHooks: () => import_runtime6.getRuntimeDebugHooks,
|
|
55
|
+
inject: () => inject,
|
|
56
|
+
injectRequired: () => injectRequired,
|
|
57
|
+
insertAsyncBoundary: () => import_runtime16.insertAsyncBoundary,
|
|
58
|
+
insertBefore: () => import_runtime7.insertBefore,
|
|
59
|
+
insertBoundary: () => import_runtime15.insertBoundary,
|
|
60
|
+
insertDynamic: () => import_runtime10.insertDynamic,
|
|
61
|
+
insertDynamicValue: () => import_runtime10.insertDynamicValue,
|
|
62
|
+
insertErrorBoundary: () => import_runtime14.insertErrorBoundary,
|
|
63
|
+
insertList: () => import_runtime10.insertList,
|
|
64
|
+
insertProfiler: () => import_runtime16.insertProfiler,
|
|
65
|
+
isVobsError: () => import_runtime12.isVobsError,
|
|
66
|
+
isVobsFragment: () => import_runtime7.isVobsFragment,
|
|
67
|
+
normalizeDynamicChild: () => import_runtime10.normalizeDynamicChild,
|
|
68
|
+
normalizeVobsError: () => import_runtime12.normalizeVobsError,
|
|
69
|
+
provide: () => provide,
|
|
70
|
+
pushRuntimeDebugContext: () => import_runtime6.pushRuntimeDebugContext,
|
|
71
|
+
ref: () => import_runtime9.ref,
|
|
72
|
+
removeChild: () => import_runtime7.removeChild,
|
|
73
|
+
removeEventListener: () => import_runtime7.removeEventListener,
|
|
74
|
+
resolveComponent: () => import_runtime13.resolveComponent,
|
|
75
|
+
runWithRuntimeDebugContext: () => import_runtime6.runWithRuntimeDebugContext,
|
|
76
|
+
setAttribute: () => import_runtime7.setAttribute,
|
|
77
|
+
setProperty: () => import_runtime7.setProperty,
|
|
78
|
+
setRef: () => import_runtime9.setRef,
|
|
79
|
+
setRenderer: () => import_runtime7.setRenderer,
|
|
80
|
+
setRuntimeDebugHooks: () => import_runtime6.setRuntimeDebugHooks,
|
|
81
|
+
setStaticProps: () => import_runtime7.setStaticProps,
|
|
82
|
+
setTextContent: () => import_runtime7.setTextContent,
|
|
83
|
+
spreadProps: () => import_runtime7.spreadProps,
|
|
84
|
+
updateHmrModule: () => import_runtime13.updateHmrModule
|
|
85
|
+
});
|
|
86
|
+
module.exports = __toCommonJS(src_exports);
|
|
87
|
+
__reExport(src_exports, require("@vobs/reactivity"), module.exports);
|
|
88
|
+
var import_dom2 = require("@vobs/dom");
|
|
89
|
+
var import_runtime6 = require("@vobs/runtime");
|
|
90
|
+
var import_runtime7 = require("@vobs/runtime");
|
|
91
|
+
var import_runtime8 = require("@vobs/runtime");
|
|
92
|
+
var import_runtime9 = require("@vobs/runtime");
|
|
93
|
+
var import_runtime10 = require("@vobs/runtime");
|
|
94
|
+
var import_runtime11 = require("@vobs/runtime");
|
|
95
|
+
var import_runtime12 = require("@vobs/runtime");
|
|
96
|
+
var import_runtime13 = require("@vobs/runtime");
|
|
97
|
+
var import_runtime14 = require("@vobs/runtime");
|
|
98
|
+
var import_runtime15 = require("@vobs/runtime");
|
|
99
|
+
var import_runtime16 = require("@vobs/runtime");
|
|
1603
100
|
|
|
1604
|
-
// packages/
|
|
1605
|
-
|
|
1606
|
-
|
|
1607
|
-
|
|
1608
|
-
__name(insertErrorBoundary, "insertErrorBoundary");
|
|
1609
|
-
function ErrorBoundary(props) {
|
|
1610
|
-
return createFragment((parent, anchor) => insertErrorBoundary(parent, anchor, props));
|
|
1611
|
-
}
|
|
1612
|
-
__name(ErrorBoundary, "ErrorBoundary");
|
|
1613
|
-
|
|
1614
|
-
// packages/runtime/src/async-boundary.ts
|
|
1615
|
-
function insertAsyncBoundary(parent, anchor, options) {
|
|
1616
|
-
const boundary = createOwner();
|
|
1617
|
-
boundary.run(() => {
|
|
1618
|
-
const loading = state(true);
|
|
1619
|
-
const data = state(void 0);
|
|
1620
|
-
const resolved = state(false);
|
|
1621
|
-
const error = state(null);
|
|
1622
|
-
let token = 0;
|
|
1623
|
-
let previousKey;
|
|
1624
|
-
let initialized = false;
|
|
1625
|
-
let fallbackActive = false;
|
|
1626
|
-
boundary.onError((reason) => {
|
|
1627
|
-
if (fallbackActive) throw reason;
|
|
1628
|
-
error.value = normalizeError(reason);
|
|
1629
|
-
loading.value = false;
|
|
1630
|
-
});
|
|
1631
|
-
const start = /* @__PURE__ */ __name(() => {
|
|
1632
|
-
const current = ++token;
|
|
1633
|
-
loading.value = true;
|
|
1634
|
-
error.value = null;
|
|
1635
|
-
data.value = void 0;
|
|
1636
|
-
resolved.value = false;
|
|
1637
|
-
let promise;
|
|
1638
|
-
try {
|
|
1639
|
-
promise = typeof options.promise === "function" ? options.promise() : options.promise;
|
|
1640
|
-
} catch (reason) {
|
|
1641
|
-
if (current === token) {
|
|
1642
|
-
loading.value = false;
|
|
1643
|
-
error.value = normalizeError(reason);
|
|
1644
|
-
}
|
|
1645
|
-
return;
|
|
1646
|
-
}
|
|
1647
|
-
Promise.resolve(promise).then((value) => {
|
|
1648
|
-
if (current !== token || boundary.disposed) return;
|
|
1649
|
-
data.value = value;
|
|
1650
|
-
resolved.value = true;
|
|
1651
|
-
loading.value = false;
|
|
1652
|
-
}, (reason) => {
|
|
1653
|
-
if (current !== token || boundary.disposed) return;
|
|
1654
|
-
error.value = normalizeError(reason);
|
|
1655
|
-
loading.value = false;
|
|
1656
|
-
});
|
|
1657
|
-
}, "start");
|
|
1658
|
-
const retry = /* @__PURE__ */ __name(() => start(), "retry");
|
|
1659
|
-
start();
|
|
1660
|
-
insertDynamic(parent, anchor, () => {
|
|
1661
|
-
const key = options.resetKey?.();
|
|
1662
|
-
if (!initialized) {
|
|
1663
|
-
initialized = true;
|
|
1664
|
-
previousKey = key;
|
|
1665
|
-
} else if (!Object.is(previousKey, key)) {
|
|
1666
|
-
previousKey = key;
|
|
1667
|
-
start();
|
|
1668
|
-
}
|
|
1669
|
-
if (loading.value) {
|
|
1670
|
-
fallbackActive = false;
|
|
1671
|
-
return resolveView(options.loading);
|
|
1672
|
-
}
|
|
1673
|
-
if (error.value) {
|
|
1674
|
-
fallbackActive = true;
|
|
1675
|
-
return options.fallback?.(error.value, retry) ?? null;
|
|
1676
|
-
}
|
|
1677
|
-
fallbackActive = false;
|
|
1678
|
-
return resolved.value ? options.children(data.value) : resolveView(options.loading);
|
|
1679
|
-
});
|
|
1680
|
-
});
|
|
1681
|
-
}
|
|
1682
|
-
__name(insertAsyncBoundary, "insertAsyncBoundary");
|
|
1683
|
-
function AsyncBoundary(props) {
|
|
1684
|
-
return createFragment((parent, anchor) => insertAsyncBoundary(parent, anchor, props));
|
|
1685
|
-
}
|
|
1686
|
-
__name(AsyncBoundary, "AsyncBoundary");
|
|
1687
|
-
function resolveView(view) {
|
|
1688
|
-
if (!view) return null;
|
|
1689
|
-
return typeof view === "function" ? view() : view;
|
|
1690
|
-
}
|
|
1691
|
-
__name(resolveView, "resolveView");
|
|
1692
|
-
function normalizeError(reason) {
|
|
1693
|
-
return reason instanceof Error ? reason : new Error(String(reason));
|
|
1694
|
-
}
|
|
1695
|
-
__name(normalizeError, "normalizeError");
|
|
1696
|
-
|
|
1697
|
-
// packages/runtime/src/profiler.ts
|
|
1698
|
-
function insertProfiler(parent, anchor, options) {
|
|
1699
|
-
const profiler = createOwner();
|
|
1700
|
-
let mounted = false;
|
|
1701
|
-
profiler.run(() => {
|
|
1702
|
-
insertDynamic(parent, anchor, () => {
|
|
1703
|
-
const started = now();
|
|
1704
|
-
const value = options.children();
|
|
1705
|
-
const info = {
|
|
1706
|
-
id: options.id,
|
|
1707
|
-
phase: mounted ? "update" : "mount",
|
|
1708
|
-
duration: Math.max(0, now() - started),
|
|
1709
|
-
timestamp: Date.now()
|
|
1710
|
-
};
|
|
1711
|
-
mounted = true;
|
|
1712
|
-
try {
|
|
1713
|
-
options.onRender?.(info);
|
|
1714
|
-
} catch {
|
|
1715
|
-
}
|
|
1716
|
-
return value;
|
|
1717
|
-
});
|
|
1718
|
-
});
|
|
1719
|
-
}
|
|
1720
|
-
__name(insertProfiler, "insertProfiler");
|
|
1721
|
-
function Profiler(props) {
|
|
1722
|
-
return createFragment((parent, anchor) => insertProfiler(parent, anchor, props));
|
|
1723
|
-
}
|
|
1724
|
-
__name(Profiler, "Profiler");
|
|
1725
|
-
function now() {
|
|
1726
|
-
return typeof performance !== "undefined" && typeof performance.now === "function" ? performance.now() : Date.now();
|
|
1727
|
-
}
|
|
1728
|
-
__name(now, "now");
|
|
101
|
+
// packages/vobs/src/app.ts
|
|
102
|
+
var import_reactivity2 = require("@vobs/reactivity");
|
|
103
|
+
var import_dom = require("@vobs/dom");
|
|
104
|
+
var import_runtime2 = require("@vobs/runtime");
|
|
1729
105
|
|
|
1730
106
|
// packages/vobs/src/context.ts
|
|
107
|
+
var import_reactivity = require("@vobs/reactivity");
|
|
1731
108
|
var ownerProviders = /* @__PURE__ */ new WeakMap();
|
|
1732
109
|
function provide(key, value, options = {}) {
|
|
1733
|
-
const owner = getCurrentOwner();
|
|
110
|
+
const owner = (0, import_reactivity.getCurrentOwner)();
|
|
1734
111
|
if (!owner) throw new Error("Vobs: provide \u5FC5\u987B\u5728\u7EC4\u4EF6\u6216 Owner \u4F5C\u7528\u57DF\u5185\u8C03\u7528");
|
|
1735
112
|
provideToOwner(owner, key, value, options);
|
|
1736
113
|
}
|
|
1737
114
|
__name(provide, "provide");
|
|
1738
115
|
function inject(key, fallback) {
|
|
1739
|
-
const owner = getCurrentOwner();
|
|
116
|
+
const owner = (0, import_reactivity.getCurrentOwner)();
|
|
1740
117
|
const value = owner ? injectFromOwner(owner, key) : void 0;
|
|
1741
118
|
return value === void 0 ? fallback : value;
|
|
1742
119
|
}
|
|
@@ -1780,9 +157,9 @@ function createInjectionKey(description) {
|
|
|
1780
157
|
__name(createInjectionKey, "createInjectionKey");
|
|
1781
158
|
function createVobs(config) {
|
|
1782
159
|
if (!config.render) throw new Error("createVobs: render \u4E0D\u80FD\u4E3A\u7A7A");
|
|
1783
|
-
const renderer = config.renderer ?? createDOMRenderer();
|
|
1784
|
-
const rootOwner = createOwner();
|
|
1785
|
-
setOwnerDebugName(rootOwner, "App");
|
|
160
|
+
const renderer = config.renderer ?? (0, import_dom.createDOMRenderer)();
|
|
161
|
+
const rootOwner = (0, import_reactivity2.createOwner)();
|
|
162
|
+
(0, import_reactivity2.setOwnerDebugName)(rootOwner, "App");
|
|
1786
163
|
const cleanups = [];
|
|
1787
164
|
const errorHandlers = /* @__PURE__ */ new Set();
|
|
1788
165
|
const installed = /* @__PURE__ */ new Set();
|
|
@@ -1880,12 +257,12 @@ function createVobs(config) {
|
|
|
1880
257
|
if (hydrating && !renderer.beginHydration) {
|
|
1881
258
|
throw new Error("Vobs: \u5F53\u524D\u6E32\u67D3\u5668\u4E0D\u652F\u6301 Hydration");
|
|
1882
259
|
}
|
|
1883
|
-
setRenderer(renderer);
|
|
260
|
+
(0, import_runtime2.setRenderer)(renderer);
|
|
1884
261
|
try {
|
|
1885
262
|
if (hydrating) renderer.beginHydration?.();
|
|
1886
263
|
const rootNode = rootOwner.run(config.render);
|
|
1887
264
|
if (!hydrating) renderer.clear(container);
|
|
1888
|
-
if (rootNode) insertBefore(container, rootNode, null);
|
|
265
|
+
if (rootNode) (0, import_runtime2.insertBefore)(container, rootNode, null);
|
|
1889
266
|
if (hydrating) renderer.completeHydration?.();
|
|
1890
267
|
mounted = true;
|
|
1891
268
|
} catch (error) {
|
|
@@ -1917,7 +294,7 @@ function createVobs(config) {
|
|
|
1917
294
|
update() {
|
|
1918
295
|
if (destroyed) throw new Error("Vobs: \u5DF2\u9500\u6BC1\u7684\u5E94\u7528\u4E0D\u80FD\u66F4\u65B0");
|
|
1919
296
|
try {
|
|
1920
|
-
scheduler.flush();
|
|
297
|
+
import_reactivity2.scheduler.flush();
|
|
1921
298
|
} catch (error) {
|
|
1922
299
|
notifyError(error);
|
|
1923
300
|
throw error;
|
|
@@ -1950,99 +327,82 @@ function createVobs(config) {
|
|
|
1950
327
|
__name(createVobs, "createVobs");
|
|
1951
328
|
|
|
1952
329
|
// packages/vobs/src/jsx-dev-runtime.ts
|
|
330
|
+
var import_runtime4 = require("@vobs/runtime");
|
|
1953
331
|
function appendChildren(parent, children, anchor = null) {
|
|
1954
332
|
if (children === void 0 || children === null) return;
|
|
1955
333
|
const childArray = Array.isArray(children) ? children : [children];
|
|
1956
334
|
for (const child of childArray) {
|
|
1957
|
-
const node = normalizeDynamicChild(child);
|
|
1958
|
-
if (node) insertBefore(parent, node, anchor);
|
|
335
|
+
const node = (0, import_runtime4.normalizeDynamicChild)(child);
|
|
336
|
+
if (node) (0, import_runtime4.insertBefore)(parent, node, anchor);
|
|
1959
337
|
}
|
|
1960
338
|
}
|
|
1961
339
|
__name(appendChildren, "appendChildren");
|
|
1962
340
|
function Fragment(props) {
|
|
1963
|
-
return createFragment((parent, anchor) => appendChildren(parent, props?.children, anchor));
|
|
341
|
+
return (0, import_runtime4.createFragment)((parent, anchor) => appendChildren(parent, props?.children, anchor));
|
|
1964
342
|
}
|
|
1965
343
|
__name(Fragment, "Fragment");
|
|
1966
344
|
var Vobs = { Fragment };
|
|
1967
|
-
|
|
1968
|
-
exports
|
|
1969
|
-
|
|
1970
|
-
|
|
1971
|
-
|
|
1972
|
-
|
|
1973
|
-
|
|
1974
|
-
|
|
1975
|
-
|
|
1976
|
-
|
|
1977
|
-
|
|
1978
|
-
|
|
1979
|
-
|
|
1980
|
-
|
|
1981
|
-
|
|
1982
|
-
|
|
1983
|
-
|
|
1984
|
-
|
|
1985
|
-
|
|
1986
|
-
|
|
1987
|
-
|
|
1988
|
-
|
|
1989
|
-
|
|
1990
|
-
|
|
1991
|
-
|
|
1992
|
-
|
|
1993
|
-
|
|
1994
|
-
|
|
1995
|
-
|
|
1996
|
-
|
|
1997
|
-
|
|
1998
|
-
|
|
1999
|
-
|
|
2000
|
-
|
|
2001
|
-
|
|
2002
|
-
|
|
2003
|
-
|
|
2004
|
-
|
|
2005
|
-
|
|
2006
|
-
|
|
2007
|
-
|
|
2008
|
-
|
|
2009
|
-
|
|
2010
|
-
|
|
2011
|
-
|
|
2012
|
-
|
|
2013
|
-
|
|
2014
|
-
|
|
2015
|
-
|
|
2016
|
-
|
|
2017
|
-
|
|
2018
|
-
|
|
2019
|
-
|
|
2020
|
-
|
|
2021
|
-
|
|
2022
|
-
|
|
2023
|
-
|
|
2024
|
-
|
|
2025
|
-
|
|
2026
|
-
|
|
2027
|
-
|
|
2028
|
-
|
|
2029
|
-
|
|
2030
|
-
exports.scheduleLow = scheduleLow;
|
|
2031
|
-
exports.scheduler = scheduler;
|
|
2032
|
-
exports.setAttribute = setAttribute;
|
|
2033
|
-
exports.setDebugHooks = setDebugHooks;
|
|
2034
|
-
exports.setOwnerDebugName = setOwnerDebugName;
|
|
2035
|
-
exports.setProperty = setProperty;
|
|
2036
|
-
exports.setRef = setRef;
|
|
2037
|
-
exports.setRenderer = setRenderer;
|
|
2038
|
-
exports.setRuntimeDebugHooks = setRuntimeDebugHooks;
|
|
2039
|
-
exports.setSignalDebugName = setSignalDebugName;
|
|
2040
|
-
exports.setStaticProps = setStaticProps;
|
|
2041
|
-
exports.setTextContent = setTextContent;
|
|
2042
|
-
exports.spreadProps = spreadProps;
|
|
2043
|
-
exports.state = state;
|
|
2044
|
-
exports.untrack = untrack;
|
|
2045
|
-
exports.updateHmrModule = updateHmrModule;
|
|
2046
|
-
exports.useId = useId;
|
|
2047
|
-
//# sourceMappingURL=index.cjs.map
|
|
345
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
346
|
+
0 && (module.exports = {
|
|
347
|
+
AsyncBoundary,
|
|
348
|
+
ErrorBoundary,
|
|
349
|
+
Fragment,
|
|
350
|
+
Profiler,
|
|
351
|
+
Vobs,
|
|
352
|
+
VobsError,
|
|
353
|
+
addEventListener,
|
|
354
|
+
bindAttribute,
|
|
355
|
+
bindProperty,
|
|
356
|
+
bindText,
|
|
357
|
+
clear,
|
|
358
|
+
cloneTemplate,
|
|
359
|
+
createComment,
|
|
360
|
+
createComponent,
|
|
361
|
+
createDOMRenderer,
|
|
362
|
+
createElement,
|
|
363
|
+
createFragment,
|
|
364
|
+
createHmrStateStore,
|
|
365
|
+
createInjectionKey,
|
|
366
|
+
createTemplate,
|
|
367
|
+
createText,
|
|
368
|
+
createVobs,
|
|
369
|
+
createVobsError,
|
|
370
|
+
disposeHmrModule,
|
|
371
|
+
disposeNodeOwner,
|
|
372
|
+
formatVobsError,
|
|
373
|
+
getRenderer,
|
|
374
|
+
getRuntimeDebugContext,
|
|
375
|
+
getRuntimeDebugHooks,
|
|
376
|
+
inject,
|
|
377
|
+
injectRequired,
|
|
378
|
+
insertAsyncBoundary,
|
|
379
|
+
insertBefore,
|
|
380
|
+
insertBoundary,
|
|
381
|
+
insertDynamic,
|
|
382
|
+
insertDynamicValue,
|
|
383
|
+
insertErrorBoundary,
|
|
384
|
+
insertList,
|
|
385
|
+
insertProfiler,
|
|
386
|
+
isVobsError,
|
|
387
|
+
isVobsFragment,
|
|
388
|
+
normalizeDynamicChild,
|
|
389
|
+
normalizeVobsError,
|
|
390
|
+
provide,
|
|
391
|
+
pushRuntimeDebugContext,
|
|
392
|
+
ref,
|
|
393
|
+
removeChild,
|
|
394
|
+
removeEventListener,
|
|
395
|
+
resolveComponent,
|
|
396
|
+
runWithRuntimeDebugContext,
|
|
397
|
+
setAttribute,
|
|
398
|
+
setProperty,
|
|
399
|
+
setRef,
|
|
400
|
+
setRenderer,
|
|
401
|
+
setRuntimeDebugHooks,
|
|
402
|
+
setStaticProps,
|
|
403
|
+
setTextContent,
|
|
404
|
+
spreadProps,
|
|
405
|
+
updateHmrModule,
|
|
406
|
+
...require("@vobs/reactivity")
|
|
407
|
+
});
|
|
2048
408
|
//# sourceMappingURL=index.cjs.map
|