elements-kit 0.19.0 → 0.21.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 (165) hide show
  1. package/README.md +14 -0
  2. package/dist/await.d.mts +53 -0
  3. package/dist/await.mjs +70 -0
  4. package/dist/{custom-elements-D5CgfNKc.d.mts → custom-elements-BGcU6ldL.d.mts} +2 -0
  5. package/dist/custom-elements.d.mts +1 -1
  6. package/dist/{element-xQwq4ulc.mjs → element-D3om9yA6.mjs} +71 -4
  7. package/dist/for.d.mts +20 -26
  8. package/dist/for.mjs +29 -4
  9. package/dist/fragment-ROPRBJQd.mjs +61 -0
  10. package/dist/hydrate/index.d.mts +41 -0
  11. package/dist/hydrate/index.mjs +2 -0
  12. package/dist/hydrate-6Qx4n4Su.mjs +380 -0
  13. package/dist/integrations/astro-client.d.mts +17 -0
  14. package/dist/integrations/astro-client.mjs +23 -0
  15. package/dist/integrations/astro-server.d.mts +15 -0
  16. package/dist/integrations/astro-server.mjs +39 -0
  17. package/dist/integrations/astro-slots.d.mts +12 -0
  18. package/dist/integrations/astro-slots.mjs +30 -0
  19. package/dist/integrations/astro.d.mts +46 -0
  20. package/dist/integrations/astro.mjs +64 -0
  21. package/dist/integrations/react.d.mts +1 -1
  22. package/dist/integrations/react.mjs +2 -2
  23. package/dist/jsx-runtime/index.d.mts +1 -1
  24. package/dist/jsx-runtime/index.mjs +2 -20
  25. package/dist/{lib-Dkc7cV5F.mjs → lib-DYypKhxk.mjs} +63 -5
  26. package/dist/render.mjs +1 -1
  27. package/dist/{scope-CnEvL9Nd.mjs → scope-zbEG299F.mjs} +1 -1
  28. package/dist/server/index.d.mts +43 -0
  29. package/dist/server/index.mjs +2 -0
  30. package/dist/server-iFSng50i.mjs +385 -0
  31. package/dist/signals/index.d.mts +2 -2
  32. package/dist/signals/index.mjs +5 -3
  33. package/dist/{slot-B8y0aEoz.d.mts → slot-BFWXeFRl.d.mts} +6 -0
  34. package/dist/{slot-Cne__au7.mjs → slot-Dvf30O0B.mjs} +12 -1
  35. package/dist/slot.d.mts +1 -1
  36. package/dist/slot.mjs +1 -1
  37. package/dist/{infer-B7T5hi_D.d.mts → types-CUvFIgPa.d.mts} +140 -141
  38. package/dist/ui/badge/badge.css +5 -5
  39. package/dist/ui/button/button.css +15 -15
  40. package/dist/ui/card/card.css +2 -2
  41. package/dist/ui/group/group.css +61 -0
  42. package/dist/ui/otp-input/index.d.mts +132 -0
  43. package/dist/ui/otp-input/index.mjs +328 -0
  44. package/dist/ui/otp-input/otp-input.css +157 -0
  45. package/dist/ui/overlay/index.css +52 -4
  46. package/dist/ui/overlay/index.d.mts +237 -63
  47. package/dist/ui/overlay/index.mjs +659 -67
  48. package/dist/ui/overlay/overlay.css +58 -2
  49. package/dist/ui/styles/index.css +662 -0
  50. package/dist/ui/styles/radius.css +7 -7
  51. package/dist/utilities/_observe.mjs +1 -1
  52. package/dist/utilities/active-element.d.mts +1 -1
  53. package/dist/utilities/active-element.mjs +1 -1
  54. package/dist/utilities/async.d.mts +19 -2
  55. package/dist/utilities/async.mjs +49 -2
  56. package/dist/utilities/context.mjs +1 -1
  57. package/dist/utilities/debounced.d.mts +1 -1
  58. package/dist/utilities/debounced.mjs +1 -1
  59. package/dist/utilities/dom-lifecycle.bench.mjs +3255 -1
  60. package/dist/utilities/dom-lifecycle.mjs +1 -1
  61. package/dist/utilities/element-rect.d.mts +1 -1
  62. package/dist/utilities/element-rect.mjs +1 -1
  63. package/dist/utilities/element-scroll.d.mts +1 -1
  64. package/dist/utilities/event-driven.d.mts +1 -1
  65. package/dist/utilities/event-driven.mjs +1 -1
  66. package/dist/utilities/event-listener.d.mts +1 -1
  67. package/dist/utilities/event-listener.mjs +1 -1
  68. package/dist/utilities/focus-within.d.mts +1 -1
  69. package/dist/utilities/focus-within.mjs +1 -1
  70. package/dist/utilities/hover.d.mts +1 -1
  71. package/dist/utilities/hover.mjs +1 -1
  72. package/dist/utilities/interval.d.mts +1 -1
  73. package/dist/utilities/interval.mjs +1 -1
  74. package/dist/utilities/location.d.mts +1 -1
  75. package/dist/utilities/location.mjs +1 -1
  76. package/dist/utilities/media-devices.d.mts +1 -1
  77. package/dist/utilities/media-devices.mjs +1 -1
  78. package/dist/utilities/media-player.d.mts +1 -1
  79. package/dist/utilities/media-query.d.mts +1 -1
  80. package/dist/utilities/media-query.mjs +1 -1
  81. package/dist/utilities/network.d.mts +1 -1
  82. package/dist/utilities/network.mjs +1 -1
  83. package/dist/utilities/orientation.d.mts +1 -1
  84. package/dist/utilities/orientation.mjs +1 -1
  85. package/dist/utilities/previous.d.mts +1 -1
  86. package/dist/utilities/previous.mjs +1 -1
  87. package/dist/utilities/promise.d.mts +19 -2
  88. package/dist/utilities/promise.mjs +33 -3
  89. package/dist/utilities/retry.mjs +1 -1
  90. package/dist/utilities/routing.d.mts +1 -1
  91. package/dist/utilities/routing.mjs +1 -1
  92. package/dist/utilities/search-params.d.mts +1 -1
  93. package/dist/utilities/storage.d.mts +1 -1
  94. package/dist/utilities/throttled.d.mts +1 -1
  95. package/dist/utilities/throttled.mjs +1 -1
  96. package/dist/utilities/timeout.d.mts +1 -1
  97. package/dist/utilities/timeout.mjs +1 -1
  98. package/dist/utilities/window-focus.d.mts +1 -1
  99. package/dist/utilities/window-focus.mjs +1 -1
  100. package/dist/utilities/window-size.d.mts +1 -1
  101. package/dist/utilities/window-size.mjs +1 -1
  102. package/package.json +23 -1
  103. package/dist/benchmark.CX_oY03V-CSLAXL5f.mjs +0 -5145
  104. package/dist/magic-string.es-CXefOmkB.mjs +0 -1011
  105. package/dist/test.BmQO5GaM-Ddz9cDxc.mjs +0 -8266
  106. package/dist/utilities/active-element.test.d.mts +0 -1
  107. package/dist/utilities/active-element.test.mjs +0 -25
  108. package/dist/utilities/async.test.d.mts +0 -1
  109. package/dist/utilities/async.test.mjs +0 -275
  110. package/dist/utilities/context.test.d.mts +0 -1
  111. package/dist/utilities/context.test.mjs +0 -171
  112. package/dist/utilities/debounced.test.d.mts +0 -1
  113. package/dist/utilities/debounced.test.mjs +0 -68
  114. package/dist/utilities/dom-lifecycle.test.d.mts +0 -1
  115. package/dist/utilities/dom-lifecycle.test.mjs +0 -228
  116. package/dist/utilities/element-rect.test.d.mts +0 -1
  117. package/dist/utilities/element-rect.test.mjs +0 -101
  118. package/dist/utilities/element-scroll.test.d.mts +0 -1
  119. package/dist/utilities/element-scroll.test.mjs +0 -27
  120. package/dist/utilities/event-listener.test.d.mts +0 -1
  121. package/dist/utilities/event-listener.test.mjs +0 -60
  122. package/dist/utilities/focus-within.test.d.mts +0 -1
  123. package/dist/utilities/focus-within.test.mjs +0 -51
  124. package/dist/utilities/form-object.test.d.mts +0 -1
  125. package/dist/utilities/form-object.test.mjs +0 -408
  126. package/dist/utilities/hover.test.d.mts +0 -1
  127. package/dist/utilities/hover.test.mjs +0 -54
  128. package/dist/utilities/intersection-observer.test.d.mts +0 -1
  129. package/dist/utilities/intersection-observer.test.mjs +0 -46
  130. package/dist/utilities/interval.test.d.mts +0 -1
  131. package/dist/utilities/interval.test.mjs +0 -115
  132. package/dist/utilities/location.test.d.mts +0 -1
  133. package/dist/utilities/location.test.mjs +0 -61
  134. package/dist/utilities/long-press.test.d.mts +0 -1
  135. package/dist/utilities/long-press.test.mjs +0 -54
  136. package/dist/utilities/media-devices.test.d.mts +0 -1
  137. package/dist/utilities/media-devices.test.mjs +0 -44
  138. package/dist/utilities/media-player.test.d.mts +0 -1
  139. package/dist/utilities/media-player.test.mjs +0 -102
  140. package/dist/utilities/mutation-observer.test.d.mts +0 -1
  141. package/dist/utilities/mutation-observer.test.mjs +0 -48
  142. package/dist/utilities/network.test.d.mts +0 -1
  143. package/dist/utilities/network.test.mjs +0 -30
  144. package/dist/utilities/on-click-outside.test.d.mts +0 -1
  145. package/dist/utilities/on-click-outside.test.mjs +0 -45
  146. package/dist/utilities/previous.test.d.mts +0 -1
  147. package/dist/utilities/previous.test.mjs +0 -90
  148. package/dist/utilities/promise.test.d.mts +0 -1
  149. package/dist/utilities/promise.test.mjs +0 -158
  150. package/dist/utilities/retry.test.d.mts +0 -1
  151. package/dist/utilities/retry.test.mjs +0 -85
  152. package/dist/utilities/routing.test.d.mts +0 -1
  153. package/dist/utilities/routing.test.mjs +0 -129
  154. package/dist/utilities/search-params.test.d.mts +0 -1
  155. package/dist/utilities/search-params.test.mjs +0 -37
  156. package/dist/utilities/ssr.test.d.mts +0 -1
  157. package/dist/utilities/ssr.test.mjs +0 -65
  158. package/dist/utilities/storage.test.d.mts +0 -1
  159. package/dist/utilities/storage.test.mjs +0 -139
  160. package/dist/utilities/throttled.test.d.mts +0 -1
  161. package/dist/utilities/throttled.test.mjs +0 -58
  162. package/dist/utilities/timeout.test.d.mts +0 -1
  163. package/dist/utilities/timeout.test.mjs +0 -121
  164. package/dist/utilities/window-size.test.d.mts +0 -1
  165. package/dist/utilities/window-size.test.mjs +0 -43
