@bquery/bquery 1.2.0 → 1.4.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.
- package/README.md +127 -27
- package/dist/batch-x7b2eZST.js +13 -0
- package/dist/batch-x7b2eZST.js.map +1 -0
- package/dist/component/component.d.ts +69 -0
- package/dist/component/component.d.ts.map +1 -0
- package/dist/component/html.d.ts +35 -0
- package/dist/component/html.d.ts.map +1 -0
- package/dist/component/index.d.ts +3 -126
- package/dist/component/index.d.ts.map +1 -1
- package/dist/component/props.d.ts +18 -0
- package/dist/component/props.d.ts.map +1 -0
- package/dist/component/types.d.ts +77 -0
- package/dist/component/types.d.ts.map +1 -0
- package/dist/component.es.mjs +90 -59
- package/dist/component.es.mjs.map +1 -1
- package/dist/core/collection.d.ts +55 -3
- package/dist/core/collection.d.ts.map +1 -1
- package/dist/core/dom.d.ts +6 -0
- package/dist/core/dom.d.ts.map +1 -0
- package/dist/core/element.d.ts +31 -4
- package/dist/core/element.d.ts.map +1 -1
- package/dist/core/index.d.ts +2 -0
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/utils/array.d.ts +74 -0
- package/dist/core/utils/array.d.ts.map +1 -0
- package/dist/core/utils/function.d.ts +87 -0
- package/dist/core/utils/function.d.ts.map +1 -0
- package/dist/core/utils/index.d.ts +70 -0
- package/dist/core/utils/index.d.ts.map +1 -0
- package/dist/core/utils/misc.d.ts +63 -0
- package/dist/core/utils/misc.d.ts.map +1 -0
- package/dist/core/utils/number.d.ts +65 -0
- package/dist/core/utils/number.d.ts.map +1 -0
- package/dist/core/utils/object.d.ts +133 -0
- package/dist/core/utils/object.d.ts.map +1 -0
- package/dist/core/utils/string.d.ts +80 -0
- package/dist/core/utils/string.d.ts.map +1 -0
- package/dist/core/utils/type-guards.d.ts +79 -0
- package/dist/core/utils/type-guards.d.ts.map +1 -0
- package/dist/core-BhpuvPhy.js +170 -0
- package/dist/core-BhpuvPhy.js.map +1 -0
- package/dist/core.es.mjs +495 -489
- package/dist/core.es.mjs.map +1 -1
- package/dist/full.d.ts +2 -2
- package/dist/full.d.ts.map +1 -1
- package/dist/full.es.mjs +87 -64
- package/dist/full.es.mjs.map +1 -1
- package/dist/full.iife.js +2 -2
- package/dist/full.iife.js.map +1 -1
- package/dist/full.umd.js +2 -2
- package/dist/full.umd.js.map +1 -1
- package/dist/index.es.mjs +138 -68
- package/dist/index.es.mjs.map +1 -1
- package/dist/motion/animate.d.ts +25 -0
- package/dist/motion/animate.d.ts.map +1 -0
- package/dist/motion/easing.d.ts +30 -0
- package/dist/motion/easing.d.ts.map +1 -0
- package/dist/motion/flip.d.ts +55 -0
- package/dist/motion/flip.d.ts.map +1 -0
- package/dist/motion/index.d.ts +11 -138
- package/dist/motion/index.d.ts.map +1 -1
- package/dist/motion/keyframes.d.ts +21 -0
- package/dist/motion/keyframes.d.ts.map +1 -0
- package/dist/motion/reduced-motion.d.ts +12 -0
- package/dist/motion/reduced-motion.d.ts.map +1 -0
- package/dist/motion/scroll.d.ts +15 -0
- package/dist/motion/scroll.d.ts.map +1 -0
- package/dist/motion/spring.d.ts +42 -0
- package/dist/motion/spring.d.ts.map +1 -0
- package/dist/motion/stagger.d.ts +22 -0
- package/dist/motion/stagger.d.ts.map +1 -0
- package/dist/motion/timeline.d.ts +21 -0
- package/dist/motion/timeline.d.ts.map +1 -0
- package/dist/motion/transition.d.ts +22 -0
- package/dist/motion/transition.d.ts.map +1 -0
- package/dist/motion/types.d.ts +182 -0
- package/dist/motion/types.d.ts.map +1 -0
- package/dist/motion.es.mjs +320 -61
- package/dist/motion.es.mjs.map +1 -1
- package/dist/persisted-DHoi3uEs.js +278 -0
- package/dist/persisted-DHoi3uEs.js.map +1 -0
- package/dist/platform/storage.d.ts.map +1 -1
- package/dist/platform.es.mjs +12 -7
- package/dist/platform.es.mjs.map +1 -1
- package/dist/reactive/batch.d.ts +13 -0
- package/dist/reactive/batch.d.ts.map +1 -0
- package/dist/reactive/computed.d.ts +50 -0
- package/dist/reactive/computed.d.ts.map +1 -0
- package/dist/reactive/core.d.ts +72 -0
- package/dist/reactive/core.d.ts.map +1 -0
- package/dist/reactive/effect.d.ts +15 -0
- package/dist/reactive/effect.d.ts.map +1 -0
- package/dist/reactive/index.d.ts +2 -2
- package/dist/reactive/index.d.ts.map +1 -1
- package/dist/reactive/internals.d.ts +42 -0
- package/dist/reactive/internals.d.ts.map +1 -0
- package/dist/reactive/linked.d.ts +36 -0
- package/dist/reactive/linked.d.ts.map +1 -0
- package/dist/reactive/persisted.d.ts +14 -0
- package/dist/reactive/persisted.d.ts.map +1 -0
- package/dist/reactive/readonly.d.ts +26 -0
- package/dist/reactive/readonly.d.ts.map +1 -0
- package/dist/reactive/signal.d.ts +13 -312
- package/dist/reactive/signal.d.ts.map +1 -1
- package/dist/reactive/type-guards.d.ts +20 -0
- package/dist/reactive/type-guards.d.ts.map +1 -0
- package/dist/reactive/untrack.d.ts +29 -0
- package/dist/reactive/untrack.d.ts.map +1 -0
- package/dist/reactive/watch.d.ts +42 -0
- package/dist/reactive/watch.d.ts.map +1 -0
- package/dist/reactive.es.mjs +30 -163
- package/dist/reactive.es.mjs.map +1 -1
- package/dist/router/index.d.ts +6 -252
- package/dist/router/index.d.ts.map +1 -1
- package/dist/router/links.d.ts +44 -0
- package/dist/router/links.d.ts.map +1 -0
- package/dist/router/match.d.ts +20 -0
- package/dist/router/match.d.ts.map +1 -0
- package/dist/router/navigation.d.ts +45 -0
- package/dist/router/navigation.d.ts.map +1 -0
- package/dist/router/query.d.ts +16 -0
- package/dist/router/query.d.ts.map +1 -0
- package/dist/router/router.d.ts +34 -0
- package/dist/router/router.d.ts.map +1 -0
- package/dist/router/state.d.ts +27 -0
- package/dist/router/state.d.ts.map +1 -0
- package/dist/router/types.d.ts +88 -0
- package/dist/router/types.d.ts.map +1 -0
- package/dist/router/utils.d.ts +65 -0
- package/dist/router/utils.d.ts.map +1 -0
- package/dist/router.es.mjs +168 -132
- package/dist/router.es.mjs.map +1 -1
- package/dist/sanitize-Cxvxa-DX.js +283 -0
- package/dist/sanitize-Cxvxa-DX.js.map +1 -0
- package/dist/security/constants.d.ts +42 -0
- package/dist/security/constants.d.ts.map +1 -0
- package/dist/security/csp.d.ts +24 -0
- package/dist/security/csp.d.ts.map +1 -0
- package/dist/security/index.d.ts +4 -2
- package/dist/security/index.d.ts.map +1 -1
- package/dist/security/sanitize-core.d.ts +13 -0
- package/dist/security/sanitize-core.d.ts.map +1 -0
- package/dist/security/sanitize.d.ts +5 -57
- package/dist/security/sanitize.d.ts.map +1 -1
- package/dist/security/trusted-types.d.ts +25 -0
- package/dist/security/trusted-types.d.ts.map +1 -0
- package/dist/security/types.d.ts +36 -0
- package/dist/security/types.d.ts.map +1 -0
- package/dist/security.es.mjs +50 -277
- package/dist/security.es.mjs.map +1 -1
- package/dist/store/create-store.d.ts +15 -0
- package/dist/store/create-store.d.ts.map +1 -0
- package/dist/store/define-store.d.ts +28 -0
- package/dist/store/define-store.d.ts.map +1 -0
- package/dist/store/devtools.d.ts +22 -0
- package/dist/store/devtools.d.ts.map +1 -0
- package/dist/store/index.d.ts +10 -286
- package/dist/store/index.d.ts.map +1 -1
- package/dist/store/mapping.d.ts +28 -0
- package/dist/store/mapping.d.ts.map +1 -0
- package/dist/store/persisted.d.ts +13 -0
- package/dist/store/persisted.d.ts.map +1 -0
- package/dist/store/plugins.d.ts +13 -0
- package/dist/store/plugins.d.ts.map +1 -0
- package/dist/store/registry.d.ts +28 -0
- package/dist/store/registry.d.ts.map +1 -0
- package/dist/store/types.d.ts +71 -0
- package/dist/store/types.d.ts.map +1 -0
- package/dist/store/utils.d.ts +28 -0
- package/dist/store/utils.d.ts.map +1 -0
- package/dist/store/watch.d.ts +23 -0
- package/dist/store/watch.d.ts.map +1 -0
- package/dist/store.es.mjs +22 -224
- package/dist/store.es.mjs.map +1 -1
- package/dist/type-guards-BdKlYYlS.js +32 -0
- package/dist/type-guards-BdKlYYlS.js.map +1 -0
- package/dist/untrack-DNnnqdlR.js +6 -0
- package/dist/untrack-DNnnqdlR.js.map +1 -0
- package/dist/view/directives/bind.d.ts +7 -0
- package/dist/view/directives/bind.d.ts.map +1 -0
- package/dist/view/directives/class.d.ts +8 -0
- package/dist/view/directives/class.d.ts.map +1 -0
- package/dist/view/directives/for.d.ts +23 -0
- package/dist/view/directives/for.d.ts.map +1 -0
- package/dist/view/directives/html.d.ts +7 -0
- package/dist/view/directives/html.d.ts.map +1 -0
- package/dist/view/directives/if.d.ts +7 -0
- package/dist/view/directives/if.d.ts.map +1 -0
- package/dist/view/directives/index.d.ts +12 -0
- package/dist/view/directives/index.d.ts.map +1 -0
- package/dist/view/directives/model.d.ts +7 -0
- package/dist/view/directives/model.d.ts.map +1 -0
- package/dist/view/directives/on.d.ts +7 -0
- package/dist/view/directives/on.d.ts.map +1 -0
- package/dist/view/directives/ref.d.ts +7 -0
- package/dist/view/directives/ref.d.ts.map +1 -0
- package/dist/view/directives/show.d.ts +7 -0
- package/dist/view/directives/show.d.ts.map +1 -0
- package/dist/view/directives/style.d.ts +7 -0
- package/dist/view/directives/style.d.ts.map +1 -0
- package/dist/view/directives/text.d.ts +7 -0
- package/dist/view/directives/text.d.ts.map +1 -0
- package/dist/view/evaluate.d.ts +43 -0
- package/dist/view/evaluate.d.ts.map +1 -0
- package/dist/view/index.d.ts +3 -93
- package/dist/view/index.d.ts.map +1 -1
- package/dist/view/mount.d.ts +69 -0
- package/dist/view/mount.d.ts.map +1 -0
- package/dist/view/process.d.ts +26 -0
- package/dist/view/process.d.ts.map +1 -0
- package/dist/view/types.d.ts +36 -0
- package/dist/view/types.d.ts.map +1 -0
- package/dist/view.es.mjs +358 -251
- package/dist/view.es.mjs.map +1 -1
- package/dist/watch-DXXv3iAI.js +58 -0
- package/dist/watch-DXXv3iAI.js.map +1 -0
- package/package.json +14 -14
- package/src/component/component.ts +289 -0
- package/src/component/html.ts +53 -0
- package/src/component/index.ts +40 -414
- package/src/component/props.ts +116 -0
- package/src/component/types.ts +85 -0
- package/src/core/collection.ts +181 -7
- package/src/core/dom.ts +38 -0
- package/src/core/element.ts +59 -25
- package/src/core/index.ts +48 -4
- package/src/core/utils/array.ts +102 -0
- package/src/core/utils/function.ts +151 -0
- package/src/core/utils/index.ts +83 -0
- package/src/core/utils/misc.ts +82 -0
- package/src/core/utils/number.ts +78 -0
- package/src/core/utils/object.ts +206 -0
- package/src/core/utils/string.ts +112 -0
- package/src/core/utils/type-guards.ts +112 -0
- package/src/full.ts +187 -150
- package/src/index.ts +36 -36
- package/src/motion/animate.ts +113 -0
- package/src/motion/easing.ts +40 -0
- package/src/motion/flip.ts +176 -0
- package/src/motion/index.ts +41 -358
- package/src/motion/keyframes.ts +46 -0
- package/src/motion/reduced-motion.ts +17 -0
- package/src/motion/scroll.ts +57 -0
- package/src/motion/spring.ts +150 -0
- package/src/motion/stagger.ts +43 -0
- package/src/motion/timeline.ts +246 -0
- package/src/motion/transition.ts +51 -0
- package/src/motion/types.ts +198 -0
- package/src/platform/storage.ts +215 -208
- package/src/reactive/batch.ts +22 -0
- package/src/reactive/computed.ts +92 -0
- package/src/reactive/core.ts +114 -0
- package/src/reactive/effect.ts +54 -0
- package/src/reactive/index.ts +23 -22
- package/src/reactive/internals.ts +122 -0
- package/src/reactive/linked.ts +56 -0
- package/src/reactive/persisted.ts +74 -0
- package/src/reactive/readonly.ts +35 -0
- package/src/reactive/signal.ts +20 -520
- package/src/reactive/type-guards.ts +22 -0
- package/src/reactive/untrack.ts +31 -0
- package/src/reactive/watch.ts +73 -0
- package/src/router/index.ts +41 -718
- package/src/router/links.ts +130 -0
- package/src/router/match.ts +106 -0
- package/src/router/navigation.ts +71 -0
- package/src/router/query.ts +35 -0
- package/src/router/router.ts +211 -0
- package/src/router/state.ts +46 -0
- package/src/router/types.ts +93 -0
- package/src/router/utils.ts +116 -0
- package/src/security/constants.ts +209 -0
- package/src/security/csp.ts +77 -0
- package/src/security/index.ts +4 -12
- package/src/security/sanitize-core.ts +364 -0
- package/src/security/sanitize.ts +66 -625
- package/src/security/trusted-types.ts +69 -0
- package/src/security/types.ts +40 -0
- package/src/store/create-store.ts +329 -0
- package/src/store/define-store.ts +48 -0
- package/src/store/devtools.ts +45 -0
- package/src/store/index.ts +22 -848
- package/src/store/mapping.ts +73 -0
- package/src/store/persisted.ts +61 -0
- package/src/store/plugins.ts +32 -0
- package/src/store/registry.ts +51 -0
- package/src/store/types.ts +94 -0
- package/src/store/utils.ts +141 -0
- package/src/store/watch.ts +52 -0
- package/src/view/directives/bind.ts +23 -0
- package/src/view/directives/class.ts +70 -0
- package/src/view/directives/for.ts +275 -0
- package/src/view/directives/html.ts +19 -0
- package/src/view/directives/if.ts +30 -0
- package/src/view/directives/index.ts +11 -0
- package/src/view/directives/model.ts +56 -0
- package/src/view/directives/on.ts +41 -0
- package/src/view/directives/ref.ts +41 -0
- package/src/view/directives/show.ts +26 -0
- package/src/view/directives/style.ts +47 -0
- package/src/view/directives/text.ts +15 -0
- package/src/view/evaluate.ts +290 -0
- package/src/view/index.ts +112 -1041
- package/src/view/mount.ts +200 -0
- package/src/view/process.ts +92 -0
- package/src/view/types.ts +44 -0
- package/dist/core/utils.d.ts +0 -313
- package/dist/core/utils.d.ts.map +0 -1
- package/src/core/utils.ts +0 -444
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type guard helpers.
|
|
3
|
+
*
|
|
4
|
+
* @module bquery/core/utils/type-guards
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Checks if a value is a DOM Element.
|
|
9
|
+
*
|
|
10
|
+
* @param value - The value to check
|
|
11
|
+
* @returns True if the value is an Element
|
|
12
|
+
*/
|
|
13
|
+
export function isElement(value: unknown): value is Element {
|
|
14
|
+
return typeof Element !== 'undefined' && value instanceof Element;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Checks if a value is a BQueryCollection-like object.
|
|
19
|
+
*
|
|
20
|
+
* @param value - The value to check
|
|
21
|
+
* @returns True if the value has an elements array property
|
|
22
|
+
*/
|
|
23
|
+
export function isCollection(value: unknown): value is { elements: Element[] } {
|
|
24
|
+
return Boolean(value && typeof value === 'object' && 'elements' in (value as object));
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Checks if a value is a function.
|
|
29
|
+
*
|
|
30
|
+
* @param value - The value to check
|
|
31
|
+
* @returns True if the value is a function
|
|
32
|
+
*/
|
|
33
|
+
export function isFunction(value: unknown): value is (...args: unknown[]) => unknown {
|
|
34
|
+
return typeof value === 'function';
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Checks if a value is a string.
|
|
39
|
+
*
|
|
40
|
+
* @param value - The value to check
|
|
41
|
+
* @returns True if the value is a string
|
|
42
|
+
*/
|
|
43
|
+
export function isString(value: unknown): value is string {
|
|
44
|
+
return typeof value === 'string';
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Checks if a value is a number (excluding NaN).
|
|
49
|
+
*
|
|
50
|
+
* @param value - The value to check
|
|
51
|
+
* @returns True if the value is a valid number
|
|
52
|
+
*/
|
|
53
|
+
export function isNumber(value: unknown): value is number {
|
|
54
|
+
return typeof value === 'number' && !Number.isNaN(value);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Checks if a value is a boolean.
|
|
59
|
+
*
|
|
60
|
+
* @param value - The value to check
|
|
61
|
+
* @returns True if the value is a boolean
|
|
62
|
+
*/
|
|
63
|
+
export function isBoolean(value: unknown): value is boolean {
|
|
64
|
+
return typeof value === 'boolean';
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Checks if a value is an array.
|
|
69
|
+
*
|
|
70
|
+
* @template T - The type of array elements
|
|
71
|
+
* @param value - The value to check
|
|
72
|
+
* @returns True if the value is an array
|
|
73
|
+
*/
|
|
74
|
+
export function isArray<T = unknown>(value: unknown): value is T[] {
|
|
75
|
+
return Array.isArray(value);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* Checks if a value is a Date instance.
|
|
80
|
+
*
|
|
81
|
+
* @param value - The value to check
|
|
82
|
+
* @returns True if the value is a Date
|
|
83
|
+
*/
|
|
84
|
+
export function isDate(value: unknown): value is Date {
|
|
85
|
+
return value instanceof Date;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* Checks if a value is a Promise-like object.
|
|
90
|
+
*
|
|
91
|
+
* @param value - The value to check
|
|
92
|
+
* @returns True if the value is a Promise-like object
|
|
93
|
+
*/
|
|
94
|
+
export function isPromise<T = unknown>(value: unknown): value is Promise<T> {
|
|
95
|
+
return Boolean(
|
|
96
|
+
value &&
|
|
97
|
+
(value instanceof Promise ||
|
|
98
|
+
(typeof value === 'object' &&
|
|
99
|
+
'then' in (value as object) &&
|
|
100
|
+
typeof (value as { then?: unknown }).then === 'function'))
|
|
101
|
+
);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* Checks if a value is a non-null object.
|
|
106
|
+
*
|
|
107
|
+
* @param value - The value to check
|
|
108
|
+
* @returns True if the value is an object
|
|
109
|
+
*/
|
|
110
|
+
export function isObject(value: unknown): value is Record<string, unknown> {
|
|
111
|
+
return typeof value === 'object' && value !== null;
|
|
112
|
+
}
|
package/src/full.ts
CHANGED
|
@@ -1,150 +1,187 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* bQuery.js — Full Bundle
|
|
3
|
-
*
|
|
4
|
-
* This is the complete bundle containing all modules for CDN usage.
|
|
5
|
-
* Use this when you want all features without tree-shaking concerns.
|
|
6
|
-
*
|
|
7
|
-
* @module bquery/full
|
|
8
|
-
*
|
|
9
|
-
* @example CDN Usage (ES Modules)
|
|
10
|
-
* ```html
|
|
11
|
-
* <script type="module">
|
|
12
|
-
* import { $, signal, component } from 'https://unpkg.com/bquery@1/dist/full.es.mjs';
|
|
13
|
-
*
|
|
14
|
-
* const count = signal(0);
|
|
15
|
-
* $('#counter').text(count.value);
|
|
16
|
-
* </script>
|
|
17
|
-
* ```
|
|
18
|
-
*
|
|
19
|
-
* @example CDN Usage (UMD/Global)
|
|
20
|
-
* ```html
|
|
21
|
-
* <script src="https://unpkg.com/bquery@1/dist/full.umd.js"></script>
|
|
22
|
-
* <script>
|
|
23
|
-
* const { $, signal } = bQuery;
|
|
24
|
-
* const count = signal(0);
|
|
25
|
-
* </script>
|
|
26
|
-
* ```
|
|
27
|
-
*
|
|
28
|
-
* @example CDN Usage (IIFE)
|
|
29
|
-
* ```html
|
|
30
|
-
* <script src="https://unpkg.com/bquery@1/dist/full.iife.js"></script>
|
|
31
|
-
* <script>
|
|
32
|
-
* // bQuery is available as a global variable
|
|
33
|
-
* const { $, $$ } = bQuery;
|
|
34
|
-
* </script>
|
|
35
|
-
* ```
|
|
36
|
-
*/
|
|
37
|
-
|
|
38
|
-
// ============================================================================
|
|
39
|
-
// Core Module: Selectors, DOM operations, events, utilities
|
|
40
|
-
// ============================================================================
|
|
41
|
-
export { $, $$, BQueryCollection, BQueryElement, utils } from './core/index';
|
|
42
|
-
|
|
43
|
-
// ============================================================================
|
|
44
|
-
// Reactive Module: Signals, computed values, effects, batching
|
|
45
|
-
// ============================================================================
|
|
46
|
-
export {
|
|
47
|
-
Computed,
|
|
48
|
-
Signal,
|
|
49
|
-
batch,
|
|
50
|
-
computed,
|
|
51
|
-
effect,
|
|
52
|
-
isComputed,
|
|
53
|
-
isSignal,
|
|
54
|
-
persistedSignal,
|
|
55
|
-
readonly,
|
|
56
|
-
signal,
|
|
57
|
-
untrack,
|
|
58
|
-
watch,
|
|
59
|
-
} from './reactive/index';
|
|
60
|
-
export type { CleanupFn, Observer, ReadonlySignal } from './reactive/index';
|
|
61
|
-
|
|
62
|
-
// ============================================================================
|
|
63
|
-
// Component Module: Web Components helper with Shadow DOM
|
|
64
|
-
// ============================================================================
|
|
65
|
-
export { component, html, safeHtml } from './component/index';
|
|
66
|
-
export type { ComponentDefinition, PropDefinition } from './component/index';
|
|
67
|
-
|
|
68
|
-
// ============================================================================
|
|
69
|
-
// Motion Module: View transitions, FLIP animations, springs
|
|
70
|
-
// ============================================================================
|
|
71
|
-
export {
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
// ============================================================================
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
} from './
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
//
|
|
147
|
-
//
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
1
|
+
/**
|
|
2
|
+
* bQuery.js — Full Bundle
|
|
3
|
+
*
|
|
4
|
+
* This is the complete bundle containing all modules for CDN usage.
|
|
5
|
+
* Use this when you want all features without tree-shaking concerns.
|
|
6
|
+
*
|
|
7
|
+
* @module bquery/full
|
|
8
|
+
*
|
|
9
|
+
* @example CDN Usage (ES Modules)
|
|
10
|
+
* ```html
|
|
11
|
+
* <script type="module">
|
|
12
|
+
* import { $, signal, component } from 'https://unpkg.com/bquery@1/dist/full.es.mjs';
|
|
13
|
+
*
|
|
14
|
+
* const count = signal(0);
|
|
15
|
+
* $('#counter').text(count.value);
|
|
16
|
+
* </script>
|
|
17
|
+
* ```
|
|
18
|
+
*
|
|
19
|
+
* @example CDN Usage (UMD/Global)
|
|
20
|
+
* ```html
|
|
21
|
+
* <script src="https://unpkg.com/bquery@1/dist/full.umd.js"></script>
|
|
22
|
+
* <script>
|
|
23
|
+
* const { $, signal } = bQuery;
|
|
24
|
+
* const count = signal(0);
|
|
25
|
+
* </script>
|
|
26
|
+
* ```
|
|
27
|
+
*
|
|
28
|
+
* @example CDN Usage (IIFE)
|
|
29
|
+
* ```html
|
|
30
|
+
* <script src="https://unpkg.com/bquery@1/dist/full.iife.js"></script>
|
|
31
|
+
* <script>
|
|
32
|
+
* // bQuery is available as a global variable
|
|
33
|
+
* const { $, $$ } = bQuery;
|
|
34
|
+
* </script>
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
37
|
+
|
|
38
|
+
// ============================================================================
|
|
39
|
+
// Core Module: Selectors, DOM operations, events, utilities
|
|
40
|
+
// ============================================================================
|
|
41
|
+
export { $, $$, BQueryCollection, BQueryElement, utils } from './core/index';
|
|
42
|
+
|
|
43
|
+
// ============================================================================
|
|
44
|
+
// Reactive Module: Signals, computed values, effects, batching
|
|
45
|
+
// ============================================================================
|
|
46
|
+
export {
|
|
47
|
+
Computed,
|
|
48
|
+
Signal,
|
|
49
|
+
batch,
|
|
50
|
+
computed,
|
|
51
|
+
effect,
|
|
52
|
+
isComputed,
|
|
53
|
+
isSignal,
|
|
54
|
+
persistedSignal,
|
|
55
|
+
readonly,
|
|
56
|
+
signal,
|
|
57
|
+
untrack,
|
|
58
|
+
watch,
|
|
59
|
+
} from './reactive/index';
|
|
60
|
+
export type { CleanupFn, Observer, ReadonlySignal } from './reactive/index';
|
|
61
|
+
|
|
62
|
+
// ============================================================================
|
|
63
|
+
// Component Module: Web Components helper with Shadow DOM
|
|
64
|
+
// ============================================================================
|
|
65
|
+
export { component, html, safeHtml } from './component/index';
|
|
66
|
+
export type { ComponentDefinition, PropDefinition } from './component/index';
|
|
67
|
+
|
|
68
|
+
// ============================================================================
|
|
69
|
+
// Motion Module: View transitions, FLIP animations, springs
|
|
70
|
+
// ============================================================================
|
|
71
|
+
export {
|
|
72
|
+
animate,
|
|
73
|
+
capturePosition,
|
|
74
|
+
easeInCubic,
|
|
75
|
+
easeInOutCubic,
|
|
76
|
+
easeInOutQuad,
|
|
77
|
+
easeInQuad,
|
|
78
|
+
easeOutBack,
|
|
79
|
+
easeOutCubic,
|
|
80
|
+
easeOutExpo,
|
|
81
|
+
easeOutQuad,
|
|
82
|
+
easingPresets,
|
|
83
|
+
flip,
|
|
84
|
+
flipElements,
|
|
85
|
+
flipList,
|
|
86
|
+
keyframePresets,
|
|
87
|
+
linear,
|
|
88
|
+
prefersReducedMotion,
|
|
89
|
+
scrollAnimate,
|
|
90
|
+
sequence,
|
|
91
|
+
spring,
|
|
92
|
+
springPresets,
|
|
93
|
+
stagger,
|
|
94
|
+
timeline,
|
|
95
|
+
transition,
|
|
96
|
+
} from './motion/index';
|
|
97
|
+
export type {
|
|
98
|
+
AnimateOptions,
|
|
99
|
+
EasingFunction,
|
|
100
|
+
ElementBounds,
|
|
101
|
+
FlipGroupOptions,
|
|
102
|
+
FlipOptions,
|
|
103
|
+
ScrollAnimateCleanup,
|
|
104
|
+
ScrollAnimateOptions,
|
|
105
|
+
SequenceOptions,
|
|
106
|
+
SequenceStep,
|
|
107
|
+
Spring,
|
|
108
|
+
SpringConfig,
|
|
109
|
+
StaggerFunction,
|
|
110
|
+
StaggerOptions,
|
|
111
|
+
TimelineConfig,
|
|
112
|
+
TimelineControls,
|
|
113
|
+
TimelineStep,
|
|
114
|
+
TransitionOptions,
|
|
115
|
+
} from './motion/index';
|
|
116
|
+
|
|
117
|
+
// ============================================================================
|
|
118
|
+
// Security Module: Sanitization, CSP compatibility, Trusted Types
|
|
119
|
+
// ============================================================================
|
|
120
|
+
export {
|
|
121
|
+
createTrustedHtml,
|
|
122
|
+
escapeHtml,
|
|
123
|
+
generateNonce,
|
|
124
|
+
getTrustedTypesPolicy,
|
|
125
|
+
hasCSPDirective,
|
|
126
|
+
isTrustedTypesSupported,
|
|
127
|
+
sanitize,
|
|
128
|
+
sanitizeHtml,
|
|
129
|
+
stripTags,
|
|
130
|
+
} from './security/index';
|
|
131
|
+
export type { SanitizeOptions } from './security/index';
|
|
132
|
+
|
|
133
|
+
// ============================================================================
|
|
134
|
+
// Platform Module: Storage, buckets, notifications, cache
|
|
135
|
+
// ============================================================================
|
|
136
|
+
export { buckets, cache, notifications, storage } from './platform/index';
|
|
137
|
+
export type {
|
|
138
|
+
Bucket,
|
|
139
|
+
CacheHandle,
|
|
140
|
+
IndexedDBOptions,
|
|
141
|
+
NotificationOptions,
|
|
142
|
+
StorageAdapter,
|
|
143
|
+
} from './platform/index';
|
|
144
|
+
|
|
145
|
+
// ============================================================================
|
|
146
|
+
// Router Module: SPA routing, navigation guards, lazy loading
|
|
147
|
+
// ============================================================================
|
|
148
|
+
export {
|
|
149
|
+
back,
|
|
150
|
+
createRouter,
|
|
151
|
+
currentRoute,
|
|
152
|
+
forward,
|
|
153
|
+
interceptLinks,
|
|
154
|
+
isActive,
|
|
155
|
+
isActiveSignal,
|
|
156
|
+
link,
|
|
157
|
+
navigate,
|
|
158
|
+
resolve,
|
|
159
|
+
} from './router/index';
|
|
160
|
+
export type {
|
|
161
|
+
NavigationGuard,
|
|
162
|
+
Route,
|
|
163
|
+
RouteDefinition,
|
|
164
|
+
Router,
|
|
165
|
+
RouterOptions,
|
|
166
|
+
} from './router/index';
|
|
167
|
+
|
|
168
|
+
// ============================================================================
|
|
169
|
+
// Store Module: Signal-based state management
|
|
170
|
+
// ============================================================================
|
|
171
|
+
export {
|
|
172
|
+
createPersistedStore,
|
|
173
|
+
createStore,
|
|
174
|
+
destroyStore,
|
|
175
|
+
getStore,
|
|
176
|
+
listStores,
|
|
177
|
+
mapActions,
|
|
178
|
+
mapState,
|
|
179
|
+
registerPlugin,
|
|
180
|
+
} from './store/index';
|
|
181
|
+
export type { StateFactory, Store, StoreDefinition, StorePlugin } from './store/index';
|
|
182
|
+
|
|
183
|
+
// ============================================================================
|
|
184
|
+
// View Module: Declarative DOM bindings without compiler
|
|
185
|
+
// ============================================================================
|
|
186
|
+
export { createTemplate, mount } from './view/index';
|
|
187
|
+
export type { BindingContext, MountOptions, View } from './view/index';
|
package/src/index.ts
CHANGED
|
@@ -1,36 +1,36 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* bQuery.js — The jQuery for the Modern Web Platform
|
|
3
|
-
*
|
|
4
|
-
* A zero-build, TypeScript-first library that bridges vanilla JavaScript
|
|
5
|
-
* and build-step frameworks with modern features.
|
|
6
|
-
*
|
|
7
|
-
* @module bquery
|
|
8
|
-
* @see https://github.com/bquery/bquery
|
|
9
|
-
*/
|
|
10
|
-
|
|
11
|
-
// Core module: selectors, DOM ops, events, utils
|
|
12
|
-
export * from './core/index';
|
|
13
|
-
|
|
14
|
-
// Reactive module: signals, computed, effects, binding
|
|
15
|
-
export * from './reactive/index';
|
|
16
|
-
|
|
17
|
-
// Component module: Web Components helper
|
|
18
|
-
export * from './component/index';
|
|
19
|
-
|
|
20
|
-
// Motion module: view transitions, FLIP, springs
|
|
21
|
-
export * from './motion/index';
|
|
22
|
-
|
|
23
|
-
// Security module: sanitizer, CSP, Trusted Types
|
|
24
|
-
export * from './security/index';
|
|
25
|
-
|
|
26
|
-
// Platform module: storage, buckets, notifications, cache
|
|
27
|
-
export * from './platform/index';
|
|
28
|
-
|
|
29
|
-
// Router module: SPA routing, navigation guards
|
|
30
|
-
export * from './router/index';
|
|
31
|
-
|
|
32
|
-
// Store module: state management with signals
|
|
33
|
-
export * from './store/index';
|
|
34
|
-
|
|
35
|
-
// View module: declarative DOM bindings
|
|
36
|
-
export * from './view/index';
|
|
1
|
+
/**
|
|
2
|
+
* bQuery.js — The jQuery for the Modern Web Platform
|
|
3
|
+
*
|
|
4
|
+
* A zero-build, TypeScript-first library that bridges vanilla JavaScript
|
|
5
|
+
* and build-step frameworks with modern features.
|
|
6
|
+
*
|
|
7
|
+
* @module bquery
|
|
8
|
+
* @see https://github.com/bquery/bquery
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
// Core module: selectors, DOM ops, events, utils
|
|
12
|
+
export * from './core/index';
|
|
13
|
+
|
|
14
|
+
// Reactive module: signals, computed, effects, binding
|
|
15
|
+
export * from './reactive/index';
|
|
16
|
+
|
|
17
|
+
// Component module: Web Components helper
|
|
18
|
+
export * from './component/index';
|
|
19
|
+
|
|
20
|
+
// Motion module: view transitions, FLIP, springs
|
|
21
|
+
export * from './motion/index';
|
|
22
|
+
|
|
23
|
+
// Security module: sanitizer, CSP, Trusted Types
|
|
24
|
+
export * from './security/index';
|
|
25
|
+
|
|
26
|
+
// Platform module: storage, buckets, notifications, cache
|
|
27
|
+
export * from './platform/index';
|
|
28
|
+
|
|
29
|
+
// Router module: SPA routing, navigation guards
|
|
30
|
+
export * from './router/index';
|
|
31
|
+
|
|
32
|
+
// Store module: state management with signals
|
|
33
|
+
export * from './store/index';
|
|
34
|
+
|
|
35
|
+
// View module: declarative DOM bindings
|
|
36
|
+
export * from './view/index';
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Web Animations helpers.
|
|
3
|
+
*
|
|
4
|
+
* @module bquery/motion
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { prefersReducedMotion } from './reduced-motion';
|
|
8
|
+
import type { AnimateOptions } from './types';
|
|
9
|
+
|
|
10
|
+
/** @internal */
|
|
11
|
+
const isStyleValue = (value: unknown): value is string | number =>
|
|
12
|
+
typeof value === 'string' || typeof value === 'number';
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Convert camelCase property names to kebab-case for CSS.
|
|
16
|
+
* @internal
|
|
17
|
+
*/
|
|
18
|
+
const toKebabCase = (str: string): string => {
|
|
19
|
+
return str.replace(/[A-Z]/g, (letter) => `-${letter.toLowerCase()}`);
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
/** @internal */
|
|
23
|
+
export const applyFinalKeyframeStyles = (
|
|
24
|
+
element: Element,
|
|
25
|
+
keyframes: Keyframe[] | PropertyIndexedKeyframes
|
|
26
|
+
): void => {
|
|
27
|
+
const htmlElement = element as HTMLElement;
|
|
28
|
+
const style = htmlElement.style;
|
|
29
|
+
|
|
30
|
+
if (Array.isArray(keyframes)) {
|
|
31
|
+
const last = keyframes[keyframes.length - 1];
|
|
32
|
+
if (!last) return;
|
|
33
|
+
for (const [prop, value] of Object.entries(last)) {
|
|
34
|
+
if (prop === 'offset' || prop === 'easing' || prop === 'composite') continue;
|
|
35
|
+
if (isStyleValue(value)) {
|
|
36
|
+
// Convert camelCase to kebab-case for CSS properties
|
|
37
|
+
const cssProp = prop.startsWith('--') ? prop : toKebabCase(prop);
|
|
38
|
+
style.setProperty(cssProp, String(value));
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
for (const [prop, value] of Object.entries(keyframes)) {
|
|
45
|
+
if (prop === 'offset' || prop === 'easing' || prop === 'composite') continue;
|
|
46
|
+
const finalValue = Array.isArray(value) ? value[value.length - 1] : value;
|
|
47
|
+
if (isStyleValue(finalValue)) {
|
|
48
|
+
// Convert camelCase to kebab-case for CSS properties
|
|
49
|
+
const cssProp = prop.startsWith('--') ? prop : toKebabCase(prop);
|
|
50
|
+
style.setProperty(cssProp, String(finalValue));
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Animate an element using the Web Animations API with reduced-motion fallback.
|
|
57
|
+
*
|
|
58
|
+
* @param element - Element to animate
|
|
59
|
+
* @param config - Animation configuration
|
|
60
|
+
* @returns Promise that resolves when animation completes
|
|
61
|
+
*
|
|
62
|
+
* @example
|
|
63
|
+
* ```ts
|
|
64
|
+
* await animate(element, {
|
|
65
|
+
* keyframes: [{ opacity: 0 }, { opacity: 1 }],
|
|
66
|
+
* options: { duration: 200, easing: 'ease-out' },
|
|
67
|
+
* });
|
|
68
|
+
* ```
|
|
69
|
+
*/
|
|
70
|
+
export const animate = (element: Element, config: AnimateOptions): Promise<void> => {
|
|
71
|
+
const { keyframes, options, commitStyles = true, respectReducedMotion = true, onFinish } = config;
|
|
72
|
+
|
|
73
|
+
if (respectReducedMotion && prefersReducedMotion()) {
|
|
74
|
+
if (commitStyles) {
|
|
75
|
+
applyFinalKeyframeStyles(element, keyframes);
|
|
76
|
+
}
|
|
77
|
+
onFinish?.();
|
|
78
|
+
return Promise.resolve();
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
const htmlElement = element as HTMLElement;
|
|
82
|
+
if (typeof htmlElement.animate !== 'function') {
|
|
83
|
+
if (commitStyles) {
|
|
84
|
+
applyFinalKeyframeStyles(element, keyframes);
|
|
85
|
+
}
|
|
86
|
+
onFinish?.();
|
|
87
|
+
return Promise.resolve();
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
return new Promise((resolve) => {
|
|
91
|
+
const animation = htmlElement.animate(keyframes, options);
|
|
92
|
+
let finalized = false;
|
|
93
|
+
const finalize = () => {
|
|
94
|
+
if (finalized) return;
|
|
95
|
+
finalized = true;
|
|
96
|
+
if (commitStyles) {
|
|
97
|
+
if (typeof animation.commitStyles === 'function') {
|
|
98
|
+
animation.commitStyles();
|
|
99
|
+
} else {
|
|
100
|
+
applyFinalKeyframeStyles(element, keyframes);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
animation.cancel();
|
|
104
|
+
onFinish?.();
|
|
105
|
+
resolve();
|
|
106
|
+
};
|
|
107
|
+
|
|
108
|
+
animation.onfinish = finalize;
|
|
109
|
+
if (animation.finished) {
|
|
110
|
+
animation.finished.then(finalize).catch(finalize);
|
|
111
|
+
}
|
|
112
|
+
});
|
|
113
|
+
};
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Easing helpers.
|
|
3
|
+
*
|
|
4
|
+
* @module bquery/motion
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import type { EasingFunction } from './types';
|
|
8
|
+
|
|
9
|
+
const clamp = (value: number) => Math.min(1, Math.max(0, value));
|
|
10
|
+
|
|
11
|
+
export const linear: EasingFunction = (t) => clamp(t);
|
|
12
|
+
export const easeInQuad: EasingFunction = (t) => clamp(t * t);
|
|
13
|
+
export const easeOutQuad: EasingFunction = (t) => clamp(1 - (1 - t) * (1 - t));
|
|
14
|
+
export const easeInOutQuad: EasingFunction = (t) =>
|
|
15
|
+
clamp(t < 0.5 ? 2 * t * t : 1 - Math.pow(-2 * t + 2, 2) / 2);
|
|
16
|
+
export const easeInCubic: EasingFunction = (t) => clamp(t * t * t);
|
|
17
|
+
export const easeOutCubic: EasingFunction = (t) => clamp(1 - Math.pow(1 - t, 3));
|
|
18
|
+
export const easeInOutCubic: EasingFunction = (t) =>
|
|
19
|
+
clamp(t < 0.5 ? 4 * t * t * t : 1 - Math.pow(-2 * t + 2, 3) / 2);
|
|
20
|
+
export const easeOutBack: EasingFunction = (t) => {
|
|
21
|
+
const c1 = 1.70158;
|
|
22
|
+
const c3 = c1 + 1;
|
|
23
|
+
return clamp(1 + c3 * Math.pow(t - 1, 3) + c1 * Math.pow(t - 1, 2));
|
|
24
|
+
};
|
|
25
|
+
export const easeOutExpo: EasingFunction = (t) => clamp(t === 1 ? 1 : 1 - Math.pow(2, -10 * t));
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Named easing presets.
|
|
29
|
+
*/
|
|
30
|
+
export const easingPresets = {
|
|
31
|
+
linear,
|
|
32
|
+
easeInQuad,
|
|
33
|
+
easeOutQuad,
|
|
34
|
+
easeInOutQuad,
|
|
35
|
+
easeInCubic,
|
|
36
|
+
easeOutCubic,
|
|
37
|
+
easeInOutCubic,
|
|
38
|
+
easeOutBack,
|
|
39
|
+
easeOutExpo,
|
|
40
|
+
};
|