@bquery/bquery 1.7.0 → 1.8.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.
Files changed (262) hide show
  1. package/README.md +760 -716
  2. package/dist/{a11y-C5QOVvRn.js → a11y-DVBCy09c.js} +3 -3
  3. package/dist/a11y-DVBCy09c.js.map +1 -0
  4. package/dist/a11y.es.mjs +1 -1
  5. package/dist/component/library.d.ts.map +1 -1
  6. package/dist/{component-CuuTijA6.js → component-L3-JfOFz.js} +5 -5
  7. package/dist/component-L3-JfOFz.js.map +1 -0
  8. package/dist/component.es.mjs +1 -1
  9. package/dist/{config-BW35FKuA.js → config-DhT9auRm.js} +1 -1
  10. package/dist/{config-BW35FKuA.js.map → config-DhT9auRm.js.map} +1 -1
  11. package/dist/{constraints-3lV9yyBw.js → constraints-D5RHQLmP.js} +1 -1
  12. package/dist/constraints-D5RHQLmP.js.map +1 -0
  13. package/dist/core/collection.d.ts +86 -0
  14. package/dist/core/collection.d.ts.map +1 -1
  15. package/dist/core/element.d.ts +28 -0
  16. package/dist/core/element.d.ts.map +1 -1
  17. package/dist/core/shared.d.ts +6 -0
  18. package/dist/core/shared.d.ts.map +1 -1
  19. package/dist/core-DdtZHzsS.js +168 -0
  20. package/dist/core-DdtZHzsS.js.map +1 -0
  21. package/dist/{core-Cjl7GUu8.js → core-EMYSLzaT.js} +289 -259
  22. package/dist/core-EMYSLzaT.js.map +1 -0
  23. package/dist/core.es.mjs +48 -47
  24. package/dist/{custom-directives-7wAShnnd.js → custom-directives-Dr4C5lVV.js} +1 -1
  25. package/dist/custom-directives-Dr4C5lVV.js.map +1 -0
  26. package/dist/{devtools-D2fQLhDN.js → devtools-BhB2iDPT.js} +2 -2
  27. package/dist/devtools-BhB2iDPT.js.map +1 -0
  28. package/dist/devtools.es.mjs +1 -1
  29. package/dist/{dnd-B8EgyzaI.js → dnd-NwZBYh4l.js} +1 -1
  30. package/dist/dnd-NwZBYh4l.js.map +1 -0
  31. package/dist/dnd.es.mjs +1 -1
  32. package/dist/{env-NeVmr4Gf.js → env-CTdvLaH2.js} +1 -1
  33. package/dist/env-CTdvLaH2.js.map +1 -0
  34. package/dist/forms/create-form.d.ts.map +1 -1
  35. package/dist/forms/index.d.ts +3 -2
  36. package/dist/forms/index.d.ts.map +1 -1
  37. package/dist/forms/types.d.ts +46 -0
  38. package/dist/forms/types.d.ts.map +1 -1
  39. package/dist/forms/use-field.d.ts +34 -0
  40. package/dist/forms/use-field.d.ts.map +1 -0
  41. package/dist/forms/validators.d.ts +25 -0
  42. package/dist/forms/validators.d.ts.map +1 -1
  43. package/dist/forms-UcRHsYxC.js +227 -0
  44. package/dist/forms-UcRHsYxC.js.map +1 -0
  45. package/dist/forms.es.mjs +14 -12
  46. package/dist/full.d.ts +17 -26
  47. package/dist/full.d.ts.map +1 -1
  48. package/dist/full.es.mjs +206 -181
  49. package/dist/full.iife.js +33 -33
  50. package/dist/full.iife.js.map +1 -1
  51. package/dist/full.umd.js +33 -33
  52. package/dist/full.umd.js.map +1 -1
  53. package/dist/function-Cybd57JV.js +33 -0
  54. package/dist/function-Cybd57JV.js.map +1 -0
  55. package/dist/{i18n-BnnhTFOS.js → i18n-kuF6Ekj6.js} +3 -3
  56. package/dist/i18n-kuF6Ekj6.js.map +1 -0
  57. package/dist/i18n.es.mjs +1 -1
  58. package/dist/index.es.mjs +251 -228
  59. package/dist/media/breakpoints.d.ts.map +1 -1
  60. package/dist/media/types.d.ts +2 -2
  61. package/dist/media/types.d.ts.map +1 -1
  62. package/dist/{media-Di2Ta22s.js → media-i-fB5WxI.js} +3 -3
  63. package/dist/media-i-fB5WxI.js.map +1 -0
  64. package/dist/media.es.mjs +1 -1
  65. package/dist/{motion-qPj_TYGv.js → motion-BJsAuULb.js} +2 -2
  66. package/dist/motion-BJsAuULb.js.map +1 -0
  67. package/dist/motion.es.mjs +1 -1
  68. package/dist/{mount-SM07RUa6.js → mount-B4Y8bk8Z.js} +5 -5
  69. package/dist/mount-B4Y8bk8Z.js.map +1 -0
  70. package/dist/{platform-CPbCprb6.js → platform-Dw2gE3zI.js} +3 -3
  71. package/dist/{platform-CPbCprb6.js.map → platform-Dw2gE3zI.js.map} +1 -1
  72. package/dist/platform.es.mjs +2 -2
  73. package/dist/plugin/registry.d.ts.map +1 -1
  74. package/dist/{plugin-cPoOHFLY.js → plugin-C2WuC8SF.js} +20 -18
  75. package/dist/plugin-C2WuC8SF.js.map +1 -0
  76. package/dist/plugin.es.mjs +1 -1
  77. package/dist/reactive/async-data.d.ts +28 -3
  78. package/dist/reactive/async-data.d.ts.map +1 -1
  79. package/dist/reactive/computed.d.ts +3 -0
  80. package/dist/reactive/computed.d.ts.map +1 -1
  81. package/dist/reactive/effect.d.ts +3 -0
  82. package/dist/reactive/effect.d.ts.map +1 -1
  83. package/dist/reactive/http.d.ts +194 -0
  84. package/dist/reactive/http.d.ts.map +1 -0
  85. package/dist/reactive/index.d.ts +2 -2
  86. package/dist/reactive/index.d.ts.map +1 -1
  87. package/dist/reactive/pagination.d.ts +126 -0
  88. package/dist/reactive/pagination.d.ts.map +1 -0
  89. package/dist/reactive/polling.d.ts +55 -0
  90. package/dist/reactive/polling.d.ts.map +1 -0
  91. package/dist/reactive/readonly.d.ts +20 -1
  92. package/dist/reactive/readonly.d.ts.map +1 -1
  93. package/dist/reactive/rest.d.ts +293 -0
  94. package/dist/reactive/rest.d.ts.map +1 -0
  95. package/dist/reactive/scope.d.ts +140 -0
  96. package/dist/reactive/scope.d.ts.map +1 -0
  97. package/dist/reactive/signal.d.ts +16 -2
  98. package/dist/reactive/signal.d.ts.map +1 -1
  99. package/dist/reactive/to-value.d.ts +57 -0
  100. package/dist/reactive/to-value.d.ts.map +1 -0
  101. package/dist/reactive/websocket.d.ts +285 -0
  102. package/dist/reactive/websocket.d.ts.map +1 -0
  103. package/dist/reactive-DwkhUJfP.js +1148 -0
  104. package/dist/reactive-DwkhUJfP.js.map +1 -0
  105. package/dist/reactive.es.mjs +38 -19
  106. package/dist/{registry-CWf368tT.js → registry-B08iilIh.js} +1 -1
  107. package/dist/{registry-CWf368tT.js.map → registry-B08iilIh.js.map} +1 -1
  108. package/dist/router/constraints.d.ts.map +1 -1
  109. package/dist/router/index.d.ts +1 -1
  110. package/dist/router/index.d.ts.map +1 -1
  111. package/dist/router/router.d.ts.map +1 -1
  112. package/dist/router/state.d.ts +25 -2
  113. package/dist/router/state.d.ts.map +1 -1
  114. package/dist/router-CQikC9Ed.js +492 -0
  115. package/dist/router-CQikC9Ed.js.map +1 -0
  116. package/dist/router.es.mjs +9 -8
  117. package/dist/ssr/hydrate.d.ts.map +1 -1
  118. package/dist/{ssr-B2qd_WBB.js → ssr-_dAcGdzu.js} +4 -4
  119. package/dist/ssr-_dAcGdzu.js.map +1 -0
  120. package/dist/ssr.es.mjs +1 -1
  121. package/dist/store/persisted.d.ts.map +1 -1
  122. package/dist/{store-DWpyH6p5.js → store-Cb3gPRve.js} +7 -7
  123. package/dist/store-Cb3gPRve.js.map +1 -0
  124. package/dist/store.es.mjs +2 -2
  125. package/dist/storybook.es.mjs.map +1 -1
  126. package/dist/{testing-CsqjNUyy.js → testing-C5Sjfsna.js} +8 -8
  127. package/dist/testing-C5Sjfsna.js.map +1 -0
  128. package/dist/testing.es.mjs +1 -1
  129. package/dist/{type-guards-Do9DWgNp.js → type-guards-BMX2c0LP.js} +1 -1
  130. package/dist/{type-guards-Do9DWgNp.js.map → type-guards-BMX2c0LP.js.map} +1 -1
  131. package/dist/untrack-D0fnO5k2.js +36 -0
  132. package/dist/untrack-D0fnO5k2.js.map +1 -0
  133. package/dist/view/custom-directives.d.ts.map +1 -1
  134. package/dist/view.es.mjs +4 -4
  135. package/package.json +178 -177
  136. package/src/a11y/announce.ts +131 -131
  137. package/src/a11y/audit.ts +314 -314
  138. package/src/a11y/index.ts +68 -68
  139. package/src/a11y/media-preferences.ts +255 -255
  140. package/src/a11y/roving-tab-index.ts +164 -164
  141. package/src/a11y/skip-link.ts +255 -255
  142. package/src/a11y/trap-focus.ts +184 -184
  143. package/src/a11y/types.ts +183 -183
  144. package/src/component/component.ts +599 -599
  145. package/src/component/html.ts +153 -153
  146. package/src/component/index.ts +52 -52
  147. package/src/component/library.ts +540 -542
  148. package/src/component/scope.ts +212 -212
  149. package/src/component/types.ts +310 -310
  150. package/src/core/collection.ts +876 -707
  151. package/src/core/element.ts +1015 -981
  152. package/src/core/env.ts +60 -60
  153. package/src/core/index.ts +49 -49
  154. package/src/core/shared.ts +77 -62
  155. package/src/core/utils/index.ts +148 -148
  156. package/src/devtools/devtools.ts +410 -410
  157. package/src/devtools/index.ts +48 -48
  158. package/src/devtools/types.ts +104 -104
  159. package/src/dnd/draggable.ts +296 -296
  160. package/src/dnd/droppable.ts +228 -228
  161. package/src/dnd/index.ts +62 -62
  162. package/src/dnd/sortable.ts +307 -307
  163. package/src/dnd/types.ts +293 -293
  164. package/src/forms/create-form.ts +320 -278
  165. package/src/forms/index.ts +70 -65
  166. package/src/forms/types.ts +203 -154
  167. package/src/forms/use-field.ts +231 -0
  168. package/src/forms/validators.ts +294 -265
  169. package/src/full.ts +554 -480
  170. package/src/i18n/formatting.ts +67 -67
  171. package/src/i18n/i18n.ts +200 -200
  172. package/src/i18n/index.ts +67 -67
  173. package/src/i18n/translate.ts +182 -182
  174. package/src/i18n/types.ts +171 -171
  175. package/src/index.ts +108 -108
  176. package/src/media/battery.ts +116 -116
  177. package/src/media/breakpoints.ts +129 -131
  178. package/src/media/clipboard.ts +80 -80
  179. package/src/media/device-sensors.ts +158 -158
  180. package/src/media/geolocation.ts +119 -119
  181. package/src/media/index.ts +76 -76
  182. package/src/media/media-query.ts +92 -92
  183. package/src/media/network.ts +115 -115
  184. package/src/media/types.ts +177 -177
  185. package/src/media/viewport.ts +84 -84
  186. package/src/motion/index.ts +57 -57
  187. package/src/motion/morph.ts +151 -151
  188. package/src/motion/parallax.ts +120 -120
  189. package/src/motion/reduced-motion.ts +66 -66
  190. package/src/motion/types.ts +271 -271
  191. package/src/motion/typewriter.ts +164 -164
  192. package/src/plugin/index.ts +37 -37
  193. package/src/plugin/registry.ts +284 -269
  194. package/src/plugin/types.ts +137 -137
  195. package/src/reactive/async-data.ts +250 -29
  196. package/src/reactive/computed.ts +144 -130
  197. package/src/reactive/effect.ts +29 -6
  198. package/src/reactive/http.ts +790 -0
  199. package/src/reactive/index.ts +60 -0
  200. package/src/reactive/pagination.ts +317 -0
  201. package/src/reactive/polling.ts +179 -0
  202. package/src/reactive/readonly.ts +52 -8
  203. package/src/reactive/rest.ts +859 -0
  204. package/src/reactive/scope.ts +276 -0
  205. package/src/reactive/signal.ts +61 -1
  206. package/src/reactive/to-value.ts +71 -0
  207. package/src/reactive/websocket.ts +849 -0
  208. package/src/router/bq-link.ts +279 -279
  209. package/src/router/constraints.ts +204 -201
  210. package/src/router/index.ts +49 -49
  211. package/src/router/match.ts +312 -312
  212. package/src/router/path-pattern.ts +52 -52
  213. package/src/router/query.ts +38 -38
  214. package/src/router/router.ts +421 -402
  215. package/src/router/state.ts +51 -3
  216. package/src/router/types.ts +139 -139
  217. package/src/router/use-route.ts +68 -68
  218. package/src/router/utils.ts +157 -157
  219. package/src/security/index.ts +12 -12
  220. package/src/ssr/hydrate.ts +84 -82
  221. package/src/ssr/index.ts +70 -70
  222. package/src/ssr/render.ts +508 -508
  223. package/src/ssr/serialize.ts +296 -296
  224. package/src/ssr/types.ts +81 -81
  225. package/src/store/create-store.ts +467 -467
  226. package/src/store/index.ts +27 -27
  227. package/src/store/persisted.ts +245 -249
  228. package/src/store/types.ts +247 -247
  229. package/src/store/utils.ts +135 -135
  230. package/src/storybook/index.ts +480 -480
  231. package/src/testing/index.ts +42 -42
  232. package/src/testing/testing.ts +593 -593
  233. package/src/testing/types.ts +170 -170
  234. package/src/view/custom-directives.ts +28 -30
  235. package/src/view/evaluate.ts +292 -292
  236. package/src/view/process.ts +108 -108
  237. package/dist/a11y-C5QOVvRn.js.map +0 -1
  238. package/dist/component-CuuTijA6.js.map +0 -1
  239. package/dist/constraints-3lV9yyBw.js.map +0 -1
  240. package/dist/core-Cjl7GUu8.js.map +0 -1
  241. package/dist/core-DnlyjbF2.js +0 -112
  242. package/dist/core-DnlyjbF2.js.map +0 -1
  243. package/dist/custom-directives-7wAShnnd.js.map +0 -1
  244. package/dist/devtools-D2fQLhDN.js.map +0 -1
  245. package/dist/dnd-B8EgyzaI.js.map +0 -1
  246. package/dist/env-NeVmr4Gf.js.map +0 -1
  247. package/dist/forms-C3yovgH9.js +0 -141
  248. package/dist/forms-C3yovgH9.js.map +0 -1
  249. package/dist/i18n-BnnhTFOS.js.map +0 -1
  250. package/dist/media-Di2Ta22s.js.map +0 -1
  251. package/dist/motion-qPj_TYGv.js.map +0 -1
  252. package/dist/mount-SM07RUa6.js.map +0 -1
  253. package/dist/plugin-cPoOHFLY.js.map +0 -1
  254. package/dist/reactive-Cfv0RK6x.js +0 -233
  255. package/dist/reactive-Cfv0RK6x.js.map +0 -1
  256. package/dist/router-BrthaP_z.js +0 -473
  257. package/dist/router-BrthaP_z.js.map +0 -1
  258. package/dist/ssr-B2qd_WBB.js.map +0 -1
  259. package/dist/store-DWpyH6p5.js.map +0 -1
  260. package/dist/testing-CsqjNUyy.js.map +0 -1
  261. package/dist/untrack-DJVQQ2WM.js +0 -33
  262. package/dist/untrack-DJVQQ2WM.js.map +0 -1