@@ -1,7 +1,9 @@
1
- import { b as MaybeReactive } from "../infer-B7T5hi_D.mjs";
1
+ import { D as CLAIM, b as MaybeReactive, j as SEED } from "../types-CUvFIgPa.mjs";
2
2
  import { ComputedPromise } from "./promise.mjs";
3
3
 
4
4
  //#region src/utilities/async.d.ts
5
+ /** @internal Hydrate cleanup: execute deferred runs no claim resolved. */
6
+ declare function flushDeferredAsyncRuns(): void;
5
7
  /** Shape of the async function driven by {@link Async} / {@link async}. */
6
8
  type Fn<TInput, TOutput> = (input: TInput) => Promise<TOutput>;
7
9
  /**
@@ -43,6 +45,19 @@ declare class Async<TInput = undefined, TOutput = unknown> {
43
45
  then<TResult1 = TOutput, TResult2 = never>(onfulfilled?: ((value: TOutput | undefined) => TResult1 | PromiseLike<TResult1>) | null, onrejected?: ((reason: unknown) => TResult2 | PromiseLike<TResult2>) | null): Promise<TResult1 | TResult2>;
44
46
  catch<TResult = never>(onrejected?: ((reason: unknown) => TResult | PromiseLike<TResult>) | null): Promise<TOutput | undefined | TResult>;
45
47
  finally(onfinally?: (() => void) | null): Promise<TOutput | undefined>;
48
+ /**
49
+ * @internal Hydration seeding — delegates to the current operation's
50
+ * `ReactivePromise`. See `ReactivePromise[SEED]`.
51
+ */
52
+ [SEED](value: unknown): void;
53
+ /**
54
+ * @internal Hydrate claim protocol. A server record seeds the state and
55
+ * discards any deferred run — the fetcher never executes. No record means
56
+ * the deferred run executes now.
57
+ */
58
+ [CLAIM](record: {
59
+ value: unknown;
60
+ } | undefined): void;
46
61
  constructor(fn: MaybeReactive<Fn<TInput, TOutput>>);
