@bquery/bquery 1.2.0 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (305) hide show
  1. package/README.md +501 -427
  2. package/dist/batch-4LAvfLE7.js +13 -0
  3. package/dist/batch-4LAvfLE7.js.map +1 -0
  4. package/dist/component/component.d.ts +69 -0
  5. package/dist/component/component.d.ts.map +1 -0
  6. package/dist/component/html.d.ts +35 -0
  7. package/dist/component/html.d.ts.map +1 -0
  8. package/dist/component/index.d.ts +3 -126
  9. package/dist/component/index.d.ts.map +1 -1
  10. package/dist/component/props.d.ts +18 -0
  11. package/dist/component/props.d.ts.map +1 -0
  12. package/dist/component/types.d.ts +77 -0
  13. package/dist/component/types.d.ts.map +1 -0
  14. package/dist/component.es.mjs +90 -59
  15. package/dist/component.es.mjs.map +1 -1
  16. package/dist/core/collection.d.ts +36 -0
  17. package/dist/core/collection.d.ts.map +1 -1
  18. package/dist/core/dom.d.ts +6 -0
  19. package/dist/core/dom.d.ts.map +1 -0
  20. package/dist/core/element.d.ts +8 -0
  21. package/dist/core/element.d.ts.map +1 -1
  22. package/dist/core/index.d.ts +1 -0
  23. package/dist/core/index.d.ts.map +1 -1
  24. package/dist/core/utils/array.d.ts +74 -0
  25. package/dist/core/utils/array.d.ts.map +1 -0
  26. package/dist/core/utils/function.d.ts +70 -0
  27. package/dist/core/utils/function.d.ts.map +1 -0
  28. package/dist/core/utils/index.d.ts +70 -0
  29. package/dist/core/utils/index.d.ts.map +1 -0
  30. package/dist/core/utils/misc.d.ts +63 -0
  31. package/dist/core/utils/misc.d.ts.map +1 -0
  32. package/dist/core/utils/number.d.ts +65 -0
  33. package/dist/core/utils/number.d.ts.map +1 -0
  34. package/dist/core/utils/object.d.ts +133 -0
  35. package/dist/core/utils/object.d.ts.map +1 -0
  36. package/dist/core/utils/string.d.ts +80 -0
  37. package/dist/core/utils/string.d.ts.map +1 -0
  38. package/dist/core/utils/type-guards.d.ts +79 -0
  39. package/dist/core/utils/type-guards.d.ts.map +1 -0
  40. package/dist/core-COenAZjD.js +145 -0
  41. package/dist/core-COenAZjD.js.map +1 -0
  42. package/dist/core.es.mjs +411 -448
  43. package/dist/core.es.mjs.map +1 -1
  44. package/dist/full.d.ts +2 -2
  45. package/dist/full.d.ts.map +1 -1
  46. package/dist/full.es.mjs +87 -64
  47. package/dist/full.es.mjs.map +1 -1
  48. package/dist/full.iife.js +2 -2
  49. package/dist/full.iife.js.map +1 -1
  50. package/dist/full.umd.js +2 -2
  51. package/dist/full.umd.js.map +1 -1
  52. package/dist/index.es.mjs +138 -68
  53. package/dist/index.es.mjs.map +1 -1
  54. package/dist/motion/animate.d.ts +25 -0
  55. package/dist/motion/animate.d.ts.map +1 -0
  56. package/dist/motion/easing.d.ts +30 -0
  57. package/dist/motion/easing.d.ts.map +1 -0
  58. package/dist/motion/flip.d.ts +55 -0
  59. package/dist/motion/flip.d.ts.map +1 -0
  60. package/dist/motion/index.d.ts +11 -138
  61. package/dist/motion/index.d.ts.map +1 -1
  62. package/dist/motion/keyframes.d.ts +21 -0
  63. package/dist/motion/keyframes.d.ts.map +1 -0
  64. package/dist/motion/reduced-motion.d.ts +12 -0
  65. package/dist/motion/reduced-motion.d.ts.map +1 -0
  66. package/dist/motion/scroll.d.ts +15 -0
  67. package/dist/motion/scroll.d.ts.map +1 -0
  68. package/dist/motion/spring.d.ts +42 -0
  69. package/dist/motion/spring.d.ts.map +1 -0
  70. package/dist/motion/stagger.d.ts +22 -0
  71. package/dist/motion/stagger.d.ts.map +1 -0
  72. package/dist/motion/timeline.d.ts +21 -0
  73. package/dist/motion/timeline.d.ts.map +1 -0
  74. package/dist/motion/transition.d.ts +22 -0
  75. package/dist/motion/transition.d.ts.map +1 -0
  76. package/dist/motion/types.d.ts +182 -0
  77. package/dist/motion/types.d.ts.map +1 -0
  78. package/dist/motion.es.mjs +320 -61
  79. package/dist/motion.es.mjs.map +1 -1
  80. package/dist/persisted-Dz_ryNuC.js +278 -0
  81. package/dist/persisted-Dz_ryNuC.js.map +1 -0
  82. package/dist/reactive/batch.d.ts +13 -0
  83. package/dist/reactive/batch.d.ts.map +1 -0
  84. package/dist/reactive/computed.d.ts +50 -0
  85. package/dist/reactive/computed.d.ts.map +1 -0
  86. package/dist/reactive/core.d.ts +60 -0
  87. package/dist/reactive/core.d.ts.map +1 -0
  88. package/dist/reactive/effect.d.ts +15 -0
  89. package/dist/reactive/effect.d.ts.map +1 -0
  90. package/dist/reactive/index.d.ts +2 -2
  91. package/dist/reactive/index.d.ts.map +1 -1
  92. package/dist/reactive/internals.d.ts +36 -0
  93. package/dist/reactive/internals.d.ts.map +1 -0
  94. package/dist/reactive/linked.d.ts +36 -0
  95. package/dist/reactive/linked.d.ts.map +1 -0
  96. package/dist/reactive/persisted.d.ts +14 -0
  97. package/dist/reactive/persisted.d.ts.map +1 -0
  98. package/dist/reactive/readonly.d.ts +26 -0
  99. package/dist/reactive/readonly.d.ts.map +1 -0
  100. package/dist/reactive/signal.d.ts +13 -312
  101. package/dist/reactive/signal.d.ts.map +1 -1
  102. package/dist/reactive/type-guards.d.ts +20 -0
  103. package/dist/reactive/type-guards.d.ts.map +1 -0
  104. package/dist/reactive/untrack.d.ts +29 -0
  105. package/dist/reactive/untrack.d.ts.map +1 -0
  106. package/dist/reactive/watch.d.ts +42 -0
  107. package/dist/reactive/watch.d.ts.map +1 -0
  108. package/dist/reactive.es.mjs +30 -163
  109. package/dist/reactive.es.mjs.map +1 -1
  110. package/dist/router/index.d.ts +6 -252
  111. package/dist/router/index.d.ts.map +1 -1
  112. package/dist/router/links.d.ts +44 -0
  113. package/dist/router/links.d.ts.map +1 -0
  114. package/dist/router/match.d.ts +20 -0
  115. package/dist/router/match.d.ts.map +1 -0
  116. package/dist/router/navigation.d.ts +45 -0
  117. package/dist/router/navigation.d.ts.map +1 -0
  118. package/dist/router/query.d.ts +16 -0
  119. package/dist/router/query.d.ts.map +1 -0
  120. package/dist/router/router.d.ts +34 -0
  121. package/dist/router/router.d.ts.map +1 -0
  122. package/dist/router/state.d.ts +27 -0
  123. package/dist/router/state.d.ts.map +1 -0
  124. package/dist/router/types.d.ts +88 -0
  125. package/dist/router/types.d.ts.map +1 -0
  126. package/dist/router/utils.d.ts +65 -0
  127. package/dist/router/utils.d.ts.map +1 -0
  128. package/dist/router.es.mjs +168 -132
  129. package/dist/router.es.mjs.map +1 -1
  130. package/dist/sanitize-1FBEPAFH.js +272 -0
  131. package/dist/sanitize-1FBEPAFH.js.map +1 -0
  132. package/dist/security/constants.d.ts +42 -0
  133. package/dist/security/constants.d.ts.map +1 -0
  134. package/dist/security/csp.d.ts +24 -0
  135. package/dist/security/csp.d.ts.map +1 -0
  136. package/dist/security/index.d.ts +4 -2
  137. package/dist/security/index.d.ts.map +1 -1
  138. package/dist/security/sanitize-core.d.ts +13 -0
  139. package/dist/security/sanitize-core.d.ts.map +1 -0
  140. package/dist/security/sanitize.d.ts +5 -57
  141. package/dist/security/sanitize.d.ts.map +1 -1
  142. package/dist/security/trusted-types.d.ts +25 -0
  143. package/dist/security/trusted-types.d.ts.map +1 -0
  144. package/dist/security/types.d.ts +36 -0
  145. package/dist/security/types.d.ts.map +1 -0
  146. package/dist/security.es.mjs +50 -277
  147. package/dist/security.es.mjs.map +1 -1
  148. package/dist/store/create-store.d.ts +15 -0
  149. package/dist/store/create-store.d.ts.map +1 -0
  150. package/dist/store/define-store.d.ts +28 -0
  151. package/dist/store/define-store.d.ts.map +1 -0
  152. package/dist/store/devtools.d.ts +22 -0
  153. package/dist/store/devtools.d.ts.map +1 -0
  154. package/dist/store/index.d.ts +10 -286
  155. package/dist/store/index.d.ts.map +1 -1
  156. package/dist/store/mapping.d.ts +28 -0
  157. package/dist/store/mapping.d.ts.map +1 -0
  158. package/dist/store/persisted.d.ts +13 -0
  159. package/dist/store/persisted.d.ts.map +1 -0
  160. package/dist/store/plugins.d.ts +13 -0
  161. package/dist/store/plugins.d.ts.map +1 -0
  162. package/dist/store/registry.d.ts +28 -0
  163. package/dist/store/registry.d.ts.map +1 -0
  164. package/dist/store/types.d.ts +71 -0
  165. package/dist/store/types.d.ts.map +1 -0
  166. package/dist/store/utils.d.ts +28 -0
  167. package/dist/store/utils.d.ts.map +1 -0
  168. package/dist/store/watch.d.ts +23 -0
  169. package/dist/store/watch.d.ts.map +1 -0
  170. package/dist/store.es.mjs +22 -224
  171. package/dist/store.es.mjs.map +1 -1
  172. package/dist/type-guards-DRma3-Kc.js +16 -0
  173. package/dist/type-guards-DRma3-Kc.js.map +1 -0
  174. package/dist/untrack-BuEQKH7_.js +6 -0
  175. package/dist/untrack-BuEQKH7_.js.map +1 -0
  176. package/dist/view/directives/bind.d.ts +7 -0
  177. package/dist/view/directives/bind.d.ts.map +1 -0
  178. package/dist/view/directives/class.d.ts +8 -0
  179. package/dist/view/directives/class.d.ts.map +1 -0
  180. package/dist/view/directives/for.d.ts +23 -0
  181. package/dist/view/directives/for.d.ts.map +1 -0
  182. package/dist/view/directives/html.d.ts +7 -0
  183. package/dist/view/directives/html.d.ts.map +1 -0
  184. package/dist/view/directives/if.d.ts +7 -0
  185. package/dist/view/directives/if.d.ts.map +1 -0
  186. package/dist/view/directives/index.d.ts +12 -0
  187. package/dist/view/directives/index.d.ts.map +1 -0
  188. package/dist/view/directives/model.d.ts +7 -0
  189. package/dist/view/directives/model.d.ts.map +1 -0
  190. package/dist/view/directives/on.d.ts +7 -0
  191. package/dist/view/directives/on.d.ts.map +1 -0
  192. package/dist/view/directives/ref.d.ts +7 -0
  193. package/dist/view/directives/ref.d.ts.map +1 -0
  194. package/dist/view/directives/show.d.ts +7 -0
  195. package/dist/view/directives/show.d.ts.map +1 -0
  196. package/dist/view/directives/style.d.ts +7 -0
  197. package/dist/view/directives/style.d.ts.map +1 -0
  198. package/dist/view/directives/text.d.ts +7 -0
  199. package/dist/view/directives/text.d.ts.map +1 -0
  200. package/dist/view/evaluate.d.ts +43 -0
  201. package/dist/view/evaluate.d.ts.map +1 -0
  202. package/dist/view/index.d.ts +3 -93
  203. package/dist/view/index.d.ts.map +1 -1
  204. package/dist/view/mount.d.ts +69 -0
  205. package/dist/view/mount.d.ts.map +1 -0
  206. package/dist/view/process.d.ts +26 -0
  207. package/dist/view/process.d.ts.map +1 -0
  208. package/dist/view/types.d.ts +36 -0
  209. package/dist/view/types.d.ts.map +1 -0
  210. package/dist/view.es.mjs +368 -267
  211. package/dist/view.es.mjs.map +1 -1
  212. package/dist/watch-CXyaBC_9.js +58 -0
  213. package/dist/watch-CXyaBC_9.js.map +1 -0
  214. package/package.json +132 -132
  215. package/src/component/component.ts +289 -0
  216. package/src/component/html.ts +53 -0
  217. package/src/component/index.ts +40 -414
  218. package/src/component/props.ts +116 -0
  219. package/src/component/types.ts +85 -0
  220. package/src/core/collection.ts +588 -454
  221. package/src/core/dom.ts +38 -0
  222. package/src/core/element.ts +746 -740
  223. package/src/core/index.ts +43 -0
  224. package/src/core/utils/array.ts +102 -0
  225. package/src/core/utils/function.ts +110 -0
  226. package/src/core/utils/index.ts +83 -0
  227. package/src/core/utils/misc.ts +82 -0
  228. package/src/core/utils/number.ts +78 -0
  229. package/src/core/utils/object.ts +206 -0
  230. package/src/core/utils/string.ts +112 -0
  231. package/src/core/utils/type-guards.ts +112 -0
  232. package/src/full.ts +187 -150
  233. package/src/index.ts +36 -36
  234. package/src/motion/animate.ts +113 -0
  235. package/src/motion/easing.ts +40 -0
  236. package/src/motion/flip.ts +176 -0
  237. package/src/motion/index.ts +41 -358
  238. package/src/motion/keyframes.ts +46 -0
  239. package/src/motion/reduced-motion.ts +17 -0
  240. package/src/motion/scroll.ts +57 -0
  241. package/src/motion/spring.ts +150 -0
  242. package/src/motion/stagger.ts +43 -0
  243. package/src/motion/timeline.ts +246 -0
  244. package/src/motion/transition.ts +51 -0
  245. package/src/motion/types.ts +198 -0
  246. package/src/reactive/batch.ts +22 -0
  247. package/src/reactive/computed.ts +92 -0
  248. package/src/reactive/core.ts +93 -0
  249. package/src/reactive/effect.ts +43 -0
  250. package/src/reactive/index.ts +23 -22
  251. package/src/reactive/internals.ts +105 -0
  252. package/src/reactive/linked.ts +56 -0
  253. package/src/reactive/persisted.ts +74 -0
  254. package/src/reactive/readonly.ts +35 -0
  255. package/src/reactive/signal.ts +20 -520
  256. package/src/reactive/type-guards.ts +22 -0
  257. package/src/reactive/untrack.ts +31 -0
  258. package/src/reactive/watch.ts +73 -0
  259. package/src/router/index.ts +41 -718
  260. package/src/router/links.ts +130 -0
  261. package/src/router/match.ts +106 -0
  262. package/src/router/navigation.ts +71 -0
  263. package/src/router/query.ts +35 -0
  264. package/src/router/router.ts +211 -0
  265. package/src/router/state.ts +46 -0
  266. package/src/router/types.ts +93 -0
  267. package/src/router/utils.ts +116 -0
  268. package/src/security/constants.ts +209 -0
  269. package/src/security/csp.ts +77 -0
  270. package/src/security/index.ts +4 -12
  271. package/src/security/sanitize-core.ts +343 -0
  272. package/src/security/sanitize.ts +66 -625
  273. package/src/security/trusted-types.ts +69 -0
  274. package/src/security/types.ts +40 -0
  275. package/src/store/create-store.ts +329 -0
  276. package/src/store/define-store.ts +48 -0
  277. package/src/store/devtools.ts +45 -0
  278. package/src/store/index.ts +22 -848
  279. package/src/store/mapping.ts +73 -0
  280. package/src/store/persisted.ts +61 -0
  281. package/src/store/plugins.ts +32 -0
  282. package/src/store/registry.ts +51 -0
  283. package/src/store/types.ts +94 -0
  284. package/src/store/utils.ts +141 -0
  285. package/src/store/watch.ts +52 -0
  286. package/src/view/directives/bind.ts +23 -0
  287. package/src/view/directives/class.ts +70 -0
  288. package/src/view/directives/for.ts +275 -0
  289. package/src/view/directives/html.ts +19 -0
  290. package/src/view/directives/if.ts +30 -0
  291. package/src/view/directives/index.ts +11 -0
  292. package/src/view/directives/model.ts +56 -0
  293. package/src/view/directives/on.ts +41 -0
  294. package/src/view/directives/ref.ts +41 -0
  295. package/src/view/directives/show.ts +26 -0
  296. package/src/view/directives/style.ts +47 -0
  297. package/src/view/directives/text.ts +15 -0
  298. package/src/view/evaluate.ts +274 -0
  299. package/src/view/index.ts +112 -1041
  300. package/src/view/mount.ts +200 -0
  301. package/src/view/process.ts +92 -0
  302. package/src/view/types.ts +44 -0
  303. package/dist/core/utils.d.ts +0 -313
  304. package/dist/core/utils.d.ts.map +0 -1
  305. package/src/core/utils.ts +0 -444
