@vobs/layout 1.2.1 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/dist/breadcrumb.cjs +62 -577
  2. package/dist/breadcrumb.cjs.map +1 -1
  3. package/dist/breadcrumb.js +42 -562
  4. package/dist/breadcrumb.js.map +1 -1
  5. package/dist/context.cjs +30 -163
  6. package/dist/context.cjs.map +1 -1
  7. package/dist/context.js +8 -160
  8. package/dist/context.js.map +1 -1
  9. package/dist/header.cjs +69 -583
  10. package/dist/header.cjs.map +1 -1
  11. package/dist/header.js +40 -562
  12. package/dist/header.js.map +1 -1
  13. package/dist/index.cjs +281 -1018
  14. package/dist/index.cjs.map +1 -1
  15. package/dist/index.js +282 -981
  16. package/dist/index.js.map +1 -1
  17. package/dist/layout.cjs +201 -937
  18. package/dist/layout.cjs.map +1 -1
  19. package/dist/layout.js +196 -910
  20. package/dist/layout.js.map +1 -1
  21. package/dist/menu.cjs +81 -645
  22. package/dist/menu.cjs.map +1 -1
  23. package/dist/menu.js +55 -624
  24. package/dist/menu.js.map +1 -1
  25. package/dist/sidebar.cjs +105 -759
  26. package/dist/sidebar.cjs.map +1 -1
  27. package/dist/sidebar.js +82 -733
  28. package/dist/sidebar.js.map +1 -1
  29. package/dist/tabs.cjs +70 -634
  30. package/dist/tabs.cjs.map +1 -1
  31. package/dist/tabs.js +48 -617
  32. package/dist/tabs.js.map +1 -1
  33. package/dist/types.cjs +18 -2
  34. package/dist/types.cjs.map +1 -1
  35. package/dist/types.js +0 -2
  36. package/dist/types.js.map +1 -1
  37. package/dist/utils.cjs +61 -532
  38. package/dist/utils.cjs.map +1 -1
  39. package/dist/utils.js +23 -508
  40. package/dist/utils.js.map +1 -1
  41. package/dist/viewport.cjs +34 -261
  42. package/dist/viewport.cjs.map +1 -1
  43. package/dist/viewport.js +7 -256
  44. package/dist/viewport.js.map +1 -1
  45. package/package.json +3 -3
package/dist/layout.js CHANGED
@@ -1,786 +1,48 @@
1
1
  var __defProp = Object.defineProperty;
2
2
  var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
3
 
