sibujs 4.12.0 → 4.13.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (74) hide show
  1. package/dist/browser.cjs +71 -18
  2. package/dist/browser.js +4 -4
  3. package/dist/build.cjs +6618 -6178
  4. package/dist/build.d.cts +554 -415
  5. package/dist/build.d.ts +554 -415
  6. package/dist/build.js +2091 -1735
  7. package/dist/cdn.dev.global.js +12 -12
  8. package/dist/cdn.full.dev.global.js +13 -13
  9. package/dist/cdn.full.global.js +12 -12
  10. package/dist/cdn.global.js +12 -12
  11. package/dist/{chunk-WFRQ6D7H.js → chunk-22OPSWMF.js} +1 -1
  12. package/dist/{chunk-ZJCHY2IB.js → chunk-2NC56RGY.js} +1 -1
  13. package/dist/{chunk-NB7TFSJE.js → chunk-2O6JJCUR.js} +4 -4
  14. package/dist/{chunk-B2Y5BJSP.js → chunk-4UTGDVSA.js} +70 -16
  15. package/dist/{chunk-NAVLCP4S.js → chunk-5RIBLY2N.js} +4 -4
  16. package/dist/{chunk-T5O2CUHV.js → chunk-5XUGJM3J.js} +1 -1
  17. package/dist/{chunk-HXT2RNH5.js → chunk-ADZHPN2B.js} +1 -1
  18. package/dist/chunk-B36ADEIR.js +21 -0
  19. package/dist/{chunk-DFZL3AX7.js → chunk-C73VBPEF.js} +9 -5
  20. package/dist/{chunk-WH4U2VUE.js → chunk-CPQKWCJ2.js} +13 -5
  21. package/dist/{chunk-LEUEKK4G.js → chunk-EU7T7EB3.js} +2 -2
  22. package/dist/{chunk-QLG5IK7F.js → chunk-G3Z2FEBR.js} +4 -4
  23. package/dist/{chunk-ZPY2UAKM.js → chunk-J4X7ICH4.js} +3 -3
  24. package/dist/{chunk-XX4BRMWF.js → chunk-K4LNUT5L.js} +1 -1
  25. package/dist/{chunk-CI4W6XAU.js → chunk-KC62VURU.js} +3 -3
  26. package/dist/chunk-N5TBYXHW.js +17 -0
  27. package/dist/{chunk-653KGQS2.js → chunk-OIKD7YDY.js} +2 -2
  28. package/dist/{chunk-LYTUTXQP.js → chunk-PBJYCE2Z.js} +46 -4
  29. package/dist/{chunk-EMB5PG7V.js → chunk-QC3NP47A.js} +1 -1
  30. package/dist/{chunk-IHA62NGJ.js → chunk-QKFVMIAV.js} +1 -1
  31. package/dist/{chunk-LXBMVGVB.js → chunk-QZ47OZ25.js} +3 -3
  32. package/dist/{chunk-ZTYCCBU3.js → chunk-VFPLWUT7.js} +44 -26
  33. package/dist/{chunk-RK7EPQPG.js → chunk-YFTBCCVH.js} +1 -1
  34. package/dist/data.cjs +71 -18
  35. package/dist/data.js +5 -5
  36. package/dist/datePicker-DxuxWpgF.d.cts +285 -0
  37. package/dist/datePicker-DxuxWpgF.d.ts +285 -0
  38. package/dist/devtools.cjs +71 -18
  39. package/dist/devtools.js +4 -4
  40. package/dist/ecosystem.cjs +82 -21
  41. package/dist/ecosystem.js +7 -7
  42. package/dist/extras.cjs +131 -23
  43. package/dist/extras.d.cts +2 -2
  44. package/dist/extras.d.ts +2 -2
  45. package/dist/extras.js +21 -20
  46. package/dist/index.cjs +115 -37
  47. package/dist/index.d.cts +59 -5
  48. package/dist/index.d.ts +59 -5
  49. package/dist/index.js +10 -10
  50. package/dist/motion.cjs +69 -16
  51. package/dist/motion.js +3 -3
  52. package/dist/patterns.cjs +71 -18
  53. package/dist/patterns.js +5 -5
  54. package/dist/performance.cjs +69 -16
  55. package/dist/performance.js +4 -4
  56. package/dist/plugins.cjs +1421 -996
  57. package/dist/plugins.d.cts +132 -3
  58. package/dist/plugins.d.ts +132 -3
  59. package/dist/plugins.js +262 -11
  60. package/dist/routeMiddleware-B1sp4P7a.d.ts +688 -0
  61. package/dist/routeMiddleware-CedQTsLK.d.cts +688 -0
  62. package/dist/ssr.cjs +3607 -3524
  63. package/dist/ssr.d.cts +20 -671
  64. package/dist/ssr.d.ts +20 -671
  65. package/dist/ssr.js +15 -7
  66. package/dist/testing.cjs +71 -18
  67. package/dist/testing.js +2 -2
  68. package/dist/ui.cjs +78 -18
  69. package/dist/ui.js +8 -7
  70. package/dist/widgets.cjs +1352 -952
  71. package/dist/widgets.d.cts +100 -268
  72. package/dist/widgets.d.ts +100 -268
  73. package/dist/widgets.js +316 -7
  74. package/package.json +9 -1