47
62
  /**
48
63
  * Runs the async function once with the given input, stopping any currently active
@@ -59,6 +74,8 @@ declare class Async<TInput = undefined, TOutput = unknown> {
59
74
  */
60
75
  start(...args: TInput extends undefined ? [] : [input: TInput]): this;
61
76
  }
77
+ /** @internal Cross-instance-safe `Async` detection. */
78
+ declare function isAsyncLike(value: unknown): value is Async<never, unknown>;
62
79
  /**
63
80
  * Create an {@link Async} that is also callable as a signal: invoking it
64
81
  * (with no args) reads the current `result`, so it drops into any reactive
@@ -78,4 +95,4 @@ declare class Async<TInput = undefined, TOutput = unknown> {
78
95
  */
79
96
  declare function async<TInput = any, TOutput = undefined>(fn: MaybeReactive<(input: TInput) => Promise<TOutput>>): Async<TInput, TOutput> & ((...args: any[]) => TOutput | undefined);
80
97
  //#endregion
81
- export { Async, Fn, async };
98
+ export { Async, Fn, async, flushDeferredAsyncRuns, isAsyncLike };
@@ -1,7 +1,14 @@
1
- import { g as untracked, m as signal, s as effect } from "../lib-Dkc7cV5F.mjs";
1
+ import { C as untracked, b as shouldDeferAsyncRuns, f as effectsInert, n as CLAIM, o as SEED, u as effect, x as signal } from "../lib-DYypKhxk.mjs";
2
2
  import { resolve } from "../signals/index.mjs";