4
- // packages/reactivity/src/debug.ts
5
- var activeDebugHooks = null;
6
- var signalNames = /* @__PURE__ */ new WeakMap();
7
- function hasDebugHooks() {
8
- return activeDebugHooks !== null;
9
- }
10
- __name(hasDebugHooks, "hasDebugHooks");
11
- function setSignalDebugName(signal, name) {
12
- signalNames.set(signal, name);
13
- invokeDebug("signalNamed", signal, name);
14
- }
15
- __name(setSignalDebugName, "setSignalDebugName");
16
- function invokeDebug(name, ...args) {
17
- return;
18
- }
19
- __name(invokeDebug, "invokeDebug");
20
-
21
- // packages/reactivity/src/owner.ts
22
- var currentOwner = null;
23
- var nextOwnerId = 1;
24
- var ownerNames = /* @__PURE__ */ new WeakMap();
25
- function createOwner() {
26
- const parent = currentOwner;
27
- let disposed = parent?.disposed ?? false;
28
- const children = [];
29
- const cleanups = [];
30
- const errorHandlers = /* @__PURE__ */ new Set();
31
- const owner = {
32
- id: `owner-${nextOwnerId++}`,
33
- parent,
34
- children,
35
- depth: (parent?.depth ?? -1) + 1,
36
- get disposed() {
37
- return disposed;
38
- },
39
- run(fn) {
40
- if (disposed) throw new Error("Vobs: \u5DF2\u9500\u6BC1\u7684 Owner \u4E0D\u80FD\u7EE7\u7EED\u8FD0\u884C");
41
- const previous = currentOwner;
42
- currentOwner = owner;
43
- try {
44
- return fn();
45
- } finally {
46
- currentOwner = previous;
47
- }
48
- },
49
- addCleanup(cleanup) {
50
- if (disposed) {
51
- cleanup();
52
- return;
53
- }
54
- cleanups.push(cleanup);
55
- },
56
- onDispose(cleanup) {
57
- owner.addCleanup(cleanup);
58
- },
59
- onError(handler) {
60
- errorHandlers.add(handler);
61
- const remove = /* @__PURE__ */ __name(() => errorHandlers.delete(handler), "remove");
62
- owner.addCleanup(remove);
63
- return remove;
64
- },
65
- handleError(error) {
66
- for (const handler of [...errorHandlers].reverse()) {
67
- try {
68
- handler(error);
69
- return true;
70
- } catch (handlerError) {
71
- return parent?.handleError(handlerError) ?? false;
72
- }
73
- }
74
- return parent?.handleError(error) ?? false;
75
- },
76
- dispose() {
77
- if (disposed) return;
78
- disposed = true;
79
- for (const child of [...children]) child.dispose();
80
- children.length = 0;
81
- let firstError;
82
- for (let index = cleanups.length - 1; index >= 0; index--) {
83
- try {
84
- cleanups[index]();
85
- } catch (error) {
86
- firstError ?? (firstError = error);
87
- }
88
- }
89
- cleanups.length = 0;
90
- if (parent) {
91
- const index = parent.children.indexOf(owner);
92
- if (index >= 0) parent.children.splice(index, 1);
93
- }
94
- if (firstError) throw firstError;
95
- }
96
- };
97
- if (parent && !parent.disposed) parent.children.push(owner);
98
- return owner;
99
- }
100
- __name(createOwner, "createOwner");
101
- function setOwnerDebugName(owner, name) {
102
- ownerNames.set(owner, name);
103
- }
104
- __name(setOwnerDebugName, "setOwnerDebugName");
105
- function getCurrentOwner() {
106
- return currentOwner;
107
- }
108
- __name(getCurrentOwner, "getCurrentOwner");
109
- function onDispose(cleanup) {
110
- const owner = getCurrentOwner();
111
- if (!owner) throw new Error("Vobs: onDispose \u5FC5\u987B\u5728 Owner \u4F5C\u7528\u57DF\u5185\u8C03\u7528");
112
- owner.onDispose(cleanup);
113
- }
114
- __name(onDispose, "onDispose");
115
-
116
- // packages/reactivity/src/signal.ts
117
- var currentSubscriber = null;
118
- function getCurrentSubscriber() {
119
- return currentSubscriber;
120
- }
121
- __name(getCurrentSubscriber, "getCurrentSubscriber");
122
- function setCurrentSubscriber(subscriber) {
123
- currentSubscriber = subscriber;
124
- }
125
- __name(setCurrentSubscriber, "setCurrentSubscriber");
126
- function trackDependency(dependency) {
127
- if (!currentSubscriber || currentSubscriber.disposed) return;
128
- !currentSubscriber.dependencies.has(dependency);
129
- currentSubscriber.dependencies.add(dependency);
130
- }
131
- __name(trackDependency, "trackDependency");
132
- function state(initialValue, debugName) {
133
- let value = initialValue;
134
- let disposed = false;
135
- const subscribers = /* @__PURE__ */ new Set();
136
- const signalInstance = {
137
- get value() {
138
- const subscriber = getCurrentSubscriber();
139
- if (subscriber && !subscriber.disposed) {
140
- subscribers.add(subscriber);
141
- trackDependency(signalInstance);
142
- }
143
- return value;
144
- },
145
- set value(nextValue) {
146
- if (disposed || Object.is(value, nextValue)) return;
147
- value = nextValue;
148
- for (const subscriber of [...subscribers]) subscriber.notify();
149
- },
150
- unsubscribe(subscriber) {
151
- subscribers.delete(subscriber);
152
- },
153
- // 与 `.value =` 赋值同一条路径:判等短路、debug hook、notify 全部一致。
154
- // 以闭包实现,可安全地作为回调直接传递(无 this 绑定问题)。
155
- set(next) {
156
- signalInstance.value = next;
157
- },
158
- dispose() {
159
- if (disposed) return;
160
- disposed = true;
161
- subscribers.clear();
162
- }
163
- };
164
- const owner = getCurrentOwner();
165
- owner?.addCleanup(signalInstance.dispose);
166
- if (debugName?.trim()) setSignalDebugName(signalInstance, debugName.trim());
167
- return signalInstance;
168
- }
169
- __name(state, "state");
170
-
171
- // packages/reactivity/src/scheduler.ts
172
- var _Scheduler = class _Scheduler {
173
- constructor() {
174
- this.dirtyEffects = /* @__PURE__ */ new Set();
175
- this.lowPriorityEffects = /* @__PURE__ */ new Set();
176
- // flush 不可重入(flushing 标志保证),缓冲数组可在轮次间安全复用,避免每轮分配。
177
- this.normalBuffer = [];
178
- this.lowBuffer = [];
179
- this.flushing = false;
180
- this.scheduled = false;
181
- this.batchDepth = 0;
182
- }
183
- schedule(effect2) {
184
- if (effect2.disposed) return;
185
- this.dirtyEffects.add(effect2);
186
- this.lowPriorityEffects.delete(effect2);
187
- this.ensureScheduled();
188
- }
189
- /** Queue an effect behind normal updates while preserving deterministic order. */
190
- scheduleLow(effect2) {
191
- if (effect2.disposed) return;
192
- if (!this.dirtyEffects.has(effect2)) this.lowPriorityEffects.add(effect2);
193
- this.ensureScheduled();
194
- }
195
- ensureScheduled() {
196
- if (this.batchDepth === 0 && !this.flushing && !this.scheduled) {
197
- this.scheduled = true;
198
- queueMicrotask(() => {
199
- this.scheduled = false;
200
- this.flush();
201
- });
202
- }
203
- }
204
- remove(effect2) {
205
- this.dirtyEffects.delete(effect2);
206
- this.lowPriorityEffects.delete(effect2);
207
- }
208
- batch(fn) {
209
- this.batchDepth++;
210
- try {
211
- return fn();
212
- } finally {
213
- this.batchDepth--;
214
- if (this.batchDepth === 0) this.flush();
215
- }
216
- }
217
- flush() {
218
- if (this.flushing || this.batchDepth > 0) return;
219
- this.flushing = true;
220
- let rounds = 0;
221
- let firstError;
222
- let hasError = false;
223
- try {
224
- while (this.dirtyEffects.size > 0 || this.lowPriorityEffects.size > 0) {
225
- if (++rounds > 100) {
226
- this.dirtyEffects.clear();
227
- this.lowPriorityEffects.clear();
228
- throw new Error("Vobs: \u54CD\u5E94\u5F0F\u66F4\u65B0\u8D85\u8FC7 100 \u8F6E\uFF0C\u53EF\u80FD\u5B58\u5728\u5FAA\u73AF\u4F9D\u8D56");
229
- }
230
- this.collectRunnable(this.dirtyEffects, this.normalBuffer);
231
- this.collectRunnable(this.lowPriorityEffects, this.lowBuffer);
232
- sortEffects(this.normalBuffer);
233
- sortEffects(this.lowBuffer);
234
- for (const effect2 of this.normalBuffer) {
235
- try {
236
- effect2.run();
237
- } catch (error) {
238
- if (!hasError) {
239
- firstError = error;
240
- hasError = true;
241
- }
242
- }
243
- }
244
- for (const effect2 of this.lowBuffer) {
245
- try {
246
- effect2.run();
247
- } catch (error) {
248
- if (!hasError) {
249
- firstError = error;
250
- hasError = true;
251
- }
252
- }
253
- }
254
- this.normalBuffer.length = 0;
255
- this.lowBuffer.length = 0;
256
- }
257
- } finally {
258
- this.normalBuffer.length = 0;
259
- this.lowBuffer.length = 0;
260
- this.flushing = false;
261
- }
262
- if (hasError) throw firstError;
263
- }
264
- /** 收集未 disposed 的 effect 并清空源集合;run() 期间新调度的 effect 留给下一轮。 */
265
- collectRunnable(source, target) {
266
- for (const effect2 of source) {
267
- if (!effect2.disposed) target.push(effect2);
268
- }
269
- source.clear();
270
- }
271
- };
272
- __name(_Scheduler, "Scheduler");
273
- var Scheduler = _Scheduler;
274
- function sortEffects(effects) {
275
- if (effects.length > 1) {
276
- effects.sort((a, b) => b.depth - a.depth || a.order - b.order);
277
- }
278
- }
279
- __name(sortEffects, "sortEffects");
280
- var scheduler = new Scheduler();
281
-
282
- // packages/reactivity/src/effect.ts
283
- var nextEffectOrder = 1;
284
- function cleanupDependencies(subscriber) {
285
- for (const dependency of subscriber.dependencies) {
286
- dependency.unsubscribe(subscriber);
287
- }
288
- subscriber.dependencies.clear();
289
- }
290
- __name(cleanupDependencies, "cleanupDependencies");
291
- function effect(callback) {
292
- const owner = getCurrentOwner();
293
- let cleanup;
294
- let dirty = true;
295
- let disposed = false;
296
- const eff = {
297
- order: nextEffectOrder++,
298
- depth: owner?.depth ?? 0,
299
- dependencies: /* @__PURE__ */ new Set(),
300
- get disposed() {
301
- return disposed;
302
- },
303
- notify() {
304
- if (disposed || dirty) return;
305
- dirty = true;
306
- scheduler.schedule(eff);
307
- },
308
- run() {
309
- if (disposed || !dirty) return;
310
- dirty = false;
311
- const previousCleanup = cleanup;
312
- cleanup = void 0;
313
- let cleanupError;
314
- if (previousCleanup) {
315
- try {
316
- previousCleanup();
317
- } catch (error) {
318
- const handled2 = owner?.handleError(error) ?? false;
319
- if (!handled2) cleanupError = error;
320
- }
321
- }
322
- cleanupDependencies(eff);
323
- const previous = getCurrentSubscriber();
324
- setCurrentSubscriber(eff);
325
- let thrown;
326
- let handled = false;
327
- try {
328
- const result = owner ? owner.run(callback) : callback();
329
- cleanup = typeof result === "function" ? result : void 0;
330
- } catch (error) {
331
- thrown = error;
332
- handled = owner?.handleError(error) ?? false;
333
- if (!handled) throw error;
334
- } finally {
335
- setCurrentSubscriber(previous);
336
- }
337
- if (cleanupError && !thrown) throw cleanupError;
338
- },
339
- scheduleLow() {
340
- if (disposed || dirty) return;
341
- dirty = true;
342
- scheduler.scheduleLow(eff);
343
- },
344
- dispose() {
345
- if (disposed) return;
346
- disposed = true;
347
- dirty = false;
348
- scheduler.remove(eff);
349
- const previousCleanup = cleanup;
350
- cleanup = void 0;
351
- let cleanupError;
352
- if (previousCleanup) {
353
- try {
354
- previousCleanup();
355
- } catch (error) {
356
- const handled = owner?.handleError(error) ?? false;
357
- if (!handled) cleanupError = error;
358
- }
359
- }
360
- cleanupDependencies(eff);
361
- if (cleanupError) throw cleanupError;
362
- }
363
- };
364
- owner?.addCleanup(eff.dispose);
365
- eff.run();
366
- return eff;
367
- }
368
- __name(effect, "effect");
369
-
370
- // packages/reactivity/src/memo.ts
371
- function memo(compute) {
372
- let cached;
373
- let dirty = true;
374
- let disposed = false;
375
- const subscribers = /* @__PURE__ */ new Set();
376
- const memoSubscriber = {
377
- dependencies: /* @__PURE__ */ new Set(),
378
- get disposed() {
379
- return disposed;
380
- },
381
- notify() {
382
- if (disposed || dirty) return;
383
- dirty = true;
384
- for (const subscriber of [...subscribers]) subscriber.notify();
385
- }
386
- };
387
- const memoSignal = {
388
- get value() {
389
- const subscriber = getCurrentSubscriber();
390
- if (subscriber && !subscriber.disposed) {
391
- subscribers.add(subscriber);
392
- trackDependency(memoSignal);
393
- }
394
- if (dirty) {
395
- cleanupDependencies(memoSubscriber);
396
- const previous = getCurrentSubscriber();
397
- setCurrentSubscriber(memoSubscriber);
398
- try {
399
- cached = compute();
400
- dirty = false;
401
- } finally {
402
- setCurrentSubscriber(previous);
403
- }
404
- }
405
- return cached;
406
- },
407
- set value(_) {
408
- throw new Error("memo: \u6D3E\u751F\u503C\u4E0D\u80FD\u76F4\u63A5\u8D4B\u503C");
409
- },
410
- unsubscribe(subscriber) {
411
- subscribers.delete(subscriber);
412
- },
413
- dispose() {
414
- if (disposed) return;
415
- disposed = true;
416
- subscribers.clear();
417
- cleanupDependencies(memoSubscriber);
418
- }
419
- };
420
- const owner = getCurrentOwner();
421
- owner?.addCleanup(memoSignal.dispose);
422
- return memoSignal;
423
- }
424
- __name(memo, "memo");
425
-
426
- // packages/runtime/src/debug.ts
427
- var activeRuntimeDebugHooks = null;
428
- function getRuntimeDebugHooks() {
429
- return activeRuntimeDebugHooks;
430
- }
431
- __name(getRuntimeDebugHooks, "getRuntimeDebugHooks");
432
- function invokeRuntimeDebug(name, ...args) {
433
- return;
434
- }
435
- __name(invokeRuntimeDebug, "invokeRuntimeDebug");
436
- function readDebugValue(read) {
437
- try {
438
- return read();
439
- } catch {
440
- return "[Uninspectable]";
441
- }
442
- }
443
- __name(readDebugValue, "readDebugValue");
444
- function describeDebugNode(node) {
445
- if (!node || typeof node !== "object") return "node";
446
- const value = node;
447
- const name = typeof value.tagName === "string" ? value.tagName.toLowerCase() : typeof value.nodeName === "string" ? value.nodeName.toLowerCase() : "node";
448
- const id = typeof value.id === "string" && value.id ? `#${value.id}` : "";
449
- const className = typeof value.className === "string" && value.className ? `.${value.className.trim().split(/\s+/).filter(Boolean).join(".")}` : "";
450
- return `${name}${id}${className}`;
451
- }
452
- __name(describeDebugNode, "describeDebugNode");
453
-
454
- // packages/runtime/src/hmr.ts
455
- var globalTarget = globalThis;
456
- var hmrGlobal = globalTarget.__VOBS_HMR__ ?? { modules: /* @__PURE__ */ new Map() };
457
- globalTarget.__VOBS_HMR__ = hmrGlobal;
458
- function registerHmrInstance(moduleId, instance) {
459
- const instances = getModule(moduleId).instances;
460
- instances.add(instance);
461
- return () => instances.delete(instance);
462
- }
463
- __name(registerHmrInstance, "registerHmrInstance");
464
- function markHmrInstanceMounted(node, parent) {
465
- const instance = hmrInstances.get(node);
466
- if (instance) instance.parent = parent;
467
- }
468
- __name(markHmrInstanceMounted, "markHmrInstanceMounted");
469
- function getModule(moduleId) {
470
- let module = hmrGlobal.modules.get(moduleId);
471
- if (!module) {
472
- module = { components: /* @__PURE__ */ new Map(), state: /* @__PURE__ */ new Map(), instances: /* @__PURE__ */ new Set() };
473
- hmrGlobal.modules.set(moduleId, module);
474
- }
475
- return module;
476
- }
477
- __name(getModule, "getModule");
478
- var hmrInstances = /* @__PURE__ */ new WeakMap();
479
- function associateHmrInstance(node, instance) {
480
- hmrInstances.set(node, instance);
481
- }
482
- __name(associateHmrInstance, "associateHmrInstance");
483
- var nodeOwners = /* @__PURE__ */ new WeakMap();
484
- var eventBindings = /* @__PURE__ */ new WeakMap();
485
- function getRenderer() {
486
- {
487
- throw new Error("\u6E32\u67D3\u5668\u672A\u521D\u59CB\u5316");
488
- }
489
- }
490
- __name(getRenderer, "getRenderer");
491
- function createText(content) {
492
- return getRenderer().createText(content);
493
- }
494
- __name(createText, "createText");
495
- function createElement(tag) {
496
- return getRenderer().createElement(tag);
497
- }
498
- __name(createElement, "createElement");
499
- function createComment(content) {
500
- return getRenderer().createComment(content);
501
- }
502
- __name(createComment, "createComment");
503
- function insertBefore(parent, child, anchor) {
504
- if (isVobsFragment(child)) {
505
- child.mount(parent, isVobsFragment(anchor) ? anchor.start : anchor);
506
- return;
507
- }
508
- getRenderer().insertBefore(parent, child, isVobsFragment(anchor) ? anchor.start : anchor);
509
- markHmrInstanceMounted(child, parent);
510
- }
511
- __name(insertBefore, "insertBefore");
512
- function removeChild(parent, child) {
513
- disposeNodeOwner(child);
514
- if (isVobsFragment(child)) {
515
- child.unmount(parent);
516
- return;
517
- }
518
- getRenderer().removeChild(parent, child);
519
- }
520
- __name(removeChild, "removeChild");
521
- function setTextContent(node, content) {
522
- getRenderer().setTextContent(node, content);
523
- }
524
- __name(setTextContent, "setTextContent");
525
- function setProperty(node, key, value) {
526
- getRenderer().setProperty(node, key, value);
527
- }
528
- __name(setProperty, "setProperty");
529
- function setAttribute(node, key, value) {
530
- getRenderer().setAttribute(node, key, value);
531
- }
532
- __name(setAttribute, "setAttribute");
533
- function addEventListener(node, event, handler) {
534
- const renderer = getRenderer();
535
- const owner = getCurrentOwner();
536
- let bindings = eventBindings.get(node);
537
- if (!bindings) {
538
- bindings = /* @__PURE__ */ new Map();
539
- eventBindings.set(node, bindings);
540
- }
541
- const previous = bindings.get(event);
542
- if (previous && previous.original === handler && previous.owner === owner) return;
543
- if (previous) renderer.removeEventListener(node, event, previous.handler);
544
- const listener = owner ? (reason) => {
545
- try {
546
- owner.run(() => handler(reason));
547
- } catch (error) {
548
- const handled = owner.handleError(error);
549
- invokeRuntimeDebug("error", {
550
- error,
551
- owner,
552
- phase: "event",
553
- handled,
554
- recovery: handled ? "handled" : "propagated"
555
- });
556
- if (!handled) throw error;
557
- }
558
- } : handler;
559
- const binding = { handler: listener, owner, original: handler };
560
- bindings.set(event, binding);
561
- renderer.addEventListener(node, event, listener);
562
- owner?.onDispose(() => {
563
- if (bindings?.get(event) !== binding) return;
564
- bindings.delete(event);
565
- renderer.removeEventListener(node, event, listener);
566
- });
567
- }
568
- __name(addEventListener, "addEventListener");
569
- function createComponent(component, props, source) {
570
- const owner = createOwner();
571
- const componentName = component.displayName || component.name || "anonymous";
572
- setOwnerDebugName(owner, source ? `${componentName} (${source.file}:${source.line}:${source.column})` : componentName);
573
- owner.onError((reason) => {
574
- attachSourceLocation(reason, source);
575
- attachComponentContext(reason, componentName, owner.id);
576
- throw reason;
577
- });
578
- let node;
579
- try {
580
- node = owner.run(() => component(props));
581
- } catch (error) {
582
- owner.dispose();
583
- attachSourceLocation(error, source);
584
- attachComponentContext(error, componentName, owner.id);
585
- throw error;
586
- }
587
- associateNodeOwner(node, owner);
588
- const hmrKey = component.hmrKey;
589
- if (hmrKey) {
590
- const instance = {
591
- node,
592
- parent: null,
593
- refresh() {
594
- const previous = instance.node;
595
- const next = owner.run(() => component(props));
596
- if (instance.parent && !isVobsFragment(previous) && !isVobsFragment(next)) {
597
- getRenderer().insertBefore(instance.parent, next, previous);
598
- getRenderer().removeChild(instance.parent, previous);
599
- }
600
- nodeOwners.delete(previous);
601
- nodeOwners.set(next, owner);
602
- associateHmrInstance(next, instance);
603
- instance.node = next;
604
- }
605
- };
606
- associateHmrInstance(node, instance);
607
- const separator = hmrKey.lastIndexOf(":");
608
- const moduleId = separator < 0 ? hmrKey : hmrKey.slice(0, separator);
609
- const cleanup = registerHmrInstance(moduleId, instance);
610
- owner.onDispose(cleanup);
611
- }
612
- return node;
613
- }
614
- __name(createComponent, "createComponent");
615
- function attachSourceLocation(reason, source) {
616
- if (!source || (!reason || typeof reason !== "object" && typeof reason !== "function")) return;
617
- const error = reason;
618
- if (error.vobsSource) return;
619
- try {
620
- Object.defineProperty(error, "vobsSource", {
621
- configurable: true,
622
- enumerable: false,
623
- value: source,
624
- writable: false
625
- });
626
- } catch {
627
- }
628
- }
629
- __name(attachSourceLocation, "attachSourceLocation");
630
- function attachComponentContext(reason, component, ownerId) {
631
- if (!reason || typeof reason !== "object" && typeof reason !== "function") return;
632
- const error = reason;
633
- try {
634
- if (!error.vobsComponent) Object.defineProperty(error, "vobsComponent", { configurable: true, enumerable: false, value: component, writable: false });
635
- if (!error.vobsOwnerId) Object.defineProperty(error, "vobsOwnerId", { configurable: true, enumerable: false, value: ownerId, writable: false });
636
- } catch {
637
- }
638
- }
639
- __name(attachComponentContext, "attachComponentContext");
640
- function createBlock(factory) {
641
- const owner = createOwner();
642
- setOwnerDebugName(owner, "dynamic");
643
- let node;
644
- try {
645
- node = owner.run(factory);
646
- } catch (error) {
647
- owner.dispose();
648
- throw error;
649
- }
650
- if (!node) {
651
- owner.dispose();
652
- return null;
653
- }
654
- associateNodeOwner(node, owner);
655
- return node;
656
- }
657
- __name(createBlock, "createBlock");
658
- function associateNodeOwner(node, owner) {
659
- nodeOwners.set(node, owner);
660
- }
661
- __name(associateNodeOwner, "associateNodeOwner");
662
- function disposeNodeOwner(node) {
663
- const owner = nodeOwners.get(node);
664
- if (!owner) return;
665
- nodeOwners.delete(node);
666
- owner.dispose();
667
- }
668
- __name(disposeNodeOwner, "disposeNodeOwner");
669
-
670
- // packages/runtime/src/fragment.ts
671
- function createFragment(factory) {
672
- const start = createComment("vobs:fragment:start");
673
- const end = createComment("vobs:fragment:end");
674
- let parent = null;
675
- let initialized = false;
676
- const owner = getCurrentOwner();
677
- const fragment = {
678
- kind: "vobs-fragment",
679
- start,
680
- end,
681
- mount(nextParent, anchor) {
682
- if (parent && parent !== nextParent) {
683
- throw new Error("Vobs Fragment: \u4E0D\u80FD\u8DE8\u7236\u8282\u70B9\u79FB\u52A8 Fragment");
684
- }
685
- if (initialized) {
686
- moveRange(nextParent, start, end, anchor);
687
- return;
688
- }
689
- const renderer = getRenderer();
690
- renderer.insertBefore(nextParent, start, anchor);
691
- renderer.insertBefore(nextParent, end, anchor);
692
- parent = nextParent;
693
- initialized = true;
694
- if (owner) owner.run(() => factory(nextParent, end));
695
- else factory(nextParent, end);
696
- },
697
- unmount(nextParent) {
698
- if (!initialized || parent !== nextParent) {
699
- throw new Error("Vobs Fragment: Fragment \u4E0D\u5C5E\u4E8E\u6307\u5B9A\u7236\u8282\u70B9");
700
- }
701
- const renderer = getRenderer();
702
- let current = renderer.nextSibling(start);
703
- while (current && current !== end) {
704
- const next = renderer.nextSibling(current);
705
- renderer.removeChild(nextParent, current);
706
- current = next;
707
- }
708
- renderer.removeChild(nextParent, start);
709
- renderer.removeChild(nextParent, end);
710
- parent = null;
711
- initialized = false;
712
- }
713
- };
714
- return fragment;
715
- }
716
- __name(createFragment, "createFragment");
717
- function isVobsFragment(value) {
718
- return Boolean(value) && typeof value === "object" && value.kind === "vobs-fragment";
719
- }
720
- __name(isVobsFragment, "isVobsFragment");
721
- function moveRange(parent, start, end, anchor) {
722
- const renderer = getRenderer();
723
- const nodes = [start];
724
- let current = renderer.nextSibling(start);
725
- while (current) {
726
- nodes.push(current);
727
- if (current === end) break;
728
- current = renderer.nextSibling(current);
729
- }
730
- if (nodes[nodes.length - 1] !== end) {
731
- throw new Error("Vobs Fragment: \u627E\u4E0D\u5230\u7ED3\u675F\u951A\u70B9");
732
- }
733
- for (const node of nodes) renderer.insertBefore(parent, node, anchor);
734
- }
735
- __name(moveRange, "moveRange");
736
-
737
- // packages/runtime/src/dynamic.ts
738
- function insertDynamic(parent, anchor, factory) {
739
- const marker = createComment("vobs:dynamic");
740
- insertBefore(parent, marker, anchor);
741
- let current = null;
742
- effect(() => {
743
- const next = createBlock(factory);
744
- if (next === current) return;
745
- if (current) removeChild(parent, current);
746
- current = next;
747
- if (current) insertBefore(parent, current, marker);
748
- });
749
- }
750
- __name(insertDynamic, "insertDynamic");
751
-
752
- // packages/vobs/src/context.ts
753
- var ownerProviders = /* @__PURE__ */ new WeakMap();
754
- function provide(key, value, options = {}) {
755
- const owner = getCurrentOwner();
756
- if (!owner) throw new Error("Vobs: provide \u5FC5\u987B\u5728\u7EC4\u4EF6\u6216 Owner \u4F5C\u7528\u57DF\u5185\u8C03\u7528");
757
- provideToOwner(owner, key, value, options);
758
- }
759
- __name(provide, "provide");
760
- function provideToOwner(owner, key, value, options = {}) {
761
- let providers = ownerProviders.get(owner);
762
- if (!providers) {
763
- providers = /* @__PURE__ */ new Map();
764
- ownerProviders.set(owner, providers);
765
- owner.onDispose(() => ownerProviders.delete(owner));
766
- }
767
- if (providers.has(key) && !options.override) {
768
- throw new Error(`Vobs: \u6CE8\u5165\u9879 ${String(key)} \u5DF2\u5B58\u5728\uFF1B\u5982\u9700\u8986\u76D6\u8BF7\u4F20\u5165 override: true`);
769
- }
770
- providers.set(key, value);
771
- }
772
- __name(provideToOwner, "provideToOwner");
773
-
774
- // packages/vobs/src/app.ts
775
- function createInjectionKey(description) {
776
- return Symbol(description);
777
- }
778
- __name(createInjectionKey, "createInjectionKey");
4
+ // packages/layout/src/layout.ts
5
+ import { effect as effect4, memo as memo2, state as state3 } from "@vobs/reactivity";
6
+ import {
7
+ addEventListener as addEventListener4,
8
+ createComponent as createComponent2,
9
+ createElement as createElement4,
10
+ createText as createText5,
11
+ insertBefore as insertBefore5,
12
+ insertDynamic as insertDynamic4,
13
+ provide,
14
+ setAttribute as setAttribute5,
15
+ setProperty as setProperty3
16
+ } from "@vobs/vobs";
779
17
 
