@bquery/bquery 1.4.0 → 1.6.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 (164) hide show
  1. package/README.md +586 -527
  2. package/dist/component/component.d.ts +13 -5
  3. package/dist/component/component.d.ts.map +1 -1
  4. package/dist/component/html.d.ts +40 -3
  5. package/dist/component/html.d.ts.map +1 -1
  6. package/dist/component/index.d.ts +4 -2
  7. package/dist/component/index.d.ts.map +1 -1
  8. package/dist/component/library.d.ts +34 -0
  9. package/dist/component/library.d.ts.map +1 -0
  10. package/dist/component/types.d.ts +132 -13
  11. package/dist/component/types.d.ts.map +1 -1
  12. package/dist/component-BEQgt5hl.js +600 -0
  13. package/dist/component-BEQgt5hl.js.map +1 -0
  14. package/dist/component.es.mjs +7 -184
  15. package/dist/config-DRmZZno3.js +40 -0
  16. package/dist/config-DRmZZno3.js.map +1 -0
  17. package/dist/core-BGQJVw0-.js +35 -0
  18. package/dist/core-BGQJVw0-.js.map +1 -0
  19. package/dist/core-CCEabVHl.js +648 -0
  20. package/dist/core-CCEabVHl.js.map +1 -0
  21. package/dist/core.es.mjs +45 -1261
  22. package/dist/effect-AFRW_Plg.js +84 -0
  23. package/dist/effect-AFRW_Plg.js.map +1 -0
  24. package/dist/full.d.ts +8 -8
  25. package/dist/full.d.ts.map +1 -1
  26. package/dist/full.es.mjs +101 -91
  27. package/dist/full.iife.js +173 -3
  28. package/dist/full.iife.js.map +1 -1
  29. package/dist/full.umd.js +173 -3
  30. package/dist/full.umd.js.map +1 -1
  31. package/dist/index.es.mjs +147 -139
  32. package/dist/motion/transition.d.ts +1 -1
  33. package/dist/motion/transition.d.ts.map +1 -1
  34. package/dist/motion/types.d.ts +11 -1
  35. package/dist/motion/types.d.ts.map +1 -1
  36. package/dist/motion-D9TcHxOF.js +415 -0
  37. package/dist/motion-D9TcHxOF.js.map +1 -0
  38. package/dist/motion.es.mjs +25 -361
  39. package/dist/object-qGpWr6-J.js +38 -0
  40. package/dist/object-qGpWr6-J.js.map +1 -0
  41. package/dist/platform/announcer.d.ts +59 -0
  42. package/dist/platform/announcer.d.ts.map +1 -0
  43. package/dist/platform/config.d.ts +92 -0
  44. package/dist/platform/config.d.ts.map +1 -0
  45. package/dist/platform/cookies.d.ts +45 -0
  46. package/dist/platform/cookies.d.ts.map +1 -0
  47. package/dist/platform/index.d.ts +8 -0
  48. package/dist/platform/index.d.ts.map +1 -1
  49. package/dist/platform/meta.d.ts +62 -0
  50. package/dist/platform/meta.d.ts.map +1 -0
  51. package/dist/platform-Dr9b6fsq.js +362 -0
  52. package/dist/platform-Dr9b6fsq.js.map +1 -0
  53. package/dist/platform.es.mjs +11 -248
  54. package/dist/reactive/async-data.d.ts +114 -0
  55. package/dist/reactive/async-data.d.ts.map +1 -0
  56. package/dist/reactive/index.d.ts +2 -2
  57. package/dist/reactive/index.d.ts.map +1 -1
  58. package/dist/reactive/signal.d.ts +2 -0
  59. package/dist/reactive/signal.d.ts.map +1 -1
  60. package/dist/reactive-DSkct0dO.js +254 -0
  61. package/dist/reactive-DSkct0dO.js.map +1 -0
  62. package/dist/reactive.es.mjs +18 -32
  63. package/dist/router-CbDhl8rS.js +188 -0
  64. package/dist/router-CbDhl8rS.js.map +1 -0
  65. package/dist/router.es.mjs +11 -200
  66. package/dist/sanitize-Bs2dkMby.js +313 -0
  67. package/dist/sanitize-Bs2dkMby.js.map +1 -0
  68. package/dist/security/constants.d.ts.map +1 -1
  69. package/dist/security/index.d.ts +4 -2
  70. package/dist/security/index.d.ts.map +1 -1
  71. package/dist/security/sanitize.d.ts +4 -1
  72. package/dist/security/sanitize.d.ts.map +1 -1
  73. package/dist/security/trusted-html.d.ts +53 -0
  74. package/dist/security/trusted-html.d.ts.map +1 -0
  75. package/dist/security.es.mjs +11 -56
  76. package/dist/store/define-store.d.ts +1 -1
  77. package/dist/store/define-store.d.ts.map +1 -1
  78. package/dist/store/mapping.d.ts +1 -1
  79. package/dist/store/mapping.d.ts.map +1 -1
  80. package/dist/store/persisted.d.ts +1 -1
  81. package/dist/store/persisted.d.ts.map +1 -1
  82. package/dist/store/types.d.ts +2 -2
  83. package/dist/store/types.d.ts.map +1 -1
  84. package/dist/store/watch.d.ts +1 -1
  85. package/dist/store/watch.d.ts.map +1 -1
  86. package/dist/store-BwDvI45q.js +263 -0
  87. package/dist/store-BwDvI45q.js.map +1 -0
  88. package/dist/store.es.mjs +12 -25
  89. package/dist/storybook/index.d.ts +37 -0
  90. package/dist/storybook/index.d.ts.map +1 -0
  91. package/dist/storybook.es.mjs +151 -0
  92. package/dist/storybook.es.mjs.map +1 -0
  93. package/dist/untrack-B0rVscTc.js +7 -0
  94. package/dist/untrack-B0rVscTc.js.map +1 -0
  95. package/dist/view-C70lA3vf.js +397 -0
  96. package/dist/view-C70lA3vf.js.map +1 -0
  97. package/dist/view.es.mjs +11 -430
  98. package/package.json +141 -132
  99. package/src/component/component.ts +524 -289
  100. package/src/component/html.ts +153 -53
  101. package/src/component/index.ts +50 -40
  102. package/src/component/library.ts +518 -0
  103. package/src/component/types.ts +256 -85
  104. package/src/core/collection.ts +628 -628
  105. package/src/core/element.ts +774 -774
  106. package/src/core/index.ts +48 -48
  107. package/src/core/utils/function.ts +151 -151
  108. package/src/full.ts +229 -187
  109. package/src/motion/animate.ts +113 -113
  110. package/src/motion/flip.ts +176 -176
  111. package/src/motion/scroll.ts +57 -57
  112. package/src/motion/spring.ts +150 -150
  113. package/src/motion/timeline.ts +246 -246
  114. package/src/motion/transition.ts +97 -51
  115. package/src/motion/types.ts +11 -1
  116. package/src/platform/announcer.ts +208 -0
  117. package/src/platform/config.ts +163 -0
  118. package/src/platform/cookies.ts +165 -0
  119. package/src/platform/index.ts +21 -0
  120. package/src/platform/meta.ts +168 -0
  121. package/src/platform/storage.ts +215 -215
  122. package/src/reactive/async-data.ts +486 -0
  123. package/src/reactive/core.ts +114 -114
  124. package/src/reactive/effect.ts +54 -54
  125. package/src/reactive/index.ts +15 -1
  126. package/src/reactive/internals.ts +122 -122
  127. package/src/reactive/signal.ts +9 -0
  128. package/src/security/constants.ts +3 -1
  129. package/src/security/index.ts +17 -10
  130. package/src/security/sanitize-core.ts +364 -364
  131. package/src/security/sanitize.ts +70 -66
  132. package/src/security/trusted-html.ts +71 -0
  133. package/src/store/define-store.ts +49 -48
  134. package/src/store/mapping.ts +74 -73
  135. package/src/store/persisted.ts +62 -61
  136. package/src/store/types.ts +92 -94
  137. package/src/store/watch.ts +53 -52
  138. package/src/storybook/index.ts +479 -0
  139. package/src/view/evaluate.ts +290 -290
  140. package/dist/batch-x7b2eZST.js +0 -13
  141. package/dist/batch-x7b2eZST.js.map +0 -1
  142. package/dist/component.es.mjs.map +0 -1
  143. package/dist/core-BhpuvPhy.js +0 -170
  144. package/dist/core-BhpuvPhy.js.map +0 -1
  145. package/dist/core.es.mjs.map +0 -1
  146. package/dist/full.es.mjs.map +0 -1
  147. package/dist/index.es.mjs.map +0 -1
  148. package/dist/motion.es.mjs.map +0 -1
  149. package/dist/persisted-DHoi3uEs.js +0 -278
  150. package/dist/persisted-DHoi3uEs.js.map +0 -1
  151. package/dist/platform.es.mjs.map +0 -1
  152. package/dist/reactive.es.mjs.map +0 -1
  153. package/dist/router.es.mjs.map +0 -1
  154. package/dist/sanitize-Cxvxa-DX.js +0 -283
  155. package/dist/sanitize-Cxvxa-DX.js.map +0 -1
  156. package/dist/security.es.mjs.map +0 -1
  157. package/dist/store.es.mjs.map +0 -1
  158. package/dist/type-guards-BdKlYYlS.js +0 -32
  159. package/dist/type-guards-BdKlYYlS.js.map +0 -1
  160. package/dist/untrack-DNnnqdlR.js +0 -6
  161. package/dist/untrack-DNnnqdlR.js.map +0 -1
  162. package/dist/view.es.mjs.map +0 -1
  163. package/dist/watch-DXXv3iAI.js +0 -58
  164. package/dist/watch-DXXv3iAI.js.map +0 -1