3
3
  import { promise } from "./promise.mjs";
4
4
  //#region src/utilities/async.ts
5
+ const deferredRuns = /* @__PURE__ */ new Map();
6
+ /** @internal Hydrate cleanup: execute deferred runs no claim resolved. */
7
+ function flushDeferredAsyncRuns() {
8
+ const runs = [...deferredRuns.values()];
9
+ deferredRuns.clear();
10
+ for (const run of runs) run();
11
+ }
5
12
  /**
6
13
  * Reactive wrapper around an async function. Exposes the current run as
7
14
  * reactive signals (`state`, `value`, `reason`, `result`, `pending`) and
@@ -65,6 +72,28 @@ var Async = class {
65
72
  finally(onfinally) {
66
73
  return this.raw.finally(onfinally);
67
74
  }
75
+ /**
76
+ * @internal Hydration seeding — delegates to the current operation's
77
+ * `ReactivePromise`. See `ReactivePromise[SEED]`.
78
+ */
79
+ [SEED](value) {
80
+ const seed = this.raw[SEED];
81
+ seed?.(value);
82
+ }
83
+ /**
84
+ * @internal Hydrate claim protocol. A server record seeds the state and
85
+ * discards any deferred run — the fetcher never executes. No record means
86
+ * the deferred run executes now.
87
+ */
88
+ [CLAIM](record) {
89
+ const pendingRun = deferredRuns.get(this);
90
+ deferredRuns.delete(this);
91
+ if (record) {
92
+ if (untracked(() => this.state) === "pending") this[SEED](record.value);
93
+ return;
94
+ }
95
+ pendingRun?.();
96
+ }
68
97
  constructor(fn) {
69
98
  this.#fn(resolve(fn));
70
99
  }