@@ -0,0 +1,33 @@
1
+ function u(n, e) {
2
+ let t;
3
+ return Object.assign((...o) => {
4
+ t !== void 0 && clearTimeout(t), t = setTimeout(() => {
5
+ t = void 0, n(...o);
6
+ }, e);
7
+ }, { cancel: () => {
8
+ t !== void 0 && (clearTimeout(t), t = void 0);
9
+ } });
10
+ }
11
+ function c(n, e) {
12
+ let t = 0;
13
+ return Object.assign((...o) => {
14
+ const i = Date.now();
15
+ i - t >= e && (t = i, n(...o));
16
+ }, { cancel: () => {
17
+ t = 0;
18
+ } });
19
+ }
20
+ function r(n) {
21
+ let e = !1, t;
22
+ return (...o) => (e || (t = n(...o), e = !0), t);
23
+ }
24
+ function a() {
25
+ }
26
+ export {
27
+ c as i,
28
+ a as n,
29
+ r,
30
+ u as t
31
+ };
32
+
33
+ //# sourceMappingURL=function-Cybd57JV.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"function-Cybd57JV.js","names":[],"sources":["../src/core/utils/function.ts"],"sourcesContent":["/**\n * Function-focused utility helpers.\n *\n * @module bquery/core/utils/function\n */\n\n/** A debounced function with a cancel method to clear the pending timeout. */\nexport interface DebouncedFn<TArgs extends unknown[]> {\n (...args: TArgs): void;\n /** Cancels the pending debounced invocation. */\n cancel(): void;\n}\n\n/** A throttled function with a cancel method to reset the throttle timer. */\nexport interface ThrottledFn<TArgs extends unknown[]> {\n (...args: TArgs): void;\n /** Resets the throttle timer, allowing the next call to execute immediately. */\n cancel(): void;\n}\n\n/**\n * Creates a debounced function that delays execution until after\n * the specified delay has elapsed since the last call.\n *\n * @template TArgs - The argument types of the function\n * @param fn - The function to debounce\n * @param delayMs - Delay in milliseconds\n * @returns A debounced version of the function with a `cancel()` method\n *\n * @example\n * ```ts\n * const search = debounce((query: string) => {\n * console.log('Searching:', query);\n * }, 300);\n *\n * search('h');\n * search('he');\n * search('hello'); // Only this call executes after 300ms\n *\n * search('cancel me');\n * search.cancel(); // Cancels the pending invocation\n * ```\n */\nexport function debounce<TArgs extends unknown[]>(\n fn: (...args: TArgs) => void,\n delayMs: number\n): DebouncedFn<TArgs> {\n let timeoutId: ReturnType<typeof setTimeout> | undefined;\n const debounced: DebouncedFn<TArgs> = Object.assign(\n (...args: TArgs) => {\n if (timeoutId !== undefined) {\n clearTimeout(timeoutId);\n }\n timeoutId = setTimeout(() => {\n timeoutId = undefined;\n fn(...args);\n }, delayMs);\n },\n {\n cancel: () => {\n if (timeoutId !== undefined) {\n clearTimeout(timeoutId);\n timeoutId = undefined;\n }\n },\n }\n );\n return debounced;\n}\n\n/**\n * Creates a throttled function that runs at most once per interval.\n *\n * @template TArgs - The argument types of the function\n * @param fn - The function to throttle\n * @param intervalMs - Minimum interval between calls in milliseconds\n * @returns A throttled version of the function with a `cancel()` method\n *\n * @example\n * ```ts\n * const handleScroll = throttle(() => {\n * console.log('Scroll position:', window.scrollY);\n * }, 100);\n *\n * window.addEventListener('scroll', handleScroll);\n *\n * handleScroll.cancel(); // Resets throttle, next call executes immediately\n * ```\n */\nexport function throttle<TArgs extends unknown[]>(\n fn: (...args: TArgs) => void,\n intervalMs: number\n): ThrottledFn<TArgs> {\n let lastRun = 0;\n const throttled: ThrottledFn<TArgs> = Object.assign(\n (...args: TArgs) => {\n const now = Date.now();\n if (now - lastRun >= intervalMs) {\n lastRun = now;\n fn(...args);\n }\n },\n {\n cancel: () => {\n lastRun = 0;\n },\n }\n );\n return throttled;\n}\n\n/**\n * Ensures a function only runs once. Subsequent calls return the first result.\n *\n * @template TArgs - The argument types of the function\n * @template TResult - The return type of the function\n * @param fn - The function to wrap\n * @returns A function that only runs once\n *\n * @example\n * ```ts\n * const init = once(() => ({ ready: true }));\n * init();\n * init(); // only runs once\n * ```\n */\nexport function once<TArgs extends unknown[], TResult>(\n fn: (...args: TArgs) => TResult\n): (...args: TArgs) => TResult {\n let hasRun = false;\n let result!: TResult;\n return (...args: TArgs) => {\n if (!hasRun) {\n result = fn(...args);\n hasRun = true;\n }\n return result;\n };\n}\n\n/**\n * A no-operation function.\n *\n * @example\n * ```ts\n * noop();\n * ```\n */\nexport function noop(): void {\n // Intentionally empty\n}\n"],"mappings":"AA2CA,SAAgB,EACd,GACA,GACoB;AACpB,MAAI;AAoBJ,SAnBsC,OAAO,OAAA,IACvC,MAAgB;AAClB,IAAI,MAAc,UAChB,aAAa,CAAA,GAEf,IAAY,WAAA,MAAiB;AAC3B,MAAA,IAAY,QACZ,EAAG,GAAG,CAAA;AAAA,OACL,CAAA;AAAA,KAEL,EACE,QAAA,MAAc;AACZ,IAAI,MAAc,WAChB,aAAa,CAAA,GACb,IAAY;AAAA,KAGjB;;AAwBL,SAAgB,EACd,GACA,GACoB;AACpB,MAAI,IAAU;AAed,SAdsC,OAAO,OAAA,IACvC,MAAgB;AAClB,UAAM,IAAM,KAAK,IAAA;AACjB,IAAI,IAAM,KAAW,MACnB,IAAU,GACV,EAAG,GAAG,CAAA;AAAA,KAGV,EACE,QAAA,MAAc;AACZ,IAAA,IAAU;AAAA,KAEb;;AAoBL,SAAgB,EACd,GAC6B;AAC7B,MAAI,IAAS,IACT;AACJ,SAAA,IAAW,OACJ,MACH,IAAS,EAAG,GAAG,CAAA,GACf,IAAS,KAEJ;;AAYX,SAAgB,IAAa;AAAA"}
@@ -1,6 +1,6 @@
1
1
  import { a as v, i as l, r as p } from "./object-BCk-1c8T.js";
