@signality/core 0.0.1-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +60 -0
- package/browser/battery/index.d.ts +34 -0
- package/browser/bluetooth/index.d.ts +56 -0
- package/browser/breakpoints/index.d.ts +32 -0
- package/browser/broadcast-channel/index.d.ts +42 -0
- package/browser/browser-language/index.d.ts +34 -0
- package/browser/clipboard/index.d.ts +48 -0
- package/browser/device-posture/index.d.ts +18 -0
- package/browser/display-media/index.d.ts +80 -0
- package/browser/eye-dropper/index.d.ts +47 -0
- package/browser/favicon/index.d.ts +39 -0
- package/browser/fps/index.d.ts +46 -0
- package/browser/gamepad/index.d.ts +28 -0
- package/browser/geolocation/index.d.ts +64 -0
- package/browser/index.d.ts +29 -0
- package/browser/input-modality/index.d.ts +26 -0
- package/browser/listener/index.d.ts +61 -0
- package/browser/media-query/index.d.ts +36 -0
- package/browser/network/index.d.ts +44 -0
- package/browser/online/index.d.ts +27 -0
- package/browser/page-visibility/index.d.ts +27 -0
- package/browser/picture-in-picture/index.d.ts +42 -0
- package/browser/pointer-lock-element/index.d.ts +22 -0
- package/browser/screen-orientation/index.d.ts +29 -0
- package/browser/speech-recognition/index.d.ts +77 -0
- package/browser/speech-synthesis/index.d.ts +76 -0
- package/browser/storage/index.d.ts +142 -0
- package/browser/text-direction/index.d.ts +43 -0
- package/browser/vibration/index.d.ts +37 -0
- package/browser/wake-lock/index.d.ts +37 -0
- package/browser/web-notification/index.d.ts +58 -0
- package/browser/web-share/index.d.ts +42 -0
- package/browser/web-worker/index.d.ts +52 -0
- package/elements/active-element/index.d.ts +27 -0
- package/elements/dropzone/index.d.ts +61 -0
- package/elements/element-focus/index.d.ts +38 -0
- package/elements/element-focus-within/index.d.ts +29 -0
- package/elements/element-hover/index.d.ts +27 -0
- package/elements/element-size/index.d.ts +40 -0
- package/elements/element-visibility/index.d.ts +53 -0
- package/elements/index.d.ts +16 -0
- package/elements/mouse-position/index.d.ts +64 -0
- package/elements/on-click-outside/index.d.ts +42 -0
- package/elements/on-disconnect/index.d.ts +45 -0
- package/elements/on-long-press/index.d.ts +44 -0
- package/elements/pointer-swipe/index.d.ts +58 -0
- package/elements/scroll-position/index.d.ts +96 -0
- package/elements/swipe/index.d.ts +49 -0
- package/elements/text-selection/index.d.ts +39 -0
- package/elements/window-size/index.d.ts +46 -0
- package/fesm2022/signality-core-browser-battery.mjs +80 -0
- package/fesm2022/signality-core-browser-battery.mjs.map +1 -0
- package/fesm2022/signality-core-browser-bluetooth.mjs +112 -0
- package/fesm2022/signality-core-browser-bluetooth.mjs.map +1 -0
- package/fesm2022/signality-core-browser-breakpoints.mjs +51 -0
- package/fesm2022/signality-core-browser-breakpoints.mjs.map +1 -0
- package/fesm2022/signality-core-browser-broadcast-channel.mjs +74 -0
- package/fesm2022/signality-core-browser-broadcast-channel.mjs.map +1 -0
- package/fesm2022/signality-core-browser-browser-language.mjs +48 -0
- package/fesm2022/signality-core-browser-browser-language.mjs.map +1 -0
- package/fesm2022/signality-core-browser-clipboard.mjs +102 -0
- package/fesm2022/signality-core-browser-clipboard.mjs.map +1 -0
- package/fesm2022/signality-core-browser-device-posture.mjs +40 -0
- package/fesm2022/signality-core-browser-device-posture.mjs.map +1 -0
- package/fesm2022/signality-core-browser-display-media.mjs +121 -0
- package/fesm2022/signality-core-browser-display-media.mjs.map +1 -0
- package/fesm2022/signality-core-browser-eye-dropper.mjs +82 -0
- package/fesm2022/signality-core-browser-eye-dropper.mjs.map +1 -0
- package/fesm2022/signality-core-browser-favicon.mjs +100 -0
- package/fesm2022/signality-core-browser-favicon.mjs.map +1 -0
- package/fesm2022/signality-core-browser-fps.mjs +103 -0
- package/fesm2022/signality-core-browser-fps.mjs.map +1 -0
- package/fesm2022/signality-core-browser-gamepad.mjs +93 -0
- package/fesm2022/signality-core-browser-gamepad.mjs.map +1 -0
- package/fesm2022/signality-core-browser-geolocation.mjs +120 -0
- package/fesm2022/signality-core-browser-geolocation.mjs.map +1 -0
- package/fesm2022/signality-core-browser-input-modality.mjs +64 -0
- package/fesm2022/signality-core-browser-input-modality.mjs.map +1 -0
- package/fesm2022/signality-core-browser-listener.mjs +132 -0
- package/fesm2022/signality-core-browser-listener.mjs.map +1 -0
- package/fesm2022/signality-core-browser-media-query.mjs +55 -0
- package/fesm2022/signality-core-browser-media-query.mjs.map +1 -0
- package/fesm2022/signality-core-browser-network.mjs +76 -0
- package/fesm2022/signality-core-browser-network.mjs.map +1 -0
- package/fesm2022/signality-core-browser-online.mjs +49 -0
- package/fesm2022/signality-core-browser-online.mjs.map +1 -0
- package/fesm2022/signality-core-browser-page-visibility.mjs +47 -0
- package/fesm2022/signality-core-browser-page-visibility.mjs.map +1 -0
- package/fesm2022/signality-core-browser-picture-in-picture.mjs +93 -0
- package/fesm2022/signality-core-browser-picture-in-picture.mjs.map +1 -0
- package/fesm2022/signality-core-browser-pointer-lock-element.mjs +43 -0
- package/fesm2022/signality-core-browser-pointer-lock-element.mjs.map +1 -0
- package/fesm2022/signality-core-browser-screen-orientation.mjs +43 -0
- package/fesm2022/signality-core-browser-screen-orientation.mjs.map +1 -0
- package/fesm2022/signality-core-browser-speech-recognition.mjs +171 -0
- package/fesm2022/signality-core-browser-speech-recognition.mjs.map +1 -0
- package/fesm2022/signality-core-browser-speech-synthesis.mjs +146 -0
- package/fesm2022/signality-core-browser-speech-synthesis.mjs.map +1 -0
- package/fesm2022/signality-core-browser-storage.mjs +261 -0
- package/fesm2022/signality-core-browser-storage.mjs.map +1 -0
- package/fesm2022/signality-core-browser-text-direction.mjs +62 -0
- package/fesm2022/signality-core-browser-text-direction.mjs.map +1 -0
- package/fesm2022/signality-core-browser-vibration.mjs +94 -0
- package/fesm2022/signality-core-browser-vibration.mjs.map +1 -0
- package/fesm2022/signality-core-browser-wake-lock.mjs +149 -0
- package/fesm2022/signality-core-browser-wake-lock.mjs.map +1 -0
- package/fesm2022/signality-core-browser-web-notification.mjs +137 -0
- package/fesm2022/signality-core-browser-web-notification.mjs.map +1 -0
- package/fesm2022/signality-core-browser-web-share.mjs +92 -0
- package/fesm2022/signality-core-browser-web-share.mjs.map +1 -0
- package/fesm2022/signality-core-browser-web-worker.mjs +105 -0
- package/fesm2022/signality-core-browser-web-worker.mjs.map +1 -0
- package/fesm2022/signality-core-browser.mjs +34 -0
- package/fesm2022/signality-core-browser.mjs.map +1 -0
- package/fesm2022/signality-core-elements-active-element.mjs +88 -0
- package/fesm2022/signality-core-elements-active-element.mjs.map +1 -0
- package/fesm2022/signality-core-elements-dropzone.mjs +158 -0
- package/fesm2022/signality-core-elements-dropzone.mjs.map +1 -0
- package/fesm2022/signality-core-elements-element-focus-within.mjs +56 -0
- package/fesm2022/signality-core-elements-element-focus-within.mjs.map +1 -0
- package/fesm2022/signality-core-elements-element-focus.mjs +54 -0
- package/fesm2022/signality-core-elements-element-focus.mjs.map +1 -0
- package/fesm2022/signality-core-elements-element-hover.mjs +48 -0
- package/fesm2022/signality-core-elements-element-hover.mjs.map +1 -0
- package/fesm2022/signality-core-elements-element-size.mjs +73 -0
- package/fesm2022/signality-core-elements-element-size.mjs.map +1 -0
- package/fesm2022/signality-core-elements-element-visibility.mjs +76 -0
- package/fesm2022/signality-core-elements-element-visibility.mjs.map +1 -0
- package/fesm2022/signality-core-elements-mouse-position.mjs +109 -0
- package/fesm2022/signality-core-elements-mouse-position.mjs.map +1 -0
- package/fesm2022/signality-core-elements-on-click-outside.mjs +97 -0
- package/fesm2022/signality-core-elements-on-click-outside.mjs.map +1 -0
- package/fesm2022/signality-core-elements-on-disconnect.mjs +99 -0
- package/fesm2022/signality-core-elements-on-disconnect.mjs.map +1 -0
- package/fesm2022/signality-core-elements-on-long-press.mjs +84 -0
- package/fesm2022/signality-core-elements-on-long-press.mjs.map +1 -0
- package/fesm2022/signality-core-elements-pointer-swipe.mjs +116 -0
- package/fesm2022/signality-core-elements-pointer-swipe.mjs.map +1 -0
- package/fesm2022/signality-core-elements-scroll-position.mjs +175 -0
- package/fesm2022/signality-core-elements-scroll-position.mjs.map +1 -0
- package/fesm2022/signality-core-elements-swipe.mjs +107 -0
- package/fesm2022/signality-core-elements-swipe.mjs.map +1 -0
- package/fesm2022/signality-core-elements-text-selection.mjs +70 -0
- package/fesm2022/signality-core-elements-text-selection.mjs.map +1 -0
- package/fesm2022/signality-core-elements-window-size.mjs +81 -0
- package/fesm2022/signality-core-elements-window-size.mjs.map +1 -0
- package/fesm2022/signality-core-elements.mjs +21 -0
- package/fesm2022/signality-core-elements.mjs.map +1 -0
- package/fesm2022/signality-core-forms-cva.mjs +140 -0
- package/fesm2022/signality-core-forms-cva.mjs.map +1 -0
- package/fesm2022/signality-core-forms.mjs +6 -0
- package/fesm2022/signality-core-forms.mjs.map +1 -0
- package/fesm2022/signality-core-internal.mjs +268 -0
- package/fesm2022/signality-core-internal.mjs.map +1 -0
- package/fesm2022/signality-core-observers-intersection-observer.mjs +70 -0
- package/fesm2022/signality-core-observers-intersection-observer.mjs.map +1 -0
- package/fesm2022/signality-core-observers-mutation-observer.mjs +77 -0
- package/fesm2022/signality-core-observers-mutation-observer.mjs.map +1 -0
- package/fesm2022/signality-core-observers-performance-observer.mjs +84 -0
- package/fesm2022/signality-core-observers-performance-observer.mjs.map +1 -0
- package/fesm2022/signality-core-observers-resize-observer.mjs +69 -0
- package/fesm2022/signality-core-observers-resize-observer.mjs.map +1 -0
- package/fesm2022/signality-core-observers.mjs +9 -0
- package/fesm2022/signality-core-observers.mjs.map +1 -0
- package/fesm2022/signality-core-reactivity-debounced.mjs +27 -0
- package/fesm2022/signality-core-reactivity-debounced.mjs.map +1 -0
- package/fesm2022/signality-core-reactivity-throttled.mjs +27 -0
- package/fesm2022/signality-core-reactivity-throttled.mjs.map +1 -0
- package/fesm2022/signality-core-reactivity-watcher.mjs +36 -0
- package/fesm2022/signality-core-reactivity-watcher.mjs.map +1 -0
- package/fesm2022/signality-core-reactivity.mjs +8 -0
- package/fesm2022/signality-core-reactivity.mjs.map +1 -0
- package/fesm2022/signality-core-router-fragment.mjs +41 -0
- package/fesm2022/signality-core-router-fragment.mjs.map +1 -0
- package/fesm2022/signality-core-router-params.mjs +45 -0
- package/fesm2022/signality-core-router-params.mjs.map +1 -0
- package/fesm2022/signality-core-router-query-params.mjs +67 -0
- package/fesm2022/signality-core-router-query-params.mjs.map +1 -0
- package/fesm2022/signality-core-router-route-data.mjs +46 -0
- package/fesm2022/signality-core-router-route-data.mjs.map +1 -0
- package/fesm2022/signality-core-router-router-listener.mjs +50 -0
- package/fesm2022/signality-core-router-router-listener.mjs.map +1 -0
- package/fesm2022/signality-core-router-title.mjs +54 -0
- package/fesm2022/signality-core-router-title.mjs.map +1 -0
- package/fesm2022/signality-core-router-url.mjs +53 -0
- package/fesm2022/signality-core-router-url.mjs.map +1 -0
- package/fesm2022/signality-core-router.mjs +12 -0
- package/fesm2022/signality-core-router.mjs.map +1 -0
- package/fesm2022/signality-core-scheduling-debounce-callback.mjs +59 -0
- package/fesm2022/signality-core-scheduling-debounce-callback.mjs.map +1 -0
- package/fesm2022/signality-core-scheduling-interval.mjs +110 -0
- package/fesm2022/signality-core-scheduling-interval.mjs.map +1 -0
- package/fesm2022/signality-core-scheduling-throttle-callback.mjs +66 -0
- package/fesm2022/signality-core-scheduling-throttle-callback.mjs.map +1 -0
- package/fesm2022/signality-core-scheduling.mjs +8 -0
- package/fesm2022/signality-core-scheduling.mjs.map +1 -0
- package/fesm2022/signality-core-types.mjs +4 -0
- package/fesm2022/signality-core-types.mjs.map +1 -0
- package/fesm2022/signality-core.mjs +13 -0
- package/fesm2022/signality-core.mjs.map +1 -0
- package/forms/cva/index.d.ts +60 -0
- package/forms/index.d.ts +1 -0
- package/index.d.ts +8 -0
- package/internal/constants/index.d.ts +2 -0
- package/internal/constants/mobile-regex.d.ts +1 -0
- package/internal/constants/stubs.d.ts +32 -0
- package/internal/index.d.ts +4 -0
- package/internal/providers/index.d.ts +3 -0
- package/internal/providers/is-browser.d.ts +2 -0
- package/internal/providers/is-mobile.d.ts +2 -0
- package/internal/providers/is-server.d.ts +2 -0
- package/internal/types/index.d.ts +2 -0
- package/internal/types/timer.d.ts +1 -0
- package/internal/types/union.d.ts +1 -0
- package/internal/utils/bom/index.d.ts +1 -0
- package/internal/utils/bom/is-window.d.ts +1 -0
- package/internal/utils/const-signal.d.ts +10 -0
- package/internal/utils/context.d.ts +18 -0
- package/internal/utils/create-token.d.ts +8 -0
- package/internal/utils/dom/get-active-element.d.ts +1 -0
- package/internal/utils/dom/get-event-target.d.ts +1 -0
- package/internal/utils/dom/get-pip-element.d.ts +1 -0
- package/internal/utils/dom/get-shadow-root.d.ts +1 -0
- package/internal/utils/dom/index.d.ts +6 -0
- package/internal/utils/dom/is-element.d.ts +1 -0
- package/internal/utils/dom/is-node-within.d.ts +1 -0
- package/internal/utils/index.d.ts +10 -0
- package/internal/utils/is-plain-object.d.ts +1 -0
- package/internal/utils/is-query-signal.d.ts +10 -0
- package/internal/utils/proxy-signal.d.ts +18 -0
- package/internal/utils/to-element.d.ts +12 -0
- package/internal/utils/to-value.d.ts +6 -0
- package/observers/index.d.ts +4 -0
- package/observers/intersection-observer/index.d.ts +42 -0
- package/observers/mutation-observer/index.d.ts +45 -0
- package/observers/performance-observer/index.d.ts +58 -0
- package/observers/resize-observer/index.d.ts +40 -0
- package/package.json +343 -0
- package/reactivity/debounced/index.d.ts +50 -0
- package/reactivity/index.d.ts +3 -0
- package/reactivity/throttled/index.d.ts +53 -0
- package/reactivity/watcher/index.d.ts +68 -0
- package/router/fragment/index.d.ts +26 -0
- package/router/index.d.ts +7 -0
- package/router/params/index.d.ts +28 -0
- package/router/query-params/index.d.ts +80 -0
- package/router/route-data/index.d.ts +28 -0
- package/router/router-listener/index.d.ts +83 -0
- package/router/title/index.d.ts +29 -0
- package/router/url/index.d.ts +32 -0
- package/scheduling/debounce-callback/index.d.ts +28 -0
- package/scheduling/index.d.ts +3 -0
- package/scheduling/interval/index.d.ts +51 -0
- package/scheduling/throttle-callback/index.d.ts +30 -0
- package/types/index.d.ts +6 -0
- package/types/maybe-element-signal.d.ts +2 -0
- package/types/maybe-signal.d.ts +2 -0
- package/types/signal-value.d.ts +2 -0
- package/types/signal-values.d.ts +5 -0
- package/types/unref-element.d.ts +2 -0
- package/types/with-injector.d.ts +8 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export type Timer = ReturnType<typeof setTimeout> | undefined;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export type Union<T, U> = T | (U & {});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './is-window';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function isWindow(obj: object | null): obj is Window;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Signal } from '@angular/core';
|
|
2
|
+
/***
|
|
3
|
+
* Creates a lightweight, readonly signal.
|
|
4
|
+
* This is primarily used to provide fallback values for states that cannot be
|
|
5
|
+
* computed in the current environment. For example:
|
|
6
|
+
* - During SSR where browser-only APIs are unavailable
|
|
7
|
+
* - In environments that lack support for specific APIs
|
|
8
|
+
* @internal
|
|
9
|
+
*/
|
|
10
|
+
export declare function constSignal<T>(value: T): Signal<T>;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { type Injector } from '@angular/core';
|
|
2
|
+
export interface ContextRef {
|
|
3
|
+
readonly injector: Injector;
|
|
4
|
+
readonly isServer: boolean;
|
|
5
|
+
readonly isBrowser: boolean;
|
|
6
|
+
readonly isMobile: boolean;
|
|
7
|
+
readonly onCleanup: (cleanupFn: () => void) => void;
|
|
8
|
+
}
|
|
9
|
+
export interface SetupContextRef {
|
|
10
|
+
runInContext<T>(fn: (context: ContextRef) => T): T;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* @internal
|
|
14
|
+
*
|
|
15
|
+
* @param injector - injector to use for context
|
|
16
|
+
* @param debugFn - context owner function
|
|
17
|
+
*/
|
|
18
|
+
export declare function setupContext(injector?: Injector, debugFn?: (...args: any[]) => any): SetupContextRef;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { InjectionToken, type ProviderToken } from '@angular/core';
|
|
2
|
+
/**
|
|
3
|
+
* Creates an Angular InjectionToken with a factory function.
|
|
4
|
+
* @internal
|
|
5
|
+
*/
|
|
6
|
+
export declare function createToken<T>(factory: () => T, providedIn?: ProvidedIn): ProviderToken<T>;
|
|
7
|
+
type ProvidedIn = NonNullable<ConstructorParameters<typeof InjectionToken>[1]>['providedIn'];
|
|
8
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function getActiveElement(document: Document): Element | null;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function getEventTarget<T extends EventTarget>(event: Event): T | null;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function getPipElement(document: Document): Element | null;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function getShadowRoot(element: Element | null): ShadowRoot | null;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function isElement(obj: Element | EventTarget | Node | object | null): obj is Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function isNodeWithin(node: Node, root: Element): boolean;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export * from './bom';
|
|
2
|
+
export * from './dom';
|
|
3
|
+
export * from './context';
|
|
4
|
+
export * from './create-token';
|
|
5
|
+
export * from './is-query-signal';
|
|
6
|
+
export * from './is-plain-object';
|
|
7
|
+
export * from './const-signal';
|
|
8
|
+
export * from './proxy-signal';
|
|
9
|
+
export * from './to-element';
|
|
10
|
+
export * from './to-value';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function isPlainObject(value: unknown): value is Record<PropertyKey, unknown>;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type Signal } from '@angular/core';
|
|
2
|
+
/**
|
|
3
|
+
* Determines if a signal is a query signal (viewChild, contentChild).
|
|
4
|
+
* Query signals have a special internal structure with a `_dirtyCounter` property that tracks
|
|
5
|
+
* when query results change.
|
|
6
|
+
|
|
7
|
+
* See: https://github.com/angular/angular/blob/main/packages/core/src/render3/queries/query_reactive.ts#L43
|
|
8
|
+
* @internal
|
|
9
|
+
*/
|
|
10
|
+
export declare function isQuerySignal(val: unknown): val is Signal<unknown>;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { type Signal, type WritableSignal } from '@angular/core';
|
|
2
|
+
/**
|
|
3
|
+
* @internal
|
|
4
|
+
*/
|
|
5
|
+
export interface SignalProxyHandler<T> {
|
|
6
|
+
get?(source: Signal<T>): T;
|
|
7
|
+
set?(value: T, source: WritableSignal<T>): void;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Creates a proxy wrapper around a {@link Signal}
|
|
11
|
+
* @internal
|
|
12
|
+
*/
|
|
13
|
+
export declare function proxySignal<T>(source: Signal<T>, handler: Omit<SignalProxyHandler<T>, 'set'>): Signal<T>;
|
|
14
|
+
/**
|
|
15
|
+
* Creates a proxy wrapper around a {@link WritableSignal}
|
|
16
|
+
* @internal
|
|
17
|
+
*/
|
|
18
|
+
export declare function proxySignal<T>(source: WritableSignal<T>, handler: SignalProxyHandler<T>): WritableSignal<T>;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { ElementRef, type Signal } from '@angular/core';
|
|
2
|
+
export interface ToElementFn extends ToElementBase {
|
|
3
|
+
untracked: ToElementBase;
|
|
4
|
+
}
|
|
5
|
+
export interface ToElementBase {
|
|
6
|
+
<T extends Element>(element: T | ElementRef<T>): T;
|
|
7
|
+
<T extends Element>(element: Signal<T | ElementRef<T> | null>): T | null;
|
|
8
|
+
<T extends Element>(element: Signal<T | ElementRef<T> | undefined>): T | undefined;
|
|
9
|
+
<T extends Element>(element: Signal<T | ElementRef<T> | null | undefined>): T | null | undefined;
|
|
10
|
+
<T extends Element>(element: T | ElementRef<T> | Signal<T | ElementRef<T> | null | undefined>): T | null | undefined;
|
|
11
|
+
}
|
|
12
|
+
export declare const toElement: ToElementFn;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { type CreateEffectOptions } from '@angular/core';
|
|
2
|
+
import type { MaybeElementSignal, MaybeSignal } from '@signality/core/types';
|
|
3
|
+
export interface IntersectionObserverInitOptions extends Omit<CreateEffectOptions, 'allowSignalWrites'> {
|
|
4
|
+
readonly root?: MaybeElementSignal<Element> | Document | null;
|
|
5
|
+
readonly rootMargin?: MaybeSignal<string>;
|
|
6
|
+
readonly threshold?: MaybeSignal<number | number[]>;
|
|
7
|
+
}
|
|
8
|
+
export interface IntersectionObserverRef {
|
|
9
|
+
readonly destroy: () => void;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Low-level utility for observing element intersection with viewport using the [Intersection Observer API](https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API).
|
|
13
|
+
* Provides fine-grained control over the observation lifecycle.
|
|
14
|
+
*
|
|
15
|
+
* @param target - Element(s) to observe
|
|
16
|
+
* @param callback - Callback function called when intersection changes
|
|
17
|
+
* @param options - Optional configuration (see {@link IntersectionObserverInitOptions})
|
|
18
|
+
* @returns An IntersectionObserverRef with a `destroy()` method to stop observing the element(s)
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* ```typescript
|
|
22
|
+
* @Component({
|
|
23
|
+
* template: `
|
|
24
|
+
* <div #section>Section content</div>
|
|
25
|
+
* @if (isVisible()) {
|
|
26
|
+
* <p>Section is visible!</p>
|
|
27
|
+
* }
|
|
28
|
+
* `
|
|
29
|
+
* })
|
|
30
|
+
* class IntersectionComponent {
|
|
31
|
+
* readonly section = viewChild<ElementRef>('section');
|
|
32
|
+
* readonly isVisible = signal(false);
|
|
33
|
+
*
|
|
34
|
+
* constructor() {
|
|
35
|
+
* intersectionObserver(this.section, entries => {
|
|
36
|
+
* this.isVisible.set(entries[0].isIntersecting);
|
|
37
|
+
* }, { threshold: 0.5 });
|
|
38
|
+
* }
|
|
39
|
+
* }
|
|
40
|
+
* ```
|
|
41
|
+
*/
|
|
42
|
+
export declare function intersectionObserver(target: MaybeElementSignal<Element> | MaybeElementSignal<Element>[], callback: (entries: readonly IntersectionObserverEntry[], observer: IntersectionObserver) => void, options?: IntersectionObserverInitOptions): IntersectionObserverRef;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { type CreateEffectOptions } from '@angular/core';
|
|
2
|
+
import type { MaybeElementSignal, MaybeSignal } from '@signality/core/types';
|
|
3
|
+
export interface MutationObserverInitOptions extends Omit<CreateEffectOptions, 'allowSignalWrites'> {
|
|
4
|
+
readonly childList?: MaybeSignal<boolean>;
|
|
5
|
+
readonly attributes?: MaybeSignal<boolean>;
|
|
6
|
+
readonly characterData?: MaybeSignal<boolean>;
|
|
7
|
+
readonly subtree?: MaybeSignal<boolean>;
|
|
8
|
+
readonly attributeOldValue?: MaybeSignal<boolean>;
|
|
9
|
+
readonly characterDataOldValue?: MaybeSignal<boolean>;
|
|
10
|
+
readonly attributeFilter?: MaybeSignal<string[]>;
|
|
11
|
+
}
|
|
12
|
+
export interface MutationObserverRef {
|
|
13
|
+
readonly destroy: () => void;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Low-level utility for observing DOM tree changes using the [MutationObserver API](https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver).
|
|
17
|
+
* Provides fine-grained control over the observation lifecycle.
|
|
18
|
+
*
|
|
19
|
+
* @param target - Element(s) to observe
|
|
20
|
+
* @param callback - Callback function called when DOM mutations occur
|
|
21
|
+
* @param options - Optional configuration (see {@link MutationObserverInitOptions})
|
|
22
|
+
* @returns MutationObserverRef with a `destroy()` method to stop observing the element(s)
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* ```typescript
|
|
26
|
+
* @Component({
|
|
27
|
+
* template: `
|
|
28
|
+
* <div #container>
|
|
29
|
+
* <p>Children: {{ childCount() }}</p>
|
|
30
|
+
* </div>
|
|
31
|
+
* `
|
|
32
|
+
* })
|
|
33
|
+
* class MutationComponent {
|
|
34
|
+
* readonly container = viewChild<ElementRef>('container');
|
|
35
|
+
* readonly childCount = signal(0);
|
|
36
|
+
*
|
|
37
|
+
* constructor() {
|
|
38
|
+
* mutationObserver(this.container, mutations => {
|
|
39
|
+
* this.childCount.set(mutations[0].target.childNodes.length);
|
|
40
|
+
* }, { childList: true });
|
|
41
|
+
* }
|
|
42
|
+
* }
|
|
43
|
+
* ```
|
|
44
|
+
*/
|
|
45
|
+
export declare function mutationObserver(target: MaybeElementSignal<Element> | MaybeElementSignal<Element>[], callback: (mutations: readonly MutationRecord[], observer: MutationObserver) => void, options: MutationObserverInitOptions): MutationObserverRef;
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { type CreateEffectOptions } from '@angular/core';
|
|
2
|
+
import type { MaybeSignal } from '@signality/core/types';
|
|
3
|
+
export interface PerformanceObserverInitOptions extends Omit<CreateEffectOptions, 'allowSignalWrites'> {
|
|
4
|
+
readonly entryTypes?: MaybeSignal<string[]>;
|
|
5
|
+
readonly type?: MaybeSignal<string>;
|
|
6
|
+
readonly buffered?: MaybeSignal<boolean>;
|
|
7
|
+
}
|
|
8
|
+
export interface PerformanceObserverRef {
|
|
9
|
+
readonly destroy: () => void;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Low-level utility for observing performance measurement events using the [Performance Observer API](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceObserver).
|
|
13
|
+
* Provides reactive access to performance entries as they are recorded in the browser's performance timeline.
|
|
14
|
+
*
|
|
15
|
+
* @param callback - Callback function called when performance entries are recorded
|
|
16
|
+
* @param options - Optional configuration (see {@link PerformanceObserverInitOptions})
|
|
17
|
+
* @returns PerformanceObserverRef with a `destroy()` method to stop observing
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```typescript
|
|
21
|
+
* @Component({
|
|
22
|
+
* template: `
|
|
23
|
+
* <div>LCP: {{ lcp() }}ms</div>
|
|
24
|
+
* `
|
|
25
|
+
* })
|
|
26
|
+
* class PerformanceComponent {
|
|
27
|
+
* readonly lcp = signal(0);
|
|
28
|
+
*
|
|
29
|
+
* constructor() {
|
|
30
|
+
* performanceObserver(entries => {
|
|
31
|
+
* const lcpEntry = entries.find(e => e.entryType === 'largest-contentful-paint');
|
|
32
|
+
* if (lcpEntry) {
|
|
33
|
+
* this.lcp.set(Math.round(lcpEntry.startTime));
|
|
34
|
+
* }
|
|
35
|
+
* }, { entryTypes: ['largest-contentful-paint'] });
|
|
36
|
+
* }
|
|
37
|
+
* }
|
|
38
|
+
* ```
|
|
39
|
+
*
|
|
40
|
+
* @example
|
|
41
|
+
* ```typescript
|
|
42
|
+
* // Track long tasks
|
|
43
|
+
* performanceObserver(entries => {
|
|
44
|
+
* entries.forEach(entry => {
|
|
45
|
+
* console.log('Long task:', entry.duration);
|
|
46
|
+
* });
|
|
47
|
+
* }, { entryTypes: ['longtask'] });
|
|
48
|
+
* ```
|
|
49
|
+
*
|
|
50
|
+
* @example
|
|
51
|
+
* ```typescript
|
|
52
|
+
* // Using type (single entry type, legacy API)
|
|
53
|
+
* performanceObserver(entries => {
|
|
54
|
+
* console.log('Navigation timing:', entries[0]);
|
|
55
|
+
* }, { type: 'navigation', buffered: true });
|
|
56
|
+
* ```
|
|
57
|
+
*/
|
|
58
|
+
export declare function performanceObserver(callback: PerformanceObserverCallback, options?: PerformanceObserverInitOptions): PerformanceObserverRef;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { type CreateEffectOptions } from '@angular/core';
|
|
2
|
+
import type { MaybeElementSignal, MaybeSignal } from '@signality/core/types';
|
|
3
|
+
export interface ResizeObserverInitOptions extends Omit<CreateEffectOptions, 'allowSignalWrites'> {
|
|
4
|
+
readonly box?: MaybeSignal<ResizeObserverBoxOptions>;
|
|
5
|
+
}
|
|
6
|
+
export interface ResizeObserverRef {
|
|
7
|
+
readonly destroy: () => void;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Low-level utility for observing element size changes using the [ResizeObserver API](https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserver).
|
|
11
|
+
* Provides fine-grained control over the observation lifecycle.
|
|
12
|
+
*
|
|
13
|
+
* @param target - Element(s) to observe
|
|
14
|
+
* @param callback - Callback function called when element size changes
|
|
15
|
+
* @param options - Optional configuration (see {@link ResizeObserverInitOptions})
|
|
16
|
+
* @returns ResizeObserverRef with a `destroy()` method to stop observing the element(s)
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```typescript
|
|
20
|
+
* @Component({
|
|
21
|
+
* template: `
|
|
22
|
+
* <div #resizable>
|
|
23
|
+
* Size: {{ size().width }} × {{ size().height }}px
|
|
24
|
+
* </div>
|
|
25
|
+
* `
|
|
26
|
+
* })
|
|
27
|
+
* class ResizeComponent {
|
|
28
|
+
* readonly resizable = viewChild<ElementRef>('resizable');
|
|
29
|
+
* readonly size = signal({ width: 0, height: 0 });
|
|
30
|
+
*
|
|
31
|
+
* constructor() {
|
|
32
|
+
* resizeObserver(this.resizable, entries => {
|
|
33
|
+
* const { width, height } = entries[0].contentRect;
|
|
34
|
+
* this.size.set({ width, height });
|
|
35
|
+
* });
|
|
36
|
+
* }
|
|
37
|
+
* }
|
|
38
|
+
* ```
|
|
39
|
+
*/
|
|
40
|
+
export declare function resizeObserver(target: MaybeElementSignal<Element> | MaybeElementSignal<Element>[], callback: (entries: readonly ResizeObserverEntry[]) => void, options?: ResizeObserverInitOptions): ResizeObserverRef;
|