@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,28 @@
|
|
|
1
|
+
import { type CreateSignalOptions, type Signal } from '@angular/core';
|
|
2
|
+
import type { WithInjector } from '@signality/core/types';
|
|
3
|
+
export type RouteDataOptions<T = unknown> = CreateSignalOptions<T> & WithInjector;
|
|
4
|
+
/**
|
|
5
|
+
* Reactive wrapper around the [Angular Router](https://angular.dev/guide/routing) route data.
|
|
6
|
+
*
|
|
7
|
+
* @param options - Optional configuration including signal options and injector
|
|
8
|
+
* @returns A signal containing the current route data
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```typescript
|
|
12
|
+
* @Component({
|
|
13
|
+
* template: `
|
|
14
|
+
* <div>
|
|
15
|
+
* <h1>{{ data().name }}</h1>
|
|
16
|
+
* @if (data().showBreadcrumbs) {
|
|
17
|
+
* <nav>Breadcrumbs here</nav>
|
|
18
|
+
* }
|
|
19
|
+
* </div>
|
|
20
|
+
* `
|
|
21
|
+
* })
|
|
22
|
+
* class ProductComponent {
|
|
23
|
+
* // Route with data: { name: 'Product Page', showBreadcrumbs: true }
|
|
24
|
+
* readonly data = routeData<{ name: string; showBreadcrumbs: boolean }>();
|
|
25
|
+
* }
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
export declare function routeData<T = unknown>(options?: RouteDataOptions<T>): Signal<T>;
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { ActivationEnd, ActivationStart, ChildActivationEnd, ChildActivationStart, GuardsCheckEnd, GuardsCheckStart, NavigationCancel, NavigationEnd, NavigationError, NavigationSkipped, NavigationStart, ResolveEnd, ResolveStart, RouteConfigLoadEnd, RouteConfigLoadStart, RoutesRecognized, Scroll } from '@angular/router';
|
|
2
|
+
import type { WithInjector } from '@signality/core/types';
|
|
3
|
+
export interface RouterListenerOptions extends WithInjector {
|
|
4
|
+
/** If true, automatically unsubscribe after the first event */
|
|
5
|
+
readonly once?: boolean;
|
|
6
|
+
}
|
|
7
|
+
export interface RouterListenerRef {
|
|
8
|
+
/** Manually unsubscribe from router events */
|
|
9
|
+
readonly destroy: () => void;
|
|
10
|
+
}
|
|
11
|
+
export type RouterEventType = 'navigationstart' | 'navigationend' | 'navigationcancel' | 'navigationerror' | 'navigationskipped' | 'routesrecognized' | 'guardscheckstart' | 'guardscheckend' | 'resolvestart' | 'resolveend' | 'routeconfigloadstart' | 'routeconfigloadend' | 'childactivationstart' | 'childactivationend' | 'activationstart' | 'activationend' | 'scroll';
|
|
12
|
+
/**
|
|
13
|
+
* Event-driven listener for [Angular Router](https://angular.dev/guide/routing) events.
|
|
14
|
+
*
|
|
15
|
+
* @param event - Router event name in lowercase (e.g., 'navigationstart') or array of event names
|
|
16
|
+
* @param handler - Type-safe handler function for the specific event(s)
|
|
17
|
+
* @param options - Optional configuration
|
|
18
|
+
* @returns RouterListenerRef with destroy method for manual unsubscribe
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* ```typescript
|
|
22
|
+
* @Component({
|
|
23
|
+
* template: `
|
|
24
|
+
* @if (isLoading()) {
|
|
25
|
+
* <p>Navigation in progress...</p>
|
|
26
|
+
* }
|
|
27
|
+
* `
|
|
28
|
+
* })
|
|
29
|
+
* class NavigationComponent {
|
|
30
|
+
* readonly isLoading = signal(false);
|
|
31
|
+
*
|
|
32
|
+
* constructor() {
|
|
33
|
+
* routerListener('navigationstart', event => {
|
|
34
|
+
* this.isLoading.set(true);
|
|
35
|
+
* });
|
|
36
|
+
*
|
|
37
|
+
* routerListener('navigationend', event => {
|
|
38
|
+
* this.isLoading.set(false);
|
|
39
|
+
* });
|
|
40
|
+
* }
|
|
41
|
+
* }
|
|
42
|
+
* ```
|
|
43
|
+
*/
|
|
44
|
+
export declare function routerListener(event: 'navigationstart', handler: (event: NavigationStart) => void, options?: RouterListenerOptions): RouterListenerRef;
|
|
45
|
+
export declare function routerListener(event: 'navigationend', handler: (event: NavigationEnd) => void, options?: RouterListenerOptions): RouterListenerRef;
|
|
46
|
+
export declare function routerListener(event: 'navigationcancel', handler: (event: NavigationCancel) => void, options?: RouterListenerOptions): RouterListenerRef;
|
|
47
|
+
export declare function routerListener(event: 'navigationerror', handler: (event: NavigationError) => void, options?: RouterListenerOptions): RouterListenerRef;
|
|
48
|
+
export declare function routerListener(event: 'navigationskipped', handler: (event: NavigationSkipped) => void, options?: RouterListenerOptions): RouterListenerRef;
|
|
49
|
+
export declare function routerListener(event: 'routesrecognized', handler: (event: RoutesRecognized) => void, options?: RouterListenerOptions): RouterListenerRef;
|
|
50
|
+
export declare function routerListener(event: 'guardscheckstart', handler: (event: GuardsCheckStart) => void, options?: RouterListenerOptions): RouterListenerRef;
|
|
51
|
+
export declare function routerListener(event: 'guardscheckend', handler: (event: GuardsCheckEnd) => void, options?: RouterListenerOptions): RouterListenerRef;
|
|
52
|
+
export declare function routerListener(event: 'resolvestart', handler: (event: ResolveStart) => void, options?: RouterListenerOptions): RouterListenerRef;
|
|
53
|
+
export declare function routerListener(event: 'resolveend', handler: (event: ResolveEnd) => void, options?: RouterListenerOptions): RouterListenerRef;
|
|
54
|
+
export declare function routerListener(event: 'routeconfigloadstart', handler: (event: RouteConfigLoadStart) => void, options?: RouterListenerOptions): RouterListenerRef;
|
|
55
|
+
export declare function routerListener(event: 'routeconfigloadend', handler: (event: RouteConfigLoadEnd) => void, options?: RouterListenerOptions): RouterListenerRef;
|
|
56
|
+
export declare function routerListener(event: 'childactivationstart', handler: (event: ChildActivationStart) => void, options?: RouterListenerOptions): RouterListenerRef;
|
|
57
|
+
export declare function routerListener(event: 'childactivationend', handler: (event: ChildActivationEnd) => void, options?: RouterListenerOptions): RouterListenerRef;
|
|
58
|
+
export declare function routerListener(event: 'activationstart', handler: (event: ActivationStart) => void, options?: RouterListenerOptions): RouterListenerRef;
|
|
59
|
+
export declare function routerListener(event: 'activationend', handler: (event: ActivationEnd) => void, options?: RouterListenerOptions): RouterListenerRef;
|
|
60
|
+
export declare function routerListener(event: 'scroll', handler: (event: Scroll) => void, options?: RouterListenerOptions): RouterListenerRef;
|
|
61
|
+
export declare function routerListener<T extends readonly [RouterEventType, ...RouterEventType[]]>(events: T, handler: (event: RouterEventTypeArrayToUnion<T>) => void, options?: RouterListenerOptions): RouterListenerRef;
|
|
62
|
+
type RouterEventTypeMap = {
|
|
63
|
+
navigationstart: NavigationStart;
|
|
64
|
+
navigationend: NavigationEnd;
|
|
65
|
+
navigationcancel: NavigationCancel;
|
|
66
|
+
navigationerror: NavigationError;
|
|
67
|
+
navigationskipped: NavigationSkipped;
|
|
68
|
+
routesrecognized: RoutesRecognized;
|
|
69
|
+
guardscheckstart: GuardsCheckStart;
|
|
70
|
+
guardscheckend: GuardsCheckEnd;
|
|
71
|
+
resolvestart: ResolveStart;
|
|
72
|
+
resolveend: ResolveEnd;
|
|
73
|
+
routeconfigloadstart: RouteConfigLoadStart;
|
|
74
|
+
routeconfigloadend: RouteConfigLoadEnd;
|
|
75
|
+
childactivationstart: ChildActivationStart;
|
|
76
|
+
childactivationend: ChildActivationEnd;
|
|
77
|
+
activationstart: ActivationStart;
|
|
78
|
+
activationend: ActivationEnd;
|
|
79
|
+
scroll: Scroll;
|
|
80
|
+
};
|
|
81
|
+
type RouterEventTypeToEventType<T extends RouterEventType> = RouterEventTypeMap[T];
|
|
82
|
+
type RouterEventTypeArrayToUnion<T extends readonly RouterEventType[]> = T[number] extends infer U ? U extends RouterEventType ? RouterEventTypeToEventType<U> : never : never;
|
|
83
|
+
export {};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { type CreateSignalOptions, type WritableSignal } from '@angular/core';
|
|
2
|
+
import type { WithInjector } from '@signality/core/types';
|
|
3
|
+
export type TitleOptions = CreateSignalOptions<string> & WithInjector;
|
|
4
|
+
/**
|
|
5
|
+
* Reactive wrapper around the [Angular Router](https://angular.dev/guide/routing) route title.
|
|
6
|
+
*
|
|
7
|
+
* @param options - Optional configuration
|
|
8
|
+
* @returns A writable signal containing the current route title (string)
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```typescript
|
|
12
|
+
* @Component({
|
|
13
|
+
* template: `
|
|
14
|
+
* <div>
|
|
15
|
+
* <h1>{{ pageTitle() }}</h1>
|
|
16
|
+
* <button (click)="updateTitle()">Update Title</button>
|
|
17
|
+
* </div>
|
|
18
|
+
* `
|
|
19
|
+
* })
|
|
20
|
+
* class PageComponent {
|
|
21
|
+
* readonly pageTitle = title();
|
|
22
|
+
*
|
|
23
|
+
* updateTitle() {
|
|
24
|
+
* this.pageTitle.set('New Page Title');
|
|
25
|
+
* }
|
|
26
|
+
* }
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
export declare function title(options?: TitleOptions): WritableSignal<string>;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { type CreateSignalOptions, type Signal } from '@angular/core';
|
|
2
|
+
import type { WithInjector } from '@signality/core/types';
|
|
3
|
+
export interface UrlOptions extends CreateSignalOptions<string>, WithInjector {
|
|
4
|
+
/**
|
|
5
|
+
* Include origin (protocol + host) for absolute URL.
|
|
6
|
+
* @default false
|
|
7
|
+
*/
|
|
8
|
+
readonly absolute?: boolean;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Reactive wrapper around the [Angular Router](https://angular.dev/guide/routing) current URL.
|
|
12
|
+
*
|
|
13
|
+
* @param options - Optional configuration
|
|
14
|
+
* @returns A signal containing the current URL
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```typescript
|
|
18
|
+
* @Component({
|
|
19
|
+
* template: `
|
|
20
|
+
* <div>
|
|
21
|
+
* <p>Current URL: {{ currentUrl() }}</p>
|
|
22
|
+
* <p>Absolute URL: {{ absoluteUrl() }}</p>
|
|
23
|
+
* </div>
|
|
24
|
+
* `
|
|
25
|
+
* })
|
|
26
|
+
* class UrlComponent {
|
|
27
|
+
* readonly currentUrl = url();
|
|
28
|
+
* readonly absoluteUrl = url({ absolute: true });
|
|
29
|
+
* }
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
export declare function url(options?: UrlOptions): Signal<string>;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { MaybeSignal, WithInjector } from '@signality/core/types';
|
|
2
|
+
/**
|
|
3
|
+
* Creates a debounced version of a callback function.
|
|
4
|
+
* The callback will only be executed after the specified wait time has elapsed since the last invocation.
|
|
5
|
+
*
|
|
6
|
+
* @param callback - The function to debounce
|
|
7
|
+
* @param wait - Debounce delay in milliseconds (can be a reactive signal)
|
|
8
|
+
* @param options - Optional configuration including injector
|
|
9
|
+
* @returns A debounced version of the callback function
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```typescript
|
|
13
|
+
* @Component({
|
|
14
|
+
* template: `
|
|
15
|
+
* <input (input)="handleInput($event.target.value)" />
|
|
16
|
+
* `,
|
|
17
|
+
* })
|
|
18
|
+
* export class SearchComponent {
|
|
19
|
+
* readonly debounceTime = input(300);
|
|
20
|
+
* readonly searchChange = output<string>();
|
|
21
|
+
*
|
|
22
|
+
* readonly handleInput = debounceCallback(value => {
|
|
23
|
+
* this.searchChange.emit(value);
|
|
24
|
+
* }, this.debounceTime);
|
|
25
|
+
* }
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
export declare function debounceCallback<T extends (...args: any[]) => any>(callback: T, wait: MaybeSignal<number>, options?: WithInjector): T;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { type Signal } from '@angular/core';
|
|
2
|
+
import type { MaybeSignal, WithInjector } from '@signality/core/types';
|
|
3
|
+
export interface IntervalOptions extends WithInjector {
|
|
4
|
+
/**
|
|
5
|
+
* Whether to start the interval immediately.
|
|
6
|
+
* @default false
|
|
7
|
+
*/
|
|
8
|
+
readonly immediate?: boolean;
|
|
9
|
+
}
|
|
10
|
+
export interface IntervalRef {
|
|
11
|
+
/** Whether the interval is currently active */
|
|
12
|
+
readonly isActive: Signal<boolean>;
|
|
13
|
+
/** Number of times the callback has been executed */
|
|
14
|
+
readonly counter: Signal<number>;
|
|
15
|
+
/** Pause the interval */
|
|
16
|
+
readonly pause: () => void;
|
|
17
|
+
/** Resume the interval */
|
|
18
|
+
readonly resume: () => void;
|
|
19
|
+
/** Reset the counter to 0 */
|
|
20
|
+
readonly reset: () => void;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Creates a reactive interval that executes a callback function at specified intervals.
|
|
24
|
+
* Automatically handles cleanup and supports reactive interval duration.
|
|
25
|
+
*
|
|
26
|
+
* @param callback - Function to execute on each interval tick, receives current counter value
|
|
27
|
+
* @param intervalMs - Interval duration in milliseconds (can be a reactive signal)
|
|
28
|
+
* @param options - Optional configuration including immediate start and injector
|
|
29
|
+
* @returns An IntervalRef with control methods and state signals
|
|
30
|
+
*
|
|
31
|
+
* @example
|
|
32
|
+
* ```typescript
|
|
33
|
+
* @Component({
|
|
34
|
+
* template: `
|
|
35
|
+
* <p>Status: {{ polling.isActive() ? 'Polling' : 'Stopped' }}</p>
|
|
36
|
+
* <button (click)="polling.pause()">Stop</button>
|
|
37
|
+
* <button (click)="polling.resume()">Start</button>
|
|
38
|
+
* `,
|
|
39
|
+
* })
|
|
40
|
+
* export class PeriodicTask {
|
|
41
|
+
* readonly polling = interval(async () => {
|
|
42
|
+
* await this.checkStatus();
|
|
43
|
+
* }, 5000);
|
|
44
|
+
*
|
|
45
|
+
* async checkStatus() {
|
|
46
|
+
* // async operation
|
|
47
|
+
* }
|
|
48
|
+
* }
|
|
49
|
+
* ```
|
|
50
|
+
*/
|
|
51
|
+
export declare function interval(callback: (counter: number) => void, intervalMs: MaybeSignal<number>, options?: IntervalOptions): IntervalRef;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { MaybeSignal, WithInjector } from '@signality/core/types';
|
|
2
|
+
/**
|
|
3
|
+
* Creates a throttled version of a callback function.
|
|
4
|
+
* The callback will be executed at most once per specified wait interval.
|
|
5
|
+
*
|
|
6
|
+
* @param callback - The function to throttle
|
|
7
|
+
* @param wait - Throttle interval in milliseconds (can be a reactive signal)
|
|
8
|
+
* @param options - Optional configuration including injector
|
|
9
|
+
* @returns A throttled version of the callback function
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```typescript
|
|
13
|
+
* @Component({
|
|
14
|
+
* template: `
|
|
15
|
+
* <div (scroll)="handleScroll($event)">
|
|
16
|
+
* Scrollable content
|
|
17
|
+
* </div>
|
|
18
|
+
* `,
|
|
19
|
+
* })
|
|
20
|
+
* export class ScrollComponent {
|
|
21
|
+
* readonly throttleTime = input(300);
|
|
22
|
+
* readonly scrollChange = output<Event>();
|
|
23
|
+
*
|
|
24
|
+
* readonly handleScroll = throttleCallback(e => {
|
|
25
|
+
* this.scrollChange.emit(e);
|
|
26
|
+
* }, this.throttleTime);
|
|
27
|
+
* }
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
export declare function throttleCallback<T extends (...args: any[]) => any>(callback: T, wait: MaybeSignal<number>, options?: WithInjector): T;
|
package/types/index.d.ts
ADDED