@@ -169,6 +169,7 @@ function bindOwnerScope(fn) {
169
169
  if (scope === null) return fn;
170
170
  return (...args) => runWithOwnerScope(scope, () => fn(...args));
171
171
  }
172
+ var currentStructOwner = null;
172
173
  var subscriberEpochCounter = 0;
173
174
  function retrack(effectFn, subscriber) {
174
175
  const prev = currentSubscriber;
@@ -188,6 +189,9 @@ function retrack(effectFn, subscriber) {
188
189
  if (prevScope !== null && !sub._epoch && sub._scope === void 0) sub._scope = prevScope;
189
190
  const scope = sub._scope === void 0 ? null : sub._scope;
190
191
  if (scope !== prevScope) currentOwnerScope = scope;
192
+ const prevStructOwner = currentStructOwner;
193
+ if (prevStructOwner !== null && !sub._epoch && !sub._c && sub._owner == null) sub._owner = prevStructOwner;
194
+ if (sub._tok != null) currentStructOwner = sub._tok;
191
195
  const epoch = ++subscriberEpochCounter;
192
196
  sub._epoch = epoch;
193
197
  sub._structDirty = false;
@@ -201,6 +205,7 @@ function retrack(effectFn, subscriber) {
201
205
  } finally {
202
206
  currentSubscriber = prev;
203
207
  currentOwnerScope = prevScope;
208
+ currentStructOwner = prevStructOwner;
204
209
  if (savedDepth !== 0) {
205
210
  suspendDepth = savedDepth;
206
211
  suspendSavedSub = savedSuspendSub;
@@ -257,7 +262,25 @@ function track(effectFn, subscriber) {
257
262
  }
258
263
  return sub._dispose ?? (sub._dispose = () => cleanup(subscriber));
259
264
  }
260
- function reactiveBinding(commit, ownerNode) {
265
+ function reactiveBinding(commit, ownerNode, structural) {
266
+ return createBinding(commit, ownerNode, structural === true)._dispose;
267
+ }
268
+ function structuralBinding(commit, ownerNode) {
269
+ const sub = createBinding(commit, ownerNode, true);
270
+ return {
271
+ stop: sub._dispose,
272
+ run: (fn) => {
273
+ const prev = currentStructOwner;
274
+ currentStructOwner = sub._tok ?? null;
275
+ try {
276
+ return fn();
277
+ } finally {
278
+ currentStructOwner = prev;
279
+ }
280
+ }
281
+ };
282
+ }
283
+ function createBinding(commit, ownerNode, structural) {
261
284
  const run = () => {
262
285
  const s = subscriber;
263
286
  if (s._disposed || s._reentrant) return;
@@ -280,19 +303,25 @@ function reactiveBinding(commit, ownerNode) {
280
303
  subscriber._disposed = false;
281
304
  subscriber._errorPhase = "binding";
282
305
  subscriber._errorNode = ownerNode;
306
+ subscriber._tok = null;
307
+ subscriber._owner = null;
308
+ if (structural) subscriber._tok = { sub: subscriber };
283
309
  try {
284
310
  run();
285
311
  } catch (err) {
286
312
  subscriber._disposed = true;
287
313
  subscriber._errorNode = void 0;
314
+ if (subscriber._tok != null) subscriber._tok.sub = null;
288
315
  cleanup(subscriber);
289
316
  throw err;
290
317
  }
291
- return subscriber._dispose ?? (subscriber._dispose = () => {
318
+ subscriber._dispose = () => {
292
319
  subscriber._disposed = true;
293
320
  subscriber._errorNode = void 0;
321
+ if (subscriber._tok != null) subscriber._tok.sub = null;
294
322
  cleanup(subscriber);
295
- });
323
+ };
324
+ return subscriber;
296
325
  }
297
326
  function recordDependency(signal) {
298
327
  if (!currentSubscriber) return;
@@ -316,6 +345,7 @@ function recordDependency(signal) {
316
345
  }
317
346
  function cleanup(subscriber) {
318
347
  const sub = subscriber;
348
+ if (sub._owner != null) sub._owner = null;
319
349
  let node = sub.depsHead ?? null;
320
350
  sub.depsHead = null;
321
351
  sub.depsTail = null;
@@ -375,20 +405,41 @@ function drainQueue() {
375
405
  break;
376
406
  }
377
407
  const sub = pendingQueue[i++];
378
- pendingSet.delete(sub);
379
- if (quarantined.size > 0 && quarantined.has(sub)) continue;
380
- if (sub._hasComputedDep === true && !depsChanged(sub)) continue;
381
- if (tickRepeat(sub)) {
382
- cycleError(sub);
383
- quarantined.add(sub);
384
- continue;
408
+ if (!pendingSet.delete(sub)) continue;
409
+ if (sub._owner != null && pendingSet.size > 0) {
410
+ runPendingOwners(sub);
411
+ if (pendingSet.has(sub)) continue;
385
412
  }
386
- const pushed = beginDisposerCapture(sub._cap ?? null);
387
- try {
388
- safeInvoke(sub);
389
- } finally {
390
- if (pushed) endDisposerCapture();
413
+ runQueued(sub);
414
+ }
415
+ }
416
+ function runPendingOwners(sub) {
417
+ for (; ; ) {
418
+ let outer = null;
419
+ for (let t = sub._owner ?? null; t !== null; ) {
420
+ const o = t.sub;
421
+ if (o === null) break;
422
+ if (pendingSet.has(o)) outer = o;
423
+ t = o._owner ?? null;
391
424
  }
425
+ if (outer === null) return;
426
+ pendingSet.delete(outer);
427
+ runQueued(outer);
428
+ }
429
+ }
430
+ function runQueued(sub) {
431
+ if (quarantined.size > 0 && quarantined.has(sub)) return;
432
+ if (sub._hasComputedDep === true && !depsChanged(sub)) return;
433
+ if (tickRepeat(sub)) {
434
+ cycleError(sub);
435
+ quarantined.add(sub);
436
+ return;
437
+ }
438
+ const pushed = beginDisposerCapture(sub._cap ?? null);
439
+ try {
440
+ safeInvoke(sub);
441
+ } finally {
442
+ if (pushed) endDisposerCapture();
392
443
  }
393
444
  }
394
445
  function drainNotificationQueue() {
@@ -524,7 +575,7 @@ function forEachSubscriber(signal, visit) {
524
575
  }
525
576
 
526
577
  // src/reactivity/track.ts
527
- var _runtimeVersion = true ? "4.12.0" : "dev";
578
+ var _runtimeVersion = true ? "4.13.1" : "dev";
528
579
  var REGISTRY_KEY = /* @__PURE__ */ Symbol.for("sibujs.reactive.v1");
529
580
  function resolveReactiveApi() {
530
581
  const g = globalThis;
@@ -559,6 +610,7 @@ function resolveReactiveApi() {
559
610
  getOwnerScope,
560
611
  runWithOwnerScope,
561
612
  bindOwnerScope,
613
+ structuralBinding,
562
614
  version: _runtimeVersion
563
615
  };
564
616
  g[REGISTRY_KEY] = local;
@@ -585,6 +637,7 @@ var forEachSubscriber2 = API.forEachSubscriber;
585
637
  var getOwnerScope2 = API.getOwnerScope ?? getOwnerScope;
586
638
  var runWithOwnerScope2 = API.runWithOwnerScope ?? runWithOwnerScope;
587
639
  var bindOwnerScope2 = API.bindOwnerScope ?? bindOwnerScope;
640
+ var structuralBinding2 = API.structuralBinding ?? ((commit, ownerNode) => ({ stop: API.reactiveBinding(commit, ownerNode), run: (fn) => fn() }));
588
641
 
589
642
  // src/core/devtoolsHook.ts
590
643
  function emitDevtools(hook, event, payload) {
@@ -614,5 +667,6 @@ export {
614
667
  getOwnerScope2 as getOwnerScope,
615
668
  runWithOwnerScope2 as runWithOwnerScope,
616
669
  bindOwnerScope2 as bindOwnerScope,
670
+ structuralBinding2 as structuralBinding,
617
671
  emitDevtools
618
672
  };
@@ -3,23 +3,23 @@ import {
3
3
  } from "./chunk-J6FW5TV6.js";
4
4
  import {
5
5
  tagFactory
6
- } from "./chunk-WH4U2VUE.js";
6
+ } from "./chunk-CPQKWCJ2.js";
7
7
  import {
8
8
  derived
9
- } from "./chunk-RK7EPQPG.js";
9
+ } from "./chunk-YFTBCCVH.js";
10
10
  import {
11
11
  globalSingleton
12
12
  } from "./chunk-7ZHH77QA.js";
13
13
  import {
14
14
  effect
15
- } from "./chunk-EMB5PG7V.js";
15
+ } from "./chunk-QC3NP47A.js";
16
16
  import {
17
17
  sanitizeCSSDeclaration
18
18
  } from "./chunk-EXXSN3BW.js";
19
19
  import {
20
20
  batch,
21
21
  signal
22
- } from "./chunk-IHA62NGJ.js";
22
+ } from "./chunk-QKFVMIAV.js";
23
23
 
24
24
  // src/ecosystem/adapters/mobx.ts
25
25
  function mobXAdapter(options) {
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  SVG_NS,
3
3
  tagFactory
4
- } from "./chunk-WH4U2VUE.js";
4
+ } from "./chunk-CPQKWCJ2.js";
5
5
 
6
6
  // src/core/rendering/html.ts
7
7
  var html = tagFactory("html");
@@ -5,7 +5,7 @@ import {
5
5
  resumeTracking,
6
6
  suspendTracking,
7
7
  track
8
- } from "./chunk-B2Y5BJSP.js";
8
+ } from "./chunk-4UTGDVSA.js";
9
9
  import {
10
10
  devAssert
11
11
  } from "./chunk-NYNYSPK7.js";
@@ -0,0 +1,21 @@
1
+ // src/utils/prerenderHook.ts
2
+ var HOST_KEY = /* @__PURE__ */ Symbol.for("sibujs.prerender.v1");
3
+ function host() {
4
+ return globalThis[HOST_KEY];
5
+ }
6
+ function isPrerendering() {
7
+ return host() !== void 0;
8
+ }
9
+ function prerenderRoute() {
10
+ return host()?.route ?? null;
11
+ }
12
+ function prerenderWait(promise) {
13
+ host()?.wait(promise);
14
+ return promise;
15
+ }
16
+
17
+ export {
18
+ isPrerendering,
19
+ prerenderRoute,
20
+ prerenderWait
21
+ };
@@ -1,16 +1,19 @@
1
+ import {
2
+ isWidgetKeyEvent
3
+ } from "./chunk-N5TBYXHW.js";
1
4
  import {
2
5
  domBinding
3
- } from "./chunk-WFRQ6D7H.js";
6
+ } from "./chunk-22OPSWMF.js";
4
7
  import {
5
8
  bindAttribute,
6
9
  setSafeAttribute
7
- } from "./chunk-XX4BRMWF.js";
10
+ } from "./chunk-K4LNUT5L.js";
8
11
  import {
9
12
  isBlockedElement
10
13
  } from "./chunk-F2UWOZ6J.js";
11
14
  import {
12
15
  derived
13
- } from "./chunk-RK7EPQPG.js";
16
+ } from "./chunk-YFTBCCVH.js";
14
17
  import {
15
18
  globalSingleton
16
19
  } from "./chunk-7ZHH77QA.js";
@@ -23,11 +26,11 @@ import {
23
26
  } from "./chunk-5HZXGZ6T.js";
24
27
  import {
25
28
  signal
26
- } from "./chunk-IHA62NGJ.js";
29
+ } from "./chunk-QKFVMIAV.js";
27
30
  import {
28
31
  reactiveBinding,
29
32
  track
30
- } from "./chunk-B2Y5BJSP.js";
33
+ } from "./chunk-4UTGDVSA.js";
31
34
  import {
32
35
  dispose,
33
36
  disposeNodeOwn,
@@ -997,6 +1000,7 @@ function __resetDialogStack() {
997
1000
  }
998
1001
  function handleGlobalKeydown(event) {
999
1002
  if (event.key !== "Escape") return;
1003
+ if (isWidgetKeyEvent(event)) return;
1000
1004
  const top = dialogStack[dialogStack.length - 1];
1001
1005
  if (top) top.close();
1002
1006
  }
@@ -2,7 +2,7 @@ import {
2
2
  bindAttribute,
3
3
  noDocument,
4
4
  setSafeAttribute
5
- } from "./chunk-XX4BRMWF.js";
5
+ } from "./chunk-K4LNUT5L.js";
6
6
  import {
7
7
  isBlockedElement
8
8
  } from "./chunk-F2UWOZ6J.js";