@@ -1,150 +1,150 @@
1
- /**
2
- * Spring physics helpers.
3
- *
4
- * @module bquery/motion
5
- */
6
-
7
- import type { Spring, SpringConfig } from './types';
8
-
9
- /**
10
- * Default spring configuration values.
11
- */
12
- const DEFAULT_SPRING_CONFIG: Required<SpringConfig> = {
13
- stiffness: 100,
14
- damping: 10,
15
- mass: 1,
16
- precision: 0.01,
17
- };
18
-
19
- /**
20
- * Create a spring-based animation for smooth, physics-based motion.
21
- *
22
- * Uses variable frame rate timing based on `requestAnimationFrame` timestamps
23
- * to ensure consistent animation speed across different devices and frame rates.
24
- * Large time deltas (e.g., from tab backgrounding) are clamped to maintain
25
- * simulation stability.
26
- *
27
- * @param initialValue - Starting value for the spring
28
- * @param config - Spring physics configuration
29
- * @returns Spring instance for controlling the animation
30
- *
31
- * @example
32
- * ```ts
33
- * const x = spring(0, { stiffness: 120, damping: 14 });
34
- * x.onChange((value) => {
35
- * element.style.transform = `translateX(${value}px)`;
36
- * });
37
- * await x.to(100);
38
- * ```
39
- */
40
- export const spring = (initialValue: number, config: SpringConfig = {}): Spring => {
41
- const { stiffness, damping, mass, precision } = {
42
- ...DEFAULT_SPRING_CONFIG,
43
- ...config,
44
- };
45
-
46
- let current = initialValue;
47
- let velocity = 0;
48
- let target = initialValue;
49
- let animationFrame: number | null = null;
50
- let resolvePromise: (() => void) | null = null;
51
- let lastTime: number | null = null;
52
- const listeners = new Set<(value: number) => void>();
53
-
54
- const notifyListeners = () => {
55
- for (const listener of listeners) {
56
- listener(current);
57
- }
58
- };
59
-
60
- const step = (timestamp: number) => {
61
- // Calculate time delta (in seconds) from last frame
62
- // If this is the first frame, use a sensible default (1/60s)
63
- // This ensures the animation speed is independent of frame rate
64
- const deltaTime = lastTime !== null ? (timestamp - lastTime) / 1000 : 1 / 60;
65
- // Clamp large deltas to prevent instability (e.g. tab backgrounding)
66
- // Maximum delta of 1/30s (~33ms) keeps simulation stable
67
- const clampedDelta = Math.min(deltaTime, 1 / 30);
68
- lastTime = timestamp;
69
-
70
- // Spring physics calculation
71
- const displacement = current - target;
72
- const springForce = -stiffness * displacement;
73
- const dampingForce = -damping * velocity;
74
- const acceleration = (springForce + dampingForce) / mass;
75
-
76
- velocity += acceleration * clampedDelta;
77
- current += velocity * clampedDelta;
78
-
79
- notifyListeners();
80
-
81
- // Check if spring has settled
82
- if (Math.abs(velocity) < precision && Math.abs(displacement) < precision) {
83
- current = target;
84
- velocity = 0;
85
- animationFrame = null;
86
- notifyListeners();
87
- resolvePromise?.();
88
- resolvePromise = null;
89
- return;
90
- }
91
-
92
- animationFrame = requestAnimationFrame(step);
93
- };
94
-
95
- return {
96
- to(newTarget: number): Promise<void> {
97
- target = newTarget;
98
-
99
- if (animationFrame !== null) {
100
- cancelAnimationFrame(animationFrame);
101
- }
102
-
103
- // Resolve any pending promise from a previous to() call
104
- // This ensures all returned promises eventually settle
105
- resolvePromise?.();
106
-
107
- // Reset lastTime to ensure clean start for new animation
108
- lastTime = null;
109
-
110
- return new Promise((resolve) => {
111
- resolvePromise = resolve;
112
- animationFrame = requestAnimationFrame(step);
113
- });
114
- },
115
-
116
- current(): number {
117
- return current;
118
- },
119
-
120
- stop(): void {
121
- if (animationFrame !== null) {
122
- cancelAnimationFrame(animationFrame);
123
- animationFrame = null;
124
- }
125
- velocity = 0;
126
- lastTime = null;
127
- resolvePromise?.();
128
- resolvePromise = null;
129
- },
130
-
131
- onChange(callback: (value: number) => void): () => void {
132
- listeners.add(callback);
133
- return () => listeners.delete(callback);
134
- },
135
- };
136
- };
137
-
138
- /**
139
- * Preset spring configurations for common use cases.
140
- */
141
- export const springPresets = {
142
- /** Gentle, slow-settling spring */
143
- gentle: { stiffness: 80, damping: 15 } as SpringConfig,
144
- /** Responsive, snappy spring */
145
- snappy: { stiffness: 200, damping: 20 } as SpringConfig,
146
- /** Bouncy, playful spring */
147
- bouncy: { stiffness: 300, damping: 8 } as SpringConfig,
148
- /** Stiff, quick spring with minimal overshoot */
149
- stiff: { stiffness: 400, damping: 30 } as SpringConfig,
150
- };
1
+ /**
2
+ * Spring physics helpers.
3
+ *
4
+ * @module bquery/motion
5
+ */
6
+
7
+ import type { Spring, SpringConfig } from './types';
8
+
9
+ /**
10
+ * Default spring configuration values.
11
+ */
12
+ const DEFAULT_SPRING_CONFIG: Required<SpringConfig> = {
13
+ stiffness: 100,
14
+ damping: 10,
15
+ mass: 1,
16
+ precision: 0.01,
17
+ };
18
+
19
+ /**
20
+ * Create a spring-based animation for smooth, physics-based motion.
21
+ *
22
+ * Uses variable frame rate timing based on `requestAnimationFrame` timestamps
23
+ * to ensure consistent animation speed across different devices and frame rates.
24
+ * Large time deltas (e.g., from tab backgrounding) are clamped to maintain
25
+ * simulation stability.
26
+ *
27
+ * @param initialValue - Starting value for the spring
28
+ * @param config - Spring physics configuration
29
+ * @returns Spring instance for controlling the animation
30
+ *
31
+ * @example
32
+ * ```ts
33
+ * const x = spring(0, { stiffness: 120, damping: 14 });
34
+ * x.onChange((value) => {
35
+ * element.style.transform = `translateX(${value}px)`;
36
+ * });
37
+ * await x.to(100);
38
+ * ```
39
+ */
40
+ export const spring = (initialValue: number, config: SpringConfig = {}): Spring => {
41
+ const { stiffness, damping, mass, precision } = {
42
+ ...DEFAULT_SPRING_CONFIG,
43
+ ...config,
44
+ };
45
+
46
+ let current = initialValue;
47
+ let velocity = 0;
48
+ let target = initialValue;
49
+ let animationFrame: number | null = null;
50
+ let resolvePromise: (() => void) | null = null;
51
+ let lastTime: number | null = null;
52
+ const listeners = new Set<(value: number) => void>();
53
+
54
+ const notifyListeners = () => {
55
+ for (const listener of listeners) {
56
+ listener(current);
57
+ }
58
+ };
59
+
60
+ const step = (timestamp: number) => {
61
+ // Calculate time delta (in seconds) from last frame
62
+ // If this is the first frame, use a sensible default (1/60s)
63
+ // This ensures the animation speed is independent of frame rate
64
+ const deltaTime = lastTime !== null ? (timestamp - lastTime) / 1000 : 1 / 60;
65
+ // Clamp large deltas to prevent instability (e.g. tab backgrounding)
66
+ // Maximum delta of 1/30s (~33ms) keeps simulation stable
67
+ const clampedDelta = Math.min(deltaTime, 1 / 30);
68
+ lastTime = timestamp;
69
+
70
+ // Spring physics calculation
71
+ const displacement = current - target;
72
+ const springForce = -stiffness * displacement;
73
+ const dampingForce = -damping * velocity;
74
+ const acceleration = (springForce + dampingForce) / mass;
75
+
76
+ velocity += acceleration * clampedDelta;
77
+ current += velocity * clampedDelta;
78
+
79
+ notifyListeners();
80
+
81
+ // Check if spring has settled
82
+ if (Math.abs(velocity) < precision && Math.abs(displacement) < precision) {
83
+ current = target;
84
+ velocity = 0;
85
+ animationFrame = null;
86
+ notifyListeners();
87
+ resolvePromise?.();
88
+ resolvePromise = null;
89
+ return;
90
+ }
91
+
92
+ animationFrame = requestAnimationFrame(step);
93
+ };
94
+
95
+ return {
96
+ to(newTarget: number): Promise<void> {
97
+ target = newTarget;
98
+
99
+ if (animationFrame !== null) {
100
+ cancelAnimationFrame(animationFrame);
101
+ }
102
+
103
+ // Resolve any pending promise from a previous to() call
104
+ // This ensures all returned promises eventually settle
105
+ resolvePromise?.();
106
+
107
+ // Reset lastTime to ensure clean start for new animation
108
+ lastTime = null;
109
+
110
+ return new Promise((resolve) => {
111
+ resolvePromise = resolve;
112
+ animationFrame = requestAnimationFrame(step);
113
+ });
114
+ },
115
+
116
+ current(): number {
117
+ return current;
118
+ },
119
+
120
+ stop(): void {
121
+ if (animationFrame !== null) {
122
+ cancelAnimationFrame(animationFrame);
123
+ animationFrame = null;
124
+ }
125
+ velocity = 0;
126
+ lastTime = null;
127
+ resolvePromise?.();
128
+ resolvePromise = null;
129
+ },
130
+
131
+ onChange(callback: (value: number) => void): () => void {
132
+ listeners.add(callback);
133
+ return () => listeners.delete(callback);
134
+ },
135
+ };
136
+ };
137
+
138
+ /**
139
+ * Preset spring configurations for common use cases.
140
+ */
141
+ export const springPresets = {
142
+ /** Gentle, slow-settling spring */
143
+ gentle: { stiffness: 80, damping: 15 } as SpringConfig,
144
+ /** Responsive, snappy spring */
145
+ snappy: { stiffness: 200, damping: 20 } as SpringConfig,
146
+ /** Bouncy, playful spring */
147
+ bouncy: { stiffness: 300, damping: 8 } as SpringConfig,
148
+ /** Stiff, quick spring with minimal overshoot */
149
+ stiff: { stiffness: 400, damping: 30 } as SpringConfig,
150
+ };