@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
package/dist/view.es.mjs CHANGED
@@ -1,7 +1,7 @@
1
- import { n as a, r as o } from "./core-DnlyjbF2.js";
2
- import { u as e } from "./reactive-Cfv0RK6x.js";
3
- import { r as s } from "./untrack-DJVQQ2WM.js";
4
- import { n as c, r as f, t as i } from "./mount-SM07RUa6.js";
1
+ import { n as a, r as o } from "./core-DdtZHzsS.js";
2
+ import { D as e } from "./reactive-DwkhUJfP.js";
3
+ import { r as s } from "./untrack-D0fnO5k2.js";
4
+ import { n as c, r as f, t as i } from "./mount-B4Y8bk8Z.js";
5
5
  export {
6
6
  e as batch,
7
7
  f as clearExpressionCache,
package/package.json CHANGED
@@ -1,177 +1,178 @@
1
- {
2
- "name": "@bquery/bquery",
3
- "version": "1.7.0",
4
- "description": "The jQuery for the Modern Web Platform - Zero build, TypeScript-first library with reactivity, components, and motion",
5
- "type": "module",
6
- "main": "./dist/full.umd.js",
7
- "module": "./dist/index.es.mjs",
8
- "types": "./dist/index.d.ts",
9
- "unpkg": "./dist/full.umd.js",
10
- "jsdelivr": "./dist/full.umd.js",
11
- "exports": {
12
- ".": {
13
- "types": "./dist/index.d.ts",
14
- "import": "./dist/index.es.mjs",
15
- "require": "./dist/full.umd.js"
16
- },
17
- "./full": {
18
- "types": "./dist/full.d.ts",
19
- "import": "./dist/full.es.mjs",
20
- "require": "./dist/full.umd.js"
21
- },
22
- "./core": {
23
- "import": "./dist/core.es.mjs",
24
- "types": "./dist/core/index.d.ts"
25
- },
26
- "./reactive": {
27
- "import": "./dist/reactive.es.mjs",
28
- "types": "./dist/reactive/index.d.ts"
29
- },
30
- "./component": {
31
- "import": "./dist/component.es.mjs",
32
- "types": "./dist/component/index.d.ts"
33
- },
34
- "./motion": {
35
- "import": "./dist/motion.es.mjs",
36
- "types": "./dist/motion/index.d.ts"
37
- },
38
- "./security": {
39
- "import": "./dist/security.es.mjs",
40
- "types": "./dist/security/index.d.ts"
41
- },
42
- "./platform": {
43
- "import": "./dist/platform.es.mjs",
44
- "types": "./dist/platform/index.d.ts"
45
- },
46
- "./router": {
47
- "import": "./dist/router.es.mjs",
48
- "types": "./dist/router/index.d.ts"
49
- },
50
- "./store": {
51
- "import": "./dist/store.es.mjs",
52
- "types": "./dist/store/index.d.ts"
53
- },
54
- "./view": {
55
- "import": "./dist/view.es.mjs",
56
- "types": "./dist/view/index.d.ts"
57
- },
58
- "./storybook": {
59
- "import": "./dist/storybook.es.mjs",
60
- "types": "./dist/storybook/index.d.ts"
61
- },
62
- "./forms": {
63
- "import": "./dist/forms.es.mjs",
64
- "types": "./dist/forms/index.d.ts"
65
- },
66
- "./i18n": {
67
- "import": "./dist/i18n.es.mjs",
68
- "types": "./dist/i18n/index.d.ts"
69
- },
70
- "./a11y": {
71
- "import": "./dist/a11y.es.mjs",
72
- "types": "./dist/a11y/index.d.ts"
73
- },
74
- "./dnd": {
75
- "import": "./dist/dnd.es.mjs",
76
- "types": "./dist/dnd/index.d.ts"
77
- },
78
- "./media": {
79
- "import": "./dist/media.es.mjs",
80
- "types": "./dist/media/index.d.ts"
81
- },
82
- "./plugin": {
83
- "import": "./dist/plugin.es.mjs",
84
- "types": "./dist/plugin/index.d.ts"
85
- },
86
- "./devtools": {
87
- "import": "./dist/devtools.es.mjs",
88
- "types": "./dist/devtools/index.d.ts"
89
- },
90
- "./testing": {
91
- "import": "./dist/testing.es.mjs",
92
- "types": "./dist/testing/index.d.ts"
93
- },
94
- "./ssr": {
95
- "import": "./dist/ssr.es.mjs",
96
- "types": "./dist/ssr/index.d.ts"
97
- }
98
- },
99
- "files": [
100
- "dist",
101
- "src",
102
- "README.md",
103
- "LICENSE.md"
104
- ],
105
- "sideEffects": false,
106
- "scripts": {
107
- "dev": "vitepress dev docs",
108
- "build:docs": "vitepress build docs",
109
- "preview": "vitepress preview docs",
110
- "storybook": "storybook dev -p 6006",
111
- "build:storybook": "storybook build",
112
- "build": "bun run build:lib && bun run build:umd && bun run build:types",
113
- "build:lib": "vite build",
114
- "build:umd": "vite build --config vite.umd.config.ts",
115
- "build:types": "tsc --emitDeclarationOnly --outDir dist",
116
- "test": "bun test",
117
- "test:types": "tsc -p tsconfig.component-test.json --noEmit",
118
- "test:watch": "bun test --watch",
119
- "lint": "eslint . --fix",
120
- "lint:types": "tsc --noEmit",
121
- "format": "prettier --write .",
122
- "format:check": "prettier --check .",
123
- "docs:api": "typedoc",
124
- "clean": "rimraf dist",
125
- "prepublishOnly": "bun run clean && bun run build && bun test"
126
- },
127
- "keywords": [
128
- "dom",
129
- "manipulation",
130
- "jquery",
131
- "modern",
132
- "typescript",
133
- "signals",
134
- "reactive",
135
- "components",
136
- "web-components",
137
- "animation",
138
- "motion",
139
- "zero-build",
140
- "cdn"
141
- ],
142
- "author": "Jonas Pfalzgraf <support@josunlp.de>",
143
- "license": "MIT",
144
- "repository": {
145
- "type": "git",
146
- "url": "https://github.com/bQuery/bQuery.git"
147
- },
148
- "homepage": "https://bQuery.flausch-code.de",
149
- "bugs": {
150
- "url": "https://github.com/bQuery/bQuery/issues"
151
- },
152
- "publishConfig": {
153
- "access": "public",
154
- "registry": "https://registry.npmjs.org/"
155
- },
156
- "engines": {
157
- "node": ">=18.0.0"
158
- },
159
- "devDependencies": {
160
- "@storybook/addon-docs": "^10.3.3",
161
- "@storybook/web-components-vite": "^10.3.3",
162
- "@typescript-eslint/eslint-plugin": "^8.57.2",
163
- "@typescript-eslint/parser": "^8.57.2",
164
- "bun-types": "^1.3.11",
165
- "eslint": "^10.1.0",
166
- "eslint-config-prettier": "^10.1.8",
167
- "globals": "^17.4.0",
168
- "happy-dom": "^20.8.9",
169
- "prettier": "^3.8.1",
170
- "rimraf": "^6.1.3",
171
- "storybook": "^10.3.3",
172
- "typedoc": "^0.28.18",
173
- "typescript": "^5.9.3",
174
- "vite": "^8.0.3",
175
- "vitepress": "^1.6.4"
176
- }
177
- }
1
+ {
2
+ "name": "@bquery/bquery",
3
+ "version": "1.8.2",
4
+ "description": "The jQuery for the Modern Web Platform - Zero build, TypeScript-first library with reactivity, components, and motion",
5
+ "type": "module",
6
+ "main": "./dist/full.umd.js",
7
+ "module": "./dist/index.es.mjs",
8
+ "types": "./dist/index.d.ts",
9
+ "unpkg": "./dist/full.umd.js",
10
+ "jsdelivr": "./dist/full.umd.js",
11
+ "exports": {
12
+ ".": {
13
+ "types": "./dist/index.d.ts",
14
+ "import": "./dist/index.es.mjs",
15
+ "require": "./dist/full.umd.js"
16
+ },
17
+ "./full": {
18
+ "types": "./dist/full.d.ts",
19
+ "import": "./dist/full.es.mjs",
20
+ "require": "./dist/full.umd.js"
21
+ },
22
+ "./core": {
23
+ "import": "./dist/core.es.mjs",
24
+ "types": "./dist/core/index.d.ts"
25
+ },
26
+ "./reactive": {
27
+ "import": "./dist/reactive.es.mjs",
28
+ "types": "./dist/reactive/index.d.ts"
29
+ },
30
+ "./component": {
31
+ "import": "./dist/component.es.mjs",
32
+ "types": "./dist/component/index.d.ts"
33
+ },
34
+ "./motion": {
35
+ "import": "./dist/motion.es.mjs",
36
+ "types": "./dist/motion/index.d.ts"
37
+ },
38
+ "./security": {
39
+ "import": "./dist/security.es.mjs",
40
+ "types": "./dist/security/index.d.ts"
41
+ },
42
+ "./platform": {
43
+ "import": "./dist/platform.es.mjs",
44
+ "types": "./dist/platform/index.d.ts"
45
+ },
46
+ "./router": {
47
+ "import": "./dist/router.es.mjs",
48
+ "types": "./dist/router/index.d.ts"
49
+ },
50
+ "./store": {
51
+ "import": "./dist/store.es.mjs",
52
+ "types": "./dist/store/index.d.ts"
53
+ },
54
+ "./view": {
55
+ "import": "./dist/view.es.mjs",
56
+ "types": "./dist/view/index.d.ts"
57
+ },
58
+ "./storybook": {
59
+ "import": "./dist/storybook.es.mjs",
60
+ "types": "./dist/storybook/index.d.ts"
61
+ },
62
+ "./forms": {
63
+ "import": "./dist/forms.es.mjs",
64
+ "types": "./dist/forms/index.d.ts"
65
+ },
66
+ "./i18n": {
67
+ "import": "./dist/i18n.es.mjs",
68
+ "types": "./dist/i18n/index.d.ts"
69
+ },
70
+ "./a11y": {
71
+ "import": "./dist/a11y.es.mjs",
72
+ "types": "./dist/a11y/index.d.ts"
73
+ },
74
+ "./dnd": {
75
+ "import": "./dist/dnd.es.mjs",
76
+ "types": "./dist/dnd/index.d.ts"
77
+ },
78
+ "./media": {
79
+ "import": "./dist/media.es.mjs",
80
+ "types": "./dist/media/index.d.ts"
81
+ },
82
+ "./plugin": {
83
+ "import": "./dist/plugin.es.mjs",
84
+ "types": "./dist/plugin/index.d.ts"
85
+ },
86
+ "./devtools": {
87
+ "import": "./dist/devtools.es.mjs",
88
+ "types": "./dist/devtools/index.d.ts"
89
+ },
90
+ "./testing": {
91
+ "import": "./dist/testing.es.mjs",
92
+ "types": "./dist/testing/index.d.ts"
93
+ },
94
+ "./ssr": {
95
+ "import": "./dist/ssr.es.mjs",
96
+ "types": "./dist/ssr/index.d.ts"
97
+ }
98
+ },
99
+ "files": [
100
+ "dist",
101
+ "src",
102
+ "README.md",
103
+ "LICENSE.md"
104
+ ],
105
+ "sideEffects": false,
106
+ "scripts": {
107
+ "dev": "vitepress dev docs",
108
+ "build:docs": "vitepress build docs",
109
+ "preview": "vitepress preview docs",
110
+ "storybook": "storybook dev -p 6006",
111
+ "build:storybook": "storybook build",
112
+ "build": "bun run build:lib && bun run build:umd && bun run build:types",
113
+ "build:lib": "vite build",
114
+ "build:umd": "vite build --config vite.umd.config.ts",
115
+ "build:types": "tsc --emitDeclarationOnly --outDir dist",
116
+ "test": "bun test",
117
+ "test:types": "tsc -p tsconfig.component-test.json --noEmit",
118
+ "test:watch": "bun test --watch",
119
+ "lint": "eslint . --fix",
120
+ "lint:types": "tsc --noEmit",
121
+ "format": "prettier --write .",
122
+ "format:check": "prettier --check .",
123
+ "docs:api": "typedoc",
124
+ "clean": "rimraf dist",
125
+ "prepublishOnly": "bun run clean && bun run build && bun test"
126
+ },
127
+ "keywords": [
128
+ "dom",
129
+ "manipulation",
130
+ "jquery",
131
+ "modern",
132
+ "typescript",
133
+ "signals",
134
+ "reactive",
135
+ "components",
136
+ "web-components",
137
+ "animation",
138
+ "motion",
139
+ "zero-build",
140
+ "cdn"
141
+ ],
142
+ "author": "Jonas Pfalzgraf <support@josunlp.de>",
143
+ "license": "MIT",
144
+ "repository": {
145
+ "type": "git",
146
+ "url": "https://github.com/bQuery/bQuery.git"
147
+ },
148
+ "homepage": "https://bQuery.flausch-code.de",
149
+ "bugs": {
150
+ "url": "https://github.com/bQuery/bQuery/issues"
151
+ },
152
+ "publishConfig": {
153
+ "access": "public",
154
+ "registry": "https://registry.npmjs.org/"
155
+ },
156
+ "engines": {
157
+ "node": ">=24.0.0",
158
+ "bun": ">=1.3.11"
159
+ },
160
+ "devDependencies": {
161
+ "@storybook/addon-docs": "^10.3.3",
162
+ "@storybook/web-components-vite": "^10.3.3",
163
+ "@typescript-eslint/eslint-plugin": "^8.58.0",
164
+ "@typescript-eslint/parser": "^8.58.0",
165
+ "bun-types": "^1.3.11",
166
+ "eslint": "^10.1.0",
167
+ "eslint-config-prettier": "^10.1.8",
168
+ "globals": "^17.4.0",
169
+ "happy-dom": "^20.8.9",
170
+ "prettier": "^3.8.1",
171
+ "rimraf": "^6.1.3",
172
+ "storybook": "^10.3.3",
173
+ "typedoc": "^0.28.18",
174
+ "typescript": "^5.9.3",
175
+ "vite": "^8.0.3",
176
+ "vitepress": "^1.6.4"
177
+ }
178
+ }
@@ -1,131 +1,131 @@
1
- /**
2
- * Screen reader announcement utility using ARIA live regions.
3
- *
4
- * Creates and manages off-screen live regions to announce dynamic
5
- * content changes to assistive technologies.
6
- *
7
- * @module bquery/a11y
8
- */
9
-
10
- import type { AnnouncePriority } from './types';
11
-
12
- /** Cache for live region containers, keyed by priority. */
13
- const liveRegions = new Map<AnnouncePriority, HTMLElement>();
14
- const pendingAnnouncements = new Map<AnnouncePriority, ReturnType<typeof setTimeout>>();
15
-
16
- /**
17
- * Delay in milliseconds before updating the live region text.
18
- * This ensures screen readers detect the content change even when
19
- * the same message is announced consecutively — clearing first and
20
- * setting after a short timer delay forces a new live-region mutation event.
21
- * @internal
22
- */
23
- const ANNOUNCEMENT_DELAY_MS = 50;
24
-
25
- /**
26
- * Gets or creates a visually-hidden ARIA live region for the given priority.
27
- *
28
- * @param priority - The aria-live priority level
29
- * @returns The live region element
30
- * @internal
31
- */
32
- const getOrCreateLiveRegion = (priority: AnnouncePriority): HTMLElement => {
33
- const existing = liveRegions.get(priority);
34
- if (existing && existing.isConnected) {
35
- return existing;
36
- }
37
-
38
- const el = document.createElement('div');
39
- el.setAttribute('aria-live', priority);
40
- el.setAttribute('aria-atomic', 'true');
41
- el.setAttribute('role', priority === 'assertive' ? 'alert' : 'status');
42
-
43
- // Visually hidden but accessible to screen readers
44
- Object.assign(el.style, {
45
- position: 'absolute',
46
- width: '1px',
47
- height: '1px',
48
- padding: '0',
49
- margin: '-1px',
50
- overflow: 'hidden',
51
- clip: 'rect(0, 0, 0, 0)',
52
- whiteSpace: 'nowrap',
53
- border: '0',
54
- });
55
-
56
- document.body.appendChild(el);
57
- liveRegions.set(priority, el);
58
-
59
- return el;
60
- };
61
-
62
- /**
63
- * Announces a message to screen readers via an ARIA live region.
64
- *
65
- * The message is injected into a visually-hidden live region element.
66
- * Screen readers will pick up the change and announce it to the user.
67
- *
68
- * @param message - The text message to announce
69
- * @param priority - The urgency level: `'polite'` (default) or `'assertive'`
70
- *
71
- * @example
72
- * ```ts
73
- * import { announceToScreenReader } from '@bquery/bquery/a11y';
74
- *
75
- * // Polite announcement (waits for idle)
76
- * announceToScreenReader('3 search results found');
77
- *
78
- * // Assertive announcement (interrupts current speech)
79
- * announceToScreenReader('Error: Please fix the form', 'assertive');
80
- * ```
81
- */
82
- export const announceToScreenReader = (
83
- message: string,
84
- priority: AnnouncePriority = 'polite'
85
- ): void => {
86
- if (!message) return;
87
- if (typeof document === 'undefined' || !document.body) return;
88
-
89
- const region = getOrCreateLiveRegion(priority);
90
- const pendingTimeout = pendingAnnouncements.get(priority);
91
- if (pendingTimeout !== undefined) {
92
- clearTimeout(pendingTimeout);
93
- }
94
-
95
- // Clear first, then set after a short timer delay to ensure screen readers
96
- // detect the change even if the same message is announced twice.
97
- region.textContent = '';
98
-
99
- // Use setTimeout to ensure the DOM update triggers a live region change event
100
- const timeout = setTimeout(() => {
101
- pendingAnnouncements.delete(priority);
102
- if (region.isConnected) {
103
- region.textContent = message;
104
- }
105
- }, ANNOUNCEMENT_DELAY_MS);
106
-
107
- pendingAnnouncements.set(priority, timeout);
108
- };
109
-
110
- /**
111
- * Removes all live region elements created by `announceToScreenReader`.
112
- * Useful for cleanup in tests or when unmounting an application.
113
- *
114
- * @example
115
- * ```ts
116
- * import { clearAnnouncements } from '@bquery/bquery/a11y';
117
- *
118
- * clearAnnouncements();
119
- * ```
120
- */
121
- export const clearAnnouncements = (): void => {
122
- for (const timeout of pendingAnnouncements.values()) {
123
- clearTimeout(timeout);
124
- }
125
- pendingAnnouncements.clear();
126
-
127
- for (const [, el] of liveRegions) {
128
- el.remove();
129
- }
130
- liveRegions.clear();
131
- };
1
+ /**
2
+ * Screen reader announcement utility using ARIA live regions.
3
+ *
4
+ * Creates and manages off-screen live regions to announce dynamic
5
+ * content changes to assistive technologies.
6
+ *
7
+ * @module bquery/a11y
8
+ */
9
+
10
+ import type { AnnouncePriority } from './types';
11
+
12
+ /** Cache for live region containers, keyed by priority. */
13
+ const liveRegions = new Map<AnnouncePriority, HTMLElement>();
14
+ const pendingAnnouncements = new Map<AnnouncePriority, ReturnType<typeof setTimeout>>();
15
+
16
+ /**
17
+ * Delay in milliseconds before updating the live region text.
18
+ * This ensures screen readers detect the content change even when
19
+ * the same message is announced consecutively — clearing first and
20
+ * setting after a short timer delay forces a new live-region mutation event.
21
+ * @internal
22
+ */
23
+ const ANNOUNCEMENT_DELAY_MS = 50;
24
+
25
+ /**
26
+ * Gets or creates a visually-hidden ARIA live region for the given priority.
27
+ *
28
+ * @param priority - The aria-live priority level
29
+ * @returns The live region element
30
+ * @internal
31
+ */
32
+ const getOrCreateLiveRegion = (priority: AnnouncePriority): HTMLElement => {
33
+ const existing = liveRegions.get(priority);
34
+ if (existing && existing.isConnected) {
35
+ return existing;
36
+ }
37
+
38
+ const el = document.createElement('div');
39
+ el.setAttribute('aria-live', priority);
40
+ el.setAttribute('aria-atomic', 'true');
41
+ el.setAttribute('role', priority === 'assertive' ? 'alert' : 'status');
42
+
43
+ // Visually hidden but accessible to screen readers
44
+ Object.assign(el.style, {
45
+ position: 'absolute',
46
+ width: '1px',
47
+ height: '1px',
48
+ padding: '0',
49
+ margin: '-1px',
50
+ overflow: 'hidden',
51
+ clip: 'rect(0, 0, 0, 0)',
52
+ whiteSpace: 'nowrap',
53
+ border: '0',
54
+ });
55
+
56
+ document.body.appendChild(el);
57
+ liveRegions.set(priority, el);
58
+
59
+ return el;
60
+ };
61
+
62
+ /**
63
+ * Announces a message to screen readers via an ARIA live region.
64
+ *
65
+ * The message is injected into a visually-hidden live region element.
66
+ * Screen readers will pick up the change and announce it to the user.
67
+ *
68
+ * @param message - The text message to announce
69
+ * @param priority - The urgency level: `'polite'` (default) or `'assertive'`
70
+ *
71
+ * @example
72
+ * ```ts
73
+ * import { announceToScreenReader } from '@bquery/bquery/a11y';
74
+ *
75
+ * // Polite announcement (waits for idle)
76
+ * announceToScreenReader('3 search results found');
77
+ *
78
+ * // Assertive announcement (interrupts current speech)
79
+ * announceToScreenReader('Error: Please fix the form', 'assertive');
80
+ * ```
81
+ */
82
+ export const announceToScreenReader = (
83
+ message: string,
84
+ priority: AnnouncePriority = 'polite'
85
+ ): void => {
86
+ if (!message) return;
87
+ if (typeof document === 'undefined' || !document.body) return;
88
+
89
+ const region = getOrCreateLiveRegion(priority);
90
+ const pendingTimeout = pendingAnnouncements.get(priority);
91
+ if (pendingTimeout !== undefined) {
92
+ clearTimeout(pendingTimeout);
93
+ }
94
+
95
+ // Clear first, then set after a short timer delay to ensure screen readers
96
+ // detect the change even if the same message is announced twice.
97
+ region.textContent = '';
98
+
99
+ // Use setTimeout to ensure the DOM update triggers a live region change event
100
+ const timeout = setTimeout(() => {
101
+ pendingAnnouncements.delete(priority);
102
+ if (region.isConnected) {
103
+ region.textContent = message;
104
+ }
105
+ }, ANNOUNCEMENT_DELAY_MS);
106
+
107
+ pendingAnnouncements.set(priority, timeout);
108
+ };
109
+
110
+ /**
111
+ * Removes all live region elements created by `announceToScreenReader`.
112
+ * Useful for cleanup in tests or when unmounting an application.
113
+ *
114
+ * @example
115
+ * ```ts
116
+ * import { clearAnnouncements } from '@bquery/bquery/a11y';
117
+ *
118
+ * clearAnnouncements();
119
+ * ```
120
+ */
121
+ export const clearAnnouncements = (): void => {
122
+ for (const timeout of pendingAnnouncements.values()) {
123
+ clearTimeout(timeout);
124
+ }
125
+ pendingAnnouncements.clear();
126
+
127
+ for (const [, el] of liveRegions) {
128
+ el.remove();
129
+ }
130
+ liveRegions.clear();
131
+ };