@@ -13,7 +13,7 @@ import {
13
13
  } from "./chunk-EXXSN3BW.js";
14
14
  import {
15
15
  reactiveBinding
16
- } from "./chunk-B2Y5BJSP.js";
16
+ } from "./chunk-4UTGDVSA.js";
17
17
  import {
18
18
  DEV,
19
19
  devWarn,
@@ -91,9 +91,10 @@ function refocus(el, snapshot) {
91
91
  field.setSelectionRange(start, end, snapshot.direction ?? "none");
92
92
  }
93
93
  }
94
- function restoreFocusWithin(snapshot, nodes, where) {
94
+ function restoreFocusWithin(snapshot, nodes, where, policy) {
95
95
  if (!snapshot) return;
96
96
  if (typeof document === "undefined") return;
97
+ if (policy === "discard") return;
97
98
  const active = document.activeElement;
98
99
  if (active === snapshot.el) return;
99
100
  if (active && active !== document.body && active !== document.documentElement) return;
@@ -110,10 +111,17 @@ function restoreFocusWithin(snapshot, nodes, where) {
110
111
  }
111
112
  ambiguous = count > 1;
112
113
  }
114
+ if (policy !== void 0 && typeof policy === "object") {
115
+ const target = typeof policy.restoreTo === "function" ? policy.restoreTo() : policy.restoreTo;
116
+ if (target?.isConnected) {
117
+ target.focus();
118
+ if (document.activeElement === target) return;
119
+ }
120
+ }
113
121
  devWarnLazy(() => {
114
122
  const id = snapshot.attr ? ` (${snapshot.attr}="${snapshot.value}")` : "";
115
123
  const why = ambiguous ? `several elements in the rebuilt subtree share ${snapshot.attr}="${snapshot.value}", so there is no way to tell which one the user was in \u2014 a shared name (a radio group) identifies a GROUP, not a control. Add a unique id or data-focus-key to each` : "no element in the rebuilt subtree carries the same identity. Give it a stable id, name, or data-focus-key that the rebuild reproduces";
116
- return `${where}: a reactive rebuild discarded the focused element <${snapshot.tag.toLowerCase()}>${id} and could not re-establish it, so focus fell back to <body>. An in-progress edit ends here, and an in-progress IME composition is lost outright \u2014 a composition belongs to the DOM node, so it cannot survive the node being destroyed. ${why}, or stop the rebuild from happening: key the subtree with match(() => shapeKey(), { \u2026 }) so it is re-created only when the shape actually changes, and drive the rest with reactive attributes and text children, which mutate nodes in place instead of replacing them.`;
124
+ return `${where}: a reactive rebuild discarded the focused element <${snapshot.tag.toLowerCase()}>${id} and could not re-establish it, so focus fell back to <body>. An in-progress edit ends here, and an in-progress IME composition is lost outright \u2014 a composition belongs to the DOM node, so it cannot survive the node being destroyed. ${why}, or stop the rebuild from happening: key the subtree with match(() => shapeKey(), { \u2026 }) so it is re-created only when the shape actually changes, and drive the rest with reactive attributes and text children, which mutate nodes in place instead of replacing them. If dropping focus is INTENDED here (closing a panel, say), pass { focus: "discard" } to when()/match() to silence this, or { focus: { restoreTo: element } } to send focus somewhere other than <body>.`;
117
125
  });
118
126
  }