@@ -79,6 +108,14 @@ var Async = class {
79
108
  * and register cleanup effects.
80
109
  */
81
110
  run(...args) {
111
+ if (shouldDeferAsyncRuns()) {
112
+ deferredRuns.set(this, () => this.run(...args));
113
+ return this;
114
+ }
115
+ if (effectsInert()) {
116
+ untracked(() => this.#execute(...args));
117
+ return this;
118
+ }
82
119
  this.stop();
83
120
  this.#cleanup = effect(() => {
84
121
  untracked(() => this.#execute(...args));
@@ -107,6 +144,13 @@ var Async = class {
107
144
  return this;
108
145
  }
109
146
  };
147
+ const ASYNC_BRAND = Symbol.for("elements-kit.async");
148
+ Object.defineProperty(Async.prototype, ASYNC_BRAND, { value: true });
149
+ /** @internal Cross-instance-safe `Async` detection. */
150
+ function isAsyncLike(value) {
151
+ if (value instanceof Async) return true;
152
+ return value != null && (typeof value === "object" || typeof value === "function") && value[ASYNC_BRAND] === true;
153
+ }
110
154
  const ASYNC_KEYS = new Set([
111
155
  "then",
112
156
  "catch",
@@ -121,6 +165,9 @@ const ASYNC_KEYS = new Set([
121
165
  "run",
122
166
  "fn",
123
167
  "raw",
168
+ SEED,
169
+ CLAIM,
170
+ ASYNC_BRAND,
124
171
  Symbol.dispose
125
172
  ]);
126
173
  /**
@@ -160,4 +207,4 @@ function async(fn) {
160
207
  });
161
208
  }
162
209
  //#endregion
163
- export { Async, async };
210
+ export { Async, async, flushDeferredAsyncRuns, isAsyncLike };
@@ -1,4 +1,4 @@
1
- import { m as signal, p as onCleanup } from "../lib-Dkc7cV5F.mjs";
1
+ import { _ as onCleanup, x as signal } from "../lib-DYypKhxk.mjs";
2
2
  import "../signals/index.mjs";
3
3
  //#region src/utilities/context.ts
4
4
  const registry = /* @__PURE__ */ new WeakMap();
@@ -1,4 +1,4 @@
1
- import { y as Computed } from "../infer-B7T5hi_D.mjs";
1
+ import { y as Computed } from "../types-CUvFIgPa.mjs";
2
2
 
3
3
  //#region src/utilities/debounced.d.ts
4
4
  /**
@@ -1,4 +1,4 @@
1
- import { m as signal, s as effect } from "../lib-Dkc7cV5F.mjs";
1
+ import { u as effect, x as signal } from "../lib-DYypKhxk.mjs";
2
2
  import "../signals/index.mjs";
3
3
  import { createTimeout } from "./timeout.mjs";
4
4
  //#region src/utilities/debounced.ts