780
18
  // packages/layout/src/context.ts
19
+ import {
20
+ createInjectionKey,
21
+ inject
22
+ } from "@vobs/vobs";
781
23
  var KIT_LAYOUT_KEY = createInjectionKey("vobs.kit.layout");
782
24
 
25
+ // packages/layout/src/header.ts
26
+ import { effect as effect2 } from "@vobs/reactivity";
27
+ import {
28
+ addEventListener,
29
+ createElement,
30
+ createText as createText2,
31
+ insertBefore as insertBefore2,
32
+ setAttribute as setAttribute2
33
+ } from "@vobs/vobs";
34
+
783
35
  // packages/layout/src/utils.ts
36
+ import { effect } from "@vobs/reactivity";
37
+ import {
38
+ createFragment,
39
+ createText,
40
+ insertBefore,
41
+ insertDynamic,
42
+ setAttribute,
43
+ setProperty,
44
+ setTextContent
45
+ } from "@vobs/vobs";
784
46
  function readProp(props, name, fallback) {
785
47
  const value = Reflect.get(props, name);
786
48
  return value === void 0 ? fallback : value;
@@ -909,44 +171,44 @@ function KitHeader(props = {}) {
909
171
  "onToggleSidebar"
910
172
  ]);
911
173
  bindUserStyle(root, props);