119
127
 
@@ -188,7 +196,7 @@ function bindChildNode(placeholder, getter) {
188
196
  lastNodes = newNodes;
189
197
  restoreFocusWithin(focused, newNodes, "bindChildNode");
190
198
  }
191
- return reactiveBinding(commit, placeholder);
199
+ return reactiveBinding(commit, placeholder, true);
192
200
  }
193
201
 
194
202
  // src/core/rendering/tagFactory.ts
@@ -9,14 +9,14 @@ import {
9
9
  } from "./chunk-7ZHH77QA.js";
10
10
  import {
11
11
  effect
12
- } from "./chunk-EMB5PG7V.js";
12
+ } from "./chunk-QC3NP47A.js";
13
13
  import {
14
14
  sanitizeUrl
15
15
  } from "./chunk-EXXSN3BW.js";
16
16
  import {
17
17
  batch,
18
18
  signal
19
- } from "./chunk-IHA62NGJ.js";
19
+ } from "./chunk-QKFVMIAV.js";
20
20
  import {
21
21
  reportError
22
22
  } from "./chunk-NYNYSPK7.js";
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  derived
3
- } from "./chunk-RK7EPQPG.js";
3
+ } from "./chunk-YFTBCCVH.js";
4
4
  import {
5
5
  globalSingleton
6
6
  } from "./chunk-7ZHH77QA.js";