2
- import { n as y } from "./core-DnlyjbF2.js";
3
- import { r as L } from "./untrack-DJVQQ2WM.js";
2
+ import { n as y } from "./core-DdtZHzsS.js";
3
+ import { r as L } from "./untrack-D0fnO5k2.js";
4
4
  var O = (n, o, s) => {
5
5
  const { locale: e, ...t } = s ?? {};
6
6
  try {
@@ -86,4 +86,4 @@ export {
86
86
  x as t
87
87
  };
88
88
 
89
- //# sourceMappingURL=i18n-BnnhTFOS.js.map
89
+ //# sourceMappingURL=i18n-kuF6Ekj6.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"i18n-kuF6Ekj6.js","names":[],"sources":["../src/i18n/formatting.ts","../src/i18n/translate.ts","../src/i18n/i18n.ts"],"sourcesContent":["/**\n * Number and date formatting helpers using Intl APIs.\n * @module bquery/i18n\n */\n\nimport type { DateFormatOptions, NumberFormatOptions } from './types';\n\n/**\n * Formats a number using the Intl.NumberFormat API.\n *\n * @param value - The number to format\n * @param locale - The locale code (e.g. 'en-US', 'de-DE')\n * @param options - Intl.NumberFormat options\n * @returns The formatted number string\n *\n * @example\n * ```ts\n * formatNumber(1234.56, 'en-US'); // '1,234.56'\n * formatNumber(1234.56, 'de-DE'); // '1.234,56'\n * formatNumber(0.42, 'en-US', { style: 'percent' }); // '42%'\n * formatNumber(9.99, 'en-US', { style: 'currency', currency: 'USD' }); // '$9.99'\n * ```\n */\nexport const formatNumber = (\n value: number,\n locale: string,\n options?: NumberFormatOptions\n): string => {\n const { locale: _ignored, ...intlOptions } = options ?? {};\n try {\n return new Intl.NumberFormat(locale, intlOptions).format(value);\n } catch {\n // Fall back to basic toString on Intl errors\n return String(value);\n }\n};\n\n/**\n * Formats a date using the Intl.DateTimeFormat API.\n *\n * @param value - The date to format (Date object or timestamp)\n * @param locale - The locale code\n * @param options - Intl.DateTimeFormat options\n * @returns The formatted date string\n *\n * @example\n * ```ts\n * const date = new Date('2026-03-26');\n * formatDate(date, 'en-US'); // '3/26/2026'\n * formatDate(date, 'de-DE'); // '26.3.2026'\n * formatDate(date, 'en-US', { dateStyle: 'long' }); // 'March 26, 2026'\n * ```\n */\nexport const formatDate = (\n value: Date | number,\n locale: string,\n options?: DateFormatOptions\n): string => {\n const { locale: _ignored, ...intlOptions } = options ?? {};\n const date = typeof value === 'number' ? new Date(value) : value;\n try {\n return new Intl.DateTimeFormat(locale, intlOptions).format(date);\n } catch {\n // Fall back to toLocaleString on Intl errors\n return date.toLocaleString();\n }\n};\n","/**\n * Translation resolution helpers.\n * @module bquery/i18n\n * @internal\n */\n\nimport { isPlainObject, isPrototypePollutionKey, merge } from '../core/utils/object';\nimport type { LocaleMessages, TranslateParams } from './types';\n\n/**\n * Resolves a dot-delimited key path against a messages object.\n *\n * @param messages - The locale messages\n * @param key - Dot-delimited key (e.g. 'user.welcome')\n * @returns The resolved string, or `undefined` if not found\n *\n * @internal\n */\nexport const resolveKey = (messages: LocaleMessages, key: string): string | undefined => {\n const parts = key.split('.');\n let current: LocaleMessages | string = messages;\n\n for (const part of parts) {\n if (typeof current === 'string') return undefined;\n if (current[part] === undefined) return undefined;\n current = current[part];\n }\n\n return typeof current === 'string' ? current : undefined;\n};\n\n/**\n * Interpolates `{param}` placeholders in a string.\n *\n * @param template - The template string with `{key}` placeholders\n * @param params - Key-value pairs for replacement\n * @returns The interpolated string\n *\n * @example\n * ```ts\n * interpolate('Hello, {name}!', { name: 'Ada' });\n * // → 'Hello, Ada!'\n * ```\n *\n * @internal\n */\nexport const interpolate = (template: string, params: TranslateParams): string => {\n return template.replace(/\\{(\\w+)\\}/g, (match, key: string) => {\n if (key in params) {\n return String(params[key]);\n }\n return match; // Leave unmatched placeholders as-is\n });\n};\n\n/**\n * Selects the correct plural form from a pipe-delimited string.\n *\n * Supports two formats:\n * - **Two forms:** `\"singular | plural\"` — singular when count === 1\n * - **Three forms:** `\"zero | one | many\"` — zero when count === 0,\n * one when count === 1, many otherwise\n *\n * The `count` parameter must be present in `params` for pluralization.\n * If no `count` param exists or the string has no pipes, the string is\n * returned as-is.\n *\n * @param template - Pipe-delimited plural forms\n * @param params - Must include a `count` key for plural selection\n * @returns The selected form\n *\n * @example\n * ```ts\n * pluralize('{count} item | {count} items', { count: 1 });\n * // → '{count} item'\n *\n * pluralize('no items | {count} item | {count} items', { count: 0 });\n * // → 'no items'\n * ```\n *\n * @internal\n */\nexport const pluralize = (template: string, params: TranslateParams): string => {\n if (!template.includes('|')) return template;\n if (!('count' in params)) return template;\n\n const count = Number(params.count);\n const forms = template.split('|').map((s) => s.trim());\n\n if (forms.length === 3) {\n // zero | one | many\n if (count === 0) return forms[0];\n if (count === 1) return forms[1];\n return forms[2];\n }\n\n if (forms.length === 2) {\n // singular | plural\n return count === 1 ? forms[0] : forms[1];\n }\n\n // More than 3 forms: use last form for \"many\"\n if (count === 0 && forms.length > 0) return forms[0];\n if (count === 1 && forms.length > 1) return forms[1];\n return forms[forms.length - 1];\n};\n\n/**\n * Full translation pipeline: resolve → pluralize → interpolate.\n *\n * @param messages - Locale messages\n * @param key - Dot-delimited key path\n * @param params - Interpolation + pluralization params\n * @param fallbackMessages - Optional fallback locale messages\n * @returns The translated string, or the key if not found\n *\n * @internal\n */\nexport const translate = (\n messages: LocaleMessages | undefined,\n key: string,\n params: TranslateParams,\n fallbackMessages?: LocaleMessages\n): string => {\n let template: string | undefined;\n\n // Try current locale\n if (messages) {\n template = resolveKey(messages, key);\n }\n\n // Fallback locale\n if (template === undefined && fallbackMessages) {\n template = resolveKey(fallbackMessages, key);\n }\n\n // Key not found — return key as-is\n if (template === undefined) {\n return key;\n }\n\n // Pluralize first, then interpolate\n const pluralized = pluralize(template, params);\n return interpolate(pluralized, params);\n};\n\n/**\n * Deep merges source into target and returns a sanitized, prototype-safe copy.\n *\n * @param target - Target messages object\n * @param source - Source messages to merge\n * @returns A new merged, sanitized messages object\n *\n * @internal\n */\nexport const deepMerge = (target: LocaleMessages, source: LocaleMessages): LocaleMessages => {\n const merged = merge(\n target as Record<string, unknown>,\n source as Record<string, unknown>\n ) as LocaleMessages;\n\n const cloneSafeMessages = (value: unknown): unknown => {\n if (Array.isArray(value)) {\n return value.map((entry) => cloneSafeMessages(entry));\n }\n\n if (!isPlainObject(value)) {\n return value;\n }\n\n const safeObject = Object.create(null) as Record<string, unknown>;\n for (const [key, entry] of Object.entries(value)) {\n if (isPrototypePollutionKey(key)) {\n continue;\n }\n safeObject[key] = cloneSafeMessages(entry);\n }\n return safeObject;\n };\n\n return cloneSafeMessages(merged) as LocaleMessages;\n};\n","/**\n * Core i18n factory function.\n * @module bquery/i18n\n */\n\nimport { computed, signal } from '../reactive/index';\nimport { isPrototypePollutionKey } from '../core/utils/object';\nimport { formatDate, formatNumber } from './formatting';\nimport { deepMerge, translate } from './translate';\nimport type {\n DateFormatOptions,\n I18nConfig,\n I18nInstance,\n LocaleLoader,\n LocaleMessages,\n Messages,\n NumberFormatOptions,\n TranslateParams,\n} from './types';\n\n/**\n * Creates a reactive internationalization instance.\n *\n * The returned object provides:\n * - `$locale` — a reactive signal for the current locale\n * - `t()` — translation with interpolation and pluralization\n * - `tc()` — reactive translation that auto-updates on locale change\n * - `loadLocale()` — register lazy-loaded locale files\n * - `n()` — locale-aware number formatting\n * - `d()` — locale-aware date formatting\n *\n * @param config - Initial configuration\n * @returns An i18n instance\n *\n * @example\n * ```ts\n * import { createI18n } from '@bquery/bquery/i18n';\n *\n * const i18n = createI18n({\n * locale: 'en',\n * fallbackLocale: 'en',\n * messages: {\n * en: {\n * greeting: 'Hello, {name}!',\n * items: '{count} item | {count} items',\n * },\n * de: {\n * greeting: 'Hallo, {name}!',\n * items: '{count} Gegenstand | {count} Gegenstände',\n * },\n * },\n * });\n *\n * i18n.t('greeting', { name: 'Ada' }); // 'Hello, Ada!'\n * i18n.t('items', { count: 3 }); // '3 items'\n *\n * // Switch locale reactively\n * i18n.$locale.value = 'de';\n * i18n.t('greeting', { name: 'Ada' }); // 'Hallo, Ada!'\n * ```\n */\nexport const createI18n = (config: I18nConfig): I18nInstance => {\n const { locale: initialLocale, messages: initialMessages, fallbackLocale } = config;\n\n const sanitizeLocaleMessages = (localeMessages: LocaleMessages): LocaleMessages =>\n deepMerge(Object.create(null) as LocaleMessages, localeMessages);\n\n // Deep-clone initial messages to prevent external mutation\n const messages = Object.create(null) as Messages;\n for (const [loc, msgs] of Object.entries(initialMessages)) {\n if (isPrototypePollutionKey(loc)) {\n continue;\n }\n messages[loc] = sanitizeLocaleMessages(msgs);\n }\n\n // Reactive locale signal\n const $locale = signal(initialLocale);\n\n // Lazy-loader registry\n const loaders = new Map<string, LocaleLoader>();\n\n // Track which loaders have been invoked to avoid duplicate loads\n const loadedLocales = new Set<string>(Object.keys(messages));\n\n /**\n * Get messages for a locale, or undefined if not loaded.\n */\n const getMessages = (loc: string): LocaleMessages | undefined => {\n if (isPrototypePollutionKey(loc)) {\n return undefined;\n }\n return messages[loc];\n };\n\n /**\n * Register a lazy-loader for a locale.\n */\n const loadLocale = (loc: string, loader: LocaleLoader): void => {\n if (isPrototypePollutionKey(loc)) {\n return;\n }\n loaders.set(loc, loader);\n };\n\n /**\n * Ensure a locale's messages are loaded.\n */\n const ensureLocale = async (loc: string): Promise<void> => {\n if (isPrototypePollutionKey(loc)) return;\n if (loadedLocales.has(loc)) return;\n\n const loader = loaders.get(loc);\n if (!loader) {\n throw new Error(`bQuery i18n: No messages or loader registered for locale \"${loc}\".`);\n }\n\n const loaded = await loader();\n // Handle both default exports and direct objects\n const msgs = (loaded as { default?: LocaleMessages }).default ?? (loaded as LocaleMessages);\n messages[loc] = sanitizeLocaleMessages(msgs);\n loadedLocales.add(loc);\n };\n\n /**\n * Translate a key path.\n */\n const t = (key: string, params: TranslateParams = {}): string => {\n const currentLocale = $locale.value;\n const currentMessages = messages[currentLocale];\n const fallbackMessages = fallbackLocale ? messages[fallbackLocale] : undefined;\n\n return translate(currentMessages, key, params, fallbackMessages);\n };\n\n /**\n * Reactive translation — returns a computed signal.\n */\n const tc = (key: string, params: TranslateParams = {}) => {\n return computed(() => {\n // Reading $locale.value creates a reactive dependency\n const currentLocale = $locale.value;\n const currentMessages = messages[currentLocale];\n const fallbackMessages = fallbackLocale ? messages[fallbackLocale] : undefined;\n\n return translate(currentMessages, key, params, fallbackMessages);\n });\n };\n\n /**\n * Format a number with the current (or overridden) locale.\n */\n const n = (value: number, options?: NumberFormatOptions): string => {\n const loc = options?.locale ?? $locale.value;\n return formatNumber(value, loc, options);\n };\n\n /**\n * Format a date with the current (or overridden) locale.\n */\n const d = (value: Date | number, options?: DateFormatOptions): string => {\n const loc = options?.locale ?? $locale.value;\n return formatDate(value, loc, options);\n };\n\n /**\n * Merge additional messages into a locale.\n */\n const mergeMessages = (loc: string, newMessages: LocaleMessages): void => {\n if (isPrototypePollutionKey(loc)) {\n return;\n }\n if (!messages[loc]) {\n messages[loc] = Object.create(null) as LocaleMessages;\n loadedLocales.add(loc);\n }\n messages[loc] = deepMerge(messages[loc], sanitizeLocaleMessages(newMessages));\n };\n\n /**\n * List all available locales (loaded + registered loaders).\n */\n const availableLocales = (): string[] => {\n const locales = new Set<string>([...loadedLocales, ...loaders.keys()]);\n return Array.from(locales).sort();\n };\n\n return {\n $locale,\n t,\n tc,\n loadLocale,\n ensureLocale,\n n,\n d,\n getMessages,\n mergeMessages,\n availableLocales,\n };\n};\n"],"mappings":";;;AAuBA,IAAa,IAAA,CACX,GACA,GACA,MACW;AACX,QAAM,EAAE,QAAQ,GAAU,GAAG,EAAA,IAAgB,KAAW,CAAA;AACxD,MAAI;AACF,WAAO,IAAI,KAAK,aAAa,GAAQ,CAAA,EAAa,OAAO,CAAA;AAAA,UACnD;AAEN,WAAO,OAAO,CAAA;AAAA;GAoBL,IAAA,CACX,GACA,GACA,MACW;AACX,QAAM,EAAE,QAAQ,GAAU,GAAG,EAAA,IAAgB,KAAW,CAAA,GAClD,IAAO,OAAO,KAAU,WAAW,IAAI,KAAK,CAAA,IAAS;AAC3D,MAAI;AACF,WAAO,IAAI,KAAK,eAAe,GAAQ,CAAA,EAAa,OAAO,CAAA;AAAA,UACrD;AAEN,WAAO,EAAK,eAAA;AAAA;GC9CH,IAAA,CAAc,GAA0B,MAAoC;AACvF,QAAM,IAAQ,EAAI,MAAM,GAAA;AACxB,MAAI,IAAmC;AAEvC,aAAW,KAAQ,GAAO;AAExB,QADI,OAAO,KAAY,YACnB,EAAQ,CAAA,MAAU,OAAW;AACjC,IAAA,IAAU,EAAQ,CAAA;AAAA;AAGpB,SAAO,OAAO,KAAY,WAAW,IAAU;GAkBpC,IAAA,CAAe,GAAkB,MACrC,EAAS,QAAQ,cAAA,CAAe,GAAO,MACxC,KAAO,IACF,OAAO,EAAO,CAAA,CAAA,IAEhB,IA+BE,IAAA,CAAa,GAAkB,MAAoC;AAE9E,MADI,CAAC,EAAS,SAAS,GAAA,KACnB,EAAE,WAAW,GAAS,QAAO;AAEjC,QAAM,IAAQ,OAAO,EAAO,KAAA,GACtB,IAAQ,EAAS,MAAM,GAAA,EAAK,IAAA,CAAK,MAAM,EAAE,KAAA,CAAM;AAErD,SAAI,EAAM,WAAW,IAEf,MAAU,IAAU,EAAM,CAAA,IAC1B,MAAU,IAAU,EAAM,CAAA,IACvB,EAAM,CAAA,IAGX,EAAM,WAAW,IAEZ,MAAU,IAAI,EAAM,CAAA,IAAK,EAAM,CAAA,IAIpC,MAAU,KAAK,EAAM,SAAS,IAAU,EAAM,CAAA,IAC9C,MAAU,KAAK,EAAM,SAAS,IAAU,EAAM,CAAA,IAC3C,EAAM,EAAM,SAAS,CAAA;GAcjB,IAAA,CACX,GACA,GACA,GACA,MACW;AACX,MAAI;AAaJ,SAVI,MACF,IAAW,EAAW,GAAU,CAAA,IAI9B,MAAa,UAAa,MAC5B,IAAW,EAAW,GAAkB,CAAA,IAItC,MAAa,SACR,IAKF,EADY,EAAU,GAAU,CAAA,GACR,CAAA;GAYpB,IAAA,CAAa,GAAwB,MAA2C;AAC3F,QAAM,IAAS,EACb,GACA,CAAA,GAGI,IAAA,CAAqB,MAA4B;AACrD,QAAI,MAAM,QAAQ,CAAA,EAChB,QAAO,EAAM,IAAA,CAAK,MAAU,EAAkB,CAAA,CAAM;AAGtD,QAAI,CAAC,EAAc,CAAA,EACjB,QAAO;AAGT,UAAM,IAAa,uBAAO,OAAO,IAAA;AACjC,eAAW,CAAC,GAAK,CAAA,KAAU,OAAO,QAAQ,CAAA;AACxC,MAAI,EAAwB,CAAA,MAG5B,EAAW,CAAA,IAAO,EAAkB,CAAA;AAEtC,WAAO;AAAA;AAGT,SAAO,EAAkB,CAAA;GCvHd,IAAA,CAAc,MAAqC;AAC9D,QAAM,EAAE,QAAQ,GAAe,UAAU,GAAiB,gBAAA,EAAA,IAAmB,GAEvE,IAAA,CAA0B,MAC9B,EAAU,uBAAO,OAAO,IAAA,GAAyB,CAAA,GAG7C,IAAW,uBAAO,OAAO,IAAA;AAC/B,aAAW,CAAC,GAAK,CAAA,KAAS,OAAO,QAAQ,CAAA;AACvC,IAAI,EAAwB,CAAA,MAG5B,EAAS,CAAA,IAAO,EAAuB,CAAA;AAIzC,QAAM,IAAU,EAAO,CAAA,GAGjB,IAAU,oBAAI,IAAA,GAGd,IAAgB,IAAI,IAAY,OAAO,KAAK,CAAA,CAAS;AAwG3D,SAAO;AAAA,IACL,SAAA;AAAA,IACA,GA9DI,CAAK,GAAa,IAA0B,CAAA,MAAe;AAE/D,YAAM,IAAkB,EADF,EAAQ,KAAA;AAI9B,aAAO,EAAU,GAAiB,GAAK,GAFd,IAAiB,EAAS,CAAA,IAAkB,MAAA;AAAA;IA4DrE,IApDI,CAAM,GAAa,IAA0B,CAAA,MAC1C,EAAA,MAAe;AAGpB,YAAM,IAAkB,EADF,EAAQ,KAAA;AAI9B,aAAO,EAAU,GAAiB,GAAK,GAFd,IAAiB,EAAS,CAAA,IAAkB,MAAA;AAAA;IAgDvE,YA7FI,CAAc,GAAa,MAA+B;AAC9D,MAAI,EAAwB,CAAA,KAG5B,EAAQ,IAAI,GAAK,CAAA;AAAA;IA0FjB,cApFmB,OAAO,MAA+B;AAEzD,UADI,EAAwB,CAAA,KACxB,EAAc,IAAI,CAAA,EAAM;AAE5B,YAAM,IAAS,EAAQ,IAAI,CAAA;AAC3B,UAAI,CAAC,EACH,OAAM,IAAI,MAAM,6DAA6D,CAAA,IAAI;AAGnF,YAAM,IAAS,MAAM,EAAA;AAGrB,MAAA,EAAS,CAAA,IAAO,EADF,EAAwC,WAAY,CAAA,GAElE,EAAc,IAAI,CAAA;AAAA;IAwElB,GAzCI,CAAK,GAAe,MAEjB,EAAa,GADR,GAAS,UAAU,EAAQ,OACP,CAAA;AAAA,IAwChC,GAlCI,CAAK,GAAsB,MAExB,EAAW,GADN,GAAS,UAAU,EAAQ,OACT,CAAA;AAAA,IAiC9B,aA3GI,CAAe,MAA4C;AAC/D,UAAI,CAAA,EAAwB,CAAA;AAG5B,eAAO,EAAS,CAAA;AAAA;IAwGhB,eA5BI,CAAiB,GAAa,MAAsC;AACxE,MAAI,EAAwB,CAAA,MAGvB,EAAS,CAAA,MACZ,EAAS,CAAA,IAAO,uBAAO,OAAO,IAAA,GAC9B,EAAc,IAAI,CAAA,IAEpB,EAAS,CAAA,IAAO,EAAU,EAAS,CAAA,GAAM,EAAuB,CAAA,CAAY;AAAA;IAqB5E,kBAfI,MAAmC;AACvC,YAAM,IAAU,oBAAI,IAAY,CAAC,GAAG,GAAe,GAAG,EAAQ,KAAA,CAAM,CAAC;AACrE,aAAO,MAAM,KAAK,CAAA,EAAS,KAAA;AAAA"}
package/dist/i18n.es.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { n as a, r as t, t as e } from "./i18n-BnnhTFOS.js";
1
+ import { n as a, r as t, t as e } from "./i18n-kuF6Ekj6.js";
2
2
  export {
3
3
  e as createI18n,
4
4
  a as formatDate,
package/dist/index.es.mjs CHANGED
@@ -1,240 +1,263 @@
1
- import { a, c as e, d as t, i as r, n as o, o as i, r as n, s as m, t as l } from "./sanitize-B1V4JswB.js";
2
- import { C as u, D as p, E as g, O as f, S as d, T as S, _ as b, a as C, b as y, c as h, d as k, f as v, g as E, h as T, i as D, l as P, m as O, n as A, o as w, p as x, r as B, s as I, t as R, u as F, v as L, w as q, x as Q, y as z } from "./core-Cjl7GUu8.js";
3
- import { a as N, n as H, o as $, r as j, s as G, t as _ } from "./object-BCk-1c8T.js";
4
- import { a as K, c as U, i as V, l as W, n as X, o as Y, r as Z, s as ss, t as as, u as es } from "./type-guards-Do9DWgNp.js";
5
- import { n as rs, r as os, t as is } from "./core-DnlyjbF2.js";
6
- import { a as ms, c as ls, i as cs, l as us, n as ps, o as gs, r as fs, s as ds, t as Ss, u as bs } from "./reactive-Cfv0RK6x.js";
7
- import { n as ys, t as hs } from "./config-BW35FKuA.js";
8
- import { n as vs, r as Es, t as Ts } from "./untrack-DJVQQ2WM.js";
9
- import { a as Ps, c as Os, i as As, l as ws, n as xs, o as Bs, r as Is, s as Rs, t as Fs } from "./component-CuuTijA6.js";
10
- import { C as qs, D as Qs, E as zs, O as Ms, S as Ns, T as Hs, _ as $s, a as js, b as Gs, c as _s, d as Js, f as Ks, g as Us, h as Vs, i as Ws, l as Xs, m as Ys, n as Zs, o as sa, p as aa, r as ea, s as ta, t as ra, u as oa, v as ia, w as na, x as ma, y as la } from "./motion-qPj_TYGv.js";
11
- import { a as ua, i as pa, n as ga, o as fa, r as da, s as Sa, t as ba } from "./platform-CPbCprb6.js";
12
- import { a as ya, c as ha, d as ka, f as va, i as Ea, l as Ta, n as Da, o as Pa, p as Oa, r as Aa, s as wa, t as xa, u as Ba } from "./router-BrthaP_z.js";
13
- import { i as Ra, n as Fa, t as La } from "./registry-CWf368tT.js";
14
- import { a as Qa, c as za, i as Ma, n as Na, o as Ha, r as $a, s as ja, t as Ga } from "./store-DWpyH6p5.js";
15
- import { n as Ja, r as Ka, t as Ua } from "./mount-SM07RUa6.js";
1
+ import { a, c as e, d as t, i as r, n as o, o as i, r as n, s as m, t as c } from "./sanitize-B1V4JswB.js";
2
+ import { C as l, S as p, _ as g, a as f, b as d, c as S, d as b, f as C, g as h, h as y, i as k, l as v, m as E, n as D, o as P, p as T, r as R, s as F, t as w, u as x, v as A, w as O, x as I, y as q } from "./core-EMYSLzaT.js";
3
+ import { a as L, n as Q, o as H, r as N, s as z, t as M } from "./object-BCk-1c8T.js";
4
+ import { i as $, n as j, r as G, t as V } from "./function-Cybd57JV.js";
5
+ import { a as J, c as K, i as U, l as X, n as Y, o as Z, r as ss, s as as, t as es, u as ts } from "./type-guards-BMX2c0LP.js";
6
+ import { c as os, i as is, n as ns, o as ms, r as cs, t as us } from "./core-DdtZHzsS.js";
7
+ import { C as ps, D as gs, E as fs, S as ds, T as Ss, _ as bs, a as Cs, b as hs, c as ys, d as ks, f as vs, g as Es, h as Ds, i as Ps, l as Ts, m as Rs, n as Fs, o as ws, r as xs, s as As, t as Os, u as Is, v as qs, w as Bs, x as Ls, y as Qs } from "./reactive-DwkhUJfP.js";
8
+ import { n as Ns, t as zs } from "./config-DhT9auRm.js";
9
+ import { n as _s, r as $s, t as js } from "./untrack-D0fnO5k2.js";
10
+ import { a as Vs, c as Ws, i as Js, l as Ks, n as Us, o as Xs, r as Ys, s as Zs, t as sa } from "./component-L3-JfOFz.js";
11
+ import { C as ea, D as ta, E as ra, O as oa, S as ia, T as na, _ as ma, a as ca, b as ua, c as la, d as pa, f as ga, g as fa, h as da, i as Sa, l as ba, m as Ca, n as ha, o as ya, p as ka, r as va, s as Ea, t as Da, u as Pa, v as Ta, w as Ra, x as Fa, y as wa } from "./motion-BJsAuULb.js";
12
+ import { a as Aa, i as Oa, n as Ia, o as qa, r as Ba, s as La, t as Qa } from "./platform-Dw2gE3zI.js";
13
+ import { a as Na, c as za, d as Ma, f as _a, i as $a, l as ja, m as Ga, n as Va, o as Wa, p as Ja, r as Ka, s as Ua, t as Xa, u as Ya } from "./router-CQikC9Ed.js";
14
+ import { i as se, n as ae, t as ee } from "./registry-B08iilIh.js";
15
+ import { a as re, c as oe, i as ie, n as ne, o as me, r as ce, s as ue, t as le } from "./store-Cb3gPRve.js";
16
+ import { n as ge, r as fe, t as de } from "./mount-B4Y8bk8Z.js";
16
17
  import "./view.es.mjs";
17
- import { a as Xa, c as Ya, d as Za, i as se, l as ae, n as ee, o as te, r as re, s as oe, t as ie, u as ne } from "./forms-C3yovgH9.js";
18
- import { n as le, r as ce, t as ue } from "./i18n-BnnhTFOS.js";
19
- import { a as ge, d as fe, i as de, l as Se, n as be, o as Ce, r as ye, s as he, t as ke, u as ve } from "./a11y-C5QOVvRn.js";
20
- import { n as Te, r as De, t as Pe } from "./dnd-B8EgyzaI.js";
21
- import { a as Ae, c as we, i as xe, l as Be, n as Ie, o as Re, r as Fe, s as Le, t as qe } from "./media-Di2Ta22s.js";
22
- import { a as ze, i as Me, n as Ne, o as He, r as $e, t as je } from "./plugin-cPoOHFLY.js";
23
- import { a as _e, c as Je, d as Ke, f as Ue, g as Ve, h as We, i as Xe, l as Ye, m as Ze, n as st, o as at, p as et, r as tt, s as rt, t as ot, u as it } from "./devtools-D2fQLhDN.js";
24
- import { a as mt, i as lt, n as ct, o as ut, r as pt, t as gt } from "./testing-CsqjNUyy.js";
25
- import { a as dt, i as St, n as bt, o as Ct, r as yt, t as ht } from "./ssr-B2qd_WBB.js";
18
+ import { a as Ce, c as he, d as ye, f as ke, i as ve, l as Ee, n as De, o as Pe, p as Te, r as Re, s as Fe, t as we, u as xe } from "./forms-UcRHsYxC.js";
19
+ import { n as Oe, r as Ie, t as qe } from "./i18n-kuF6Ekj6.js";
20
+ import { a as Le, d as Qe, i as He, l as Ne, n as ze, o as Me, r as _e, s as $e, t as je, u as Ge } from "./a11y-DVBCy09c.js";
21
+ import { n as We, r as Je, t as Ke } from "./dnd-NwZBYh4l.js";
22
+ import { a as Xe, c as Ye, i as Ze, l as st, n as at, o as et, r as tt, s as rt, t as ot } from "./media-i-fB5WxI.js";
23
+ import { a as nt, i as mt, n as ct, o as ut, r as lt, t as pt } from "./plugin-C2WuC8SF.js";
24
+ import { a as ft, c as dt, d as St, f as bt, g as Ct, h as ht, i as yt, l as kt, m as vt, n as Et, o as Dt, p as Pt, r as Tt, s as Rt, t as Ft, u as wt } from "./devtools-BhB2iDPT.js";
25
+ import { a as At, i as Ot, n as It, o as qt, r as Bt, t as Lt } from "./testing-C5Sjfsna.js";
26
+ import { a as Ht, i as Nt, n as zt, o as Mt, r as _t, t as $t } from "./ssr-_dAcGdzu.js";
26
27
  export {
27
- S as $,
28
- g as $$,
29
- p as BQueryCollection,
30
- f as BQueryElement,
31
- ha as BqLinkElement,
32
- vs as Computed,
33
- is as Signal,
34
- zs as animate,
35
- ve as announceToScreenReader,
36
- Se as auditA11y,
37
- Ba as back,
38
- bs as batch,
39
- xs as bool,
40
- we as breakpoints,
41
- Sa as buckets,
42
- fa as cache,
43
- A as capitalize,
44
- Ks as capturePosition,
45
- y as chunk,
46
- h as clamp,
47
- fe as clearAnnouncements,
48
- Ka as clearExpressionCache,
49
- ot as clearTimeline,
50
- qe as clipboard,
51
- _ as clone,
52
- Q as compact,
53
- Ps as component,
54
- Es as computed,
55
- Za as createForm,
56
- ue as createI18n,
57
- Na as createPersistedStore,
58
- Da as createRouter,
59
- ja as createStore,
60
- Ua as createTemplate,
28
+ I as $,
29
+ p as $$,
30
+ l as BQueryCollection,
31
+ O as BQueryElement,
32
+ za as BqLinkElement,
33
+ _s as Computed,
34
+ hs as HttpError,
35
+ us as Signal,
36
+ ra as animate,
37
+ Ge as announceToScreenReader,
38
+ Ne as auditA11y,
39
+ Ya as back,
40
+ gs as batch,
41
+ Us as bool,
42
+ Ye as breakpoints,
43
+ La as buckets,
44
+ qa as cache,
45
+ D as capitalize,
46
+ ga as capturePosition,
47
+ h as chunk,
48
+ S as clamp,
49
+ Qe as clearAnnouncements,
50
+ fe as clearExpressionCache,
51
+ Ft as clearTimeline,
52
+ ot as clipboard,
53
+ M as clone,
54
+ g as compact,
55
+ Vs as component,
56
+ $s as computed,
57
+ Te as createForm,
58
+ Ls as createHttp,
59
+ qe as createI18n,
60
+ ne as createPersistedStore,
61
+ ds as createRequestQueue,
62
+ ys as createRestClient,
63
+ Va as createRouter,
64
+ ue as createStore,
65
+ de as createTemplate,
61
66
  r as createTrustedHtml,
62
- ds as createUseFetch,
63
- Oa as currentRoute,
64
- ie as custom,
65
- ee as customAsync,
66
- E as debounce,
67
- hs as defineBqueryConfig,
68
- Bs as defineComponent,
69
- ga as definePageMeta,
70
- Ha as defineStore,
71
- bt as deserializeStoreState,
72
- La as destroyStore,
73
- De as draggable,
74
- Te as droppable,
75
- Us as easeInCubic,
76
- $s as easeInOutCubic,
77
- ia as easeInOutQuad,
78
- la as easeInQuad,
79
- Gs as easeOutBack,
80
- ma as easeOutCubic,
81
- Ns as easeOutExpo,
82
- qs as easeOutQuad,
83
- na as easingPresets,
84
- os as effect,
85
- re as email,
86
- st as enableDevtools,
87
- d as ensureArray,
88
- l as escapeHtml,
89
- B as escapeRegExp,
90
- gt as fireEvent,
91
- u as flatten,
92
- aa as flip,
93
- Ys as flipElements,
94
- Vs as flipList,
95
- ct as flushEffects,
96
- le as formatDate,
97
- ce as formatNumber,
98
- ka as forward,
67
+ Bs as createUseFetch,
68
+ Ja as currentRoute,
69
+ we as custom,
70
+ De as customAsync,
71
+ V as debounce,
72
+ Ts as deduplicateRequest,
73
+ zs as defineBqueryConfig,
74
+ Xs as defineComponent,
75
+ Ia as definePageMeta,
76
+ me as defineStore,
77
+ zt as deserializeStoreState,
78
+ ee as destroyStore,
79
+ Je as draggable,
80
+ We as droppable,
81
+ fa as easeInCubic,
82
+ ma as easeInOutCubic,
83
+ Ta as easeInOutQuad,
84
+ wa as easeInQuad,
85
+ ua as easeOutBack,
86
+ Fa as easeOutCubic,
87
+ ia as easeOutExpo,
88
+ ea as easeOutQuad,
89
+ Ra as easingPresets,
90
+ cs as effect,
91
+ is as effectScope,
92
+ Re as email,
93
+ Et as enableDevtools,
94
+ A as ensureArray,
95
+ c as escapeHtml,
96
+ R as escapeRegExp,
97
+ Lt as fireEvent,
98
+ q as flatten,
99
+ ka as flip,
100
+ Ca as flipElements,
101
+ da as flipList,
102
+ It as flushEffects,
103
+ Oe as formatDate,
104
+ Ie as formatNumber,
105
+ Ma as forward,
99
106
  m as generateNonce,
100
- tt as generateSignalLabel,
101
- ys as getBqueryConfig,
102
- je as getCustomDirective,
103
- Ne as getCustomDirectives,
104
- Xe as getDevtoolsState,
105
- ke as getFocusableElements,
106
- $e as getInstalledPlugins,
107
- Fa as getStore,
108
- _e as getTimeline,
107
+ Tt as generateSignalLabel,
108
+ Ns as getBqueryConfig,
109
+ ms as getCurrentScope,
110
+ pt as getCustomDirective,
111
+ ct as getCustomDirectives,
112
+ yt as getDevtoolsState,
113
+ je as getFocusableElements,
114
+ lt as getInstalledPlugins,
115
+ ae as getStore,
116
+ ft as getTimeline,
109
117
  a as getTrustedTypesPolicy,
110
118
  e as hasCSPDirective,
111
- H as hasOwn,
112
- Is as html,
113
- Ct as hydrateMount,
114
- yt as hydrateStore,
115
- St as hydrateStores,
116
- P as inRange,
117
- at as inspectComponents,
118
- rt as inspectSignals,
119
- Je as inspectStores,
120
- Pa as interceptLinks,
121
- Aa as isActive,
122
- Ea as isActiveSignal,
123
- as as isArray,
124
- X as isBoolean,
125
- Z as isCollection,
126
- ps as isComputed,
127
- V as isDate,
128
- Ye as isDevtoolsEnabled,
129
- K as isElement,
130
- v as isEmpty,
131
- Y as isFunction,
132
- Me as isInstalled,
133
- ss as isNumber,
134
- U as isObject,
135
- j as isPlainObject,
136
- W as isPromise,
137
- fs as isSignal,
138
- es as isString,
119
+ Q as hasOwn,
120
+ Ys as html,
121
+ ps as http,
122
+ Mt as hydrateMount,
123
+ _t as hydrateStore,
124
+ Nt as hydrateStores,
125
+ v as inRange,
126
+ Dt as inspectComponents,
127
+ Rt as inspectSignals,
128
+ dt as inspectStores,
129
+ Wa as interceptLinks,
130
+ Ka as isActive,
131
+ $a as isActiveSignal,
132
+ es as isArray,
133
+ Y as isBoolean,
134
+ ss as isCollection,
135
+ ws as isComputed,
136
+ U as isDate,
137
+ kt as isDevtoolsEnabled,
138
+ J as isElement,
139
+ C as isEmpty,
140
+ Z as isFunction,
141
+ mt as isInstalled,
142
+ Ga as isNavigating,
143
+ as as isNumber,
144
+ K as isObject,
145
+ N as isPlainObject,
146
+ X as isPromise,
147
+ As as isSignal,
148
+ ts as isString,
139
149
  i as isTrustedTypesSupported,
140
- Js as keyframePresets,
141
- Hs as linear,
142
- wa as link,
143
- gs as linkedSignal,
144
- Ra as listStores,
145
- it as logComponents,
146
- Ke as logSignals,
147
- Ue as logStores,
148
- et as logTimeline,
149
- $a as mapActions,
150
- Ma as mapGetters,
151
- Qa as mapState,
152
- se as max,
153
- Xa as maxLength,
154
- Be as mediaQuery,
155
- N as merge,
156
- te as min,
157
- oe as minLength,
158
- pt as mockRouter,
159
- lt as mockSignal,
160
- oa as morphElement,
161
- Ja as mount,
162
- va as navigate,
163
- b as noop,
164
- pa as notifications,
165
- $ as omit,
166
- L as once,
167
- Xs as parallax,
168
- x as parseJson,
169
- Ya as pattern,
170
- ms as persistedSignal,
171
- G as pick,
172
- Ce as prefersColorScheme,
173
- he as prefersContrast,
174
- Qs as prefersReducedMotion,
175
- F as randomInt,
176
- cs as readonly,
177
- Ze as recordEvent,
178
- Ta as registerBqLink,
179
- Fs as registerDefaultComponents,
180
- za as registerPlugin,
181
- be as releaseFocus,
182
- mt as renderComponent,
183
- ht as renderToString,
184
- ae as required,
185
- ze as resetPlugins,
186
- ya as resolve,
187
- ge as rovingTabIndex,
188
- As as safeHtml,
150
+ pa as keyframePresets,
151
+ na as linear,
152
+ Ua as link,
153
+ Qs as linkedSignal,
154
+ se as listStores,
155
+ wt as logComponents,
156
+ St as logSignals,
157
+ bt as logStores,
158
+ Pt as logTimeline,
159
+ ce as mapActions,
160
+ ie as mapGetters,
161
+ re as mapState,
162
+ ve as matchField,
163
+ Ce as max,
164
+ Pe as maxLength,
165
+ st as mediaQuery,
166
+ L as merge,
167
+ Fe as min,
168
+ he as minLength,
169
+ Bt as mockRouter,
170
+ Ot as mockSignal,
171
+ Pa as morphElement,
172
+ ge as mount,
173
+ _a as navigate,
174
+ j as noop,
175
+ Oa as notifications,
176
+ H as omit,
177
+ os as onScopeDispose,
178
+ G as once,
179
+ ba as parallax,
180
+ T as parseJson,
181
+ Ee as pattern,
182
+ Es as persistedSignal,
183
+ z as pick,
184
+ Me as prefersColorScheme,
185
+ $e as prefersContrast,
186
+ ta as prefersReducedMotion,
187
+ x as randomInt,
188
+ Rs as readonly,
189
+ vt as recordEvent,
190
+ ja as registerBqLink,
191
+ sa as registerDefaultComponents,
192
+ oe as registerPlugin,
193
+ ze as releaseFocus,
194
+ At as renderComponent,
195
+ $t as renderToString,
196
+ xe as required,
197
+ nt as resetPlugins,
198
+ Na as resolve,
199
+ Le as rovingTabIndex,
200
+ Js as safeHtml,
189
201
  o as sanitize,
190
202
  o as sanitizeHtml,
191
- _s as scrollAnimate,
192
- ea as sequence,
193
- dt as serializeStoreState,
194
- Ms as setReducedMotion,
195
- rs as signal,
196
- de as skipLink,
197
- O as sleep,
198
- D as slugify,
199
- Pe as sortable,
200
- sa as spring,
201
- ta as springPresets,
202
- js as stagger,
203
- ba as storage,
203
+ la as scrollAnimate,
204
+ va as sequence,
205
+ Ht as serializeStoreState,
206
+ oa as setReducedMotion,
207
+ ns as signal,
208
+ He as skipLink,
209
+ E as sleep,
210
+ k as slugify,
211
+ Ke as sortable,
212
+ ya as spring,
213
+ Ea as springPresets,
214
+ ca as stagger,
215
+ Qa as storage,
204
216
  n as stripTags,
205
- z as throttle,
206
- Ws as timeline,
207
- C as toCamelCase,
208
- w as toKebabCase,
209
- k as toNumber,
210
- We as trackSignal,
211
- Zs as transition,
212
- ye as trapFocus,
213
- I as truncate,
217
+ $ as throttle,
218
+ Sa as timeline,
219
+ f as toCamelCase,
220
+ P as toKebabCase,
221
+ b as toNumber,
222
+ Cs as toValue,
223
+ ht as trackSignal,
224
+ ha as transition,
225
+ _e as trapFocus,
226
+ F as truncate,
214
227
  t as trusted,
215
- ra as typewriter,
216
- T as uid,
217
- q as unique,
218
- Ts as untrack,
219
- Ve as untrackSignal,
220
- ne as url,
221
- He as use,
222
- da as useAnnouncer,
223
- ls as useAsyncData,
224
- Ae as useBattery,
225
- Rs as useComputed,
226
- ua as useCookie,
227
- Ie as useDeviceMotion,
228
- Fe as useDeviceOrientation,
229
- Os as useEffect,
230
- us as useFetch,
231
- xe as useGeolocation,
232
- Re as useNetworkStatus,
233
- xa as useRoute,
234
- ws as useSignal,
235
- Le as useViewport,
236
- R as utils,
237
- ut as waitFor,
238
- Ss as watch,
239
- Ga as watchStore
228
+ Da as typewriter,
229
+ y as uid,
230
+ d as unique,
231
+ js as untrack,
232
+ Ct as untrackSignal,
233
+ ye as url,
234
+ ut as use,
235
+ Ba as useAnnouncer,
236
+ Ss as useAsyncData,
237
+ Xe as useBattery,
238
+ Zs as useComputed,
239
+ Aa as useCookie,
240
+ at as useDeviceMotion,
241
+ tt as useDeviceOrientation,
242
+ Ws as useEffect,
243
+ Os as useEventSource,
244
+ fs as useFetch,
245
+ ke as useFormField,
246
+ Ze as useGeolocation,
247
+ bs as useInfiniteFetch,
248
+ et as useNetworkStatus,
249
+ qs as usePaginatedFetch,
250
+ Ds as usePolling,
251
+ Is as useResource,
252
+ ks as useResourceList,
253
+ Xa as useRoute,
254
+ Ks as useSignal,
255
+ vs as useSubmit,
256
+ rt as useViewport,
257
+ Fs as useWebSocket,
258
+ xs as useWebSocketChannel,
259
+ w as utils,
260
+ qt as waitFor,
261
+ Ps as watch,
262
+ le as watchStore
240
263
  };
@@ -1 +1 @@
1
- {"version":3,"file":"breakpoints.d.ts","sourceRoot":"","sources":["../../src/media/breakpoints.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAEhE,KAAK,iBAAiB,CAAC,CAAC,SAAS,aAAa,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,iBAAiB,CAAC,OAAO,CAAC;CAAE,GAAG;IACjG,UAAU,IAAI,IAAI,CAAC;CACpB,GAAG,CAAC,SAAS,SAAS,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG;IAAE,OAAO,IAAI,IAAI,CAAA;CAAE,CAAC,CAAC;AAE7E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS,aAAa,EACjD,IAAI,CAAC,KACJ,iBAAiB,CAAC,CAAC,CAgFrB,CAAC"}
1
+ {"version":3,"file":"breakpoints.d.ts","sourceRoot":"","sources":["../../src/media/breakpoints.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAEhE,KAAK,iBAAiB,CAAC,CAAC,SAAS,aAAa,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,iBAAiB,CAAC,OAAO,CAAC;CAAE,GAAG;IACjG,UAAU,IAAI,IAAI,CAAC;CACpB,GAAG,CAAC,SAAS,SAAS,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG;IAAE,OAAO,IAAI,IAAI,CAAA;CAAE,CAAC,CAAC;AAE7E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS,aAAa,EAAE,IAAI,CAAC,KAAG,iBAAiB,CAAC,CAAC,CAgF/E,CAAC"}
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * @module bquery/media
5
5
  */
6
- import type { ReadonlySignal } from '../reactive/index';
6
+ import type { ReadonlySignalHandle } from '../reactive/index';
7
7
  /**
8
8
  * Readonly media signal with an explicit cleanup hook.
9
9
  *
@@ -11,7 +11,7 @@ import type { ReadonlySignal } from '../reactive/index';
11
11
  * geolocation watchers. Call `destroy()` when the signal is no longer needed
12
12
  * to release those underlying subscriptions.
13
13
  */
14
- export interface MediaSignalHandle<T> extends ReadonlySignal<T> {
14
+ export interface MediaSignalHandle<T> extends ReadonlySignalHandle<T> {
15
15
  /** Releases any underlying browser listeners or observers. Safe to call multiple times. */
16
16
  destroy(): void;
17
17
  }