912
- setAttribute(toggleRegion, "class", "vobs-kit-header__toggle");
174
+ setAttribute2(toggleRegion, "class", "vobs-kit-header__toggle");
913
175
  if (hasProp(props, "sidebarToggle")) {
914
176
  mountSlot(toggleRegion, props, "sidebarToggle");
915
177
  } else {
916
- insertBefore(toggleRegion, createDefaultToggle(props), null);
178
+ insertBefore2(toggleRegion, createDefaultToggle(props), null);
917
179
  }
918
- setAttribute(brand, "class", "vobs-kit-header__brand");
180
+ setAttribute2(brand, "class", "vobs-kit-header__brand");
919
181
  if (readProp(props, "logo", void 0) !== void 0) {
920
182
  const logo = createElement("span");
921
- setAttribute(logo, "class", "vobs-kit-header__logo");
183
+ setAttribute2(logo, "class", "vobs-kit-header__logo");
922
184
  mountSlot(logo, props, "logo");
923
- insertBefore(brand, logo, null);
185
+ insertBefore2(brand, logo, null);
924
186
  }
925
187
  if (readProp(props, "title", void 0) !== void 0) {
926
188
  const title = createElement("h1");
927
- const text = createText("");
928
- setAttribute(title, "class", "vobs-kit-header__title");
189
+ const text = createText2("");
190
+ setAttribute2(title, "class", "vobs-kit-header__title");
929
191
  bindTextContent(text, () => readProp(props, "title", ""));
930
- insertBefore(title, text, null);
931
- insertBefore(brand, title, null);
192
+ insertBefore2(title, text, null);
193
+ insertBefore2(brand, title, null);
932
194
  }