7
7
  import {
8
8
  effect
9
- } from "./chunk-EMB5PG7V.js";
9
+ } from "./chunk-QC3NP47A.js";
10
10
  import {
11
11
  sanitizeUrl
12
12
  } from "./chunk-EXXSN3BW.js";
@@ -16,10 +16,10 @@ import {
16
16
  import {
17
17
  batch,
18
18
  signal
19
- } from "./chunk-IHA62NGJ.js";
19
+ } from "./chunk-QKFVMIAV.js";
20
20
  import {
21
21
  untracked
22
- } from "./chunk-B2Y5BJSP.js";
22
+ } from "./chunk-4UTGDVSA.js";
23
23
  import {
24
24
  reportError
25
25
  } from "./chunk-NYNYSPK7.js";
@@ -3,18 +3,18 @@ import {
3
3
  } from "./chunk-7ZHH77QA.js";
4
4
  import {
5
5
  effect
6
- } from "./chunk-EMB5PG7V.js";
6
+ } from "./chunk-QC3NP47A.js";
7
7
  import {
8
8
  stripHtml
9
9
  } from "./chunk-EXXSN3BW.js";
10
10
  import {
11
11
  signal
12
- } from "./chunk-IHA62NGJ.js";
12
+ } from "./chunk-QKFVMIAV.js";
13
13
  import {
14
14
  forEachSubscriber,
15
15
  getSubscriberCount,
16
16
  getSubscriberDeps
17
- } from "./chunk-B2Y5BJSP.js";
17
+ } from "./chunk-4UTGDVSA.js";
18
18
  import {
19
19
  dispose,
20
20
  isDev
@@ -10,7 +10,7 @@ import {
10
10
  } from "./chunk-EXXSN3BW.js";
11
11
  import {
12
12
  reactiveBinding
13
- } from "./chunk-B2Y5BJSP.js";
13
+ } from "./chunk-4UTGDVSA.js";
14
14
  import {
15
15
  DEV,
16
16
  devWarn,
@@ -6,16 +6,16 @@ import {
6
6
  } from "./chunk-7ZHH77QA.js";
7
7
  import {
8
8
  effect
9
- } from "./chunk-EMB5PG7V.js";
9
+ } from "./chunk-QC3NP47A.js";
10
10
  import {
11
11
  sanitizeUrl
12
12
  } from "./chunk-EXXSN3BW.js";