package/dist/full.umd.js CHANGED
@@ -1,7 +1,7 @@
1
- (function(h,q){typeof exports=="object"&&typeof module<"u"?q(exports):typeof define=="function"&&define.amd?define(["exports"],q):(h=typeof globalThis<"u"?globalThis:h||self,q(h.bQuery={}))})(this,function(h){"use strict";const q="bquery-sanitizer";let Q=null;const ke=()=>typeof window.trustedTypes<"u",ue=()=>{if(Q)return Q;const t=window;if(!t.trustedTypes)return null;try{return Q=t.trustedTypes.createPolicy(q,{createHTML:e=>x(e)}),Q}catch{return console.warn(`bQuery: Could not create Trusted Types policy "${q}"`),null}},Ce=new Set(["a","abbr","address","article","aside","b","bdi","bdo","blockquote","br","button","caption","cite","code","col","colgroup","data","dd","del","details","dfn","div","dl","dt","em","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","hr","i","img","input","ins","kbd","label","legend","li","main","mark","nav","ol","optgroup","option","p","picture","pre","progress","q","rp","rt","ruby","s","samp","section","select","small","source","span","strong","sub","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","u","ul","var","wbr"]),he=new Set(["script","iframe","frame","frameset","object","embed","applet","link","meta","style","base","template","slot","math","svg","foreignobject","noscript"]),Le=new Set(["document","window","location","top","self","parent","frames","history","navigator","screen","alert","confirm","prompt","eval","Function","cookie","domain","referrer","body","head","forms","images","links","scripts","children","parentNode","firstChild","lastChild","innerHTML","outerHTML","textContent"]),$e=new Set(["alt","class","dir","height","hidden","href","id","lang","loading","name","rel","role","src","srcset","style","tabindex","target","title","type","width","aria-*"]),Oe=["on","formaction","xlink:","xmlns:"],Pe=["javascript:","data:","vbscript:","file:"],Te=(t,e,r)=>{const s=t.toLowerCase();for(const n of Oe)if(s.startsWith(n))return!1;return r&&s.startsWith("data-")||s.startsWith("aria-")?!0:e.has(s)},_e=t=>{const e=t.toLowerCase().trim();return!Le.has(e)},Ne=t=>t.replace(/[\u0000-\u001F\u007F]+/g,"").replace(/[\u200B-\u200D\uFEFF\u2028\u2029]+/g,"").replace(/\\u[\da-fA-F]{4}/g,"").replace(/\s+/g,"").toLowerCase(),Re=t=>{const e=Ne(t);for(const r of Pe)if(e.startsWith(r))return!1;return!0},je=t=>{try{const e=t.trim();if(e.startsWith("//"))return!0;const r=e.toLowerCase();return/^[a-z][a-z0-9+.-]*:/i.test(e)&&!r.startsWith("http://")&&!r.startsWith("https://")?!0:!r.startsWith("http://")&&!r.startsWith("https://")?!1:typeof window>"u"||!window.location?!0:new URL(e,window.location.href).origin!==window.location.origin}catch{return!0}},x=(t,e={})=>{const{allowTags:r=[],allowAttributes:s=[],allowDataAttributes:n=!0,stripAllTags:i=!1}=e,o=new Set([...Ce,...r.map(m=>m.toLowerCase())].filter(m=>!he.has(m))),c=new Set([...$e,...s.map(m=>m.toLowerCase())]),a=document.createElement("template");if(a.innerHTML=t,i)return a.content.textContent??"";const f=document.createTreeWalker(a.content,NodeFilter.SHOW_ELEMENT),y=[];for(;f.nextNode();){const m=f.currentNode,u=m.tagName.toLowerCase();if(he.has(u)){y.push(m);continue}if(!o.has(u)){y.push(m);continue}const d=[];for(const l of Array.from(m.attributes)){const p=l.name.toLowerCase();if(!Te(p,c,n)){d.push(l.name);continue}if((p==="id"||p==="name")&&!_e(l.value)){d.push(l.name);continue}(p==="href"||p==="src"||p==="srcset")&&!Re(l.value)&&d.push(l.name)}for(const l of d)m.removeAttribute(l);if(u==="a"){const l=m.getAttribute("href"),b=m.getAttribute("target")?.toLowerCase()==="_blank",g=l&&je(l);if(b||g){const w=m.getAttribute("rel"),C=new Set(w?w.split(/\s+/).filter(Boolean):[]);C.add("noopener"),C.add("noreferrer"),m.setAttribute("rel",Array.from(C).join(" "))}}}for(const m of y)m.remove();return a.innerHTML},R=(t,e={})=>x(t,e),Me=t=>{const e=ue();return e?e.createHTML(t):R(t)},De=t=>{const e={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;","`":"&#x60;"};return t.replace(/[&<>"'`]/g,r=>e[r])},He=t=>x(t,{stripAllTags:!0}),qe=(t=16)=>{const e=new Uint8Array(t);return crypto.getRandomValues(e),btoa(String.fromCharCode(...e)).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")},Be=t=>{const e=document.querySelector('meta[http-equiv="Content-Security-Policy"]');return e?(e.getAttribute("content")??"").includes(t):!1},Ie=t=>Array.isArray(t)?t:[t],v=(t,e)=>{for(const r of t)e(r)};class T{constructor(e){this.element=e,this.delegatedHandlers=new Map}get raw(){return this.element}get node(){return this.element}addClass(...e){return this.element.classList.add(...e),this}removeClass(...e){return this.element.classList.remove(...e),this}toggleClass(e,r){return this.element.classList.toggle(e,r),this}attr(e,r){return r===void 0?this.element.getAttribute(e)??"":(this.element.setAttribute(e,r),this)}prop(e,r){return r===void 0?this.element[e]:(this.element[e]=r,this)}data(e,r){const s=e.replace(/[A-Z]/g,n=>`-${n.toLowerCase()}`);return r===void 0?this.element.getAttribute(`data-${s}`)??"":(this.element.setAttribute(`data-${s}`,r),this)}text(e){return e===void 0?this.element.textContent??"":(this.element.textContent=e,this)}html(e){return this.element.innerHTML=R(e),this}htmlUnsafe(e){return this.element.innerHTML=e,this}css(e,r){if(typeof e=="string")return r!==void 0&&this.element.style.setProperty(e,r),this;for(const[s,n]of Object.entries(e))this.element.style.setProperty(s,n);return this}append(e){return this.insertContent(e,"beforeend"),this}prepend(e){return this.insertContent(e,"afterbegin"),this}before(e){return this.insertContent(e,"beforebegin"),this}after(e){return this.insertContent(e,"afterend"),this}wrap(e){const r=typeof e=="string"?document.createElement(e):e;return this.element.parentNode?.insertBefore(r,this.element),r.appendChild(this.element),this}unwrap(){const e=this.element.parentElement;return e&&e.parentNode&&(e.parentNode.insertBefore(this.element,e),e.remove()),this}replaceWith(e){let r;if(typeof e=="string"){const s=document.createElement("template");s.innerHTML=R(e),r=s.content.firstElementChild??document.createElement("div")}else r=e;return this.element.replaceWith(r),new T(r)}scrollTo(e={behavior:"smooth"}){return this.element.scrollIntoView(e),this}remove(){return this.element.remove(),this}empty(){return this.element.innerHTML="",this}clone(e=!0){return new T(this.element.cloneNode(e))}find(e){return Array.from(this.element.querySelectorAll(e))}findOne(e){return this.element.querySelector(e)}closest(e){return this.element.closest(e)}parent(){return this.element.parentElement}children(){return Array.from(this.element.children)}siblings(){const e=this.element.parentElement;return e?Array.from(e.children).filter(r=>r!==this.element):[]}next(){return this.element.nextElementSibling}prev(){return this.element.previousElementSibling}on(e,r){return this.element.addEventListener(e,r),this}once(e,r){return this.element.addEventListener(e,r,{once:!0}),this}off(e,r){return this.element.removeEventListener(e,r),this}trigger(e,r){return this.element.dispatchEvent(new CustomEvent(e,{detail:r,bubbles:!0,cancelable:!0})),this}delegate(e,r,s){const n=`${e}:${r}`,i=o=>{const c=o.target.closest(r);c&&this.element.contains(c)&&s(o,c)};return this.delegatedHandlers.has(n)||this.delegatedHandlers.set(n,new Map),this.delegatedHandlers.get(n).set(s,i),this.element.addEventListener(e,i),this}undelegate(e,r,s){const n=`${e}:${r}`,i=this.delegatedHandlers.get(n);if(i){const o=i.get(s);o&&(this.element.removeEventListener(e,o),i.delete(s),i.size===0&&this.delegatedHandlers.delete(n))}return this}matches(e){return this.element.matches(e)}hasClass(e){return this.element.classList.contains(e)}show(e=""){return this.element.removeAttribute("hidden"),this.element.style.display=e,this}hide(){return this.element.style.display="none",this}toggle(e){const r=this.element.style.display==="none";return e??r?this.show():this.hide()}focus(){return this.element.focus(),this}blur(){return this.element.blur(),this}val(e){const r=this.element;return e===void 0?r.value??"":(r.value=e,this)}serialize(){const e=this.element;if(e.tagName.toLowerCase()!=="form")return{};const r={},s=new FormData(e);for(const[n,i]of s.entries())if(typeof i=="string")if(n in r){const o=r[n];Array.isArray(o)?o.push(i):r[n]=[o,i]}else r[n]=i;return r}serializeString(){const e=this.element;if(e.tagName.toLowerCase()!=="form")return"";const r=new FormData(e),s=new URLSearchParams;for(const[n,i]of r.entries())typeof i=="string"&&s.append(n,i);return s.toString()}rect(){return this.element.getBoundingClientRect()}offset(){const e=this.element;return{width:e.offsetWidth,height:e.offsetHeight,top:e.offsetTop,left:e.offsetLeft}}insertContent(e,r){if(typeof e=="string"){this.element.insertAdjacentHTML(r,R(e));return}const s=Ie(e);v(s,n=>{this.element.insertAdjacentElement(r,n)})}}class B{constructor(e){this.elements=e,this.delegatedHandlers=new WeakMap}get length(){return this.elements.length}first(){return this.elements[0]}eq(e){const r=this.elements[e];return r?new T(r):void 0}firstEl(){return this.eq(0)}lastEl(){return this.eq(this.elements.length-1)}each(e){return this.elements.forEach((r,s)=>{e(new T(r),s)}),this}map(e){return this.elements.map(e)}filter(e){return new B(this.elements.filter(e))}reduce(e,r){return this.elements.reduce(e,r)}toArray(){return this.elements.map(e=>new T(e))}addClass(...e){return v(this.elements,r=>r.classList.add(...e)),this}removeClass(...e){return v(this.elements,r=>r.classList.remove(...e)),this}toggleClass(e,r){return v(this.elements,s=>s.classList.toggle(e,r)),this}attr(e,r){return r===void 0?this.first()?.getAttribute(e)??"":(v(this.elements,s=>s.setAttribute(e,r)),this)}removeAttr(e){return v(this.elements,r=>r.removeAttribute(e)),this}text(e){return e===void 0?this.first()?.textContent??"":(v(this.elements,r=>{r.textContent=e}),this)}html(e){if(e===void 0)return this.first()?.innerHTML??"";const r=R(e);return v(this.elements,s=>{s.innerHTML=r}),this}htmlUnsafe(e){return v(this.elements,r=>{r.innerHTML=e}),this}css(e,r){return typeof e=="string"?(r!==void 0&&v(this.elements,s=>{s.style.setProperty(e,r)}),this):(v(this.elements,s=>{for(const[n,i]of Object.entries(e))s.style.setProperty(n,i)}),this)}show(e=""){return v(this.elements,r=>{r.removeAttribute("hidden"),r.style.display=e}),this}hide(){return v(this.elements,e=>{e.style.display="none"}),this}on(e,r){return v(this.elements,s=>s.addEventListener(e,r)),this}once(e,r){return v(this.elements,s=>s.addEventListener(e,r,{once:!0})),this}off(e,r){return v(this.elements,s=>s.removeEventListener(e,r)),this}trigger(e,r){return v(this.elements,s=>{s.dispatchEvent(new CustomEvent(e,{detail:r,bubbles:!0,cancelable:!0}))}),this}delegate(e,r,s){const n=`${e}:${r}`;return v(this.elements,i=>{const o=a=>{const f=a.target.closest(r);f&&i.contains(f)&&s(a,f)};this.delegatedHandlers.has(i)||this.delegatedHandlers.set(i,new Map);const c=this.delegatedHandlers.get(i);c.has(n)||c.set(n,new Map),c.get(n).set(s,o),i.addEventListener(e,o)}),this}undelegate(e,r,s){const n=`${e}:${r}`;return v(this.elements,i=>{const o=this.delegatedHandlers.get(i);if(!o)return;const c=o.get(n);if(!c)return;const a=c.get(s);a&&(i.removeEventListener(e,a),c.delete(s),c.size===0&&o.delete(n),o.size===0&&this.delegatedHandlers.delete(i))}),this}remove(){return v(this.elements,e=>e.remove()),this}empty(){return v(this.elements,e=>{e.innerHTML=""}),this}}const Fe=t=>{if(typeof t!="string")return new T(t);const e=document.querySelector(t);if(!e)throw new Error(`bQuery: element not found for selector "${t}"`);return new T(e)},Ue=t=>Array.isArray(t)?new B(t):t instanceof NodeList?new B(Array.from(t)):new B(Array.from(document.querySelectorAll(t))),U={clone(t){return typeof structuredClone=="function"?structuredClone(t):JSON.parse(JSON.stringify(t))},merge(...t){const e={};for(const r of t)for(const[s,n]of Object.entries(r))U.isPrototypePollutionKey(s)||(U.isPlainObject(n)&&U.isPlainObject(e[s])?e[s]=U.merge(e[s],n):e[s]=n);return e},isPrototypePollutionKey(t){return t==="__proto__"||t==="constructor"||t==="prototype"},debounce(t,e){let r;return(...s)=>{r&&clearTimeout(r),r=setTimeout(()=>t(...s),e)}},throttle(t,e){let r=0;return(...s)=>{const n=Date.now();n-r>=e&&(r=n,t(...s))}},uid(t="bQuery"){return`${t}_${Math.random().toString(36).slice(2,9)}`},isElement(t){return t instanceof Element},isCollection(t){return!!(t&&typeof t=="object"&&"elements"in t)},isEmpty(t){return t==null?!0:typeof t=="string"?t.trim().length===0:Array.isArray(t)?t.length===0:typeof t=="object"?Object.keys(t).length===0:!1},isPlainObject(t){return Object.prototype.toString.call(t)==="[object Object]"},isFunction(t){return typeof t=="function"},isString(t){return typeof t=="string"},isNumber(t){return typeof t=="number"&&!Number.isNaN(t)},isBoolean(t){return typeof t=="boolean"},isArray(t){return Array.isArray(t)},parseJson(t,e){try{return JSON.parse(t)}catch{return e}},pick(t,e){const r={};for(const s of e)s in t&&(r[s]=t[s]);return r},omit(t,e){const r={...t};for(const s of e)delete r[s];return r},sleep(t){return new Promise(e=>setTimeout(e,t))},randomInt(t,e){return Math.floor(Math.random()*(e-t+1))+t},clamp(t,e,r){return Math.min(Math.max(t,e),r)},capitalize(t){return t&&t.charAt(0).toUpperCase()+t.slice(1)},toKebabCase(t){return t.replace(/([a-z])([A-Z])/g,"$1-$2").replace(/[\s_]+/g,"-").toLowerCase()},toCamelCase(t){return t.replace(/[-_\s]+(.)?/g,(e,r)=>r?r.toUpperCase():"").replace(/^[A-Z]/,e=>e.toLowerCase())}},I=[];let W=0;const ee=new Set;let z=!0;const te=(t,e)=>{I.push(t);try{return e()}finally{I.pop()}},fe=t=>{if(W>0){ee.add(t);return}t()},Qe=()=>{for(const t of Array.from(ee))ee.delete(t),t()};class re{constructor(e){this._value=e,this.subscribers=new Set}get value(){if(z){const e=I[I.length-1];e&&this.subscribers.add(e)}return this._value}set value(e){if(!Object.is(this._value,e)){this._value=e;for(const r of this.subscribers)fe(r)}}peek(){return this._value}update(e){this.value=e(this._value)}}class ne{constructor(e){this.compute=e,this.dirty=!0,this.subscribers=new Set,this.markDirty=()=>{this.dirty=!0;for(const r of this.subscribers)fe(r)}}get value(){const e=I[I.length-1];return e&&this.subscribers.add(e),this.dirty&&(this.dirty=!1,this.cachedValue=te(this.markDirty,this.compute)),this.cachedValue}peek(){return this.dirty&&(this.dirty=!1,this.cachedValue=te(this.markDirty,this.compute)),this.cachedValue}}const V=t=>new re(t),K=t=>new ne(t),L=t=>{let e,r=!1;const s=()=>{r||(e&&e(),e=te(s,t))};return s(),()=>{r=!0,e&&e()}},J=t=>{W+=1;try{t()}finally{W-=1,W===0&&Qe()}},We=(t,e)=>{let r=e;try{const n=localStorage.getItem(t);n!==null&&(r=JSON.parse(n))}catch{}const s=V(r);return L(()=>{try{localStorage.setItem(t,JSON.stringify(s.value))}catch{}}),s},ze=t=>({get value(){return t.value},peek(){return t.peek()}}),Ve=(t,e,r={})=>{let s,n=!0;return L(()=>{const i=t.value;if(n){n=!1,s=i,r.immediate&&e(i,void 0);return}e(i,s),s=i})},Ke=t=>{const e=z;z=!1;try{return t()}finally{z=e}},Z=t=>t instanceof re,de=t=>t instanceof ne,Je=(t,e)=>{const{type:r}=e;if(r===String)return t;if(r===Number){const s=Number(t);return Number.isNaN(s)?t:s}if(r===Boolean){const s=t.trim().toLowerCase();return s===""||s==="true"||s==="1"?!0:s==="false"||s==="0"?!1:!!t}if(r===Object||r===Array)try{return JSON.parse(t)}catch{return t}if(typeof r=="function"){const s=r,n=r;try{return s(t)}catch{return new n(t)}}return t},Ze=(t,...e)=>t.reduce((r,s,n)=>`${r}${s}${e[n]??""}`,""),Ye=(t,...e)=>{const r={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;","`":"&#x60;"},s=n=>String(n??"").replace(/[&<>"'`]/g,o=>r[o]);return t.reduce((n,i,o)=>`${n}${i}${s(e[o])}`,"")},Ge=(t,e)=>{class r extends HTMLElement{constructor(){super(),this.state={...e.state??{}},this.props={},this.attachShadow({mode:"open"}),this.syncProps()}static get observedAttributes(){return Object.keys(e.props??{})}connectedCallback(){try{e.beforeMount?.call(this),e.connected?.call(this),this.render()}catch(n){this.handleError(n)}}disconnectedCallback(){try{e.disconnected?.call(this)}catch(n){this.handleError(n)}}attributeChangedCallback(){try{this.syncProps(),this.render(!0)}catch(n){this.handleError(n)}}handleError(n){e.onError?e.onError.call(this,n):console.error(`bQuery component error in <${t}>:`,n)}setState(n,i){this.state[n]=i,this.render(!0)}getState(n){return this.state[n]}syncProps(){const n=e.props??{};for(const[i,o]of Object.entries(n)){const c=this.getAttribute(i);let a;if(c==null){if(o.required&&o.default===void 0)throw new Error(`bQuery component: missing required prop "${i}"`);a=o.default??void 0}else a=Je(c,o);if(o.validator&&a!==void 0&&!o.validator(a))throw new Error(`bQuery component: validation failed for prop "${i}" with value ${JSON.stringify(a)}`);this.props[i]=a}}render(n=!1){try{if(n&&e.beforeUpdate&&e.beforeUpdate.call(this,this.props)===!1)return;const i=(a,f)=>{this.dispatchEvent(new CustomEvent(a,{detail:f,bubbles:!0,composed:!0}))};if(!this.shadowRoot)return;const o=e.render({props:this.props,state:this.state,emit:i}),c=e.styles?`<style>${e.styles}</style>`:"";this.shadowRoot.innerHTML=`${c}${o}`,n&&e.updated?.call(this)}catch(i){this.handleError(i)}}}customElements.get(t)||customElements.define(t,r)},Xe=async t=>{const e=typeof t=="function"?t:t.update,r=document;if(r.startViewTransition){await r.startViewTransition(()=>e()).finished;return}e()},se=t=>{const e=t.getBoundingClientRect();return{top:e.top,left:e.left,width:e.width,height:e.height}},me=(t,e,r={})=>{const{duration:s=300,easing:n="ease-out",onComplete:i}=r,o=se(t);if(o.width===0||o.height===0)return Promise.resolve();const c=e.left-o.left,a=e.top-o.top,f=e.width/o.width,y=e.height/o.height;if(c===0&&a===0&&f===1&&y===1)return Promise.resolve();const m=t;return m.style.transform=`translate(${c}px, ${a}px) scale(${f}, ${y})`,m.style.transformOrigin="top left",m.offsetHeight,new Promise(u=>{const d=m.animate([{transform:`translate(${c}px, ${a}px) scale(${f}, ${y})`},{transform:"translate(0, 0) scale(1, 1)"}],{duration:s,easing:n,fill:"forwards"});d.onfinish=()=>{m.style.transform="",m.style.transformOrigin="",i?.(),u()}})},xe=async(t,e,r={})=>{const s=new Map;for(const i of t)s.set(i,se(i));e();const n=t.map(i=>{const o=s.get(i);return o?me(i,o,r):Promise.resolve()});await Promise.all(n)},et={stiffness:100,damping:10,mass:1,precision:.01},tt=(t,e={})=>{const{stiffness:r,damping:s,mass:n,precision:i}={...et,...e};let o=t,c=0,a=t,f=null,y=null;const m=new Set,u=()=>{for(const l of m)l(o)},d=()=>{const l=o-a,p=-r*l,b=-s*c,g=(p+b)/n;if(c+=g*(1/60),o+=c*(1/60),u(),Math.abs(c)<i&&Math.abs(l)<i){o=a,c=0,f=null,u(),y?.(),y=null;return}f=requestAnimationFrame(d)};return{to(l){return a=l,f!==null&&cancelAnimationFrame(f),new Promise(p=>{y=p,f=requestAnimationFrame(d)})},current(){return o},stop(){f!==null&&(cancelAnimationFrame(f),f=null),c=0,y?.(),y=null},onChange(l){return m.add(l),()=>m.delete(l)}}},rt={gentle:{stiffness:80,damping:15},snappy:{stiffness:200,damping:20},bouncy:{stiffness:300,damping:8},stiff:{stiffness:400,damping:30}};class nt{constructor(e){this.bucketName=e,this.dbPromise=null,this.storeName="blobs"}openDB(){if(this.dbPromise)return this.dbPromise;const e=`bquery-bucket-${this.bucketName}`;return this.dbPromise=new Promise((r,s)=>{const n=indexedDB.open(e,1);n.onupgradeneeded=()=>{const i=n.result;i.objectStoreNames.contains(this.storeName)||i.createObjectStore(this.storeName)},n.onsuccess=()=>r(n.result),n.onerror=()=>s(n.error)}),this.dbPromise}async withStore(e,r){const s=await this.openDB();return new Promise((n,i)=>{const c=s.transaction(this.storeName,e).objectStore(this.storeName),a=r(c);a.onsuccess=()=>n(a.result),a.onerror=()=>i(a.error)})}async put(e,r){await this.withStore("readwrite",s=>s.put(r,e))}async get(e){return await this.withStore("readonly",s=>s.get(e))??null}async remove(e){await this.withStore("readwrite",r=>r.delete(e))}async keys(){return(await this.withStore("readonly",r=>r.getAllKeys())).map(r=>String(r))}}const st={async open(t){return new nt(t)}};class ot{constructor(e){this.cache=e}async add(e){await this.cache.add(e)}async addAll(e){await this.cache.addAll(e)}async put(e,r){await this.cache.put(e,r)}async match(e){return this.cache.match(e)}async remove(e){return this.cache.delete(e)}async keys(){return(await this.cache.keys()).map(r=>r.url)}}const it={isSupported(){return"caches"in window},async open(t){if(!this.isSupported())throw new Error("bQuery: Cache Storage API not supported");const e=await caches.open(t);return new ot(e)},async delete(t){return this.isSupported()?caches.delete(t):!1},async keys(){return this.isSupported()?caches.keys():[]}},at={isSupported(){return"Notification"in window},getPermission(){return this.isSupported()?Notification.permission:"denied"},async requestPermission(){return this.isSupported()?Notification.permission==="granted"?"granted":Notification.permission==="denied"?"denied":Notification.requestPermission():"denied"},send(t,e){return this.isSupported()?Notification.permission!=="granted"?(console.warn("bQuery: Notification permission not granted"),null):new Notification(t,e):(console.warn("bQuery: Notifications not supported in this browser"),null)}};class pe{constructor(e){this.storage=e}async get(e){const r=this.storage.getItem(e);if(r===null)return null;try{return JSON.parse(r)}catch{return r}}async set(e,r){const s=typeof r=="string"?r:JSON.stringify(r);this.storage.setItem(e,s)}async remove(e){this.storage.removeItem(e)}async clear(){this.storage.clear()}async keys(){return Object.keys(this.storage)}}class ct extends pe{constructor(){super(localStorage)}}class lt extends pe{constructor(){super(sessionStorage)}}class ut{constructor(e){this.options=e,this.dbPromise=null}openDB(){return this.dbPromise?this.dbPromise:(this.dbPromise=new Promise((e,r)=>{const s=indexedDB.open(this.options.name,this.options.version??1);s.onupgradeneeded=()=>{const n=s.result;n.objectStoreNames.contains(this.options.store)||n.createObjectStore(this.options.store)},s.onsuccess=()=>e(s.result),s.onerror=()=>r(s.error)}),this.dbPromise)}async withStore(e,r){const s=await this.openDB();return new Promise((n,i)=>{const c=s.transaction(this.options.store,e).objectStore(this.options.store),a=r(c);a.onsuccess=()=>n(a.result),a.onerror=()=>i(a.error)})}async get(e){return await this.withStore("readonly",s=>s.get(e))??null}async set(e,r){await this.withStore("readwrite",s=>s.put(r,e))}async remove(e){await this.withStore("readwrite",r=>r.delete(e))}async clear(){await this.withStore("readwrite",e=>e.clear())}async keys(){return(await this.withStore("readonly",r=>r.getAllKeys())).map(r=>String(r))}}const ht={local(){return new ct},session(){return new lt},indexedDB(t){return new ut(t)}};let $=null;const j=V({path:"",params:{},query:{},matched:null,hash:""}),ye=K(()=>j.value),ft=t=>{if(t==="*")return/^.*$/;const e="\0P\0",r="\0W\0",s=[];let n=t.replace(/:([a-zA-Z_][a-zA-Z0-9_]*)/g,(o,c)=>(s.push(c),e));n=n.replace(/\*/g,r),n=n.replace(/[\\^$.*+?()[\]{}|]/g,"\\$&");let i=0;return n=n.replace(/\u0000P\u0000/g,()=>`(?<${s[i++]}>[^/]+)`),n=n.replace(/\u0000W\u0000/g,".*"),new RegExp(`^${n}$`)},dt=t=>{const e=t.match(/:([a-zA-Z_][a-zA-Z0-9_]*)/g);return e?e.map(r=>r.slice(1)):[]},mt=(t,e)=>{for(const r of e){const s=ft(r.path),n=t.match(s);if(n){const i=dt(r.path),o={};return n.groups?Object.assign(o,n.groups):i.forEach((c,a)=>{o[c]=n[a+1]||""}),{matched:r,params:o}}}return null},pt=t=>{const e={};return new URLSearchParams(t).forEach((s,n)=>{const i=e[n];i===void 0?e[n]=s:Array.isArray(i)?i.push(s):e[n]=[i,s]}),e},Y=(t,e,r,s)=>{const n=mt(t,s);return{path:t,params:n?.params??{},query:pt(e),matched:n?.matched??null,hash:r.replace(/^#/,"")}},oe=async(t,e={})=>{if(!$)throw new Error("bQuery router: No router initialized. Call createRouter() first.");await $[e.replace?"replace":"push"](t)},yt=()=>{$?$.back():history.back()},gt=()=>{$?$.forward():history.forward()},wt=t=>{$&&$.destroy();const{routes:e,base:r="",hash:s=!1}=t,n=[],i=[],o=ge(e,r),c=()=>{if(s){const d=window.location.hash.slice(1)||"/",[l,p=""]=d.split("?"),[b,g=""]=p.split("#");return{pathname:l,search:b?`?${b}`:"",hash:g?`#${g}`:""}}let u=window.location.pathname;return r&&u.startsWith(r)&&(u=u.slice(r.length)||"/"),{pathname:u,search:window.location.search,hash:window.location.hash}},a=()=>{const{pathname:u,search:d,hash:l}=c(),p=Y(u,d,l,o);j.value=p},f=async(u,d)=>{const{pathname:l,search:p,hash:b}=c(),g=Y(l,p,b,o),w=new URL(u,window.location.origin),C=s?u:w.pathname,S=Y(C,w.search,w.hash,o);for(const _ of n)if(await _(S,g)===!1)return;const A=s?`#${u}`:`${r}${u}`;history[d]({},"",A),a();for(const _ of i)_(j.value,g)},y=async()=>{const{pathname:u,search:d,hash:l}=c(),p=j.value,b=Y(u,d,l,o);for(const g of n)if(await g(b,p)===!1){const C=s?`#${p.path}`:`${r}${p.path}`;history.pushState({},"",C);return}a();for(const g of i)g(j.value,p)};window.addEventListener("popstate",y),a();const m={push:u=>f(u,"pushState"),replace:u=>f(u,"replaceState"),back:()=>history.back(),forward:()=>history.forward(),go:u=>history.go(u),beforeEach:u=>(n.push(u),()=>{const d=n.indexOf(u);d>-1&&n.splice(d,1)}),afterEach:u=>(i.push(u),()=>{const d=i.indexOf(u);d>-1&&i.splice(d,1)}),currentRoute:ye,routes:o,destroy:()=>{window.removeEventListener("popstate",y),n.length=0,i.length=0,$=null}};return $=m,m},ge=(t,e="")=>{const r=[];for(const s of t){const n=s.path==="*"?"*":`${e}${s.path}`.replace(/\/+/g,"/");r.push({...s,path:n}),s.children&&r.push(...ge(s.children,n))}return r},bt=(t,e={})=>{if(!$)throw new Error("bQuery router: No router initialized.");const r=$.routes.find(n=>n.name===t);if(!r)throw new Error(`bQuery router: Route "${t}" not found.`);let s=r.path;for(const[n,i]of Object.entries(e))s=s.replace(`:${n}`,encodeURIComponent(i));return s},vt=(t,e=!1)=>{const r=j.value.path;return e?r===t:r.startsWith(t)},St=(t,e=!1)=>K(()=>{const r=j.value.path;return e?r===t:r.startsWith(t)}),At=(t,e={})=>r=>{r.preventDefault(),oe(t,e)},Et=(t=document.body)=>{const e=r=>{const n=r.target.closest("a");if(!n||n.target||n.hasAttribute("download")||n.origin!==window.location.origin)return;const i=n.pathname+n.search+n.hash;r.preventDefault(),oe(i)};return t.addEventListener("click",e),()=>t.removeEventListener("click",e)},F=new Map,we=t=>t!==null&&typeof t=="object"&&Object.getPrototypeOf(t)===Object.prototype,M=t=>{if(t===null||typeof t!="object")return t;if(Array.isArray(t))return t.map(M);if(t instanceof Date)return new Date(t.getTime());if(t instanceof Map)return new Map(Array.from(t.entries()).map(([r,s])=>[r,M(s)]));if(t instanceof Set)return new Set(Array.from(t).map(M));const e={};for(const r of Object.keys(t))e[r]=M(t[r]);return e},ie=(t,e)=>{if(t===e)return!0;if(t===null||e===null||typeof t!="object"||typeof e!="object")return!1;if(Array.isArray(t)&&Array.isArray(e))return t.length!==e.length?!1:t.every((n,i)=>ie(n,e[i]));if(Array.isArray(t)!==Array.isArray(e))return!1;const r=Object.keys(t),s=Object.keys(e);return r.length!==s.length?!1:r.every(n=>ie(t[n],e[n]))},kt=(t,e,r)=>{const s=[];for(const n of Object.keys(e)){const i=t[n],o=e[n];r.get(n)===o&&we(i)&&we(o)&&!ie(i,o)&&s.push(n)}return s},ae=(()=>{try{const t=globalThis.process;return typeof t<"u"&&t.env?.NODE_ENV!=="production"}catch{return!0}})(),be=[],ve=t=>{const{id:e,state:r,getters:s={},actions:n={}}=t;if(F.has(e))return console.warn(`bQuery store: Store "${e}" already exists. Returning existing instance.`),F.get(e);const i=r(),o=new Map;for(const d of Object.keys(i))o.set(d,V(i[d]));const c=[],a=()=>{const d=y();for(const l of c)l(d);typeof window<"u"&&window.__BQUERY_DEVTOOLS__?.onStateChange&&window.__BQUERY_DEVTOOLS__.onStateChange(e,d)},f=new Proxy({},{get:(d,l)=>{const p=l;if(o.has(p))return o.get(p).value},ownKeys:()=>Array.from(o.keys()),getOwnPropertyDescriptor:(d,l)=>{if(o.has(l))return{enumerable:!0,configurable:!0}},has:(d,l)=>o.has(l)}),y=()=>({...f}),m=new Map,u={};for(const d of Object.keys(i))Object.defineProperty(u,d,{get:()=>o.get(d).value,set:l=>{o.get(d).value=l,a()},enumerable:!0,configurable:!1});for(const d of Object.keys(s)){const l=s[d],p=K(()=>{const b=f,g=new Proxy({},{get:(w,C)=>{const S=C;if(m.has(S))return m.get(S).value}});return l(b,g)});m.set(d,p),Object.defineProperty(u,d,{get:()=>p.value,enumerable:!0,configurable:!1})}for(const d of Object.keys(n)){const l=n[d];u[d]=function(...p){const b=new Proxy(u,{get:(g,w)=>typeof w=="string"&&o.has(w)?o.get(w).value:g[w],set:(g,w,C)=>typeof w=="string"&&o.has(w)?(o.get(w).value=C,a(),!0):!1});return l.apply(b,p)}}Object.defineProperties(u,{$id:{value:e,writable:!1,enumerable:!1},$reset:{value:()=>{const d=r();J(()=>{for(const[l,p]of o)p.value=d[l]}),a()},writable:!1,enumerable:!1},$subscribe:{value:d=>(c.push(d),()=>{const l=c.indexOf(d);l>-1&&c.splice(l,1)}),writable:!1,enumerable:!1},$patch:{value:d=>{J(()=>{if(typeof d=="function"){const l=ae?M(y()):null,p=ae?new Map(Array.from(o.entries()).map(([g,w])=>[g,w.value])):null,b=y();if(d(b),ae&&l&&p){const g=kt(l,b,p);g.length>0&&console.warn(`[bQuery store "${e}"] Nested mutation detected in $patch() for keys: ${g.map(String).join(", ")}.
1
+ (function(h,W){typeof exports=="object"&&typeof module<"u"?W(exports):typeof define=="function"&&define.amd?define(["exports"],W):(h=typeof globalThis<"u"?globalThis:h||self,W(h.bQuery={}))})(this,(function(h){"use strict";const W="bquery-sanitizer",ft=new Set(["a","abbr","address","article","aside","b","bdi","bdo","blockquote","br","button","caption","cite","code","col","colgroup","data","dd","del","details","dfn","div","dl","dt","em","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","hr","i","img","input","ins","kbd","label","legend","li","main","mark","nav","ol","optgroup","option","p","picture","pre","progress","q","rp","rt","ruby","s","samp","section","select","small","source","span","strong","sub","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","u","ul","var","wbr"]),ve=new Set(["script","iframe","frame","frameset","object","embed","applet","link","meta","style","base","template","slot","math","svg","foreignobject","noscript"]),ht=new Set(["document","window","location","top","self","parent","frames","history","navigator","screen","alert","confirm","prompt","eval","function","cookie","domain","referrer","body","head","forms","images","links","scripts","children","parentnode","firstchild","lastchild","innerhtml","outerhtml","textcontent"]),dt=new Set(["alt","class","dir","height","hidden","href","id","lang","loading","name","rel","role","src","srcset","tabindex","target","title","type","width","aria-*"]),mt=["on","formaction","xlink:","xmlns:"],pt=["javascript:","data:","vbscript:","file:"],yt=(t,e,n)=>{const r=t.toLowerCase();for(const s of mt)if(r.startsWith(s))return!1;return n&&r.startsWith("data-")||r.startsWith("aria-")?!0:e.has(r)},gt=t=>{const e=t.toLowerCase().trim();return!ht.has(e)},bt=t=>t.replace(/[\u0000-\u001F\u007F]+/g,"").replace(/[\u200B-\u200D\uFEFF\u2028\u2029]+/g,"").replace(/\\u[\da-fA-F]{4}/g,"").replace(/\s+/g,"").toLowerCase(),wt=t=>{const e=bt(t);for(const n of pt)if(e.startsWith(n))return!1;return!0},vt=t=>{try{const e=t.trim();if(e.startsWith("//"))return!0;const n=e.toLowerCase();return/^[a-z][a-z0-9+.-]*:/i.test(e)&&!n.startsWith("http://")&&!n.startsWith("https://")?!0:!n.startsWith("http://")&&!n.startsWith("https://")?!1:typeof window>"u"||!window.location?!0:new URL(e,window.location.href).origin!==window.location.origin}catch{return!0}},St=t=>new DOMParser().parseFromString(t,"text/html"),Se=t=>{const e=(typeof t=="string"?t:String(t??"")).trim(),n=document.createDocumentFragment();if(e.length===0)return n;if(!(e.includes("<")||e.includes(">")))return n.appendChild(document.createTextNode(e)),n;const o=St(e).body;if(!o)return n;for(;o.firstChild;)n.appendChild(o.firstChild);return n},Z=(t,e={})=>{const{allowTags:n=[],allowAttributes:r=[],allowDataAttributes:s=!0,stripAllTags:o=!1}=e,i=new Set([...ft,...n.map(f=>f.toLowerCase())].filter(f=>!ve.has(f))),a=new Set([...dt,...r.map(f=>f.toLowerCase())]),c=Se(t);if(o)return c.textContent??"";const l=document.createTreeWalker(c,NodeFilter.SHOW_ELEMENT),p=[];for(;l.nextNode();){const f=l.currentNode,g=f.tagName.toLowerCase();if(ve.has(g)){p.push(f);continue}if(!i.has(g)){p.push(f);continue}const w=[];for(const b of Array.from(f.attributes)){const A=b.name.toLowerCase();if(!yt(A,a,s)){w.push(b.name);continue}if((A==="id"||A==="name")&&!gt(b.value)){w.push(b.name);continue}(A==="href"||A==="src"||A==="srcset")&&!wt(b.value)&&w.push(b.name)}for(const b of w)f.removeAttribute(b);if(g==="a"){const b=f.getAttribute("href"),$=f.getAttribute("target")?.toLowerCase()==="_blank",L=b&&vt(b);if($||L){const v=f.getAttribute("rel"),E=new Set(v?v.split(/\s+/).filter(Boolean):[]);E.add("noopener"),E.add("noreferrer"),f.setAttribute("rel",Array.from(E).join(" "))}}}for(const f of p)f.remove();const d=f=>{const g=document.createElement("div");return g.appendChild(f.cloneNode(!0)),g.innerHTML},y=d(c),u=Se(y),m=d(u);return y!==m?c.textContent??"":m},Ae=1024,Ee=8192,At=(t=16)=>{if(!Number.isInteger(t)||t<1)throw new RangeError("generateNonce length must be a positive integer");if(t>Ae)throw new RangeError(`generateNonce length must not exceed ${Ae}`);if(typeof globalThis.crypto>"u"||typeof globalThis.crypto.getRandomValues!="function")throw new Error("generateNonce requires crypto.getRandomValues (not available in this environment)");if(typeof globalThis.btoa!="function")throw new Error("generateNonce requires btoa (not available in this environment)");const e=new Uint8Array(t);globalThis.crypto.getRandomValues(e);let n="";for(let r=0;r<e.length;r+=Ee){const s=e.subarray(r,Math.min(r+Ee,e.length));n+=String.fromCharCode(...s)}return globalThis.btoa(n).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")},Et=t=>{if(typeof document>"u")return!1;const e=document.querySelector('meta[http-equiv="Content-Security-Policy"]');return e?(e.getAttribute("content")??"").includes(t):!1};let G=null,Ce=!1;const Ct=()=>typeof window<"u"&&typeof window.trustedTypes<"u",$e=()=>{if(G)return G;if(Ce||typeof window>"u")return null;const t=window;if(!t.trustedTypes)return null;Ce=!0;try{return G=t.trustedTypes.createPolicy(W,{createHTML:e=>Z(e)}),G}catch(e){const n=e instanceof Error?e.message:String(e);return console.warn(`bQuery: Could not create Trusted Types policy "${W}": ${n}`),null}},$t=t=>{const e=$e();return e?e.createHTML(t):Z(t)},H=(t,e={})=>Z(t,e),Pt=t=>{const e={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;","`":"&#x60;"};return t.replace(/[&<>"'`]/g,n=>e[n])},kt=t=>Z(t,{stripAllTags:!0}),Pe=t=>Array.isArray(t)?t:[t],S=(t,e)=>{for(const n of t)e(n)},ke=t=>H(t),Ot=(t,e)=>{t.innerHTML=H(e)},Oe=t=>{const e=document.createElement("template");return e.innerHTML=H(t),e.content.firstElementChild??document.createElement("div")},Ne=(t,e,n)=>{if(typeof e=="string"){t.insertAdjacentHTML(n,H(e));return}const r=Pe(e),o=n==="afterbegin"||n==="afterend"?r.slice().reverse():r;S(o,i=>{t.insertAdjacentElement(n,i)})};class _{constructor(e){this.element=e,this.delegatedHandlers=new Map}get raw(){return this.element}get node(){return this.element}addClass(...e){return this.element.classList.add(...e),this}removeClass(...e){return this.element.classList.remove(...e),this}toggleClass(e,n){return this.element.classList.toggle(e,n),this}attr(e,n){return n===void 0?this.element.getAttribute(e)??"":(this.element.setAttribute(e,n),this)}removeAttr(e){return this.element.removeAttribute(e),this}toggleAttr(e,n){const r=this.element.hasAttribute(e);return n??!r?this.element.setAttribute(e,""):this.element.removeAttribute(e),this}prop(e,n){return n===void 0?this.element[e]:(this.element[e]=n,this)}data(e,n){const r=e.replace(/[A-Z]/g,s=>`-${s.toLowerCase()}`);return n===void 0?this.element.getAttribute(`data-${r}`)??"":(this.element.setAttribute(`data-${r}`,n),this)}text(e){return e===void 0?this.element.textContent??"":(this.element.textContent=e,this)}html(e){return Ot(this.element,e),this}htmlUnsafe(e){return this.element.innerHTML=e,this}css(e,n){if(typeof e=="string")return n!==void 0&&this.element.style.setProperty(e,n),this;for(const[r,s]of Object.entries(e))this.element.style.setProperty(r,s);return this}append(e){return this.insertContent(e,"beforeend"),this}prepend(e){return this.insertContent(e,"afterbegin"),this}before(e){return this.insertContent(e,"beforebegin"),this}after(e){return this.insertContent(e,"afterend"),this}wrap(e){const n=typeof e=="string"?document.createElement(e):e;return this.element.parentNode?.insertBefore(n,this.element),n.appendChild(this.element),this}unwrap(){const e=this.element.parentElement;return e&&e.parentNode&&(e.parentNode.insertBefore(this.element,e),e.remove()),this}replaceWith(e){const n=typeof e=="string"?Oe(e):e;return this.element.replaceWith(n),new _(n)}scrollTo(e={behavior:"smooth"}){return this.element.scrollIntoView(e),this}remove(){return this.element.remove(),this}empty(){return this.element.innerHTML="",this}clone(e=!0){return new _(this.element.cloneNode(e))}find(e){return Array.from(this.element.querySelectorAll(e))}findOne(e){return this.element.querySelector(e)}closest(e){return this.element.closest(e)}parent(){return this.element.parentElement}children(){return Array.from(this.element.children)}siblings(){const e=this.element.parentElement;return e?Array.from(e.children).filter(n=>n!==this.element):[]}next(){return this.element.nextElementSibling}prev(){return this.element.previousElementSibling}on(e,n){return this.element.addEventListener(e,n),this}once(e,n){return this.element.addEventListener(e,n,{once:!0}),this}off(e,n){return this.element.removeEventListener(e,n),this}trigger(e,n){return this.element.dispatchEvent(new CustomEvent(e,{detail:n,bubbles:!0,cancelable:!0})),this}delegate(e,n,r){const s=`${e}:${n}`,o=i=>{const a=i.target.closest(n);a&&this.element.contains(a)&&r(i,a)};return this.delegatedHandlers.has(s)||this.delegatedHandlers.set(s,new Map),this.delegatedHandlers.get(s).set(r,o),this.element.addEventListener(e,o),this}undelegate(e,n,r){const s=`${e}:${n}`,o=this.delegatedHandlers.get(s);if(o){const i=o.get(r);i&&(this.element.removeEventListener(e,i),o.delete(r),o.size===0&&this.delegatedHandlers.delete(s))}return this}matches(e){return this.element.matches(e)}hasClass(e){return this.element.classList.contains(e)}show(e=""){return this.element.removeAttribute("hidden"),this.element.style.display=e,this}hide(){return this.element.style.display="none",this}toggle(e){const n=this.element.style.display==="none";return e??n?this.show():this.hide()}focus(){return this.element.focus(),this}blur(){return this.element.blur(),this}val(e){const n=this.element;return e===void 0?n.value??"":(n.value=e,this)}serialize(){const e=this.element;if(e.tagName.toLowerCase()!=="form")return{};const n={},r=new FormData(e);for(const[s,o]of r.entries())if(typeof o=="string")if(s in n){const i=n[s];Array.isArray(i)?i.push(o):n[s]=[i,o]}else n[s]=o;return n}serializeString(){const e=this.element;if(e.tagName.toLowerCase()!=="form")return"";const n=new FormData(e),r=new URLSearchParams;for(const[s,o]of n.entries())typeof o=="string"&&r.append(s,o);return r.toString()}rect(){return this.element.getBoundingClientRect()}offset(){const e=this.element;return{width:e.offsetWidth,height:e.offsetHeight,top:e.offsetTop,left:e.offsetLeft}}insertContent(e,n){Ne(this.element,e,n)}}class q{constructor(e){this.elements=e,this.delegatedHandlers=new WeakMap}get length(){return this.elements.length}first(){return this.elements[0]}eq(e){const n=this.elements[e];return n?new _(n):void 0}firstEl(){return this.eq(0)}lastEl(){return this.eq(this.elements.length-1)}each(e){return this.elements.forEach((n,r)=>{e(new _(n),r)}),this}map(e){return this.elements.map(e)}filter(e){return new q(this.elements.filter(e))}reduce(e,n){return this.elements.reduce(e,n)}toArray(){return this.elements.map(e=>new _(e))}addClass(...e){return S(this.elements,n=>n.classList.add(...e)),this}removeClass(...e){return S(this.elements,n=>n.classList.remove(...e)),this}toggleClass(e,n){return S(this.elements,r=>r.classList.toggle(e,n)),this}attr(e,n){return n===void 0?this.first()?.getAttribute(e)??"":(S(this.elements,r=>r.setAttribute(e,n)),this)}removeAttr(e){return S(this.elements,n=>n.removeAttribute(e)),this}toggleAttr(e,n){return S(this.elements,r=>{const s=r.hasAttribute(e);n??!s?r.setAttribute(e,""):r.removeAttribute(e)}),this}text(e){return e===void 0?this.first()?.textContent??"":(S(this.elements,n=>{n.textContent=e}),this)}html(e){if(e===void 0)return this.first()?.innerHTML??"";const n=ke(e);return S(this.elements,r=>{r.innerHTML=n}),this}htmlUnsafe(e){return S(this.elements,n=>{n.innerHTML=e}),this}append(e){return this.insertAll(e,"beforeend"),this}prepend(e){return this.insertAll(e,"afterbegin"),this}before(e){return this.insertAll(e,"beforebegin"),this}after(e){return this.insertAll(e,"afterend"),this}css(e,n){return typeof e=="string"?(n!==void 0&&S(this.elements,r=>{r.style.setProperty(e,n)}),this):(S(this.elements,r=>{for(const[s,o]of Object.entries(e))r.style.setProperty(s,o)}),this)}wrap(e){return this.elements.forEach((n,r)=>{const s=typeof e=="string"?document.createElement(e):r===0?e:e.cloneNode(!0);n.parentNode?.insertBefore(s,n),s.appendChild(n)}),this}unwrap(){const e=new Set;for(const n of this.elements)n.parentElement&&e.add(n.parentElement);return e.forEach(n=>{const r=n.parentNode;if(r){for(;n.firstChild;)r.insertBefore(n.firstChild,n);n.remove()}}),this}replaceWith(e){const n=[];return this.elements.forEach((r,s)=>{const o=typeof e=="string"?Oe(e):s===0?e:e.cloneNode(!0);r.replaceWith(o),n.push(o)}),new q(n)}show(e=""){return S(this.elements,n=>{n.removeAttribute("hidden"),n.style.display=e}),this}hide(){return S(this.elements,e=>{e.style.display="none"}),this}on(e,n){return S(this.elements,r=>r.addEventListener(e,n)),this}once(e,n){return S(this.elements,r=>r.addEventListener(e,n,{once:!0})),this}off(e,n){return S(this.elements,r=>r.removeEventListener(e,n)),this}trigger(e,n){return S(this.elements,r=>{r.dispatchEvent(new CustomEvent(e,{detail:n,bubbles:!0,cancelable:!0}))}),this}delegate(e,n,r){const s=`${e}:${n}`;return S(this.elements,o=>{const i=c=>{const l=c.target.closest(n);l&&o.contains(l)&&r(c,l)};this.delegatedHandlers.has(o)||this.delegatedHandlers.set(o,new Map);const a=this.delegatedHandlers.get(o);a.has(s)||a.set(s,new Map),a.get(s).set(r,i),o.addEventListener(e,i)}),this}undelegate(e,n,r){const s=`${e}:${n}`;return S(this.elements,o=>{const i=this.delegatedHandlers.get(o);if(!i)return;const a=i.get(s);if(!a)return;const c=a.get(r);c&&(o.removeEventListener(e,c),a.delete(r),a.size===0&&i.delete(s),i.size===0&&this.delegatedHandlers.delete(o))}),this}remove(){return S(this.elements,e=>e.remove()),this}empty(){return S(this.elements,e=>{e.innerHTML=""}),this}insertAll(e,n){if(typeof e=="string"){const s=ke(e);S(this.elements,o=>{o.insertAdjacentHTML(n,s)});return}const r=Pe(e);this.elements.forEach((s,o)=>{const i=o===0?r:r.map(a=>a.cloneNode(!0));Ne(s,i,n)})}}const Nt=t=>{if(typeof t!="string")return new _(t);const e=document.querySelector(t);if(!e)throw new Error(`bQuery: element not found for selector "${t}"`);return new _(e)},Lt=t=>Array.isArray(t)?new q(t):t instanceof NodeList?new q(Array.from(t)):new q(Array.from(document.querySelectorAll(t)));function Tt(t){return t==null?[]:Array.isArray(t)?t:[t]}function Mt(t){return Array.from(new Set(t))}function Rt(t,e){if(e<=0)return[];const n=[];for(let r=0;r<t.length;r+=e)n.push(t.slice(r,r+e));return n}function _t(t){return t.filter(Boolean)}function Dt(t){const e=[];for(const n of t)Array.isArray(n)?e.push(...n):e.push(n);return e}function jt(t,e){let n;return(...r)=>{n&&clearTimeout(n),n=setTimeout(()=>t(...r),e)}}function Ht(t,e){let n=0;return(...r)=>{const s=Date.now();s-n>=e&&(n=s,t(...r))}}function It(t){let e=!1,n;return(...r)=>(e||(n=t(...r),e=!0),n)}function qt(){}function Ft(t="bQuery"){return`${t}_${Math.random().toString(36).slice(2,9)}`}function zt(t){return new Promise(e=>setTimeout(e,t))}function Wt(t,e){try{return JSON.parse(t)}catch{return e}}function Bt(t){return t==null?!0:typeof t=="string"?t.trim().length===0:Array.isArray(t)?t.length===0:typeof t=="object"?Object.keys(t).length===0:!1}function Qt(t,e){return Math.floor(Math.random()*(e-t+1))+t}function Ut(t,e,n){return Math.min(Math.max(t,e),n)}function Vt(t,e,n,r=!0){return r?t>=e&&t<=n:t>e&&t<n}function Kt(t,e=0){const n=typeof t=="number"?t:Number(t);return Number.isNaN(n)?e:n}function ce(t){return Object.prototype.toString.call(t)==="[object Object]"}function Yt(t){return t==="__proto__"||t==="constructor"||t==="prototype"}function Jt(t){return typeof structuredClone=="function"?structuredClone(t):JSON.parse(JSON.stringify(t))}function Le(...t){const e={};for(const n of t)for(const[r,s]of Object.entries(n))Yt(r)||(ce(s)&&ce(e[r])?e[r]=Le(e[r],s):e[r]=s);return e}function Zt(t,e){const n={};for(const r of e)r in t&&(n[r]=t[r]);return n}function Gt(t,e){const n={...t};for(const r of e)delete n[r];return n}function Xt(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function xt(t){return t&&t.charAt(0).toUpperCase()+t.slice(1)}function en(t){return t.replace(/([a-z])([A-Z])/g,"$1-$2").replace(/[\s_]+/g,"-").toLowerCase()}function tn(t){return t.replace(/[-_\s]+(.)?/g,(e,n)=>n?n.toUpperCase():"").replace(/^[A-Z]/,e=>e.toLowerCase())}function nn(t,e,n="…"){if(e<=0)return"";if(t.length<=e)return t;const r=Math.max(0,e-n.length);return`${t.slice(0,r)}${n}`}function rn(t){return t.normalize("NFD").replace(/[\u0300-\u036f]/g,"").replace(/[^\w\s-]/g,"").trim().replace(/[\s_-]+/g,"-").toLowerCase()}function sn(t){return t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function on(t){return typeof Element<"u"&&t instanceof Element}function an(t){return!!(t&&typeof t=="object"&&"elements"in t)}function cn(t){return typeof t=="function"}function ln(t){return typeof t=="string"}function un(t){return typeof t=="number"&&!Number.isNaN(t)}function fn(t){return typeof t=="boolean"}function hn(t){return Array.isArray(t)}function dn(t){return t instanceof Date}function mn(t){return!!(t&&(t instanceof Promise||typeof t=="object"&&"then"in t&&typeof t.then=="function"))}function pn(t){return typeof t=="object"&&t!==null}const yn={clone:Jt,merge:Le,pick:Zt,omit:Gt,hasOwn:Xt,debounce:jt,throttle:Ht,once:It,noop:qt,uid:Ft,isElement:on,isCollection:an,isEmpty:Bt,isPlainObject:ce,isFunction:cn,isString:ln,isNumber:un,isBoolean:fn,isArray:hn,isDate:dn,isPromise:mn,isObject:pn,parseJson:Wt,sleep:zt,randomInt:Qt,clamp:Ut,inRange:Vt,toNumber:Kt,capitalize:xt,toKebabCase:en,toCamelCase:tn,truncate:nn,slugify:rn,escapeRegExp:sn,ensureArray:Tt,unique:Mt,chunk:Rt,compact:_t,flatten:Dt},B=[];let X=0;const le=new Set,ue=new WeakMap,fe=(t,e)=>{B.push(t);try{return e()}finally{B.pop()}},Te=()=>B[B.length-1],gn=t=>{B.push(void 0);try{return t()}finally{B.pop()}},Me=t=>{if(X>0){le.add(t);return}t()},bn=()=>{for(const t of Array.from(le))le.delete(t),t()},wn=()=>{X+=1},vn=()=>{X-=1,X===0&&bn()},Re=(t,e)=>{let n=ue.get(t);n||(n=new Set,ue.set(t,n)),n.add(e)},x=t=>{const e=ue.get(t);if(e){for(const n of e)n.unsubscribe(t);e.clear()}},ee=t=>{wn();try{t()}finally{vn()}};class he{constructor(e){this.compute=e,this.dirty=!0,this.subscribers=new Set,this.markDirty=()=>{this.dirty=!0;const n=Array.from(this.subscribers);for(const r of n)Me(r)}}get value(){const e=Te();return e&&(this.subscribers.add(e),Re(e,this)),this.dirty&&(this.dirty=!1,x(this.markDirty),this.cachedValue=fe(this.markDirty,this.compute)),this.cachedValue}peek(){return this.dirty&&(this.dirty=!1,x(this.markDirty),this.cachedValue=fe(this.markDirty,this.compute)),this.cachedValue}unsubscribe(e){this.subscribers.delete(e)}}const te=t=>new he(t);class de{constructor(e){this._value=e,this.subscribers=new Set}get value(){const e=Te();return e&&(this.subscribers.add(e),Re(e,this)),this._value}set value(e){if(Object.is(this._value,e))return;this._value=e;const n=Array.from(this.subscribers);for(const r of n)Me(r)}peek(){return this._value}update(e){this.value=e(this._value)}unsubscribe(e){this.subscribers.delete(e)}}const Q=t=>new de(t),k=t=>{let e,n=!1;const r=()=>{n||(e&&e(),x(r),e=fe(r,t))};return r(),()=>{n=!0,e&&e(),x(r)}},Sn=(t,e)=>{let n=!1,r=null;try{if(r=globalThis.localStorage,r){const i=`__bquery_test_${Math.random().toString(36).slice(2,9)}__`,a="__test__";try{r.setItem(i,a),r.getItem(i),n=!0}finally{try{r.removeItem(i)}catch{}}}}catch{n=!1}let s=e;if(n&&r)try{const i=r.getItem(t);i!==null&&(s=JSON.parse(i))}catch{}const o=Q(s);return n&&r&&k(()=>{try{r.setItem(t,JSON.stringify(o.value))}catch{}}),o},An=t=>({get value(){return t.value},peek(){return t.peek()}}),ne=t=>t instanceof de,_e=t=>t instanceof he,De=t=>gn(t),En=(t,e,n={})=>{const{immediate:r=!1,equals:s=Object.is}=n;let o,i=!0;return k(()=>{const a=t.value;if(i){i=!1,o=a,r&&e(a,void 0);return}s(a,o)||(e(a,o),o=a)})},Cn=(t,e)=>{const{type:n}=e;if(n===String)return t;if(n===Number)return Number(t);if(n===Boolean){const r=t.trim().toLowerCase();return r===""||r==="true"||r==="1"?!0:r==="false"||r==="0"?!1:!!t}if(n===Object||n===Array)try{return JSON.parse(t)}catch{return t}if(typeof n=="function"){const r=n,s=n;if(e.construct===!0)return Reflect.construct(s,[t]);if(e.construct===!1)return r(t);const o=n.prototype!==void 0&&n.prototype!==null,a=(o?Object.getOwnPropertyNames(n.prototype):[]).length>1,c=o&&n.prototype.constructor!==n,l=/^class\s/.test(Function.prototype.toString.call(n));if(a||c||l)try{return Reflect.construct(s,[t])}catch{return r(t)}try{const d=r(t);if(d===void 0&&o)try{return Reflect.construct(s,[t])}catch{return d}return d}catch(d){if(d instanceof TypeError&&/cannot be invoked without 'new'|is not a function/i.test(d.message))return Reflect.construct(s,[t]);throw d}}return t},$n=(t,e)=>{class n extends HTMLElement{constructor(){super(),this.state={...e.state??{}},this.props={},this.missingRequiredProps=new Set,this.hasMounted=!1,this.attachShadow({mode:"open"}),this.syncProps()}static get observedAttributes(){return Object.keys(e.props??{})}connectedCallback(){try{if(this.missingRequiredProps.size>0)return;this.mount()}catch(s){this.handleError(s)}}mount(){this.hasMounted||(e.beforeMount?.call(this),e.connected?.call(this),this.render(),this.hasMounted=!0)}disconnectedCallback(){try{e.disconnected?.call(this)}catch(s){this.handleError(s)}}attributeChangedCallback(s,o,i){try{this.syncProps(),this.hasMounted?this.render(!0):this.isConnected&&this.missingRequiredProps.size===0&&this.mount()}catch(a){this.handleError(a)}}handleError(s){e.onError?e.onError.call(this,s):console.error(`bQuery component error in <${t}>:`,s)}setState(s,o){this.state[s]=o,this.render(!0)}getState(s){return this.state[s]}syncProps(){const s=e.props??{};for(const[o,i]of Object.entries(s)){const a=this.getAttribute(o);let c;if(a==null?i.required&&i.default===void 0?(this.missingRequiredProps.add(o),c=void 0):c=i.default??void 0:(this.missingRequiredProps.has(o)&&this.missingRequiredProps.delete(o),c=Cn(a,i)),i.validator&&c!==void 0&&!i.validator(c))throw new Error(`bQuery component: validation failed for prop "${o}" with value ${JSON.stringify(c)}`);this.props[o]=c}}render(s=!1){try{if(s&&e.beforeUpdate&&e.beforeUpdate.call(this,this.props)===!1)return;const o=(c,l)=>{this.dispatchEvent(new CustomEvent(c,{detail:l,bubbles:!0,composed:!0}))};if(!this.shadowRoot)return;const i=e.render({props:this.props,state:this.state,emit:o}),a=H(i);if(this.shadowRoot.innerHTML=a,e.styles){const c=document.createElement("style");c.textContent=e.styles,this.shadowRoot.prepend(c)}s&&e.updated?.call(this)}catch(o){this.handleError(o)}}}return n},Pn=(t,e)=>{const n=$n(t,e);customElements.get(t)||customElements.define(t,n)},kn=(t,...e)=>t.reduce((n,r,s)=>`${n}${r}${e[s]??""}`,""),On=(t,...e)=>{const n={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;","`":"&#x60;"},r=s=>String(s??"").replace(/[&<>"'`]/g,i=>n[i]);return t.reduce((s,o,i)=>`${s}${o}${r(e[i])}`,"")},me=()=>typeof window>"u"||typeof window.matchMedia!="function"?!1:window.matchMedia("(prefers-reduced-motion: reduce)").matches,je=t=>typeof t=="string"||typeof t=="number",He=t=>t.replace(/[A-Z]/g,e=>`-${e.toLowerCase()}`),U=(t,e)=>{const r=t.style;if(Array.isArray(e)){const s=e[e.length-1];if(!s)return;for(const[o,i]of Object.entries(s))if(!(o==="offset"||o==="easing"||o==="composite")&&je(i)){const a=o.startsWith("--")?o:He(o);r.setProperty(a,String(i))}return}for(const[s,o]of Object.entries(e)){if(s==="offset"||s==="easing"||s==="composite")continue;const i=Array.isArray(o)?o[o.length-1]:o;if(je(i)){const a=s.startsWith("--")?s:He(s);r.setProperty(a,String(i))}}},re=(t,e)=>{const{keyframes:n,options:r,commitStyles:s=!0,respectReducedMotion:o=!0,onFinish:i}=e;if(o&&me())return s&&U(t,n),i?.(),Promise.resolve();const a=t;return typeof a.animate!="function"?(s&&U(t,n),i?.(),Promise.resolve()):new Promise(c=>{const l=a.animate(n,r);let p=!1;const d=()=>{p||(p=!0,s&&(typeof l.commitStyles=="function"?l.commitStyles():U(t,n)),l.cancel(),i?.(),c())};l.onfinish=d,l.finished&&l.finished.then(d).catch(d)})},D=t=>Math.min(1,Math.max(0,t)),Ie=t=>D(t),qe=t=>D(t*t),Fe=t=>D(1-(1-t)*(1-t)),ze=t=>D(t<.5?2*t*t:1-Math.pow(-2*t+2,2)/2),We=t=>D(t*t*t),Be=t=>D(1-Math.pow(1-t,3)),Qe=t=>D(t<.5?4*t*t*t:1-Math.pow(-2*t+2,3)/2),Ue=t=>D(1+2.70158*Math.pow(t-1,3)+1.70158*Math.pow(t-1,2)),Ve=t=>D(t===1?1:1-Math.pow(2,-10*t)),Nn={linear:Ie,easeInQuad:qe,easeOutQuad:Fe,easeInOutQuad:ze,easeInCubic:We,easeOutCubic:Be,easeInOutCubic:Qe,easeOutBack:Ue,easeOutExpo:Ve},pe=t=>{const e=t.getBoundingClientRect();return{top:e.top,left:e.left,width:e.width,height:e.height}},ye=(t,e,n={})=>{const{duration:r=300,easing:s="ease-out",onComplete:o}=n,i=pe(t);if(i.width===0||i.height===0)return o?.(),Promise.resolve();const a=e.left-i.left,c=e.top-i.top,l=e.width/i.width,p=e.height/i.height;if(a===0&&c===0&&l===1&&p===1)return o?.(),Promise.resolve();const d=t;return typeof d.animate!="function"?(o?.(),Promise.resolve()):(d.style.transform=`translate(${a}px, ${c}px) scale(${l}, ${p})`,d.style.transformOrigin="top left",d.offsetHeight,new Promise(y=>{const u=d.animate([{transform:`translate(${a}px, ${c}px) scale(${l}, ${p})`},{transform:"translate(0, 0) scale(1, 1)"}],{duration:r,easing:s,fill:"forwards"});let m=!1;const f=()=>{m||(m=!0,d.style.transform="",d.style.transformOrigin="",o?.(),y())};u.onfinish=f,u.finished&&u.finished.then(f).catch(f)}))},Ln=async(t,e,n={})=>{await Ke(t,e,n)},Ke=async(t,e,n={})=>{const{stagger:r,...s}=n,o=new Map;for(const c of t)o.set(c,pe(c));e();const i=t.length,a=t.map((c,l)=>{const p=o.get(c);if(!p)return Promise.resolve();const d=r?r(l,i):0;return d>0?new Promise(y=>setTimeout(y,d)).then(()=>ye(c,p,s)):ye(c,p,s)});await Promise.all(a)},Tn={fadeIn:(t=0,e=1)=>[{opacity:t},{opacity:e}],fadeOut:(t=1,e=0)=>[{opacity:t},{opacity:e}],slideInUp:(t=16)=>[{opacity:0,transform:`translateY(${t}px)`},{opacity:1,transform:"translateY(0)"}],slideInDown:(t=16)=>[{opacity:0,transform:`translateY(-${t}px)`},{opacity:1,transform:"translateY(0)"}],slideInLeft:(t=16)=>[{opacity:0,transform:`translateX(${t}px)`},{opacity:1,transform:"translateX(0)"}],slideInRight:(t=16)=>[{opacity:0,transform:`translateX(-${t}px)`},{opacity:1,transform:"translateX(0)"}],scaleIn:(t=.95,e=1)=>[{opacity:0,transform:`scale(${t})`},{opacity:1,transform:`scale(${e})`}],scaleOut:(t=1,e=.95)=>[{opacity:1,transform:`scale(${t})`},{opacity:0,transform:`scale(${e})`}],pop:(t=.9,e=1.02,n=1)=>[{opacity:0,transform:`scale(${t})`},{opacity:1,transform:`scale(${e})`,offset:.6},{opacity:1,transform:`scale(${n})`}],rotateIn:(t=6)=>[{opacity:0,transform:`rotate(${t}deg) scale(0.98)`},{opacity:1,transform:"rotate(0deg) scale(1)"}]},Mn=t=>typeof Element<"u"&&t instanceof Element?[t]:Array.from(t),Rn=(t,e)=>{const n=Mn(t);if(!n.length)return()=>{};const{root:r=null,rootMargin:s,threshold:o,once:i=!0,onEnter:a,...c}=e;if(typeof IntersectionObserver>"u")return n.forEach(p=>{a?.(p),re(p,c)}),()=>{};const l=new IntersectionObserver(p=>{p.forEach(d=>{if(!d.isIntersecting)return;const y=d.target;a?.(y),re(y,c),i&&l.unobserve(y)})},{root:r,rootMargin:s,threshold:o});return n.forEach(p=>l.observe(p)),()=>l.disconnect()},_n={stiffness:100,damping:10,mass:1,precision:.01},Dn=(t,e={})=>{const{stiffness:n,damping:r,mass:s,precision:o}={..._n,...e};let i=t,a=0,c=t,l=null,p=null,d=null;const y=new Set,u=()=>{for(const f of y)f(i)},m=f=>{const g=d!==null?(f-d)/1e3:.016666666666666666,w=Math.min(g,1/30);d=f;const b=i-c,A=-n*b,$=-r*a,L=(A+$)/s;if(a+=L*w,i+=a*w,u(),Math.abs(a)<o&&Math.abs(b)<o){i=c,a=0,l=null,u(),p?.(),p=null;return}l=requestAnimationFrame(m)};return{to(f){return c=f,l!==null&&cancelAnimationFrame(l),p?.(),d=null,new Promise(g=>{p=g,l=requestAnimationFrame(m)})},current(){return i},stop(){l!==null&&(cancelAnimationFrame(l),l=null),a=0,d=null,p?.(),p=null},onChange(f){return y.add(f),()=>y.delete(f)}}},jn={gentle:{stiffness:80,damping:15},snappy:{stiffness:200,damping:20},bouncy:{stiffness:300,damping:8},stiff:{stiffness:400,damping:30}},Hn=(t,e={})=>{const{start:n=0,from:r="start",easing:s}=e;return(o,i=0)=>{const a=typeof r=="number"?r:r==="center"?(i-1)/2:r==="end"?i-1:0,c=Math.abs(o-a),l=i>1?Math.max(a,i-1-a):1,p=l===0?0:c/l,d=s?s(p)*l:c;return n+d*t}},ge=t=>{if(typeof t=="number")return t;if(typeof t=="string"){const e=t.trim();if(e.endsWith("ms")){const r=Number.parseFloat(e.slice(0,-2));return Number.isFinite(r)?r:0}if(e.endsWith("s")){const r=Number.parseFloat(e.slice(0,-1));return Number.isFinite(r)?r*1e3:0}const n=Number.parseFloat(e);return Number.isFinite(n)?n:0}return 0},In=(t,e)=>{if(typeof t=="number")return t;if(typeof t=="string"){const n=/^([+-])=(\d+(?:\.\d+)?)$/.exec(t);if(n){const r=Number.parseFloat(n[2]);return Number.isFinite(r)?n[1]==="+"?e+r:e-r:e}}return e},qn=t=>{const e=ge(t?.duration),n=ge(t?.endDelay),r=t?.iterations??1;if(r===1/0)return Number.MAX_SAFE_INTEGER;const s=Math.max(0,r);return e*s+n},Ye=t=>{let e=0;return t.map(n=>{const r=In(n.at,e),s=ge(n.options?.delay),o=Math.max(0,r+s),i=qn(n.options),a=o+i;return e=Math.max(e,a),{step:n,start:o,end:a,duration:i}})},Fn=async(t,e={})=>{const{stagger:n,onFinish:r}=e,s=t.length;for(let o=0;o<t.length;o+=1){const i=t[o],a=n?n(o,s):0;a>0&&await new Promise(c=>setTimeout(c,a)),await re(i.target,i)}r?.()},zn=(t=[],e={})=>{const n=[...t],r=new Set;let s=[],o=0,i=!1,a=!1;const{commitStyles:c=!0,respectReducedMotion:l=!0,onFinish:p}=e,d=()=>{if(!a){if(a=!0,c)for(const u of s){const{animation:m,step:f}=u;typeof m.commitStyles=="function"?m.commitStyles():U(f.target,f.keyframes),m.cancel()}r.forEach(u=>u()),p?.()}},y=()=>{s.forEach(({animation:f})=>f.cancel()),s=[],a=!1;const u=Ye(n);if(o=u.length?Math.max(...u.map(f=>f.end)):0,l&&me()){c&&u.forEach(({step:f})=>U(f.target,f.keyframes)),i=!0;return}if(u.some(({step:f})=>typeof f.target.animate!="function")){c&&u.forEach(({step:f})=>U(f.target,f.keyframes)),i=!0;return}i=!1,s=u.map(({step:f,start:g})=>{const{delay:w,...b}=f.options??{};return{animation:f.target.animate(f.keyframes,{...b,delay:g,fill:b.fill??"both"}),step:f,start:g}})};return{add(u){n.push(u)},duration(){if(!n.length)return 0;if(!s.length){const u=Ye(n);return Math.max(...u.map(m=>m.end))}return o},async play(){if(y(),i||s.length===0){d();return}const u=s.map(m=>m.animation.finished.catch(()=>{}));await Promise.all(u),d()},pause(){i||s.forEach(({animation:u})=>u.pause())},resume(){i||s.forEach(({animation:u})=>u.play())},stop(){s.forEach(({animation:u})=>u.cancel()),s=[],i=!1},seek(u){i||s.forEach(({animation:m})=>{m.currentTime=u})},onFinish(u){return r.add(u),()=>r.delete(u)}}},Wn=async t=>{const e=typeof t=="function"?t:t.update;if(typeof document>"u"){e();return}const n=document;if(n.startViewTransition){await n.startViewTransition(()=>e()).finished;return}e()};class Bn{constructor(e){this.bucketName=e,this.dbPromise=null,this.storeName="blobs"}openDB(){if(this.dbPromise)return this.dbPromise;const e=`bquery-bucket-${this.bucketName}`;return this.dbPromise=new Promise((n,r)=>{const s=indexedDB.open(e,1);s.onupgradeneeded=()=>{const o=s.result;o.objectStoreNames.contains(this.storeName)||o.createObjectStore(this.storeName)},s.onsuccess=()=>n(s.result),s.onerror=()=>r(s.error)}),this.dbPromise}async withStore(e,n){const r=await this.openDB();return new Promise((s,o)=>{const a=r.transaction(this.storeName,e).objectStore(this.storeName),c=n(a);c.onsuccess=()=>s(c.result),c.onerror=()=>o(c.error)})}async put(e,n){await this.withStore("readwrite",r=>r.put(n,e))}async get(e){return await this.withStore("readonly",r=>r.get(e))??null}async remove(e){await this.withStore("readwrite",n=>n.delete(e))}async keys(){return(await this.withStore("readonly",n=>n.getAllKeys())).map(n=>String(n))}}const Qn={async open(t){return new Bn(t)}};class Un{constructor(e){this.cache=e}async add(e){await this.cache.add(e)}async addAll(e){await this.cache.addAll(e)}async put(e,n){await this.cache.put(e,n)}async match(e){return this.cache.match(e)}async remove(e){return this.cache.delete(e)}async keys(){return(await this.cache.keys()).map(n=>n.url)}}const Vn={isSupported(){return"caches"in window},async open(t){if(!this.isSupported())throw new Error("bQuery: Cache Storage API not supported");const e=await caches.open(t);return new Un(e)},async delete(t){return this.isSupported()?caches.delete(t):!1},async keys(){return this.isSupported()?caches.keys():[]}},Kn={isSupported(){return"Notification"in window},getPermission(){return this.isSupported()?Notification.permission:"denied"},async requestPermission(){return this.isSupported()?Notification.permission==="granted"?"granted":Notification.permission==="denied"?"denied":Notification.requestPermission():"denied"},send(t,e){return this.isSupported()?Notification.permission!=="granted"?(console.warn("bQuery: Notification permission not granted"),null):new Notification(t,e):(console.warn("bQuery: Notifications not supported in this browser"),null)}};class Je{constructor(e){this.storage=e}async get(e){const n=this.storage.getItem(e);if(n===null)return null;try{return JSON.parse(n)}catch{return n}}async set(e,n){const r=typeof n=="string"?n:JSON.stringify(n);this.storage.setItem(e,r)}async remove(e){this.storage.removeItem(e)}async clear(){this.storage.clear()}async keys(){return Object.keys(this.storage)}}class Yn extends Je{constructor(){super(localStorage)}}class Jn extends Je{constructor(){super(sessionStorage)}}class Zn{constructor(e){this.options=e,this.dbPromise=null}openDB(){return this.dbPromise?this.dbPromise:(this.dbPromise=new Promise((e,n)=>{const r=indexedDB.open(this.options.name,this.options.version??1);r.onupgradeneeded=()=>{const s=r.result;s.objectStoreNames.contains(this.options.store)||s.createObjectStore(this.options.store)},r.onsuccess=()=>e(r.result),r.onerror=()=>n(r.error)}),this.dbPromise)}async withStore(e,n){const r=await this.openDB();return new Promise((s,o)=>{const a=r.transaction(this.options.store,e).objectStore(this.options.store),c=n(a);c.onsuccess=()=>s(c.result),c.onerror=()=>o(c.error)})}async get(e){return await this.withStore("readonly",r=>r.get(e))??null}async set(e,n){await this.withStore("readwrite",r=>r.put(n,e))}async remove(e){await this.withStore("readwrite",n=>n.delete(e))}async clear(){await this.withStore("readwrite",e=>e.clear())}async keys(){return(await this.withStore("readonly",n=>n.getAllKeys())).map(n=>String(n))}}const Gn={local(){return new Yn},session(){return new Jn},indexedDB(t){return new Zn(t)}};let Ze=null;const F=Q({path:"",params:{},query:{},matched:null,hash:""}),Ge=te(()=>F.value),V=()=>Ze,Xe=t=>{Ze=t},se=async(t,e={})=>{const n=V();if(!n)throw new Error("bQuery router: No router initialized. Call createRouter() first.");await n[e.replace?"replace":"push"](t)},Xn=()=>{const t=V();t?t.back():history.back()},xn=()=>{const t=V();t?t.forward():history.forward()},er=(t,e={})=>n=>{n.preventDefault(),se(t,e).catch(r=>{console.error("Navigation failed:",r)})},tr=t=>{const e=t??(typeof document<"u"?document.body:null);if(!e)return()=>{};const n=r=>{if(!(r instanceof MouseEvent)||r.defaultPrevented||r.button!==0||r.ctrlKey||r.metaKey||r.shiftKey||r.altKey||typeof Element>"u"||!(r.target instanceof Element))return;const o=r.target.closest("a");if(!o)return;const a=o.ownerDocument.defaultView?.HTMLAnchorElement??HTMLAnchorElement;if(!(o instanceof a)||o.target||o.hasAttribute("download")||typeof window>"u"||o.origin!==window.location.origin)return;const c=V();if(!c){r.preventDefault(),se(o.pathname+o.search+o.hash).catch(y=>{console.error("Navigation failed:",y)});return}const l=c.base,p=c.hash;let d;if(p&&o.hash&&o.hash.startsWith("#/"))d=o.hash.slice(1);else{let y=o.pathname;l&&l!=="/"&&y.startsWith(l)&&(y=y.slice(l.length)||"/"),d=y+o.search+o.hash}r.preventDefault(),se(d).catch(y=>{console.error("Navigation failed:",y)})};return e.addEventListener("click",n),()=>e.removeEventListener("click",n)},nr=t=>{const e={};return new URLSearchParams(t).forEach((r,s)=>{const o=e[s];o===void 0?e[s]=r:Array.isArray(o)?o.push(r):e[s]=[o,r]}),e},rr=t=>{if(t==="*")return/^.*$/;const e="\0P\0",n="\0W\0";let r=t.replace(/:([a-zA-Z_][a-zA-Z0-9_]*)/g,()=>e);return r=r.replace(/\*/g,n),r=r.replace(/[\\^$.*+?()[\]{}|]/g,"\\$&"),r=r.replace(/\u0000P\u0000/g,()=>"([^/]+)"),r=r.replace(/\u0000W\u0000/g,".*"),new RegExp(`^${r}$`)},sr=t=>{const e=t.match(/:([a-zA-Z_][a-zA-Z0-9_]*)/g);return e?e.map(n=>n.slice(1)):[]},or=(t,e)=>{for(const n of e){const r=rr(n.path),s=t.match(r);if(s){const o=sr(n.path),i={};return o.forEach((a,c)=>{i[a]=s[c+1]||""}),{matched:n,params:i}}}return null},oe=(t,e,n,r)=>{const s=or(t,r);return{path:t,params:s?.params??{},query:nr(e),matched:s?.matched??null,hash:n.replace(/^#/,"")}},xe=(t,e="")=>{const n=[];for(const r of t){const s=r.path==="*"?"*":`${e}${r.path}`.replace(/\/+/g,"/");n.push({...r,path:s}),r.children&&n.push(...xe(r.children,s))}return n},ir=(t,e={})=>{const n=V();if(!n)throw new Error("bQuery router: No router initialized.");const r=n.routes.find(o=>o.name===t);if(!r)throw new Error(`bQuery router: Route "${t}" not found.`);let s=r.path;for(const[o,i]of Object.entries(e))s=s.replace(`:${o}`,encodeURIComponent(i));return s},ar=(t,e=!1)=>{const n=F.value.path;return e?n===t:n.startsWith(t)},cr=(t,e=!1)=>te(()=>{const n=F.value.path;return e?n===t:n.startsWith(t)}),lr=t=>{const e=V();e&&e.destroy();const{routes:n,base:r="",hash:s=!1}=t,o=[],i=[],a=xe(n),c=()=>{if(s){const m=window.location.hash.slice(1)||"/",[f,g=""]=m.split("#"),[w,b=""]=f.split("?");return{pathname:w,search:b?`?${b}`:"",hash:g?`#${g}`:""}}let u=window.location.pathname;return r&&(u===r||u.startsWith(r+"/"))&&(u=u.slice(r.length)||"/"),{pathname:u,search:window.location.search,hash:window.location.hash}},l=()=>{const{pathname:u,search:m,hash:f}=c(),g=oe(u,m,f,a);F.value=g},p=async(u,m)=>{const{pathname:f,search:g,hash:w}=c(),b=oe(f,g,w,a),A=new URL(u,window.location.origin),$=oe(A.pathname,A.search,A.hash,a);for(const v of o)if(await v($,b)===!1)return;const L=s?`#${u}`:`${r}${u}`;history[m]({},"",L),l();for(const v of i)v(F.value,b)},d=async()=>{const{pathname:u,search:m,hash:f}=c(),g=F.value,w=oe(u,m,f,a);for(const b of o)if(await b(w,g)===!1){const $=new URLSearchParams(Object.entries(g.query).flatMap(([N,T])=>Array.isArray(T)?T.map(I=>[N,I]):[[N,T]])).toString(),L=$?`?${$}`:"",v=g.hash?`#${g.hash}`:"",E=s?`#${g.path}${L}${v}`:`${r}${g.path}${L}${v}`;history.replaceState({},"",E);return}l();for(const b of i)b(F.value,g)};window.addEventListener("popstate",d),l();const y={push:u=>p(u,"pushState"),replace:u=>p(u,"replaceState"),back:()=>history.back(),forward:()=>history.forward(),go:u=>history.go(u),beforeEach:u=>(o.push(u),()=>{const m=o.indexOf(u);m>-1&&o.splice(m,1)}),afterEach:u=>(i.push(u),()=>{const m=i.indexOf(u);m>-1&&i.splice(m,1)}),currentRoute:Ge,routes:a,base:r,hash:s,destroy:()=>{window.removeEventListener("popstate",d),o.length=0,i.length=0,Xe(null)}};return Xe(y),y},ur=()=>{if(!(typeof window>"u"))return window.__BQUERY_DEVTOOLS__||(window.__BQUERY_DEVTOOLS__={stores:new Map}),window.__BQUERY_DEVTOOLS__},fr=(t,e)=>{const n=ur();n&&(n.stores.set(t,e),n.onStoreCreated?.(t,e))},hr=t=>{typeof window>"u"||!window.__BQUERY_DEVTOOLS__||window.__BQUERY_DEVTOOLS__.stores.delete(t)},dr=(t,e)=>{typeof window>"u"||window.__BQUERY_DEVTOOLS__?.onStateChange?.(t,e)},et=[],mr=t=>{et.push(t)},pr=(t,e)=>{for(const n of et){const r=n({store:t,options:e});r&&Object.assign(t,r)}},Y=new Map,yr=t=>Y.has(t),gr=(t,e)=>{Y.set(t,e)},tt=t=>Y.get(t),br=()=>Array.from(Y.keys()),wr=t=>{Y.delete(t),hr(t)},nt=t=>t!==null&&typeof t=="object"&&Object.getPrototypeOf(t)===Object.prototype,z=t=>{if(t===null||typeof t!="object")return t;if(Array.isArray(t))return t.map(z);if(t instanceof Date)return new Date(t.getTime());if(t instanceof Map)return new Map(Array.from(t.entries()).map(([n,r])=>[n,z(r)]));if(t instanceof Set)return new Set(Array.from(t).map(z));const e={};for(const n of Object.keys(t))e[n]=z(t[n]);return e},J=(t,e)=>{if(t===e)return!0;if(t===null||e===null||typeof t!="object"||typeof e!="object")return!1;if(t instanceof Date&&e instanceof Date)return t.getTime()===e.getTime();if(t instanceof Map&&e instanceof Map){if(t.size!==e.size)return!1;for(const[s,o]of t.entries())if(!e.has(s)||!J(o,e.get(s)))return!1;return!0}if(t instanceof Set&&e instanceof Set){if(t.size!==e.size)return!1;for(const s of t.values()){let o=!1;for(const i of e.values())if(J(s,i)){o=!0;break}if(!o)return!1}return!0}if(Array.isArray(t)&&Array.isArray(e))return t.length!==e.length?!1:t.every((s,o)=>J(s,e[o]));if(Array.isArray(t)!==Array.isArray(e))return!1;const n=Object.keys(t),r=Object.keys(e);return n.length!==r.length?!1:n.every(s=>J(t[s],e[s]))},vr=(t,e,n)=>{const r=[];for(const s of Object.keys(e)){const o=t[s],i=e[s];n.get(s)===i&&nt(o)&&nt(i)&&!J(o,i)&&r.push(s)}return r},be=(()=>{try{const t=globalThis.process;return!(typeof t<"u"&&t.env?.NODE_ENV==="production")}catch{return!0}})(),rt=t=>{const{id:e,state:n,getters:r={},actions:s={}}=t;if(yr(e))return console.warn(`bQuery store: Store "${e}" already exists. Returning existing instance.`),tt(e);const o=n(),i=new Map;for(const u of Object.keys(o))i.set(u,Q(o[u]));const a=[],c=()=>De(()=>({...p})),l=()=>{const u=typeof window<"u"&&typeof window.__BQUERY_DEVTOOLS__?.onStateChange=="function";if(a.length===0&&!u)return;const m=c();for(const f of a)f(m);dr(e,m)},p=new Proxy({},{get:(u,m)=>{const f=m;if(i.has(f))return i.get(f).value},ownKeys:()=>Array.from(i.keys()),getOwnPropertyDescriptor:(u,m)=>{if(i.has(m))return{enumerable:!0,configurable:!0}},has:(u,m)=>i.has(m)}),d=new Map,y={};for(const u of Object.keys(o))Object.defineProperty(y,u,{get:()=>i.get(u).value,set:m=>{i.get(u).value=m,l()},enumerable:!0,configurable:!1});for(const u of Object.keys(r)){const m=r[u],f=te(()=>{const g=p,w=new Proxy({},{get:(b,A)=>{const $=A;if(d.has($))return d.get($).value}});return m(g,w)});d.set(u,f),Object.defineProperty(y,u,{get:()=>f.value,enumerable:!0,configurable:!1})}for(const u of Object.keys(s)){const m=s[u];y[u]=function(...f){const g=new Proxy(y,{get:(w,b)=>typeof b=="string"&&i.has(b)?i.get(b).value:w[b],set:(w,b,A)=>typeof b=="string"&&i.has(b)?(i.get(b).value=A,l(),!0):Reflect.set(w,b,A)});return m.apply(g,f)}}return Object.defineProperties(y,{$id:{value:e,writable:!1,enumerable:!1},$reset:{value:()=>{const u=n();ee(()=>{for(const[m,f]of i)f.value=u[m]}),l()},writable:!1,enumerable:!1},$subscribe:{value:u=>(a.push(u),()=>{const m=a.indexOf(u);m>-1&&a.splice(m,1)}),writable:!1,enumerable:!1},$patch:{value:u=>{ee(()=>{if(typeof u=="function"){const m=be?z(c()):null,f=be?new Map(Array.from(i.entries()).map(([w,b])=>[w,b.value])):null,g=c();if(u(g),be&&m&&f){const w=vr(m,g,f);w.length>0&&console.warn(`[bQuery store "${e}"] Nested mutation detected in $patch() for keys: ${w.map(String).join(", ")}.
2
2
  Nested object mutations do not trigger reactive updates because the store uses shallow reactivity.
3
3
  To fix this, either:
4
4
  1. Replace the entire object: state.user = { ...state.user, name: "New" }
5
5
  2. Use $patchDeep() for automatic deep cloning
6
- See: https://bquery.dev/guide/store#deep-reactivity`)}for(const[g,w]of Object.entries(b))o.has(g)&&(o.get(g).value=w)}else for(const[l,p]of Object.entries(d))o.has(l)&&(o.get(l).value=p)}),a()},writable:!1,enumerable:!1},$patchDeep:{value:d=>{J(()=>{if(typeof d=="function"){const l=M(y());d(l);for(const[p,b]of Object.entries(l))o.has(p)&&(o.get(p).value=b)}else for(const[l,p]of Object.entries(d))o.has(l)&&(o.get(l).value=M(p))}),a()},writable:!1,enumerable:!1},$state:{get:()=>y(),enumerable:!1}}),F.set(e,u);for(const d of be){const l=d({store:u,options:t});l&&Object.assign(u,l)}return typeof window<"u"&&(window.__BQUERY_DEVTOOLS__||(window.__BQUERY_DEVTOOLS__={stores:new Map}),window.__BQUERY_DEVTOOLS__.stores.set(e,u),window.__BQUERY_DEVTOOLS__.onStoreCreated?.(e,u)),u},Ct=t=>F.get(t),Lt=()=>Array.from(F.keys()),$t=t=>{F.delete(t),typeof window<"u"&&window.__BQUERY_DEVTOOLS__&&window.__BQUERY_DEVTOOLS__.stores.delete(t)},Ot=t=>{be.push(t)},Pt=(t,e)=>{const r=e??`bquery-store-${t.id}`,s=t.state;t.state=()=>{const i=s();if(typeof window<"u")try{const o=localStorage.getItem(r);if(o)return{...i,...JSON.parse(o)}}catch{}return i};const n=ve(t);return n.$subscribe(i=>{if(typeof window<"u")try{localStorage.setItem(r,JSON.stringify(i))}catch{}}),n},Tt=(t,e)=>{const r={};for(const s of e)Object.defineProperty(r,s,{get:()=>t[s],enumerable:!0});return r},_t=(t,e)=>{const r={};for(const s of e)r[s]=(...n)=>t[s](...n);return r},k=(t,e)=>{try{const r=Object.keys(e),s=r.map(i=>{const o=e[i];return Z(o)||de(o)?o.value:o});return new Function(...r,`return (${t})`)(...s)}catch(r){console.error(`bQuery view: Error evaluating "${t}"`,r);return}},ce=(t,e)=>{try{const r=Object.keys(e),s=r.map(i=>e[i]);return new Function(...r,`return (${t})`)(...s)}catch(r){console.error(`bQuery view: Error evaluating "${t}"`,r);return}},Se=t=>{const e={},r=t.trim().replace(/^\{|\}$/g,"").trim();if(!r)return e;const s=[];let n="",i=0,o=null;for(let c=0;c<r.length;c++){const a=r[c],f=c>0?r[c-1]:"";if((a==='"'||a==="'"||a==="`")&&f!=="\\"){o===null?o=a:o===a&&(o=null),n+=a;continue}if(o!==null){n+=a;continue}a==="("||a==="["||a==="{"?(i++,n+=a):a===")"||a==="]"||a==="}"?(i--,n+=a):a===","&&i===0?(s.push(n.trim()),n=""):n+=a}n.trim()&&s.push(n.trim());for(const c of s){let a=-1,f=0,y=null;for(let m=0;m<c.length;m++){const u=c[m],d=m>0?c[m-1]:"";if((u==='"'||u==="'"||u==="`")&&d!=="\\"){y===null?y=u:y===u&&(y=null);continue}if(y===null){if(u==="("||u==="["||u==="{")f++;else if(u===")"||u==="]"||u==="}")f--;else if(u===":"&&f===0){a=m;break}}}if(a>-1){const m=c.slice(0,a).trim().replace(/^['"]|['"]$/g,""),u=c.slice(a+1).trim();e[m]=u}}return e},Nt=(t,e,r,s)=>{const n=L(()=>{const i=k(e,r);t.textContent=String(i??"")});s.push(n)},Rt=t=>(e,r,s,n)=>{const i=L(()=>{const o=k(r,s),c=String(o??"");e.innerHTML=t?R(c):c});n.push(i)},jt=(t,e,r,s)=>{const n=t.parentNode,i=document.createComment(`bq-if: ${e}`);let o=!0;const c=L(()=>{const a=k(e,r);a&&!o?(n?.replaceChild(t,i),o=!0):!a&&o&&(n?.replaceChild(i,t),o=!1)});s.push(c)},Mt=(t,e,r,s)=>{const n=t,i=n.style.display,o=L(()=>{const c=k(e,r);n.style.display=c?i:"none"});s.push(o)},Dt=(t,e,r,s)=>{let n=new Set;const i=L(()=>{const o=new Set;if(e.startsWith("{")){const c=Se(e);for(const[a,f]of Object.entries(c)){const y=k(f,r);t.classList.toggle(a,!!y),o.add(a)}}else if(e.includes("[")){const c=k(e,r);if(Array.isArray(c))for(const a of c)a&&(t.classList.add(a),o.add(a))}else{const c=k(e,r);typeof c=="string"?c.split(/\s+/).forEach(a=>{a&&(t.classList.add(a),o.add(a))}):Array.isArray(c)&&c.forEach(a=>{a&&(t.classList.add(a),o.add(a))})}if(!e.startsWith("{"))for(const c of n)o.has(c)||t.classList.remove(c);n=o});s.push(i)},Ht=(t,e,r,s)=>{const n=t,i=L(()=>{if(e.startsWith("{")){const o=Se(e);for(const[c,a]of Object.entries(o)){const f=k(a,r),y=c.replace(/([A-Z])/g,"-$1").toLowerCase();n.style.setProperty(y,String(f??""))}}else{const o=k(e,r);if(o&&typeof o=="object")for(const[c,a]of Object.entries(o)){const f=c.replace(/([A-Z])/g,"-$1").toLowerCase();n.style.setProperty(f,String(a??""))}}});s.push(i)},qt=(t,e,r,s)=>{const n=t,i=ce(e,r);if(!Z(i)){console.warn(`bQuery view: bq-model requires a signal, got "${e}"`);return}const o=i,c=n.type==="checkbox",a=n.type==="radio",f=()=>{c?n.checked=!!o.value:a?n.checked=o.value===n.value:n.value=String(o.value??"")},y=L(()=>{f()});s.push(y);const m=n.tagName==="SELECT"?"change":"input",u=()=>{c?o.value=n.checked:a?n.checked&&(o.value=n.value):o.value=n.value};n.addEventListener(m,u),s.push(()=>n.removeEventListener(m,u))},Bt=t=>(e,r,s,n)=>{const i=L(()=>{const o=k(r,s);o==null||o===!1?e.removeAttribute(t):o===!0?e.setAttribute(t,""):e.setAttribute(t,String(o))});n.push(i)},It=t=>(e,r,s,n)=>{const i=o=>{const c={...s,$event:o,$el:e};if(/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(r.trim())){const f=ce(r,c);if(typeof f=="function"){f(o);return}}k(r,c)};e.addEventListener(t,i),n.push(()=>e.removeEventListener(t,i))},Ft=(t,e,r,s,n,i)=>{if(!r)return e;const o={...i,[s]:t};return n&&(o[n]=e),k(r,o)},Ut=(t,e)=>(r,s,n,i)=>{const o=r.parentNode;if(!o)return;const c=s.match(/^\(?(\w+)(?:\s*,\s*(\w+))?\)?\s+in\s+(\S.*)$/);if(!c){console.error(`bQuery view: Invalid bq-for expression "${s}"`);return}const[,a,f,y]=c,m=r.getAttribute(":key")||r.getAttribute(`${t}-key`),u=r.cloneNode(!0);u.removeAttribute(`${t}-for`),u.removeAttribute(":key"),u.removeAttribute(`${t}-key`);const d=document.createComment(`bq-for: ${s}`);o.replaceChild(d,r);let l=new Map,p=[];const b=(S,A,_)=>{const D=u.cloneNode(!0),H=[],N={...n,[a]:S};return f&&(N[f]=A),G(D,N,t,e,H),le(D,N,t,e,H),{key:_,element:D,cleanups:H,item:S,index:A}},g=S=>{for(const A of S.cleanups)A();S.element.remove()},w=(S,A)=>{S.index!==A&&f&&(S.index=A)},C=L(()=>{const S=k(y,n);if(!Array.isArray(S)){for(const E of l.values())g(E);l.clear(),p=[];return}const A=[],_=new Map;S.forEach((E,O)=>{const X=Ft(E,O,m,a,f,n);A.push(X),_.set(X,{item:E,index:O})});const D=[];for(const E of p)_.has(E)||D.push(E);for(const E of D){const O=l.get(E);O&&(g(O),l.delete(E))}const H=new Map;let N=d;for(let E=0;E<A.length;E++){const O=A[E],{item:X,index:Ee}=_.get(O);let P=l.get(O);P?(w(P,Ee),H.set(O,P),N.nextSibling!==P.element&&N.after(P.element),N=P.element):(P=b(X,Ee,O),H.set(O,P),N.after(P.element),N=P.element)}l=H,p=A});i.push(()=>{C();for(const S of l.values())for(const A of S.cleanups)A();l.clear()})},Qt=(t,e,r,s)=>{const n=ce(e,r);Z(n)?(n.value=t,s.push(()=>{n.value=null})):typeof r[e]=="object"&&r[e]!==null&&(r[e].value=t)},G=(t,e,r,s,n)=>{const i=Array.from(t.attributes);for(const o of i){const{name:c,value:a}=o;if(!c.startsWith(r))continue;const f=c.slice(r.length+1);if(f==="for"){Ut(r,s)(t,a,e,n);return}if(f==="text")Nt(t,a,e,n);else if(f==="html")Rt(s)(t,a,e,n);else if(f==="if")jt(t,a,e,n);else if(f==="show")Mt(t,a,e,n);else if(f==="class")Dt(t,a,e,n);else if(f==="style")Ht(t,a,e,n);else if(f==="model")qt(t,a,e,n);else if(f==="ref")Qt(t,a,e,n);else if(f.startsWith("bind:")){const y=f.slice(5);Bt(y)(t,a,e,n)}else if(f.startsWith("on:")){const y=f.slice(3);It(y)(t,a,e,n)}}},le=(t,e,r,s,n)=>{const i=Array.from(t.children);for(const o of i)o.hasAttribute(`${r}-for`)?G(o,e,r,s,n):(G(o,e,r,s,n),le(o,e,r,s,n))},Ae=(t,e,r={})=>{const{prefix:s="bq",sanitize:n=!0}=r,i=typeof t=="string"?document.querySelector(t):t;if(!i)throw new Error(`bQuery view: Element "${t}" not found.`);const o=[];return G(i,e,s,n,o),le(i,e,s,n,o),{el:i,context:e,update:c=>{Object.assign(e,c)},destroy:()=>{for(const c of o)c();o.length=0}}},Wt=(t,e={})=>r=>{const s=document.createElement("div");s.innerHTML=t.trim();const n=s.firstElementChild;if(!n)throw new Error("bQuery view: Template must contain a single root element.");return Ae(n,r,e)};h.$=Fe,h.$$=Ue,h.BQueryCollection=B,h.BQueryElement=T,h.Computed=ne,h.Signal=re,h.back=yt,h.batch=J,h.buckets=st,h.cache=it,h.capturePosition=se,h.component=Ge,h.computed=K,h.createPersistedStore=Pt,h.createRouter=wt,h.createStore=ve,h.createTemplate=Wt,h.createTrustedHtml=Me,h.currentRoute=ye,h.destroyStore=$t,h.effect=L,h.escapeHtml=De,h.flip=me,h.flipList=xe,h.forward=gt,h.generateNonce=qe,h.getStore=Ct,h.getTrustedTypesPolicy=ue,h.hasCSPDirective=Be,h.html=Ze,h.interceptLinks=Et,h.isActive=vt,h.isActiveSignal=St,h.isComputed=de,h.isSignal=Z,h.isTrustedTypesSupported=ke,h.link=At,h.listStores=Lt,h.mapActions=_t,h.mapState=Tt,h.mount=Ae,h.navigate=oe,h.notifications=at,h.persistedSignal=We,h.readonly=ze,h.registerPlugin=Ot,h.resolve=bt,h.safeHtml=Ye,h.sanitize=R,h.sanitizeHtml=R,h.signal=V,h.spring=tt,h.springPresets=rt,h.storage=ht,h.stripTags=He,h.transition=Xe,h.untrack=Ke,h.utils=U,h.watch=Ve,Object.defineProperty(h,Symbol.toStringTag,{value:"Module"})});
6
+ See: https://bquery.dev/guide/store#deep-reactivity`)}for(const[w,b]of Object.entries(g))i.has(w)&&(i.get(w).value=b)}else for(const[m,f]of Object.entries(u))i.has(m)&&(i.get(m).value=f)}),l()},writable:!1,enumerable:!1},$patchDeep:{value:u=>{ee(()=>{if(typeof u=="function"){const m=z(c());u(m);for(const[f,g]of Object.entries(m))i.has(f)&&(i.get(f).value=g)}else for(const[m,f]of Object.entries(u))i.has(m)&&(i.get(m).value=z(f))}),l()},writable:!1,enumerable:!1},$state:{get:()=>c(),enumerable:!1}}),gr(e,y),pr(y,t),fr(e,y),y},Sr=(t,e)=>{const n={};for(const r of e)Object.defineProperty(n,r,{get:()=>t[r],enumerable:!0});return n},Ar=(t,e)=>{const n={};for(const r of e)n[r]=(...s)=>t[r](...s);return n},Er=(t,e)=>{const n=e??`bquery-store-${t.id}`,r=t.state,s={...t,state:()=>{const i=r();if(typeof window<"u")try{const a=localStorage.getItem(n);if(a)return{...i,...JSON.parse(a)}}catch{}return i}},o=rt(s);return o.$subscribe(i=>{if(typeof window<"u")try{localStorage.setItem(n,JSON.stringify(i))}catch{}}),o},st=500;class ot{constructor(e){this.cache=new Map,this.maxSize=e}get(e){const n=this.cache.get(e);return n!==void 0&&(this.cache.delete(e),this.cache.set(e,n)),n}set(e,n){if(this.cache.has(e))this.cache.delete(e);else if(this.cache.size>=this.maxSize){const r=this.cache.keys().next().value;r!==void 0&&this.cache.delete(r)}this.cache.set(e,n)}clear(){this.cache.clear()}get size(){return this.cache.size}}const it=new ot(st),at=new ot(st),Cr=t=>new Proxy(t,{get(e,n){if(typeof n!="string")return Reflect.get(e,n);const r=e[n];return ne(r)||_e(r)?r.value:r},has(e,n){return typeof n!="string"?Reflect.has(e,n):n in e}}),O=(t,e)=>{try{const n=Cr(e);let r=it.get(t);return r||(r=new Function("$ctx",`with($ctx) { return (${t}); }`),it.set(t,r)),r(n)}catch(n){console.error(`bQuery view: Error evaluating "${t}"`,n);return}},ie=(t,e)=>{try{let n=at.get(t);return n||(n=new Function("$ctx",`with($ctx) { return (${t}); }`),at.set(t,n)),n(e)}catch(n){console.error(`bQuery view: Error evaluating "${t}"`,n);return}},ct=t=>{const e={},n=t.trim().replace(/^\{|\}$/g,"").trim();if(!n)return e;const r=[];let s="",o=0,i=null;for(let a=0;a<n.length;a++){const c=n[a],l=a>0?n[a-1]:"";if((c==='"'||c==="'"||c==="`")&&l!=="\\"){i===null?i=c:i===c&&(i=null),s+=c;continue}if(i!==null){s+=c;continue}c==="("||c==="["||c==="{"?(o++,s+=c):c===")"||c==="]"||c==="}"?(o--,s+=c):c===","&&o===0?(r.push(s.trim()),s=""):s+=c}s.trim()&&r.push(s.trim());for(const a of r){let c=-1,l=0,p=null;for(let d=0;d<a.length;d++){const y=a[d],u=d>0?a[d-1]:"";if((y==='"'||y==="'"||y==="`")&&u!=="\\"){p===null?p=y:p===y&&(p=null);continue}if(p===null){if(y==="("||y==="["||y==="{")l++;else if(y===")"||y==="]"||y==="}")l--;else if(y===":"&&l===0){c=d;break}}}if(c>-1){const d=a.slice(0,c).trim().replace(/^['"]|['"]$/g,""),y=a.slice(c+1).trim();e[d]=y}}return e},$r=t=>(e,n,r,s)=>{const o=k(()=>{const i=O(n,r);i==null||i===!1?e.removeAttribute(t):i===!0?e.setAttribute(t,""):e.setAttribute(t,String(i))});s.push(o)},Pr=(t,e,n,r)=>{let s=new Set;const o=k(()=>{const i=new Set;if(e.trimStart().startsWith("{")){const a=ct(e);for(const[c,l]of Object.entries(a)){const p=O(l,n);t.classList.toggle(c,!!p),i.add(c)}}else if(/^\s*\[/.test(e)){const a=O(e,n);if(Array.isArray(a))for(const c of a)c&&(t.classList.add(c),i.add(c))}else{const a=O(e,n);typeof a=="string"?a.split(/\s+/).forEach(c=>{c&&(t.classList.add(c),i.add(c))}):Array.isArray(a)&&a.forEach(c=>{c&&(t.classList.add(c),i.add(c))})}for(const a of s)i.has(a)||t.classList.remove(a);s=i});r.push(o)},kr=(t,e,n,r,s,o)=>{if(!n)return e;const i={...o,[r]:t};return s&&(i[s]=e),O(n,i)},Or=t=>{const{prefix:e,processElement:n,processChildren:r}=t;return(s,o,i,a)=>{const c=s.parentNode;if(!c)return;const l=o.match(/^\(?(\w+)(?:\s*,\s*(\w+))?\)?\s+in\s+(\S.*)$/);if(!l){console.error(`bQuery view: Invalid bq-for expression "${o}"`);return}const[,p,d,y]=l,u=s.getAttribute(":key")||s.getAttribute(`${e}-key`),m=s.cloneNode(!0);m.removeAttribute(`${e}-for`),m.removeAttribute(":key"),m.removeAttribute(`${e}-key`);const f=document.createComment(`bq-for: ${o}`);c.replaceChild(f,s);let g=new Map,w=[];const b=(v,E,N)=>{const T=m.cloneNode(!0),I=[],K=Q(v),j=d?Q(E):null,C={...i,[p]:K};return d&&j&&(C[d]=j),n(T,C,e,I),r(T,C,e,I),{key:N,element:T,cleanups:I,item:v,index:E,itemSignal:K,indexSignal:j}},A=v=>{for(const E of v.cleanups)E();v.element.remove()},$=(v,E,N)=>{Object.is(v.item,E)||(v.item=E,v.itemSignal.value=E),v.index!==N&&(v.index=N,v.indexSignal&&(v.indexSignal.value=N))},L=k(()=>{const v=O(y,i);if(!Array.isArray(v)){for(const C of g.values())A(C);g.clear(),w=[];return}const E=[],N=new Map,T=new Set;v.forEach((C,P)=>{let M=kr(C,P,u,p,d,i);T.has(M)&&(console.warn(`bq-for: Duplicate key "${String(M)}" detected at index ${P}. Falling back to index-based key for this item. Ensure :key expressions produce unique values for each item.`),M={__bqDuplicateKey:M,__bqIndex:P}),T.add(M),E.push(M),N.set(M,{item:C,index:P})});const I=[];for(const C of w)N.has(C)||I.push(C);for(const C of I){const P=g.get(C);P&&(A(P),g.delete(C))}const K=new Map;let j=f;for(let C=0;C<E.length;C++){const P=E[C],{item:M,index:ut}=N.get(P);let R=g.get(P);R?($(R,M,ut),K.set(P,R),j.nextSibling!==R.element&&j.after(R.element),j=R.element):(R=b(M,ut,P),K.set(P,R),j.after(R.element),j=R.element)}g=K,w=E});a.push(()=>{L();for(const v of g.values())for(const E of v.cleanups)E();g.clear()})}},Nr=t=>(e,n,r,s)=>{const o=k(()=>{const i=O(n,r),a=String(i??"");e.innerHTML=t?H(a):a});s.push(o)},Lr=(t,e,n,r)=>{const s=document.createComment(`bq-if: ${e}`);let o=!0;const i=k(()=>{const a=O(e,n);a&&!o?(s.replaceWith(t),o=!0):!a&&o&&(t.replaceWith(s),o=!1)});r.push(i)},Tr=(t,e,n,r)=>{const s=t,o=ie(e,n);if(!ne(o)){console.warn(`bQuery view: bq-model requires a signal, got "${e}"`);return}const i=o,a=s.type==="checkbox",c=s.type==="radio",l=()=>{a?s.checked=!!i.value:c?s.checked=i.value===s.value:s.value=String(i.value??"")},p=k(()=>{l()});r.push(p);const d=s.tagName==="SELECT"?"change":"input",y=()=>{a?i.value=s.checked:c?s.checked&&(i.value=s.value):i.value=s.value};s.addEventListener(d,y),r.push(()=>s.removeEventListener(d,y))},Mr=t=>(e,n,r,s)=>{const o=i=>{const a={...r,$event:i,$el:e};if(!n.includes("(")){const l=ie(n,a);if(typeof l=="function"){l(i);return}return}ie(n,a)};e.addEventListener(t,o),s.push(()=>e.removeEventListener(t,o))};function Rr(t){const e=Object.getOwnPropertyDescriptor(t,"value");return e?"value"in e?e.writable===!0:typeof e.set=="function":!1}const _r=(t,e,n,r)=>{const s=ie(e,n);ne(s)?(s.value=t,r.push(()=>{s.value=null})):typeof s=="object"&&s!==null&&Rr(s)&&(s.value=t,r.push(()=>{s.value=null}))},Dr=(t,e,n,r)=>{const s=t;let o=s.style.display;if(!o||o==="none"){const a=s.ownerDocument.defaultView?.getComputedStyle(s).display??"";o=a!=="none"?a:""}const i=k(()=>{const a=O(e,n);s.style.display=a?o:"none"});r.push(i)},jr=(t,e,n,r)=>{const s=t;let o=new Set;const i=k(()=>{const a=new Set;if(e.trimStart().startsWith("{")){const c=ct(e);for(const[l,p]of Object.entries(c)){const d=O(p,n),y=l.replace(/([A-Z])/g,"-$1").toLowerCase();s.style.setProperty(y,String(d??"")),a.add(y)}}else{const c=O(e,n);if(c&&typeof c=="object")for(const[l,p]of Object.entries(c)){const d=l.replace(/([A-Z])/g,"-$1").toLowerCase();s.style.setProperty(d,String(p??"")),a.add(d)}}for(const c of o)a.has(c)||s.style.removeProperty(c);o=a});r.push(i)},Hr=(t,e,n,r)=>{const s=k(()=>{const o=O(e,n);t.textContent=String(o??"")});r.push(s)},ae=(t,e,n,r,s)=>{const o=Array.from(t.attributes);for(const i of o){const{name:a,value:c}=i;if(!a.startsWith(`${n}-`))continue;const l=a.slice(n.length+1);if(l==="for"){s.for(t,c,e,r);return}if(l==="text")s.text(t,c,e,r);else if(l==="html")s.html(t,c,e,r);else if(l==="if")s.if(t,c,e,r);else if(l==="show")s.show(t,c,e,r);else if(l==="class")s.class(t,c,e,r);else if(l==="style")s.style(t,c,e,r);else if(l==="model")s.model(t,c,e,r);else if(l==="ref")s.ref(t,c,e,r);else if(l.startsWith("bind:")){const p=l.slice(5);s.bind(p)(t,c,e,r)}else if(l.startsWith("on:")){const p=l.slice(3);s.on(p)(t,c,e,r)}}},we=(t,e,n,r,s)=>{const o=Array.from(t.children);for(const i of o)i.hasAttribute(`${n}-for`)?ae(i,e,n,r,s):(ae(i,e,n,r,s),we(i,e,n,r,s))},lt=(t,e,n={})=>{const{prefix:r="bq",sanitize:s=!0}=n,o=typeof t=="string"?document.querySelector(t):t;if(!o)throw new Error(`bQuery view: Element "${t}" not found.`);if(o.hasAttribute(`${r}-for`))throw new Error(`bQuery view: Cannot mount on element with ${r}-for directive. Wrap the ${r}-for element in a container instead.`);const i=[],a={text:Hr,html:Nr(s),if:Lr,show:Dr,class:Pr,style:jr,model:Tr,ref:_r,for:Or({prefix:r,processElement:(l,p,d,y)=>ae(l,p,d,y,a),processChildren:(l,p,d,y)=>we(l,p,d,y,a)}),bind:$r,on:Mr};return((l,p,d)=>{const y=l.hasAttribute(`${r}-for`);ae(l,p,r,d,a),y||we(l,p,r,d,a)})(o,e,i),{el:o,context:e,update:l=>{Object.assign(e,l)},destroy:()=>{for(const l of i)l();i.length=0}}},Ir=(t,e={})=>n=>{const r=document.createElement("div");r.innerHTML=t.trim();const s=r.firstElementChild;if(!s)throw new Error("bQuery view: Template must contain a single root element.");if(r.childElementCount>1)throw new Error(`bQuery view: Template must contain exactly one root element, found ${r.childElementCount}.`);const{prefix:o="bq"}=e;if(s.hasAttribute(`${o}-for`)||s.hasAttribute(`${o}-if`)){const i=s.hasAttribute(`${o}-for`)?"for":"if";throw new Error(`bQuery view: Template root element cannot have ${o}-${i} directive. Wrap the ${o}-${i} element in a container instead.`)}return lt(s,n,e)};h.$=Nt,h.$$=Lt,h.BQueryCollection=q,h.BQueryElement=_,h.Computed=he,h.Signal=de,h.animate=re,h.back=Xn,h.batch=ee,h.buckets=Qn,h.cache=Vn,h.capturePosition=pe,h.component=Pn,h.computed=te,h.createPersistedStore=Er,h.createRouter=lr,h.createStore=rt,h.createTemplate=Ir,h.createTrustedHtml=$t,h.currentRoute=Ge,h.destroyStore=wr,h.easeInCubic=We,h.easeInOutCubic=Qe,h.easeInOutQuad=ze,h.easeInQuad=qe,h.easeOutBack=Ue,h.easeOutCubic=Be,h.easeOutExpo=Ve,h.easeOutQuad=Fe,h.easingPresets=Nn,h.effect=k,h.escapeHtml=Pt,h.flip=ye,h.flipElements=Ke,h.flipList=Ln,h.forward=xn,h.generateNonce=At,h.getStore=tt,h.getTrustedTypesPolicy=$e,h.hasCSPDirective=Et,h.html=kn,h.interceptLinks=tr,h.isActive=ar,h.isActiveSignal=cr,h.isComputed=_e,h.isSignal=ne,h.isTrustedTypesSupported=Ct,h.keyframePresets=Tn,h.linear=Ie,h.link=er,h.listStores=br,h.mapActions=Ar,h.mapState=Sr,h.mount=lt,h.navigate=se,h.notifications=Kn,h.persistedSignal=Sn,h.prefersReducedMotion=me,h.readonly=An,h.registerPlugin=mr,h.resolve=ir,h.safeHtml=On,h.sanitize=H,h.sanitizeHtml=H,h.scrollAnimate=Rn,h.sequence=Fn,h.signal=Q,h.spring=Dn,h.springPresets=jn,h.stagger=Hn,h.storage=Gn,h.stripTags=kt,h.timeline=zn,h.transition=Wn,h.untrack=De,h.utils=yn,h.watch=En,Object.defineProperty(h,Symbol.toStringTag,{value:"Module"})}));
7
7
  //# sourceMappingURL=full.umd.js.map