933
- setAttribute(actions, "class", "vobs-kit-header__actions");
195
+ setAttribute2(actions, "class", "vobs-kit-header__actions");
934
196
  if (readProp(props, "headerActions", void 0) !== void 0) mountSlot(actions, props, "headerActions");
935
197
  if (readProp(props, "userMenu", void 0) !== void 0) mountSlot(actions, props, "userMenu");
936
- insertBefore(root, toggleRegion, null);
937
- insertBefore(root, brand, null);
938
- insertBefore(root, actions, null);
198
+ insertBefore2(root, toggleRegion, null);
199
+ insertBefore2(root, brand, null);
200
+ insertBefore2(root, actions, null);
939
201
  if (hasProp(props, "children")) mountSlot(root, props, "children");
940
202
  return root;
941
203
  }
942
204
  __name(KitHeader, "KitHeader");
943
205
  function createDefaultToggle(props) {
944
206
  const button = createElement("button");
945
- const label = createText("");
946
- setAttribute(button, "type", "button");
947
- setAttribute(button, "class", "vobs-kit-header__toggle-button");
207
+ const label = createText2("");
208
+ setAttribute2(button, "type", "button");
209
+ setAttribute2(button, "class", "vobs-kit-header__toggle-button");
948
210
  bindTextContent(label, () => readProp(props, "toggleLabel", "Menu"));
949
- insertBefore(button, label, null);
211
+ insertBefore2(button, label, null);
950
212
  addEventListener(button, "click", () => {
951
213
  const handler = readProp(props, "onToggleSidebar", void 0);
952
214
  if (typeof handler === "function") handler();
@@ -956,20 +218,43 @@ function createDefaultToggle(props) {
956
218
  }
957
219
  __name(createDefaultToggle, "createDefaultToggle");
958
220
  function effectToggleLabel(button, props) {
959
- effect(() => {
221
+ effect2(() => {
960
222
  setOptionalAttribute(button, "aria-label", readProp(props, "toggleLabel", "Menu"));
961
223
  });
962
224
  }
963
225
  __name(effectToggleLabel, "effectToggleLabel");
964
226
 
227
+ // packages/layout/src/sidebar.ts
228
+ import { effect as effect3 } from "@vobs/reactivity";
229
+ import {
230
+ addEventListener as addEventListener3,
231
+ createComponent,
232
+ createElement as createElement3,
233
+ createText as createText4,
234
+ insertBefore as insertBefore4,
235
+ insertDynamic as insertDynamic3,
236
+ setAttribute as setAttribute4
237
+ } from "@vobs/vobs";
238
+
965
239
  // packages/layout/src/menu.ts
240
+ import { state } from "@vobs/reactivity";
241
+ import {
242
+ addEventListener as addEventListener2,
243
+ createElement as createElement2,
244
+ createFragment as createFragment2,
245
+ createText as createText3,
246
+ insertBefore as insertBefore3,
247
+ insertDynamic as insertDynamic2,
248
+ setAttribute as setAttribute3,
249
+ setProperty as setProperty2
250
+ } from "@vobs/vobs";
966
251
  function KitMenu(props) {
967
- const root = createElement("ul");
252
+ const root = createElement2("ul");
968
253
  const expanded = state(/* @__PURE__ */ new Set());
969
254
  bindClassList(root, props, () => ["vobs-kit-menu"]);
970
255
  bindCommonAttributes(root, props, ["items", "collapsed", "activeKey", "onSelect"]);
971
- if (!hasProp(props, "role")) setAttribute(root, "role", "menu");
972
- insertDynamic(root, null, () => createMenuTree(props, expanded));
256
+ if (!hasProp(props, "role")) setAttribute3(root, "role", "menu");
257
+ insertDynamic2(root, null, () => createMenuTree(props, expanded));
973
258
  if (hasProp(props, "children")) mountSlot(root, props, "children");
974
259
  return root;
975
260
  }
@@ -978,93 +263,93 @@ function createMenuTree(props, expanded) {
978
263
  const items = readProp(props, "items", []);
979
264
  const activeKey = readProp(props, "activeKey", void 0);
980
265
  const collapsed = readProp(props, "collapsed", false);
981
- return createFragment((parent, anchor) => {
266
+ return createFragment2((parent, anchor) => {
982
267
  for (const item of items) {
983
- insertBefore(parent, createMenuItem(item, props, activeKey, collapsed, expanded), anchor);
268
+ insertBefore3(parent, createMenuItem(item, props, activeKey, collapsed, expanded), anchor);
984
269
  }
985
270
  });
986
271
  }
987
272
  __name(createMenuTree, "createMenuTree");
988
273
  function createMenuItem(item, props, activeKey, collapsed, expanded) {
989
- const li = createElement("li");
274
+ const li = createElement2("li");
990
275
  const children = item.children ?? [];
991
276
  const hasChildren = children.length > 0;
992
277
  const active = item.key === activeKey;
993
278
  const activeDescendant = children.some((child) => hasActiveDescendant(child, activeKey));
994
279
  const isExpanded = expanded.value.has(item.key) || activeDescendant;
995
- setAttribute(li, "class", `vobs-kit-menu__item${active || activeDescendant ? " is-active" : ""}`);
280
+ setAttribute3(li, "class", `vobs-kit-menu__item${active || activeDescendant ? " is-active" : ""}`);
996
281
  setOptionalAttribute(li, "data-menu-key", item.key);
997
282
  if (hasChildren) {
998
- const groupButton = createElement("button");
999
- setAttribute(groupButton, "type", "button");
1000
- setAttribute(groupButton, "class", "vobs-kit-menu__link vobs-kit-menu__group-toggle");
1001
- setAttribute(groupButton, "aria-expanded", isExpanded ? "true" : "false");
283
+ const groupButton = createElement2("button");
284
+ setAttribute3(groupButton, "type", "button");
285
+ setAttribute3(groupButton, "class", "vobs-kit-menu__link vobs-kit-menu__group-toggle");
286
+ setAttribute3(groupButton, "aria-expanded", isExpanded ? "true" : "false");
1002
287
  if (collapsed) setOptionalAttribute(groupButton, "title", item.label);
1003
288
  appendMenuContent(groupButton, item, collapsed);
1004
- addEventListener(groupButton, "click", () => {
289
+ addEventListener2(groupButton, "click", () => {
1005
290
  toggleExpanded(expanded, item.key);
1006
291
  if (item.href !== void 0) emitSelect(props, item);
1007
292
  });
1008
- insertBefore(li, groupButton, null);
293
+ insertBefore3(li, groupButton, null);
1009
294
  if (isExpanded) {
1010
- const nested = createElement("ul");
1011
- setAttribute(nested, "class", "vobs-kit-menu__children");
1012
- setAttribute(nested, "role", "menu");
295
+ const nested = createElement2("ul");
296
+ setAttribute3(nested, "class", "vobs-kit-menu__children");
297
+ setAttribute3(nested, "role", "menu");
1013
298
  for (const child of children) {
1014
- insertBefore(nested, createMenuItem(child, props, activeKey, collapsed, expanded), null);
299
+ insertBefore3(nested, createMenuItem(child, props, activeKey, collapsed, expanded), null);
1015
300
  }
1016
- insertBefore(li, nested, null);
301
+ insertBefore3(li, nested, null);
1017
302
  }
1018
303
  } else {
1019
- const link = createElement(item.href === void 0 ? "button" : "a");
1020
- setAttribute(link, "class", "vobs-kit-menu__link");
1021
- if (item.href === void 0) setAttribute(link, "type", "button");
304
+ const link = createElement2(item.href === void 0 ? "button" : "a");
305
+ setAttribute3(link, "class", "vobs-kit-menu__link");
306
+ if (item.href === void 0) setAttribute3(link, "type", "button");
1022
307
  else {
1023
- setAttribute(link, "href", item.href);
308
+ setAttribute3(link, "href", item.href);
1024
309
  setOptionalAttribute(link, "target", item.target);
1025
310
  setOptionalAttribute(link, "rel", item.rel);
1026
311
  }
1027
- if (active) setAttribute(link, "aria-current", "page");
312
+ if (active) setAttribute3(link, "aria-current", "page");
1028
313
  if (item.disabled === true) {
1029
- setAttribute(link, "aria-disabled", "true");
1030
- setProperty(link, "disabled", true);
314
+ setAttribute3(link, "aria-disabled", "true");
315
+ setProperty2(link, "disabled", true);
1031
316
  }
1032
317
  if (collapsed) setOptionalAttribute(link, "title", item.label);
1033
318
  appendMenuContent(link, item, collapsed);
1034
- addEventListener(link, "click", (event) => {
319
+ addEventListener2(link, "click", (event) => {
1035
320
  if (item.disabled === true) {
1036
321
  event.preventDefault?.();
1037
322
  return;
1038
323
  }
1039
324
  emitSelect(props, item);
1040
325
  });
1041
- insertBefore(li, link, null);
326
+ insertBefore3(li, link, null);
1042
327
  }
1043
328
  return li;
1044
329
  }
1045
330
  __name(createMenuItem, "createMenuItem");
1046
331
  function appendMenuContent(parent, item, collapsed) {
1047
332
  if (item.icon !== void 0) {
1048
- const icon = createElement("span");
1049
- setAttribute(icon, "class", "vobs-kit-menu__icon");
333
+ const icon = createElement2("span");
334
+ setAttribute3(icon, "class", "vobs-kit-menu__icon");
1050
335
  mountSlot(icon, item, "icon");
1051
- insertBefore(parent, icon, null);
336
+ insertBefore3(parent, icon, null);
1052
337
  }
1053
- const label = createElement("span");
1054
- setAttribute(label, "class", "vobs-kit-menu__label");
1055
- insertBefore(label, createText(item.label), null);
1056
- insertBefore(parent, label, null);
338
+ const label = createElement2("span");
339
+ setAttribute3(label, "class", "vobs-kit-menu__label");
340
+ insertBefore3(label, createText3(item.label), null);
341
+ insertBefore3(parent, label, null);
1057
342
  if (item.badge !== void 0 && !collapsed) {
1058
- const badge = createElement("span");
1059
- setAttribute(badge, "class", "vobs-kit-menu__badge");
343
+ const badge = createElement2("span");
344
+ setAttribute3(badge, "class", "vobs-kit-menu__badge");
1060
345
  mountSlot(badge, item, "badge");
1061
- insertBefore(parent, badge, null);
346
+ insertBefore3(parent, badge, null);
1062
347
  }
1063
348
  if (item.children && item.children.length > 0) {
1064
- const expand = createElement("span");
1065
- setAttribute(expand, "class", "vobs-kit-menu__expand");
1066
- setAttribute(expand, "aria-hidden", "true");
1067
- insertBefore(parent, expand, null);
349
+ const expand = createElement2("span");
350
+ setAttribute3(expand, "class", "vobs-kit-menu__expand");
351
+ setAttribute3(expand, "aria-hidden", "true");
352
+ insertBefore3(parent, expand, null);
1068
353
  }
1069
354
  }
1070
355
  __name(appendMenuContent, "appendMenuContent");
@@ -1088,8 +373,8 @@ __name(hasActiveDescendant, "hasActiveDescendant");
1088
373
 
1089
374
  // packages/layout/src/sidebar.ts
1090
375
  function KitSidebar(props = {}) {
1091
- const root = createElement("aside");
1092
- const close = createElement("button");
376
+ const root = createElement3("aside");
377
+ const close = createElement3("button");
1093
378
  bindClassList(root, props, () => [
1094
379
  "vobs-kit-sidebar",
1095
380
  readProp(props, "collapsed", false) ? "is-collapsed" : void 0,
@@ -1109,23 +394,23 @@ function KitSidebar(props = {}) {
1109
394
  "onClose"
1110
395
  ]);
1111
396
  bindUserStyle(root, props);
1112
- setAttribute(close, "type", "button");
1113
- setAttribute(close, "class", "vobs-kit-sidebar__close");
1114
- effect(() => {
397
+ setAttribute4(close, "type", "button");
398
+ setAttribute4(close, "class", "vobs-kit-sidebar__close");
399
+ effect3(() => {
1115
400
  setOptionalAttribute(close, "aria-label", readProp(props, "closeLabel", "Close navigation"));
1116
401
  });
1117
- insertBefore(close, createCloseLabel(props), null);
1118
- addEventListener(close, "click", () => {
402
+ insertBefore4(close, createCloseLabel(props), null);
403
+ addEventListener3(close, "click", () => {
1119
404
  const handler = readProp(props, "onClose", void 0);
1120
405
  if (typeof handler === "function") handler();
1121
406
  });
1122
- insertBefore(root, close, null);
1123
- insertDynamic(root, null, () => createDefaultMenu(props));
407
+ insertBefore4(root, close, null);
408
+ insertDynamic3(root, null, () => createDefaultMenu(props));
1124
409
  if (hasProp(props, "footer")) {
1125
- const footer = createElement("div");
1126
- setAttribute(footer, "class", "vobs-kit-sidebar__footer");
410
+ const footer = createElement3("div");
411
+ setAttribute4(footer, "class", "vobs-kit-sidebar__footer");
1127
412
  mountSlot(footer, props, "footer");
1128
- insertBefore(root, footer, null);
413
+ insertBefore4(root, footer, null);
1129
414
  }
1130
415
  if (hasProp(props, "children")) mountSlot(root, props, "children");
1131
416
  return root;
@@ -1151,21 +436,22 @@ function createDefaultMenu(props) {
1151
436
  }
1152
437
  __name(createDefaultMenu, "createDefaultMenu");
1153
438
  function createCloseLabel(props) {
1154
- const text = createElement("span");
1155
- const content = createText("");
1156
- setAttribute(text, "class", "vobs-kit-sidebar__close-label");
439
+ const text = createElement3("span");
440
+ const content = createText4("");
441
+ setAttribute4(text, "class", "vobs-kit-sidebar__close-label");
1157
442
  bindTextContent(content, () => readProp(props, "closeLabel", "Close navigation"));
1158
- insertBefore(text, content, null);
443
+ insertBefore4(text, content, null);
1159
444
  return text;
1160
445
  }
1161
446
  __name(createCloseLabel, "createCloseLabel");
1162
447
 
1163
448
  // packages/layout/src/viewport.ts
449
+ import { getCurrentOwner, memo, onDispose, state as state2 } from "@vobs/reactivity";
1164
450
  var DEFAULT_MOBILE_BREAKPOINT = 768;
1165
451
  function createKitViewport(breakpoint = DEFAULT_MOBILE_BREAKPOINT) {
1166
452
  const normalizedBreakpoint = normalizeBreakpoint(breakpoint);
1167
- const width = state(readWidth(), "layout.viewport.width");
1168
- const height = state(readHeight(), "layout.viewport.height");
453
+ const width = state2(readWidth(), "layout.viewport.width");
454
+ const height = state2(readHeight(), "layout.viewport.height");
1169
455
  const isMobile = memo(() => width.value < normalizedBreakpoint);
1170
456
  let disposed = false;
1171
457
  const onResize = /* @__PURE__ */ __name(() => {
@@ -1211,33 +497,33 @@ __name(readHeight, "readHeight");
1211
497
 
1212
498
  // packages/layout/src/layout.ts
1213
499
  function KitLayout(props = {}) {
1214
- const root = createElement("div");
1215
- const header = createElement("div");
1216
- const body = createElement("div");
1217
- const sidebar = createElement("div");
1218
- const main = createElement("main");
1219
- const breadcrumb = createElement("div");
1220
- const tabs = createElement("div");
1221
- const content = createElement("div");
1222
- const backdrop = createElement("div");
1223
- const footer = createElement("footer");
500
+ const root = createElement4("div");
501
+ const header = createElement4("div");
502
+ const body = createElement4("div");
503
+ const sidebar = createElement4("div");
504
+ const main = createElement4("main");
505
+ const breadcrumb = createElement4("div");
506
+ const tabs = createElement4("div");
507
+ const content = createElement4("div");
508
+ const backdrop = createElement4("div");
509
+ const footer = createElement4("footer");
1224
510
  const breakpoint = normalizeBreakpoint(
1225
511
  readProp(props, "mobileBreakpoint", DEFAULT_MOBILE_BREAKPOINT)
1226
512
  );
1227
513
  const viewport = createKitViewport(breakpoint);
1228
514
  const sidebarExpanded = readProp(props, "sidebarExpanded", false);
1229
- const internalCollapsed = state(
515
+ const internalCollapsed = state3(
1230
516
  readProp(props, "sidebarCollapsed", void 0) ?? !sidebarExpanded
1231
517
  );
1232
- const internalMobileOpen = state(readProp(props, "mobileOpen", void 0) ?? false);
1233
- const collapsed = memo(() => readProp(props, "sidebarCollapsed", void 0) ?? internalCollapsed.value);
1234
- const mobileOpen = memo(() => readProp(props, "mobileOpen", void 0) ?? internalMobileOpen.value);
1235
- const headerVisible = state(!isProvided(props, "header"));
1236
- const sidebarVisible = state(isProvided(props, "sidebar") || hasProp(props, "menu"));
1237
- const backdropVisible = state(!isProvided(props, "mobileBackdrop"));
1238
- const breadcrumbVisible = state(false);
1239
- const tabsVisible = state(false);
1240
- const footerVisible = state(false);
518
+ const internalMobileOpen = state3(readProp(props, "mobileOpen", void 0) ?? false);
519
+ const collapsed = memo2(() => readProp(props, "sidebarCollapsed", void 0) ?? internalCollapsed.value);
520
+ const mobileOpen = memo2(() => readProp(props, "mobileOpen", void 0) ?? internalMobileOpen.value);
521
+ const headerVisible = state3(!isProvided(props, "header"));
522
+ const sidebarVisible = state3(isProvided(props, "sidebar") || hasProp(props, "menu"));
523
+ const backdropVisible = state3(!isProvided(props, "mobileBackdrop"));
524
+ const breadcrumbVisible = state3(false);
525
+ const tabsVisible = state3(false);
526
+ const footerVisible = state3(false);
1241
527
  const context = {
1242
528
  sidebarCollapsed: collapsed,
1243
529
  mobileOpen,
@@ -1301,41 +587,41 @@ function KitLayout(props = {}) {
1301
587
  if (sidebarWidth === void 0) return "";
1302
588
  return `--vobs-kit-sidebar-width: ${normalizeSidebarWidth(sidebarWidth)}px`;
1303
589
  });
1304
- setAttribute(header, "class", "vobs-kit-layout__header");
1305
- insertDynamic(header, null, () => createHeaderSlot(props, context, headerVisible));
590
+ setAttribute5(header, "class", "vobs-kit-layout__header");
591
+ insertDynamic4(header, null, () => createHeaderSlot(props, context, headerVisible));
1306
592
  bindVisibility(header, headerVisible);
1307
- setAttribute(body, "class", "vobs-kit-layout__body");
1308
- setAttribute(sidebar, "class", "vobs-kit-layout__sidebar");
1309
- setAttribute(main, "class", "vobs-kit-layout__main");
1310
- setAttribute(breadcrumb, "class", "vobs-kit-layout__breadcrumb");
1311
- setAttribute(tabs, "class", "vobs-kit-layout__tabs");
1312
- setAttribute(content, "class", "vobs-kit-layout__content");
1313
- insertDynamic(sidebar, null, () => createSidebarSlot(props, context, sidebarVisible));
593
+ setAttribute5(body, "class", "vobs-kit-layout__body");
594
+ setAttribute5(sidebar, "class", "vobs-kit-layout__sidebar");
595
+ setAttribute5(main, "class", "vobs-kit-layout__main");
596
+ setAttribute5(breadcrumb, "class", "vobs-kit-layout__breadcrumb");
597
+ setAttribute5(tabs, "class", "vobs-kit-layout__tabs");
598
+ setAttribute5(content, "class", "vobs-kit-layout__content");
599
+ insertDynamic4(sidebar, null, () => createSidebarSlot(props, context, sidebarVisible));
1314
600
  bindVisibility(sidebar, sidebarVisible);
1315
- insertDynamic(breadcrumb, null, () => createNamedSlot(props, "breadcrumb", breadcrumbVisible));
601
+ insertDynamic4(breadcrumb, null, () => createNamedSlot(props, "breadcrumb", breadcrumbVisible));
1316
602
  bindVisibility(breadcrumb, breadcrumbVisible);
1317
- insertDynamic(tabs, null, () => createNamedSlot(props, "tabs", tabsVisible));
603
+ insertDynamic4(tabs, null, () => createNamedSlot(props, "tabs", tabsVisible));
1318
604
  bindVisibility(tabs, tabsVisible);
1319
605
  if (hasProp(props, "children")) mountSlot(content, props, "children");
1320
- insertBefore(main, breadcrumb, null);
1321
- insertBefore(main, tabs, null);
1322
- insertBefore(main, content, null);
1323
- insertBefore(body, sidebar, null);
1324
- insertBefore(body, main, null);
1325
- setAttribute(backdrop, "class", "vobs-kit-layout__backdrop");
1326
- insertDynamic(backdrop, null, () => createBackdropSlot(props, context, sidebarVisible, backdropVisible));
1327
- bindVisibility(backdrop, memo(() => backdropVisible.value && sidebarVisible.value && mobileOpen.value));
1328
- setAttribute(footer, "class", "vobs-kit-layout__footer");
1329
- insertDynamic(footer, null, () => {
606
+ insertBefore5(main, breadcrumb, null);
607
+ insertBefore5(main, tabs, null);
608
+ insertBefore5(main, content, null);
609
+ insertBefore5(body, sidebar, null);
610
+ insertBefore5(body, main, null);
611
+ setAttribute5(backdrop, "class", "vobs-kit-layout__backdrop");
612
+ insertDynamic4(backdrop, null, () => createBackdropSlot(props, context, sidebarVisible, backdropVisible));
613
+ bindVisibility(backdrop, memo2(() => backdropVisible.value && sidebarVisible.value && mobileOpen.value));
614
+ setAttribute5(footer, "class", "vobs-kit-layout__footer");
615
+ insertDynamic4(footer, null, () => {
1330
616
  const value = isProvided(props, "footer") ? resolveSlot(readProp(props, "footer", void 0)) : null;
1331
617
  footerVisible.value = value !== null;
1332
618
  return value;
1333
619
  });
1334
620
  bindVisibility(footer, footerVisible);
1335
- insertBefore(root, header, null);
1336
- insertBefore(root, body, null);
1337
- insertBefore(root, backdrop, null);
1338
- insertBefore(root, footer, null);
621
+ insertBefore5(root, header, null);
622
+ insertBefore5(root, body, null);
623
+ insertBefore5(root, backdrop, null);
624
+ insertBefore5(root, footer, null);
1339
625
  return root;
1340
626
  }
1341
627
  __name(KitLayout, "KitLayout");
@@ -1346,7 +632,7 @@ function createHeaderSlot(props, context, visible) {
1346
632
  return value;
1347
633
  }
1348
634
  visible.value = true;
1349
- return createComponent(KitHeader, {
635
+ return createComponent2(KitHeader, {
1350
636
  get logo() {
1351
637
  return readProp(props, "logo", void 0);
1352
638
  },
@@ -1378,7 +664,7 @@ function createSidebarSlot(props, context, visible) {
1378
664
  return null;
1379
665
  }
1380
666
  visible.value = true;
1381
- return createComponent(KitSidebar, {
667
+ return createComponent2(KitSidebar, {
1382
668
  get menu() {
1383
669
  return readProp(props, "menu", []);
1384
670
  },
@@ -1422,12 +708,12 @@ function createBackdropSlot(props, context, sidebarVisible, visible) {
1422
708
  return null;
1423
709
  }
1424
710
  visible.value = true;
1425
- const button = createElement("button");
1426
- setAttribute(button, "type", "button");
1427
- setAttribute(button, "class", "vobs-kit-layout__backdrop-button");
1428
- setAttribute(button, "aria-label", "Close navigation");
1429
- insertBefore(button, createText(""), null);
1430
- addEventListener(button, "click", () => {
711
+ const button = createElement4("button");
712
+ setAttribute5(button, "type", "button");
713
+ setAttribute5(button, "class", "vobs-kit-layout__backdrop-button");
714
+ setAttribute5(button, "aria-label", "Close navigation");
715
+ insertBefore5(button, createText5(""), null);
716
+ addEventListener4(button, "click", () => {
1431
717
  context.setMobileOpen(false);
1432
718
  const handler = readProp(props, "onCloseSidebar", void 0);
1433
719
  if (typeof handler === "function") handler();
@@ -1436,8 +722,8 @@ function createBackdropSlot(props, context, sidebarVisible, visible) {
1436
722
  }
1437
723
  __name(createBackdropSlot, "createBackdropSlot");
1438
724
  function bindVisibility(node, visible) {
1439
- effect(() => {
1440
- setProperty(node, "hidden", !visible.value);
725
+ effect4(() => {
726
+ setProperty3(node, "hidden", !visible.value);
1441
727
  setOptionalAttribute(node, "aria-hidden", visible.value ? void 0 : "true");
1442
728
  });
1443
729
  }
@@ -1457,7 +743,7 @@ function isProvided(props, name) {
1457
743
  return hasProp(props, name) && Reflect.get(props, name) !== void 0;
1458
744
  }
1459
745
  __name(isProvided, "isProvided");
1460
-
1461
- export { KitLayout };
1462
- //# sourceMappingURL=layout.js.map
746
+ export {
747
+ KitLayout
748
+ };
1463
749
  //# sourceMappingURL=layout.js.map