13
13
  import {
14
14
  signal
15
- } from "./chunk-IHA62NGJ.js";
15
+ } from "./chunk-QKFVMIAV.js";
16
16
  import {
17
17
  bindOwnerScope
18
- } from "./chunk-B2Y5BJSP.js";
18
+ } from "./chunk-4UTGDVSA.js";
19
19
  import {
20
20
  DEV,
21
21
  devWarn,
@@ -0,0 +1,17 @@
1
+ // src/widgets/keyOwnership.ts
2
+ var CLAIM = /* @__PURE__ */ Symbol.for("sibujs.widgetKey");
3
+ function claimWidgetKey(event, widget) {
4
+ event[CLAIM] = widget;
5
+ }
6
+ function isWidgetKeyEvent(event) {
7
+ return event[CLAIM] !== void 0;
8
+ }
9
+ function widgetKeyOwner(event) {
10
+ return event[CLAIM] ?? null;
11
+ }
12
+
13
+ export {
14
+ claimWidgetKey,
15
+ isWidgetKeyEvent,
16
+ widgetKeyOwner
17
+ };
@@ -170,7 +170,7 @@ var CDN_ENTRY_POINTS = {
170
170
  };
171
171
  var packageInfo = {
172
172
  name: "sibujs",
173
- version: true ? "4.12.0" : "dev",
173
+ version: true ? "4.13.1" : "dev",
174
174
  entryPoints: MODULE_ENTRY_POINTS,
175
175
  /**
176
176
  * Generate the package.json `exports` map. Module entries resolve to the
@@ -315,7 +315,7 @@ var env = {
315
315
  };
316
316
 
317
317
  // src/plugins/versioning.ts
318
- var VERSION = true ? "4.12.0" : "dev";
318
+ var VERSION = true ? "4.13.1" : "dev";
319
319
  var NUM = "(?:0|[1-9]\\d*)";
320
320
  var PRE_ID = `(?:${NUM}|\\d*[a-zA-Z-][0-9a-zA-Z-]*)`;
321
321
  var BUILD_ID = "[0-9a-zA-Z-]+";