This document reflects the current source under src/BQuery/wwwroot/src.
Primary sources:
src/BQuery/wwwroot/src/index.tssrc/BQuery/wwwroot/src/module/Viewport.tssrc/BQuery/wwwroot/src/module/HtmlElementHelper.tssrc/BQuery/wwwroot/src/module/DragHelper.tssrc/BQuery/wwwroot/src/module/eventHelper.tssrc/BQuery/wwwroot/src/module/domHelper.tssrc/BQuery/wwwroot/src/module/common.ts
When the script loads, it assigns window.bQuery.
Current version constant:
version = "4.0.0"
type ViewportNamespace = typeof import("./module/Viewport").default;
type DragNamespace = typeof import("./module/DragHelper");
type WindowEventsNamespace = typeof import("./module/eventHelper");
type DomHelperNamespace = typeof import("./module/domHelper");
type ElementExtensionsNamespace = Record<string, (...args: any[]) => any>;
interface WindowBQuery {
version: string;
viewport: ViewportNamespace;
drag: DragNamespace;
windowEvents: WindowEventsNamespace;
domHelper: DomHelperNamespace;
elementExtensions: ElementExtensionsNamespace;
navigator: {
getUserAgent(): string;
};
throttle(fn: Function, threshold?: number): (...args: any[]) => void;
debounce(fn: Function, wait?: number): (...args: any[]) => void;
}Only window.bQuery is assigned by the package at runtime.
From module/Viewport.ts.
| Method | Returns |
|---|---|
getWidth() |
number |
getHeight() |
number |
getWidthAndHeight() |
[number, number] |
getScrollWidth() |
number |
getScrollHeight() |
number |
getScrollWidthAndHeight() |
[number, number] |
getScrollLeft() |
number |
getScrollTop() |
number |
getScrollLeftAndTop() |
[number, number] |
getScrollDistToTop() |
number |
getScrollDistToBottom() |
number |
Notes:
- Width/height and scroll values are read from
document.documentElement. - Distance methods return rounded values.
From module/HtmlElementHelper.ts.
| Method | Returns | Notes |
|---|---|---|
getWidth(element, outer) |
number |
outer=true uses offsetWidth, else clientWidth. |
getHeight(element, outer) |
number |
outer=true uses offsetHeight, else clientHeight. |
getWidthAndHeight(element, outer) |
[number, number] |
|
getScrollWidth(element) |
number |
|
getScrollHeight(element) |
number |
|
getScrollWidthAndHeight(element) |
[number, number] |
|
getScrollLeft(element) |
number |
|
getScrollTop(element) |
number |
|
getScrollLeftAndTop(element) |
[number, number] |
|
getPositionInViewport(element) |
{ x: number; y: number; width: number; height: number } |
Uses getBoundingClientRect(). |
getElementLeftInDoc(element) |
number |
Walks offsetParent chain. |
getElementTopInDoc(element) |
number |
Walks offsetParent chain. |
getPositionInDoc(element) |
{ x: number; y: number; width: number; height: number } |
Returns zeros if element is null/undefined. |
focus(element) |
void |
Kept for compatibility. |
From module/DragHelper.ts.
interface DragOptions {
inViewport?: boolean; // default true
dragElement?: HTMLElement | string | null;
}| Method | Returns | Description |
|---|---|---|
| `bindDrag(dom: HTMLElement, options?: DragOptions | null)` | void |
| `addDraggable(trigger: HTMLElement | string | null, container: HTMLElement |
| `removeDraggable(trigger: HTMLElement | string)` | void |
| `resetDraggableElePosition(trigger: HTMLElement | string)` | void |
Behavior notes:
- Uses Pointer Events (
pointerdown,pointermove,pointerup,pointercancel). - Movement is throttled (
10ms) and can be clamped to viewport bounds.
From module/eventHelper.ts.
interface EventInfo {
name: string;
}
interface DotNetEventSink {
invokeMethodAsync(methodIdentifier: string, ...args: unknown[]): Promise<unknown>;
}| Method | Returns | Description |
|---|---|---|
addWindowEventListener(evt: EventInfo, listenerId: string, dotNetRef: DotNetEventSink) |
void |
Adds one event for one listener ID. |
removeWindowEventListener(evt: EventInfo, listenerId: string) |
void |
Removes one event for one listener ID. |
addWindowEventsListener(events: EventInfo[], listenerId: string, dotNetRef: DotNetEventSink) |
void |
Adds many events at once; supports "*" wildcard to bind all supported events. |
removeWindowEventsListener(events: EventInfo[], listenerId: string) |
void |
Removes many events at once; supports "*" wildcard. |
disposeWindowEventsListener(listenerId: string) |
void |
Removes all event bindings for a listener ID. |
Supported event names:
mousedownmouseupclickdblclickmouseovermouseoutmousemovecontextmenuresizescrollfocusblurtouchstarttouchmovetouchendtouchcancelkeydownkeypresskeyup
Interop notes:
resize,scroll, and some high-frequency events are throttled (50msdefault in this module).- Events are converted to Blazor-friendly payloads and forwarded through
dotNetRef.invokeMethodAsync(...).
From module/domHelper.ts.
| Method | Returns | Description |
|---|---|---|
| `getDom(element: string | Element)` | Element |
| `attr(selector: string | Element, key: string, value?: string | null)` |
| `setAttr(selector: string | Element, key: string, value: string)` | void |
| `getAttr(selector: string | Element, key: string)` | `string |
| `removeAttr(selector: string | Element, key: string)` | void |
| `addCls(selector: string | Element, className: string | string[])` |
| `removeCls(selector: string | Element, clsName: string | string[])` |
| `css(element: HTMLElement, name: string | object, value?: string | null)` |
css(...) supported forms:
domHelper.css(el, "color", "red");
domHelper.css(el, { color: "red", display: "block" });
domHelper.css(el, "color:red;display:block");attr(...) note:
- The current implementation checks
if (value), so falsy values (such as"") are treated as read mode instead of write mode. - Prefer
setAttr/getAttr/removeAttrfor explicit attribute operations.
| Member | Returns |
|---|---|
navigator.getUserAgent() |
string |
From module/common.ts.
| Function | Default | Description |
|---|---|---|
throttle(fn, threshold?) |
threshold = 160 |
Executes at a controlled rate and also schedules a trailing call. |
debounce(fn, wait?) |
wait = 1000 |
Delays execution until calls stop for wait ms. |
Additional note:
- The function returned by
throttleincludes acancel()function used by drag/event cleanup code.